fixed: the timeout value of pthread_cond_timedwait has to be referenced to CLOCK_REALTIME
authorBob van Loosen <bob.loosen@gmail.com>
Sun, 26 Feb 2012 22:16:58 +0000 (23:16 +0100)
committerBob van Loosen <bob.loosen@gmail.com>
Sun, 26 Feb 2012 22:36:32 +0000 (23:36 +0100)
src/lib/platform/posix/os-threads.h

index 5216ffe7793ac40bea9c28bf93ffbb6e7cba986b..c37beed2bef14f5a0e998c30c953d43968210e2e 100644 (file)
@@ -48,13 +48,12 @@ namespace PLATFORM
 
   inline struct timespec GetAbsTime(uint64_t iIncreaseBy = 0)
   {
-    struct timespec abstime;
-    struct timeval now;
-    gettimeofday(&now, NULL);
-    iIncreaseBy += now.tv_usec / 1000;
-    abstime.tv_sec = now.tv_sec + (time_t)(iIncreaseBy / 1000);
-    abstime.tv_nsec = (int32_t)((iIncreaseBy % (uint32_t)1000) * (uint32_t)1000000);
-    return abstime;
+    struct timespec now;
+    clock_gettime(CLOCK_REALTIME, &now);
+    now.tv_nsec += iIncreaseBy % 1000 * 1000000;
+    now.tv_sec  += iIncreaseBy / 1000 + now.tv_nsec / 1000000000;
+    now.tv_nsec %= 1000000000;
+    return now;
   }
 
   typedef pthread_t thread_t;