/* ================================================== */
+#if HAVE_CLOCK_GETTIME
+int
+clock_gettime(clockid_t clock_id, struct timespec *ts)
+{
+ /* Check that the system clock_gettime symbol is actually present before
+ attempting to call it. The symbol is available in macOS 10.12
+ and later. */
+
+ static int init = 0;
+ static int (*sys_clock_gettime)(clockid_t, struct timespec *) = NULL;
+ int ret = 0;
+
+ if (!init) {
+ sys_clock_gettime = dlsym(RTLD_NEXT, "clock_gettime");
+ init = 1;
+ }
+
+ if (sys_clock_gettime != NULL) {
+ ret = sys_clock_gettime(clock_id, ts);
+ } else {
+ struct timeval tv;
+
+ if (gettimeofday(&tv, NULL) < 0)
+ LOG_FATAL("gettimeofday() failed : %s", strerror(errno));
+
+ UTI_TimevalToTimespec(&tv, ts);
+ }
+ return ret;
+}
+#endif
+
+/* ================================================== */
+
void
SYS_MacOSX_Initialise(void)
{