From 26993d2d2b2be391adbfaa2ee53ee3e77f323b28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Sun, 13 Dec 2020 13:16:44 +0100 Subject: Support clock_gettime() on OSX El Capitan and earlier --- Compat.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'Compat.c') diff --git a/Compat.c b/Compat.c index 43d02ec7..55be1b1d 100644 --- a/Compat.c +++ b/Compat.c @@ -11,12 +11,18 @@ in the source distribution for its full text. #include #include // IWYU pragma: keep +#include #include #include #include // IWYU pragma: keep #include "XUtils.h" // IWYU pragma: keep +#ifdef HAVE_HOST_GET_CLOCK_SERVICE +#include +#include +#endif + int Compat_faccessat(int dirfd, const char* pathname, @@ -117,3 +123,31 @@ ssize_t Compat_readlinkat(int dirfd, #endif } + +int Compat_clock_monotonic_gettime(struct timespec *tp) { + +#if defined(HAVE_CLOCK_GETTIME) + + return clock_gettime(CLOCK_MONOTONIC, tp); + +#elif defined(HAVE_HOST_GET_CLOCK_SERVICE) + + clock_serv_t cclock; + mach_timespec_t mts; + + host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &cclock); + clock_get_time(cclock, &mts); + mach_port_deallocate(mach_task_self(), cclock); + + tp->tv_sec = mts.tv_sec; + tp->tv_nsec = mts.tv_nsec; + + return 0; + +#else + +#error No Compat_clock_monotonic_gettime() implementation! + +#endif + +} -- cgit v1.2.3