uint64_t now_mono_time(void)
{
uint64_t ret = 0;
-#if defined(_POSIX_TIMERS) && defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0) && defined(_POSIX_MONOTONIC_CLOCK)
+#if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0) && defined(_POSIX_MONOTONIC_CLOCK)
struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC, &ts);
- ret = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+ if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0)
+ ret = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
#endif
return ret;
}
#if defined(CLOCK_MONOTONIC_COARSE)
struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC_COARSE, &ts);
- return (ts.tv_sec * 1000000000ULL + ts.tv_nsec);
-#else
+ if (clock_gettime(CLOCK_MONOTONIC_COARSE, &ts) == 0)
+ return (ts.tv_sec * 1000000000ULL + ts.tv_nsec);
+#endif
/* fallback to regular mono time,
* returns 0 if not supported
*/
return now_mono_time();
-#endif
}
/* returns the current thread's cumulated CPU time in nanoseconds if supported, otherwise zero */
uint64_t ret = 0;
#if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0) && defined(_POSIX_THREAD_CPUTIME)
struct timespec ts;
- clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
- ret = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+ if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) == 0)
+ ret = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
#endif
return ret;
}
uint64_t ret = 0;
#if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0) && defined(_POSIX_THREAD_CPUTIME)
struct timespec ts;
- clock_gettime(per_thread_clock_id[thr], &ts);
- ret = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+ if (clock_gettime(per_thread_clock_id[thr], &ts) == 0)
+ ret = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
#endif
return ret;
}