Cygwin: implement extensible clock interface
- Drop hires_[nm]s clocks, rename hires.h to clock.h. - Implement clk_t class as an extensible clock class in new file clock.cc. - Introduce get_clock(clock_id) returning a pointer to the clk_t instance for clock_id. Provide the following methods along the lines of the former hires classes: void clk_t::nsecs (struct timespec *); ULONGLONG clk_t::nsecs (); LONGLONG clk_t::usecs (); LONGLONG clk_t::msecs (); void clk_t::resolution (struct timespec *); - Add CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_RAW, CLOCK_MONOTONIC_COARSE and CLOCK_BOOTTIME clocks. - Allow clock_nanosleep, pthread_condattr_setclock and timer_create to use all new clocks (both clocks should be usable with a small tweak, though). - Bump DLL major version to 2.12. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
@@ -2566,6 +2566,7 @@ pthread_convert_abstime (clockid_t clock_id, const struct timespec *abstime,
|
||||
/ (NSPERSEC/NS100PERSEC);
|
||||
switch (clock_id)
|
||||
{
|
||||
case CLOCK_REALTIME_COARSE:
|
||||
case CLOCK_REALTIME:
|
||||
timeout->QuadPart += FACTOR;
|
||||
break;
|
||||
@@ -3035,14 +3036,9 @@ pthread_condattr_setclock (pthread_condattr_t *attr, clockid_t clock_id)
|
||||
{
|
||||
if (!pthread_condattr::is_good_object (attr))
|
||||
return EINVAL;
|
||||
switch (clock_id)
|
||||
{
|
||||
case CLOCK_REALTIME:
|
||||
case CLOCK_MONOTONIC:
|
||||
break;
|
||||
default:
|
||||
return EINVAL;
|
||||
}
|
||||
if (CLOCKID_IS_PROCESS (clock_id) || CLOCKID_IS_THREAD (clock_id)
|
||||
|| clock_id >= MAX_CLOCKS)
|
||||
return EINVAL;
|
||||
(*attr)->clock_id = clock_id;
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user