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

Unified Diff: base/time/time.h

Issue 2891583002: Fuchsia port of base/time, with some refactoring of POSIX time modules. (Closed)
Patch Set: REBASE before commit. Created 3 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 | « base/BUILD.gn ('k') | base/time/time_conversion_posix.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/time/time.h
diff --git a/base/time/time.h b/base/time/time.h
index ff8bdde3dc51e30cebc32a4e27c6a229ea79acff..2578dff097cdb717e16f7d4b81abb56865febfdc 100644
--- a/base/time/time.h
+++ b/base/time/time.h
@@ -63,6 +63,10 @@
#include "base/numerics/safe_math.h"
#include "build/build_config.h"
+#if defined(OS_FUCHSIA)
+#include <magenta/types.h>
+#endif
+
#if defined(OS_MACOSX)
#include <CoreFoundation/CoreFoundation.h>
// Avoid Mac system header macro leak.
@@ -413,22 +417,19 @@ inline TimeClass operator+(TimeDelta delta, TimeClass t) {
// monotonically non-decreasing and are subject to large amounts of skew.
class BASE_EXPORT Time : public time_internal::TimeBase<Time> {
public:
- // The representation of Jan 1, 1970 UTC in microseconds since the
- // platform-dependent epoch.
- static const int64_t kTimeTToMicrosecondsOffset;
-
-#if !defined(OS_WIN)
- // On Mac & Linux, this value is the delta from the Windows epoch of 1601 to
- // the Posix delta of 1970. This is used for migrating between the old
- // 1970-based epochs to the new 1601-based ones. It should be removed from
- // this global header and put in the platform-specific ones when we remove the
- // migration code.
- static const int64_t kWindowsEpochDeltaMicroseconds;
-#else
+ // Offset of UNIX epoch (1970-01-01 00:00:00 UTC) from Windows FILETIME epoch
+ // (1601-01-01 00:00:00 UTC), in microseconds. This value is derived from the
+ // following: ((1970-1601)*365+89)*24*60*60*1000*1000, where 89 is the number
+ // of leap year days between 1601 and 1970: (1970-1601)/4 excluding 1700,
+ // 1800, and 1900.
+ static constexpr int64_t kTimeTToMicrosecondsOffset =
+ INT64_C(11644473600000000);
+
+#if defined(OS_WIN)
// To avoid overflow in QPC to Microseconds calculations, since we multiply
// by kMicrosecondsPerSecond, then the QPC value should not exceed
// (2^63 - 1) / 1E6. If it exceeds that threshold, we divide then multiply.
- enum : int64_t{kQPCOverflowThreshold = 0x8637BD05AF7};
+ static constexpr int64_t kQPCOverflowThreshold = INT64_C(0x8637BD05AF7);
#endif
// Represents an exploded time that can be formatted nicely. This is kind of
@@ -701,6 +702,7 @@ class BASE_EXPORT TimeTicks : public time_internal::TimeBase<TimeTicks> {
public:
// The underlying clock used to generate new TimeTicks.
enum class Clock {
+ FUCHSIA_MX_CLOCK_MONOTONIC,
LINUX_CLOCK_MONOTONIC,
IOS_CF_ABSOLUTE_TIME_MINUS_KERN_BOOTTIME,
MAC_MACH_ABSOLUTE_TIME,
@@ -730,6 +732,12 @@ class BASE_EXPORT TimeTicks : public time_internal::TimeBase<TimeTicks> {
// considered to have an ambiguous ordering.)
static bool IsConsistentAcrossProcesses() WARN_UNUSED_RESULT;
+#if defined(OS_FUCHSIA)
+ // Creates a TimeTicks from a mx_time_t value. Note that the mx_time_t value
+ // is interpreted in terms of the MX_CLOCK_MONOTONIC clock.
+ static TimeTicks FromMXTime(mx_time_t nanos_since_boot);
+#endif
+
#if defined(OS_WIN)
// Translates an absolute QPC timestamp into a TimeTicks value. The returned
// value has the same origin as Now(). Do NOT attempt to use this if
@@ -791,7 +799,8 @@ class BASE_EXPORT ThreadTicks : public time_internal::TimeBase<ThreadTicks> {
// Returns true if ThreadTicks::Now() is supported on this system.
static bool IsSupported() WARN_UNUSED_RESULT {
#if (defined(_POSIX_THREAD_CPUTIME) && (_POSIX_THREAD_CPUTIME >= 0)) || \
- (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_ANDROID)
+ (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_ANDROID) || \
+ defined(OS_FUCHSIA)
return true;
#elif defined(OS_WIN)
return IsSupportedWin();
« no previous file with comments | « base/BUILD.gn ('k') | base/time/time_conversion_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698