From 071354da5b201cbdcd5481940e5c4731f8bc8c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Tue, 19 Apr 2022 00:24:14 +0200 Subject: [PATCH] lib/timer: Add current_time_now() function for immediate timestamp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a current_time_now() function which gets an immediate monotonic timestamp instead of using the cached value from the event loop. This is useful for callers that need precise times, such as the Babel RTT measurement code. Signed-off-by: Toke Høiland-Jørgensen --- lib/timer.c | 13 +++++++++++++ lib/timer.h | 1 + 2 files changed, 14 insertions(+) diff --git a/lib/timer.c b/lib/timer.c index c47e0bbc..a96b051a 100644 --- a/lib/timer.c +++ b/lib/timer.c @@ -76,6 +76,19 @@ current_time(void) return timeloop_current()->last_time; } +btime +current_time_now(void) +{ + struct timespec ts; + int rv; + + rv = clock_gettime(CLOCK_MONOTONIC, &ts); + if (rv < 0) + die("clock_gettime: %m"); + + return ts.tv_sec S + ts.tv_nsec NS; +} + btime current_real_time(void) { diff --git a/lib/timer.h b/lib/timer.h index c5ea430c..bfd9904e 100644 --- a/lib/timer.h +++ b/lib/timer.h @@ -44,6 +44,7 @@ static inline timer *timers_first(struct timeloop *loop) extern struct timeloop main_timeloop; btime current_time(void); +btime current_time_now(void); btime current_real_time(void); //#define now (current_time() TO_S)