aboutsummaryrefslogtreecommitdiff
path: root/zencore/timer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zencore/timer.cpp')
-rw-r--r--zencore/timer.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/zencore/timer.cpp b/zencore/timer.cpp
index ee8e1cf9c..08b5e06d2 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();
@@ -56,7 +71,7 @@ TEST_CASE("Timer")
{
uint64_t s0 = GetHifreqTimerValue();
uint64_t t0 = GetCpuTimerValue();
- Sleep(1000);
+ zen::Sleep(1000);
uint64_t s1 = GetHifreqTimerValue();
uint64_t t1 = GetCpuTimerValue();
// double r = double(t1 - t0) / (s1 - s0);