summaryrefslogtreecommitdiff
path: root/source/api_wrappers/linux/OS.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/api_wrappers/linux/OS.cpp')
-rw-r--r--source/api_wrappers/linux/OS.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/source/api_wrappers/linux/OS.cpp b/source/api_wrappers/linux/OS.cpp
index 55c82bd..6ed6425 100644
--- a/source/api_wrappers/linux/OS.cpp
+++ b/source/api_wrappers/linux/OS.cpp
@@ -5,6 +5,7 @@
#include <time.h>
#include <errno.h>
+#include <sys/time.h>
#include "Types.h"
#include "OS.h"
@@ -31,29 +32,30 @@ void OS::Sleep(DWORD dwMilliseconds)
time_t OS::GetSystemTimeInMs()
{
- timespec systemTime;
- clock_gettime(CLOCK_REALTIME, &systemTime);
- return (systemTime.tv_sec * 1000) + (systemTime.tv_nsec / 1000000);
+ struct timeval current_time;
+
+ gettimeofday(&current_time, NULL);
+
+ return (current_time.tv_sec * 1000) + (current_time.tv_usec / 1000);
}
timespec OS::GetAbsoluteTime(DWORD dwTimeout)
{
timespec absolute_time;
- timespec current_time;
-
+ timeval current_time;
long timeout_nsec;
- clock_gettime(CLOCK_REALTIME, &current_time);
+ gettimeofday(&current_time, NULL);
absolute_time.tv_sec = current_time.tv_sec + (dwTimeout / 1000);
timeout_nsec = (dwTimeout % 1000) * 1000000L;
- if ((1000000000 - current_time.tv_nsec) < timeout_nsec) {
+ if ((1000000000 - current_time.tv_usec * 1000) < timeout_nsec) {
// overflow will occur!
absolute_time.tv_sec++;
}
- absolute_time.tv_nsec = (current_time.tv_nsec + timeout_nsec) % 1000000000;
+ absolute_time.tv_nsec = (current_time.tv_usec * 1000 + timeout_nsec) % 1000000000;
return absolute_time;
}