@@ -202,7 +202,11 @@ QueryPerformanceCounter(
202
202
PERF_ENTRY (QueryPerformanceCounter);
203
203
ENTRY (" QueryPerformanceCounter()\n " );
204
204
do
205
- #if HAVE_CLOCK_MONOTONIC
205
+ #if HAVE_MACH_ABSOLUTE_TIME
206
+ {
207
+ lpPerformanceCount->QuadPart = (LONGLONG)mach_absolute_time ();
208
+ }
209
+ #elif HAVE_CLOCK_MONOTONIC
206
210
{
207
211
struct timespec ts;
208
212
if (clock_gettime (CLOCK_MONOTONIC, &ts) != 0 )
@@ -214,10 +218,6 @@ QueryPerformanceCounter(
214
218
lpPerformanceCount->QuadPart =
215
219
(LONGLONG)ts.tv_sec * (LONGLONG)tccSecondsToNanoSeconds + (LONGLONG)ts.tv_nsec ;
216
220
}
217
- #elif HAVE_MACH_ABSOLUTE_TIME
218
- {
219
- lpPerformanceCount->QuadPart = (LONGLONG)mach_absolute_time ();
220
- }
221
221
#elif HAVE_GETHRTIME
222
222
{
223
223
lpPerformanceCount->QuadPart = (LONGLONG)gethrtime ();
@@ -264,9 +264,7 @@ QueryPerformanceFrequency(
264
264
BOOL retval = TRUE ;
265
265
PERF_ENTRY (QueryPerformanceFrequency);
266
266
ENTRY (" QueryPerformanceFrequency()\n " );
267
- #if HAVE_GETHRTIME || HAVE_READ_REAL_TIME || HAVE_CLOCK_MONOTONIC
268
- lpFrequency->QuadPart = (LONGLONG)tccSecondsToNanoSeconds;
269
- #elif HAVE_MACH_ABSOLUTE_TIME
267
+ #if HAVE_MACH_ABSOLUTE_TIME
270
268
// use denom == 0 to indicate that s_TimebaseInfo is uninitialised.
271
269
if (s_TimebaseInfo.denom == 0 )
272
270
{
@@ -277,9 +275,11 @@ QueryPerformanceFrequency(
277
275
{
278
276
lpFrequency->QuadPart = (LONGLONG)tccSecondsToNanoSeconds * ((LONGLONG)s_TimebaseInfo.denom / (LONGLONG)s_TimebaseInfo.numer );
279
277
}
278
+ #elif HAVE_GETHRTIME || HAVE_READ_REAL_TIME || HAVE_CLOCK_MONOTONIC
279
+ lpFrequency->QuadPart = (LONGLONG)tccSecondsToNanoSeconds;
280
280
#else
281
281
lpFrequency->QuadPart = (LONGLONG)tccSecondsToMicroSeconds;
282
- #endif // HAVE_GETHRTIME || HAVE_READ_REAL_TIME || HAVE_CLOCK_MONOTONIC
282
+ #endif // HAVE_MACH_ABSOLUTE_TIME
283
283
LOGEXIT (" QueryPerformanceFrequency\n " );
284
284
PERF_EXIT (QueryPerformanceFrequency);
285
285
return retval;
@@ -338,7 +338,17 @@ GetTickCount64()
338
338
{
339
339
ULONGLONG retval = 0 ;
340
340
341
- #if HAVE_CLOCK_MONOTONIC_COARSE || HAVE_CLOCK_MONOTONIC
341
+ #if HAVE_MACH_ABSOLUTE_TIME
342
+ {
343
+ // use denom == 0 to indicate that s_TimebaseInfo is uninitialised.
344
+ if (s_TimebaseInfo.denom == 0 )
345
+ {
346
+ ASSERT (" s_TimebaseInfo is uninitialized.\n " );
347
+ goto EXIT;
348
+ }
349
+ retval = (mach_absolute_time () * s_TimebaseInfo.numer / s_TimebaseInfo.denom ) / tccMillieSecondsToNanoSeconds;
350
+ }
351
+ #elif HAVE_CLOCK_MONOTONIC_COARSE || HAVE_CLOCK_MONOTONIC
342
352
{
343
353
clockid_t clockType =
344
354
#if HAVE_CLOCK_MONOTONIC_COARSE
@@ -354,16 +364,6 @@ GetTickCount64()
354
364
}
355
365
retval = (ts.tv_sec * tccSecondsToMillieSeconds)+(ts.tv_nsec / tccMillieSecondsToNanoSeconds);
356
366
}
357
- #elif HAVE_MACH_ABSOLUTE_TIME
358
- {
359
- // use denom == 0 to indicate that s_TimebaseInfo is uninitialised.
360
- if (s_TimebaseInfo.denom == 0 )
361
- {
362
- ASSERT (" s_TimebaseInfo is uninitialized.\n " );
363
- goto EXIT;
364
- }
365
- retval = (mach_absolute_time () * s_TimebaseInfo.numer / s_TimebaseInfo.denom ) / tccMillieSecondsToNanoSeconds;
366
- }
367
367
#elif HAVE_GETHRTIME
368
368
{
369
369
retval = (ULONGLONG)(gethrtime () / tccMillieSecondsToNanoSeconds);
0 commit comments