diff --git a/src/system/libroot/posix/time/clock_support.cpp b/src/system/libroot/posix/time/clock_support.cpp index 6f214f8660..b7e44f3cca 100644 --- a/src/system/libroot/posix/time/clock_support.cpp +++ b/src/system/libroot/posix/time/clock_support.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -106,12 +107,10 @@ clock_nanosleep(clockid_t clockID, int flags, const struct timespec* time, struct timespec* remainingTime) { // convert time to microseconds (round up) - if (time->tv_sec < 0 || time->tv_nsec < 0 || time->tv_nsec >= 1000000000) + bigtime_t microSeconds; + if (!timespec_to_bigtime(*time, microSeconds)) RETURN_AND_TEST_CANCEL(EINVAL); - bigtime_t microSeconds = (bigtime_t)time->tv_sec * 1000000 - + (time->tv_nsec + 999) / 1000; - // get timeout flags uint32 timeoutFlags; if ((flags & TIMER_ABSTIME) != 0) {