1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2023 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker
5*bb4ee6a4SAndroid Build Coastguard Worker pub use cros_tracing_types::static_strings::StaticString;
6*bb4ee6a4SAndroid Build Coastguard Worker pub use perfetto::*;
7*bb4ee6a4SAndroid Build Coastguard Worker
8*bb4ee6a4SAndroid Build Coastguard Worker setup_perfetto!(
9*bb4ee6a4SAndroid Build Coastguard Worker cros_tracing,
10*bb4ee6a4SAndroid Build Coastguard Worker crosvm,
11*bb4ee6a4SAndroid Build Coastguard Worker "General crosvm trace points",
12*bb4ee6a4SAndroid Build Coastguard Worker perfetto_tags!(),
13*bb4ee6a4SAndroid Build Coastguard Worker block,
14*bb4ee6a4SAndroid Build Coastguard Worker "Block device trace points",
15*bb4ee6a4SAndroid Build Coastguard Worker perfetto_tags!("devices"),
16*bb4ee6a4SAndroid Build Coastguard Worker gpu,
17*bb4ee6a4SAndroid Build Coastguard Worker "GPU device trace points",
18*bb4ee6a4SAndroid Build Coastguard Worker perfetto_tags!("devices"),
19*bb4ee6a4SAndroid Build Coastguard Worker gpu_display,
20*bb4ee6a4SAndroid Build Coastguard Worker "GPU display device trace points",
21*bb4ee6a4SAndroid Build Coastguard Worker perfetto_tags!("devices"),
22*bb4ee6a4SAndroid Build Coastguard Worker virtqueue,
23*bb4ee6a4SAndroid Build Coastguard Worker "General virtqueue trace points",
24*bb4ee6a4SAndroid Build Coastguard Worker perfetto_tags!("devices"),
25*bb4ee6a4SAndroid Build Coastguard Worker net,
26*bb4ee6a4SAndroid Build Coastguard Worker "Net device trace points",
27*bb4ee6a4SAndroid Build Coastguard Worker perfetto_tags!("devices"),
28*bb4ee6a4SAndroid Build Coastguard Worker future,
29*bb4ee6a4SAndroid Build Coastguard Worker "Async trace points",
30*bb4ee6a4SAndroid Build Coastguard Worker perfetto_tags!()
31*bb4ee6a4SAndroid Build Coastguard Worker );
32*bb4ee6a4SAndroid Build Coastguard Worker
33*bb4ee6a4SAndroid Build Coastguard Worker // We offset host builtin clock values by 32 so they can be correctly translated to guest clocks.
34*bb4ee6a4SAndroid Build Coastguard Worker // See go/bstar-perfetto
35*bb4ee6a4SAndroid Build Coastguard Worker pub const HOST_GUEST_CLOCK_ID_OFFSET: u32 = 32;
36*bb4ee6a4SAndroid Build Coastguard Worker
init()37*bb4ee6a4SAndroid Build Coastguard Worker pub fn init() {
38*bb4ee6a4SAndroid Build Coastguard Worker register_categories();
39*bb4ee6a4SAndroid Build Coastguard Worker // This tracing crate only supports system backend for now. If we want crosvm to start/end
40*bb4ee6a4SAndroid Build Coastguard Worker // a trace then we'd want to add some functions in this crate for that.
41*bb4ee6a4SAndroid Build Coastguard Worker perfetto::init_tracing(perfetto::BackendType::System);
42*bb4ee6a4SAndroid Build Coastguard Worker }
43*bb4ee6a4SAndroid Build Coastguard Worker
init_in_process()44*bb4ee6a4SAndroid Build Coastguard Worker pub fn init_in_process() {
45*bb4ee6a4SAndroid Build Coastguard Worker register_categories();
46*bb4ee6a4SAndroid Build Coastguard Worker perfetto::init_tracing(perfetto::BackendType::InProcess);
47*bb4ee6a4SAndroid Build Coastguard Worker }
48*bb4ee6a4SAndroid Build Coastguard Worker
49*bb4ee6a4SAndroid Build Coastguard Worker // TODO(b/263902691): implement for Perfetto.
50*bb4ee6a4SAndroid Build Coastguard Worker #[macro_export]
51*bb4ee6a4SAndroid Build Coastguard Worker macro_rules! push_descriptors {
52*bb4ee6a4SAndroid Build Coastguard Worker ($fd_vec:expr) => {};
53*bb4ee6a4SAndroid Build Coastguard Worker }
54*bb4ee6a4SAndroid Build Coastguard Worker
55*bb4ee6a4SAndroid Build Coastguard Worker // TODO(b/263902691): implement for Perfetto.
56*bb4ee6a4SAndroid Build Coastguard Worker #[macro_export]
57*bb4ee6a4SAndroid Build Coastguard Worker macro_rules! trace_simple_print {
58*bb4ee6a4SAndroid Build Coastguard Worker ($($t:tt)+) => {};
59*bb4ee6a4SAndroid Build Coastguard Worker }
60