lkml.org 
[lkml]   [1996]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Jiffies Wraparound (was Re: interrupt counts)


On Wed, 21 Aug 1996, Richard Henderson wrote:
>
> > IMHO, we either should forget about it and wait for Merced or anything
> > else to move us out of the 32 bit world ... or we should completely avoid
> > comparing "jiffies" to variables. We could do this the following way:
> >
> > #define IS_TIMED_OUT(timeout) (jiffies>timeout) || \
> > (timeout-jiffies>MAX_JIFFIES/2)
>
> Just rewriting tests from
>
> timeout = jiffies + delay;
> while (jifies < timeout) continue;
>
> to
>
> start = jiffies;
> while (jiffies - start < delay) continue;
>
> solves the problem, and is much faster.

In fact, it's even faster to use

end = jiffies + timeout;
while ((signed)(end - jiffies) > 0) continue;

because a comparison against zero generally doesn't need a special compare
instruction. (speed doesn't matter in this case, as we're busy waiting
anyway, but it might matter in the timeout handler itself).

That _does_ require that "timeout" is less or equal to MAX_TIMEOUT:

#define MAX_TIMEOUT ((~0UL)>>1)

but this is generally not a real limitation (it means that you can't have
timeouts longer than 248 days on a x86, tough luck).

Linus

\
 
 \ /
  Last update: 2005-03-22 13:38    [W:0.067 / U:2.280 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site