From 482b5b7ecebc85e427c2c839337c7a893ae3e402 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 3 Mar 2012 18:53:37 +0100 Subject: [PATCH] Use new Time class in timed_wait() And simplify the code. No functional change. Signed-off-by: Marco Costalba --- src/misc.cpp | 16 ++++------------ src/misc.h | 2 +- src/types.h | 12 ++++++------ 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/misc.cpp b/src/misc.cpp index 99deedcc..8cfba734 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -138,19 +138,11 @@ void timed_wait(WaitCondition& sleepCond, Lock& sleepLock, int msec) { #if defined(_WIN32) || defined(_WIN64) int tm = msec; #else - struct timeval t; - struct timespec abstime, *tm = &abstime; + timespec ts, *tm = &ts; + uint64_t ms = Time::current_time().msec() + msec; - gettimeofday(&t, NULL); - - abstime.tv_sec = t.tv_sec + (msec / 1000); - abstime.tv_nsec = (t.tv_usec + (msec % 1000) * 1000) * 1000; - - if (abstime.tv_nsec > 1000000000LL) - { - abstime.tv_sec += 1; - abstime.tv_nsec -= 1000000000LL; - } + ts.tv_sec = ms / 1000; + ts.tv_nsec = (ms % 1000) * 1000000LL; #endif cond_timedwait(sleepCond, sleepLock, tm); diff --git a/src/misc.h b/src/misc.h index cda0ef59..7c33211e 100644 --- a/src/misc.h +++ b/src/misc.h @@ -57,7 +57,7 @@ public: static Time current_time() { Time t; t.restart(); return t; } private: - my_time_t t; + sys_time_t t; }; #endif // !defined(MISC_H_INCLUDED) diff --git a/src/types.h b/src/types.h index d907006c..25eef007 100644 --- a/src/types.h +++ b/src/types.h @@ -62,16 +62,16 @@ typedef unsigned __int64 uint64_t; #if defined(_WIN32) || defined(_WIN64) # include -typedef _timeb my_time_t; +typedef _timeb sys_time_t; -inline void system_time(my_time_t* t) { _ftime(t); } -inline uint64_t time_to_msec(const my_time_t& t) { return t.time * 1000 + t.millitm; } +inline void system_time(sys_time_t* t) { _ftime(t); } +inline uint64_t time_to_msec(const sys_time_t& t) { return t.time * 1000 + t.millitm; } #else # include -typedef timeval my_time_t; +typedef timeval sys_time_t; -inline void system_time(my_time_t* t) { gettimeofday(t, NULL); } -inline uint64_t time_to_msec(const my_time_t& t) { return t.tv_sec * 1000 + t.tv_usec / 1000; } +inline void system_time(sys_time_t* t) { gettimeofday(t, NULL); } +inline uint64_t time_to_msec(const sys_time_t& t) { return t.tv_sec * 1000 + t.tv_usec / 1000; } #endif #if defined(_WIN64) -- 2.39.2