Re: [PATCH] simplify update_times (avoid jiffies/jiffies_64aliasing problem)
From: Atsushi Nemoto
Date: Sun Mar 05 2006 - 21:31:23 EST
>>>>> On Sun, 5 Mar 2006 10:13:56 +1100, Paul Mackerras <paulus@xxxxxxxxx> said:
paul> I think the thing that makes most sense is:
paul> #define jiffies ((unsigned long) jiffies_64)
paul> and fix the few drivers that use `jiffies' as a local variable.
paul> No-one should be trying to write to jiffies, and the compiler
paul> will do the right thing for reads of jiffies on 32-bit platforms
paul> (it does on ppc32 at least).
I think making jiffies a non l-value is good, but this drops volatile
attribute from jiffies (since jiffies_64 is not volatile). It might
break some codes which do polling on jiffies.
Something like this would be better?
#if defined(__BIG_ENDIAN) && BITS_PER_LONG == 32
#define jiffies (*((const volatile unsigned long *)&jiffies_64 + 1))
#else
#define jiffies (*(const volatile unsigned long *)&jiffies_64)
#endif
And if we do not want to depend on -fno-strict-aliasing, the union
would be The Only Neat Thing to Do.
---
Atsushi Nemoto
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/