X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Ftimer.c;h=bfc182cb5ba7e8a8167f03bfadf6855bfc43ee9e;hb=HEAD;hp=55f5f9cf2905e82492dbbbdaf9e17d6a9fd5d4bf;hpb=6d80ba13a502a0d60dcd6b47a32c244ce2b253b8;p=umurmur.git diff --git a/src/timer.c b/src/timer.c index 55f5f9c..bfc182c 100644 --- a/src/timer.c +++ b/src/timer.c @@ -1,5 +1,5 @@ -/* Copyright (C) 2009-2013, Martin Johansson - Copyright (C) 2005-2013, Thorvald Natvig +/* Copyright (C) 2009-2014, Martin Johansson + Copyright (C) 2005-2014, Thorvald Natvig All rights reserved. @@ -28,20 +28,35 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include #include #include +#ifdef __MACH__ +#include +#include +#endif + #include "timer.h" static uint64_t Timer_now() { struct timespec ts; uint64_t e; - - clock_gettime(CLOCK_MONOTONIC, &ts); - e = ts.tv_sec * 1000000LL; - e += ts.tv_nsec / 1000LL; //convert to microseconds + +#ifdef __MACH__ + clock_serv_t clock; + mach_timespec_t mts; + host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &clock); + clock_get_time(clock, &mts); + mach_port_deallocate(mach_task_self(), clock); + ts.tv_sec = mts.tv_sec; + ts.tv_nsec = mts.tv_nsec; +#else + clock_gettime(CLOCK_MONOTONIC, &ts); +#endif + e = ts.tv_sec * 1000000LL; + e += ts.tv_nsec / 1000LL; //convert to microseconds return e; }