diff options
Diffstat (limited to 'testsuite/systemtap.syscall/all_syscalls.stp')
-rwxr-xr-x | testsuite/systemtap.syscall/all_syscalls.stp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/testsuite/systemtap.syscall/all_syscalls.stp b/testsuite/systemtap.syscall/all_syscalls.stp new file mode 100755 index 00000000..2178d84f --- /dev/null +++ b/testsuite/systemtap.syscall/all_syscalls.stp @@ -0,0 +1,41 @@ +#!/usr/bin/env stap + +# Show all the systemcalls that an executable makes. +# Usage: stap -c progname all_syscalls.stp OR +# ./all_syscalls.stp -c progname + +global indent, indent_str + +probe begin { + indent = 0 + for (i=0; i<20; i++) { + if (i == 0) + indent_str[0] = "" + else + indent_str[i] = indent_str[i-1] . " " + } +} + + +probe kernel.function("sys_*") ?, + kernel.function("sys32_*") ?, + kernel.function("compat_sys_*") ? +{ + if (pid() == target()) { + printf("%s%s\n", indent_str[indent], pp()) + indent++ + } +} + +probe kernel.function("sys_*").return ?, + kernel.function("sys32_*").return ?, + kernel.function("compat_sys_*").return ? +{ + if (pid() == target()) { + if (indent) indent-- + } +} + +probe end { + printf("\n") +} |