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

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: fix whitespace error Created 5 years, 7 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
« no previous file with comments | « 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..8e4760bb13cd92ad700a357fb4f83fea0120fe11 100644
--- a/util/win/time.cc
+++ b/util/win/time.cc
@@ -15,15 +15,25 @@
#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);
+
+timeval MicrosecondsToTimeval(uint64_t t) {
+ timeval tv;
+ tv.tv_sec = static_cast<long>(t / kMicrosecondsPerSecond);
+ tv.tv_usec = static_cast<long>(t % kMicrosecondsPerSecond);
+ return tv;
+}
+
+} // 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 +42,22 @@ 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);
+ return MicrosecondsToTimeval(t);
+}
+
+timeval FiletimeToTimevalInterval(const FILETIME& filetime) {
+ uint64_t t = (static_cast<uint64_t>(filetime.dwHighDateTime) << 32) |
+ filetime.dwLowDateTime;
+ t /= 10; // 100 nanosecond intervals to microseconds.
+ return MicrosecondsToTimeval(t);
+}
+
+void GetTimeOfDay(timeval* tv) {
+ FILETIME filetime;
+ GetSystemTimeAsFileTime(&filetime);
+ *tv = FiletimeToTimevalEpoch(filetime);
}
} // namespace crashpad
« no previous file with comments | « util/win/time.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698