diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2018-11-27 13:59:37 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2018-11-29 10:01:57 +0100 |
commit | 6df301076af0f8b6dd0b12eb7c3ea15a4f835267 (patch) | |
tree | 65d861efaa2eff23e08b046bdd24e7de66149134 /winsup/cygwin/times.cc | |
parent | 0b868df147d613b6f277161eff4ac2834aa24ee7 (diff) | |
download | newlib-6df301076af0f8b6dd0b12eb7c3ea15a4f835267.zip newlib-6df301076af0f8b6dd0b12eb7c3ea15a4f835267.tar.gz newlib-6df301076af0f8b6dd0b12eb7c3ea15a4f835267.tar.bz2 |
Cygwin: timers: clock_setres: make no-op
clock_setres is a questionable function only existing on QNX.
Disable the function, just return success for CLOCK_REALTIME
to maintain backward compatibility.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/times.cc')
-rw-r--r-- | winsup/cygwin/times.cc | 38 |
1 files changed, 2 insertions, 36 deletions
diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index 4e405b2..c557e82 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -688,47 +688,13 @@ clock_getres (clockid_t clk_id, struct timespec *tp) extern "C" int clock_setres (clockid_t clk_id, struct timespec *tp) { - static NO_COPY bool period_set; - int status; - + /* Don't use this function. It only exists in QNX. Just return + success on CLOCK_REALTIME for backward compat. */ if (clk_id != CLOCK_REALTIME) { set_errno (EINVAL); return -1; } - - /* Convert to 100ns to match OS resolution. The OS uses ULONG values - to express resolution in 100ns units, so the coarsest timer resolution - is < 430 secs. Actually the coarsest timer resolution is only slightly - beyond 15ms, but this might change in future OS versions, so we play nice - here. */ - ULONGLONG period = tp->tv_sec * NS100PERSEC - + (tp->tv_nsec + (NSPERSEC/NS100PERSEC) - 1) - / (NSPERSEC/NS100PERSEC); - - /* clock_setres is non-POSIX/non-Linux. On QNX, the function always - rounds the incoming value to the nearest supported value. */ - ULONG coarsest, finest, actual; - if (NT_SUCCESS (NtQueryTimerResolution (&coarsest, &finest, &actual))) - { - if (period > coarsest) - period = coarsest; - else if (finest > period) - period = finest; - } - - if (period_set - && NT_SUCCESS (NtSetTimerResolution (minperiod, FALSE, &actual))) - period_set = false; - - status = NtSetTimerResolution (period, TRUE, &actual); - if (!NT_SUCCESS (status)) - { - __seterrno_from_nt_status (status); - return -1; - } - minperiod = period; - period_set = true; return 0; } |