From 161d0fd27bdedcf5ff9ea2a56596a3b1ce368d74 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 26 Nov 2018 17:38:15 +0100 Subject: [PATCH] Cygwin: timers: drop error handling for Windows perf timer functions Per MSDN, the perf timer functions always succeed on Windows XP or later. Signed-off-by: Corinna Vinschen --- winsup/cygwin/times.cc | 37 +++++++------------------------------ 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index e89051407..1ead18efc 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -466,21 +466,14 @@ void hires_ns::prime () { LARGE_INTEGER ifreq; - if (!QueryPerformanceFrequency (&ifreq)) - { - inited = -1; - return; - } + + /* On XP or later the perf counter functions will always succeed. */ + QueryPerformanceFrequency (&ifreq); int priority = GetThreadPriority (GetCurrentThread ()); SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_TIME_CRITICAL); - if (!QueryPerformanceCounter (&primed_pc)) - { - SetThreadPriority (GetCurrentThread (), priority); - inited = -1; - return; - } + QueryPerformanceCounter (&primed_pc); freq = (double) ((double) NSPERSEC / (double) ifreq.QuadPart); inited = true; @@ -490,21 +483,11 @@ hires_ns::prime () LONGLONG hires_ns::nsecs (bool monotonic) { - if (!inited) - prime (); - if (inited < 0) - { - set_errno (ENOSYS); - return (LONGLONG) -1; - } - LARGE_INTEGER now; - if (!QueryPerformanceCounter (&now)) - { - set_errno (ENOSYS); - return -1; - } + if (!inited) + prime (); + QueryPerformanceCounter (&now); // FIXME: Use round() here? now.QuadPart = (LONGLONG) (freq * (double) (now.QuadPart - (monotonic ? 0LL : primed_pc.QuadPart))); @@ -646,12 +629,6 @@ hires_ns::resolution () { if (!inited) prime (); - if (inited < 0) - { - set_errno (ENOSYS); - return (LONGLONG) -1; - } - return (freq <= 1.0) ? 1LL : (LONGLONG) freq; } -- 2.43.5