summaryrefslogtreecommitdiff
path: root/source/api_wrappers/linux/CWaitableObjectCollection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/api_wrappers/linux/CWaitableObjectCollection.cpp')
-rw-r--r--source/api_wrappers/linux/CWaitableObjectCollection.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/source/api_wrappers/linux/CWaitableObjectCollection.cpp b/source/api_wrappers/linux/CWaitableObjectCollection.cpp
index e48fd1c..9b47bbc 100644
--- a/source/api_wrappers/linux/CWaitableObjectCollection.cpp
+++ b/source/api_wrappers/linux/CWaitableObjectCollection.cpp
@@ -9,6 +9,7 @@
#include "Types.h"
#include "CWaitableObjectCollection.h"
#include <assert.h>
+#include <sys/time.h>
CWaitableObjectCollection::CWaitableObjectCollection()
{
@@ -30,11 +31,9 @@ CWaitableObject *CWaitableObjectCollection::Wait(DWORD dwTimeout)
vector<CWaitableObject *>::iterator it;
DWORD dwTimePassed = 0;
struct timespec ts;
- struct timespec curr_time, start_time;
+ struct timeval curr_time, start_time;
- if (-1 == clock_gettime(CLOCK_REALTIME, &start_time)) {
- return NULL;
- }
+ gettimeofday(&start_time, NULL);
do {
for (it = m_objs.begin(); it != m_objs.end(); ++it) {
@@ -54,12 +53,10 @@ CWaitableObject *CWaitableObjectCollection::Wait(DWORD dwTimeout)
// coverity[returned_null]
while (-1 == nanosleep(&ts, &ts) && EINTR == errno);
- if (-1 == clock_gettime(CLOCK_REALTIME, &curr_time)) {
- return NULL;
- }
+ gettimeofday(&curr_time, NULL);
dwTimePassed = 1000 * (curr_time.tv_sec - start_time.tv_sec) + \
- (curr_time.tv_nsec - start_time.tv_nsec) / 1000000;
+ (curr_time.tv_usec - start_time.tv_usec) / 1000;
} while (dwTimePassed < dwTimeout);