Re: udelay and nanosleep questions

From: george anzinger (george@mvista.com)
Date: Sat Sep 21 2002 - 22:51:38 EST


Jos Hulzink wrote:
>
> Hi,
>
> Talking about kernel driver programming:
>
> 1) Can I rely on udelay(1) ? i.e. is the resolution high enough to wait at
> least 1 microsecond given it returns normally ? I know the actual
> implementation is platform / cpu dependant, so maybe I should ask: Should
> I be able to rely on udelay(1) ?
>
> 2) With the highspeed CPUs these days, the implementation of sys_nanosleep
> (in kernel/timer.c) for realtime processes:
>
> sys_nanosleep {udelay ((nsec+999)/1000}
>
> is rather low-res. Time for something new ? sys_nanosleep seems not the
> call to make for in-kernel accurate delays, for it schedules a timeout
> instead of doing a busy wait. My driver needs 250 ns delays, is there a
> more accurate way than udelay(1) ? It is a pity to waste 4x more
> clockcycli than needed.
>
> 3) Usleep and friends seem not to care about speedstepping technologies.
> Shouldn't we care, at least for in-kernel and realtime process waits ?
> True, you are an idiot when running realtime processes on a speedstep
> enabled CPU, but still...

You might want to check out the high-res-timers stuff. We
will be sending this in soon for 2.5, for 2.4, see the link
below.

-g
>
> -
> 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/

-- 
George Anzinger   george@mvista.com
High-res-timers: 
http://sourceforge.net/projects/high-res-timers/
Preemption patch:
http://www.kernel.org/pub/linux/kernel/people/rml
-
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/



This archive was generated by hypermail 2b29 : Mon Sep 23 2002 - 22:00:34 EST