History

Merge branch 'linus' into tracing/ftrace

Ingo Molnar committed 18 years ago

Commit e1e302d2 parents 944ac42 7f82f00371 files · +5975 −2447Browse files

Showing the changes to scripts (3 of 371 files). Show all

Unified · Split

3 files
  1. scripts/Makefile.build +8 −2
  2. scripts/bootgraph.pl +12 −7
  3. scripts/recordmcount.pl +24 −4
scripts/Makefile.build+8−2
@@ -198,10 +198,16 @@ cmd_modversions = \ · 197 unmodified lines
198 fi;198 fi;
199endif199endif
200 200
201ifdef CONFIG_64BIT
202arch_bits = 64
203else
204arch_bits = 32
205endif
206
201ifdef CONFIG_FTRACE_MCOUNT_RECORD207ifdef CONFIG_FTRACE_MCOUNT_RECORD
202cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl \208cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl \
203 "$(ARCH)" "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" \209 "$(ARCH)" "$(arch_bits)" "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" \
204 "$(MV)" "$(@)";210 "$(NM)" "$(RM)" "$(MV)" "$(@)";
205endif211endif
206 212
207define rule_cc_o_c213define rule_cc_o_c
scripts/bootgraph.pl+12−7
@@ -37,7 +37,10 @@ · 36 unmodified lines
37# dmesg | perl scripts/bootgraph.pl > output.svg37# dmesg | perl scripts/bootgraph.pl > output.svg
38#38#
39 39
40my %start, %end;40use strict;
41
42my %start;
43my %end;
41my $done = 0;44my $done = 0;
42my $maxtime = 0;45my $maxtime = 0;
43my $firsttime = 100;46my $firsttime = 100;
@@ -105,18 +108,20 @@ my $threshold = ($maxtime - $firsttime) / 60.0; · 61 unmodified lines
105my $stylecounter = 0;108my $stylecounter = 0;
106my %rows;109my %rows;
107my $rowscount = 1;110my $rowscount = 1;
108while (($key,$value) = each %start) {111my @initcalls = sort { $start{$a} <=> $start{$b} } keys(%start);
112my $key;
113foreach $key (@initcalls) {
109 my $duration = $end{$key} - $start{$key};114 my $duration = $end{$key} - $start{$key};
110 115
111 if ($duration >= $threshold) {116 if ($duration >= $threshold) {
112 my $s, $s2, $e, $y;117 my ($s, $s2, $e, $w, $y, $y2, $style);
113 $pid = $pids{$key};118 my $pid = $pids{$key};
114 119
115 if (!defined($rows{$pid})) {120 if (!defined($rows{$pid})) {
116 $rows{$pid} = $rowscount;121 $rows{$pid} = $rowscount;
117 $rowscount = $rowscount + 1;122 $rowscount = $rowscount + 1;
118 }123 }
119 $s = ($value - $firsttime) * $mult;124 $s = ($start{$key} - $firsttime) * $mult;
120 $s2 = $s + 6;125 $s2 = $s + 6;
121 $e = ($end{$key} - $firsttime) * $mult;126 $e = ($end{$key} - $firsttime) * $mult;
122 $w = $e - $s;127 $w = $e - $s;
@@ -140,9 +145,9 @@ while (($key,$value) = each %start) { · 17 unmodified lines
140my $time = $firsttime;145my $time = $firsttime;
141my $step = ($maxtime - $firsttime) / 15;146my $step = ($maxtime - $firsttime) / 15;
142while ($time < $maxtime) {147while ($time < $maxtime) {
143 my $s2 = ($time - $firsttime) * $mult;148 my $s3 = ($time - $firsttime) * $mult;
144 my $tm = int($time * 100) / 100.0;149 my $tm = int($time * 100) / 100.0;
145 print "<text transform=\"translate($s2,89) rotate(90)\">$tm</text>\n";150 print "<text transform=\"translate($s3,89) rotate(90)\">$tm</text>\n";
146 $time = $time + $step;151 $time = $time + $step;
147}152}
148 153
scripts/recordmcount.pl+24−4
@@ -106,7 +106,13 @@ if ($#ARGV < 6) { · 105 unmodified lines
106 exit(1);106 exit(1);
107}107}
108 108
109my ($arch, $objdump, $objcopy, $cc, $ld, $nm, $rm, $mv, $inputfile) = @ARGV;109my ($arch, $bits, $objdump, $objcopy, $cc,
110 $ld, $nm, $rm, $mv, $inputfile) = @ARGV;
111
112# Acceptable sections to record.
113my %text_sections = (
114 ".text" => 1,
115);
110 116
111$objdump = "objdump" if ((length $objdump) == 0);117$objdump = "objdump" if ((length $objdump) == 0);
112$objcopy = "objcopy" if ((length $objcopy) == 0);118$objcopy = "objcopy" if ((length $objcopy) == 0);
@@ -129,8 +135,16 @@ my $function_regex; # Find the name of a function · 16 unmodified lines
129 # (return offset and func name)135 # (return offset and func name)
130my $mcount_regex; # Find the call site to mcount (return offset)136my $mcount_regex; # Find the call site to mcount (return offset)
131 137
138if ($arch eq "x86") {
139 if ($bits == 64) {
140 $arch = "x86_64";
141 } else {
142 $arch = "i386";
143 }
144}
145
132if ($arch eq "x86_64") {146if ($arch eq "x86_64") {
133 $section_regex = "Disassembly of section";147 $section_regex = "Disassembly of section\\s+(\\S+):";
134 $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";148 $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";
135 $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount([+-]0x[0-9a-zA-Z]+)?\$";149 $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount([+-]0x[0-9a-zA-Z]+)?\$";
136 $type = ".quad";150 $type = ".quad";
@@ -142,7 +156,7 @@ if ($arch eq "x86_64") { · 5 unmodified lines
142 $cc .= " -m64";156 $cc .= " -m64";
143 157
144} elsif ($arch eq "i386") {158} elsif ($arch eq "i386") {
145 $section_regex = "Disassembly of section";159 $section_regex = "Disassembly of section\\s+(\\S+):";
146 $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";160 $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";
147 $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount\$";161 $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount\$";
148 $type = ".long";162 $type = ".long";
@@ -289,7 +303,13 @@ my $text; · 140 unmodified lines
289while (<IN>) {303while (<IN>) {
290 # is it a section?304 # is it a section?
291 if (/$section_regex/) {305 if (/$section_regex/) {
292 $read_function = 1;306
307 # Only record text sections that we know are safe
308 if (defined($text_sections{$1})) {
309 $read_function = 1;
310 } else {
311 $read_function = 0;
312 }
293 # print out any recorded offsets313 # print out any recorded offsets
294 update_funcs() if ($text_found);314 update_funcs() if ($text_found);
295 315