X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Fos_time.hpp;h=75175d85f6ecb15d8fc69622e10526b23ab5bb3d;hb=d6c4372e46219a1e54ac749852d1bdb1ecec0fce;hp=a4f52093c94c125e7874a8e77f1597f056c0ab7b;hpb=ddbf8c0065ce1b7502e3e127a846add476ab7a4c;p=apitrace diff --git a/common/os_time.hpp b/common/os_time.hpp index a4f5209..75175d8 100644 --- a/common/os_time.hpp +++ b/common/os_time.hpp @@ -35,6 +35,8 @@ #include #elif defined(__linux__) #include +#elif defined(__APPLE__) +#include #else #include #endif @@ -43,15 +45,15 @@ namespace os { // OS dependent time frequency -#if defined(_WIN32) - // runtime variable on Windows +#if defined(_WIN32) || defined(__APPLE__) + // runtime variable on Windows and MacOSX extern long long timeFrequency; #elif defined(__linux__) - // nanoseconds - static const long long timeFrequency = 1000000000; + // nanoseconds on Linux + static const long long timeFrequency = 1000000000LL; #else - // microseconds on - static const long long timeFrequency = 1000000; + // microseconds on Unices + static const long long timeFrequency = 1000000LL; #endif // Time from an unknown base in a unit determined by timeFrequency @@ -72,6 +74,13 @@ namespace os { return 0; } return tp.tv_sec * 1000000000LL + tp.tv_nsec; +#elif defined(__APPLE__) + if (!timeFrequency) { + mach_timebase_info_data_t timebaseInfo; + mach_timebase_info(&timebaseInfo); + timeFrequency = 1000000000LL * timebaseInfo.denom / timebaseInfo.numer; + } + return mach_absolute_time(); #else struct timeval tv; gettimeofday(&tv, NULL);