diff options
author | Vincent Sanders <vince@kyllikki.org> | 2014-11-26 23:41:33 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2014-11-26 23:41:33 +0000 |
commit | b8e45926f66fd928bccf2b03377f20788f52774b (patch) | |
tree | 0f1d4aa8f322160c5f6e0852ca90ddc3460a6346 /src/time.c | |
parent | 5470716c0d36351175407aa833c86495195569b8 (diff) | |
download | libnsutils-b8e45926f66fd928bccf2b03377f20788f52774b.tar.gz libnsutils-b8e45926f66fd928bccf2b03377f20788f52774b.tar.bz2 |
move to using POSIX monotonic clock if available
Diffstat (limited to 'src/time.c')
-rw-r--r-- | src/time.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -14,19 +14,27 @@ #include <stdint.h> #include <stdlib.h> +#include <unistd.h> #include <sys/time.h> +#include <time.h> #include "nsutils/time.h" /* exported interface documented in nsutils/time.h */ nsuerror nsu_getmonotonic_ms(uint64_t *current) { +#if (_POSIX_TIMERS > 0) && (defined _POSIX_MONOTONIC_CLOCK) + struct timespec tp; + clock_gettime(CLOCK_MONOTONIC, &tp); + *current = (tp.tv_sec * 1000) + (tp.tv_nsec / 1000000); +#else +#warning "Using dodgy gettimeofday() fallback" /** \todo Implement this properly! */ struct timeval tv; gettimeofday(&tv, NULL); *current = (tv.tv_sec * 1000) + (tv.tv_usec / 1000); - +#endif return NSUERROR_OK; } |