#cmakedefine01 HAVE_WORKING_GETTIMEOFDAY
#cmakedefine01 HAVE_WORKING_CLOCK_GETTIME
#cmakedefine01 HAVE_CLOCK_MONOTONIC
+#cmakedefine01 HAVE_MACH_CLOCK_MONOTONIC
#cmakedefine01 STATVFS64_PROTOTYPE_BROKEN
#cmakedefine01 HAVE_MMAP_DEV_ZERO
#cmakedefine01 MMAP_IGNORES_HINT
}" HAVE_CLOCK_MONOTONIC)
check_cxx_source_runs("
#include <stdlib.h>
+#include <mach/mach.h>
+#include <mach/clock.h>
+
+int main()
+{
+ int ret;
+ clock_serv_t clock;
+ mach_timespec_t mts;
+ host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &clock);
+ ret = clock_get_time(clock, &mts);
+ exit(ret);
+}" HAVE_MACH_CLOCK_MONOTONIC)
+check_cxx_source_runs("
+#include <stdlib.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
+#if HAVE_MACH_CLOCK_MONOTONIC
+#include <mach/mach.h>
+#include <mach/clock.h>
+#endif
+
SET_DEFAULT_DEBUG_CHANNEL(MISC);
/*++
}
retval = (ts.tv_sec * tccSecondsToMillieSeconds)+(ts.tv_nsec / tccMillieSecondsToNanoSeconds);
}
+#elif HAVE_MACH_CLOCK_MONOTONIC
+ {
+ kern_return_t machRet;
+ clock_serv_t clock;
+ mach_timespec_t mts;
+
+ host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &clock);
+ if((machRet = clock_get_time(clock, &mts)) != KERN_SUCCESS)
+ {
+ ASSERT("clock_get_time() failed: %d\n", machRet);
+ goto EXIT;
+ }
+ mach_port_deallocate(mach_task_self(), clock);
+ retval = (mts.tv_sec * tccSecondsToMillieSeconds)+(mts.tv_nsec / tccMillieSecondsToNanoSeconds);
+ }
#elif HAVE_GETHRTIME
{
retval = (ULONGLONG)(gethrtime() / tccMillieSecondsToNanoSeconds);