Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Unified Diff: util/win/time.cc

Issue 1119393003: win: Add support for CPUTimes and StartTime to snapshot (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@generate-dump
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« util/win/time.h ('K') | « util/win/time.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/win/time.cc
diff --git a/util/win/time.cc b/util/win/time.cc
index 1957b6c929607b793c2a8b54bbce8927f4ea2cd2..3b56feeaf5ab9e166825bfcc5c1380f15d95ac93 100644
--- a/util/win/time.cc
+++ b/util/win/time.cc
@@ -15,15 +15,16 @@
#include "util/win/time.h"
#include <inttypes.h>
-#include <windows.h>
#include "base/logging.h"
namespace crashpad {
-void GetTimeOfDay(timeval* tv) {
- FILETIME filetime;
- GetSystemTimeAsFileTime(&filetime);
+namespace {
+const uint64_t kMicrosecondsPerSecond = static_cast<uint64_t>(1E6);
+} // namespace
+
+timeval FiletimeToTimevalEpoch(const FILETIME& filetime) {
uint64_t t = (static_cast<uint64_t>(filetime.dwHighDateTime) << 32) |
filetime.dwLowDateTime;
t /= 10; // 100 nanosecond intervals to microseconds.
@@ -32,11 +33,28 @@ void GetTimeOfDay(timeval* tv) {
// day. It's not entirely clear, but it appears that these are solar seconds,
// not SI seconds, so there are no leap seconds to be considered.
const uint64_t kNumSecondsFrom1601To1970 = (369 * 365 + 89) * 86400ULL;
- const uint64_t kMicrosecondsPerSecond = static_cast<uint64_t>(1E6);
DCHECK_GE(t, kNumSecondsFrom1601To1970 * kMicrosecondsPerSecond);
t -= kNumSecondsFrom1601To1970 * kMicrosecondsPerSecond;
- tv->tv_sec = static_cast<long>(t / kMicrosecondsPerSecond);
- tv->tv_usec = static_cast<long>(t % kMicrosecondsPerSecond);
+ timeval tv;
+ tv.tv_sec = static_cast<long>(t / kMicrosecondsPerSecond);
+ tv.tv_usec = static_cast<long>(t % kMicrosecondsPerSecond);
+ return tv;
+}
+
+timeval FiletimeToTimevalAmount(const FILETIME& filetime) {
Mark Mentovai 2015/05/04 21:29:24 I’m on the fence about having these two functions
scottmg 2015/05/05 16:45:48 I was too. I made a MicrosecondsToTimeval helper.
+ uint64_t t = (static_cast<uint64_t>(filetime.dwHighDateTime) << 32) |
+ filetime.dwLowDateTime;
+ t /= 10; // 100 nanosecond intervals to microseconds.
+ timeval tv;
+ tv.tv_sec = static_cast<long>(t / kMicrosecondsPerSecond);
+ tv.tv_usec = static_cast<long>(t % kMicrosecondsPerSecond);
+ return tv;
+}
+
+void GetTimeOfDay(timeval* tv) {
+ FILETIME filetime;
+ GetSystemTimeAsFileTime(&filetime);
+ *tv = FiletimeToTimevalEpoch(filetime);
}
} // namespace crashpad
« util/win/time.h ('K') | « util/win/time.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698