Implement POSIX.1-2004 Monotonic Clock.

* hires.h: Change hires_us to hires_ns, with nanosecond resolution.
(hires_ns::primed_ft): Remove.
(hires_ns::nsecs): New prototype.
(hires_ns::usecs): Rewrite in terms of nsecs.
(hires_ns::resolution): New prototype.
* times.cc: Change hires_us to hires_ns.
(ntod): Declare.
(systime): Remove.
(hires_ns::prime): Increase resolution to nanoseconds.
(hires_ns::nsecs): Rename usecs to nsecs to reflect increased resolution.
Remove justdelta argument.
(hires_ns::resolution): New function.
(clock_gettime): Accept CLOCK_MONOTONIC.
Use EINVAL instead of ENOSYS per POSIX.1-2004.
(clock_getres): Ditto.
(clock_setres): Use EINVAL instead of ENOSYS to conform with other
implementations.
* strace.cc (strace::microseconds): Adjust for hires_ns.
* sysconf.cc (sca): Set _SC_MONOTONIC_CLOCK to _POSIX_MONOTONIC_CLOCK.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
This commit is contained in:
Yaakov Selkowitz
2010-08-09 16:47:48 +00:00
parent f717289618
commit b150f5236b
6 changed files with 99 additions and 37 deletions

View File

@@ -29,14 +29,15 @@ class hires_base
void reset() {inited = false;}
};
class hires_us : public hires_base
class hires_ns : public hires_base
{
LARGE_INTEGER primed_ft;
LARGE_INTEGER primed_pc;
double freq;
void prime ();
public:
LONGLONG usecs (bool justdelta);
LONGLONG nsecs ();
LONGLONG usecs () {return nsecs () / 1000LL;}
LONGLONG resolution();
};
class hires_ms : public hires_base