[PATCH] checkstack: print module names
Finding "init_module" high stack usage problems is challenging when there are over 1600 "init_module" functions in the kernel tree, so make checkstack.pl print out the filename where the stack usage occurs. This is useful for code built as loadable modules. For built-in code, it just prints the kernel image file name, like "vmlinux". Examples: (before patch:) 0x0000000d callback: 1928 0xffffffff81678c09 huft_build: 1560 0x0018 init_module: 1512 (after patch:) 0x0000000d callback [divacapi]: 1928 0xffffffff81678c09 huft_build [vmlinux]: 1560 0x0018 init_module [hdaps]: 1512 Also change one if-series to use elsif to cut down on unneeded tests. Signed-off-by: Randy Dunlap <rdunlap@xenotime.net> Acked-by: Joern Engel <joern@wh.fh-wedel.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
5ec3e4b7ae
commit
8ad2914d9c
|
@ -89,11 +89,21 @@ sub bysize($) {
|
||||||
#
|
#
|
||||||
my $funcre = qr/^$x* <(.*)>:$/;
|
my $funcre = qr/^$x* <(.*)>:$/;
|
||||||
my $func;
|
my $func;
|
||||||
|
my $file, $lastslash;
|
||||||
|
|
||||||
while (my $line = <STDIN>) {
|
while (my $line = <STDIN>) {
|
||||||
if ($line =~ m/$funcre/) {
|
if ($line =~ m/$funcre/) {
|
||||||
$func = $1;
|
$func = $1;
|
||||||
}
|
}
|
||||||
if ($line =~ m/$re/) {
|
elsif ($line =~ m/(.*):\s*file format/) {
|
||||||
|
$file = $1;
|
||||||
|
$file =~ s/\.ko//;
|
||||||
|
$lastslash = rindex($file, "/");
|
||||||
|
if ($lastslash != -1) {
|
||||||
|
$file = substr($file, $lastslash + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ($line =~ m/$re/) {
|
||||||
my $size = $1;
|
my $size = $1;
|
||||||
$size = hex($size) if ($size =~ /^0x/);
|
$size = hex($size) if ($size =~ /^0x/);
|
||||||
|
|
||||||
|
@ -109,7 +119,7 @@ while (my $line = <STDIN>) {
|
||||||
$addr =~ s/ /0/g;
|
$addr =~ s/ /0/g;
|
||||||
$addr = "0x$addr";
|
$addr = "0x$addr";
|
||||||
|
|
||||||
my $intro = "$addr $func:";
|
my $intro = "$addr $func [$file]:";
|
||||||
my $padlen = 56 - length($intro);
|
my $padlen = 56 - length($intro);
|
||||||
while ($padlen > 0) {
|
while ($padlen > 0) {
|
||||||
$intro .= ' ';
|
$intro .= ' ';
|
||||||
|
|
Loading…
Reference in New Issue