Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PATCH] systemtap: fix up on_each_cpu() for kernels 2.6.26+

34 views
Skip to first unread message

James Bottomley

unread,
Jul 17, 2008, 1:00:19 PM7/17/08
to
In kernel 2.6.26, this patch

commit 15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d
Author: Jens Axboe <jens....@oracle.com>
Date: Fri May 9 09:39:44 2008 +0200

on_each_cpu(): kill unused 'retry' parameter

means that runtime/time.c is now using the wrong calling conventions.
Fix this up and surround it by kernel versioning #ifdefs.

Signed-off-by: James Bottomley <James.B...@HansenPartnership.com>
---
runtime/time.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/runtime/time.c b/runtime/time.c
index 8a0b6fa..fffdfe0 100644
--- a/runtime/time.c
+++ b/runtime/time.c
@@ -237,7 +237,12 @@ _stp_init_time(void)
return -1;

stp_timer_reregister = 1;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
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()) {
--
1.5.6

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

James Bottomley

unread,
Jul 17, 2008, 1:00:23 PM7/17/08
to
On Thu, 2008-07-17 at 11:51 -0500, James Bottomley wrote:
> In kernel 2.6.26, this patch
>
> commit 15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d
> Author: Jens Axboe <jens....@oracle.com>
> Date: Fri May 9 09:39:44 2008 +0200
>
> on_each_cpu(): kill unused 'retry' parameter
>
> means that runtime/time.c is now using the wrong calling conventions.
> Fix this up and surround it by kernel versioning #ifdefs.

By the way, this is a classic illustration of the fragility problem in
holding the systemtap runtime outside of the kernel. If it had been
in-kernel, all this would be fixed up and running and no-one would even
have noticed.

At least with changes in argument numbers, the compile breaks ... it
would have been a lot nastier if one of the variables simply changed
meaning ...

James

Stone, Joshua I

unread,
Jul 17, 2008, 1:50:15 PM7/17/08
to
James Bottomley wrote:
> On Thu, 2008-07-17 at 11:51 -0500, James Bottomley wrote:
>> In kernel 2.6.26, this patch
>>
>> commit 15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d
>> Author: Jens Axboe <jens....@oracle.com>
>> Date: Fri May 9 09:39:44 2008 +0200
>>
>> on_each_cpu(): kill unused 'retry' parameter
>>
>> means that runtime/time.c is now using the wrong calling conventions.
>> Fix this up and surround it by kernel versioning #ifdefs.
>
> By the way, this is a classic illustration of the fragility problem
> in holding the systemtap runtime outside of the kernel. If it had
> been in-kernel, all this would be fixed up and running and no-one
> would even have noticed.

Believe it or not, we really do understand this sentiment.

The whole runtime/time.c in particular is a fairly ugly way for us to
get a call-anywhere gettimeofday. I would love to see an in-kernel
replacement for this, but I don't have the expertise to know how to
approach it myself.

Josh

Stone, Joshua I

unread,
Jul 17, 2008, 7:10:09 PM7/17/08
to
James Bottomley wrote:
> In kernel 2.6.26, this patch
>
> commit 15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d
> Author: Jens Axboe <jens....@oracle.com>
> Date: Fri May 9 09:39:44 2008 +0200
>
> on_each_cpu(): kill unused 'retry' parameter
>
> means that runtime/time.c is now using the wrong calling conventions.
> Fix this up and surround it by kernel versioning #ifdefs.

On a closer look, the referenced commit wasn't actually merged until
sometime between v2.6.26-git2 and -git3. The released v2.6.26 still
has 'retry' in on_each_cpu(), so we'll either have to use an autoconf
test to detect the change, or wait and key the #ifdef on 2.6.27.

Josh

0 new messages