From 905a18aafefbe04aa2beceb84885c29aa156b975 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 24 Sep 2020 14:37:01 +1000 Subject: [PATCH] unix,windows: Implement mp_hal_time_ns using gettimeofday. This provides microsecond accuracy. Signed-off-by: Damien George --- ports/unix/unix_mphal.c | 5 +++-- ports/windows/windows_mphal.c | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ports/unix/unix_mphal.c b/ports/unix/unix_mphal.c index f43067f646..3fe2fa9fec 100644 --- a/ports/unix/unix_mphal.c +++ b/ports/unix/unix_mphal.c @@ -216,6 +216,7 @@ mp_uint_t mp_hal_ticks_us(void) { } uint64_t mp_hal_time_ns(void) { - time_t now = time(NULL); - return (uint64_t)now * 1000000000ULL; + struct timeval tv; + gettimeofday(&tv, NULL); + return (uint64_t)tv.tv_sec * 1000000000ULL + (uint64_t)tv.tv_usec * 1000ULL; } diff --git a/ports/windows/windows_mphal.c b/ports/windows/windows_mphal.c index 8ed087358f..b442b59147 100644 --- a/ports/windows/windows_mphal.c +++ b/ports/windows/windows_mphal.c @@ -255,3 +255,9 @@ mp_uint_t mp_hal_ticks_cpu(void) { return value.LowPart; #endif } + +uint64_t mp_hal_time_ns(void) { + struct timeval tv; + gettimeofday(&tv, NULL); + return (uint64_t)tv.tv_sec * 1000000000ULL + (uint64_t)tv.tv_usec * 1000ULL; +}