5 microsecond delays in device driver - how?

Paul Slootman slootman at dri.nl
Mon Apr 8 04:35:38 AEST 1991


Hi,

I have a question concerning  the  use  of  clock  interrupts  in
device  drivers (for now, I'm restricting myself to SCO Xenix and
SCO Unix).

I have to generate a delay of around 5 to  10  microseconds  many
times.  I will have to do this by busy waiting (right?). A longer
delay is not a problem for the device, but because it has  to  be
done  thousands  (!)  of  times for each device access, I want to
keep the delay as short as possible. As a result, simply  looping
a number of times that will be sufficient for all CPU speeds etc.
is not an option.

What I was thinking about doing was using the clock interrupt  in
some  way  to  measure  how  many  times a loop could be executed
between two clock interrupts. This would  be  done  once  in  the
xxinit() function. Knowing how many loops can be done between two
clock ticks, I could figure out how often to loop to get a  delay
of a few microseconds.

I understand the system clock  is  not  yet  initialized  at  the
moment  the xxinit() functions are called. I presume I could thus
use the clock myself, to do what I described above. How can I, on
the  assumption  that what I propose would work? If not, what are
my other options?

One last note: I received a tip that there might be a function in
Unix called "tenmicrosec". How many other systems have this?  How
reliable is it?

Please email; I'll summarize to the comp.unix.internals group  if
anything interesting comes out of this.

Paul.
-- 
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
: slootman at dri.nl            :          Don't hit the keys so hard, :
: ...!hp4nl!dri500!slootman  :                             it hurts :
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=



More information about the Comp.unix.internals mailing list