xref: /aosp_15_r20/external/crosvm/cros_tracing/src/perfetto.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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