2 Aug 2010 22:49
[PATCH] POSIX monotonic clock
Yaakov (Cygwin/X <yselkowitz <at> users.sourceforge.net>
2010-08-02 20:49:08 GMT
2010-08-02 20:49:08 GMT
Here is an attempt to implement POSIX.1-2004+ Monotonic Clock: http://www.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html In summary, I took hires_us and changed the resolution to nanoseconds. I dropped systime() because the only place hires_us was being used is in strace.cc which ignored it, and WRT POSIX monotonic clocks the absolute value of the clock is meaningless. Since systime() has only 100ns precision, using it would either force a loss in resolution or (if multiplied by 100 to get ns) an early overflow. I also switched from ENOSYS to EINVAL, as POSIX.1-2004 and 2008 dropped references to the former (as noted in Change History). Patches for newlib, winsup/cygwin and winsup/doc attached. I have also attached an STC for the new functionality. FWIW, on my machine, QueryPerformanceFrequency() returns just over 2.9 million, resulting in a clock_getres(CLOCK_MONOTONIC) of 340ns. I would appreciate a careful review of this patch, both from the Cygwin API and POSIX POVs. Yaakov
RSS Feed