diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2009-02-08 19:24:55 +0100 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2009-02-08 19:26:25 +0100 |
| commit | 9f4d2b0662ba9f8756413a9ba46ec588c0242154 (patch) | |
| tree | 33d9843ca27d0fd1bf80e7e92c38c368fd85a061 | |
| parent | cf5f386df1bda0a98e27b5df4fd411549d240196 (diff) | |
| download | btpd-9f4d2b0662ba9f8756413a9ba46ec588c0242154.tar.gz btpd-9f4d2b0662ba9f8756413a9ba46ec588c0242154.zip | |
evtimer_gettime was broken on MacOs.
| -rw-r--r-- | evloop/timer.c | 11 |
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; } |