"Mike Bresnahan" <mbresnah at visi.com> wrote: > Is there a high resolution timer C API on Linux? If so, what is it's > name? I need a timer that will give me time with a precision better > than seconds, e.g. milliseconds. I'm looking for a C function > equivalent to the Java function System.currentTimeMillis() and the > Win32 functions QueryPerformanceCounter() and > QueryPerformanceFrequency. Hmm, found getitimer(2) and setitimer(2) that give microseconds. glutTimerFunc(3glut) from the glut development package is a callback function whose resolution is in milliseconds. There's usleep(3) and nanosleep(2) for micro and nanosecond sleep calls. Nanosleep's BUGS section reads as such: BUGS The current implementation of nanosleep is based on the normal kernel timer mechanism, which has a resolution of 1/HZ s (i.e, 10 ms on Linux/i386 and 1 ms on Linux/Alpha). Therefore, nanosleep pauses always for at least the specified time, however it can take up to 10 ms longer than specified until the process becomes runnable again. For the same reason, the value returned in case of a delivered signal in *rem is usually rounded to the next larger multiple of 1/HZ s. As some applications require much more precise pauses (e.g., in order to control some time-critical hardware), nanosleep is also capable of short high-precision pauses. If the process is sched uled under a real-time policy like SCHED_FIFO or SCHED_RR, then pauses of up to 2 ms will be performed as busy waits with microsecond precision. The nanosleep(2) function is related to sched_setscheduler(2) function, and both are found, obviously, in the Linux Programmer's Manual or section 2 of your man pages. These are all found in the man pages, though you may not have the "Linux Programmer's Manual", or section 2 in your repository. I'm sure a google search would be profitable, too. -- Chad Walstrom <chewie at wookimus.net> | a.k.a. ^chewie http://www.wookimus.net/ | s.k.a. gunnarr