Commit ce602d08 authored by Asmod4n's avatar Asmod4n Committed by Luca Boccassi

change macOS < 10.12 clock to SYSTEM_CLOCK, fixes #2537 (#2538)

* change macOS < 10.12 clock to SYSTEM_CLOCK, fixes #2537

* remove clock_id option from alt_clock_gettime since we always want a monotonic clock.

* update header definition for alt_clock_gettime

* pass clock definition down to host_get_clock_service for macOS < 10.12

* change to monotonic clocks
parent 45f4a400
......@@ -60,15 +60,9 @@
int alt_clock_gettime (int clock_id, timespec *ts)
{
// The clock_id specified is not supported on this system.
if (clock_id != CLOCK_REALTIME) {
errno = EINVAL;
return -1;
}
clock_serv_t cclock;
mach_timespec_t mts;
host_get_clock_service (mach_host_self (), CALENDAR_CLOCK, &cclock);
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;
......@@ -163,7 +157,7 @@ uint64_t zmq::clock_t::now_us ()
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);
int rc = alt_clock_gettime (SYSTEM_CLOCK, &tv);
#else
int rc = clock_gettime (CLOCK_MONOTONIC, &tv);
#endif
......@@ -250,7 +244,7 @@ uint64_t zmq::clock_t::rdtsc ()
#else
struct timespec ts;
#if defined ZMQ_HAVE_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101200 // less than macOS 10.12
alt_clock_gettime (CLOCK_MONOTONIC, &ts);
alt_clock_gettime (SYSTEM_CLOCK, &ts);
#else
clock_gettime (CLOCK_MONOTONIC, &ts);
#endif
......
......@@ -214,9 +214,9 @@ namespace zmq
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);
alt_clock_gettime(SYSTEM_CLOCK, &timeout);
#else
clock_gettime(CLOCK_REALTIME, &timeout);
clock_gettime(CLOCK_MONOTONIC, &timeout);
#endif
timeout.tv_sec += timeout_ / 1000;
......
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