From: Libor Peltan Date: Tue, 9 Sep 2025 07:08:11 +0000 (+0200) Subject: contrib/time: add millisecond time functions X-Git-Tag: v3.5.0~13^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8190a51ac65303058c7b22e9049e5558676f6885;p=thirdparty%2Fknot-dns.git contrib/time: add millisecond time functions --- diff --git a/src/contrib/time.c b/src/contrib/time.c index 1ef6a2789c..50ab799a27 100644 --- a/src/contrib/time.c +++ b/src/contrib/time.c @@ -45,6 +45,28 @@ double time_diff_ms(const struct timespec *begin, const struct timespec *end) return (result.tv_sec * 1e3) + (result.tv_nsec / 1e6); } +knot_millis_t knot_millis_from_timespec(struct timespec *ts) +{ + return ts->tv_sec * 1000LLU + ts->tv_nsec / 1000000LLU; +} + +struct timespec knot_millis_to_timespec(knot_millis_t ms) +{ + return (struct timespec){ .tv_sec = ms / 1000LLU, .tv_nsec = (ms % 1000LLU) * 1000000LLU }; +} + +knot_millis_t knot_millis_now(void) +{ + struct timespec ts = time_now(); + return knot_millis_from_timespec(&ts); +} + +void knot_millis_sleep(knot_millis_t ms) +{ + struct timespec ts = knot_millis_to_timespec(ms); + nanosleep(&ts, NULL); +} + typedef struct { const char *format; const char *timespec; diff --git a/src/contrib/time.h b/src/contrib/time.h index 6a353f673d..07cdd2465d 100644 --- a/src/contrib/time.h +++ b/src/contrib/time.h @@ -15,6 +15,8 @@ #define st_mtim st_mtimespec #endif +typedef unsigned long long knot_millis_t; + /*! * \brief Specify output format for knot_time_print(). */ @@ -41,6 +43,14 @@ struct timespec time_diff(const struct timespec *begin, const struct timespec *e */ double time_diff_ms(const struct timespec *begin, const struct timespec *end); +knot_millis_t knot_millis_from_timespec(struct timespec *ts); + +struct timespec knot_millis_to_timespec(knot_millis_t ms); + +knot_millis_t knot_millis_now(void); + +void knot_millis_sleep(knot_millis_t ms); + /*! * \brief Data type for keeping UNIX timestamps. *