windows: Provide a time_monotonic() based on GetTickCount64()

This commit is contained in:
Martin Willi 2013-10-18 14:19:32 +02:00
parent 965e846cc3
commit 4de7401a98
1 changed files with 21 additions and 0 deletions

View File

@ -15,6 +15,13 @@
*/
#define _GNU_SOURCE /* for memrchr */
#ifdef WIN32
/* for GetTickCount64, Windows 7 */
# define _WIN32_WINNT 0x0601
#endif
#include "utils.h"
#include <sys/stat.h>
#include <string.h>
#include <stdio.h>
@ -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 */
}
/**