summaryrefslogtreecommitdiffstats
path: root/testsuite/buildok/gtod_noinit.stp
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-05-20 14:46:25 -0700
committerJosh Stone <jistone@redhat.com>2009-05-20 14:53:09 -0700
commit29e2616aeeb82605a6efe1dbc574b499781eafbe (patch)
tree99cf2ca2c3c10b2bd72733a5b10626e58779ad0c /testsuite/buildok/gtod_noinit.stp
parent7872a5b9d76dc78d8956de3d2a11757783121674 (diff)
downloadsystemtap-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-xtestsuite/buildok/gtod_noinit.stp13
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())
+}