diff options
| author | Martin Ridgers <[email protected]> | 2021-09-14 16:32:53 +0200 |
|---|---|---|
| committer | Martin Ridgers <[email protected]> | 2021-09-14 16:32:53 +0200 |
| commit | b86f6631d7fd7a332e33496e1e89614e2644f60e (patch) | |
| tree | 88757ecfd413ddf4e2c16cafa9d73f38355b72a0 /zencore/timer.cpp | |
| parent | Missing include (diff) | |
| download | zen-b86f6631d7fd7a332e33496e1e89614e2644f60e.tar.xz zen-b86f6631d7fd7a332e33496e1e89614e2644f60e.zip | |
Timer API implementation for Linux
Diffstat (limited to 'zencore/timer.cpp')
| -rw-r--r-- | zencore/timer.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/zencore/timer.cpp b/zencore/timer.cpp index ee8e1cf9c..f67822e73 100644 --- a/zencore/timer.cpp +++ b/zencore/timer.cpp @@ -3,26 +3,41 @@ #include <doctest/doctest.h> #include <zencore/thread.h> #include <zencore/timer.h> -#include <zencore/windows.h> +#if ZEN_PLATFORM_WINDOWS +# include <zencore/windows.h> +#elif ZEN_PLATFORM_LINUX +# include <time.h> +# include <unistd.h> +#endif namespace zen { uint64_t GetHifreqTimerValue() { +#if ZEN_PLATFORM_WINDOWS LARGE_INTEGER li; QueryPerformanceCounter(&li); return li.QuadPart; +#else + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (uint64_t(ts.tv_sec) * 1000000ull) + (uint64_t(ts.tv_nsec) / 1000ull); +#endif } uint64_t internalGetHifreqTimerFrequency() { +#if ZEN_PLATFORM_WINDOWS LARGE_INTEGER li; QueryPerformanceFrequency(&li); return li.QuadPart; +#else + return 1000000ull; +#endif } static uint64_t qpcFreq = internalGetHifreqTimerFrequency(); @@ -43,6 +58,15 @@ GetHifreqTimerFrequencySafe() } ////////////////////////////////////////////////////////////////////////// + +#if !ZEN_PLATFORM_WINDOWS +void Sleep(uint32_t ms) +{ + usleep(ms * 1000U); +} +#endif + +////////////////////////////////////////////////////////////////////////// // // Testing related code follows... // |