From: Martin Willi Date: Fri, 18 Oct 2013 12:19:32 +0000 (+0200) Subject: windows: Provide a time_monotonic() based on GetTickCount64() X-Git-Tag: 5.2.0dr6~24^2~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4de7401a980db8e1b074e74723a8aa84c8621d16;p=thirdparty%2Fstrongswan.git windows: Provide a time_monotonic() based on GetTickCount64() --- 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 */ } /**