summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard Nyberg <rnyberg@murmeldjur.se>2009-02-08 19:24:55 +0100
committerRichard Nyberg <rnyberg@murmeldjur.se>2009-02-08 19:26:25 +0100
commit9f4d2b0662ba9f8756413a9ba46ec588c0242154 (patch)
tree33d9843ca27d0fd1bf80e7e92c38c368fd85a061
parentcf5f386df1bda0a98e27b5df4fd411549d240196 (diff)
downloadbtpd-9f4d2b0662ba9f8756413a9ba46ec588c0242154.tar.gz
btpd-9f4d2b0662ba9f8756413a9ba46ec588c0242154.zip
evtimer_gettime was broken on MacOs.
-rw-r--r--evloop/timer.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/evloop/timer.c b/evloop/timer.c
index d115959..13fb5e8 100644
--- a/evloop/timer.c
+++ b/evloop/timer.c
@@ -25,12 +25,15 @@ int
 evtimer_gettime(struct timespec *ts)
 {
     uint64_t nsecs;
+    static double nsmul;
     static mach_timebase_info_data_t nsratio = { 0, 0 };
-    if (nsratio.denom == 0)
+    if (nsratio.denom == 0) {
         mach_timebase_info(&nsratio);
-    nsecs = mach_absolute_time() * nsratio.numer / nsratio.denom;
-    ts->tv_sec = nsecs / 1000000000;
-    ts->tv_nsec = nsecs - ts->tv_sec * 1000000000;
+	nsmul = (double)nsratio.numer / nsratio.denom;
+    }
+    nsecs = mach_absolute_time() * nsmul;
+    ts->tv_sec = nsecs / 1000000000ULL;
+    ts->tv_nsec = nsecs - ts->tv_sec * 1000000000ULL;
     return 0;
 }