diff options
Diffstat (limited to 'src/rt/sync')
| -rw-r--r-- | src/rt/sync/timer.cpp | 15 | ||||
| -rw-r--r-- | src/rt/sync/timer.h | 3 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/rt/sync/timer.cpp b/src/rt/sync/timer.cpp index e6fe3688893..3af441c3950 100644 --- a/src/rt/sync/timer.cpp +++ b/src/rt/sync/timer.cpp @@ -9,7 +9,7 @@ timer::timer() { #if __WIN32__ uint64_t ticks_per_second; QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_second); - _ticks_per_us = ticks_per_second / 1000000; + _ticks_per_ns = ticks_per_second / 1000; #endif reset(0); } @@ -41,7 +41,7 @@ timer::has_timed_out() { } uint64_t -timer::get_time() { +timer::nano_time() { #ifdef __APPLE__ uint64_t time = mach_absolute_time(); mach_timebase_info_data_t info = {0, 0}; @@ -49,18 +49,23 @@ timer::get_time() { mach_timebase_info(&info); } uint64_t time_nano = time * (info.numer / info.denom); - return time_nano / 1000; + return time_nano; #elif __WIN32__ uint64_t ticks; QueryPerformanceCounter((LARGE_INTEGER *)&ticks); - return ticks / _ticks_per_us; + return ticks / _ticks_per_ns; #else timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); - return (ts.tv_sec * 1000000000LL + ts.tv_nsec) / 1000; + return (ts.tv_sec * 1000000000LL + ts.tv_nsec); #endif } +uint64_t +timer::get_time() { + return nano_time() / 1000; +} + timer::~timer() { // Nop. } diff --git a/src/rt/sync/timer.h b/src/rt/sync/timer.h index aae098a1119..6d833396cf9 100644 --- a/src/rt/sync/timer.h +++ b/src/rt/sync/timer.h @@ -11,7 +11,7 @@ private: uint64_t _timeout; uint64_t get_time(); #if __WIN32__ - uint64_t _ticks_per_us; + uint64_t _ticks_per_ns; #endif public: timer(); @@ -20,6 +20,7 @@ public: double get_elapsed_time_in_ms(); int64_t get_timeout(); bool has_timed_out(); + uint64_t nano_time(); virtual ~timer(); }; |
