commit f00c7bccf7955b7dfbb4859fd9019e9eb3349f2d Author: Tobias Mayer Date: Wed Feb 13 12:44:17 2019 +0100 Provide clock_gettime for xray on macos < 10.12 diff --git a/lib/xray/xray_basic_logging.cc b/lib/xray/xray_basic_logging.cc index a46c151af..38aea6932 100644 --- a/lib/xray/xray_basic_logging.cc +++ b/lib/xray/xray_basic_logging.cc @@ -36,6 +36,29 @@ #include "xray_tsc.h" #include "xray_utils.h" +#if __MACH__ +#include +#include +enum clockid_t { + CLOCK_MONOTONIC = REALTIME_CLOCK, + CLOCK_REALTIME = REALTIME_CLOCK +}; + +int clock_gettime(clockid_t clock_id, struct timespec *ts) { + if (ts != NULL) { + clock_serv_t cclock; + mach_timespec_t mts; + host_get_clock_service(mach_host_self(), clock_id, &cclock); + clock_get_time(cclock, &mts); + mach_port_deallocate(mach_task_self(), cclock); + ts->tv_sec = mts.tv_sec; + ts->tv_nsec = mts.tv_nsec; + return 0; + } + return -1; +} +#endif + namespace __xray { SpinMutex LogMutex; diff --git a/lib/xray/xray_fdr_logging.cc b/lib/xray/xray_fdr_logging.cc index 4b308b27f..1d044c8fd 100644 --- a/lib/xray/xray_fdr_logging.cc +++ b/lib/xray/xray_fdr_logging.cc @@ -38,6 +38,29 @@ #include "xray_tsc.h" #include "xray_utils.h" +#if __MACH__ +#include +#include +enum clockid_t { + CLOCK_MONOTONIC = REALTIME_CLOCK, + CLOCK_REALTIME = REALTIME_CLOCK +}; + +int clock_gettime(clockid_t clock_id, struct timespec *ts) { + if (ts != NULL) { + clock_serv_t cclock; + mach_timespec_t mts; + host_get_clock_service(mach_host_self(), clock_id, &cclock); + clock_get_time(cclock, &mts); + mach_port_deallocate(mach_task_self(), cclock); + ts->tv_sec = mts.tv_sec; + ts->tv_nsec = mts.tv_nsec; + return 0; + } + return -1; +} +#endif + namespace __xray { atomic_sint32_t LoggingStatus = {XRayLogInitStatus::XRAY_LOG_UNINITIALIZED};