summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorJosh Stone <joshua.i.stone@intel.com>2008-07-24 12:40:45 -0700
committerJosh Stone <joshua.i.stone@intel.com>2008-07-24 12:52:01 -0700
commitc2ffad100c432176c537aca673b796a7605cad1c (patch)
tree8836ee4129d659d5c01868e0fdc586a45895d3d8 /runtime
parent026ba67c4d44b634fea8b259c531f228b1b819aa (diff)
downloadsystemtap-steved-c2ffad100c432176c537aca673b796a7605cad1c.tar.gz
systemtap-steved-c2ffad100c432176c537aca673b796a7605cad1c.tar.xz
systemtap-steved-c2ffad100c432176c537aca673b796a7605cad1c.zip
Fix on_each_cpu() call for kernels >2.6.26.
This is a generalization of the patch from James Bottomley: http://sources.redhat.com/ml/systemtap/2008-q3/msg00220.html The on_each_cpu() change was merged *after* the 2.6.26 release, so I'm using an autoconf test instead of James' version check.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/ChangeLog1
-rw-r--r--runtime/autoconf-oneachcpu-retry.c7
-rw-r--r--runtime/time.c4
3 files changed, 12 insertions, 0 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index 9e4c3ec6..a8d73ffd 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,6 +1,7 @@
2008-07-24 Josh Stone <joshua.i.stone@intel.com>
* runtime/autoconf-module-nsections.c: removed
+ * runtime/autoconf-oneachcpu-retry.c: added
2008-07-21 David Smith <dsmith@redhat.com>
diff --git a/runtime/autoconf-oneachcpu-retry.c b/runtime/autoconf-oneachcpu-retry.c
new file mode 100644
index 00000000..304d9842
--- /dev/null
+++ b/runtime/autoconf-oneachcpu-retry.c
@@ -0,0 +1,7 @@
+#include <linux/smp.h>
+
+void ____autoconf_func(void)
+{
+ /* Older on_each_cpu() calls had a "retry" parameter */
+ (void)on_each_cpu(NULL, NULL, 0, 0);
+}
diff --git a/runtime/time.c b/runtime/time.c
index 8a0b6fad..6b01cebe 100644
--- a/runtime/time.c
+++ b/runtime/time.c
@@ -237,7 +237,11 @@ _stp_init_time(void)
return -1;
stp_timer_reregister = 1;
+#ifdef STAPCONF_ONEACHCPU_RETRY
ret = on_each_cpu(__stp_init_time, NULL, 0, 1);
+#else
+ ret = on_each_cpu(__stp_init_time, NULL, 1);
+#endif
#ifdef CONFIG_CPU_FREQ
if (!ret && !__stp_constant_freq()) {