From 7176f62788fe025720773212b0dea2756a923d13 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Fri, 2 Jun 2023 00:26:41 +0200 Subject: [PATCH] IO: Add current_time_now() function for immediate timestamp 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. Minor changes by committer. --- lib/timer.h | 3 +++ sysdep/unix/io.c | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/timer.h b/lib/timer.h index c5ea430cd..0f87852bd 100644 --- a/lib/timer.h +++ b/lib/timer.h @@ -46,6 +46,9 @@ extern struct timeloop main_timeloop; btime current_time(void); btime current_real_time(void); +/* In sysdep code */ +btime current_time_now(void); + //#define now (current_time() TO_S) //#define now_real (current_real_time() TO_S) extern btime boot_time; diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index e131ca41f..6aedcfb66 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -171,6 +171,19 @@ times_update_real_time(struct timeloop *loop) loop->real_time = ts.tv_sec S + ts.tv_nsec NS; } +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; +} + /** * DOC: Sockets -- 2.47.2