xref: /aosp_15_r20/external/cronet/base/tracing/trace_time.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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