1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
#! stap
# test the system() function
global saw_echo, did_cat
%(runtime == "kernel" %?
probe kernel.function("do_sys_open")
%:
# The dyninst runtime doesn't have kernel.function probes. Instead,
# we'll just use a begin probe to run system().
probe begin
%)
{
if (!saw_echo) {
# very inefficient. Testing only. DO NOT DO THIS
msg="echo do_sys_open"
system(msg)
saw_echo = 1
}
}
probe timer.ms(100) {
# should fail
if (!did_cat) {
system("cat __xyzzy123ABC__")
did_cat = 1
}
}
probe timer.ms(150) {
if (saw_echo && did_cat)
exit()
}
probe begin {
# should succeed
system("whoami")
}
probe end {
# should succeed
system("echo DONE")
}
|