diff options
author | Josh Stone <jistone@redhat.com> | 2009-05-20 14:46:25 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-05-20 14:53:09 -0700 |
commit | 29e2616aeeb82605a6efe1dbc574b499781eafbe (patch) | |
tree | 99cf2ca2c3c10b2bd72733a5b10626e58779ad0c /testsuite/buildok/gtod_noinit.stp | |
parent | 7872a5b9d76dc78d8956de3d2a11757783121674 (diff) | |
download | systemtap-steved-29e2616aeeb82605a6efe1dbc574b499781eafbe.tar.gz systemtap-steved-29e2616aeeb82605a6efe1dbc574b499781eafbe.tar.xz systemtap-steved-29e2616aeeb82605a6efe1dbc574b499781eafbe.zip |
PR10177: init/kill time in sleepy context only
Previously, _stp_init_time and _stp_kill_time were being called from
begin/end/error probes, which will run with preemption disabled. The
BUG reported on RT kernels showed that cpufreq_unregister_notifier can
end up sleeping, which violates our preemption block.
This patch moves the init/kill into systemtap_module_init/exit, where it
is safe to sleep. The code maintains a new predicate with the define
STAP_NEED_GETTIMEOFDAY, so we don't still incur any timer overhead if
it's not used.
Diffstat (limited to 'testsuite/buildok/gtod_noinit.stp')
-rwxr-xr-x | testsuite/buildok/gtod_noinit.stp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/testsuite/buildok/gtod_noinit.stp b/testsuite/buildok/gtod_noinit.stp new file mode 100755 index 00000000..94a9dfdc --- /dev/null +++ b/testsuite/buildok/gtod_noinit.stp @@ -0,0 +1,13 @@ +#! stap -gp4 + +# check that STAP_NEED_GETTIMEOFDAY is NOT defined without a gettimeofday +function check() %{ +#ifdef STAP_NEED_GETTIMEOFDAY +#error "STAP_NEED_GETTIMEOFDAY should not be defined!" +#endif +%} + +probe begin { + check() + println(get_cycles()) +} |