Commit 0d032c99 authored by Luca Boccassi's avatar Luca Boccassi Committed by GitHub

Merge pull request #2176 from robertcastle/master

clock_gettime is now defined in macOS 10.12 SDK
parents 2e926435 0dfb32a2
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
#include <time.h> #include <time.h>
#include <sys/time.h> #include <sys/time.h>
int clock_gettime (int clock_id, timespec *ts) int alt_clock_gettime (int clock_id, timespec *ts)
{ {
// The clock_id specified is not supported on this system. // The clock_id specified is not supported on this system.
if (clock_id != CLOCK_REALTIME) { if (clock_id != CLOCK_REALTIME) {
...@@ -152,7 +152,12 @@ uint64_t zmq::clock_t::now_us () ...@@ -152,7 +152,12 @@ uint64_t zmq::clock_t::now_us ()
// Use POSIX clock_gettime function to get precise monotonic time. // Use POSIX clock_gettime function to get precise monotonic time.
struct timespec tv; struct timespec tv;
#if defined ZMQ_HAVE_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101200 // less than macOS 10.12
int rc = alt_clock_gettime (CLOCK_MONOTONIC, &tv);
#else
int rc = clock_gettime (CLOCK_MONOTONIC, &tv); int rc = clock_gettime (CLOCK_MONOTONIC, &tv);
#endif
// Fix case where system has clock_gettime but CLOCK_MONOTONIC is not supported. // Fix case where system has clock_gettime but CLOCK_MONOTONIC is not supported.
// This should be a configuration check, but I looked into it and writing an // This should be a configuration check, but I looked into it and writing an
// AC_FUNC_CLOCK_MONOTONIC seems beyond my powers. // AC_FUNC_CLOCK_MONOTONIC seems beyond my powers.
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
#include <mach/mach.h> #include <mach/mach.h>
#include <time.h> #include <time.h>
#include <sys/time.h> #include <sys/time.h>
int clock_gettime (int clock_id, timespec *ts); int alt_clock_gettime (int clock_id, timespec *ts);
#ifndef CLOCK_REALTIME #ifndef CLOCK_REALTIME
#define CLOCK_REALTIME 0 #define CLOCK_REALTIME 0
#endif #endif
......
...@@ -159,7 +159,12 @@ namespace zmq ...@@ -159,7 +159,12 @@ namespace zmq
if (timeout_ != -1) { if (timeout_ != -1) {
struct timespec timeout; struct timespec timeout;
#if defined ZMQ_HAVE_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101200 // less than macOS 10.12
alt_clock_gettime(CLOCK_REALTIME, &timeout);
#else
clock_gettime(CLOCK_REALTIME, &timeout); clock_gettime(CLOCK_REALTIME, &timeout);
#endif
timeout.tv_sec += timeout_ / 1000; timeout.tv_sec += timeout_ / 1000;
timeout.tv_nsec += (timeout_ % 1000) * 1000000; timeout.tv_nsec += (timeout_ % 1000) * 1000000;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment