Re: [PATCH] i386: Selectable Frequency of the Timer Interrupt

Eric St-Laurent
2005-07-15T01:18:11Z

On Thu, 2005-07-14 at 23:37 +0100, Alan Cox wrote:

> In actual fact you also want to fix users of
>
> while(time_before(foo, jiffies)) { whack(mole); }
>
> to become
>
> init_timeout(&timeout);
> timeout.expires = jiffies + n
> add_timeout(&timeout);
> while(!timeout_expired(&timeout)) {}
>
> Which is a trivial wrapper around timers as we have them now

Or something like this:

struct timeout_timer {
unsigned long expires;
};

static inline void timeout_set(struct timeout_timer *timer,
unsigned int msecs)
{
timer->expires = jiffies + msecs_to_jiffies(msecs);
}

static inline int timeout_expired(struct timeout_timer *timer)
{
return (time_after(jiffies, timer->expires));
}

It provides a nice API for relative timeouts without adding overhead.

- Eric St-Laurent