From 7fc1cbb640885cca6c3737cfd451440225ac9ca7 Mon Sep 17 00:00:00 2001
From: Marc Hoersken <info@marc-hoersken.de>
Date: Sun, 14 Dec 2014 18:32:41 +0100
Subject: [PATCH] tool_util.c: Use GetTickCount64 if it is available

---
 src/tool_util.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/tool_util.c b/src/tool_util.c
index 00d205ebc..890122916 100644
--- a/src/tool_util.c
+++ b/src/tool_util.c
@@ -33,10 +33,19 @@ struct timeval tool_tvnow(void)
   ** GetTickCount() is available on _all_ Windows versions from W95 up
   ** to nowadays. Returns milliseconds elapsed since last system boot,
   ** increases monotonically and wraps once 49.7 days have elapsed.
+  **
+  ** GetTickCount64() is available on Windows version from Windows Vista
+  ** and Windows Server 2008 up to nowadays. The resolution of the
+  ** function is limited to the resolution of the system timer, which
+  ** is typically in the range of 10 milliseconds to 16 milliseconds.
   */
   struct timeval now;
+#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600)
+  ULONGLONG milliseconds = GetTickCount64();
+#else
   DWORD milliseconds = GetTickCount();
-  now.tv_sec = milliseconds / 1000;
+#endif
+  now.tv_sec = (long)(milliseconds / 1000);
   now.tv_usec = (milliseconds % 1000) * 1000;
   return now;
 }