From 4de7401a980db8e1b074e74723a8aa84c8621d16 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Fri, 18 Oct 2013 14:19:32 +0200 Subject: [PATCH] windows: Provide a time_monotonic() based on GetTickCount64() --- src/libstrongswan/utils/utils.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/libstrongswan/utils/utils.c b/src/libstrongswan/utils/utils.c index 70fd1cb312..dc0608627a 100644 --- a/src/libstrongswan/utils/utils.c +++ b/src/libstrongswan/utils/utils.c @@ -15,6 +15,13 @@ */ #define _GNU_SOURCE /* for memrchr */ +#ifdef WIN32 +/* for GetTickCount64, Windows 7 */ +# define _WIN32_WINNT 0x0601 +#endif + +#include "utils.h" + #include #include #include @@ -441,6 +448,19 @@ void closefrom(int lowfd) */ time_t time_monotonic(timeval_t *tv) { +#ifdef WIN32 + ULONGLONG ms; + time_t s; + + ms = GetTickCount64(); + s = ms / 1000; + if (tv) + { + tv->tv_sec = s; + tv->tv_usec = (ms - (s * 1000)) * 1000; + } + return s; +#else /* !WIN32 */ #if defined(HAVE_CLOCK_GETTIME) && \ (defined(HAVE_CONDATTR_CLOCK_MONOTONIC) || \ defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)) @@ -472,6 +492,7 @@ time_t time_monotonic(timeval_t *tv) return -1; } return tv->tv_sec; +#endif /* !WIN32 */ } /** -- 2.47.2