diff options
| -rw-r--r-- | scripts/bootgraph.pl | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/scripts/bootgraph.pl b/scripts/bootgraph.pl index b78fca994a15..9ca667bcaee9 100644 --- a/scripts/bootgraph.pl +++ b/scripts/bootgraph.pl | |||
| @@ -38,6 +38,31 @@ | |||
| 38 | # | 38 | # |
| 39 | 39 | ||
| 40 | use strict; | 40 | use strict; |
| 41 | use Getopt::Long; | ||
| 42 | my $header = 0; | ||
| 43 | |||
| 44 | sub help { | ||
| 45 | my $text = << "EOM"; | ||
| 46 | Usage: | ||
| 47 | 1) dmesg | perl scripts/bootgraph.pl [OPTION] > output.svg | ||
| 48 | 2) perl scripts/bootgraph.pl -h | ||
| 49 | |||
| 50 | Options: | ||
| 51 | -header Insert kernel version and date | ||
| 52 | EOM | ||
| 53 | my $std=shift; | ||
| 54 | if ($std == 1) { | ||
| 55 | print STDERR $text; | ||
| 56 | } else { | ||
| 57 | print $text; | ||
| 58 | } | ||
| 59 | exit; | ||
| 60 | } | ||
| 61 | |||
| 62 | GetOptions( | ||
| 63 | 'h|help' =>\&help, | ||
| 64 | 'header' =>\$header | ||
| 65 | ); | ||
| 41 | 66 | ||
| 42 | my %start; | 67 | my %start; |
| 43 | my %end; | 68 | my %end; |
| @@ -49,6 +74,11 @@ my $count = 0; | |||
| 49 | my %pids; | 74 | my %pids; |
| 50 | my %pidctr; | 75 | my %pidctr; |
| 51 | 76 | ||
| 77 | my $headerstep = 20; | ||
| 78 | my $xheader = 15; | ||
| 79 | my $yheader = 25; | ||
| 80 | my $cyheader = 0; | ||
| 81 | |||
| 52 | while (<>) { | 82 | while (<>) { |
| 53 | my $line = $_; | 83 | my $line = $_; |
| 54 | if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_\.]+)\+/) { | 84 | if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_\.]+)\+/) { |
| @@ -112,15 +142,23 @@ if ($count == 0) { | |||
| 112 | print STDERR <<END; | 142 | print STDERR <<END; |
| 113 | No data found in the dmesg. Make sure that 'printk.time=1' and | 143 | No data found in the dmesg. Make sure that 'printk.time=1' and |
| 114 | 'initcall_debug' are passed on the kernel command line. | 144 | 'initcall_debug' are passed on the kernel command line. |
| 115 | Usage: | ||
| 116 | dmesg | perl scripts/bootgraph.pl > output.svg | ||
| 117 | END | 145 | END |
| 146 | help(1); | ||
| 118 | exit 1; | 147 | exit 1; |
| 119 | } | 148 | } |
| 120 | 149 | ||
| 121 | print "<?xml version=\"1.0\" standalone=\"no\"?> \n"; | 150 | print "<?xml version=\"1.0\" standalone=\"no\"?> \n"; |
| 122 | print "<svg width=\"2000\" height=\"100%\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n"; | 151 | print "<svg width=\"2000\" height=\"100%\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n"; |
| 123 | 152 | ||
| 153 | |||
| 154 | if ($header) { | ||
| 155 | my $version = `uname -a`; | ||
| 156 | my $date = `date`; | ||
| 157 | print "<text transform=\"translate($xheader,$yheader)\">Kernel version: $version</text>\n"; | ||
| 158 | $cyheader = $yheader+$headerstep; | ||
| 159 | print "<text transform=\"translate($xheader,$cyheader)\">Date: $date</text>\n"; | ||
| 160 | } | ||
| 161 | |||
| 124 | my @styles; | 162 | my @styles; |
| 125 | 163 | ||
| 126 | $styles[0] = "fill:rgb(0,0,255);fill-opacity:0.5;stroke-width:1;stroke:rgb(0,0,0)"; | 164 | $styles[0] = "fill:rgb(0,0,255);fill-opacity:0.5;stroke-width:1;stroke:rgb(0,0,0)"; |
