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

Unified Diff: util/win/time.cc

Issue 1137503002: util/win/time.cc: Add and use FiletimeToMicroseconds() (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: 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 | « no previous file | 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 8e4760bb13cd92ad700a357fb4f83fea0120fe11..1665b9c6efbb9b25746576694d84c52374c31744 100644
--- a/util/win/time.cc
+++ b/util/win/time.cc
@@ -24,34 +24,36 @@ namespace {
const uint64_t kMicrosecondsPerSecond = static_cast<uint64_t>(1E6);
-timeval MicrosecondsToTimeval(uint64_t t) {
+uint64_t FiletimeToMicroseconds(const FILETIME& filetime) {
+ uint64_t t = (static_cast<uint64_t>(filetime.dwHighDateTime) << 32) |
+ filetime.dwLowDateTime;
+ return t / 10; // 100 nanosecond intervals to microseconds.
+}
+
+timeval MicrosecondsToTimeval(uint64_t microseconds) {
timeval tv;
- tv.tv_sec = static_cast<long>(t / kMicrosecondsPerSecond);
- tv.tv_usec = static_cast<long>(t % kMicrosecondsPerSecond);
+ tv.tv_sec = static_cast<long>(microseconds / kMicrosecondsPerSecond);
+ tv.tv_usec = static_cast<long>(microseconds % 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.
+ uint64_t microseconds = FiletimeToMicroseconds(filetime);
+
// Windows epoch is 1601-01-01, and FILETIME ticks are 100 nanoseconds.
// 1601 to 1970 is 369 years + 89 leap days = 134774 days * 86400 seconds per
// 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;
- DCHECK_GE(t, kNumSecondsFrom1601To1970 * kMicrosecondsPerSecond);
- t -= kNumSecondsFrom1601To1970 * kMicrosecondsPerSecond;
- return MicrosecondsToTimeval(t);
+ DCHECK_GE(microseconds, kNumSecondsFrom1601To1970 * kMicrosecondsPerSecond);
+ microseconds -= kNumSecondsFrom1601To1970 * kMicrosecondsPerSecond;
+ return MicrosecondsToTimeval(microseconds);
}
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);
+ return MicrosecondsToTimeval(FiletimeToMicroseconds(filetime));
}
void GetTimeOfDay(timeval* tv) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698