while
(1) {
...
usleep (usecs_till_next_event);
/* we're know its the right time,
instead of being rounded to
the default HZ
*/
deliver_events ();
}
Is this really new ? I was porting some C++ thread classes (originally
developed for Solaris) to 2.4.19 this week. The ITC mechanism uses
pthread_cond_timedwait(), which takes a struct timespec * referring to
an absolute time, the same you can get with clock_gettime(). I had the
impression this gave me almost microsecond resolution timing (but I did
not look closesly at the precision at the time).
the kernel gives non-SCHED_FIFO/RR threads roughly 1/HZ
resolution. SCHED_FIFO/RR threads can get better than that if the
delay is very small, but its implemented by spinning on the
processor.
the new code will provide usec resolution without spinning. it
reprograms the APIC timer to interrupt the CPU at the right time. i
believe that you will still need capabilities, euid=0 and/or
SCHED_FIFO/RR to use it fully.
--p