diff options
author | Morgan Deters <mdeters@cs.nyu.edu> | 2013-01-28 15:21:52 -0500 |
---|---|---|
committer | Morgan Deters <mdeters@cs.nyu.edu> | 2013-01-28 15:23:18 -0500 |
commit | 4d19bda6b8ac42b4800a2ccd01541e10b0bbef54 (patch) | |
tree | 0a6e209087ff1dfa584f93351d8e4fdd96d6e13b /src/lib/clock_gettime.c | |
parent | 32b48a0265a416b577f83500a541c9673026e95c (diff) |
Fixes for Win32 (closes bugs 488 and 489)
* timer statistics now supported (closes bug 488)
* use of --mmap doesn't crash anymore (closes bug 489)
Diffstat (limited to 'src/lib/clock_gettime.c')
-rw-r--r-- | src/lib/clock_gettime.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/clock_gettime.c b/src/lib/clock_gettime.c index e9d347438..054a8c112 100644 --- a/src/lib/clock_gettime.c +++ b/src/lib/clock_gettime.c @@ -36,7 +36,7 @@ extern "C" { static double s_clockconv = 0.0; -long clock_gettime(clockid_t which_clock, struct timespec *tp) { +long clock_gettime(clockid_t which_clock, struct timespec* tp) { if( s_clockconv == 0.0 ) { mach_timebase_info_data_t tb; kern_return_t err = mach_timebase_info(&tb); @@ -66,8 +66,17 @@ long clock_gettime(clockid_t which_clock, struct timespec *tp) { #else /* else we're __WIN32__ */ -long clock_gettime(clockid_t which_clock, struct timespec *tp) { - // unsupported on Windows +#include <time.h> +#include <windows.h> + +long clock_gettime(clockid_t which_clock, struct timespec* tp) { + if(tp != NULL) { + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + uint64_t nanos = ((((uint64_t)ft.dwHighDateTime) << 32) | ft.dwLowDateTime) * 100; + tp->tv_sec = nanos / 1000000000ul; + tp->tv_nsec = nanos % 1000000000ul; + } return 0; } |