From 3b735623b8c878f52e0945074b4be4cdcd0bc257 Mon Sep 17 00:00:00 2001 From: Key Meyer Date: Mon, 27 Apr 2009 18:36:32 -0400 Subject: traceio sample: tolerate more than a few hundred processes ... rather than exiting with MAXACTIONS exceeded --- testsuite/systemtap.examples/io/traceio.stp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'testsuite') diff --git a/testsuite/systemtap.examples/io/traceio.stp b/testsuite/systemtap.examples/io/traceio.stp index 9e2deec6..a5d79fde 100755 --- a/testsuite/systemtap.examples/io/traceio.stp +++ b/testsuite/systemtap.examples/io/traceio.stp @@ -10,22 +10,20 @@ global reads, writes, total_io probe vfs.read.return { - reads[execname()] += $return + reads[pid(),execname()] += $return + total_io[pid(),execname()] += $return } probe vfs.write.return { - writes[execname()] += $return + writes[pid(),execname()] += $return + total_io[pid(),execname()] += $return } probe timer.s(1) { - foreach (p in reads) - total_io[p] += reads[p] - foreach (p in writes) - total_io[p] += writes[p] - foreach(p in total_io- limit 10) - printf("%15s r: %8d KiB w: %8d KiB\n", - p, reads[p]/1024, - writes[p]/1024) + foreach([p,e] in total_io- limit 10) + printf("%8d %15s r: %8d MiB w: %8d MiB\n", + p, e, reads[p,e]/1024/1024, + writes[p,e]/1024/1024) printf("\n") # Note we don't zero out reads, writes and total_io, # so the values are cumulative since the script started. -- cgit From 676c0d81a7d650c8c4e25a7a2495d2b19b50b2b8 Mon Sep 17 00:00:00 2001 From: Key Meyer Date: Mon, 27 Apr 2009 19:12:14 -0400 Subject: traceio: add human-readable byte-count output --- testsuite/systemtap.examples/io/traceio.stp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'testsuite') diff --git a/testsuite/systemtap.examples/io/traceio.stp b/testsuite/systemtap.examples/io/traceio.stp index a5d79fde..875000cb 100755 --- a/testsuite/systemtap.examples/io/traceio.stp +++ b/testsuite/systemtap.examples/io/traceio.stp @@ -1,6 +1,9 @@ #! /usr/bin/env stap # traceio.stp # Copyright (C) 2007 Red Hat, Inc., Eugene Teo +# Copyright (C) 2009 Kai Meyer +# Fixed a bug that allows this to run longer +# And added the humanreadable function # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as @@ -19,11 +22,23 @@ probe vfs.write.return { total_io[pid(),execname()] += $return } +function humanreadable(bytes) { + if (bytes > 1024*1024*1024) { + return sprintf("%d GiB", bytes/1024/1024/1024) + } else if (bytes > 1024*1024) { + return sprintf("%d MiB", bytes/1024/1024) + } else if (bytes > 1024) { + return sprintf("%d KiB", bytes/1024) + } else { + return sprintf("%d B", bytes) + } +} + probe timer.s(1) { foreach([p,e] in total_io- limit 10) - printf("%8d %15s r: %8d MiB w: %8d MiB\n", - p, e, reads[p,e]/1024/1024, - writes[p,e]/1024/1024) + printf("%8d %15s r: %12s w: %12s\n", + p, e, humanreadable(reads[p,e]), + humanreadable(writes[p,e])) printf("\n") # Note we don't zero out reads, writes and total_io, # so the values are cumulative since the script started. -- cgit From ed82b7c902d6a2e26452ec51c9cdb9665dbf9e97 Mon Sep 17 00:00:00 2001 From: Wenji Huang Date: Mon, 27 Apr 2009 22:35:05 -0400 Subject: PR10102: tolerate mismatched optional probe * elaborate.cxx: Early return for mismatched optional probe. * testsuite/systemtap.base/optionalprobe.exp: New test case. * testsuite/systemtap.base/optionalprobe.stp: Ditto. --- testsuite/systemtap.base/optionalprobe.exp | 9 +++++++++ testsuite/systemtap.base/optionalprobe.stp | 6 ++++++ 2 files changed, 15 insertions(+) create mode 100644 testsuite/systemtap.base/optionalprobe.exp create mode 100644 testsuite/systemtap.base/optionalprobe.stp (limited to 'testsuite') diff --git a/testsuite/systemtap.base/optionalprobe.exp b/testsuite/systemtap.base/optionalprobe.exp new file mode 100644 index 00000000..5484003c --- /dev/null +++ b/testsuite/systemtap.base/optionalprobe.exp @@ -0,0 +1,9 @@ +set test "optionalprobe" +spawn stap -p2 -w $srcdir/$subdir/$test.stp +expect { + -timeout 60 + -re "# probes\r\n" { exp_continue } + -re "^begin" { pass $test } + eof { fail $test } + timeout { fail "$test unexpected timeout" } +} diff --git a/testsuite/systemtap.base/optionalprobe.stp b/testsuite/systemtap.base/optionalprobe.stp new file mode 100644 index 00000000..239cf6e3 --- /dev/null +++ b/testsuite/systemtap.base/optionalprobe.stp @@ -0,0 +1,6 @@ +#! stap + +# test optional probe + +probe foo ?, bar !, foo* ?, bar* !, begin { +} -- cgit From 999740348b95d993cbe36b9283c5cb7ee7bda149 Mon Sep 17 00:00:00 2001 From: Masami Hiramatsu Date: Tue, 28 Apr 2009 11:18:06 -0400 Subject: PR 6930: fix flightrec2.exp to handle filesize correctly * testsuite/systemtap.base/flightrec2.exp: Use stat instead of ls for checking file size. * testsuite/systemtap.base/flightrec2.stp: Increase timer interval for some architecture on which the minimum interval is more than 1 ms (e.g. xen) --- testsuite/systemtap.base/flightrec2.exp | 17 ++++++++--------- testsuite/systemtap.base/flightrec2.stp | 4 ++-- 2 files changed, 10 insertions(+), 11 deletions(-) (limited to 'testsuite') diff --git a/testsuite/systemtap.base/flightrec2.exp b/testsuite/systemtap.base/flightrec2.exp index a22ef415..d4481db4 100644 --- a/testsuite/systemtap.base/flightrec2.exp +++ b/testsuite/systemtap.base/flightrec2.exp @@ -26,13 +26,12 @@ exec sleep 4 set scnt 0 set cnt1 0 # wait for log files -spawn ls -sk1 +eval spawn stat -c %s [glob flightlog.out.*] expect { -timeout 100 - -re {([0-9]+) flightlog\.out\.[0-9]+} { + -re {[0-9]+} { incr cnt1; - if {$expect_out(1,string) <= 1028} {incr scnt} - # 1024 + 4(for inode blocks?) + if {$expect_out(buffer) <= 1048576 } {incr scnt} exp_continue} timeout { fail "$test (logfile timeout)"} } @@ -40,12 +39,12 @@ wait exec sleep 3 set cnt2 0 # wait for log files -spawn ls -sk1 +eval spawn stat -c %s [glob flightlog.out.*] expect { -timeout 100 - -re {([0-9]+) flightlog\.out\.[0-9]+} { + -re {[0-9]+} { incr cnt2; - if {$expect_out(1,string) <= 1028} {incr scnt} + if {$expect_out(buffer) <= 1048576 } {incr scnt} exp_continue} timeout { fail "$test (logfile timeout)"} } @@ -57,10 +56,10 @@ if {$cnt1 == 3 && $cnt2 == 3} { fail "$test (log file numbers ($cnt1, $cnt2))" } # check logfile size -if {$scnt == 6} { +if {$scnt == $cnt1 + $cnt2 } { pass "$test (log file size limitation)" } else { - fail "$test (log file size ($scnt))" + fail "$test (log file size ($scnt != $cnt1 + $cnt2))" } exec kill -TERM $pid # wait for exiting... diff --git a/testsuite/systemtap.base/flightrec2.stp b/testsuite/systemtap.base/flightrec2.stp index 9d745f4b..f42c9b8e 100644 --- a/testsuite/systemtap.base/flightrec2.stp +++ b/testsuite/systemtap.base/flightrec2.stp @@ -1,5 +1,5 @@ -probe timer.ms(1) +probe timer.ms(10) { - for (j = 0; j < 100; j++) + for (j = 0; j < 1000; j++) printf("1234567890\n") } -- cgit From 0904184b479723cc514db320f7cb70b8c284ea1a Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 29 Apr 2009 14:00:21 -0700 Subject: Use sockaddr instead of timeval in @cast test Using timeval had problems on big-endian multi-arch platforms (ppc64), because the user tv_sec used in the @cast didn't match the kernel tv_sec used to provide a pointer. Hopefully reading from a sockaddr should be more robust, as that type doesn't appear to need any compat wrappers for multi-archs. --- testsuite/systemtap.base/cast.exp | 2 +- testsuite/systemtap.base/cast.stp | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'testsuite') diff --git a/testsuite/systemtap.base/cast.exp b/testsuite/systemtap.base/cast.exp index 74c4d72a..374132f0 100644 --- a/testsuite/systemtap.base/cast.exp +++ b/testsuite/systemtap.base/cast.exp @@ -2,5 +2,5 @@ set test "cast" set ::result_string {PID OK PID2 OK execname OK -tv_sec OK} +sa_data OK} stap_run2 $srcdir/$subdir/$test.stp -g diff --git a/testsuite/systemtap.base/cast.stp b/testsuite/systemtap.base/cast.stp index 6298a06d..e2505000 100644 --- a/testsuite/systemtap.base/cast.stp +++ b/testsuite/systemtap.base/cast.stp @@ -25,19 +25,23 @@ probe begin else printf("execname \"%s\" != \"%s\"\n", name, cast_name) - // Compare tv_sec using a generated user module - sec = 42 - cast_sec = @cast(get_timeval(sec), "timeval", "")->tv_sec - if (sec == cast_sec) - println("tv_sec OK") + // Compare sa_data using a generated user module + data = 42 + cast_data = @cast(get_sockaddr(data), "sockaddr", "")->sa_data[0] + if (data == cast_data) + println("sa_data OK") else - printf("tv_sec %d != %d\n", sec, cast_sec) + printf("sa_data %d != %d\n", data, cast_data) exit() } -function get_timeval:long(sec:long) %{ - static struct timeval mytime = {0}; - mytime.tv_sec = THIS->sec; - THIS->__retvalue = (long)&mytime; +%{ +#include +%} + +function get_sockaddr:long(data:long) %{ + static struct sockaddr sa = {0}; + sa.sa_data[0] = THIS->data; + THIS->__retvalue = (long)&sa; %} -- cgit From ea7d087ab3866eb99c19444b237c9586e8dc9b17 Mon Sep 17 00:00:00 2001 From: Ananth N Mavinakayanahalli Date: Thu, 30 Apr 2009 17:00:38 +0530 Subject: PR10007: Avoid probing syscall entry points in the testsuite. While there, fix minor issues with the s390x syscall tapset. --- testsuite/buildok/maxactive01.stp | 2 +- testsuite/buildok/thirteen.stp | 2 +- testsuite/semko/forty.stp | 2 +- testsuite/semko/fortyone.stp | 2 +- testsuite/semko/fortytwo.stp | 2 +- testsuite/semko/maxactive04.stp | 2 +- testsuite/semko/maxactive05.stp | 2 +- testsuite/semko/return02.stp | 2 +- testsuite/semko/thirtyfour.stp | 4 ++-- testsuite/semko/twentytwo.stp | 2 +- testsuite/semok/thirtytwo.stp | 2 +- testsuite/semok/twentynine.stp | 2 +- testsuite/systemtap.base/alternatives.exp | 8 ++++---- testsuite/systemtap.base/maxactive.exp | 16 ++++++++-------- testsuite/systemtap.base/onoffprobe.stp | 4 ++-- testsuite/systemtap.base/overload.exp | 2 +- testsuite/systemtap.base/stmtvars.exp | 6 +++--- testsuite/systemtap.base/system_func.stp | 4 ++-- testsuite/systemtap.examples/general/para-callgraph.meta | 4 ++-- 19 files changed, 35 insertions(+), 35 deletions(-) (limited to 'testsuite') diff --git a/testsuite/buildok/maxactive01.stp b/testsuite/buildok/maxactive01.stp index afdb2cea..1cf893ef 100755 --- a/testsuite/buildok/maxactive01.stp +++ b/testsuite/buildok/maxactive01.stp @@ -1,6 +1,6 @@ #! stap -p4 -probe kernel.function("sys_read").return.maxactive(3) +probe kernel.function("vfs_read").return.maxactive(3) { printf("."); } diff --git a/testsuite/buildok/thirteen.stp b/testsuite/buildok/thirteen.stp index 4dffc4b9..32228e79 100755 --- a/testsuite/buildok/thirteen.stp +++ b/testsuite/buildok/thirteen.stp @@ -1,6 +1,6 @@ #! stap -p4 -probe kernel.function("sys_read") +probe kernel.function("vfs_read") { printf ("count=%d\n", $count) } diff --git a/testsuite/semko/forty.stp b/testsuite/semko/forty.stp index f7721a47..b7d1d139 100755 --- a/testsuite/semko/forty.stp +++ b/testsuite/semko/forty.stp @@ -1,4 +1,4 @@ #! stap -p2 global x -probe kernel.function("sys_open") if (x = 1) { } # bad side-effect +probe kernel.function("do_sys_open") if (x = 1) { } # bad side-effect diff --git a/testsuite/semko/fortyone.stp b/testsuite/semko/fortyone.stp index e9b986df..d3ba6205 100755 --- a/testsuite/semko/fortyone.stp +++ b/testsuite/semko/fortyone.stp @@ -1,3 +1,3 @@ #! stap -p2 -probe kernel.function("sys_open") if (x > 1) { } # not a global +probe kernel.function("vfs_read") if (x > 1) { } # not a global diff --git a/testsuite/semko/fortytwo.stp b/testsuite/semko/fortytwo.stp index 17dacb1c..09a04ea7 100755 --- a/testsuite/semko/fortytwo.stp +++ b/testsuite/semko/fortytwo.stp @@ -1,6 +1,6 @@ #! stap -p2 -probe kernel.function("sys_open") if (foo(2)) { } # must not call functions +probe kernel.function("vfs_read") if (foo(2)) { } # must not call functions function foo(x) { return x } diff --git a/testsuite/semko/maxactive04.stp b/testsuite/semko/maxactive04.stp index 9471fd21..25d63ef4 100755 --- a/testsuite/semko/maxactive04.stp +++ b/testsuite/semko/maxactive04.stp @@ -1,5 +1,5 @@ #! stap -p2 -probe kernel.function("sys_open").return.maxactive(-4) +probe kernel.function("vfs_read").return.maxactive(-4) { } diff --git a/testsuite/semko/maxactive05.stp b/testsuite/semko/maxactive05.stp index bdc8a101..3833ab6c 100755 --- a/testsuite/semko/maxactive05.stp +++ b/testsuite/semko/maxactive05.stp @@ -1,5 +1,5 @@ #! stap -p2 -probe kernel.function("sys_open").return.maxactive(99999999) +probe kernel.function("vfs_read").return.maxactive(99999999) { } diff --git a/testsuite/semko/return02.stp b/testsuite/semko/return02.stp index db4cd8c7..3d64f5dc 100755 --- a/testsuite/semko/return02.stp +++ b/testsuite/semko/return02.stp @@ -1,6 +1,6 @@ #! stap -p2 -probe kernel.function("sys_read") +probe kernel.function("vfs_read") { # this should fail - using $return not in a '.return' probe printf("in sys_read - return = %d\n", $return) diff --git a/testsuite/semko/thirtyfour.stp b/testsuite/semko/thirtyfour.stp index 515fcfbb..dca63722 100755 --- a/testsuite/semko/thirtyfour.stp +++ b/testsuite/semko/thirtyfour.stp @@ -2,9 +2,9 @@ # can't write to target variables in .return probes -probe kernel.function("sys_read").return +probe kernel.function("fget_light").return { $fd = 0 printf("fd is %d\n", $fd) } -probe kernel.function("sys_open").return { $filename } +probe kernel.function("do_sys_open").return { $filename } diff --git a/testsuite/semko/twentytwo.stp b/testsuite/semko/twentytwo.stp index 9321d5f6..ef04cd30 100755 --- a/testsuite/semko/twentytwo.stp +++ b/testsuite/semko/twentytwo.stp @@ -3,6 +3,6 @@ # tests that a non-inline function is *not* matched using # the inline() pattern -probe kernel.function("sys_recv").inline { +probe kernel.function("vfs_read").inline { log ("found a non-inline via inline()") } diff --git a/testsuite/semok/thirtytwo.stp b/testsuite/semok/thirtytwo.stp index 2a69b8cd..0f0334a1 100755 --- a/testsuite/semok/thirtytwo.stp +++ b/testsuite/semok/thirtytwo.stp @@ -2,4 +2,4 @@ # PR 6836 -probe kernel.function("sys_open").return { log($$return . $$parms) } +probe kernel.function("do_sys_open").return { log($$return . $$parms) } diff --git a/testsuite/semok/twentynine.stp b/testsuite/semok/twentynine.stp index 05e591ce..4b2e5056 100755 --- a/testsuite/semok/twentynine.stp +++ b/testsuite/semok/twentynine.stp @@ -5,7 +5,7 @@ function dummy:long () {return p;} # alias with a condition probe alias0 = begin if (3) {p=1} # alias with a kernel-variable condition -- not valid -probe alias1 = kernel.function("sys_read").return if (0) { if ($return) {p=0} } +probe alias1 = kernel.function("vfs_read").return if (0) { if ($return) {p=0} } # alias with a function-call condition probe blias0 = timer.s(1) if (1 /* dummy() */) {p=10} diff --git a/testsuite/systemtap.base/alternatives.exp b/testsuite/systemtap.base/alternatives.exp index deaf3bf8..fb263d7a 100644 --- a/testsuite/systemtap.base/alternatives.exp +++ b/testsuite/systemtap.base/alternatives.exp @@ -14,11 +14,11 @@ # listed, but that some alternatives are listed. set local1_script { - probe kernel.function("sys_getrlimit") { x = $z; } + probe kernel.funtion("vfs_write") { ret = $z; } } set struct1_script { - probe kernel.function("sys_getrlimit") { rlim_cur = $rlim->rlim_cud; } + probe kernel.function("vfs_write") { f_pos = $file->f_po; } } proc stap_run_alternatives {args} { @@ -38,8 +38,8 @@ proc stap_run_alternatives {args} { set test "LOCAL1" set rc [stap_run_alternatives stap -vu -p2 -e $local1_script] -if {$rc == 1} { pass $test } else { fail "$test ($rc)" } +if {$rc >= 1} { pass $test } else { fail "$test ($rc)" } set test "STRUCT1" set rc [stap_run_alternatives stap -vu -p2 -e $struct1_script] -if {$rc == 1} { pass $test } else { fail "$test ($rc)" } +if {$rc >= 1} { pass $test } else { fail "$test ($rc)" } diff --git a/testsuite/systemtap.base/maxactive.exp b/testsuite/systemtap.base/maxactive.exp index 7c03a1bf..79ede897 100644 --- a/testsuite/systemtap.base/maxactive.exp +++ b/testsuite/systemtap.base/maxactive.exp @@ -10,12 +10,12 @@ proc sleep_five_sec {} { return 0; } -# Script1. For 5 seconds, probe the return of "sys_select" and -# "sys_read". See if we skip any probes. +# Script1. For 5 seconds, probe the return of "vfs_read" and +# "do_select". See if we skip any probes. set script1 { global foo - probe kernel.function("sys_select").return, - kernel.function("sys_read").return { foo++ } + probe kernel.function("vfs_read").return, + kernel.function("do_select").return { foo++ } probe timer.ms(5000) { exit(); } probe begin { log("systemtap starting probe"); log("systemtap ending probe");} @@ -26,13 +26,13 @@ set script1 { stap_run "MAXACTIVE01" sleep_five_sec "" -e $script1 set skipped1 $skipped_probes -# Script2. For 5 seconds, probe the return of "sys_select" and -# "sys_read", with a limit of 1 probe active at a time. See if we +# Script2. For 5 seconds, probe the return of "vfs_read" and +# "do_select", with a limit of 1 probe active at a time. See if we # skip any probes. set script2 { global foo - probe kernel.function("sys_select").return.maxactive(1), - kernel.function("sys_read").return.maxactive(1) { foo++ } + probe kernel.function("vfs_read").return.maxactive(1), + kernel.function("do_select").return.maxactive(1) { foo++ } probe timer.ms(5000) { exit(); } probe begin { log("systemtap starting probe"); log("systemtap ending probe");} diff --git a/testsuite/systemtap.base/onoffprobe.stp b/testsuite/systemtap.base/onoffprobe.stp index f7169039..79c41a3c 100644 --- a/testsuite/systemtap.base/onoffprobe.stp +++ b/testsuite/systemtap.base/onoffprobe.stp @@ -10,13 +10,13 @@ probe begin if (switch==0) { } #dwarf probe (return) -probe kernel.function("sys_write").return if (switch == 1) { +probe kernel.function("vfs_write").return if (switch == 1) { log("function return probed") switch = 0 } #dwarf probe (entry) -probe kernel.function("sys_write") if (switch == 2) { +probe kernel.function("vfs_write").return if (switch == 2) { log("function entry probed") switch = 0 } diff --git a/testsuite/systemtap.base/overload.exp b/testsuite/systemtap.base/overload.exp index cbcbe817..ac9ceb24 100644 --- a/testsuite/systemtap.base/overload.exp +++ b/testsuite/systemtap.base/overload.exp @@ -8,7 +8,7 @@ set script { k["foo"] = 0 } - probe kernel.function("sys_read"), kernel.function("sys_write") { + probe kernel.function("vfs_read"), kernel.function("vfs_write") { k["foo"]++ } probe end { diff --git a/testsuite/systemtap.base/stmtvars.exp b/testsuite/systemtap.base/stmtvars.exp index 822e0d7e..c0099f2d 100644 --- a/testsuite/systemtap.base/stmtvars.exp +++ b/testsuite/systemtap.base/stmtvars.exp @@ -3,9 +3,9 @@ set test "stmtvars" set pc 0 set vars "" -spawn stap -e "probe kernel.function(\"sys_open\") {\$foo}" -p4 -vv -u +spawn stap -e "probe kernel.function(\"do_sys_open\") {\$foo}" -p4 -vv -u expect { - -re {probe sys_open[^\r\n]*pc=(0x[^\r\n]*)\r\n} { set pc $expect_out(1,string); exp_continue } + -re {probe do_sys_open[^\r\n]*pc=(0x[^\r\n]*)\r\n} { set pc $expect_out(1,string); exp_continue } -re {alternatives: ([^\r\n]*)\): identifier [^\r\n]*\r\n} { set vars $expect_out(1,string); exp_continue } timeout { fail "$test (timeout)" } eof @@ -18,7 +18,7 @@ set pc2 0 set vars2 "" spawn stap -e "probe kernel.statement($pc) {\$foo}" -p4 -vv -u expect { - -re {probe sys_open[^\r\n]*pc=(0x[^\r\n]*)\r\n} { set pc2 $expect_out(1,string); exp_continue } + -re {probe do_sys_open[^\r\n]*pc=(0x[^\r\n]*)\r\n} { set pc2 $expect_out(1,string); exp_continue } -re {alternatives: ([^\r\n]*)\): identifier [^\r\n]*\r\n} { set vars2 $expect_out(1,string); exp_continue } timeout { fail "$test (timeout)" } eof diff --git a/testsuite/systemtap.base/system_func.stp b/testsuite/systemtap.base/system_func.stp index d14fb25b..6a6bb04a 100644 --- a/testsuite/systemtap.base/system_func.stp +++ b/testsuite/systemtap.base/system_func.stp @@ -4,10 +4,10 @@ global saw_echo, did_cat -probe kernel.function("sys_open") { +probe kernel.function("do_sys_open") { if (!saw_echo) { # very inefficient. Testing only. DO NOT DO THIS - msg="echo sys_open" + msg="echo do_sys_open" system(msg) saw_echo = 1 } diff --git a/testsuite/systemtap.examples/general/para-callgraph.meta b/testsuite/systemtap.examples/general/para-callgraph.meta index 87af07cf..84d1c93f 100644 --- a/testsuite/systemtap.examples/general/para-callgraph.meta +++ b/testsuite/systemtap.examples/general/para-callgraph.meta @@ -3,5 +3,5 @@ name: para-callgraph.stp keywords: trace callgraph subsystem: general description: Print a timed per-thread callgraph, complete with function parameters and return values. The first parameter names the function probe points to trace. The optional second parameter names the probe points for trigger functions, which acts to enable tracing for only those functions that occur while the current thread is nested within the trigger. -test_check: stap -p4 para-callgraph.stp kernel.function("*@fs/proc*.c") kernel.function("sys_read") -test_installcheck: stap para-callgraph.stp kernel.function("*@fs/proc*.c") kernel.function("sys_read") -c "cat /proc/sys/vm/*" +test_check: stap -p4 para-callgraph.stp kernel.function("*@fs/proc*.c") kernel.function("vfs_read") +test_installcheck: stap para-callgraph.stp kernel.function("*@fs/proc*.c") kernel.function("vfs_read") -c "cat /proc/sys/vm/*" -- cgit