aboutsummaryrefslogtreecommitdiff
path: root/zencore/timer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zencore/timer.cpp')
-rw-r--r--zencore/timer.cpp26
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...
//