From: Vsevolod Stakhov Date: Wed, 10 Jan 2018 08:24:00 +0000 (+0000) Subject: [Minor] Improve clock accuracy on osx X-Git-Tag: 1.7.0~298 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=187dc259dd3cc1bdfaf0d94cccf2deba9943f307;p=thirdparty%2Frspamd.git [Minor] Improve clock accuracy on osx --- diff --git a/src/libutil/util.c b/src/libutil/util.c index bf4678bbef..035369e673 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