timespec qAbsTimespec(const timespec &t) { timespec tmp = t; if (tmp.tv_sec < 0) { tmp.tv_sec = -tmp.tv_sec - 1; tmp.tv_nsec -= 1000000000; } if (tmp.tv_sec == 0 && tmp.tv_nsec < 0) { tmp.tv_nsec = -tmp.tv_nsec; } return normalizedTimespec(tmp); }
void qt_abstime_for_timeout(timespec *ts, int timeout) { #ifdef Q_OS_MAC // on Mac, qt_gettime() (on qelapsedtimer_mac.cpp) returns ticks related to the Mach absolute time // that doesn't work with pthread // Mac also doesn't have clock_gettime struct timeval tv; gettimeofday(&tv, 0); ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; #else *ts = qt_gettime(); #endif ts->tv_sec += timeout / 1000; ts->tv_nsec += timeout % 1000 * Q_UINT64_C(1000) * 1000; normalizedTimespec(*ts); }