1*6777b538SAndroid Build Coastguard Worker // Copyright 2019 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_TRACING_TRACE_TIME_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_TRACING_TRACE_TIME_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 9*6777b538SAndroid Build Coastguard Worker #include "third_party/perfetto/protos/perfetto/common/builtin_clock.pbzero.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker namespace base { 12*6777b538SAndroid Build Coastguard Worker namespace tracing { 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ 15*6777b538SAndroid Build Coastguard Worker BUILDFLAG(IS_FUCHSIA) 16*6777b538SAndroid Build Coastguard Worker // Linux, Android, and Fuchsia all use CLOCK_MONOTONIC. See crbug.com/166153 17*6777b538SAndroid Build Coastguard Worker // about efforts to unify base::TimeTicks across all platforms. 18*6777b538SAndroid Build Coastguard Worker constexpr perfetto::protos::pbzero::BuiltinClock kTraceClockId = 19*6777b538SAndroid Build Coastguard Worker perfetto::protos::pbzero::BUILTIN_CLOCK_MONOTONIC; 20*6777b538SAndroid Build Coastguard Worker #else 21*6777b538SAndroid Build Coastguard Worker // Mac and Windows TimeTicks advance when sleeping, so are closest to BOOTTIME 22*6777b538SAndroid Build Coastguard Worker // in behavior. 23*6777b538SAndroid Build Coastguard Worker // TODO(eseckler): Support specifying Mac/Win platform clocks in BuiltinClock. 24*6777b538SAndroid Build Coastguard Worker constexpr perfetto::protos::pbzero::BuiltinClock kTraceClockId = 25*6777b538SAndroid Build Coastguard Worker perfetto::protos::pbzero::BUILTIN_CLOCK_BOOTTIME; 26*6777b538SAndroid Build Coastguard Worker #endif 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker // Returns CLOCK_BOOTTIME on systems that support it, otherwise falls back to 29*6777b538SAndroid Build Coastguard Worker // TRACE_TIME_TICKS_NOW(). 30*6777b538SAndroid Build Coastguard Worker int64_t TraceBootTicksNow(); 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker } // namespace tracing 33*6777b538SAndroid Build Coastguard Worker } // namespace base 34*6777b538SAndroid Build Coastguard Worker 35*6777b538SAndroid Build Coastguard Worker #endif // BASE_TRACING_TRACE_TIME_H_ 36