diff options
author | <shinichiro.hamaji@gmail.com> | 2009-04-09 07:49:44 +0000 |
---|---|---|
committer | <shinichiro.hamaji@gmail.com> | 2009-04-09 07:49:44 +0000 |
commit | ddfd1884b6f3c40bfcb71bdcad88026a2ea5f58c (patch) | |
tree | abf2e4ac94d42c9be99a23bdd9a2bcfe2796ef33 /src | |
parent | 8cf64cc167db391d6e46b6863a85925ff8021f27 (diff) | |
download | glog-ddfd1884b6f3c40bfcb71bdcad88026a2ea5f58c.tar.gz glog-ddfd1884b6f3c40bfcb71bdcad88026a2ea5f58c.tar.bz2 glog-ddfd1884b6f3c40bfcb71bdcad88026a2ea5f58c.zip |
A bug fix for Windows: Use GetSystemTimeAsFileTime instead of GetSystemTime. SYSTEMTIME's mSecond is not a unix time but like tm.tm_sec.
git-svn-id: https://google-glog.googlecode.com/svn/trunk@45 eb4d4688-79bd-11dd-afb4-1d65580434c0
Diffstat (limited to 'src')
-rw-r--r-- | src/utilities.cc | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/utilities.cc b/src/utilities.cc index 5a0322c..3efe779 100644 --- a/src/utilities.cc +++ b/src/utilities.cc @@ -184,18 +184,35 @@ bool is_default_thread() { } } +#ifdef OS_WINDOWS +struct timeval { + long tv_sec, tv_usec; +}; + +// Based on: http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/os_win32.c&q=GetSystemTimeAsFileTime%20license:bsd +// See COPYING for copyright information. +static int gettimeofday(struct timeval *tv, void* tz) { +#define EPOCHFILETIME (116444736000000000ULL) + FILETIME ft; + LARGE_INTEGER li; + uint64 tt; + + GetSystemTimeAsFileTime(&ft); + li.LowPart = ft.dwLowDateTime; + li.HighPart = ft.dwHighDateTime; + tt = (li.QuadPart - EPOCHFILETIME) / 10; + tv->tv_sec = tt / 1000000; + tv->tv_usec = tt % 1000000; + + return 0; +} +#endif + int64 CycleClock_Now() { // TODO(hamaji): temporary impementation - it might be too slow. -#ifdef OS_WINDOWS - SYSTEMTIME now; - GetSystemTime(&now); - return (static_cast<int64>(now.wSecond) * 1000000 + - static_cast<int64>(now.wMilliseconds) * 1000); -#else struct timeval tv; gettimeofday(&tv, NULL); return static_cast<int64>(tv.tv_sec) * 1000000 + tv.tv_usec; -#endif } int64 UsecToCycles(int64 usec) { |