]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
util.h: use mach_absolute_time for macOS
authorPrzemyslaw Skibinski <inikep@gmail.com>
Mon, 20 Feb 2017 11:18:15 +0000 (12:18 +0100)
committerPrzemyslaw Skibinski <inikep@gmail.com>
Mon, 20 Feb 2017 11:18:15 +0000 (12:18 +0100)
programs/util.h

index 8dd0df8b963fdc776f0892862af1fec4b6878480..ef526b62e4879f7f6094bda4ceb20a2427364fac 100644 (file)
@@ -116,6 +116,14 @@ extern "C" {
    UTIL_STATIC void UTIL_getTime(UTIL_time_t* x) { QueryPerformanceCounter(x); }
    UTIL_STATIC U64 UTIL_getSpanTimeMicro(UTIL_freq_t ticksPerSecond, UTIL_time_t clockStart, UTIL_time_t clockEnd) { return 1000000ULL*(clockEnd.QuadPart - clockStart.QuadPart)/ticksPerSecond.QuadPart; }
    UTIL_STATIC U64 UTIL_getSpanTimeNano(UTIL_freq_t ticksPerSecond, UTIL_time_t clockStart, UTIL_time_t clockEnd) { return 1000000000ULL*(clockEnd.QuadPart - clockStart.QuadPart)/ticksPerSecond.QuadPart; }
+#elif defined(__APPLE__) && defined(__MACH__)
+   #include <mach/mach_time.h>
+   typedef mach_timebase_info_data_t UTIL_freq_t;
+   typedef U64 UTIL_time_t;
+   UTIL_STATIC void UTIL_initTimer(UTIL_freq_t* rate) { mach_timebase_info(&rate); }
+   UTIL_STATIC void UTIL_getTime(UTIL_time_t* x) { *x = mach_absolute_time(); }
+   UTIL_STATIC U64 UTIL_getSpanTimeMicro(UTIL_freq_t rate, UTIL_time_t clockStart, UTIL_time_t clockEnd) { return (((clockEnd - clockStart) * (U64)rate.numer) / ((U64)rate.denom))/1000ULL; }
+   UTIL_STATIC U64 UTIL_getSpanTimeNano(UTIL_freq_t rate, UTIL_time_t clockStart, UTIL_time_t clockEnd) { return ((clockEnd - clockStart) * (U64)rate.numer) / ((U64)rate.denom); }
 #elif (_POSIX_TIMERS > 0) && defined(_POSIX_MONOTONIC_CLOCK)  /* defined in <unistd.h> */
    typedef struct timespec UTIL_freq_t;
    typedef struct timespec UTIL_time_t;