summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/time.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/time.c b/src/time.c
index b29c2eb..582bc9d 100644
--- a/src/time.c
+++ b/src/time.c
@@ -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;
}