diff options
Diffstat (limited to 'testsuite/systemtap.base/poll_map.stp')
-rwxr-xr-x | testsuite/systemtap.base/poll_map.stp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/testsuite/systemtap.base/poll_map.stp b/testsuite/systemtap.base/poll_map.stp new file mode 100755 index 00000000..cd39b433 --- /dev/null +++ b/testsuite/systemtap.base/poll_map.stp @@ -0,0 +1,33 @@ +#! stap + +# test that polling loops do not exit when conflicts happen +# see PR 1379 + +global called, num_polls + +probe kernel.function( "sys_*" ).call { + called[execname(),probefunc()]++ +} + +probe timer.ms(1000) +{ + print("\n\n") + num_to_do = 10 + foreach ([n,f] in called-) { + printf("%s called %s\t%d times\n", n, f, called[n,f]) + num_to_do-- + if (num_to_do <= 0) + break + } + delete called + num_polls++ + if (num_polls > 30) + exit() +} + +probe end { + if (num_polls <= 30) + print ("FAIL\n") + else + print ("SUCCESS\n") +} |