Choosing between DELAY(useconds) and pause()

Gavin Atkinson gavin.atkinson at ury.york.ac.uk
Fri Sep 23 15:38:40 UTC 2011


On Thu, 2011-09-22 at 20:07 +0200, Hans Petter Selasky wrote:
> On Thursday 22 September 2011 19:55:23 David Somayajulu wrote:
> > It appears that the pause() function cannot be used in driver functions
> > which are invoked early in the boot process. Is there is a kernel api
> > which a device driver can use to determine whether to use pause() or
> > DELAY(), for delays which are say greater than 10hz - may be even 1 hz ?
> 
> Maybe you want to use something like this:
> 
> if (cold)
>  DELAY()
> else
>  pause()
> 
> In your code.

Note that this still shouldn't be done in your suspend/resume paths, as
"cold" isn't set there, however there also appears to be no guarantee
that pause() will ever return (as you could be running after the timer
has been suspended, or before it resumes).

I'm not sure what the correct answer is for suspend/resume code.

Gavin




More information about the freebsd-current mailing list