unix/unix_mphal: Use CLOCK_MONOTONIC for ticks_ms/us when available.
@@ -187,13 +187,25 @@ void mp_hal_stdout_tx_str(const char *str) {
}
mp_uint_t mp_hal_ticks_ms(void) {
+ #if (defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0) && defined(_POSIX_MONOTONIC_CLOCK)
+ struct timespec tv;
+ clock_gettime(CLOCK_MONOTONIC, &tv);
+ return tv.tv_sec * 1000 + tv.tv_nsec / 1000000;
+ #else
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec * 1000 + tv.tv_usec / 1000;
+ #endif
}
mp_uint_t mp_hal_ticks_us(void) {
+ #if (defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0) && defined(_POSIX_MONOTONIC_CLOCK)
+ struct timespec tv;
+ clock_gettime(CLOCK_MONOTONIC, &tv);
+ return tv.tv_sec * 1000000 + tv.tv_nsec / 1000;
+ #else
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec * 1000000 + tv.tv_usec;
+ #endif
}
