Messages in this thread |  | | From | vda <> | Subject | Re: [Patch] Re: Nasty suprise with uptime | Date | Fri, 2 Nov 2001 14:46:59 +0000 |
| |
On Thursday 01 November 2001 18:34, Benjamin LaHaise wrote: > > So, if you leave jiffies alone, but bump another variable when it > > wraps, you get to eat your cake and keep it too. > > As Linus pointed out, using casting tricks with a long long will just > work for this case. Sounds good to me.
I'm using these dirty tricks often. Too often in fact, it hurts readability and violates "make it simple if you can" principle. Look at this diff of "simple" and "optimized" version:
-unsigned long jiffies = INITIAL_JIFFIES; -unsigned long jiffies_hi = 0; +/* vda: need to enforce 8 byte alignment - how??? */ +#if defined(__LITTLE_ENDIAN) && (BITS_PER_LONG == 32) + unsigned long jiffies = INITIAL_JIFFIES; + unsigned long jiffies_hi = 0; +#elif defined(__BIG_ENDIAN) && (BITS_PER_LONG == 32) + unsigned long jiffies_hi = 0; + unsigned long jiffies = INITIAL_JIFFIES; +#elif (BITS_PER_LONG == 64) + unsigned long jiffies = INITIAL_JIFFIES; +#else +#error Fix me somebody please.... +#endif
...
+ if(++jiffies==0) jiffies_hi++; +#if defined(__LITTLE_ENDIAN) && (BITS_PER_LONG == 32) + (*(unsigned long long*)&jiffies)++; +#elif defined(__BIG_ENDIAN) && (BITS_PER_LONG == 32) + (*(unsigned long long*)&jiffies_hi)++; +#elif (BITS_PER_LONG == 64) + jiffies++; +#else +#error Fix me somebody please.... +#endif
Does saving 600 CPU cycles per second (0.000001 of your CPU power) worth this mess? I think not. Let's hope gcc will get smarter some day :-) -- vda - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |