diff options
author | Björn Jacke <bj@sernet.de> | 2010-09-06 20:27:24 +0200 |
---|---|---|
committer | Björn Jacke <bj@sernet.de> | 2010-09-07 20:29:13 +0200 |
commit | b428952eefd250d6d4ce77ad89325e9803940d11 (patch) | |
tree | b831b1535c3e451042a8d4e8fbf5a8f8509dea09 | |
parent | e64e3985688e57a882e0e128b256ec5f84c6f67a (diff) | |
download | samba-b428952eefd250d6d4ce77ad89325e9803940d11.tar.gz samba-b428952eefd250d6d4ce77ad89325e9803940d11.tar.bz2 samba-b428952eefd250d6d4ce77ad89325e9803940d11.zip |
lib/util: add time_mono() for monotonic time a la time()
-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" **/ |