From 187dc259dd3cc1bdfaf0d94cccf2deba9943f307 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 10 Jan 2018 08:24:00 +0000 Subject: [Minor] Improve clock accuracy on osx --- src/libutil/util.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/libutil/util.c') diff --git a/src/libutil/util.c b/src/libutil/util.c index bf4678bbe..035369e67 100644 --- a/src/libutil/util.c +++ b/src/libutil/util.c @@ -51,6 +51,9 @@ #endif #ifdef __APPLE__ #include +#include +#include +#include #endif #ifdef WITH_GPERF_TOOLS #include @@ -1836,6 +1839,18 @@ rspamd_get_virtual_ticks (void) # endif res = (double)ts.tv_sec + ts.tv_nsec / 1000000000.; +#elif defined(__APPLE__) + thread_port_t thread = mach_thread_self (); + + mach_msg_type_number_t count = THREAD_BASIC_INFO_COUNT; + thread_basic_info_data_t info; + if (thread_info (thread, THREAD_BASIC_INFO, (thread_info_t)&info, &count) != KERN_SUCCESS) { + return -1; + } + + res = info.user_time.seconds + info.system_time.seconds; + res += ((gdouble)(info.user_time.microseconds + info.system_time.microseconds)) / 1e6; + mach_port_deallocate(mach_task_self(), thread); #else res = clock () / (double)CLOCKS_PER_SEC; #endif -- cgit v1.2.3