}
void msleep(uint32_t n) {
- nsleep(1000000 * n);
+ nsleep(1000000 * (uint64_t)n);
}
#endif // _WIN32
-#ifdef __MACH__
+#ifdef __APPLE__
+#ifndef CLOCK_MONOTONIC
#define CLOCK_MONOTONIC (1)
+#endif
+#ifndef CLOCK_REALTIME
#define CLOCK_REALTIME (2)
+#endif
#include <sys/time.h>
#include <mach/clock.h>
} else if (clk_id == CLOCK_MONOTONIC) {
static uint64_t clock_start_time = 0;
- static mach_timebase_info_data_t timebase_ifo = {0, 0};
+ static mach_timebase_info_data_t timebase_info = {0, 0};
uint64_t now = mach_absolute_time();
if (clock_start_time == 0) {
- //kern_return_t mach_status = mach_timebase_info(&timebase_ifo);
- // appease "unused variable" warning for release builds
- //(void)mach_status;
+ mach_timebase_info(&timebase_info);
clock_start_time = now;
}
now = (uint64_t)((double)(now - clock_start_time)
- * (double)timebase_ifo.numer
- / (double)timebase_ifo.denom);
+ * (double)timebase_info.numer
+ / (double)timebase_info.denom);
t->tv_sec = now / 1000000000;
t->tv_nsec = now % 1000000000;
#include <sys/timeb.h>
struct _timeb t;
_ftime(&t);
- return 1000 * t.time + t.millitm;
+ return 1000 * (uint64_t)t.time + t.millitm;
// NORMAL CODE (use _ftime_s)
//struct _timeb t;