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:
@@ -7,7 +7,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
||||
details. */
|
||||
|
||||
#include "winsup.h"
|
||||
#include "hires.h"
|
||||
#include "path.h"
|
||||
#include "fhandler.h"
|
||||
#include "dtable.h"
|
||||
@@ -803,12 +802,12 @@ retry:
|
||||
return -1;
|
||||
}
|
||||
|
||||
time0 = ntod.nsecs ();
|
||||
time0 = get_clock (CLOCK_MONOTONIC)->nsecs ();
|
||||
/* Note wait below is abortable even w/ empty sigmask and infinite timeout */
|
||||
res = sigtimedwait (&sigmask, &si, timeout ? &to : NULL);
|
||||
if (res == -1)
|
||||
return -1; /* Return with errno set by failed sigtimedwait() */
|
||||
time1 = ntod.nsecs ();
|
||||
time1 = get_clock (CLOCK_MONOTONIC)->nsecs ();
|
||||
|
||||
/* Adjust timeout to account for time just waited */
|
||||
time1 -= time0;
|
||||
|
Reference in New Issue
Block a user