From: Grahame J. <gb...@th...> - 2007-12-20 04:52:10
|
Hi Dave, Thanks for that. Mmmmm? Where, who? That is just nuts - 20ms. Anyone would think that usleep(1) would sleep 1us? I thought that java was bad enough. gettimeofday takes about 5us so I will just do a few of those for now. :( - Well it's working. Cheers Grahame Dave Hylands wrote: > HI Grahame, > > On Dec 19, 2007 7:16 PM, Grahame Jordan <gb...@th...> wrote: > >> Hi, >> >> I am trying to implement a nanosleep, however it takes ~20ms every time. >> If I change the nanosleep to usleep(1000) it still takes 20ms?????? >> Is there a better way to implement a nanosecond delay? >> > > Hmm. It used to actually work. Then some new generic timer interface > got brought in, and the high-res stuff got lost. > > The 20 msec granularity is because it's using the 10 msec jiffy tick > to perform the delay, and it has to wait for at least 2 ticks (because > it doesn't know where it is in the current tick). > > I first ran into this with the robostix driver, because it needs 2 > usec delays. I wound up adding an ioctl to the driver and used a > udelay function at the kernel level. > > Another method would be to map in the 3.6 MHz timer and just busy wait > on it changing to an appropriate value. > > |