diff options
-rw-r--r-- | lib/util/time.c | 21 | ||||
-rw-r--r-- | lib/util/time.h | 5 |
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/util/time.c b/lib/util/time.c index 5ecf93cb77..ed3b4f8e30 100644 --- a/lib/util/time.c +++ b/lib/util/time.c @@ -65,6 +65,27 @@ _PUBLIC_ void clock_gettime_mono(struct timespec *tp) } } +/** +a wrapper to preferably get the monotonic time in seconds +as this is only second resolution we can use the cached +(and much faster) COARS clock variant +**/ +_PUBLIC_ time_t time_mono(time_t *t) +{ + struct timespec tp; + int rc = -1; +#ifdef CLOCK_MONOTONIC_COARSE + rc = clock_gettime(CLOCK_MONOTONIC_COARSE,&tp); +#endif + if (rc != 0) { + clock_gettime_mono(&tp); + } + if (t != NULL) { + *t = tp.tv_sec; + } + return tp.tv_sec; +} + #define TIME_FIXUP_CONSTANT 11644473600LL diff --git a/lib/util/time.h b/lib/util/time.h index 720a262b29..345382b80a 100644 --- a/lib/util/time.h +++ b/lib/util/time.h @@ -56,6 +56,11 @@ a wrapper to preferably get the monotonic time _PUBLIC_ void clock_gettime_mono(struct timespec *tp); /** +a wrapper to preferably get the monotonic time in s +**/ +_PUBLIC_ time_t time_mono(time_t *t); + +/** interpret an 8 byte "filetime" structure to a time_t It's originally in "100ns units since jan 1st 1601" **/ |