From e57d23d6f11c1262a096f2135e64a6a81d0ca938 Mon Sep 17 00:00:00 2001 From: Paolo Capriotti Date: Sat, 24 Mar 2012 02:19:43 +0000 Subject: Use monotonic time function for darwin (#5865) --- rts/posix/GetTime.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'rts/posix/GetTime.c') diff --git a/rts/posix/GetTime.c b/rts/posix/GetTime.c index 4abc82f6b9..549b3b0878 100644 --- a/rts/posix/GetTime.c +++ b/rts/posix/GetTime.c @@ -71,6 +71,17 @@ Time getProcessElapsedTime(void) clock_gettime(CLOCK_ID, &ts); return SecondsToTime(ts.tv_sec) + NSToTime(ts.tv_nsec); +#elif defined(darwin_HOST_OS) + uint64_t time = mach_absolute_time(); + static double scaling_factor = 0.0; + + if (scaling_factor == 0.0) { + mach_timebase_info_data_t info; + (void) mach_timebase_info(&info); + scaling_factor = (double)info.numer / (double)info.denom; + } + + return (Time)((double)time * scaling_factor); #else struct timeval tv; -- cgit v1.2.1