What about the following. Since jiffies wraps are extremely rare, it
should be enough to have something along the lines of the following
in the uptime code only (or globally accessible for any code that
needs to use a full 64-bit jiffies value):
u64 get_jiffies64(void)
{
static unsigned long jiffies_hi = 0;
static unsigned long jiffies_last = INITIAL_JIFFIES;
/* probably need locking for this part */
if (jiffies < jiffies_last) { /* We have a wrap */
jiffies_hi++;
jiffies_last = jiffies;
}
return (jiffies | ((u64)jiffies_hi) << LONG_SHIFT));
}
This means you need to call something that _checks_ the uptime
(or needs the 64-bit jiffies value) at least once every 1.3 years.
If you don't do it at least that often, you probably don't care
about the uptime anyways.
This only impacts anything that really needs a 64-bit jiffies count,
and has zero impact everywhere else.
Cheers, Andreas
-- Andreas Dilger http://sourceforge.net/projects/ext2resize/ http://www-mddsp.enel.ucalgary.ca/People/adilger/- 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/