Skip to main content

perfetto_trace_protos/
perfetto.protos.rs

1// Begin of protos/perfetto/common/ftrace_descriptor.proto
2
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct FtraceDescriptor {
5    /// Report the available atrace categories.
6    ///
7    /// Used by Traceur via `perfetto --query`.
8    #[prost(message, repeated, tag="1")]
9    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
10}
11/// Nested message and enum types in `FtraceDescriptor`.
12pub mod ftrace_descriptor {
13    #[derive(Clone, PartialEq, ::prost::Message)]
14    pub struct AtraceCategory {
15        #[prost(string, optional, tag="1")]
16        pub name: ::core::option::Option<::prost::alloc::string::String>,
17        #[prost(string, optional, tag="2")]
18        pub description: ::core::option::Option<::prost::alloc::string::String>,
19    }
20}
21// End of protos/perfetto/common/ftrace_descriptor.proto
22
23// Begin of protos/perfetto/common/gpu_counter_descriptor.proto
24
25/// Description of GPU counters.
26/// This message is sent by a GPU counter producer to specify the counters
27/// available in the hardware.
28#[derive(Clone, PartialEq, ::prost::Message)]
29pub struct GpuCounterDescriptor {
30    #[prost(message, repeated, tag="1")]
31    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
32    #[prost(message, repeated, tag="2")]
33    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
34    #[prost(message, repeated, tag="6")]
35    pub counter_groups: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterGroupSpec>,
36    /// optional.  Minimum sampling period supported by the producer in
37    /// nanoseconds.
38    #[prost(uint64, optional, tag="3")]
39    pub min_sampling_period_ns: ::core::option::Option<u64>,
40    /// optional.  Maximum sampling period supported by the producer in
41    /// nanoseconds.
42    #[prost(uint64, optional, tag="4")]
43    pub max_sampling_period_ns: ::core::option::Option<u64>,
44    /// optional.  The producer supports counter sampling by instrumenting the
45    /// command buffer.
46    #[prost(bool, optional, tag="5")]
47    pub supports_instrumented_sampling: ::core::option::Option<bool>,
48    /// optional.  The producer supports selecting counters by name via
49    /// GpuCounterConfig.counter_names. Not all producers support this; Android
50    /// GPU producers typically do not.
51    #[prost(bool, optional, tag="7")]
52    pub supports_counter_names: ::core::option::Option<bool>,
53    /// optional.  The producer supports glob patterns in
54    /// GpuCounterConfig.counter_names for matching multiple counters by name.
55    #[prost(bool, optional, tag="8")]
56    pub supports_counter_name_globs: ::core::option::Option<bool>,
57}
58/// Nested message and enum types in `GpuCounterDescriptor`.
59pub mod gpu_counter_descriptor {
60    #[derive(Clone, PartialEq, ::prost::Message)]
61    pub struct GpuCounterSpec {
62        #[prost(uint32, optional, tag="1")]
63        pub counter_id: ::core::option::Option<u32>,
64        #[prost(string, optional, tag="2")]
65        pub name: ::core::option::Option<::prost::alloc::string::String>,
66        #[prost(string, optional, tag="3")]
67        pub description: ::core::option::Option<::prost::alloc::string::String>,
68        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
69        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
70        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
71        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
72        #[prost(bool, optional, tag="9")]
73        pub select_by_default: ::core::option::Option<bool>,
74        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
75        pub groups: ::prost::alloc::vec::Vec<i32>,
76        #[prost(enumeration="gpu_counter_spec::ValueDirection", optional, tag="11")]
77        pub value_direction: ::core::option::Option<i32>,
78        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
79        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
80    }
81    /// Nested message and enum types in `GpuCounterSpec`.
82    pub mod gpu_counter_spec {
83        /// Direction of the time interval that each emitted sample applies to.
84        /// A GPU counter is sampled at discrete timestamps, but its value really
85        /// represents a measurement over some interval around that timestamp
86        /// (e.g. average GPU utilization over the sampling window). This field
87        /// tells trace processor on which side of the timestamp that interval
88        /// lies, which controls where the value is drawn in the UI.
89        ///
90        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
91        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
92        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
93        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
94        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
95        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
96        #[repr(i32)]
97        pub enum ValueDirection {
98            /// Treated as BACKWARDS_LOOKING (the historical default).
99            Unspecified = 0,
100            /// The value applies to the interval ending at this event's timestamp.
101            /// This is the convention used by AGI and most existing GPU producers,
102            /// where a sample reports what happened during the window leading up
103            /// to the timestamp.
104            BackwardsLooking = 1,
105            /// The value applies to the interval starting at this event's
106            /// timestamp, matching standard Perfetto counters. Producers that emit
107            /// explicit zero samples to denote "no activity from here on" should
108            /// use this so the zero is not back-propagated over earlier non-zero
109            /// samples (<https://github.com/google/perfetto/issues/5683>).
110            ForwardsLooking = 2,
111        }
112        impl ValueDirection {
113            /// String value of the enum field names used in the ProtoBuf definition.
114            ///
115            /// The values are not transformed in any way and thus are considered stable
116            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
117            pub fn as_str_name(&self) -> &'static str {
118                match self {
119                    ValueDirection::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
120                    ValueDirection::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
121                    ValueDirection::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
122                }
123            }
124        }
125        #[derive(Clone, PartialEq, ::prost::Oneof)]
126        pub enum PeakValue {
127            #[prost(int64, tag="5")]
128            IntPeakValue(i64),
129            #[prost(double, tag="6")]
130            DoublePeakValue(f64),
131        }
132    }
133    /// Allow producer to group counters into block to represent counter islands.
134    /// A capacity may be specified to indicate the number of counters that can be
135    /// enable simultaneously in that block.
136    #[derive(Clone, PartialEq, ::prost::Message)]
137    pub struct GpuCounterBlock {
138        /// required. Unique ID for the counter group.
139        #[prost(uint32, optional, tag="1")]
140        pub block_id: ::core::option::Option<u32>,
141        /// optional. Number of counters supported by the block. No limit if unset.
142        #[prost(uint32, optional, tag="2")]
143        pub block_capacity: ::core::option::Option<u32>,
144        /// optional. Name of block.
145        #[prost(string, optional, tag="3")]
146        pub name: ::core::option::Option<::prost::alloc::string::String>,
147        /// optional. Description for the block.
148        #[prost(string, optional, tag="4")]
149        pub description: ::core::option::Option<::prost::alloc::string::String>,
150        /// list of counters that are part of the block.
151        #[prost(uint32, repeated, packed="false", tag="5")]
152        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
153    }
154    /// Allow producer to define custom counter groups. Unlike the fixed
155    /// GpuCounterGroup enum (which provides broad categories), these groups
156    /// let the producer define hardware-specific groupings that the UI uses
157    /// to organize counter tracks. Can also be used to provide display names
158    /// and descriptions for the fixed GpuCounterGroup enum values by setting
159    /// group_id to the enum value.
160    #[derive(Clone, PartialEq, ::prost::Message)]
161    pub struct GpuCounterGroupSpec {
162        /// required. Unique ID for this group within the descriptor.
163        #[prost(uint32, optional, tag="1")]
164        pub group_id: ::core::option::Option<u32>,
165        /// optional. Display name for the group.
166        #[prost(string, optional, tag="2")]
167        pub name: ::core::option::Option<::prost::alloc::string::String>,
168        /// optional. Description of the group.
169        #[prost(string, optional, tag="3")]
170        pub description: ::core::option::Option<::prost::alloc::string::String>,
171        /// Counters that belong directly to this group (by counter_id).
172        #[prost(uint32, repeated, packed="false", tag="4")]
173        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
174    }
175    /// Logical groups for a counter.  This is used in the UI to present the
176    /// related counters together.
177    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
178    #[repr(i32)]
179    pub enum GpuCounterGroup {
180        Unclassified = 0,
181        System = 1,
182        Vertices = 2,
183        Fragments = 3,
184        Primitives = 4,
185        /// Includes counters relating to caching and bandwidth.
186        Memory = 5,
187        Compute = 6,
188        RayTracing = 7,
189    }
190    impl GpuCounterGroup {
191        /// String value of the enum field names used in the ProtoBuf definition.
192        ///
193        /// The values are not transformed in any way and thus are considered stable
194        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
195        pub fn as_str_name(&self) -> &'static str {
196            match self {
197                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
198                GpuCounterGroup::System => "SYSTEM",
199                GpuCounterGroup::Vertices => "VERTICES",
200                GpuCounterGroup::Fragments => "FRAGMENTS",
201                GpuCounterGroup::Primitives => "PRIMITIVES",
202                GpuCounterGroup::Memory => "MEMORY",
203                GpuCounterGroup::Compute => "COMPUTE",
204                GpuCounterGroup::RayTracing => "RAY_TRACING",
205            }
206        }
207    }
208    /// next id: 41
209    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
210    #[repr(i32)]
211    pub enum MeasureUnit {
212        None = 0,
213        Bit = 1,
214        Kilobit = 2,
215        Megabit = 3,
216        Gigabit = 4,
217        Terabit = 5,
218        Petabit = 6,
219        Byte = 7,
220        Kilobyte = 8,
221        Megabyte = 9,
222        Gigabyte = 10,
223        Terabyte = 11,
224        Petabyte = 12,
225        Hertz = 13,
226        Kilohertz = 14,
227        Megahertz = 15,
228        Gigahertz = 16,
229        Terahertz = 17,
230        Petahertz = 18,
231        Nanosecond = 19,
232        Microsecond = 20,
233        Millisecond = 21,
234        Second = 22,
235        Minute = 23,
236        Hour = 24,
237        Vertex = 25,
238        Pixel = 26,
239        Triangle = 27,
240        Primitive = 38,
241        Fragment = 39,
242        Milliwatt = 28,
243        Watt = 29,
244        Kilowatt = 30,
245        Joule = 31,
246        Volt = 32,
247        Ampere = 33,
248        Celsius = 34,
249        Fahrenheit = 35,
250        Kelvin = 36,
251        /// Values should be out of 100.
252        Percent = 37,
253        Instruction = 40,
254    }
255    impl MeasureUnit {
256        /// String value of the enum field names used in the ProtoBuf definition.
257        ///
258        /// The values are not transformed in any way and thus are considered stable
259        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
260        pub fn as_str_name(&self) -> &'static str {
261            match self {
262                MeasureUnit::None => "NONE",
263                MeasureUnit::Bit => "BIT",
264                MeasureUnit::Kilobit => "KILOBIT",
265                MeasureUnit::Megabit => "MEGABIT",
266                MeasureUnit::Gigabit => "GIGABIT",
267                MeasureUnit::Terabit => "TERABIT",
268                MeasureUnit::Petabit => "PETABIT",
269                MeasureUnit::Byte => "BYTE",
270                MeasureUnit::Kilobyte => "KILOBYTE",
271                MeasureUnit::Megabyte => "MEGABYTE",
272                MeasureUnit::Gigabyte => "GIGABYTE",
273                MeasureUnit::Terabyte => "TERABYTE",
274                MeasureUnit::Petabyte => "PETABYTE",
275                MeasureUnit::Hertz => "HERTZ",
276                MeasureUnit::Kilohertz => "KILOHERTZ",
277                MeasureUnit::Megahertz => "MEGAHERTZ",
278                MeasureUnit::Gigahertz => "GIGAHERTZ",
279                MeasureUnit::Terahertz => "TERAHERTZ",
280                MeasureUnit::Petahertz => "PETAHERTZ",
281                MeasureUnit::Nanosecond => "NANOSECOND",
282                MeasureUnit::Microsecond => "MICROSECOND",
283                MeasureUnit::Millisecond => "MILLISECOND",
284                MeasureUnit::Second => "SECOND",
285                MeasureUnit::Minute => "MINUTE",
286                MeasureUnit::Hour => "HOUR",
287                MeasureUnit::Vertex => "VERTEX",
288                MeasureUnit::Pixel => "PIXEL",
289                MeasureUnit::Triangle => "TRIANGLE",
290                MeasureUnit::Primitive => "PRIMITIVE",
291                MeasureUnit::Fragment => "FRAGMENT",
292                MeasureUnit::Milliwatt => "MILLIWATT",
293                MeasureUnit::Watt => "WATT",
294                MeasureUnit::Kilowatt => "KILOWATT",
295                MeasureUnit::Joule => "JOULE",
296                MeasureUnit::Volt => "VOLT",
297                MeasureUnit::Ampere => "AMPERE",
298                MeasureUnit::Celsius => "CELSIUS",
299                MeasureUnit::Fahrenheit => "FAHRENHEIT",
300                MeasureUnit::Kelvin => "KELVIN",
301                MeasureUnit::Percent => "PERCENT",
302                MeasureUnit::Instruction => "INSTRUCTION",
303            }
304        }
305    }
306}
307// End of protos/perfetto/common/gpu_counter_descriptor.proto
308
309// Begin of protos/perfetto/common/track_event_descriptor.proto
310
311#[derive(Clone, PartialEq, ::prost::Message)]
312pub struct TrackEventCategory {
313    #[prost(string, optional, tag="1")]
314    pub name: ::core::option::Option<::prost::alloc::string::String>,
315    #[prost(string, optional, tag="2")]
316    pub description: ::core::option::Option<::prost::alloc::string::String>,
317    #[prost(string, repeated, tag="3")]
318    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
319}
320#[derive(Clone, PartialEq, ::prost::Message)]
321pub struct TrackEventDescriptor {
322    #[prost(message, repeated, tag="1")]
323    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
324}
325// End of protos/perfetto/common/track_event_descriptor.proto
326
327// Begin of protos/perfetto/protovm/vm_program.proto
328
329#[derive(Clone, PartialEq, ::prost::Message)]
330pub struct VmProgram {
331    #[prost(uint32, optional, tag="1")]
332    pub version: ::core::option::Option<u32>,
333    #[prost(message, repeated, tag="2")]
334    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
335}
336#[derive(Clone, PartialEq, ::prost::Message)]
337pub struct VmInstruction {
338    #[prost(enumeration="vm_instruction::AbortLevel", optional, tag="6")]
339    pub abort_level: ::core::option::Option<i32>,
340    /// Sub-instructions executed if the current instruction succeeds
341    #[prost(message, repeated, tag="7")]
342    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
343    #[prost(oneof="vm_instruction::Operation", tags="1, 2, 3, 4, 5")]
344    pub operation: ::core::option::Option<vm_instruction::Operation>,
345}
346/// Nested message and enum types in `VmInstruction`.
347pub mod vm_instruction {
348    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
349    #[repr(i32)]
350    pub enum AbortLevel {
351        /// Skip current instruction but execute following ones
352        SkipCurrentInstruction = 1,
353        /// Skip current instruction as well as following ones (default)
354        SkipCurrentInstructionAndBreakOuter = 2,
355        /// Abort whole program
356        Abort = 3,
357    }
358    impl AbortLevel {
359        /// String value of the enum field names used in the ProtoBuf definition.
360        ///
361        /// The values are not transformed in any way and thus are considered stable
362        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
363        pub fn as_str_name(&self) -> &'static str {
364            match self {
365                AbortLevel::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
366                AbortLevel::SkipCurrentInstructionAndBreakOuter => "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER",
367                AbortLevel::Abort => "ABORT",
368            }
369        }
370    }
371    #[derive(Clone, PartialEq, ::prost::Oneof)]
372    pub enum Operation {
373        #[prost(message, tag="1")]
374        Select(super::VmOpSelect),
375        #[prost(message, tag="2")]
376        RegLoad(super::VmOpRegLoad),
377        #[prost(message, tag="3")]
378        Merge(super::VmOpMerge),
379        #[prost(message, tag="4")]
380        Set(super::VmOpSet),
381        #[prost(message, tag="5")]
382        Del(super::VmOpDel),
383    }
384}
385#[derive(Clone, PartialEq, ::prost::Message)]
386pub struct VmOpSelect {
387    /// Enum SRC|DST|BOTH. Default=SRC.
388    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
389    pub cursor: ::core::option::Option<i32>,
390    #[prost(message, repeated, tag="2")]
391    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
392    /// Creates the submessage if doesn't exist in the DST cursor
393    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
394    #[prost(bool, optional, tag="3")]
395    pub create_if_not_exist: ::core::option::Option<bool>,
396}
397/// Nested message and enum types in `VmOpSelect`.
398pub mod vm_op_select {
399    /// A path component is either: (1) a field id to descend into (common case);
400    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
401    /// repeated fields, where we snoop a sub-field as a map key)
402    #[derive(Clone, PartialEq, ::prost::Message)]
403    pub struct PathComponent {
404        // When we are selecting a leaf field, tell what's the field type
405        // to disambiguate integer types. Using uint64 by default will likely
406        // do the right thing in 99% cases (so probably we don't need to impl
407        // this until much later if somebody does a map with a fixed64 key)
408        // enum ProtoFieldType field_type = 4;  // bool | int32 | fixed32 | ...
409
410        /// Only valid when using field_id. This makes select have foreach
411        /// semantics. This means that the body of nested_instructions is
412        /// executed several times, once per each repeated submessage.
413        #[prost(bool, optional, tag="5")]
414        pub is_repeated: ::core::option::Option<bool>,
415        /// Only valid when using map_key_field_id. This defines which
416        /// register (R1..R32) should be used to match the key of the dict
417        /// in a map lookup operation.
418        /// In other words:
419        /// foreach msg in repeated message {
420        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
421        ///       break;  // Lookup succeeded, PathComponent resolves here.
422        ///    }
423        /// }
424        #[prost(uint32, optional, tag="6")]
425        pub register_to_match: ::core::option::Option<u32>,
426        /// Only valid when using field_id and is_repeated=true. When iterating
427        /// over repeated fields, stores the current iteration index into the
428        /// the register R1..R32 defined below. This can be used to do complex
429        /// operations like "find the entry in the array that has width==100,
430        /// remember its offset in the SRC array and overwrite the matching
431        /// i-th element in the DST array. We will probably never implement
432        /// this but it's here for completeness.
433        #[prost(uint32, optional, tag="7")]
434        pub store_foreach_index_into_register: ::core::option::Option<u32>,
435        #[prost(oneof="path_component::Field", tags="1, 2, 3")]
436        pub field: ::core::option::Option<path_component::Field>,
437    }
438    /// Nested message and enum types in `PathComponent`.
439    pub mod path_component {
440        #[derive(Clone, PartialEq, ::prost::Oneof)]
441        pub enum Field {
442            #[prost(uint32, tag="1")]
443            FieldId(u32),
444            #[prost(uint32, tag="2")]
445            ArrayIndex(u32),
446            /// The ID of the field in the repeated submessage that we
447            /// use as a key (e.g. LayerState.layer_id). When setting this
448            /// register_to_match must also be set, to tell what's the
449            /// expected value of the key we are looking up.
450            #[prost(uint32, tag="3")]
451            MapKeyFieldId(u32),
452        }
453    }
454}
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct VmOpRegLoad {
457    /// SRC(default) | DST.
458    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
459    pub cursor: ::core::option::Option<i32>,
460    /// 1=R1, 2=R2... 32=R32
461    #[prost(uint32, optional, tag="2")]
462    pub dst_register: ::core::option::Option<u32>,
463}
464/// Merges SRC into DST. Both need to point to a message (not a field).
465#[derive(Clone, PartialEq, ::prost::Message)]
466pub struct VmOpMerge {
467    /// When true, the merge operation will skip any field that is already
468    /// resolved as a message node in the destination tree.
469    ///
470    /// This is used to support merging of nested messages. Because ProtoVM
471    /// does not know the schema, a standard MERGE cannot distinguish
472    /// between a string and a message on the wire and it would overwrite
473    /// the entire blob, destroying granular updates.
474    ///
475    /// By setting this to true, a program can be implemented to do a
476    /// bottom-up, multi-step merge by traversing into and merging
477    /// the deepest submessages first, then moving up to the parent
478    /// message and merging it with skip_submessages = true.
479    #[prost(bool, optional, tag="1")]
480    pub skip_submessages: ::core::option::Option<bool>,
481    /// When true, the merge operation will remove the dst field if the src field
482    /// is empty.
483    ///
484    /// This can be used to replicate the removal of a subobject within the
485    /// producer's state. E.g.
486    /// This event on the producer side: mProducerState.mSubobject = nullptr
487    /// can be represented by this patch: { producer_state { subobject {} }}
488    #[prost(bool, optional, tag="2")]
489    pub del_if_src_empty: ::core::option::Option<bool>,
490}
491/// Copies SRC into DST. If a message, replaces the DST node, discarding any
492/// pre-existing field.
493#[derive(Clone, PartialEq, ::prost::Message)]
494pub struct VmOpSet {
495}
496/// Delete the field or message pointed by DST.
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct VmOpDel {
499}
500// End of protos/perfetto/protovm/vm_program.proto
501
502// Begin of protos/perfetto/common/data_source_descriptor.proto
503
504/// This message is sent from Producer(s) to the tracing Service when registering
505/// to advertise their capabilities. It describes the structure of tracing
506/// protos that will be produced by the data source and the supported filters.
507#[derive(Clone, PartialEq, ::prost::Message)]
508pub struct DataSourceDescriptor {
509    /// e.g., "linux.ftrace", "chromium.tracing"
510    #[prost(string, optional, tag="1")]
511    pub name: ::core::option::Option<::prost::alloc::string::String>,
512    /// When non-zero, this is a unique ID within the scope of the Producer for
513    /// this data source (it is NOT globally unique). This is useful to
514    /// differentiate between data sources with matching names when calling
515    /// UpdateDataSource(). This field has been introduced in November 2021
516    /// (v22, Android T) and is not supported on older versions.
517    #[prost(uint64, optional, tag="7")]
518    pub id: ::core::option::Option<u64>,
519    /// When true the data source is expected to ack the stop request through the
520    /// NotifyDataSourceStopped() IPC. This field has been introduced after
521    /// Android P in Jul 2018 and is not supported on older versions.
522    #[prost(bool, optional, tag="2")]
523    pub will_notify_on_stop: ::core::option::Option<bool>,
524    /// When true the data source is expected to ack the start request through the
525    /// NotifyDataSourceStarted() IPC. This field has been introduced after
526    /// Android P in March 2019 and is not supported on older versions.
527    #[prost(bool, optional, tag="3")]
528    pub will_notify_on_start: ::core::option::Option<bool>,
529    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
530    /// set if the data source writes packets that refer to previous trace
531    /// contents, and knows how to stop referring to the already-emitted data.
532    #[prost(bool, optional, tag="4")]
533    pub handles_incremental_state_clear: ::core::option::Option<bool>,
534    /// If true, indicates that the data source does nothing upon Flush. This
535    /// allows the service to reduce the flush-related IPC traffic and better deal
536    /// with frozen producers (see go/perfetto-frozen). This is usually the case
537    /// for data sources like 'track_event' that don't have access to the various
538    /// thread task runners to post a flush task and rely purely on server-side
539    /// scraping.
540    /// Introduced in v39 / Android V.
541    #[prost(bool, optional, tag="9")]
542    pub no_flush: ::core::option::Option<bool>,
543    /// If present, the tracing service executes this program within a ProtoVM to
544    /// process overwritten packets (patches). The service computes a hash of the
545    /// program to detect and disambiguate between different versions; if multiple
546    /// versions (from different producers) are specified for the same data source,
547    /// the service instantiates a dedicated ProtoVM for each.
548    #[prost(message, optional, tag="10")]
549    pub protovm_program: ::core::option::Option<VmProgram>,
550    /// Optional specification about available GPU counters.
551    #[prost(message, optional, tag="5")]
552    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
553    #[prost(message, optional, tag="6")]
554    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
555    #[prost(message, optional, tag="8")]
556    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
557}
558// End of protos/perfetto/common/data_source_descriptor.proto
559
560// Begin of protos/perfetto/common/tracing_service_state.proto
561
562/// Reports the state of the tracing service. Used to gather details about the
563/// data sources connected.
564/// See ConsumerPort::QueryServiceState().
565#[derive(Clone, PartialEq, ::prost::Message)]
566pub struct TracingServiceState {
567    /// Lists all the producers connected.
568    #[prost(message, repeated, tag="1")]
569    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
570    /// Lists the data sources available.
571    #[prost(message, repeated, tag="2")]
572    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
573    /// Lists the tracing sessions active AND owned by a consumer that has the same
574    /// UID of the caller (or all of them if the caller is root).
575    /// Introduced in v24 / Android T.
576    #[prost(message, repeated, tag="6")]
577    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
578    /// This is always set to true from v24 and beyond. This flag is only used to
579    /// tell the difference between: (1) talking to a recent service which happens
580    /// to have no tracing session active; (2) talking to an older version of the
581    /// service which will never report any tracing session.
582    #[prost(bool, optional, tag="7")]
583    pub supports_tracing_sessions: ::core::option::Option<bool>,
584    /// Total number of tracing sessions.
585    #[prost(int32, optional, tag="3")]
586    pub num_sessions: ::core::option::Option<i32>,
587    /// Number of tracing sessions in the started state. Always <= num_sessions.
588    #[prost(int32, optional, tag="4")]
589    pub num_sessions_started: ::core::option::Option<i32>,
590    /// The version of traced (the same returned by `traced --version`).
591    /// This is a human readable string with and its format varies depending on
592    /// the build system and the repo (standalone vs AOSP).
593    /// This is intended for human debugging only.
594    #[prost(string, optional, tag="5")]
595    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
596}
597/// Nested message and enum types in `TracingServiceState`.
598pub mod tracing_service_state {
599    /// Describes a producer process.
600    #[derive(Clone, PartialEq, ::prost::Message)]
601    pub struct Producer {
602        /// Unique ID of the producer (monotonic counter).
603        #[prost(int32, optional, tag="1")]
604        pub id: ::core::option::Option<i32>,
605        /// Typically matches the process name.
606        #[prost(string, optional, tag="2")]
607        pub name: ::core::option::Option<::prost::alloc::string::String>,
608        /// Unix pid of the remote process. Supported only on Linux-based systems.
609        /// Introduced in v24 / Android T.
610        #[prost(int32, optional, tag="5")]
611        pub pid: ::core::option::Option<i32>,
612        /// Unix uid of the remote process.
613        #[prost(int32, optional, tag="3")]
614        pub uid: ::core::option::Option<i32>,
615        /// The version of the client library used by the producer.
616        /// This is a human readable string with and its format varies depending on
617        /// the build system and the repo (standalone vs AOSP).
618        /// This is intended for human debugging only.
619        #[prost(string, optional, tag="4")]
620        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
621        /// Returns true if the process appears to be frozen (Android only).
622        /// Introduced in Perfetto V49 / Android 24Q4.
623        #[prost(bool, optional, tag="6")]
624        pub frozen: ::core::option::Option<bool>,
625        /// Identifies the machine this producer is connected from in multi-machine
626        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
627        /// means the producer is connected from the local/host machine where the
628        /// tracing service is running.
629        /// Introduced in Perfetto V56 / Android 26Q3.
630        #[prost(uint32, optional, tag="7")]
631        pub machine_id: ::core::option::Option<u32>,
632        /// Human-readable name of the machine, as advertised by the relay (usually
633        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
634        /// remote's `uname -s`). Only set when machine_id is non-zero.
635        /// Introduced in Perfetto V56 / Android 26Q3.
636        #[prost(string, optional, tag="8")]
637        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
638    }
639    /// Describes a data source registered by a producer. Data sources are listed
640    /// regardless of the fact that they are being used or not.
641    #[derive(Clone, PartialEq, ::prost::Message)]
642    pub struct DataSource {
643        /// Descriptor passed by the data source when calling RegisterDataSource().
644        #[prost(message, optional, tag="1")]
645        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
646        /// ID of the producer, as per Producer.id.
647        #[prost(int32, optional, tag="2")]
648        pub producer_id: ::core::option::Option<i32>,
649    }
650    #[derive(Clone, PartialEq, ::prost::Message)]
651    pub struct TracingSession {
652        /// The TracingSessionID.
653        #[prost(uint64, optional, tag="1")]
654        pub id: ::core::option::Option<u64>,
655        /// The Unix uid of the consumer that started the session.
656        /// This is meaningful only if the caller is root. In all other cases only
657        /// tracing sessions that match the caller UID will be displayed.
658        #[prost(int32, optional, tag="2")]
659        pub consumer_uid: ::core::option::Option<i32>,
660        /// Internal state of the tracing session.
661        /// These strings are FYI only and subjected to change.
662        #[prost(string, optional, tag="3")]
663        pub state: ::core::option::Option<::prost::alloc::string::String>,
664        /// The unique_session_name as set in the trace config (might be empty).
665        #[prost(string, optional, tag="4")]
666        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
667        /// The number and size of each buffer.
668        #[prost(uint32, repeated, packed="false", tag="5")]
669        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
670        /// Duration, as specified in the TraceConfig.duration_ms.
671        #[prost(uint32, optional, tag="6")]
672        pub duration_ms: ::core::option::Option<u32>,
673        /// Number of data sources involved in the session.
674        #[prost(uint32, optional, tag="7")]
675        pub num_data_sources: ::core::option::Option<u32>,
676        /// Time when the session was started, in the CLOCK_REALTIME domain.
677        /// Available only on Linux-based systems.
678        #[prost(int64, optional, tag="8")]
679        pub start_realtime_ns: ::core::option::Option<i64>,
680        // The fields below have been introduced in v42.
681
682        /// The bugreport_score, as set in TraceConfig.bugreport_score.
683        #[prost(int32, optional, tag="9")]
684        pub bugreport_score: ::core::option::Option<i32>,
685        /// As per TraceConfig.bugreport_filename.
686        #[prost(string, optional, tag="10")]
687        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
688        /// If true, the session is in the STARTED state. If false the session is in
689        /// any other state (see `state` field).
690        #[prost(bool, optional, tag="11")]
691        pub is_started: ::core::option::Option<bool>,
692    }
693}
694// End of protos/perfetto/common/semantic_type.proto
695
696// Begin of protos/perfetto/config/android/android_aflags_config.proto
697
698/// Options for the android.aflags data source.
699/// This data source captures snapshots of Android aconfig flags.
700/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
701/// for more information on aconfig flags.
702#[derive(Clone, PartialEq, ::prost::Message)]
703pub struct AndroidAflagsConfig {
704    /// Frequency of polling. If absent or 0, the state will be recorded once,
705    /// at the start of the trace.
706    ///
707    /// It is recommended to either leave this absent or set it to a large
708    /// value as each invocation of the `aflags` tool can be time consuming
709    /// (approx. 350ms) and also triggers an expensive flush. This is required to
710    /// be > 1000ms if set, to avoid excessive CPU usage.
711    #[prost(uint32, optional, tag="1")]
712    pub poll_ms: ::core::option::Option<u32>,
713}
714// End of protos/perfetto/config/android/android_aflags_config.proto
715
716// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
717
718/// Data source that lists game modes and game interventions of games
719/// on an Android device.
720#[derive(Clone, PartialEq, ::prost::Message)]
721pub struct AndroidGameInterventionListConfig {
722    /// If not empty, emit info about only the following list of package names
723    /// (exact match, no regex). Otherwise, emit info about all packages.
724    #[prost(string, repeated, tag="1")]
725    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
726}
727// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
728
729// Begin of protos/perfetto/config/android/android_input_event_config.proto
730
731/// Custom configuration for the "android.input.inputevent" data source.
732///
733/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
734///
735/// Next ID: 6
736#[derive(Clone, PartialEq, ::prost::Message)]
737pub struct AndroidInputEventConfig {
738    /// The tracing mode to use. If unspecified, it will default to
739    /// TRACE_MODE_USE_RULES.
740    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
741    pub mode: ::core::option::Option<i32>,
742    /// The list of rules to use to determine the trace level of events.
743    /// Each event will be traced using the TraceLevel of the first rule that it
744    /// triggers from this list. The rules are evaluated in the order in which they
745    /// are specified. If an event does not match any of the rules,
746    /// TRACE_LEVEL_NONE will be used by default.
747    #[prost(message, repeated, tag="2")]
748    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
749    // --- Control flags ---
750
751    /// Trace input events processed by the system as they are being dispatched
752    /// to application windows. All trace rules will apply.
753    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
754    ///    it will
755    ///      trace InputDispatcher's inbound events (which does not include events
756    ///      synthesized within InputDispatcher) that match the rules.
757    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
758    ///    events
759    ///      matching the rules, including all events synthesized within
760    ///      InputDispatcher, will be traced.
761    #[prost(bool, optional, tag="3")]
762    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
763    /// Trace details about which windows the system is sending each input event
764    /// to. All trace rules will apply.
765    #[prost(bool, optional, tag="4")]
766    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
767    /// Trace evdev events received from the kernel, including device additions and
768    /// removals.
769    #[prost(bool, optional, tag="5")]
770    pub trace_evdev_events: ::core::option::Option<bool>,
771}
772/// Nested message and enum types in `AndroidInputEventConfig`.
773pub mod android_input_event_config {
774    /// A rule that specifies the TraceLevel for an event based on matching
775    /// conditions. All matchers in the rule are optional. To trigger this rule, an
776    /// event must match all of its specified matchers (i.e. the matchers function
777    /// like a series of conditions connected by a logical 'AND' operator). A rule
778    /// with no specified matchers will match all events. Next ID: 6
779    #[derive(Clone, PartialEq, ::prost::Message)]
780    pub struct TraceRule {
781        /// The trace level to be used for events that trigger this rule.
782        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
783        #[prost(enumeration="TraceLevel", optional, tag="1")]
784        pub trace_level: ::core::option::Option<i32>,
785        // --- Optional Matchers ---
786
787        /// Package matchers
788        ///
789        /// Respectively matches if all or any of the target apps for this event are
790        /// contained in the specified list of package names.
791        ///
792        /// Intended usage:
793        ///    - Use match_all_packages to selectively allow tracing for the listed
794        ///    packages.
795        ///    - Use match_any_packages to selectively deny tracing for certain
796        ///    packages.
797        ///
798        /// WARNING: Great care must be taken when designing rules for field tracing!
799        ///           This is because each event is almost always sent to more than
800        ///           one app.
801        ///               For example, when allowing tracing for a package that has a
802        ///               spy window
803        ///           over the display (e.g. SystemUI) using match_any_packages,
804        ///           essentially all input will be recorded on that display. This is
805        ///           because the events will be sent to the spy as well as the
806        ///           foreground app, and regardless of what the foreground app is,
807        ///           the event will end up being traced.
808        ///               Alternatively, when attempting to block tracing for specific
809        ///               packages using
810        ///           match_all_packages, no events will likely be blocked. This is
811        ///           because the event will also be sent to other apps (such as, but
812        ///           not limited to, ones with spy windows), so the matcher will not
813        ///           match unless all other targets are also listed under the
814        ///           match_all_packages list.
815        #[prost(string, repeated, tag="2")]
816        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
817        #[prost(string, repeated, tag="3")]
818        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
819        /// Matches if the event is secure, which means that at least one of the
820        /// targets of this event is using the window flag FLAG_SECURE.
821        #[prost(bool, optional, tag="4")]
822        pub match_secure: ::core::option::Option<bool>,
823        /// Matches if there was an active IME connection while this event was being
824        /// processed.
825        #[prost(bool, optional, tag="5")]
826        pub match_ime_connection_active: ::core::option::Option<bool>,
827    }
828    /// Trace modes are tracing presets that are included in the system.
829    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
830    #[repr(i32)]
831    pub enum TraceMode {
832        /// Preset mode for maximal tracing.
833        /// WARNING: This will bypass all privacy measures on debuggable builds, and
834        /// will record all
835        ///           input events processed by the system, regardless of the context
836        ///           in which they were processed. It should only be used for tracing
837        ///           on a local device or for tests. It should NEVER be used for
838        ///           field tracing.
839        TraceAll = 0,
840        /// Use the tracing rules defined in this config to specify what events to
841        /// trace.
842        UseRules = 1,
843    }
844    impl TraceMode {
845        /// String value of the enum field names used in the ProtoBuf definition.
846        ///
847        /// The values are not transformed in any way and thus are considered stable
848        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
849        pub fn as_str_name(&self) -> &'static str {
850            match self {
851                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
852                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
853            }
854        }
855    }
856    /// The level of tracing that should be applied to an event.
857    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
858    #[repr(i32)]
859    pub enum TraceLevel {
860        /// Do not trace the input event.
861        None = 0,
862        /// Trace the event as a redacted event, where certain sensitive fields are
863        /// omitted from the trace, including the coordinates of pointer events and
864        /// the key/scan codes of key events.
865        Redacted = 1,
866        /// Trace the complete event.
867        Complete = 2,
868    }
869    impl TraceLevel {
870        /// String value of the enum field names used in the ProtoBuf definition.
871        ///
872        /// The values are not transformed in any way and thus are considered stable
873        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
874        pub fn as_str_name(&self) -> &'static str {
875            match self {
876                TraceLevel::None => "TRACE_LEVEL_NONE",
877                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
878                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
879            }
880        }
881    }
882}
883// End of protos/perfetto/common/android_log_constants.proto
884
885// Begin of protos/perfetto/config/android/android_log_config.proto
886
887#[derive(Clone, PartialEq, ::prost::Message)]
888pub struct AndroidLogConfig {
889    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
890    pub log_ids: ::prost::alloc::vec::Vec<i32>,
891    /// If set ignores all log messages whose prio is < the given value.
892    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
893    pub min_prio: ::core::option::Option<i32>,
894    /// If non-empty ignores all log messages whose tag doesn't match one of the
895    /// specified values.
896    #[prost(string, repeated, tag="4")]
897    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
898    /// If true, includes the contents of the logcat buffers that were already
899    /// present before the data source started. By default (false), only new
900    /// log entries produced after the data source starts are recorded.
901    /// Can be useful for boot traces or situations where logs from before
902    /// traced started are important.
903    #[prost(bool, optional, tag="5")]
904    pub preserve_log_buffer: ::core::option::Option<bool>,
905}
906// End of protos/perfetto/config/android/android_log_config.proto
907
908// Begin of protos/perfetto/config/android/android_polled_state_config.proto
909
910/// Data source that polls for display state. This should only be used for
911/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
912#[derive(Clone, PartialEq, ::prost::Message)]
913pub struct AndroidPolledStateConfig {
914    /// Frequency of polling. If absent the state will be recorded once, at the
915    /// start of the trace.
916    /// This is required to be > 100ms to avoid excessive CPU usage.
917    #[prost(uint32, optional, tag="1")]
918    pub poll_ms: ::core::option::Option<u32>,
919}
920// End of protos/perfetto/config/android/android_polled_state_config.proto
921
922// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
923
924/// Data source that controls the system properties used to guard initialization
925/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
926/// processes like SurfaceFlinger.
927///
928/// This data source only tells Skia to initialized the Perfetto SDK and start
929/// routing data to the Track Event system instead of ATrace. For those events
930/// to actually show up in a trace, the track_event data source must be used as
931/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
932/// processes may need to be restarted for Skia to revert to using ATrace if
933/// Track Events are no longer desired.
934///
935/// In addition to switching Skia to use Perfetto's track_event data source,
936/// this "guard" also controls Skia's "broad tracing", which removes Skia's
937/// internal tracing constraints and allows the track_event config to specify
938/// which categories should be traced. Filtering to the "skia.always" category
939/// *tag* in a track_event config can be used to re-enable the standard
940/// constraints typically used with ATrace.
941///
942/// Data source name: android.sdk_sysprop_guard
943/// Introduced in Android 14 (U) QPR1.
944/// Next id: 4
945#[derive(Clone, PartialEq, ::prost::Message)]
946pub struct AndroidSdkSyspropGuardConfig {
947    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
948    /// integration with the track_event data source in RenderEngine.
949    /// If false or omitted, the simpler ATrace fallback is used.
950    ///
951    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
952    /// restarted.
953    ///
954    /// Specifically this sets the following system properties:
955    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
956    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
957    ///
958    /// Does not affect actual track_event data *collection*, which must be
959    /// configured separately.
960    #[prost(bool, optional, tag="1")]
961    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
962    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
963    /// with the track_event data source. hwui_package_name_filter
964    /// can be used to control which apps are affected.
965    /// If false or omitted, the simpler ATrace fallback is used.
966    ///
967    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
968    /// restarted.
969    ///
970    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
971    /// If filtering is NOT set, this controls these GLOBAL system properties:
972    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
973    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
974    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
975    /// for each package listed in the filter:
976    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
977    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
978    ///
979    /// Does not affect actual track_event data *collection*, which must be
980    /// configured separately.
981    #[prost(bool, optional, tag="2")]
982    pub hwui_skia_track_events: ::core::option::Option<bool>,
983    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
984    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
985    #[prost(string, repeated, tag="3")]
986    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
987}
988// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
989
990// Begin of protos/perfetto/config/android/android_system_property_config.proto
991
992/// Data source that polls for system properties.
993#[derive(Clone, PartialEq, ::prost::Message)]
994pub struct AndroidSystemPropertyConfig {
995    /// Frequency of polling. If absent the state will be recorded once, at the
996    /// start of the trace.
997    /// This is required to be > 100ms to avoid excessive CPU usage.
998    #[prost(uint32, optional, tag="1")]
999    pub poll_ms: ::core::option::Option<u32>,
1000    /// Properties to poll. All property names must start with "debug.tracing.".
1001    #[prost(string, repeated, tag="2")]
1002    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1003}
1004// End of protos/perfetto/config/android/android_system_property_config.proto
1005
1006// Begin of protos/perfetto/config/android/app_wakelock_config.proto
1007
1008/// Configuration for the android.app_wakelocks data source.
1009#[derive(Clone, PartialEq, ::prost::Message)]
1010pub struct AppWakelocksConfig {
1011    /// Specifies the delay (in milliseconds) after which the data source will
1012    /// attempt to write events. Writing less frequently reduces the trace size by
1013    /// making better use of the packed arrays and reducing the total number of
1014    /// TracePackets needed (which each have dozens of bytes of overhead). The
1015    /// suggested delay is 5000ms.
1016    #[prost(int32, optional, tag="1")]
1017    pub write_delay_ms: ::core::option::Option<i32>,
1018    /// When set, wakelocks held for less than this amount of time are filtered
1019    /// from the resulting trace. Note: duration is computed by matching wakelocks
1020    /// with identical attributes, not by tracking the underlying objects. The
1021    /// threshold should be < the trace's flush_period_ms.
1022    #[prost(int32, optional, tag="2")]
1023    pub filter_duration_below_ms: ::core::option::Option<i32>,
1024    /// When true, the owner_pid is dropped from the resulting output, reducing the
1025    /// size of the interning tables.
1026    #[prost(bool, optional, tag="3")]
1027    pub drop_owner_pid: ::core::option::Option<bool>,
1028}
1029// End of protos/perfetto/config/android/app_wakelock_config.proto
1030
1031// Begin of protos/perfetto/config/android/cpu_per_uid_config.proto
1032
1033/// Data source that records CPU per UID data.
1034#[derive(Clone, PartialEq, ::prost::Message)]
1035pub struct CpuPerUidConfig {
1036    /// Record at this frequency.
1037    #[prost(uint32, optional, tag="1")]
1038    pub poll_ms: ::core::option::Option<u32>,
1039}
1040// End of protos/perfetto/config/android/cpu_per_uid_config.proto
1041
1042// Begin of protos/perfetto/config/android/display_video_config.proto
1043
1044/// Config for the "android.display.video" data source. Unset/0 fields use
1045/// the producer's default.
1046#[derive(Clone, PartialEq, ::prost::Message)]
1047pub struct DisplayVideoConfig {
1048    /// Scale applied to each display's resolution before capture (0.25 =
1049    /// quarter size).
1050    #[prost(float, optional, tag="1")]
1051    pub scale: ::core::option::Option<f32>,
1052    #[prost(enumeration="display_video_config::Format", optional, tag="2")]
1053    pub format: ::core::option::Option<i32>,
1054    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
1055    #[prost(uint32, optional, tag="3")]
1056    pub key_frame_interval_secs: ::core::option::Option<u32>,
1057    /// Per-display cap on emitted bytes. On reaching it the stream is torn
1058    /// down with a VideoFrameError (SIZE_CAP_HIT).
1059    #[prost(uint64, optional, tag="4")]
1060    pub max_stream_size_bytes: ::core::option::Option<u64>,
1061}
1062/// Nested message and enum types in `DisplayVideoConfig`.
1063pub mod display_video_config {
1064    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1065    #[repr(i32)]
1066    pub enum Format {
1067        /// Default (H.264).
1068        Unspecified = 0,
1069        H264 = 1,
1070        Hevc = 2,
1071    }
1072    impl Format {
1073        /// String value of the enum field names used in the ProtoBuf definition.
1074        ///
1075        /// The values are not transformed in any way and thus are considered stable
1076        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1077        pub fn as_str_name(&self) -> &'static str {
1078            match self {
1079                Format::Unspecified => "FORMAT_UNSPECIFIED",
1080                Format::H264 => "FORMAT_H264",
1081                Format::Hevc => "FORMAT_HEVC",
1082            }
1083        }
1084    }
1085}
1086// End of protos/perfetto/config/android/display_video_config.proto
1087
1088// Begin of protos/perfetto/config/android/inputmethod_config.proto
1089
1090/// Custom configuration for the "android.inputmethod" data source.
1091#[derive(Clone, PartialEq, ::prost::Message)]
1092pub struct InputMethodConfig {
1093    /// If true, enables tracing in the clients.
1094    #[prost(bool, optional, tag="1")]
1095    pub client: ::core::option::Option<bool>,
1096    /// If true, enables tracing in InputMethodService.
1097    #[prost(bool, optional, tag="2")]
1098    pub service: ::core::option::Option<bool>,
1099    /// If true, enables tracing in InputMethodManagerService.
1100    #[prost(bool, optional, tag="3")]
1101    pub manager_service: ::core::option::Option<bool>,
1102}
1103// End of protos/perfetto/config/android/inputmethod_config.proto
1104
1105// Begin of protos/perfetto/config/android/kernel_wakelocks_config.proto
1106
1107/// Data source that records kernel (and native) wakelock data.
1108#[derive(Clone, PartialEq, ::prost::Message)]
1109pub struct KernelWakelocksConfig {
1110    /// Record at this frequency.
1111    #[prost(uint32, optional, tag="1")]
1112    pub poll_ms: ::core::option::Option<u32>,
1113}
1114// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
1115
1116// Begin of protos/perfetto/config/android/network_trace_config.proto
1117
1118/// Network tracing data source that records details on all packets sent or
1119/// received by the network.
1120#[derive(Clone, PartialEq, ::prost::Message)]
1121pub struct NetworkPacketTraceConfig {
1122    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1123    /// ring buffer. The polling interval should be such that the ring buffer is
1124    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1125    /// The minimum polling rate is 100ms (values below this are ignored).
1126    /// Introduced in Android 14 (U).
1127    #[prost(uint32, optional, tag="1")]
1128    pub poll_ms: ::core::option::Option<u32>,
1129    /// The aggregation_threshold is the number of packets at which an event will
1130    /// switch from per-packet details to aggregate details. For example, a value
1131    /// of 50 means that if a particular event (grouped by the unique combinations
1132    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1133    /// packets, the exact timestamp and length are recorded for each packet. If
1134    /// there were 50 or more packets in an event, it would only record the total
1135    /// duration, packets, and length. A value of zero or unspecified will always
1136    /// / record per-packet details. A value of 1 always records aggregate details.
1137    #[prost(uint32, optional, tag="2")]
1138    pub aggregation_threshold: ::core::option::Option<u32>,
1139    /// Specifies the maximum number of packet contexts to intern at a time. This
1140    /// prevents the interning table from growing too large and controls whether
1141    /// interning is enabled or disabled (a value of zero disables interning and
1142    /// is the default). When a data sources interning table reaches this amount,
1143    /// packet contexts will be inlined into NetworkPacketEvents.
1144    #[prost(uint32, optional, tag="3")]
1145    pub intern_limit: ::core::option::Option<u32>,
1146    /// The following fields specify whether certain fields should be dropped from
1147    /// the output. Dropping fields improves normalization results, reduces the
1148    /// size of the interning table, and slightly reduces event size.
1149    #[prost(bool, optional, tag="4")]
1150    pub drop_local_port: ::core::option::Option<bool>,
1151    #[prost(bool, optional, tag="5")]
1152    pub drop_remote_port: ::core::option::Option<bool>,
1153    #[prost(bool, optional, tag="6")]
1154    pub drop_tcp_flags: ::core::option::Option<bool>,
1155}
1156// End of protos/perfetto/config/android/network_trace_config.proto
1157
1158// Begin of protos/perfetto/config/android/packages_list_config.proto
1159
1160/// Data source that lists details (such as version code) about packages on an
1161/// Android device.
1162#[derive(Clone, PartialEq, ::prost::Message)]
1163pub struct PackagesListConfig {
1164    /// If not empty, emit info about only the following list of package names
1165    /// (exact match, no regex). Can be combined with
1166    /// |package_name_regex_filter|: a package is included if it matches either
1167    /// filter. If both filters are empty, emit info about all packages.
1168    #[prost(string, repeated, tag="1")]
1169    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1170    /// If not empty, emit info about only the packages whose names match any of
1171    /// the following regexes (full match, not partial). Can be combined with
1172    /// |package_name_filter|: a package is included if it matches either filter.
1173    /// If both filters are empty, emit info about all packages.
1174    /// This field was introduced in Android 26Q2 (Perfetto v55).
1175    #[prost(string, repeated, tag="3")]
1176    pub package_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1177    /// If present and non-zero, the data source will periodically poll for CPU
1178    /// use by packages and only emit results for those that it sees. If absent,
1179    /// the data source will emit results for all packages at startup. The package
1180    /// name filters apply either way.
1181    #[prost(uint32, optional, tag="2")]
1182    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1183}
1184// End of protos/perfetto/config/android/packages_list_config.proto
1185
1186// Begin of protos/perfetto/config/android/pixel_modem_config.proto
1187
1188/// Data source that records events from the modem.
1189#[derive(Clone, PartialEq, ::prost::Message)]
1190pub struct PixelModemConfig {
1191    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
1192    pub event_group: ::core::option::Option<i32>,
1193    /// If set, record only events with these hashes.
1194    #[prost(int64, repeated, packed="false", tag="2")]
1195    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1196    /// If set and allow_list is not set, deny events with these hashes.
1197    #[prost(int64, repeated, packed="false", tag="3")]
1198    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1199}
1200/// Nested message and enum types in `PixelModemConfig`.
1201pub mod pixel_modem_config {
1202    /// Event group to record, as defined by the modem.
1203    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1204    #[repr(i32)]
1205    pub enum EventGroup {
1206        Unknown = 0,
1207        /// Events suitable for low bandwidth tracing only.
1208        LowBandwidth = 1,
1209        /// Events suitable for high and low bandwidth tracing.
1210        HighAndLowBandwidth = 2,
1211    }
1212    impl EventGroup {
1213        /// String value of the enum field names used in the ProtoBuf definition.
1214        ///
1215        /// The values are not transformed in any way and thus are considered stable
1216        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1217        pub fn as_str_name(&self) -> &'static str {
1218            match self {
1219                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
1220                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1221                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1222            }
1223        }
1224    }
1225}
1226/// Custom configuration for the "android.protolog" data source.
1227/// ProtoLog is a logging mechanism that is intented to be more efficient than
1228/// logcat. This configures what logs to capture in the tracing instance.
1229#[derive(Clone, PartialEq, ::prost::Message)]
1230pub struct ProtoLogConfig {
1231    /// Specified the configurations for each of the logging groups. If none is
1232    /// specified for a group the defaults will be used.
1233    #[prost(message, repeated, tag="1")]
1234    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1235    /// Specified what tracing mode to use for the tracing instance.
1236    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
1237    pub tracing_mode: ::core::option::Option<i32>,
1238    /// If set, any message with log level higher than this level (inclusive) will
1239    /// be traced. Group overrides take precedence over this value.
1240    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
1241    pub default_log_from_level: ::core::option::Option<i32>,
1242}
1243/// Nested message and enum types in `ProtoLogConfig`.
1244pub mod proto_log_config {
1245    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1246    #[repr(i32)]
1247    pub enum TracingMode {
1248        /// When using the DEFAULT tracing mode, only log groups and levels specified
1249        /// in the group_overrides are traced.
1250        Default = 0,
1251        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1252        /// traced, unless specified in the group_overrides.
1253        EnableAll = 1,
1254    }
1255    impl TracingMode {
1256        /// String value of the enum field names used in the ProtoBuf definition.
1257        ///
1258        /// The values are not transformed in any way and thus are considered stable
1259        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1260        pub fn as_str_name(&self) -> &'static str {
1261            match self {
1262                TracingMode::Default => "DEFAULT",
1263                TracingMode::EnableAll => "ENABLE_ALL",
1264            }
1265        }
1266    }
1267}
1268#[derive(Clone, PartialEq, ::prost::Message)]
1269pub struct ProtoLogGroup {
1270    /// The ProtoLog group name this configuration entry applies to.
1271    #[prost(string, optional, tag="1")]
1272    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1273    /// Specify the level from which to start capturing protologs.
1274    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1275    /// message will be traced.
1276    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1277    pub log_from: ::core::option::Option<i32>,
1278    /// When set to true we will collect the stacktrace for each protolog message
1279    /// in this group that we are tracing.
1280    #[prost(bool, optional, tag="3")]
1281    pub collect_stacktrace: ::core::option::Option<bool>,
1282}
1283// End of protos/perfetto/config/android/protolog_config.proto
1284
1285// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1286
1287/// Custom configuration for the "android.surfaceflinger.layers" data source.
1288#[derive(Clone, PartialEq, ::prost::Message)]
1289pub struct SurfaceFlingerLayersConfig {
1290    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1291    pub mode: ::core::option::Option<i32>,
1292    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1293    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1294}
1295/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1296pub mod surface_flinger_layers_config {
1297    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1298    #[repr(i32)]
1299    pub enum Mode {
1300        Unspecified = 0,
1301        /// Trace layers snapshots. A snapshot is taken every time a layers change
1302        /// occurs.
1303        Active = 1,
1304        /// Generate layers snapshots from the transactions kept in the
1305        /// SurfaceFlinger's internal ring buffer.
1306        /// The layers snapshots generation occurs when this data source is flushed.
1307        Generated = 2,
1308        /// Trace a single layers snapshot.
1309        Dump = 3,
1310        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1311        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1312        /// when a bugreport is taken.
1313        GeneratedBugreportOnly = 4,
1314        /// Layer snapshots are generated by ProtoVM from layer patches
1315        Protovm = 5,
1316    }
1317    impl Mode {
1318        /// String value of the enum field names used in the ProtoBuf definition.
1319        ///
1320        /// The values are not transformed in any way and thus are considered stable
1321        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1322        pub fn as_str_name(&self) -> &'static str {
1323            match self {
1324                Mode::Unspecified => "MODE_UNSPECIFIED",
1325                Mode::Active => "MODE_ACTIVE",
1326                Mode::Generated => "MODE_GENERATED",
1327                Mode::Dump => "MODE_DUMP",
1328                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1329                Mode::Protovm => "MODE_PROTOVM",
1330            }
1331        }
1332    }
1333    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1334    #[repr(i32)]
1335    pub enum TraceFlag {
1336        Unspecified = 0,
1337        Input = 2,
1338        Composition = 4,
1339        Extra = 8,
1340        Hwc = 16,
1341        Buffers = 32,
1342        VirtualDisplays = 64,
1343        /// INPUT | COMPOSITION | EXTRA
1344        All = 14,
1345    }
1346    impl TraceFlag {
1347        /// String value of the enum field names used in the ProtoBuf definition.
1348        ///
1349        /// The values are not transformed in any way and thus are considered stable
1350        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1351        pub fn as_str_name(&self) -> &'static str {
1352            match self {
1353                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1354                TraceFlag::Input => "TRACE_FLAG_INPUT",
1355                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1356                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1357                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1358                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1359                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1360                TraceFlag::All => "TRACE_FLAG_ALL",
1361            }
1362        }
1363    }
1364}
1365// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1366
1367// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1368
1369/// Custom configuration for the "android.surfaceflinger.transactions" data
1370/// source.
1371#[derive(Clone, PartialEq, ::prost::Message)]
1372pub struct SurfaceFlingerTransactionsConfig {
1373    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1374    pub mode: ::core::option::Option<i32>,
1375}
1376/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1377pub mod surface_flinger_transactions_config {
1378    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1379    #[repr(i32)]
1380    pub enum Mode {
1381        Unspecified = 0,
1382        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1383        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1384        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1385        /// initial state and the latest transactions.
1386        Continuous = 1,
1387        /// SurfaceFlinger writes the initial state and then each incoming
1388        /// transaction until the data source is stopped.
1389        Active = 2,
1390    }
1391    impl Mode {
1392        /// String value of the enum field names used in the ProtoBuf definition.
1393        ///
1394        /// The values are not transformed in any way and thus are considered stable
1395        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1396        pub fn as_str_name(&self) -> &'static str {
1397            match self {
1398                Mode::Unspecified => "MODE_UNSPECIFIED",
1399                Mode::Continuous => "MODE_CONTINUOUS",
1400                Mode::Active => "MODE_ACTIVE",
1401            }
1402        }
1403    }
1404}
1405// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1406
1407// Begin of protos/perfetto/config/android/user_list_config.proto
1408
1409/// Data source that lists details (such as version code) about users on an
1410/// Android device.
1411#[derive(Clone, PartialEq, ::prost::Message)]
1412pub struct AndroidUserListConfig {
1413    /// An allowlist of user type strings, used to control the granularity of
1414    /// user type information emitted in the trace. Exact, case-sensitive string
1415    /// matching is used.
1416    ///
1417    /// Any user type read from the device that is NOT present in the
1418    /// effective allowlist will have its type reported as
1419    /// "android.os.usertype.FILTERED".
1420    ///
1421    /// The effective allowlist is determined as follows:
1422    ///
1423    /// 1. If this 'user_type_filter' field is provided and non-empty:
1424    ///     This list itself is the effective allowlist.
1425    ///     Example TraceConfig:
1426    ///     --------------------
1427    ///     data_sources {
1428    ///         config {
1429    ///             name: "android.user_list"
1430    ///             target_buffer: 0
1431    ///             user_list_config {
1432    ///               # Only report these specific types, others become FILTERED.
1433    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1434    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1435    ///             }
1436    ///         }
1437    ///     }
1438    ///
1439    ///
1440    /// Note: This field does not support regular expressions.
1441    #[prost(string, repeated, tag="1")]
1442    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1443}
1444// End of protos/perfetto/config/android/user_list_config.proto
1445
1446// Begin of protos/perfetto/config/android/windowmanager_config.proto
1447
1448/// Custom configuration for the "android.windowmanager" data source.
1449#[derive(Clone, PartialEq, ::prost::Message)]
1450pub struct WindowManagerConfig {
1451    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1452    pub log_frequency: ::core::option::Option<i32>,
1453    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1454    pub log_level: ::core::option::Option<i32>,
1455    #[prost(enumeration="window_manager_config::LogMode", optional, tag="3")]
1456    pub log_mode: ::core::option::Option<i32>,
1457}
1458/// Nested message and enum types in `WindowManagerConfig`.
1459pub mod window_manager_config {
1460    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1461    #[repr(i32)]
1462    pub enum LogFrequency {
1463        Unspecified = 0,
1464        /// Trace state snapshots when a frame is committed.
1465        Frame = 1,
1466        /// Trace state snapshots every time a transaction is committed.
1467        Transaction = 2,
1468        /// Trace single state snapshots when the data source is started.
1469        SingleDump = 3,
1470    }
1471    impl LogFrequency {
1472        /// String value of the enum field names used in the ProtoBuf definition.
1473        ///
1474        /// The values are not transformed in any way and thus are considered stable
1475        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1476        pub fn as_str_name(&self) -> &'static str {
1477            match self {
1478                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1479                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1480                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1481                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1482            }
1483        }
1484    }
1485    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1486    #[repr(i32)]
1487    pub enum LogLevel {
1488        Unspecified = 0,
1489        /// Logs all elements with maximum amount of information.
1490        Verbose = 1,
1491        /// Logs all elements but doesn't write all configuration data.
1492        Debug = 2,
1493        /// Logs only visible elements, with the minimum amount of performance
1494        /// overhead
1495        Critical = 3,
1496    }
1497    impl LogLevel {
1498        /// String value of the enum field names used in the ProtoBuf definition.
1499        ///
1500        /// The values are not transformed in any way and thus are considered stable
1501        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1502        pub fn as_str_name(&self) -> &'static str {
1503            match self {
1504                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1505                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1506                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1507                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1508            }
1509        }
1510    }
1511    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1512    #[repr(i32)]
1513    pub enum LogMode {
1514        Unspecified = 0,
1515        /// Always logs a full state dump of the window hierarchy.
1516        FullState = 1,
1517        /// Logs a full state dump of the window hierarchy only when tracing starts.
1518        /// The following trace packets are lightweight patches containing only the
1519        /// last changes.
1520        Incremental = 2,
1521    }
1522    impl LogMode {
1523        /// String value of the enum field names used in the ProtoBuf definition.
1524        ///
1525        /// The values are not transformed in any way and thus are considered stable
1526        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1527        pub fn as_str_name(&self) -> &'static str {
1528            match self {
1529                LogMode::Unspecified => "LOG_MODE_UNSPECIFIED",
1530                LogMode::FullState => "LOG_MODE_FULL_STATE",
1531                LogMode::Incremental => "LOG_MODE_INCREMENTAL",
1532            }
1533        }
1534    }
1535}
1536// End of protos/perfetto/config/android/windowmanager_config.proto
1537
1538// Begin of protos/perfetto/config/chrome/chrome_config.proto
1539
1540#[derive(Clone, PartialEq, ::prost::Message)]
1541pub struct ChromeConfig {
1542    #[prost(string, optional, tag="1")]
1543    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1544    /// When enabled, the data source should only fill in fields in the output that
1545    /// are not potentially privacy sensitive.
1546    #[prost(bool, optional, tag="2")]
1547    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1548    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1549    /// JSON format. Note that the trace data will still be returned as a series of
1550    /// TracePackets, but the embedded data will be JSON instead of serialized
1551    /// protobuf.
1552    #[prost(bool, optional, tag="3")]
1553    pub convert_to_legacy_json: ::core::option::Option<bool>,
1554    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1555    pub client_priority: ::core::option::Option<i32>,
1556    /// Applicable only when using legacy JSON format.
1557    /// If |json_agent_label_filter| is not empty, only data pertaining to
1558    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1559    #[prost(string, optional, tag="5")]
1560    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1561    ///   When enabled, event names should not contain package names.
1562    #[prost(bool, optional, tag="6")]
1563    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1564}
1565/// Nested message and enum types in `ChromeConfig`.
1566pub mod chrome_config {
1567    /// Priority of the tracing session client. A higher priority session may
1568    /// preempt a lower priority one in configurations where concurrent sessions
1569    /// aren't supported.
1570    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1571    #[repr(i32)]
1572    pub enum ClientPriority {
1573        Unknown = 0,
1574        Background = 1,
1575        UserInitiated = 2,
1576    }
1577    impl ClientPriority {
1578        /// String value of the enum field names used in the ProtoBuf definition.
1579        ///
1580        /// The values are not transformed in any way and thus are considered stable
1581        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1582        pub fn as_str_name(&self) -> &'static str {
1583            match self {
1584                ClientPriority::Unknown => "UNKNOWN",
1585                ClientPriority::Background => "BACKGROUND",
1586                ClientPriority::UserInitiated => "USER_INITIATED",
1587            }
1588        }
1589    }
1590}
1591// End of protos/perfetto/config/chrome/chrome_config.proto
1592
1593// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1594
1595#[derive(Clone, PartialEq, ::prost::Message)]
1596pub struct ChromiumHistogramSamplesConfig {
1597    /// List of histograms to record. If no histogram is specified, all histograms
1598    /// are recorded.
1599    #[prost(message, repeated, tag="1")]
1600    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1601    /// Default: false (i.e. histogram names are NOT filtered out by default)
1602    /// When true, histogram_name will be filtered out.
1603    #[prost(bool, optional, tag="2")]
1604    pub filter_histogram_names: ::core::option::Option<bool>,
1605}
1606/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1607pub mod chromium_histogram_samples_config {
1608    /// Records when a value within the specified bounds [min_value, max_value] is
1609    /// emitted into a Chrome histogram.
1610    #[derive(Clone, PartialEq, ::prost::Message)]
1611    pub struct HistogramSample {
1612        #[prost(string, optional, tag="1")]
1613        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1614        #[prost(int64, optional, tag="2")]
1615        pub min_value: ::core::option::Option<i64>,
1616        #[prost(int64, optional, tag="3")]
1617        pub max_value: ::core::option::Option<i64>,
1618    }
1619}
1620// End of protos/perfetto/config/chrome/histogram_samples.proto
1621
1622// Begin of protos/perfetto/config/chrome/system_metrics.proto
1623
1624#[derive(Clone, PartialEq, ::prost::Message)]
1625pub struct ChromiumSystemMetricsConfig {
1626    /// Samples counters every X ms.
1627    #[prost(uint32, optional, tag="1")]
1628    pub sampling_interval_ms: ::core::option::Option<u32>,
1629}
1630// End of protos/perfetto/config/chrome/system_metrics.proto
1631
1632// Begin of protos/perfetto/config/chrome/v8_config.proto
1633
1634#[derive(Clone, PartialEq, ::prost::Message)]
1635pub struct V8Config {
1636    /// Whether to log the actual content of scripts (e.g. content of the JS file
1637    /// that was compiled to generate code).
1638    /// ATTENTION: This could considerably increase the size of the resuling trace
1639    ///             file.
1640    #[prost(bool, optional, tag="1")]
1641    pub log_script_sources: ::core::option::Option<bool>,
1642    /// Whether to log the generated code for jitted functions (machine code or
1643    /// bytecode).
1644    /// ATTENTION: This could considerably increase the size of the resuling trace
1645    ///             file.
1646    #[prost(bool, optional, tag="2")]
1647    pub log_instructions: ::core::option::Option<bool>,
1648}
1649// End of protos/perfetto/config/chrome/v8_config.proto
1650
1651// Begin of protos/perfetto/config/etw/etw_config.proto
1652
1653/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1654/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1655/// ns-evntrace-event_trace_properties
1656#[derive(Clone, PartialEq, ::prost::Message)]
1657pub struct EtwConfig {
1658    /// The kernel_flags determines the flags that will be used by the etw tracing
1659    /// session. These kernel flags have been built to expose the useful events
1660    /// captured from the kernel mode only.
1661    #[deprecated]
1662    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1663    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1664    // See the list of keywords for for individual providers.
1665    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1666
1667    /// Provides events relating to the scheduler.
1668    #[prost(string, repeated, tag="2")]
1669    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1670    /// Provides events relating to the memory manager.
1671    #[prost(string, repeated, tag="3")]
1672    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1673    /// Provides events relating to file I/O.
1674    #[deprecated]
1675    #[prost(string, repeated, tag="4")]
1676    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1677    /// Events for which stacks should be collected.
1678    #[prost(string, repeated, tag="5")]
1679    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1680    /// Provides events relating to disk I/O.
1681    #[deprecated]
1682    #[prost(string, repeated, tag="6")]
1683    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1684    /// Provides events relating to multiple kinds of IO including disk, cache, and
1685    /// network.
1686    #[prost(string, repeated, tag="7")]
1687    pub system_io_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1688}
1689/// Nested message and enum types in `EtwConfig`.
1690pub mod etw_config {
1691    /// The KernelFlag represent list of kernel flags that we are intrested in.
1692    /// To get a more extensive list run 'xperf -providers k'.
1693    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1694    #[repr(i32)]
1695    pub enum KernelFlag {
1696        Cswitch = 0,
1697        Dispatcher = 1,
1698    }
1699    impl KernelFlag {
1700        /// String value of the enum field names used in the ProtoBuf definition.
1701        ///
1702        /// The values are not transformed in any way and thus are considered stable
1703        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1704        pub fn as_str_name(&self) -> &'static str {
1705            match self {
1706                KernelFlag::Cswitch => "CSWITCH",
1707                KernelFlag::Dispatcher => "DISPATCHER",
1708            }
1709        }
1710    }
1711}
1712// End of protos/perfetto/config/etw/etw_config.proto
1713
1714// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1715
1716#[derive(Clone, PartialEq, ::prost::Message)]
1717pub struct FrozenFtraceConfig {
1718    /// The instance name which stores the previous boot ftrace data. Required.
1719    #[prost(string, optional, tag="1")]
1720    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1721}
1722// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1723
1724// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1725
1726/// Next id: 38
1727#[derive(Clone, PartialEq, ::prost::Message)]
1728pub struct FtraceConfig {
1729    /// Ftrace events to record, example: "sched/sched_switch".
1730    #[prost(string, repeated, tag="1")]
1731    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1732    /// Android-specific event categories:
1733    #[prost(string, repeated, tag="2")]
1734    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1735    #[prost(string, repeated, tag="3")]
1736    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1737    /// Some processes can emit data through atrace or through the perfetto SDK via
1738    /// the "track_event" data source. For these categories, the SDK will be
1739    /// preferred, if possible, for this config.
1740    #[prost(string, repeated, tag="28")]
1741    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1742    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1743    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1744    /// events for convenience (and the vendor-specific events on top).
1745    /// Introduced in: perfetto v52.
1746    #[prost(bool, optional, tag="34")]
1747    pub atrace_userspace_only: ::core::option::Option<bool>,
1748    /// Size of each per-cpu kernel ftrace ring buffer.
1749    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1750    /// buffers cannot be resized without pausing recording in the kernel.
1751    #[prost(uint32, optional, tag="10")]
1752    pub buffer_size_kb: ::core::option::Option<u32>,
1753    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1754    /// implementation to choose a bigger buffer size.
1755    ///
1756    /// Most configs for perfetto v43+ should simply leave both fields unset.
1757    ///
1758    /// If you need a config compatible with a range of perfetto builds and you
1759    /// used to set a non-default buffer_size_kb, consider setting both fields.
1760    /// Example:
1761    ///    buffer_size_kb: 4096
1762    ///    buffer_size_lower_bound: true
1763    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1764    /// On v43+, buffers will be at least 4 MB.
1765    /// In both cases, neither is guaranteed if there are other concurrent
1766    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1767    /// the recording in the kernel.
1768    /// Introduced in: perfetto v43.
1769    #[prost(bool, optional, tag="27")]
1770    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1771    /// If set, specifies how often the tracing daemon reads from the kernel ring
1772    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1773    /// Leave unset unless you're fine-tuning a local config.
1774    #[prost(uint32, optional, tag="11")]
1775    pub drain_period_ms: ::core::option::Option<u32>,
1776    /// If set, the tracing daemon will read kernel ring buffers as soon as
1777    /// they're filled past this percentage of occupancy. In other words, a value
1778    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1779    /// half-full. Not guaranteed if there are multiple concurrent tracing
1780    /// sessions.
1781    /// Currently does nothing on Linux kernels below v6.9.
1782    /// Introduced in: perfetto v48.
1783    #[prost(uint32, optional, tag="29")]
1784    pub drain_buffer_percent: ::core::option::Option<u32>,
1785    #[prost(message, optional, tag="12")]
1786    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1787    #[prost(message, optional, tag="22")]
1788    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1789    /// Enables symbol name resolution against /proc/kallsyms.
1790    /// It requires that either traced_probes is running as root or that
1791    /// kptr_restrict has been manually lowered.
1792    /// It does not disclose KASLR, symbol addresses are mangled.
1793    #[prost(bool, optional, tag="13")]
1794    pub symbolize_ksyms: ::core::option::Option<bool>,
1795    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1796    pub ksyms_mem_policy: ::core::option::Option<i32>,
1797    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1798    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1799    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1800    /// The historical context for this is the following:
1801    /// - Up to Android S (12), the rss_stat was internally throttled in its
1802    ///    kernel implementation.
1803    /// - A change introduced in the kernels after S has introduced a new
1804    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1805    ///    (hence very spammy).
1806    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1807    ///    need to deal with both cases.
1808    /// For more context: go/rss-stat-throttled.
1809    #[prost(bool, optional, tag="15")]
1810    pub throttle_rss_stat: ::core::option::Option<bool>,
1811    /// If true, use self-describing proto messages when writing events not known
1812    /// at compile time (aka generic events). Each event bundle will have a set of
1813    /// serialised proto descriptors for events within that bundle.
1814    ///
1815    /// Default if unset:
1816    /// * v53+: true
1817    /// * before v53: false
1818    ///
1819    /// Added in: perfetto v50.
1820    #[prost(bool, optional, tag="32")]
1821    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1822    /// If true, avoid enabling events that aren't statically known by
1823    /// traced_probes. Otherwise, the default is to emit such events as
1824    /// GenericFtraceEvent protos.
1825    /// Prefer to keep this flag at its default. This was added for Android
1826    /// tracing, where atrace categories and/or atrace HAL requested events can
1827    /// expand to events that aren't of interest to the tracing user.
1828    /// Introduced in: Android T.
1829    #[prost(bool, optional, tag="16")]
1830    pub disable_generic_events: ::core::option::Option<bool>,
1831    /// The subset of syscalls to record. To record all syscalls, leave this unset
1832    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1833    /// * before perfetto v43, requires the config to also enable
1834    ///    raw_syscalls/sys_{enter,exit}.
1835    /// * perfetto v43+ does the right thing if you set only this field.
1836    /// Example: ["sys_read", "sys_open"].
1837    /// Introduced in: Android U.
1838    #[prost(string, repeated, tag="18")]
1839    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1840    /// If true, enable the "function_graph" kernel tracer that emits events
1841    /// whenever a kernel function is entered and exited
1842    /// (funcgraph_entry/funcgraph_exit).
1843    /// Notes on use:
1844    /// * Requires |symbolize_ksyms| for function name resolution.
1845    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1846    ///    set of functions, otherwise the event bandwidth will be too high for
1847    ///    practical use.
1848    /// * The data source might be rejected if there is already a concurrent
1849    ///    ftrace data source that does not use function graph itself, as we do not
1850    ///    support switching kernel tracers mid-trace.
1851    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1852    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1853    ///    "function_graph".
1854    /// Android:
1855    /// * Available only on debuggable builds.
1856    /// * Introduced in: Android U.
1857    #[prost(bool, optional, tag="19")]
1858    pub enable_function_graph: ::core::option::Option<bool>,
1859    /// Constrains the set of functions traced when |enable_function_graph| is
1860    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1861    /// in which case all matching functions will be traced. See kernel
1862    /// documentation on ftrace "set_ftrace_filter" file for more details.
1863    /// Android:
1864    /// * Available only on debuggable builds.
1865    /// * Introduced in: Android U.
1866    #[prost(string, repeated, tag="20")]
1867    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1868    /// If |enable_function_graph| is true, trace this set of functions *and* all
1869    /// of its callees. Supports globs. Can be set together with
1870    /// |function_filters|, in which case only callees matching the filter will be
1871    /// traced. If setting both, you most likely want all roots to also be
1872    /// included in |function_filters|.
1873    /// Android:
1874    /// * Available only on debuggable builds.
1875    /// * Introduced in: Android U.
1876    #[prost(string, repeated, tag="21")]
1877    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1878    /// If |enable_function_graph| is true, only trace the specified
1879    /// number of calls down the stack. Sets the max_graph_depth value
1880    /// in sys/kernel/tracing/
1881    ///
1882    /// Only respected for the first tracing session that enables
1883    /// function_graph tracing.
1884    ///
1885    /// Introduced in: perfetto v51.
1886    /// Supported on: Android 25Q3+.
1887    #[prost(uint32, optional, tag="33")]
1888    pub function_graph_max_depth: ::core::option::Option<u32>,
1889    /// Ftrace events to record, specific for kprobes and kretprobes
1890    #[prost(message, repeated, tag="30")]
1891    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1892    /// If true, does not clear kernel ftrace buffers when starting the trace.
1893    /// This makes sense only if this is the first ftrace data source instance
1894    /// created after the daemon has been started. Can be useful for gathering boot
1895    /// traces, if ftrace has been separately configured (e.g. via kernel
1896    /// commandline).
1897    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1898    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1899    /// anything besides ftrace. Otherwise timestamps might be skewed.
1900    #[prost(bool, optional, tag="23")]
1901    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1902    /// If true, overrides the default timestamp clock and uses a raw hardware
1903    /// based monotonic clock for getting timestamps.
1904    /// * Introduced in: Android U.
1905    #[prost(bool, optional, tag="24")]
1906    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1907    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1908    /// for event recording. Normally, this means
1909    /// `/sys/kernel/tracing/instances/$instance_name`.
1910    ///
1911    /// Names "hyp" and "hypervisor" are reserved.
1912    ///
1913    /// The instance must already exist, the tracing daemon *will not* create it
1914    /// for you as it typically doesn't have such permissions.
1915    /// Only a subset of features is guaranteed to work with non-default instances,
1916    /// at the time of writing:
1917    ///   * ftrace_events
1918    ///   * buffer_size_kb
1919    #[prost(string, optional, tag="25")]
1920    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1921    /// For perfetto developer use. If true and on a debuggable android build,
1922    /// serialise raw tracing pages that the implementation cannot parse.
1923    #[prost(bool, optional, tag="31")]
1924    pub debug_ftrace_abi: ::core::option::Option<bool>,
1925    // =================================================
1926    // Exclusive single-tenant features: HERE BE DRAGONS
1927    // =================================================
1928    // The features below are considered "advanced" and require an exclusive
1929    // tracing session (as of Android 25Q3+ and Perfetto v52).
1930    //
1931    // These features directly manipulate the kernel's global ftrace state and
1932    // are incompatible with concurrent ftrace sessions. They are only enabled
1933    // if included in the *first* ftrace data source configured. Subsequent
1934    // ftrace data sources (even those not using advanced features) will be
1935    // rejected while a session with these features is active.
1936    //
1937    // To run the session in exclusive mode, see:
1938    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1939
1940    /// Filter ftrace events by Thread ID (TID).
1941    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
1942    ///
1943    /// Note: this is an exclusive feature, see:
1944    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1945    ///
1946    /// Introduced in: perfetto v52.
1947    /// Supported on: Android 25Q3+.
1948    #[prost(uint32, repeated, packed="false", tag="35")]
1949    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
1950    #[prost(message, repeated, tag="36")]
1951    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
1952    /// This mask restricts tracing to a specific set of CPUs using a
1953    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
1954    /// 32-bit chunk of the CPU mask.
1955    ///
1956    /// The chunks are ordered from high CPUs to low CPUs (left to right):
1957    ///    - Rightmost chunk: CPUs 0-31
1958    ///    - 2nd chunk from right: CPUs 32-63
1959    ///    - ...and so on.
1960    ///
1961    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
1962    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
1963    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
1964    /// chunk0 to 0-31.
1965    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
1966    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
1967    ///
1968    /// Note: This is an exclusive feature, see:
1969    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1970    ///
1971    /// Introduced in: perfetto v52.
1972    /// Supported on: Android 25Q3+.
1973    #[prost(string, optional, tag="37")]
1974    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
1975    /// No-op in perfetto v28+. Name preserved because of existing references in
1976    /// textproto configs.
1977    #[deprecated]
1978    #[prost(bool, optional, tag="14")]
1979    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1980}
1981/// Nested message and enum types in `FtraceConfig`.
1982pub mod ftrace_config {
1983    /// Configuration for compact encoding of scheduler events. When enabled (and
1984    /// recording the relevant ftrace events), specific high-volume events are
1985    /// encoded in a denser format than normal.
1986    #[derive(Clone, PartialEq, ::prost::Message)]
1987    pub struct CompactSchedConfig {
1988        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1989        /// record those events in the compact format.
1990        ///
1991        /// If the field is unset, the default is:
1992        /// * perfetto v42.0+: enabled
1993        /// * before: disabled
1994        #[prost(bool, optional, tag="1")]
1995        pub enabled: ::core::option::Option<bool>,
1996    }
1997    /// Optional filter for "ftrace/print" events.
1998    ///
1999    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2000    /// are processed in order), its `allow` field will be used as the outcome: if
2001    /// `allow` is true, the event will be included in the trace, otherwise it will
2002    /// be discarded. If an event does not match any rule, it will be allowed by
2003    /// default (a rule with an empty prefix and allow=false, disallows everything
2004    /// by default).
2005    #[derive(Clone, PartialEq, ::prost::Message)]
2006    pub struct PrintFilter {
2007        #[prost(message, repeated, tag="1")]
2008        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2009    }
2010    /// Nested message and enum types in `PrintFilter`.
2011    pub mod print_filter {
2012        #[derive(Clone, PartialEq, ::prost::Message)]
2013        pub struct Rule {
2014            #[prost(bool, optional, tag="2")]
2015            pub allow: ::core::option::Option<bool>,
2016            #[prost(oneof="rule::Match", tags="1, 3")]
2017            pub r#match: ::core::option::Option<rule::Match>,
2018        }
2019        /// Nested message and enum types in `Rule`.
2020        pub mod rule {
2021            /// Matches an atrace message of the form:
2022            /// <type>|pid|<prefix>...
2023            #[derive(Clone, PartialEq, ::prost::Message)]
2024            pub struct AtraceMessage {
2025                #[prost(string, optional, tag="1")]
2026                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2027                #[prost(string, optional, tag="2")]
2028                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2029            }
2030            #[derive(Clone, PartialEq, ::prost::Oneof)]
2031            pub enum Match {
2032                /// This rule matches if `prefix` matches exactly with the beginning of
2033                /// the "ftrace/print" "buf" field.
2034                #[prost(string, tag="1")]
2035                Prefix(::prost::alloc::string::String),
2036                /// This rule matches if the "buf" field contains an atrace-style print
2037                /// message as specified in `atrace_msg`.
2038                #[prost(message, tag="3")]
2039                AtraceMsg(AtraceMessage),
2040            }
2041        }
2042    }
2043    #[derive(Clone, PartialEq, ::prost::Message)]
2044    pub struct KprobeEvent {
2045        /// Kernel function name to attach to, for example "fuse_file_write_iter"
2046        #[prost(string, optional, tag="1")]
2047        pub probe: ::core::option::Option<::prost::alloc::string::String>,
2048        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
2049        pub r#type: ::core::option::Option<i32>,
2050    }
2051    /// Nested message and enum types in `KprobeEvent`.
2052    pub mod kprobe_event {
2053        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2054        #[repr(i32)]
2055        pub enum KprobeType {
2056            Unknown = 0,
2057            Kprobe = 1,
2058            Kretprobe = 2,
2059            Both = 3,
2060        }
2061        impl KprobeType {
2062            /// String value of the enum field names used in the ProtoBuf definition.
2063            ///
2064            /// The values are not transformed in any way and thus are considered stable
2065            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2066            pub fn as_str_name(&self) -> &'static str {
2067                match self {
2068                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
2069                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
2070                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
2071                    KprobeType::Both => "KPROBE_TYPE_BOTH",
2072                }
2073            }
2074        }
2075    }
2076    /// Tracefs options to set directly in the tracefs instance. This is a very
2077    /// niche feature since almost all of the options deal with formatting textual
2078    /// output (the /trace file), which perfetto doesn't use.
2079    ///
2080    /// The options with a known use-case:
2081    /// * event-fork: when using `tids_to_trace` above, the kernel will
2082    ///    automatically add newly spawned descendant threads to the set of TIDs.
2083    ///
2084    /// Full list of options is available at
2085    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
2086    ///
2087    /// Note: this is an exclusive feature, see:
2088    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2089    ///
2090    /// Introduced in: perfetto v52.
2091    /// Supported on: Android 25Q3+.
2092    #[derive(Clone, PartialEq, ::prost::Message)]
2093    pub struct TracefsOption {
2094        /// The name of the tracefs option as found in tracefs/trace_options (without
2095        /// the "no" prefix).
2096        #[prost(string, optional, tag="1")]
2097        pub name: ::core::option::Option<::prost::alloc::string::String>,
2098        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
2099        pub state: ::core::option::Option<i32>,
2100    }
2101    /// Nested message and enum types in `TracefsOption`.
2102    pub mod tracefs_option {
2103        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2104        #[repr(i32)]
2105        pub enum State {
2106            Unknown = 0,
2107            Enabled = 1,
2108            Disabled = 2,
2109        }
2110        impl State {
2111            /// String value of the enum field names used in the ProtoBuf definition.
2112            ///
2113            /// The values are not transformed in any way and thus are considered stable
2114            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2115            pub fn as_str_name(&self) -> &'static str {
2116                match self {
2117                    State::Unknown => "STATE_UNKNOWN",
2118                    State::Enabled => "STATE_ENABLED",
2119                    State::Disabled => "STATE_DISABLED",
2120                }
2121            }
2122        }
2123    }
2124    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
2125    /// should keep the symbol map in memory (and reuse it for future tracing
2126    /// sessions) or clear it (saving memory) and re-create it on each tracing
2127    /// session (wasting cpu and wall time).
2128    /// The tradeoff is roughly:
2129    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
2130    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
2131    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
2132    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2133    #[repr(i32)]
2134    pub enum KsymsMemPolicy {
2135        KsymsUnspecified = 0,
2136        KsymsCleanupOnStop = 1,
2137        KsymsRetain = 2,
2138    }
2139    impl KsymsMemPolicy {
2140        /// String value of the enum field names used in the ProtoBuf definition.
2141        ///
2142        /// The values are not transformed in any way and thus are considered stable
2143        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2144        pub fn as_str_name(&self) -> &'static str {
2145            match self {
2146                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
2147                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
2148                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
2149            }
2150        }
2151    }
2152}
2153// End of protos/perfetto/config/ftrace/ftrace_config.proto
2154
2155// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
2156
2157#[derive(Clone, PartialEq, ::prost::Message)]
2158pub struct GpuCounterConfig {
2159    /// Desired sampling interval for counters.
2160    #[prost(uint64, optional, tag="1")]
2161    pub counter_period_ns: ::core::option::Option<u64>,
2162    // Selects which counters to sample. Use either counter_ids or counter_names,
2163    // not both. Counter IDs and names correspond to the ones described in
2164    // GpuCounterSpec in the data source descriptor.
2165
2166    /// List of counter IDs to be sampled.
2167    #[prost(uint32, repeated, packed="false", tag="2")]
2168    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
2169    /// List of counter names to be sampled. Requires producer support; check
2170    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
2171    /// Glob patterns may be used to match multiple counters by name; check
2172    /// GpuCounterDescriptor.supports_counter_name_globs for support.
2173    #[prost(string, repeated, tag="6")]
2174    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2175    /// Fix gpu clock rate during trace session.
2176    #[prost(bool, optional, tag="4")]
2177    pub fix_gpu_clock: ::core::option::Option<bool>,
2178    /// Sample counters by instrumenting command buffers.
2179    #[prost(oneof="gpu_counter_config::InstrumentedSamplingMode", tags="3, 5")]
2180    pub instrumented_sampling_mode: ::core::option::Option<gpu_counter_config::InstrumentedSamplingMode>,
2181}
2182/// Nested message and enum types in `GpuCounterConfig`.
2183pub mod gpu_counter_config {
2184    /// Configuration for sampling counters by instrumenting command buffers.
2185    ///
2186    /// When instrumented_sampling_config is used (instead of the
2187    /// instrumented_sampling bool), the following steps determine whether
2188    /// instrumented counters are enabled for a given GPU activity:
2189    ///
2190    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
2191    ///     activity must match at least one filter. If empty, all activities
2192    ///     pass this step.
2193    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
2194    ///     activity must fall within a matching TX range. Activities in TX
2195    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
2196    ///     take precedence over includes). If both are empty, all activities
2197    ///     pass this step.
2198    /// 3. Range-based sampling: If activity_ranges is non-empty, only
2199    ///     activities within the specified skip/count ranges are instrumented.
2200    ///     If empty, all activities that passed the previous steps are
2201    ///     instrumented.
2202    #[derive(Clone, PartialEq, ::prost::Message)]
2203    pub struct InstrumentedSamplingConfig {
2204        /// GPU activity name filters. An activity matches if it matches any filter.
2205        #[prost(message, repeated, tag="3")]
2206        pub activity_name_filters: ::prost::alloc::vec::Vec<instrumented_sampling_config::ActivityNameFilter>,
2207        /// Glob patterns to use for including GPU activities in TX ranges. TX
2208        /// ranges are in-process annotations that mark different sections of GPU
2209        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
2210        /// activity is included if any range in its nesting hierarchy matches.
2211        /// Only activities that fall within a matching TX range will be
2212        /// instrumented.
2213        #[prost(string, repeated, tag="6")]
2214        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2215        /// Glob patterns to use for excluding GPU activities from TX ranges.
2216        /// TX ranges can be nested, and an activity is excluded if any range
2217        /// in its nesting hierarchy matches. Excludes take precedence over
2218        /// includes.
2219        #[prost(string, repeated, tag="7")]
2220        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2221        /// Ranges of GPU activities to instrument. Applied after activity name
2222        /// and TX range filters. If empty, all activities that passed the
2223        /// previous filters are instrumented.
2224        #[prost(message, repeated, tag="5")]
2225        pub activity_ranges: ::prost::alloc::vec::Vec<instrumented_sampling_config::ActivityRange>,
2226    }
2227    /// Nested message and enum types in `InstrumentedSamplingConfig`.
2228    pub mod instrumented_sampling_config {
2229        /// Filters GPU activities by name. Each filter specifies a glob pattern
2230        /// and the basis for matching (mangled or demangled kernel name).
2231        #[derive(Clone, PartialEq, ::prost::Message)]
2232        pub struct ActivityNameFilter {
2233            /// required. Glob pattern to use for GPU activity name filtering.
2234            #[prost(string, optional, tag="1")]
2235            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
2236            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
2237            /// specified.
2238            #[prost(enumeration="activity_name_filter::NameBase", optional, tag="2")]
2239            pub name_base: ::core::option::Option<i32>,
2240        }
2241        /// Nested message and enum types in `ActivityNameFilter`.
2242        pub mod activity_name_filter {
2243            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2244            #[repr(i32)]
2245            pub enum NameBase {
2246                /// Match against the mangled (compiler-encoded) kernel name.
2247                /// Example: for a kernel whose demangled name is
2248                /// "matmul(float*,int,int)", the mangled name might be
2249                /// "_Z6matmulPfii". The glob pattern is matched against this
2250                /// mangled form.
2251                MangledKernelName = 0,
2252                /// Match against the fully demangled kernel name, including
2253                /// parameters, templates, and qualifiers.
2254                /// Example: "matmul(float*,int,int)". The glob pattern is
2255                /// matched against this full demangled form.
2256                DemangledKernelName = 1,
2257                /// Match against only the function name portion of the
2258                /// demangled kernel name, without parameters, templates,
2259                /// return types, or namespaces.
2260                /// Example: "matmul". The glob pattern is matched against
2261                /// just the bare function name.
2262                FunctionName = 2,
2263            }
2264            impl NameBase {
2265                /// String value of the enum field names used in the ProtoBuf definition.
2266                ///
2267                /// The values are not transformed in any way and thus are considered stable
2268                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2269                pub fn as_str_name(&self) -> &'static str {
2270                    match self {
2271                        NameBase::MangledKernelName => "MANGLED_KERNEL_NAME",
2272                        NameBase::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
2273                        NameBase::FunctionName => "FUNCTION_NAME",
2274                    }
2275                }
2276            }
2277        }
2278        /// Defines a range of GPU activities to instrument.
2279        #[derive(Clone, PartialEq, ::prost::Message)]
2280        pub struct ActivityRange {
2281            /// Number of GPU activities to skip before starting to instrument
2282            /// command buffers. Defaults to 0 if not specified.
2283            #[prost(uint32, optional, tag="1")]
2284            pub skip: ::core::option::Option<u32>,
2285            /// Limit for the number of GPU activities to sample counters for by
2286            /// instrumenting command buffers. Defaults to UINT32_MAX (all
2287            /// remaining activities) if not specified.
2288            #[prost(uint32, optional, tag="2")]
2289            pub count: ::core::option::Option<u32>,
2290        }
2291    }
2292    /// Sample counters by instrumenting command buffers.
2293    #[derive(Clone, PartialEq, ::prost::Oneof)]
2294    pub enum InstrumentedSamplingMode {
2295        #[prost(bool, tag="3")]
2296        InstrumentedSampling(bool),
2297        #[prost(message, tag="5")]
2298        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
2299    }
2300}
2301// End of protos/perfetto/config/gpu/gpu_counter_config.proto
2302
2303// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
2304
2305#[derive(Clone, PartialEq, ::prost::Message)]
2306pub struct GpuRenderStagesConfig {
2307    /// Enable to separate the color and depth/stencil load and store stages
2308    /// into a separate stages. If disabled, the depth/stencil load and store
2309    /// stages will be combined.  Disabled by default. This option has no effect if
2310    /// Low Overhead mode is enabled.
2311    #[prost(bool, optional, tag="1")]
2312    pub full_loadstore: ::core::option::Option<bool>,
2313    /// Use the low overhead mode for traces. In this mode render stages are
2314    /// combined into a single workload stage. This provides less granular data but
2315    /// induces minimal GPU overhead. Disabled by default.
2316    #[prost(bool, optional, tag="2")]
2317    pub low_overhead: ::core::option::Option<bool>,
2318    /// Trace metrics to capture for each render stage
2319    #[prost(string, repeated, tag="3")]
2320    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2321}
2322// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
2323
2324// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
2325
2326#[derive(Clone, PartialEq, ::prost::Message)]
2327pub struct VulkanMemoryConfig {
2328    /// Tracking driver memory usage events
2329    #[prost(bool, optional, tag="1")]
2330    pub track_driver_memory_usage: ::core::option::Option<bool>,
2331    /// Tracking device memory usage events
2332    #[prost(bool, optional, tag="2")]
2333    pub track_device_memory_usage: ::core::option::Option<bool>,
2334}
2335// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
2336
2337// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
2338
2339/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2340/// systems.
2341#[derive(Clone, PartialEq, ::prost::Message)]
2342pub struct InodeFileConfig {
2343    /// How long to pause between batches.
2344    #[prost(uint32, optional, tag="1")]
2345    pub scan_interval_ms: ::core::option::Option<u32>,
2346    /// How long to wait before the first scan in order to accumulate inodes.
2347    #[prost(uint32, optional, tag="2")]
2348    pub scan_delay_ms: ::core::option::Option<u32>,
2349    /// How many inodes to scan in one batch.
2350    #[prost(uint32, optional, tag="3")]
2351    pub scan_batch_size: ::core::option::Option<u32>,
2352    /// Do not scan for inodes not found in the static map.
2353    #[prost(bool, optional, tag="4")]
2354    pub do_not_scan: ::core::option::Option<bool>,
2355    /// If non-empty, only scan inodes corresponding to block devices named in
2356    /// this list.
2357    #[prost(string, repeated, tag="5")]
2358    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2359    /// When encountering an inode belonging to a block device corresponding
2360    /// to one of the mount points in this map, scan its scan_roots instead.
2361    #[prost(message, repeated, tag="6")]
2362    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
2363}
2364/// Nested message and enum types in `InodeFileConfig`.
2365pub mod inode_file_config {
2366    #[derive(Clone, PartialEq, ::prost::Message)]
2367    pub struct MountPointMappingEntry {
2368        #[prost(string, optional, tag="1")]
2369        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2370        #[prost(string, repeated, tag="2")]
2371        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2372    }
2373}
2374// End of protos/perfetto/config/inode_file/inode_file_config.proto
2375
2376// Begin of protos/perfetto/config/interceptors/console_config.proto
2377
2378#[derive(Clone, PartialEq, ::prost::Message)]
2379pub struct ConsoleConfig {
2380    #[prost(enumeration="console_config::Output", optional, tag="1")]
2381    pub output: ::core::option::Option<i32>,
2382    #[prost(bool, optional, tag="2")]
2383    pub enable_colors: ::core::option::Option<bool>,
2384}
2385/// Nested message and enum types in `ConsoleConfig`.
2386pub mod console_config {
2387    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2388    #[repr(i32)]
2389    pub enum Output {
2390        Unspecified = 0,
2391        Stdout = 1,
2392        Stderr = 2,
2393    }
2394    impl Output {
2395        /// String value of the enum field names used in the ProtoBuf definition.
2396        ///
2397        /// The values are not transformed in any way and thus are considered stable
2398        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2399        pub fn as_str_name(&self) -> &'static str {
2400            match self {
2401                Output::Unspecified => "OUTPUT_UNSPECIFIED",
2402                Output::Stdout => "OUTPUT_STDOUT",
2403                Output::Stderr => "OUTPUT_STDERR",
2404            }
2405        }
2406    }
2407}
2408// End of protos/perfetto/config/interceptors/console_config.proto
2409
2410// Begin of protos/perfetto/config/interceptor_config.proto
2411
2412/// Configuration for trace packet interception. Used for diverting trace data to
2413/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2414/// Perfetto SDK.
2415#[derive(Clone, PartialEq, ::prost::Message)]
2416pub struct InterceptorConfig {
2417    /// Matches the name given to RegisterInterceptor().
2418    #[prost(string, optional, tag="1")]
2419    pub name: ::core::option::Option<::prost::alloc::string::String>,
2420    #[prost(message, optional, tag="100")]
2421    pub console_config: ::core::option::Option<ConsoleConfig>,
2422}
2423// End of protos/perfetto/config/interceptor_config.proto
2424
2425// Begin of protos/perfetto/config/linux/journald_config.proto
2426
2427/// Configuration for the "linux.systemd_journald" data source.
2428/// Next field id: 4
2429#[derive(Clone, PartialEq, ::prost::Message)]
2430pub struct SystemdJournaldConfig {
2431    /// Minimum syslog priority level to capture (inclusive).
2432    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
2433    /// Default (0 / unset): capture all priorities (equivalent to 7).
2434    #[prost(uint32, optional, tag="1")]
2435    pub min_prio: ::core::option::Option<u32>,
2436    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
2437    /// matches one of these strings.
2438    #[prost(string, repeated, tag="2")]
2439    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2440    /// If non-empty, only capture journal entries from these systemd unit names.
2441    #[prost(string, repeated, tag="3")]
2442    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2443}
2444// End of protos/perfetto/config/linux/journald_config.proto
2445
2446// Begin of protos/perfetto/config/power/android_power_config.proto
2447
2448#[derive(Clone, PartialEq, ::prost::Message)]
2449pub struct AndroidPowerConfig {
2450    #[prost(uint32, optional, tag="1")]
2451    pub battery_poll_ms: ::core::option::Option<u32>,
2452    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
2453    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2454    /// Where available enables per-power-rail measurements.
2455    #[prost(bool, optional, tag="3")]
2456    pub collect_power_rails: ::core::option::Option<bool>,
2457    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2458    /// Available from Android S.
2459    #[prost(bool, optional, tag="4")]
2460    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2461    /// Provides a breakdown of time in state for various subsystems.
2462    /// Available from Android U.
2463    #[prost(bool, optional, tag="5")]
2464    pub collect_entity_state_residency: ::core::option::Option<bool>,
2465}
2466/// Nested message and enum types in `AndroidPowerConfig`.
2467pub mod android_power_config {
2468    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2469    #[repr(i32)]
2470    pub enum BatteryCounters {
2471        BatteryCounterUnspecified = 0,
2472        /// Coulomb counter.
2473        BatteryCounterCharge = 1,
2474        /// Charge (%).
2475        BatteryCounterCapacityPercent = 2,
2476        /// Instantaneous current.
2477        BatteryCounterCurrent = 3,
2478        /// Avg current.
2479        BatteryCounterCurrentAvg = 4,
2480        /// Instantaneous voltage.
2481        BatteryCounterVoltage = 5,
2482    }
2483    impl BatteryCounters {
2484        /// String value of the enum field names used in the ProtoBuf definition.
2485        ///
2486        /// The values are not transformed in any way and thus are considered stable
2487        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2488        pub fn as_str_name(&self) -> &'static str {
2489            match self {
2490                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2491                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2492                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2493                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2494                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2495                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2496            }
2497        }
2498    }
2499}
2500// End of protos/perfetto/config/power/android_power_config.proto
2501
2502// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
2503
2504/// Configuration that allows to boost the priority of the 'traced' or
2505/// 'traced_probs' processes, by changing the scheduler configuration.
2506/// Only supported on Linux and Android the boosted process must have
2507/// 'CAP_SYS_NICE' capability.
2508#[derive(Clone, PartialEq, ::prost::Message)]
2509pub struct PriorityBoostConfig {
2510    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
2511    pub policy: ::core::option::Option<i32>,
2512    #[prost(uint32, optional, tag="2")]
2513    pub priority: ::core::option::Option<u32>,
2514}
2515/// Nested message and enum types in `PriorityBoostConfig`.
2516pub mod priority_boost_config {
2517    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2518    #[repr(i32)]
2519    pub enum BoostPolicy {
2520        PolicyUnspecified = 0,
2521        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
2522        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2523        /// than default 0, 20 is the highest priority.
2524        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2525        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2526        PolicySchedOther = 1,
2527        /// The Real-time policy, Priority range: [1; 99]
2528        PolicySchedFifo = 2,
2529    }
2530    impl BoostPolicy {
2531        /// String value of the enum field names used in the ProtoBuf definition.
2532        ///
2533        /// The values are not transformed in any way and thus are considered stable
2534        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2535        pub fn as_str_name(&self) -> &'static str {
2536            match self {
2537                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
2538                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
2539                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
2540            }
2541        }
2542    }
2543}
2544// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
2545
2546/// Config for polling process-related information from /proc/pid/status and
2547/// related files on Linux.
2548///
2549/// Data source name: "linux.process_stats".
2550#[derive(Clone, PartialEq, ::prost::Message)]
2551pub struct ProcessStatsConfig {
2552    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
2553    pub quirks: ::prost::alloc::vec::Vec<i32>,
2554    /// If enabled all processes will be scanned and dumped when the trace starts.
2555    #[prost(bool, optional, tag="2")]
2556    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2557    /// If enabled thread names are also recoded (this is redundant if sched_switch
2558    /// is enabled).
2559    #[prost(bool, optional, tag="3")]
2560    pub record_thread_names: ::core::option::Option<bool>,
2561    /// If > 0 samples counters (see process_stats.proto) from
2562    /// /proc/pid/status and oom_score_adj every X ms.
2563    /// This is required to be > 100ms to avoid excessive CPU usage.
2564    #[prost(uint32, optional, tag="4")]
2565    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2566    // id 5 never used
2567
2568    /// Explicit caching period during which the polling won't re-emit identical
2569    /// counter values. This is required to be either = 0 or a multiple of
2570    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2571    /// rounded down to the nearest multiple.
2572    #[prost(uint32, optional, tag="6")]
2573    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2574    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2575    /// /proc/pid/smaps_rollup.
2576    ///
2577    /// Android: does NOT work with the system daemons by default, as it requires
2578    /// running the recording process (traced_probes or tracebox) as root. It is
2579    /// possible to avoid the root requirement, but the exact steps depend on the
2580    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2581    /// check, and might be further covered by the procfs "hidepid" mount option.
2582    #[prost(bool, optional, tag="10")]
2583    pub scan_smaps_rollup: ::core::option::Option<bool>,
2584    /// If true: process descriptions will include process age (starttime in
2585    /// /proc/pid/stat).
2586    /// Introduced in: perfetto v44.
2587    #[prost(bool, optional, tag="11")]
2588    pub record_process_age: ::core::option::Option<bool>,
2589    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2590    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2591    /// Introduced in: perfetto v44.
2592    #[prost(bool, optional, tag="12")]
2593    pub record_process_runtime: ::core::option::Option<bool>,
2594    /// If true obtain per-process dmabuf resident set size from
2595    /// /proc/pid/dmabuf_rss.
2596    /// This feature is not in upstream linux, and is available only on some
2597    /// Android kernels.
2598    #[prost(bool, optional, tag="13")]
2599    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
2600    /// WARNING: unmaintained and deprecated. If true this will resolve file
2601    /// descriptors for each process so these can be mapped to their actual device
2602    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
2603    /// or new fds opened after initially scanning a process will not be
2604    /// recognized.
2605    #[prost(bool, optional, tag="9")]
2606    pub resolve_process_fds: ::core::option::Option<bool>,
2607}
2608/// Nested message and enum types in `ProcessStatsConfig`.
2609pub mod process_stats_config {
2610    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2611    #[repr(i32)]
2612    pub enum Quirks {
2613        Unspecified = 0,
2614        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
2615        /// startup is now disabled by default and can be re-enabled using the
2616        /// |scan_all_processes_on_start| arg.
2617        DisableInitialDump = 1,
2618        /// If set, disables the special interaction with "linux.ftrace" data source,
2619        /// where the process stats rescrapes any thread id seen in the ftrace
2620        /// stream.
2621        DisableOnDemand = 2,
2622    }
2623    impl Quirks {
2624        /// String value of the enum field names used in the ProtoBuf definition.
2625        ///
2626        /// The values are not transformed in any way and thus are considered stable
2627        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2628        pub fn as_str_name(&self) -> &'static str {
2629            match self {
2630                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
2631                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
2632                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
2633            }
2634        }
2635    }
2636}
2637// End of protos/perfetto/config/process_stats/process_stats_config.proto
2638
2639// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
2640
2641/// Configuration for go/heapprofd.
2642/// Next id: 28
2643#[derive(Clone, PartialEq, ::prost::Message)]
2644pub struct HeapprofdConfig {
2645    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
2646    ///
2647    /// These are:
2648    /// * All heaps if heap_sampling_intervals is empty.
2649    /// * Those profiled due to all_heaps and not named in heaps if
2650    ///    heap_sampling_intervals is not empty.
2651    /// * The implicit libc.malloc heap if heaps is empty.
2652    ///
2653    /// Set to 1 for perfect accuracy.
2654    /// Otherwise, sample every sample_interval_bytes on average.
2655    ///
2656    /// See
2657    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
2658    /// for more details.
2659    ///
2660    /// BUGS
2661    /// Before Android 12, setting this to 0 would crash the target process.
2662    ///
2663    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
2664    /// this field or with heap_sampling_intervals), otherwise the producer will
2665    /// not start.
2666    #[prost(uint64, optional, tag="1")]
2667    pub sampling_interval_bytes: ::core::option::Option<u64>,
2668    /// If less than the given numbers of bytes are left free in the shared
2669    /// memory buffer, increase sampling interval by a factor of two.
2670    /// Adaptive sampling is disabled when set to 0.
2671    #[prost(uint64, optional, tag="24")]
2672    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
2673    /// Stop doubling the sampling_interval once the sampling interval has reached
2674    /// this value.
2675    #[prost(uint64, optional, tag="25")]
2676    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
2677    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
2678    /// as the following section (A), and on newer versions are both (A) and (B):
2679    ///
2680    /// (A) E.g. surfaceflinger, com.android.phone
2681    /// This input is normalized in the following way: if it contains slashes,
2682    /// everything up to the last slash is discarded. If it contains "@",
2683    /// everything after the first @ is discared.
2684    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
2685    /// This transformation is also applied to the processes' command lines when
2686    /// matching.
2687    ///
2688    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
2689    /// case it is matched against running processes' command lines using glob
2690    /// semantics. If the pattern starts with '/' it is matched against the full
2691    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
2692    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
2693    /// normalized as described above.
2694    /// Wildcard patterns are supported only for profiling already-running
2695    /// processes. A config must set no_startup=true if using wildcards, or it will
2696    /// be rejected.
2697    #[prost(string, repeated, tag="2")]
2698    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2699    /// For watermark based triggering or local debugging.
2700    #[prost(uint64, repeated, packed="false", tag="4")]
2701    pub pid: ::prost::alloc::vec::Vec<u64>,
2702    /// Only profile target if it was installed by one of the packages given.
2703    /// Special values are:
2704    /// * @system: installed on the system partition
2705    /// * @product: installed on the product partition
2706    /// * @null: sideloaded
2707    /// Supported on Android 12+.
2708    #[prost(string, repeated, tag="26")]
2709    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2710    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
2711    /// "malloc".
2712    ///
2713    /// Introduced in Android 12.
2714    #[prost(string, repeated, tag="20")]
2715    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2716    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
2717    /// combination with all_heaps;
2718    ///
2719    /// Introduced in Android 12.
2720    #[prost(string, repeated, tag="27")]
2721    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2722    #[prost(bool, optional, tag="23")]
2723    pub stream_allocations: ::core::option::Option<bool>,
2724    /// If given, needs to be the same length as heaps and gives the sampling
2725    /// interval for the respective entry in heaps.
2726    ///
2727    /// Otherwise, sampling_interval_bytes is used.
2728    ///
2729    /// It is recommended to set sampling_interval_bytes to a reasonable default
2730    /// value when using this, as a value of 0 for sampling_interval_bytes will
2731    /// crash the target process before Android 12.
2732    ///
2733    /// Introduced in Android 12.
2734    ///
2735    /// All values must be non-zero or the producer will not start.
2736    #[prost(uint64, repeated, packed="false", tag="22")]
2737    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2738    /// Sample all heaps registered by target process. Introduced in Android 12.
2739    #[prost(bool, optional, tag="21")]
2740    pub all_heaps: ::core::option::Option<bool>,
2741    /// Profile all processes eligible for profiling on the system.
2742    /// See
2743    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2744    /// for which processes are eligible.
2745    ///
2746    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2747    /// will crash when trying to launch a new process as it will have an
2748    /// unexpected open socket to heapprofd.
2749    ///
2750    /// heapprofd will likely be overloaded by the amount of data for low
2751    /// sampling intervals.
2752    #[prost(bool, optional, tag="5")]
2753    pub all: ::core::option::Option<bool>,
2754    /// Do not profile processes whose anon RSS + swap < given value.
2755    /// Introduced in Android 11.
2756    #[prost(uint32, optional, tag="15")]
2757    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2758    /// Stop profile if heapprofd memory usage goes beyond the given value.
2759    /// Introduced in Android 11.
2760    #[prost(uint32, optional, tag="16")]
2761    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2762    /// Stop profile if heapprofd CPU time since start of this data-source
2763    /// goes beyond given value.
2764    /// Introduced in Android 11.
2765    #[prost(uint64, optional, tag="17")]
2766    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2767    /// Do not emit function names for mappings starting with this prefix.
2768    /// E.g. /system to not emit symbols for any system libraries.
2769    #[prost(string, repeated, tag="7")]
2770    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2771    /// Dump at a predefined interval.
2772    #[prost(message, optional, tag="6")]
2773    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2774    /// Size of the shared memory buffer between the profiled processes and
2775    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2776    /// MiB.
2777    ///
2778    /// Needs to be:
2779    /// * at least 8192,
2780    /// * a power of two,
2781    /// * a multiple of 4096.
2782    #[prost(uint64, optional, tag="8")]
2783    pub shmem_size_bytes: ::core::option::Option<u64>,
2784    /// When the shmem buffer is full, block the client instead of ending the
2785    /// trace. Use with caution as this will significantly slow down the target
2786    /// process.
2787    #[prost(bool, optional, tag="9")]
2788    pub block_client: ::core::option::Option<bool>,
2789    /// If set, stop the trace session after blocking the client for this
2790    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2791    /// Introduced in Android 11.
2792    #[prost(uint32, optional, tag="14")]
2793    pub block_client_timeout_us: ::core::option::Option<u32>,
2794    /// Do not profile processes from startup, only match already running
2795    /// processes.
2796    ///
2797    /// Can not be set at the same time as no_running.
2798    /// Introduced in Android 11.
2799    #[prost(bool, optional, tag="10")]
2800    pub no_startup: ::core::option::Option<bool>,
2801    /// Do not profile running processes. Only match processes on startup.
2802    ///
2803    /// Can not be set at the same time as no_startup.
2804    /// Introduced in Android 11.
2805    #[prost(bool, optional, tag="11")]
2806    pub no_running: ::core::option::Option<bool>,
2807    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2808    /// at the point in time when the sampled heap usage of the process was at its
2809    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2810    /// self_allocated and self_freed to not be set.
2811    /// Introduced in Android 11.
2812    #[prost(bool, optional, tag="13")]
2813    pub dump_at_max: ::core::option::Option<bool>,
2814    // FEATURE FLAGS. THERE BE DRAGONS.
2815
2816    /// Escape hatch if the session is being torn down because of a forked child
2817    /// that shares memory space, but is not correctly identified as a vforked
2818    /// child.
2819    /// Introduced in Android 11.
2820    #[prost(bool, optional, tag="18")]
2821    pub disable_fork_teardown: ::core::option::Option<bool>,
2822    /// We try to automatically detect when a target applicatation vforks but then
2823    /// does a memory allocation (or free). This auto-detection can be disabled
2824    /// with this.
2825    /// Introduced in Android 11.
2826    #[prost(bool, optional, tag="19")]
2827    pub disable_vfork_detection: ::core::option::Option<bool>,
2828}
2829/// Nested message and enum types in `HeapprofdConfig`.
2830pub mod heapprofd_config {
2831    #[derive(Clone, PartialEq, ::prost::Message)]
2832    pub struct ContinuousDumpConfig {
2833        /// ms to wait before first dump.
2834        #[prost(uint32, optional, tag="5")]
2835        pub dump_phase_ms: ::core::option::Option<u32>,
2836        /// ms to wait between following dumps.
2837        #[prost(uint32, optional, tag="6")]
2838        pub dump_interval_ms: ::core::option::Option<u32>,
2839    }
2840}
2841// End of protos/perfetto/config/profiling/heapprofd_config.proto
2842
2843// Begin of protos/perfetto/config/profiling/smaps_config.proto
2844
2845/// Config for collecting /proc/pid/smaps.
2846#[derive(Clone, PartialEq, ::prost::Message)]
2847pub struct SmapsConfig {
2848    /// Set of fields to collect.
2849    /// If unset, defaults to: size, rss, anonymous, swap.
2850    #[prost(enumeration="smaps_config::VmaField", repeated, packed="false", tag="1")]
2851    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
2852    /// If false, mappings are aggregated by their path name.
2853    /// If true, each mapping is serialised separately.
2854    #[prost(bool, optional, tag="2")]
2855    pub unaggregated: ::core::option::Option<bool>,
2856    /// Optional ordered list of redaction rules for the name of the mapping.
2857    /// Note that all mappings will still be emitted, these rules only affect the
2858    /// emitted name.
2859    /// If unset, all names are written as is.
2860    /// If set, the first matching rule decides on the action.
2861    /// If no rules match, the name is written as is.
2862    #[prost(message, repeated, tag="3")]
2863    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
2864}
2865/// Nested message and enum types in `SmapsConfig`.
2866pub mod smaps_config {
2867    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2868    #[repr(i32)]
2869    pub enum VmaField {
2870        Unknown = 0,
2871        Size = 1,
2872        Rss = 2,
2873        Anonymous = 3,
2874        Swap = 4,
2875        SharedClean = 5,
2876        SharedDirty = 6,
2877        PrivateClean = 7,
2878        PrivateDirty = 8,
2879        Locked = 9,
2880        Pss = 10,
2881        PssDirty = 11,
2882        SwapPss = 12,
2883    }
2884    impl VmaField {
2885        /// String value of the enum field names used in the ProtoBuf definition.
2886        ///
2887        /// The values are not transformed in any way and thus are considered stable
2888        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2889        pub fn as_str_name(&self) -> &'static str {
2890            match self {
2891                VmaField::Unknown => "VMA_FIELD_UNKNOWN",
2892                VmaField::Size => "VMA_FIELD_SIZE",
2893                VmaField::Rss => "VMA_FIELD_RSS",
2894                VmaField::Anonymous => "VMA_FIELD_ANONYMOUS",
2895                VmaField::Swap => "VMA_FIELD_SWAP",
2896                VmaField::SharedClean => "VMA_FIELD_SHARED_CLEAN",
2897                VmaField::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
2898                VmaField::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
2899                VmaField::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
2900                VmaField::Locked => "VMA_FIELD_LOCKED",
2901                VmaField::Pss => "VMA_FIELD_PSS",
2902                VmaField::PssDirty => "VMA_FIELD_PSS_DIRTY",
2903                VmaField::SwapPss => "VMA_FIELD_SWAP_PSS",
2904            }
2905        }
2906    }
2907}
2908#[derive(Clone, PartialEq, ::prost::Message)]
2909pub struct RedactionRule {
2910    /// The pattern to match against.
2911    #[prost(string, optional, tag="1")]
2912    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
2913    #[prost(enumeration="redaction_rule::MatchMode", optional, tag="2")]
2914    pub match_mode: ::core::option::Option<i32>,
2915    /// If the pattern matches, keep the entire name. In other words, do not
2916    /// redact. This option exists since the rules are evaluated in order, so a
2917    /// more specific allow rule with keep_full can match before a more general
2918    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
2919    /// |keep_path_elements|.
2920    #[prost(bool, optional, tag="3")]
2921    pub keep_full: ::core::option::Option<bool>,
2922    /// If the pattern matches, replace the name with this string (defaulting to
2923    /// <pf_redacted> if unset). The final emitted name might be further augmented
2924    /// by the options below keeping parts of the original name.
2925    #[prost(string, optional, tag="4")]
2926    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
2927    /// If the pattern matches, keep the file extension, if any.
2928    /// Can be combined with |keep_path_elements|.
2929    #[prost(bool, optional, tag="5")]
2930    pub keep_file_extension: ::core::option::Option<bool>,
2931    /// If the pattern matches, keep the first N path elements (as separated by
2932    /// '/'). If the name is not a path, this option does nothing. Can be combined
2933    /// with |keep_file_extension|.
2934    #[prost(uint32, optional, tag="6")]
2935    pub keep_path_elements: ::core::option::Option<u32>,
2936}
2937/// Nested message and enum types in `RedactionRule`.
2938pub mod redaction_rule {
2939    /// How to match |pattern| against the name of the mapping.
2940    /// Note for future extensions: unrecognised enums are treated as always
2941    /// matching.
2942    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2943    #[repr(i32)]
2944    pub enum MatchMode {
2945        Unknown = 0,
2946        /// The pattern matches if it is a prefix of the mapping name.
2947        Prefix = 1,
2948        /// The pattern is matched against the mapping name as a pathname glob
2949        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
2950        /// The key distinction is that path separators in the name are *not* matched
2951        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
2952        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
2953        /// Note: any "(deleted)" suffix is excluded before matching.
2954        GlobPath = 2,
2955        /// The pattern is matched against the mapping name without special-casing
2956        /// path separators. So a pattern of the form "/usr/*/llvm" would match
2957        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
2958        /// Note: any "(deleted)" suffix is excluded before matching.
2959        GlobString = 3,
2960    }
2961    impl MatchMode {
2962        /// String value of the enum field names used in the ProtoBuf definition.
2963        ///
2964        /// The values are not transformed in any way and thus are considered stable
2965        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2966        pub fn as_str_name(&self) -> &'static str {
2967            match self {
2968                MatchMode::Unknown => "MATCH_MODE_UNKNOWN",
2969                MatchMode::Prefix => "MATCH_MODE_PREFIX",
2970                MatchMode::GlobPath => "MATCH_MODE_GLOB_PATH",
2971                MatchMode::GlobString => "MATCH_MODE_GLOB_STRING",
2972            }
2973        }
2974    }
2975}
2976// End of protos/perfetto/config/profiling/smaps_config.proto
2977
2978// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2979
2980/// Configuration for managed app heap graph snapshots.
2981#[derive(Clone, PartialEq, ::prost::Message)]
2982pub struct JavaHprofConfig {
2983    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2984    /// comm string). The semantics of this field were changed since its original
2985    /// introduction.
2986    ///
2987    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2988    /// the profiler will attempt to match it in two possible ways:
2989    /// * if the pattern starts with a '/', then it is matched against the first
2990    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2991    ///    "/bin/echo".
2992    /// * otherwise the pattern is matched against the part of argv0
2993    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2994    ///    For example "echo" would match "/bin/echo".
2995    ///
2996    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2997    /// normalized prior to an exact string comparison. Normalization is as
2998    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2999    /// the string contains forward slashes, trim everything up to and including
3000    /// the last one.
3001    ///
3002    /// Implementation note: in either case, at most 511 characters of cmdline
3003    /// are considered.
3004    #[prost(string, repeated, tag="1")]
3005    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3006    /// For watermark based triggering or local debugging.
3007    #[prost(uint64, repeated, packed="false", tag="2")]
3008    pub pid: ::prost::alloc::vec::Vec<u64>,
3009    /// Only profile target if it was installed by one of the packages given.
3010    /// Special values are:
3011    /// * @system: installed on the system partition
3012    /// * @product: installed on the product partition
3013    /// * @null: sideloaded
3014    /// Supported on Android 12+.
3015    #[prost(string, repeated, tag="7")]
3016    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3017    /// Dump at a predefined interval.
3018    #[prost(message, optional, tag="3")]
3019    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
3020    /// Do not profile processes whose anon RSS + swap < given value.
3021    #[prost(uint32, optional, tag="4")]
3022    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3023    /// Do not profile processes whose Java heap size < given value.
3024    #[prost(uint32, optional, tag="9")]
3025    pub min_java_heap_size_kb: ::core::option::Option<u32>,
3026    /// Include the process' /proc/self/smaps.
3027    /// This only shows maps that:
3028    /// * start with /system
3029    /// * start with /vendor
3030    /// * start with /data/app
3031    /// * contain "extracted in memory from Y", where Y matches any of the above
3032    ///
3033    /// Superseded by |smaps_config| in perfetto v58+.
3034    #[prost(bool, optional, tag="5")]
3035    pub dump_smaps: ::core::option::Option<bool>,
3036    /// If set, include /proc/self/smaps memory mappings.
3037    ///
3038    /// Added in perfetto v58.
3039    #[prost(message, optional, tag="8")]
3040    pub smaps_config: ::core::option::Option<SmapsConfig>,
3041    /// Exclude objects of the following types from the profile. This can be
3042    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
3043    #[prost(string, repeated, tag="6")]
3044    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3045}
3046/// Nested message and enum types in `JavaHprofConfig`.
3047pub mod java_hprof_config {
3048    /// If dump_interval_ms != 0, the following configuration is used.
3049    #[derive(Clone, PartialEq, ::prost::Message)]
3050    pub struct ContinuousDumpConfig {
3051        /// ms to wait before first continuous dump.
3052        /// A dump is always created at the beginning of the trace.
3053        #[prost(uint32, optional, tag="1")]
3054        pub dump_phase_ms: ::core::option::Option<u32>,
3055        /// ms to wait between following dumps.
3056        #[prost(uint32, optional, tag="2")]
3057        pub dump_interval_ms: ::core::option::Option<u32>,
3058        /// If true, scans all the processes to find `process_cmdline` and filter by
3059        /// `min_anonymous_memory_kb` only at data source start. Default on Android
3060        /// S-.
3061        ///
3062        /// If false, rescans all the processes to find on every dump. Default on
3063        /// Android T+.
3064        #[prost(bool, optional, tag="3")]
3065        pub scan_pids_only_on_start: ::core::option::Option<bool>,
3066    }
3067}
3068// End of protos/perfetto/config/profiling/java_hprof_config.proto
3069
3070// Begin of protos/perfetto/common/perf_events.proto
3071
3072#[derive(Clone, PartialEq, ::prost::Message)]
3073pub struct PerfEvents {
3074}
3075/// Nested message and enum types in `PerfEvents`.
3076pub mod perf_events {
3077    /// The primary event to count. If recording multiple events, this
3078    /// counter is the "group leader".
3079    /// Commented from the perspective of its use in |PerfEventConfig|.
3080    /// Next id: 13
3081    #[derive(Clone, PartialEq, ::prost::Message)]
3082    pub struct Timebase {
3083        /// Optional modifiers for the event. Modelled after the perftool's
3084        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
3085        /// Currently supported: count scoping such as :u, :k, :uk, ...
3086        /// Modifiers can differ between the timebase and followers.
3087        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
3088        pub modifiers: ::prost::alloc::vec::Vec<i32>,
3089        /// If set, samples will be timestamped with the given clock.
3090        /// If unset, the clock is chosen by the implementation.
3091        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
3092        /// used for hardware events (due to interrupt safety), for which the
3093        /// recommendation is to use one of the monotonic clocks.
3094        #[prost(enumeration="PerfClock", optional, tag="11")]
3095        pub timestamp_clock: ::core::option::Option<i32>,
3096        /// Optional arbitrary name for the event, to identify it in the parsed
3097        /// trace. Does *not* affect the profiling itself. If unset, the trace
3098        /// parser will choose a suitable name.
3099        #[prost(string, optional, tag="10")]
3100        pub name: ::core::option::Option<::prost::alloc::string::String>,
3101        /// How often to snapshot the counter, along with any follower events and
3102        /// any additional sampled data such as callstacks.
3103        ///
3104        /// This choice also controls how the readings are taken:
3105        /// * With |frequency| or |period|, samples are taken by the kernel
3106        ///    into a ring buffer. Analogous to `perf record`.
3107        /// * With |poll_period_ms|, the userspace periodically snapshots
3108        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3109        /// Prefer the sampling options unless you're recording PMUs whose
3110        /// perf drivers only support the reading mode.
3111        ///
3112        /// If unset, an implementation-defined sampling default is used.
3113        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
3114        pub interval: ::core::option::Option<timebase::Interval>,
3115        /// Counting event to use as the timebase.
3116        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3117        /// which is what you usually want.
3118        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
3119        pub event: ::core::option::Option<timebase::Event>,
3120    }
3121    /// Nested message and enum types in `Timebase`.
3122    pub mod timebase {
3123        /// How often to snapshot the counter, along with any follower events and
3124        /// any additional sampled data such as callstacks.
3125        ///
3126        /// This choice also controls how the readings are taken:
3127        /// * With |frequency| or |period|, samples are taken by the kernel
3128        ///    into a ring buffer. Analogous to `perf record`.
3129        /// * With |poll_period_ms|, the userspace periodically snapshots
3130        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3131        /// Prefer the sampling options unless you're recording PMUs whose
3132        /// perf drivers only support the reading mode.
3133        ///
3134        /// If unset, an implementation-defined sampling default is used.
3135        #[derive(Clone, PartialEq, ::prost::Oneof)]
3136        pub enum Interval {
3137            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
3138            /// same as 1/period.
3139            /// Details: the actual sampling will still be based on a period, but the
3140            /// kernel will dynamically adjust it based on the observed event rate, to
3141            /// approximate this frequency. Works best with steady-rate events like
3142            /// timers.
3143            /// Not guaranteed to be honored as the kernel can throttle the sampling
3144            /// rate if it's too high.
3145            #[prost(uint64, tag="2")]
3146            Frequency(u64),
3147            /// Per-cpu sampling will occur every |period| counts of |event|.
3148            /// Prefer |frequency| by default, as it's easier to oversample with a
3149            /// fixed period.
3150            /// Not guaranteed to be honored as the kernel can throttle the sampling
3151            /// rate if it's too high.
3152            #[prost(uint64, tag="1")]
3153            Period(u64),
3154            /// Per-cpu values are read by the userspace every interval. If using this
3155            /// mode, only follower events are supported. Options such as
3156            /// |PerfEventConfig.CallstackSampling| are incompatible.
3157            /// The period can't be guaranteed to be exact since the readings are taken
3158            /// by userspace.
3159            #[prost(uint32, tag="6")]
3160            PollPeriodMs(u32),
3161        }
3162        /// Counting event to use as the timebase.
3163        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3164        /// which is what you usually want.
3165        #[derive(Clone, PartialEq, ::prost::Oneof)]
3166        pub enum Event {
3167            #[prost(enumeration="super::Counter", tag="4")]
3168            Counter(i32),
3169            #[prost(message, tag="3")]
3170            Tracepoint(super::Tracepoint),
3171            #[prost(message, tag="5")]
3172            RawEvent(super::RawEvent),
3173        }
3174    }
3175    #[derive(Clone, PartialEq, ::prost::Message)]
3176    pub struct Tracepoint {
3177        /// Group and name for the tracepoint, acceptable forms:
3178        /// * "sched/sched_switch"
3179        /// * "sched:sched_switch"
3180        #[prost(string, optional, tag="1")]
3181        pub name: ::core::option::Option<::prost::alloc::string::String>,
3182        /// Optional field-level filter for the tracepoint. Only events matching this
3183        /// filter will be counted (and therefore contribute to the sampling period).
3184        /// Example: "prev_pid >= 42 && next_pid == 0".
3185        /// For full syntax, see kernel documentation on "Event filtering":
3186        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
3187        #[prost(string, optional, tag="2")]
3188        pub filter: ::core::option::Option<::prost::alloc::string::String>,
3189    }
3190    /// Syscall-level description of the event, propagated to the perf_event_attr
3191    /// struct. Primarily for local use-cases, since the event availability and
3192    /// encoding is hardware-specific.
3193    #[derive(Clone, PartialEq, ::prost::Message)]
3194    pub struct RawEvent {
3195        /// Either |type| or |pmu_name| can be set.
3196        #[prost(uint32, optional, tag="1")]
3197        pub r#type: ::core::option::Option<u32>,
3198        #[prost(uint64, optional, tag="2")]
3199        pub config: ::core::option::Option<u64>,
3200        #[prost(uint64, optional, tag="3")]
3201        pub config1: ::core::option::Option<u64>,
3202        #[prost(uint64, optional, tag="4")]
3203        pub config2: ::core::option::Option<u64>,
3204        /// The name of a dynamic PMU under /sys/bus/event_source/devices
3205        /// (e.g. "armv8_pmuv3").
3206        /// If set, leave |type| unset.
3207        /// Android: the relevant sysfs paths are not allowlisted by default, so
3208        /// this option will require a rooted device with selinux disabled.
3209        #[prost(string, optional, tag="5")]
3210        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
3211    }
3212    /// Builtin counter names from the uapi header. Commented with their perf tool
3213    /// aliases.
3214    /// TODO(rsavitski): consider generating enums for cache events (should be
3215    /// finite), and generally make this list as extensive as possible. Excluding
3216    /// things like dynamic PMUs since those don't fit into a static enum.
3217    /// Next id: 21
3218    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3219    #[repr(i32)]
3220    pub enum Counter {
3221        UnknownCounter = 0,
3222        /// cpu-clock
3223        SwCpuClock = 1,
3224        /// page-faults, faults
3225        SwPageFaults = 2,
3226        /// task-clock
3227        SwTaskClock = 3,
3228        /// context-switches, cs
3229        SwContextSwitches = 4,
3230        /// cpu-migrations, migrations
3231        SwCpuMigrations = 5,
3232        /// minor-faults
3233        SwPageFaultsMin = 6,
3234        /// major-faults
3235        SwPageFaultsMaj = 7,
3236        /// alignment-faults
3237        SwAlignmentFaults = 8,
3238        /// emulation-faults
3239        SwEmulationFaults = 9,
3240        /// dummy
3241        SwDummy = 20,
3242        /// cpu-cycles, cycles
3243        HwCpuCycles = 10,
3244        /// instructions
3245        HwInstructions = 11,
3246        /// cache-references
3247        HwCacheReferences = 12,
3248        /// cache-misses
3249        HwCacheMisses = 13,
3250        /// branch-instructions, branches
3251        HwBranchInstructions = 14,
3252        /// branch-misses
3253        HwBranchMisses = 15,
3254        /// bus-cycles
3255        HwBusCycles = 16,
3256        /// stalled-cycles-frontend, idle-cycles-frontend
3257        HwStalledCyclesFrontend = 17,
3258        /// stalled-cycles-backend, idle-cycles-backend
3259        HwStalledCyclesBackend = 18,
3260        /// ref-cycles
3261        HwRefCpuCycles = 19,
3262    }
3263    impl Counter {
3264        /// String value of the enum field names used in the ProtoBuf definition.
3265        ///
3266        /// The values are not transformed in any way and thus are considered stable
3267        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3268        pub fn as_str_name(&self) -> &'static str {
3269            match self {
3270                Counter::UnknownCounter => "UNKNOWN_COUNTER",
3271                Counter::SwCpuClock => "SW_CPU_CLOCK",
3272                Counter::SwPageFaults => "SW_PAGE_FAULTS",
3273                Counter::SwTaskClock => "SW_TASK_CLOCK",
3274                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
3275                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
3276                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
3277                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
3278                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
3279                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
3280                Counter::SwDummy => "SW_DUMMY",
3281                Counter::HwCpuCycles => "HW_CPU_CYCLES",
3282                Counter::HwInstructions => "HW_INSTRUCTIONS",
3283                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
3284                Counter::HwCacheMisses => "HW_CACHE_MISSES",
3285                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
3286                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
3287                Counter::HwBusCycles => "HW_BUS_CYCLES",
3288                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
3289                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
3290                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
3291            }
3292        }
3293    }
3294    /// Subset of clocks that is supported by perf timestamping.
3295    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
3296    /// would require additions to the trace clock synchronisation logic.
3297    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3298    #[repr(i32)]
3299    pub enum PerfClock {
3300        UnknownPerfClock = 0,
3301        Realtime = 1,
3302        Monotonic = 2,
3303        MonotonicRaw = 3,
3304        Boottime = 4,
3305    }
3306    impl PerfClock {
3307        /// String value of the enum field names used in the ProtoBuf definition.
3308        ///
3309        /// The values are not transformed in any way and thus are considered stable
3310        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3311        pub fn as_str_name(&self) -> &'static str {
3312            match self {
3313                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
3314                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
3315                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
3316                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
3317                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
3318            }
3319        }
3320    }
3321    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3322    #[repr(i32)]
3323    pub enum EventModifier {
3324        UnknownEventModifier = 0,
3325        /// count only while in userspace
3326        CountUserspace = 1,
3327        /// count only while in kernel
3328        CountKernel = 2,
3329        /// count only while in hypervisor
3330        CountHypervisor = 3,
3331    }
3332    impl EventModifier {
3333        /// String value of the enum field names used in the ProtoBuf definition.
3334        ///
3335        /// The values are not transformed in any way and thus are considered stable
3336        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3337        pub fn as_str_name(&self) -> &'static str {
3338            match self {
3339                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
3340                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
3341                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
3342                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
3343            }
3344        }
3345    }
3346}
3347/// Additional events associated with a leader.
3348/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
3349#[derive(Clone, PartialEq, ::prost::Message)]
3350pub struct FollowerEvent {
3351    /// Modifiers can differ between the timebase and followers.
3352    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
3353    pub modifiers: ::prost::alloc::vec::Vec<i32>,
3354    /// Optional arbitrary name for the event, to identify it in the parsed
3355    /// trace. Does *not* affect the profiling itself. If unset, the trace
3356    /// parser will choose a suitable name.
3357    #[prost(string, optional, tag="4")]
3358    pub name: ::core::option::Option<::prost::alloc::string::String>,
3359    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
3360    pub event: ::core::option::Option<follower_event::Event>,
3361}
3362/// Nested message and enum types in `FollowerEvent`.
3363pub mod follower_event {
3364    #[derive(Clone, PartialEq, ::prost::Oneof)]
3365    pub enum Event {
3366        #[prost(enumeration="super::perf_events::Counter", tag="1")]
3367        Counter(i32),
3368        #[prost(message, tag="2")]
3369        Tracepoint(super::perf_events::Tracepoint),
3370        #[prost(message, tag="3")]
3371        RawEvent(super::perf_events::RawEvent),
3372    }
3373}
3374// End of protos/perfetto/common/perf_events.proto
3375
3376// Begin of protos/perfetto/config/profiling/perf_event_config.proto
3377
3378/// Configuration for the traced_perf profiler.
3379///
3380/// Example config for basic cpu profiling:
3381///    perf_event_config {
3382///      timebase {
3383///        frequency: 80
3384///      }
3385///      callstack_sampling {
3386///        scope {
3387///          target_cmdline: "surfaceflinger"
3388///          target_cmdline: "system_server"
3389///        }
3390///        kernel_frames: true
3391///      }
3392///    }
3393///
3394/// Next id: 23
3395#[derive(Clone, PartialEq, ::prost::Message)]
3396pub struct PerfEventConfig {
3397    /// What event to sample on, and how often.
3398    /// Defined in common/perf_events.proto.
3399    #[prost(message, optional, tag="15")]
3400    pub timebase: ::core::option::Option<perf_events::Timebase>,
3401    /// Other events associated with the leader described in the timebase.
3402    #[prost(message, repeated, tag="19")]
3403    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
3404    /// If set, the profiler will sample userspace processes' callstacks at the
3405    /// interval specified by the |timebase|.
3406    /// If unset, the profiler will record only the event counts.
3407    #[prost(message, optional, tag="16")]
3408    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
3409    /// List of cpu indices for counting. If empty, the default is all cpus.
3410    ///
3411    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
3412    /// counter-only traces. A future change will likely reorganise the options,
3413    /// but this field will continue to be supported.
3414    ///
3415    /// Available since: perfetto v50.
3416    #[prost(uint32, repeated, packed="false", tag="20")]
3417    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
3418    /// Allow failure of perf_event_open
3419    #[prost(bool, optional, tag="21")]
3420    pub ignore_open_failure: ::core::option::Option<bool>,
3421    /// If not empty, consider only CPUs whose CPUID matches one of these values.
3422    #[prost(string, repeated, tag="22")]
3423    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3424    //
3425    // Kernel <-> userspace ring buffer options:
3426    //
3427
3428    /// How often the per-cpu ring buffers are read by the producer.
3429    /// If unset, an implementation-defined default is used.
3430    #[prost(uint32, optional, tag="8")]
3431    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
3432    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
3433    /// kernel. If set, must be a power of two.
3434    /// If unset, an implementation-defined default is used.
3435    #[prost(uint32, optional, tag="3")]
3436    pub ring_buffer_pages: ::core::option::Option<u32>,
3437    //
3438    // Daemon's resource usage limits:
3439    //
3440
3441    /// Drop samples if the heap memory held by the samples in the unwinder queue
3442    /// is above the given limit. This counts the memory across all concurrent data
3443    /// sources (not just this one's), and there is no fairness guarantee - the
3444    /// whole quota might be used up by a concurrent source.
3445    #[prost(uint64, optional, tag="17")]
3446    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
3447    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
3448    /// footprint exceeds this value.
3449    #[prost(uint32, optional, tag="13")]
3450    pub max_daemon_memory_kb: ::core::option::Option<u32>,
3451    //
3452    // Niche options:
3453    //
3454
3455    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
3456    /// sampled process. This is primarily for Android, where this lookup is
3457    /// asynchronous. As long as the producer is waiting, the associated samples
3458    /// will be kept enqueued (putting pressure on the capacity of the shared
3459    /// unwinding queue). Once a lookup for a process expires, all associated
3460    /// samples are discarded. However, if the lookup still succeeds after the
3461    /// timeout, future samples will be handled normally.
3462    /// If unset, an implementation-defined default is used.
3463    #[prost(uint32, optional, tag="9")]
3464    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
3465    /// Optional period for clearing state cached by the userspace unwinder. This
3466    /// is a heavy operation that is only necessary for traces that target a wide
3467    /// set of processes, and require the memory footprint to be reset
3468    /// periodically. To effectively disable the cache clearing, set to a value
3469    /// greater than your trace duration.
3470    ///
3471    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
3472    ///
3473    /// If zero or unset:
3474    /// * before perfetto v52: no cache clearing.
3475    /// * perfetto v52+: implementation chooses an infrequent default.
3476    #[prost(uint32, optional, tag="10")]
3477    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
3478    /// If set, only profile target if it was installed by a package with one of
3479    /// these names. Special values:
3480    /// * "@system": installed on the system partition
3481    /// * "@product": installed on the product partition
3482    /// * "@null": sideloaded
3483    /// Supported on Android 12+.
3484    #[prost(string, repeated, tag="18")]
3485    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3486    //
3487    // Deprecated (superseded by options above):
3488    //
3489    // Do not set *any* of these fields in new configs.
3490    //
3491
3492    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
3493    /// We rely on this to detect such configs.
3494    #[prost(bool, optional, tag="1")]
3495    pub all_cpus: ::core::option::Option<bool>,
3496    #[prost(uint32, optional, tag="2")]
3497    pub sampling_frequency: ::core::option::Option<u32>,
3498    #[prost(bool, optional, tag="12")]
3499    pub kernel_frames: ::core::option::Option<bool>,
3500    #[prost(int32, repeated, packed="false", tag="4")]
3501    pub target_pid: ::prost::alloc::vec::Vec<i32>,
3502    #[prost(string, repeated, tag="5")]
3503    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3504    #[prost(int32, repeated, packed="false", tag="6")]
3505    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3506    #[prost(string, repeated, tag="7")]
3507    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3508    #[prost(uint32, optional, tag="11")]
3509    pub additional_cmdline_count: ::core::option::Option<u32>,
3510}
3511/// Nested message and enum types in `PerfEventConfig`.
3512pub mod perf_event_config {
3513    //
3514    // Sub-messages (nested for generated code namespacing).
3515    //
3516
3517    #[derive(Clone, PartialEq, ::prost::Message)]
3518    pub struct CallstackSampling {
3519        /// Defines a set of processes for which samples are retained/skipped. If
3520        /// unset, all samples are kept, but beware that it will be very heavy on the
3521        /// stack unwinder, which might start dropping samples due to overload.
3522        #[prost(message, optional, tag="1")]
3523        pub scope: ::core::option::Option<Scope>,
3524        /// If true, callstacks will include the kernel-space frames. Such frames can
3525        /// be identified by a magical "kernel" string as their mapping name.
3526        /// Requires traced_perf to be running as root, or kptr_restrict to have been
3527        /// manually unrestricted. On Android, the platform should do the right thing
3528        /// on debug builds.
3529        /// This does *not* disclose KASLR, as only the function names are emitted.
3530        #[prost(bool, optional, tag="2")]
3531        pub kernel_frames: ::core::option::Option<bool>,
3532        /// Whether to record and unwind userspace callstacks. If unset, defaults to
3533        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
3534        /// as the most common default (this defaulting is only applicable if the
3535        /// outer CallstackSampling message is explicitly set).
3536        #[prost(enumeration="UnwindMode", optional, tag="3")]
3537        pub user_frames: ::core::option::Option<i32>,
3538    }
3539    #[derive(Clone, PartialEq, ::prost::Message)]
3540    pub struct Scope {
3541        /// Process ID (TGID) allowlist. If this list is not empty, only matching
3542        /// samples will be retained. If multiple allow/deny-lists are
3543        /// specified by the config, then all of them are evaluated for each sampled
3544        /// process.
3545        #[prost(int32, repeated, packed="false", tag="1")]
3546        pub target_pid: ::prost::alloc::vec::Vec<i32>,
3547        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3548        /// comm string). The semantics of this field were changed since its original
3549        /// introduction.
3550        ///
3551        /// On Android T+ (13+), this field can specify a single wildcard (*), and
3552        /// the profiler will attempt to match it in two possible ways:
3553        /// * if the pattern starts with a '/', then it is matched against the first
3554        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3555        ///    "/bin/echo".
3556        /// * otherwise the pattern is matched against the part of argv0
3557        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3558        ///    For example "echo" would match "/bin/echo".
3559        ///
3560        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3561        /// normalized prior to an exact string comparison. Normalization is as
3562        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3563        /// the string contains forward slashes, trim everything up to and including
3564        /// the last one.
3565        ///
3566        /// Implementation note: in either case, at most 511 characters of cmdline
3567        /// are considered.
3568        #[prost(string, repeated, tag="2")]
3569        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3570        /// List of excluded pids.
3571        #[prost(int32, repeated, packed="false", tag="3")]
3572        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3573        /// List of excluded cmdlines. See description of |target_cmdline| for how
3574        /// this is handled.
3575        #[prost(string, repeated, tag="4")]
3576        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3577        // Niche features for systemwide callstacks:
3578
3579        /// Number of additional command lines to sample. Only those which are
3580        /// neither explicitly included nor excluded will be considered. Processes
3581        /// are accepted on a first come, first served basis.
3582        #[prost(uint32, optional, tag="5")]
3583        pub additional_cmdline_count: ::core::option::Option<u32>,
3584        /// If set to N, all encountered processes will be put into one of the N
3585        /// possible bins, and only one randomly-chosen bin will be selected for
3586        /// unwinding. The binning is simply "pid % N", under the assumption that
3587        /// low-order bits of pids are roughly uniformly distributed. Other explicit
3588        /// inclusions/exclusions in this |Scope| message are still respected.
3589        ///
3590        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
3591        /// values will be queryable in trace processor under the "stats" table as
3592        /// "perf_process_shard_count" and "perf_chosen_process_shard".
3593        ///
3594        /// NB: all data sources in a config that set |process_shard_count| must set
3595        /// it to the same value. The profiler will choose one bin for all those data
3596        /// sources.
3597        #[prost(uint32, optional, tag="6")]
3598        pub process_shard_count: ::core::option::Option<u32>,
3599    }
3600    /// Userspace unwinding mode.
3601    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3602    #[repr(i32)]
3603    pub enum UnwindMode {
3604        UnwindUnknown = 0,
3605        /// Do not unwind userspace:
3606        UnwindSkip = 1,
3607        /// Use libunwindstack (default):
3608        UnwindDwarf = 2,
3609        /// Use userspace frame pointer unwinder:
3610        UnwindFramePointer = 3,
3611        /// Ask the kernel to unwind the userspace stack via frame pointers, using
3612        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
3613        /// sample, which avoids the per-sample copy cost and the depth limit
3614        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
3615        /// (including system libraries) is built with frame pointers - the kernel
3616        /// walks the chain and returns instruction addresses, which still need to
3617        /// be symbolized offline using the recorded process mappings.
3618        UnwindKernelFramePointer = 4,
3619    }
3620    impl UnwindMode {
3621        /// String value of the enum field names used in the ProtoBuf definition.
3622        ///
3623        /// The values are not transformed in any way and thus are considered stable
3624        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3625        pub fn as_str_name(&self) -> &'static str {
3626            match self {
3627                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
3628                UnwindMode::UnwindSkip => "UNWIND_SKIP",
3629                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
3630                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
3631                UnwindMode::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
3632            }
3633        }
3634    }
3635}
3636// End of protos/perfetto/config/profiling/perf_event_config.proto
3637
3638// Begin of protos/perfetto/config/protovm/protovm_config.proto
3639
3640#[derive(Clone, PartialEq, ::prost::Message)]
3641pub struct ProtoVmConfig {
3642    #[prost(uint32, optional, tag="1")]
3643    pub memory_limit_kb: ::core::option::Option<u32>,
3644}
3645// End of protos/perfetto/config/protovm/protovm_config.proto
3646
3647// Begin of protos/perfetto/config/qnx/qnx_config.proto
3648
3649/// QnxConfig is used with trace_qnx_probes build from
3650/// <https://github.com/qnx-ports/perfetto>
3651#[derive(Clone, PartialEq, ::prost::Message)]
3652pub struct QnxConfig {
3653    /// The number of buffers that tracelog will init for the QNX trace.
3654    #[prost(uint32, optional, tag="1")]
3655    pub qnx_kernel_buffers: ::core::option::Option<u32>,
3656    /// The number of kernel buffers that tracelog will init for the QNX trace.
3657    #[prost(uint32, optional, tag="2")]
3658    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
3659    /// Flag indicating whether the QNX kernel tracing should produce wide
3660    /// events which contain additional data or fast events which are most
3661    /// concise. In fast mode we lose the priority information
3662    #[prost(bool, optional, tag="3")]
3663    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
3664    /// The number of pages initialized by default the parser's page cache.
3665    #[prost(uint32, optional, tag="4")]
3666    pub qnx_cache_pages: ::core::option::Option<u32>,
3667    /// The max pages the page cache should allocate (must be at least as big)
3668    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
3669    /// unbounded. The cache will prefer to re-use existing pages so growth will
3670    /// only happen when needed (when parser is not keeping up).
3671    #[prost(int32, optional, tag="5")]
3672    pub qnx_cache_max_pages: ::core::option::Option<i32>,
3673    /// The initial size of the the buffer used to hold the trace header values
3674    /// this dynamic buffer will grow as needed but reallocs can be avoided by
3675    /// selecting an initial size large enough to hold all the initial header
3676    /// data.
3677    #[prost(uint32, optional, tag="6")]
3678    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
3679}
3680// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
3681
3682/// This file is named 'statsd_tracing_config.proto' rather than
3683/// 'statsd_config.proto' (which would be more consistent with the other
3684/// config protos) so it doesn't show up and confuse folks looking for
3685/// the existing statsd_config.proto for configuring statsd itself.
3686/// Same for the config proto itself.
3687#[derive(Clone, PartialEq, ::prost::Message)]
3688pub struct StatsdTracingConfig {
3689    /// This is for the common case of the atom id being known in the enum AtomId.
3690    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3691    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
3692    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
3693    /// (e.g. non-upstream atoms that don't exist in AOSP).
3694    #[prost(int32, repeated, packed="false", tag="2")]
3695    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
3696    #[prost(message, repeated, tag="3")]
3697    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
3698}
3699#[derive(Clone, PartialEq, ::prost::Message)]
3700pub struct StatsdPullAtomConfig {
3701    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3702    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3703    #[prost(int32, repeated, packed="false", tag="2")]
3704    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3705    #[prost(int32, optional, tag="3")]
3706    pub pull_frequency_ms: ::core::option::Option<i32>,
3707    #[prost(string, repeated, tag="4")]
3708    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3709}
3710// End of protos/perfetto/common/sys_stats_counters.proto
3711
3712// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
3713
3714/// This file defines the configuration for the Linux /proc poller data source,
3715/// which injects counters in the trace.
3716/// Counters that are needed in the trace must be explicitly listed in the
3717/// *_counters fields. This is to avoid spamming the trace with all counters
3718/// at all times.
3719/// The sampling rate is configurable. All polling rates (*_period_ms) need
3720/// to be integer multiples of each other.
3721/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
3722/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
3723#[derive(Clone, PartialEq, ::prost::Message)]
3724pub struct SysStatsConfig {
3725    /// Polls /proc/meminfo every X ms, if non-zero.
3726    /// This is required to be > 10ms to avoid excessive CPU usage.
3727    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
3728    #[prost(uint32, optional, tag="1")]
3729    pub meminfo_period_ms: ::core::option::Option<u32>,
3730    /// If empty all known counters are reported. Otherwise, only the counters
3731    /// specified below are reported.
3732    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
3733    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
3734    /// Polls /proc/vmstat every X ms, if non-zero.
3735    /// This is required to be > 10ms to avoid excessive CPU usage.
3736    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
3737    #[prost(uint32, optional, tag="3")]
3738    pub vmstat_period_ms: ::core::option::Option<u32>,
3739    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
3740    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
3741    /// Pols /proc/stat every X ms, if non-zero.
3742    /// This is required to be > 10ms to avoid excessive CPU usage.
3743    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
3744    #[prost(uint32, optional, tag="5")]
3745    pub stat_period_ms: ::core::option::Option<u32>,
3746    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
3747    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
3748    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
3749    /// This is required to be > 10ms to avoid excessive CPU usage.
3750    /// This option can be used to record unchanging values.
3751    /// Updates from frequency changes can come from ftrace/set_clock_rate.
3752    #[prost(uint32, optional, tag="7")]
3753    pub devfreq_period_ms: ::core::option::Option<u32>,
3754    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
3755    /// This is required to be > 10ms to avoid excessive CPU usage.
3756    #[prost(uint32, optional, tag="8")]
3757    pub cpufreq_period_ms: ::core::option::Option<u32>,
3758    /// Polls /proc/buddyinfo every X ms, if non-zero.
3759    /// This is required to be > 10ms to avoid excessive CPU usage.
3760    #[prost(uint32, optional, tag="9")]
3761    pub buddyinfo_period_ms: ::core::option::Option<u32>,
3762    /// Polls /proc/diskstats every X ms, if non-zero.
3763    /// This is required to be > 10ms to avoid excessive CPU usage.
3764    #[prost(uint32, optional, tag="10")]
3765    pub diskstat_period_ms: ::core::option::Option<u32>,
3766    /// Polls /proc/pressure/* every X ms, if non-zero.
3767    /// This is required to be > 10ms to avoid excessive CPU usage.
3768    #[prost(uint32, optional, tag="11")]
3769    pub psi_period_ms: ::core::option::Option<u32>,
3770    /// Polls /sys/class/thermal/* every X ms, if non-zero.
3771    /// This is required to be > 10ms to avoid excessive CPU usage.
3772    #[prost(uint32, optional, tag="12")]
3773    pub thermal_period_ms: ::core::option::Option<u32>,
3774    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
3775    /// This is required to be > 10ms to avoid excessive CPU usage.
3776    #[prost(uint32, optional, tag="13")]
3777    pub cpuidle_period_ms: ::core::option::Option<u32>,
3778    /// Polls device-specific GPU frequency info every X ms, if non-zero.
3779    /// This is required to be > 10ms to avoid excessive CPU usage.
3780    #[prost(uint32, optional, tag="14")]
3781    pub gpufreq_period_ms: ::core::option::Option<u32>,
3782    /// Polls /proc/slabinfo every X ms, if non-zero.
3783    /// This is required to be > 10ms to avoid excessive CPU usage.
3784    #[prost(uint32, optional, tag="15")]
3785    pub slab_period_ms: ::core::option::Option<u32>,
3786}
3787/// Nested message and enum types in `SysStatsConfig`.
3788pub mod sys_stats_config {
3789    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3790    #[repr(i32)]
3791    pub enum StatCounters {
3792        StatUnspecified = 0,
3793        StatCpuTimes = 1,
3794        StatIrqCounts = 2,
3795        StatSoftirqCounts = 3,
3796        StatForkCount = 4,
3797    }
3798    impl StatCounters {
3799        /// String value of the enum field names used in the ProtoBuf definition.
3800        ///
3801        /// The values are not transformed in any way and thus are considered stable
3802        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3803        pub fn as_str_name(&self) -> &'static str {
3804            match self {
3805                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
3806                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
3807                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
3808                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
3809                StatCounters::StatForkCount => "STAT_FORK_COUNT",
3810            }
3811        }
3812    }
3813}
3814// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
3815
3816// Begin of protos/perfetto/config/system_info/system_info_config.proto
3817
3818/// This data-source does a one-off recording of system information when
3819/// the trace starts.
3820/// Currently this includes:
3821/// - Values of
3822/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
3823/// datasource has no configuration options at present.
3824#[derive(Clone, PartialEq, ::prost::Message)]
3825pub struct SystemInfoConfig {
3826    /// If true, records hardware interrupt ID-to-name mappings from
3827    /// /proc/interrupts.
3828    #[prost(bool, optional, tag="1")]
3829    pub irq_names: ::core::option::Option<bool>,
3830}
3831// End of protos/perfetto/config/system_info/system_info_config.proto
3832
3833// Begin of protos/perfetto/config/test_config.proto
3834
3835/// The configuration for a fake producer used in tests.
3836#[derive(Clone, PartialEq, ::prost::Message)]
3837pub struct TestConfig {
3838    /// The number of messages the fake producer should send.
3839    #[prost(uint32, optional, tag="1")]
3840    pub message_count: ::core::option::Option<u32>,
3841    /// The maximum number of messages which should be sent each second.
3842    /// The actual obserced speed may be lower if the producer is unable to
3843    /// work fast enough.
3844    /// If this is zero or unset, the producer will send as fast as possible.
3845    #[prost(uint32, optional, tag="2")]
3846    pub max_messages_per_second: ::core::option::Option<u32>,
3847    /// The seed value for a simple multiplicative congruential pseudo-random
3848    /// number sequence.
3849    #[prost(uint32, optional, tag="3")]
3850    pub seed: ::core::option::Option<u32>,
3851    /// The size of each message in bytes. Should be greater than or equal 5 to
3852    /// account for the number of bytes needed to encode the random number and a
3853    /// null byte for the string.
3854    #[prost(uint32, optional, tag="4")]
3855    pub message_size: ::core::option::Option<u32>,
3856    /// Whether the producer should send a event batch when the data source is
3857    /// is initially registered.
3858    #[prost(bool, optional, tag="5")]
3859    pub send_batch_on_register: ::core::option::Option<bool>,
3860    #[prost(message, optional, tag="6")]
3861    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
3862}
3863/// Nested message and enum types in `TestConfig`.
3864pub mod test_config {
3865    #[derive(Clone, PartialEq, ::prost::Message)]
3866    pub struct DummyFields {
3867        #[prost(uint32, optional, tag="1")]
3868        pub field_uint32: ::core::option::Option<u32>,
3869        #[prost(int32, optional, tag="2")]
3870        pub field_int32: ::core::option::Option<i32>,
3871        #[prost(uint64, optional, tag="3")]
3872        pub field_uint64: ::core::option::Option<u64>,
3873        #[prost(int64, optional, tag="4")]
3874        pub field_int64: ::core::option::Option<i64>,
3875        #[prost(fixed64, optional, tag="5")]
3876        pub field_fixed64: ::core::option::Option<u64>,
3877        #[prost(sfixed64, optional, tag="6")]
3878        pub field_sfixed64: ::core::option::Option<i64>,
3879        #[prost(fixed32, optional, tag="7")]
3880        pub field_fixed32: ::core::option::Option<u32>,
3881        #[prost(sfixed32, optional, tag="8")]
3882        pub field_sfixed32: ::core::option::Option<i32>,
3883        #[prost(double, optional, tag="9")]
3884        pub field_double: ::core::option::Option<f64>,
3885        #[prost(float, optional, tag="10")]
3886        pub field_float: ::core::option::Option<f32>,
3887        #[prost(sint64, optional, tag="11")]
3888        pub field_sint64: ::core::option::Option<i64>,
3889        #[prost(sint32, optional, tag="12")]
3890        pub field_sint32: ::core::option::Option<i32>,
3891        #[prost(string, optional, tag="13")]
3892        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
3893        #[prost(bytes="vec", optional, tag="14")]
3894        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3895    }
3896}
3897// End of protos/perfetto/config/test_config.proto
3898
3899// Begin of protos/perfetto/config/track_event/track_event_config.proto
3900
3901/// The following fields define the set of enabled trace categories. Each list
3902/// item is a glob.
3903///
3904/// To determine if category is enabled, it is checked against the filters in
3905/// the following order:
3906///
3907///    1. Exact matches in enabled categories.
3908///    2. Exact matches in enabled tags.
3909///    3. Exact matches in disabled categories.
3910///    4. Exact matches in disabled tags.
3911///    5. Pattern matches in enabled categories.
3912///    6. Pattern matches in enabled tags.
3913///    7. Pattern matches in disabled categories.
3914///    8. Pattern matches in disabled tags.
3915///
3916/// If none of the steps produced a match:
3917///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
3918///   default.
3919///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
3920///
3921/// Examples:
3922///
3923///   - To enable all non-slow/debug categories:
3924///
3925///        enabled_categories: "*"
3926///
3927///   - To enable specific categories:
3928///
3929///        disabled_categories: "*"
3930///        enabled_categories: "my_category"
3931///        enabled_categories: "my_category2"
3932///
3933///   - To enable only categories with a specific tag:
3934///
3935///        disabled_tags: "*"
3936///        enabled_tags: "my_tag"
3937///
3938#[derive(Clone, PartialEq, ::prost::Message)]
3939pub struct TrackEventConfig {
3940    /// Default: []
3941    #[prost(string, repeated, tag="1")]
3942    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3943    /// Default: []
3944    #[prost(string, repeated, tag="2")]
3945    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3946    /// Default: ["slow", "debug"]
3947    #[prost(string, repeated, tag="3")]
3948    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3949    /// Default: []
3950    #[prost(string, repeated, tag="4")]
3951    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3952    /// Default: false (i.e. enabled by default)
3953    #[prost(bool, optional, tag="5")]
3954    pub disable_incremental_timestamps: ::core::option::Option<bool>,
3955    /// Allows to specify a custom unit different than the default (ns).
3956    /// Also affects thread timestamps if enable_thread_time_sampling = true.
3957    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
3958    /// 3000 ns = 3 us.
3959    /// Default: 1 (if unset, it should be read as 1).
3960    #[prost(uint64, optional, tag="6")]
3961    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
3962    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
3963    /// When true, any debug annotations provided as arguments to the
3964    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
3965    /// still be emitted even if set to true.
3966    #[prost(bool, optional, tag="7")]
3967    pub filter_debug_annotations: ::core::option::Option<bool>,
3968    /// Default: false (i.e. disabled)
3969    /// When true, the SDK samples and emits the current thread time counter value
3970    /// for each event on the current thread's track. This value represents the
3971    /// total CPU time consumed by that thread since its creation.
3972    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
3973    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
3974    #[prost(bool, optional, tag="8")]
3975    pub enable_thread_time_sampling: ::core::option::Option<bool>,
3976    /// When enable_thread_time_sampling is true, and this is specified, thread
3977    /// time is sampled only if the elapsed wall time >
3978    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
3979    /// Effectively, this means thread time will have a leeway of
3980    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
3981    #[prost(uint64, optional, tag="10")]
3982    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
3983    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
3984    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
3985    /// out.
3986    #[prost(bool, optional, tag="9")]
3987    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3988}
3989// End of protos/perfetto/config/track_event/track_event_config.proto
3990
3991// Begin of protos/perfetto/config/data_source_config.proto
3992
3993/// The configuration that is passed to each data source when starting tracing.
3994/// Next id: 143
3995#[derive(Clone, PartialEq, ::prost::Message)]
3996pub struct DataSourceConfig {
3997    /// Data source unique name, e.g., "linux.ftrace". This must match
3998    /// the name passed by the data source when it registers (see
3999    /// RegisterDataSource()).
4000    #[prost(string, optional, tag="1")]
4001    pub name: ::core::option::Option<::prost::alloc::string::String>,
4002    /// The index of the logging buffer where TracePacket(s) will be stored.
4003    /// This field is quite subtle as it has a double semantic:
4004    /// 1) When the config is passed, this field is a 0-based index relative to the
4005    ///     buffer array in the TraceConfig and defines the mapping between data
4006    ///     sources and config. From v54 this is optional because the user can
4007    ///     instead use target_buffer_name.
4008    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
4009    ///     producer, it overwrites this field with the global buffer index (which
4010    ///     depends on other tracing sessions active). This tells the producer which
4011    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
4012    ///     service always sets the resolved global id, even when using
4013    ///     `target_buffer_name`.
4014    /// In hindsight we should have used two different fields given even in v0 they
4015    /// had a different semantic. But now it's too late as this would be a major
4016    /// protocol breaking change.
4017    #[prost(uint32, optional, tag="2")]
4018    pub target_buffer: ::core::option::Option<u32>,
4019    /// Alternative to |target_buffer|. References a buffer by name (as specified
4020    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
4021    /// readable and less error-prone than using buffer indices.
4022    /// If both |target_buffer| and |target_buffer_name| are specified, they must
4023    /// refer to the same buffer, otherwise the service will reject the config.
4024    /// Using both fields allows configs to work with both old and new versions
4025    /// of the tracing service. Introduced in v54.
4026    #[prost(string, optional, tag="11")]
4027    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
4028    /// Set by the service to indicate the duration of the trace.
4029    /// DO NOT SET in consumer as this will be overridden by the service.
4030    #[prost(uint32, optional, tag="3")]
4031    pub trace_duration_ms: ::core::option::Option<u32>,
4032    /// If true, |trace_duration_ms| should count also time in suspend. This
4033    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
4034    #[prost(bool, optional, tag="122")]
4035    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
4036    /// Set by the service to indicate how long it waits after StopDataSource.
4037    /// DO NOT SET in consumer as this will be overridden by the service.
4038    #[prost(uint32, optional, tag="7")]
4039    pub stop_timeout_ms: ::core::option::Option<u32>,
4040    /// Set by the service to indicate whether this tracing session has extra
4041    /// guardrails.
4042    /// DO NOT SET in consumer as this will be overridden by the service.
4043    #[prost(bool, optional, tag="6")]
4044    pub enable_extra_guardrails: ::core::option::Option<bool>,
4045    /// Set by the service to indicate which user initiated this trace.
4046    /// DO NOT SET in consumer as this will be overridden by the service.
4047    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
4048    pub session_initiator: ::core::option::Option<i32>,
4049    /// Set by the service to indicate which tracing session the data source
4050    /// belongs to. The intended use case for this is checking if two data sources,
4051    /// one of which produces metadata for the other one, belong to the same trace
4052    /// session and hence should be linked together.
4053    /// This field was introduced in Aug 2018 after Android P.
4054    /// DO NOT SET in consumer as this will be overridden by the service.
4055    #[prost(uint64, optional, tag="4")]
4056    pub tracing_session_id: ::core::option::Option<u64>,
4057    /// How to behave when the producer runs out of space in the shared memory
4058    /// buffer. This is only honored by some data sources (in the SDK, the data
4059    /// sources registered with a configurable buffer exhausted policy).
4060    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
4061    pub buffer_exhausted_policy: ::core::option::Option<i32>,
4062    #[prost(message, optional, tag="10")]
4063    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
4064    // If specified, the data source requires the tracing service to process
4065    // overwritten packets (patches) using a ProtoVM instance with this config.
4066    // The ProtoVM program is specified at data source registration time through
4067    // the descriptor.
4068
4069    /// TODO(primiano): today when we enable a protovm_config, we actually accept
4070    /// that if N producers advertise M different versions of the same program we
4071    /// will create M instances of that program.
4072    /// To overcome this, we could move the program to the TraceConfig. But doing
4073    /// so would bloat the trace config size too big and create problems to statsd.
4074    /// Once the config store (b/482305876) exists we should move protovm programs
4075    /// onto that.
4076    #[prost(message, optional, tag="12")]
4077    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
4078    // Keep the lower IDs (up to 99) for fields that are *not* specific to
4079    // data-sources and needs to be processed by the traced daemon.
4080
4081    // All data source config fields must be marked as \[lazy=true\]. This prevents
4082    // the proto-to-cpp generator from recursing into those when generating the
4083    // cpp classes and polluting tracing/core with data-source-specific classes.
4084    // Instead they are treated as opaque strings containing raw proto bytes.
4085
4086    /// Data source name: linux.ftrace
4087    #[prost(message, optional, tag="100")]
4088    pub ftrace_config: ::core::option::Option<FtraceConfig>,
4089    /// Data source name: linux.inode_file_map
4090    #[prost(message, optional, tag="102")]
4091    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
4092    /// Data source name: linux.process_stats
4093    #[prost(message, optional, tag="103")]
4094    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
4095    /// Data source name: linux.sys_stats
4096    #[prost(message, optional, tag="104")]
4097    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
4098    /// Data source name: android.heapprofd
4099    /// Introduced in Android 10.
4100    #[prost(message, optional, tag="105")]
4101    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
4102    /// Data source name: android.java_hprof
4103    /// Introduced in Android 11.
4104    #[prost(message, optional, tag="110")]
4105    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
4106    /// Data source name: android.power
4107    #[prost(message, optional, tag="106")]
4108    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
4109    /// Data source name: android.log
4110    #[prost(message, optional, tag="107")]
4111    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
4112    /// Data source name: gpu.counters
4113    #[prost(message, optional, tag="108")]
4114    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
4115    /// Data source name: android.game_interventions
4116    #[prost(message, optional, tag="116")]
4117    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
4118    /// Data source name: android.packages_list
4119    #[prost(message, optional, tag="109")]
4120    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
4121    /// Data source name: linux.perf
4122    #[prost(message, optional, tag="111")]
4123    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
4124    /// Data source name: vulkan.memory_tracker
4125    #[prost(message, optional, tag="112")]
4126    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
4127    /// Data source name: track_event
4128    #[prost(message, optional, tag="113")]
4129    pub track_event_config: ::core::option::Option<TrackEventConfig>,
4130    /// Data source name: android.polled_state
4131    #[prost(message, optional, tag="114")]
4132    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
4133    /// Data source name: android.system_property
4134    #[prost(message, optional, tag="118")]
4135    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
4136    /// Data source name: android.statsd
4137    #[prost(message, optional, tag="117")]
4138    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
4139    /// Data source name: linux.system_info
4140    #[prost(message, optional, tag="119")]
4141    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
4142    /// Data source name: linux.frozen_ftrace
4143    #[prost(message, optional, tag="136")]
4144    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
4145    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
4146    /// avoid proto serialization and de-serialization there because that would
4147    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
4148    /// C++ class for it so it can pass around plain C++ objets.
4149    #[prost(message, optional, tag="101")]
4150    pub chrome_config: ::core::option::Option<ChromeConfig>,
4151    /// Data source name: code.v8.dev
4152    #[prost(message, optional, tag="127")]
4153    pub v8_config: ::core::option::Option<V8Config>,
4154    /// If an interceptor is specified here, packets for this data source will be
4155    /// rerouted to the interceptor instead of the main trace buffer. This can be
4156    /// used, for example, to write trace data into ETW or for logging trace points
4157    /// to the console.
4158    ///
4159    /// Note that interceptors are only supported by data sources registered
4160    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
4161    /// traced_probes) may not support interception.
4162    #[prost(message, optional, tag="115")]
4163    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
4164    /// Data source name: android.network_packets.
4165    /// Introduced in Android 14 (U).
4166    #[prost(message, optional, tag="120")]
4167    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
4168    /// Data source name: android.surfaceflinger.layers
4169    #[prost(message, optional, tag="121")]
4170    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
4171    /// Data source name: android.surfaceflinger.transactions
4172    #[prost(message, optional, tag="123")]
4173    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
4174    /// Data source name: android.sdk_sysprop_guard
4175    /// Introduced in Android 14 (U) QPR1.
4176    #[prost(message, optional, tag="124")]
4177    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
4178    /// Data source name: windows.etw
4179    #[prost(message, optional, tag="125")]
4180    pub etw_config: ::core::option::Option<EtwConfig>,
4181    /// Data source name: android.protolog
4182    #[prost(message, optional, tag="126")]
4183    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
4184    /// Data source name: android.input.inputevent
4185    #[prost(message, optional, tag="128")]
4186    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
4187    /// Data source name: android.pixel.modem
4188    #[prost(message, optional, tag="129")]
4189    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
4190    /// Data source name: android.windowmanager
4191    #[prost(message, optional, tag="130")]
4192    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
4193    /// Data source name: org.chromium.system_metrics
4194    #[prost(message, optional, tag="131")]
4195    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
4196    /// Data source name: android.kernel_wakelocks
4197    #[prost(message, optional, tag="132")]
4198    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
4199    /// Data source name: gpu.renderstages
4200    #[prost(message, optional, tag="133")]
4201    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
4202    /// Data source name: org.chromium.histogram_samples
4203    #[prost(message, optional, tag="134")]
4204    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
4205    /// Data source name: android.app_wakelocks
4206    #[prost(message, optional, tag="135")]
4207    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
4208    /// Data source name: android.cpu_per_uid
4209    #[prost(message, optional, tag="137")]
4210    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
4211    /// Data source name: android.user_list
4212    #[prost(message, optional, tag="138")]
4213    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
4214    /// Data source name: android.inputmethod
4215    #[prost(message, optional, tag="139")]
4216    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
4217    /// Data source name: android.aflags
4218    #[prost(message, optional, tag="140")]
4219    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
4220    /// Data source name: linux.systemd_journald
4221    #[prost(message, optional, tag="141")]
4222    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
4223    /// Data source name: android.display.video
4224    #[prost(message, optional, tag="142")]
4225    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
4226    /// Data source name: qnx.kernel
4227    #[prost(message, optional, tag="150")]
4228    pub qnx_config: ::core::option::Option<QnxConfig>,
4229    /// This is a fallback mechanism to send a free-form text config to the
4230    /// producer. In theory this should never be needed. All the code that
4231    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
4232    /// the trace config proto and propagate unknown fields. However, if anything
4233    /// in the pipeline (client or backend) ends up breaking this forward compat
4234    /// plan, this field will become the escape hatch to allow future data sources
4235    /// to get some meaningful configuration.
4236    #[prost(string, optional, tag="1000")]
4237    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
4238    /// This field is only used for testing.
4239    #[prost(message, optional, tag="1001")]
4240    pub for_testing: ::core::option::Option<TestConfig>,
4241}
4242/// Nested message and enum types in `DataSourceConfig`.
4243pub mod data_source_config {
4244    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4245    #[repr(i32)]
4246    pub enum SessionInitiator {
4247        Unspecified = 0,
4248        /// This trace was initiated from a trusted system app has DUMP and
4249        /// USAGE_STATS permission. This system app is expected to not expose the
4250        /// trace to the user of the device.
4251        /// This is determined by checking the UID initiating the trace.
4252        TrustedSystem = 1,
4253    }
4254    impl SessionInitiator {
4255        /// String value of the enum field names used in the ProtoBuf definition.
4256        ///
4257        /// The values are not transformed in any way and thus are considered stable
4258        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4259        pub fn as_str_name(&self) -> &'static str {
4260            match self {
4261                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
4262                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
4263            }
4264        }
4265    }
4266    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4267    #[repr(i32)]
4268    pub enum BufferExhaustedPolicy {
4269        /// The data source will use its default buffer exhausted policy, specified
4270        /// by the code when the data source is registered.
4271        BufferExhaustedUnspecified = 0,
4272        /// The data source will drop packets when there's no space in the shared
4273        /// memory buffer.
4274        BufferExhaustedDrop = 1,
4275        /// The data source will wait when there's no space in the shared memory
4276        /// buffer. If there's still not space, after a few seconds, the whole
4277        /// producer process will be aborted.
4278        BufferExhaustedStallThenAbort = 2,
4279        /// The data source will wait when there's no space in the shared memory
4280        /// buffer.  If there's still not space, after a few seconds, the data source
4281        /// will drop packets.
4282        BufferExhaustedStallThenDrop = 3,
4283    }
4284    impl BufferExhaustedPolicy {
4285        /// String value of the enum field names used in the ProtoBuf definition.
4286        ///
4287        /// The values are not transformed in any way and thus are considered stable
4288        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4289        pub fn as_str_name(&self) -> &'static str {
4290            match self {
4291                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
4292                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
4293                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
4294                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
4295            }
4296        }
4297    }
4298}
4299// End of protos/perfetto/config/data_source_config.proto
4300
4301// Begin of protos/perfetto/config/trace_config.proto
4302
4303/// The overall config that is used when starting a new tracing session through
4304/// ProducerPort::StartTracing().
4305/// It contains the general config for the logging buffer(s) and the configs for
4306/// all the data source being enabled.
4307///
4308/// Next id: 47.
4309#[derive(Clone, PartialEq, ::prost::Message)]
4310pub struct TraceConfig {
4311    #[prost(message, repeated, tag="1")]
4312    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
4313    #[prost(message, repeated, tag="2")]
4314    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
4315    #[prost(message, optional, tag="20")]
4316    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
4317    /// If specified, the trace will be stopped |duration_ms| after starting.
4318    /// This does *not* count the time the system is suspended, so we will run
4319    /// for duration_ms of system activity, not wall time.
4320    ///
4321    /// However in case of traces with triggers, see
4322    /// TriggerConfig.trigger_timeout_ms instead.
4323    #[prost(uint32, optional, tag="3")]
4324    pub duration_ms: ::core::option::Option<u32>,
4325    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
4326    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
4327    /// Linux/Android, no-op on other platforms. This is used when dealing with
4328    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
4329    /// wall-time, making them more likely to hit device reboots (and hence loss).
4330    /// This option also changes consistently the semantic of
4331    /// TriggerConfig.stop_delay_ms.
4332    #[prost(bool, optional, tag="36")]
4333    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
4334    /// This is set when --dropbox is passed to the Perfetto command line client
4335    /// and enables guardrails that limit resource usage for traces requested
4336    /// by statsd.
4337    #[prost(bool, optional, tag="4")]
4338    pub enable_extra_guardrails: ::core::option::Option<bool>,
4339    /// Reject producers that are not running under the same UID as the tracing
4340    /// service.
4341    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
4342    pub lockdown_mode: ::core::option::Option<i32>,
4343    #[prost(message, repeated, tag="6")]
4344    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
4345    /// Statsd-specific metadata.
4346    #[prost(message, optional, tag="7")]
4347    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
4348    /// When true && |output_path| is empty, the EnableTracing() request must
4349    /// provide a file descriptor. The service will then periodically read packets
4350    /// out of the trace buffer and store it into the passed file.
4351    /// If |output_path| is not empty no fd should be passed, the service
4352    /// will create a new file and write into that (see comment below).
4353    #[prost(bool, optional, tag="8")]
4354    pub write_into_file: ::core::option::Option<bool>,
4355    /// This must point to a non-existing file. If the file exists the service
4356    /// will NOT overwrite and will fail instead as a security precaution.
4357    /// On Android, when this is used with the system traced, the path must be
4358    /// within /data/misc/perfetto-traces/ or the trace will fail.
4359    /// This option has been introduced in Android R. Before R write_into_file
4360    /// can be used only with the "pass a file descriptor over IPC" mode.
4361    #[prost(string, optional, tag="29")]
4362    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
4363    /// Optional. If non-zero tunes the write period. A min value of 100ms is
4364    /// enforced (i.e. smaller values are ignored).
4365    #[prost(uint32, optional, tag="9")]
4366    pub file_write_period_ms: ::core::option::Option<u32>,
4367    /// Optional. When non zero the periodic write stops once at most X bytes
4368    /// have been written into the file. Tracing is disabled when this limit is
4369    /// reached, even if |duration_ms| has not been reached yet.
4370    #[prost(uint64, optional, tag="10")]
4371    pub max_file_size_bytes: ::core::option::Option<u64>,
4372    #[prost(message, optional, tag="11")]
4373    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
4374    /// When true, data sources are not started until an explicit call to
4375    /// StartTracing() on the consumer port. This is to support early
4376    /// initialization and fast trace triggering. This can be used only when the
4377    /// Consumer explicitly triggers the StartTracing() method.
4378    /// This should not be used in a remote trace config via statsd, doing so will
4379    /// result in a hung trace session.
4380    #[prost(bool, optional, tag="12")]
4381    pub deferred_start: ::core::option::Option<bool>,
4382    /// When set, it periodically issues a Flush() to all data source, forcing them
4383    /// to commit their data into the tracing service. This can be used for
4384    /// quasi-real-time streaming mode and to guarantee some partial ordering of
4385    /// events in the trace in windows of X ms.
4386    ///
4387    /// Warning: Perfetto automatically handles periodic flushing so in most
4388    /// scenarios setting this field is not needed. High frequency flushing can
4389    /// significantly impact performance.
4390    #[prost(uint32, optional, tag="13")]
4391    pub flush_period_ms: ::core::option::Option<u32>,
4392    /// Wait for this long for producers to acknowledge flush requests.
4393    /// Default 5s.
4394    #[prost(uint32, optional, tag="14")]
4395    pub flush_timeout_ms: ::core::option::Option<u32>,
4396    /// Wait for this long for producers to acknowledge stop requests.
4397    /// Default 5s.
4398    #[prost(uint32, optional, tag="23")]
4399    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
4400    /// Android-only. If set, sends an intent to the Traceur system app when the
4401    /// trace ends to notify it about the trace readiness.
4402    #[prost(bool, optional, tag="16")]
4403    pub notify_traceur: ::core::option::Option<bool>,
4404    /// This field was introduced in Android S.
4405    /// Android-only. If set to a value > 0, marks the trace session as a candidate
4406    /// for being attached to a bugreport. This field effectively acts as a z-index
4407    /// for bugreports. When Android's dumpstate runs perfetto
4408    /// --save-for-bugreport, traced will pick the tracing session with the highest
4409    /// score (score <= 0 is ignored) and:
4410    /// On Android S, T:  will steal its contents, save the trace into
4411    ///      a known path and stop prematurely.
4412    /// On Android U+: will create a read-only snapshot and save that into a known
4413    ///      path, without stoppin the original tracing session.
4414    /// When this field is set the tracing session becomes eligible to be cloned
4415    /// by other UIDs.
4416    #[prost(int32, optional, tag="30")]
4417    pub bugreport_score: ::core::option::Option<i32>,
4418    /// When set, defines name of the file that will be saved under
4419    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
4420    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
4421    /// starting from the highest `bugreport_score`.
4422    /// Introduced in v42 / Android V.
4423    #[prost(string, optional, tag="38")]
4424    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
4425    #[prost(message, optional, tag="17")]
4426    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
4427    /// When this is non-empty the perfetto command line tool will ignore the rest
4428    /// of this TraceConfig and instead connect to the perfetto service as a
4429    /// producer and send these triggers, potentially stopping or starting traces
4430    /// that were previous configured to use a TriggerConfig.
4431    #[prost(string, repeated, tag="18")]
4432    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4433    #[prost(message, optional, tag="21")]
4434    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
4435    /// No longer needed as we unconditionally allow tracing on user builds.
4436    #[deprecated]
4437    #[prost(bool, optional, tag="19")]
4438    pub allow_user_build_tracing: ::core::option::Option<bool>,
4439    /// If set the tracing service will ensure there is at most one tracing session
4440    /// with this key.
4441    #[prost(string, optional, tag="22")]
4442    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
4443    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
4444    pub compression_type: ::core::option::Option<i32>,
4445    #[prost(message, optional, tag="25")]
4446    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
4447    /// Android-only. Not for general use. If specified, sets the logging to statsd
4448    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
4449    /// this to enabled (if not explicitly set in the config) when specifying
4450    /// --upload.
4451    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
4452    pub statsd_logging: ::core::option::Option<i32>,
4453    /// An identifier clients can use to tie this trace to other logging.
4454    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
4455    /// Trace UUID. If this field is set, the tracing service will respect the
4456    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
4457    /// gap-less snapshotting is not used.
4458    #[deprecated]
4459    #[prost(int64, optional, tag="27")]
4460    pub trace_uuid_msb: ::core::option::Option<i64>,
4461    #[deprecated]
4462    #[prost(int64, optional, tag="28")]
4463    pub trace_uuid_lsb: ::core::option::Option<i64>,
4464    #[prost(message, optional, tag="33")]
4465    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
4466    #[prost(message, optional, tag="34")]
4467    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
4468    #[prost(message, optional, tag="35")]
4469    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
4470    #[prost(message, repeated, tag="39")]
4471    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
4472    /// Priority boost to be applied to the traced process, when the session is
4473    /// running.
4474    #[prost(message, optional, tag="40")]
4475    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
4476    /// When set to a value > 0, this tracing session will be started in
4477    /// "exclusive mode". This has the following semantics:
4478    /// - It can only be set by shell or root users.
4479    /// - A new exclusive session will only be started if its priority is strictly
4480    ///    higher than any other active tracing session.
4481    /// - If a new exclusive session is started, all other existing tracing
4482    ///    sessions (exclusive or not) are aborted.
4483    /// - While an exclusive session is active, any new non-exclusive session (or
4484    ///    any exclusive session with a lower or equal priority) will be rejected.
4485    ///
4486    /// Introduced in: perfetto v52.
4487    /// Supported on: Android 25Q3+.
4488    #[prost(uint32, optional, tag="41")]
4489    pub exclusive_prio: ::core::option::Option<u32>,
4490    /// Configures how the service should handle flushing data from producers
4491    /// before periodically writing the trace into the output file.
4492    /// Only applicable when |write_into_file| is true.
4493    ///
4494    /// By default, if |write_into_file| is set, the service periodically issues
4495    /// a Flush() to all data sources before writing buffers into the file.
4496    /// This ensures the file always contains the latest available data.
4497    ///
4498    /// Introduced in: perfetto v54.
4499    /// Supported on: Android 26Q1+.
4500    #[prost(enumeration="trace_config::WriteFlushMode", optional, tag="44")]
4501    pub write_flush_mode: ::core::option::Option<i32>,
4502    /// Whether to sync the output file to storage after each periodic write pass.
4503    /// Only applicable when |write_into_file| is true.
4504    ///
4505    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
4506    /// sync to storage on every write.
4507    ///
4508    /// Introduced in: perfetto v54.
4509    /// Supported on: Android 26Q1+.
4510    #[prost(enumeration="trace_config::FFlushMode", optional, tag="45")]
4511    pub fflush_post_write: ::core::option::Option<i32>,
4512    /// When true, data sources in remote producers (machines connected via
4513    /// traced_relay) will be matched by default. When false (the default), data
4514    /// sources only match the host machine. In either case, an explicit
4515    /// |DataSource.machine_name_filter| takes priority.
4516    ///
4517    /// NB: perfetto versions before v54 do not have this option and match across
4518    /// machines by default. To be compatible across this version boundary, either
4519    /// set this field to true, or set an explicit machine_name_filter on all data
4520    /// sources.
4521    ///
4522    /// Introduced in: perfetto v54.
4523    #[prost(bool, optional, tag="43")]
4524    pub trace_all_machines: ::core::option::Option<bool>,
4525    #[prost(message, repeated, tag="46")]
4526    pub notes: ::prost::alloc::vec::Vec<trace_config::Note>,
4527}
4528/// Nested message and enum types in `TraceConfig`.
4529pub mod trace_config {
4530    #[derive(Clone, PartialEq, ::prost::Message)]
4531    pub struct BufferConfig {
4532        #[prost(uint32, optional, tag="1")]
4533        pub size_kb: ::core::option::Option<u32>,
4534        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
4535        pub fill_policy: ::core::option::Option<i32>,
4536        /// When true the buffer is moved (rather than copied) onto the cloned
4537        /// session, and an empty buffer of the same size is allocated in the source
4538        /// tracing session. This feature will likely get deprecated in the future.
4539        /// It been introduced mainly to support the surfaceflinger snapshot dump
4540        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
4541        /// that case we don't want to retain another in-memory copy of the buffer.
4542        #[prost(bool, optional, tag="5")]
4543        pub transfer_on_clone: ::core::option::Option<bool>,
4544        /// Used in conjunction with transfer_on_clone. When true the buffer is
4545        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
4546        /// that if the data source took too long to write the data in a previous
4547        /// clone-related flush, we don't end up with a mixture of leftovers from
4548        /// the previous write and new data.
4549        #[prost(bool, optional, tag="6")]
4550        pub clear_before_clone: ::core::option::Option<bool>,
4551        /// Optional name for this buffer. If set, data sources can reference this
4552        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
4553        /// using the buffer index. Buffer names must be unique within a tracing
4554        /// session. This provides a more human-readable and less error-prone way to
4555        /// configure which buffer a data source writes to.
4556        #[prost(string, optional, tag="7")]
4557        pub name: ::core::option::Option<::prost::alloc::string::String>,
4558        #[prost(enumeration="buffer_config::ExperimentalMode", optional, tag="8")]
4559        pub experimental_mode: ::core::option::Option<i32>,
4560    }
4561    /// Nested message and enum types in `BufferConfig`.
4562    pub mod buffer_config {
4563        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4564        #[repr(i32)]
4565        pub enum FillPolicy {
4566            Unspecified = 0,
4567            /// Default behavior. The buffer operates as a conventional ring buffer.
4568            /// If the writer is faster than the reader (or if the reader reads only
4569            /// after tracing is stopped) newly written packets will overwrite old
4570            /// packets.
4571            RingBuffer = 1,
4572            /// Behaves like RING_BUFFER as long as there is space in the buffer or
4573            /// the reader catches up with the writer. As soon as the writer hits
4574            /// an unread chunk, it stops accepting new data in the buffer.
4575            Discard = 2,
4576        }
4577        impl FillPolicy {
4578            /// String value of the enum field names used in the ProtoBuf definition.
4579            ///
4580            /// The values are not transformed in any way and thus are considered stable
4581            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4582            pub fn as_str_name(&self) -> &'static str {
4583                match self {
4584                    FillPolicy::Unspecified => "UNSPECIFIED",
4585                    FillPolicy::RingBuffer => "RING_BUFFER",
4586                    FillPolicy::Discard => "DISCARD",
4587                }
4588            }
4589        }
4590        /// When true, uses the experimental TraceBufferV2 implementation for this
4591        /// buffer. This is for testing purposes only and may be removed in future
4592        /// versions.
4593        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4594        #[repr(i32)]
4595        pub enum ExperimentalMode {
4596            /// Use the default V1 implementation.
4597            ModeUnspecified = 0,
4598            /// Use TraceBufferV2.
4599            TraceBufferV2 = 1,
4600            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
4601            /// but only V1 data is returned. Comparison stats are reported to
4602            /// validate V2 returns equivalent data.
4603            TraceBufferV2ShadowMode = 2,
4604        }
4605        impl ExperimentalMode {
4606            /// String value of the enum field names used in the ProtoBuf definition.
4607            ///
4608            /// The values are not transformed in any way and thus are considered stable
4609            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4610            pub fn as_str_name(&self) -> &'static str {
4611                match self {
4612                    ExperimentalMode::ModeUnspecified => "MODE_UNSPECIFIED",
4613                    ExperimentalMode::TraceBufferV2 => "TRACE_BUFFER_V2",
4614                    ExperimentalMode::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
4615                }
4616            }
4617        }
4618    }
4619    #[derive(Clone, PartialEq, ::prost::Message)]
4620    pub struct DataSource {
4621        /// Filters and data-source specific config. It contains also the unique name
4622        /// of the data source, the one passed in the  DataSourceDescriptor when they
4623        /// register on the service.
4624        #[prost(message, optional, tag="1")]
4625        pub config: ::core::option::Option<super::DataSourceConfig>,
4626        /// Optional. If multiple producers (~processes) expose the same data source
4627        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
4628        /// the data source is enabled only for producers whose names match any of
4629        /// the filters.
4630        /// |producer_name_filter| has to be an exact match, while
4631        /// |producer_name_regex_filter| is a regular expression.
4632        /// This allows to enable a data source only for specific processes.
4633        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
4634        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
4635        #[prost(string, repeated, tag="2")]
4636        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4637        #[prost(string, repeated, tag="3")]
4638        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4639        /// Filter by machine names. The name of a machine is determined by the
4640        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
4641        /// variable is not set then the
4642        /// persist.traced_relay.machine_name system property is used. If the
4643        /// sysprop isn't set or not in an Android system, then the machine name by
4644        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
4645        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
4646        /// to the host machine, which is the machine running traced.
4647        #[prost(string, repeated, tag="4")]
4648        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4649    }
4650    /// Config for disabling builtin data sources in the tracing service.
4651    #[derive(Clone, PartialEq, ::prost::Message)]
4652    pub struct BuiltinDataSource {
4653        /// Disable emitting clock timestamps into the trace.
4654        #[prost(bool, optional, tag="1")]
4655        pub disable_clock_snapshotting: ::core::option::Option<bool>,
4656        /// Disable echoing the original trace config in the trace.
4657        #[prost(bool, optional, tag="2")]
4658        pub disable_trace_config: ::core::option::Option<bool>,
4659        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
4660        #[prost(bool, optional, tag="3")]
4661        pub disable_system_info: ::core::option::Option<bool>,
4662        /// Disable emitting events for data-source state changes (e.g. the marker
4663        /// for all data sources having ACKed the start of the trace).
4664        #[prost(bool, optional, tag="4")]
4665        pub disable_service_events: ::core::option::Option<bool>,
4666        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
4667        /// also ClockSnapshot's primary_trace_clock. The configured value is written
4668        /// into the trace as part of the ClockSnapshots emitted by the service.
4669        /// Trace processor will attempt to translate packet/event timestamps from
4670        /// various data sources (and their chosen clock domains) to this domain
4671        /// during import. Added in Android R.
4672        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
4673        pub primary_trace_clock: ::core::option::Option<i32>,
4674        /// Time interval in between snapshotting of sync markers, clock snapshots,
4675        /// stats, and other periodic service-emitted events. Note that the service
4676        /// only keeps track of the first and the most recent snapshot until
4677        /// ReadBuffers() is called.
4678        #[prost(uint32, optional, tag="6")]
4679        pub snapshot_interval_ms: ::core::option::Option<u32>,
4680        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
4681        /// clock should be used for periodic snapshots of service-emitted events.
4682        /// This means, if a snapshot *should* have happened during suspend, it will
4683        /// happen immediately after the device resumes.
4684        ///
4685        /// Choosing a clock like this is done on best-effort basis; not all
4686        /// platforms (e.g. Windows) expose a clock which can be used for periodic
4687        /// tasks counting suspend. If such a clock is not available, the service
4688        /// falls back to the best-available alternative.
4689        ///
4690        /// Introduced in Android S.
4691        /// TODO(lalitm): deprecate this in T and make this the default if nothing
4692        /// crashes in S.
4693        #[prost(bool, optional, tag="7")]
4694        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
4695        /// Disables the reporting of per-trace-writer histograms in TraceStats.
4696        #[prost(bool, optional, tag="8")]
4697        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
4698        /// Disable emitting extension descriptors into the trace.
4699        #[prost(bool, optional, tag="9")]
4700        pub disable_extension_descriptors: ::core::option::Option<bool>,
4701    }
4702    #[derive(Clone, PartialEq, ::prost::Message)]
4703    pub struct ProducerConfig {
4704        /// Identifies the producer for which this config is for.
4705        #[prost(string, optional, tag="1")]
4706        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
4707        /// Specifies the preferred size of the shared memory buffer. If the size is
4708        /// larger than the max size, the max will be used. If it is smaller than
4709        /// the page size or doesn't fit pages evenly into it, it will fall back to
4710        /// the size specified by the producer or finally the default shared memory
4711        /// size.
4712        #[prost(uint32, optional, tag="2")]
4713        pub shm_size_kb: ::core::option::Option<u32>,
4714        /// Specifies the preferred size of each page in the shared memory buffer.
4715        /// Must be an integer multiple of 4K.
4716        #[prost(uint32, optional, tag="3")]
4717        pub page_size_kb: ::core::option::Option<u32>,
4718    }
4719    /// Contains statsd-specific metadata about an alert associated with the trace.
4720    #[derive(Clone, PartialEq, ::prost::Message)]
4721    pub struct StatsdMetadata {
4722        /// The identifier of the alert which triggered this trace.
4723        #[prost(int64, optional, tag="1")]
4724        pub triggering_alert_id: ::core::option::Option<i64>,
4725        /// The uid which registered the triggering configuration with statsd.
4726        #[prost(int32, optional, tag="2")]
4727        pub triggering_config_uid: ::core::option::Option<i32>,
4728        /// The identifier of the config which triggered the alert.
4729        #[prost(int64, optional, tag="3")]
4730        pub triggering_config_id: ::core::option::Option<i64>,
4731        /// The identifier of the subscription which triggered this trace.
4732        #[prost(int64, optional, tag="4")]
4733        pub triggering_subscription_id: ::core::option::Option<i64>,
4734    }
4735    /// Contains flags which override the default values of the guardrails inside
4736    /// Perfetto.
4737    #[derive(Clone, PartialEq, ::prost::Message)]
4738    pub struct GuardrailOverrides {
4739        /// Override the default limit (in bytes) for uploading data to server within
4740        /// a 24 hour period.
4741        /// On R-, this override only affected userdebug builds. Since S, it also
4742        /// affects user builds.
4743        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
4744        /// was removed from Perfetto.
4745        #[deprecated]
4746        #[prost(uint64, optional, tag="1")]
4747        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
4748        /// Overrides the guardrail for maximum trace buffer size.
4749        /// Available on U+
4750        #[prost(uint32, optional, tag="2")]
4751        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
4752    }
4753    /// Triggers allow producers to start or stop the tracing session when an event
4754    /// occurs.
4755    ///
4756    /// For example if we are tracing probabilistically, most traces will be
4757    /// uninteresting. Triggers allow us to keep only the interesting ones such as
4758    /// those traces during which the device temperature reached a certain
4759    /// threshold. In this case the producer can activate a trigger to keep
4760    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
4761    /// (START_TRACING) because it knows something is about to happen.
4762    #[derive(Clone, PartialEq, ::prost::Message)]
4763    pub struct TriggerConfig {
4764        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
4765        pub trigger_mode: ::core::option::Option<i32>,
4766        /// This flag is really a workaround for b/274931668. This is needed only
4767        /// when deploying configs to different versions of the tracing service.
4768        /// When this is set to true this has the same effect of setting trigger_mode
4769        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
4770        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
4771        /// versions of Android and fall back to STOP_TRACING on older versions where
4772        /// CLONE_SNAPSHOT did not exist.
4773        /// When using this flag, trigger_mode must be set to STOP_TRACING.
4774        #[prost(bool, optional, tag="5")]
4775        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
4776        /// A list of triggers which are related to this configuration. If ANY
4777        /// trigger is seen then an action will be performed based on |trigger_mode|.
4778        #[prost(message, repeated, tag="2")]
4779        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
4780        /// Required and must be positive if a TriggerConfig is specified. This is
4781        /// how long this TraceConfig should wait for a trigger to arrive. After this
4782        /// period of time if no trigger is seen the TracingSession will be cleaned
4783        /// up.
4784        #[prost(uint32, optional, tag="3")]
4785        pub trigger_timeout_ms: ::core::option::Option<u32>,
4786    }
4787    /// Nested message and enum types in `TriggerConfig`.
4788    pub mod trigger_config {
4789        #[derive(Clone, PartialEq, ::prost::Message)]
4790        pub struct Trigger {
4791            /// The producer must specify this name to activate the trigger.
4792            #[prost(string, optional, tag="1")]
4793            pub name: ::core::option::Option<::prost::alloc::string::String>,
4794            /// An std::regex that will match the producer that can activate this
4795            /// trigger. This is optional. If unset any producers can activate this
4796            /// trigger.
4797            #[prost(string, optional, tag="2")]
4798            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
4799            /// After a trigger is received either in START_TRACING or STOP_TRACING
4800            /// mode then the trace will end |stop_delay_ms| after triggering.
4801            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
4802            /// snapshot.
4803            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
4804            /// based on wall-clock, counting also time in suspend.
4805            #[prost(uint32, optional, tag="3")]
4806            pub stop_delay_ms: ::core::option::Option<u32>,
4807            /// Limits the number of traces this trigger can start/stop in a rolling
4808            /// 24 hour window. If this field is unset or zero, no limit is applied and
4809            /// activiation of this trigger *always* starts/stops the trace.
4810            #[prost(uint32, optional, tag="4")]
4811            pub max_per_24_h: ::core::option::Option<u32>,
4812            /// A value between 0 and 1 which encodes the probability of skipping a
4813            /// trigger with this name. This is useful for reducing the probability
4814            /// of high-frequency triggers from dominating trace finaization. If this
4815            /// field is unset or zero, the trigger will *never* be skipped. If this
4816            /// field is greater than or equal to 1, this trigger will *always* be
4817            /// skipped i.e. it will be as if this trigger was never included in the
4818            /// first place.
4819            /// This probability check is applied *before* any other limits. For
4820            /// example, if |max_per_24_h| is also set, first we will check if the
4821            /// probability bar is met and only then will we check the |max_per_24_h|
4822            /// limit.
4823            #[prost(double, optional, tag="5")]
4824            pub skip_probability: ::core::option::Option<f64>,
4825        }
4826        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4827        #[repr(i32)]
4828        pub enum TriggerMode {
4829            Unspecified = 0,
4830            /// When this mode is chosen, data sources are not started until one of the
4831            /// |triggers| are received. This supports early initialization and fast
4832            /// starting of the tracing system. On triggering, the session will then
4833            /// record for |stop_delay_ms|. However if no trigger is seen
4834            /// after |trigger_timeout_ms| the session will be stopped and no data will
4835            /// be returned.
4836            StartTracing = 1,
4837            /// When this mode is chosen, the session will be started via the normal
4838            /// EnableTracing() & StartTracing(). If no trigger is ever seen
4839            /// the session will be stopped after |trigger_timeout_ms| and no data will
4840            /// be returned. However if triggered the trace will stop after
4841            /// |stop_delay_ms| and any data in the buffer will be returned to the
4842            /// consumer.
4843            StopTracing = 2,
4844            /// When this mode is chosen, this causes a snapshot of the current tracing
4845            /// session to be created after |stop_delay_ms| while the current tracing
4846            /// session continues undisturbed (% an extra flush). This mode can be
4847            /// used only when the tracing session is handled by the "perfetto" cmdline
4848            /// client (which is true in 90% of cases). Part of the business logic
4849            /// necessary for this behavior, and ensuing file handling, lives in
4850            /// perfetto_cmd.cc . On other consumers, this causes only a notification
4851            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
4852            /// consumer is supposed to call CloneSession() itself after the event.
4853            /// Use use_clone_snapshot_if_available=true when targeting older versions
4854            /// of perfetto.
4855            CloneSnapshot = 4,
4856        }
4857        impl TriggerMode {
4858            /// String value of the enum field names used in the ProtoBuf definition.
4859            ///
4860            /// The values are not transformed in any way and thus are considered stable
4861            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4862            pub fn as_str_name(&self) -> &'static str {
4863                match self {
4864                    TriggerMode::Unspecified => "UNSPECIFIED",
4865                    TriggerMode::StartTracing => "START_TRACING",
4866                    TriggerMode::StopTracing => "STOP_TRACING",
4867                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
4868                }
4869            }
4870        }
4871    }
4872    /// Configuration for trace contents that reference earlier trace data. For
4873    /// example, a data source might intern strings, and emit packets containing
4874    /// {interned id : string} pairs. Future packets from that data source can then
4875    /// use the interned ids instead of duplicating the raw string contents. The
4876    /// trace parser will then need to use that interning table to fully interpret
4877    /// the rest of the trace.
4878    #[derive(Clone, PartialEq, ::prost::Message)]
4879    pub struct IncrementalStateConfig {
4880        /// If nonzero, notify eligible data sources to clear their incremental state
4881        /// periodically, with the given period. The notification is sent only to
4882        /// data sources that have |handles_incremental_state_clear| set in their
4883        /// DataSourceDescriptor. The notification requests that the data source
4884        /// stops referring to past trace contents. This is particularly useful when
4885        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
4886        /// trace data.
4887        ///
4888        /// Warning: this time-based global clearing is likely to be removed in the
4889        /// future, to be replaced with a smarter way of sending the notifications
4890        /// only when necessary.
4891        #[prost(uint32, optional, tag="1")]
4892        pub clear_period_ms: ::core::option::Option<u32>,
4893    }
4894    /// Android-only. Not for general use. If set, saves the trace into an
4895    /// incident. This field is read by perfetto_cmd, rather than the tracing
4896    /// service. This field must be set when passing the --upload flag to
4897    /// perfetto_cmd.
4898    ///
4899    /// In this message, either:
4900    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4901    ///     must be set.
4902    ///   * |skip_incidentd| must be explicitly set to true.
4903    #[derive(Clone, PartialEq, ::prost::Message)]
4904    pub struct IncidentReportConfig {
4905        #[prost(string, optional, tag="1")]
4906        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4907        #[prost(string, optional, tag="2")]
4908        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4909        /// Level of filtering in the requested incident. See |Destination| in
4910        /// frameworks/base/core/proto/android/privacy.proto.
4911        #[prost(int32, optional, tag="3")]
4912        pub privacy_level: ::core::option::Option<i32>,
4913        /// If true, then skips saving the trace to incidentd.
4914        ///
4915        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4916        /// or when we explicitly don't want traces to go to incidentd even when they
4917        /// usually would (e.g. configs deployed using statsd but only used for
4918        /// inclusion in bugreports using |bugreport_score|).
4919        ///
4920        /// The motivation for having this flag, instead of just not setting
4921        /// |incident_report_config|, is prevent accidents where
4922        /// |incident_report_config| is omitted by mistake.
4923        #[prost(bool, optional, tag="5")]
4924        pub skip_incidentd: ::core::option::Option<bool>,
4925        /// If true, do not write the trace into dropbox (i.e. incident only).
4926        /// Otherwise, write to both dropbox and incident.
4927        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4928        #[deprecated]
4929        #[prost(bool, optional, tag="4")]
4930        pub skip_dropbox: ::core::option::Option<bool>,
4931    }
4932    /// When set applies a post-filter to the trace contents using the filter
4933    /// provided. The filter is applied at ReadBuffers() time and works both in the
4934    /// case of IPC readback and write_into_file. This filter can be generated
4935    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4936    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4937    /// design.
4938    ///
4939    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4940    /// Android T with a different field number. Updated in Android U with a new
4941    /// bytecode version which supports string filtering.
4942    ///
4943    /// =========================
4944    /// Filter bytecode.
4945    /// =========================
4946    #[derive(Clone, PartialEq, ::prost::Message)]
4947    pub struct TraceFilter {
4948        /// The bytecode as implemented in Android T.
4949        #[prost(bytes="vec", optional, tag="1")]
4950        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4951        /// The bytecode as implemented in Android U. Adds support for string
4952        /// filtering.
4953        #[prost(bytes="vec", optional, tag="2")]
4954        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4955        #[prost(message, optional, tag="3")]
4956        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4957        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
4958        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
4959        /// versions ignore this field; new versions apply it.
4960        ///
4961        /// The motivation for this is that adding new opcodes in a backwards
4962        /// compatible way while also minimizing config size is hard. Instead, the
4963        /// overlay mechanism allows us to "patch" specific fields in the original
4964        /// bytecode_v2 with new semantics.
4965        ///
4966        /// See RFC 0011-subset-string-filter-rules.md for more info.
4967        ///
4968        /// Note:
4969        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
4970        /// markers), this overlay uses a triplet format with explicit indices:
4971        ///    [msg_index, field_id << 3 | opcode, argument] ... \[checksum\]
4972        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
4973        /// Entries must be sorted by (msg_index, field_id).
4974        ///
4975        /// The parser processes bytecode_v2 and this overlay simultaneously:
4976        ///   - any field not mentioned in the overlay is parsed as usual
4977        ///   - any field in the overlay but *not* in the bytecode_v2 is added
4978        ///     with its overlay value
4979        ///   - any field in both the overlay and bytecode_v2 takes the value in the
4980        ///     overlay, the bytecode_v2 value is ignored.
4981        ///
4982        /// Note: despite the name, this was broken in v54 (the overlay was not
4983        /// passed through to the bytecode parser). Only works in v55+.
4984        #[prost(bytes="vec", optional, tag="4")]
4985        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4986        /// String filter chain for Perfetto v54+. Rules in this chain either
4987        /// overwrite rules in string_filter_chain (if the name matches) or are
4988        /// appended (if the name doesn't match). This allows modifying existing
4989        /// rules (e.g., changing policy) without duplicating the entire chain.
4990        /// Rules without a name are always appended.
4991        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4992        /// Introduced in: Perfetto v54.
4993        #[prost(message, optional, tag="5")]
4994        pub string_filter_chain_v54: ::core::option::Option<trace_filter::StringFilterChain>,
4995    }
4996    /// Nested message and enum types in `TraceFilter`.
4997    pub mod trace_filter {
4998        /// A rule specifies how strings should be filtered.
4999        #[derive(Clone, PartialEq, ::prost::Message)]
5000        pub struct StringFilterRule {
5001            /// The policy (i.e. algorithm) dictating how strings matching this rule
5002            /// should be handled.
5003            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
5004            pub policy: ::core::option::Option<i32>,
5005            /// The regex pattern used to match against each string.
5006            #[prost(string, optional, tag="2")]
5007            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
5008            /// The string which should appear after the tgid in atrace tracepoint
5009            /// strings.
5010            #[prost(string, optional, tag="3")]
5011            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
5012            /// Optional name for the rule. When merging chains (e.g. via
5013            /// string_filter_chain_v54), rules with matching names in the newer chain
5014            /// will overwrite rules in the base chain. Rules without a name (empty or
5015            /// unset) are always treated as distinct and will be appended.
5016            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5017            /// Introduced in: Perfetto v54.
5018            #[prost(string, optional, tag="4")]
5019            pub name: ::core::option::Option<::prost::alloc::string::String>,
5020            /// The semantic types this rule applies to.
5021            ///
5022            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
5023            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
5024            /// - If non-empty, the rule applies only to fields whose semantic type
5025            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
5026            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
5027            ///
5028            /// Examples:
5029            ///    semantic_type: []           -> matches only UNSPECIFIED fields
5030            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
5031            ///    semantic_type: [UNSPECIFIED, ATRACE] -> matches both
5032            ///
5033            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5034            /// Introduced in: Perfetto v54.
5035            #[prost(enumeration="super::super::SemanticType", repeated, packed="false", tag="5")]
5036            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
5037        }
5038        /// A chain is a list of rules which string will be sequentially checked
5039        /// against.
5040        #[derive(Clone, PartialEq, ::prost::Message)]
5041        pub struct StringFilterChain {
5042            #[prost(message, repeated, tag="1")]
5043            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
5044        }
5045        // =========================
5046        // String filtering
5047        // =========================
5048
5049        // The principles and terminology of string filtering is heavily inspired by
5050        // iptables. A "rule" decide how strings should be filtered. Each rule
5051        // contains a "policy" which indicates the algorithm to use for filtering.
5052        // A "chain" is a list of rules which will be sequentially checked against
5053        // each string.
5054        //
5055        // The first rule which applies to the string terminates filtering for that
5056        // string. If no rules apply, the string is left unchanged.
5057
5058        /// A policy specifies which algorithm should be used for filtering the
5059        /// string.
5060        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5061        #[repr(i32)]
5062        pub enum StringFilterPolicy {
5063            SfpUnspecified = 0,
5064            /// Tries to match the string field against |regex_pattern|. If it
5065            /// matches, all matching groups are "redacted" (i.e. replaced with a
5066            /// constant string) and filtering is terminated (i.e. no further rules are
5067            /// checked). If it doesn't match, the string is left unchanged and the
5068            /// next rule in chain is considered.
5069            SfpMatchRedactGroups = 1,
5070            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
5071            /// checking the regex. Specifically, it tries to parse the string field as
5072            /// an atrace tracepoint and checks if the post-tgid field starts with
5073            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5074            /// this check succeeds.
5075            SfpAtraceMatchRedactGroups = 2,
5076            /// Tries to match the string field against |regex_pattern|. If it
5077            /// matches, filtering is terminated (i.e. no further rules are checked).
5078            /// If it doesn't match, the string is left unchanged and the next rule in
5079            /// chain is considered.
5080            SfpMatchBreak = 3,
5081            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
5082            /// the regex. Specifically, it tries to parse the string field as an
5083            /// atrace tracepoint and checks if the post-tgid field starts with
5084            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5085            /// this check succeeds.
5086            SfpAtraceMatchBreak = 4,
5087            /// Tries to repeatedly search (i.e. find substrings of) the string field
5088            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
5089            /// replaced with a constant string). Once there are no further matches,
5090            /// filtering is terminated (i.e. no further rules are checked).
5091            ///
5092            /// Note that this is policy is a "search" policy not a "match" policy
5093            /// unlike the above policies:
5094            ///   * Match policies require matching the full string i.e. there is an
5095            ///     implicit leading `^` and trailing `$`.
5096            ///   * Search policies perform repeated partial matching of the string
5097            ///     e.g.
5098            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
5099            ///       - Pattern: `foo=(\d+)`
5100            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
5101            ///     where P6O is the redaction string
5102            ///
5103            /// All of this is only performed after some pre-work where we try to parse
5104            /// the string field as an atrace tracepoint and check if the post-tgid
5105            /// field starts with |atrace_post_tgid_starts_with|.
5106            ///
5107            /// If there are no partial matches, the string is left unchanged and the
5108            /// next rule in chain is considered.
5109            SfpAtraceRepeatedSearchRedactGroups = 5,
5110        }
5111        impl StringFilterPolicy {
5112            /// String value of the enum field names used in the ProtoBuf definition.
5113            ///
5114            /// The values are not transformed in any way and thus are considered stable
5115            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5116            pub fn as_str_name(&self) -> &'static str {
5117                match self {
5118                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
5119                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
5120                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
5121                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
5122                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
5123                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
5124                }
5125            }
5126        }
5127    }
5128    /// Android-only. Not for general use. If set, reports the trace to the
5129    /// Android framework. This field is read by perfetto_cmd, rather than the
5130    /// tracing service. This field must be set when passing the --upload flag to
5131    /// perfetto_cmd.
5132    ///
5133    /// In this message, either:
5134    ///   * |reporter_service_package| and |reporter_service_class| must be set.
5135    ///   * |skip_reporting| must be explicitly set to true.
5136    #[derive(Clone, PartialEq, ::prost::Message)]
5137    pub struct AndroidReportConfig {
5138        #[prost(string, optional, tag="1")]
5139        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
5140        #[prost(string, optional, tag="2")]
5141        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
5142        /// If true, then skips reporting the trace to Android framework.
5143        ///
5144        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5145        /// or when we explicitly don't want to report traces to the framework even
5146        /// when they usually would (e.g. configs deployed using statsd but only
5147        /// used for inclusion in bugreports using |bugreport_score|).
5148        ///
5149        /// The motivation for having this flag, instead of just not setting
5150        /// |framework_report_config|, is prevent accidents where
5151        /// |framework_report_config| is omitted by mistake.
5152        #[prost(bool, optional, tag="3")]
5153        pub skip_report: ::core::option::Option<bool>,
5154        /// If true, will direct the Android framework to read the data in trace
5155        /// file and pass it to the reporter class over a pipe instead of passing
5156        /// the file descriptor directly.
5157        ///
5158        /// This flag is needed because the Android test framework does not
5159        /// currently support priv-app helper apps (in terms of SELinux) and we
5160        /// really don't want to add an allow rule for untrusted_app to receive
5161        /// trace fds.
5162        ///
5163        /// Because of this, we instead will direct the framework to create a new
5164        /// pipe and pass this to the reporter process instead. As the pipe is
5165        /// created by the framework, we won't have any problems with SELinux
5166        /// (system_server is already allowed to pass pipe fds, even
5167        /// to untrusted apps).
5168        ///
5169        /// As the name suggests this option *MUST* only be used for testing.
5170        /// Note that the framework will reject (and drop) files which are too
5171        /// large both for simplicity and to be minimize the amount of data we
5172        /// pass to a non-priv app (note that the framework will still check
5173        /// manifest permissions even though SELinux permissions are worked around).
5174        #[prost(bool, optional, tag="4")]
5175        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
5176    }
5177    /// If set, delays the start of tracing by a random duration. The duration is
5178    /// chosen from a uniform distribution between the specified minimum and
5179    /// maximum.
5180    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
5181    /// not work if you communicate with traced directly over the consumer API.
5182    /// Introduced in Android T.
5183    #[derive(Clone, PartialEq, ::prost::Message)]
5184    pub struct CmdTraceStartDelay {
5185        #[prost(uint32, optional, tag="1")]
5186        pub min_delay_ms: ::core::option::Option<u32>,
5187        #[prost(uint32, optional, tag="2")]
5188        pub max_delay_ms: ::core::option::Option<u32>,
5189    }
5190    /// When non-empty, ensures that for a each semaphore named `name at most
5191    /// `max_other_session_count`` *other* sessions (whose value is taken of the
5192    /// minimum of all values specified by this config or any already-running
5193    /// session) can be be running.
5194    ///
5195    /// If a semaphore "acquisition" fails, EnableTracing will return an error
5196    /// and the tracing session will not be started (or elgible to start in
5197    /// the case of deferred sessions).
5198    ///
5199    /// This is easiest to explain with an example. Suppose the tracing service has
5200    /// the following active tracing sessions:
5201    ///    S1 = [{name=foo, max_other_session_count=2},
5202    ///          {name=bar, max_other_session_count=0}]
5203    ///    S2 = [{name=foo, max_other_session_count=1},
5204    ///          {name=baz, max_other_session_count=1}]
5205    ///
5206    /// Then, for a new session, the following would be the expected behaviour of
5207    /// EnableSession given the state of `session_semaphores`.
5208    ///    Q: session_semaphores = []
5209    ///    A: Allowed because it does not specify any semaphores. Will be allowed
5210    ///       no matter the state of any other tracing session.
5211    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
5212    ///    A: Allowed because both S2 and this config specify
5213    ///       max_other_session_count=1 for baz.
5214    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
5215    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
5216    ///       takes that slot.
5217    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
5218    ///    A: Denied because S1 takes the the slot specified by both S1 and
5219    ///       this config.
5220    ///
5221    /// Introduced in 24Q3 (Android V).
5222    #[derive(Clone, PartialEq, ::prost::Message)]
5223    pub struct SessionSemaphore {
5224        /// The name of the semaphore. Acts as a unique identifier across all
5225        /// tracing sessions (including the one being started).
5226        #[prost(string, optional, tag="1")]
5227        pub name: ::core::option::Option<::prost::alloc::string::String>,
5228        /// The maximum number of *other* sesssions which specify the same semaphore
5229        /// which can be active. The minimum of this value across all tracing
5230        /// sessions and the value specified by the config is used when deciding
5231        /// whether the tracing session can be started.
5232        #[prost(uint64, optional, tag="2")]
5233        pub max_other_session_count: ::core::option::Option<u64>,
5234    }
5235    /// Allow key, value pairs to save arbitrary data about trace.
5236    #[derive(Clone, PartialEq, ::prost::Message)]
5237    pub struct Note {
5238        /// Required.
5239        #[prost(string, optional, tag="1")]
5240        pub key: ::core::option::Option<::prost::alloc::string::String>,
5241        /// Required.
5242        #[prost(string, optional, tag="2")]
5243        pub value: ::core::option::Option<::prost::alloc::string::String>,
5244    }
5245    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5246    #[repr(i32)]
5247    pub enum LockdownModeOperation {
5248        LockdownUnchanged = 0,
5249        LockdownClear = 1,
5250        LockdownSet = 2,
5251    }
5252    impl LockdownModeOperation {
5253        /// String value of the enum field names used in the ProtoBuf definition.
5254        ///
5255        /// The values are not transformed in any way and thus are considered stable
5256        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5257        pub fn as_str_name(&self) -> &'static str {
5258            match self {
5259                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
5260                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
5261                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
5262            }
5263        }
5264    }
5265    /// Compress trace with the given method. Best effort.
5266    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5267    #[repr(i32)]
5268    pub enum CompressionType {
5269        Unspecified = 0,
5270        Deflate = 1,
5271    }
5272    impl CompressionType {
5273        /// String value of the enum field names used in the ProtoBuf definition.
5274        ///
5275        /// The values are not transformed in any way and thus are considered stable
5276        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5277        pub fn as_str_name(&self) -> &'static str {
5278            match self {
5279                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
5280                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
5281            }
5282        }
5283    }
5284    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5285    #[repr(i32)]
5286    pub enum StatsdLogging {
5287        Unspecified = 0,
5288        Enabled = 1,
5289        Disabled = 2,
5290    }
5291    impl StatsdLogging {
5292        /// String value of the enum field names used in the ProtoBuf definition.
5293        ///
5294        /// The values are not transformed in any way and thus are considered stable
5295        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5296        pub fn as_str_name(&self) -> &'static str {
5297            match self {
5298                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
5299                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
5300                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
5301            }
5302        }
5303    }
5304    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5305    #[repr(i32)]
5306    pub enum WriteFlushMode {
5307        /// Same as WRITE_FLUSH_AUTO.
5308        WriteFlushUnspecified = 0,
5309        /// Default mode. The service automatically determines the flush frequency
5310        /// to balance performance and data freshness:
5311        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
5312        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
5313        ///     issued every 5s.
5314        /// 2) If file_write_period_ms > 5s:
5315        ///     A flush is issued before every periodic write into the file.
5316        WriteFlushAuto = 1,
5317        // The following modes are intended for advanced usage and not recommended
5318        // for general use.
5319
5320        /// Do not flush buffers before periodic writes into the file.
5321        /// Use this mode if you want to minimize the performance impact of flushes
5322        /// and can tolerate potentially missing the most recent data in the trace
5323        /// file until the end of the session or an explicit flush.
5324        /// When this mode is selected, |flush_period_ms| is respected.
5325        WriteFlushDisabled = 2,
5326        /// Issue a flush before every periodic write into the file.
5327        /// This ensures that each write into the file contains the most up-to-date
5328        /// data from all data sources, but may have a higher performance overhead.
5329        WriteFlushEnabled = 3,
5330    }
5331    impl WriteFlushMode {
5332        /// String value of the enum field names used in the ProtoBuf definition.
5333        ///
5334        /// The values are not transformed in any way and thus are considered stable
5335        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5336        pub fn as_str_name(&self) -> &'static str {
5337            match self {
5338                WriteFlushMode::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
5339                WriteFlushMode::WriteFlushAuto => "WRITE_FLUSH_AUTO",
5340                WriteFlushMode::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
5341                WriteFlushMode::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
5342            }
5343        }
5344    }
5345    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5346    #[repr(i32)]
5347    pub enum FFlushMode {
5348        /// Default: same as FFLUSH_DISABLED.
5349        FflushUnspecified = 0,
5350        /// Do not explicitly sync the file to storage after each write pass.
5351        FflushDisabled = 1,
5352        /// Explicitly sync the file to storage (via fdatasync) after each periodic
5353        /// write pass. Increases data durability at the cost of higher disk I/O
5354        /// overhead.
5355        FflushEnabled = 2,
5356    }
5357    impl FFlushMode {
5358        /// String value of the enum field names used in the ProtoBuf definition.
5359        ///
5360        /// The values are not transformed in any way and thus are considered stable
5361        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5362        pub fn as_str_name(&self) -> &'static str {
5363            match self {
5364                FFlushMode::FflushUnspecified => "FFLUSH_UNSPECIFIED",
5365                FFlushMode::FflushDisabled => "FFLUSH_DISABLED",
5366                FFlushMode::FflushEnabled => "FFLUSH_ENABLED",
5367            }
5368        }
5369    }
5370}
5371// End of protos/perfetto/config/trace_config.proto
5372
5373// Begin of protos/perfetto/common/system_info.proto
5374
5375#[derive(Clone, PartialEq, ::prost::Message)]
5376pub struct Utsname {
5377    #[prost(string, optional, tag="1")]
5378    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
5379    #[prost(string, optional, tag="2")]
5380    pub version: ::core::option::Option<::prost::alloc::string::String>,
5381    #[prost(string, optional, tag="3")]
5382    pub release: ::core::option::Option<::prost::alloc::string::String>,
5383    #[prost(string, optional, tag="4")]
5384    pub machine: ::core::option::Option<::prost::alloc::string::String>,
5385}
5386/// Next id: 17
5387#[derive(Clone, PartialEq, ::prost::Message)]
5388pub struct SystemInfo {
5389    #[prost(message, optional, tag="1")]
5390    pub utsname: ::core::option::Option<Utsname>,
5391    #[prost(string, optional, tag="2")]
5392    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
5393    /// The manufacturer of the product/hardware.
5394    /// Source : "ro.product.manufacturer"
5395    /// Introduced after Android W in Nov 2024 and is not supported on older
5396    /// versions.
5397    #[prost(string, optional, tag="14")]
5398    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
5399    /// The SoC model from which trace is collected
5400    #[prost(string, optional, tag="9")]
5401    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
5402    /// The guest SoC model from which trace is collected in case of VMs
5403    #[prost(string, optional, tag="13")]
5404    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
5405    /// The hardware reversion from android device
5406    #[prost(string, optional, tag="10")]
5407    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
5408    /// The storage component from android_device. This field has been introduced
5409    /// after Android W in Aug 2024 and is not supported on older versions.
5410    #[prost(string, optional, tag="11")]
5411    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
5412    /// The RAM component information from android device. This field has been
5413    /// introduced after Android W in Aug 2024 and is not supported on older
5414    /// versions.
5415    #[prost(string, optional, tag="12")]
5416    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
5417    /// The serial console information from android device.
5418    #[prost(string, optional, tag="15")]
5419    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
5420    /// The version of traced (the same returned by `traced --version`).
5421    /// This is a human readable string with and its format varies depending on
5422    /// the build system and the repo (standalone vs AOSP).
5423    /// This is intended for human debugging only.
5424    #[prost(string, optional, tag="4")]
5425    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
5426    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
5427    /// Introduced in Android T.
5428    #[prost(uint64, optional, tag="5")]
5429    pub android_sdk_version: ::core::option::Option<u64>,
5430    /// Kernel page size - sysconf(_SC_PAGESIZE).
5431    #[prost(uint32, optional, tag="6")]
5432    pub page_size: ::core::option::Option<u32>,
5433    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
5434    /// Might be different to the number of online cpus.
5435    /// Introduced in perfetto v44.
5436    #[prost(uint32, optional, tag="8")]
5437    pub num_cpus: ::core::option::Option<u32>,
5438    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
5439    /// Introduced in v38 / Android V.
5440    #[prost(int32, optional, tag="7")]
5441    pub timezone_off_mins: ::core::option::Option<i32>,
5442    /// Ticks per second - sysconf(_SC_CLK_TCK).
5443    /// Not serialised as of perfetto v44.
5444    #[prost(int64, optional, tag="3")]
5445    pub hz: ::core::option::Option<i64>,
5446    /// The size of the system RAM in bytes.
5447    ///
5448    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
5449    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
5450    ///
5451    /// Introduced in perfetto v54 / Android 26Q1+.
5452    #[prost(uint64, optional, tag="16")]
5453    pub system_ram_bytes: ::core::option::Option<u64>,
5454}
5455// End of protos/perfetto/common/system_info.proto
5456
5457// Begin of protos/perfetto/common/trace_attributes.proto
5458
5459// Arbitrary key value pairs which can attached to a trace to provide context
5460// about any facet of the trace. This can include, what data it contains,
5461// properties of the host / machine the trace was collected on, and other
5462// interesting information about a trace.
5463// /
5464// Examples include:
5465// gradle_version = "9.0.10-alpha01"
5466// java_major_version = 24
5467// /
5468// All keys get prefixed with `trace_attribute.` in the UI and in
5469// `traceprocessor`. If there are multiple trace attribute packets that use the
5470// same key, then the latest value wins.
5471// These key value pairs show up in the `Overview` section in
5472// Perfetto UI. Additionally, these key, value pairs can also be queried using
5473// Pefetto SQL by using the following query:
5474// /
5475// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
5476
5477#[derive(Clone, PartialEq, ::prost::Message)]
5478pub struct TraceAttributes {
5479    #[prost(message, repeated, tag="1")]
5480    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
5481}
5482/// Nested message and enum types in `TraceAttributes`.
5483pub mod trace_attributes {
5484    #[derive(Clone, PartialEq, ::prost::Message)]
5485    pub struct Attribute {
5486        /// The key
5487        #[prost(string, optional, tag="1")]
5488        pub key: ::core::option::Option<::prost::alloc::string::String>,
5489        /// The value
5490        #[prost(oneof="attribute::Value", tags="2, 3")]
5491        pub value: ::core::option::Option<attribute::Value>,
5492    }
5493    /// Nested message and enum types in `Attribute`.
5494    pub mod attribute {
5495        /// The value
5496        #[derive(Clone, PartialEq, ::prost::Oneof)]
5497        pub enum Value {
5498            #[prost(int64, tag="2")]
5499            LongValue(i64),
5500            #[prost(string, tag="3")]
5501            StringValue(::prost::alloc::string::String),
5502        }
5503    }
5504}
5505// End of protos/perfetto/common/trace_attributes.proto
5506
5507// Begin of protos/perfetto/common/trace_stats.proto
5508
5509/// Statistics for the internals of the tracing service.
5510///
5511/// Next id: 19.
5512#[derive(Clone, PartialEq, ::prost::Message)]
5513pub struct TraceStats {
5514    /// Stats for the TraceBuffer(s) of the current trace session.
5515    #[prost(message, repeated, tag="1")]
5516    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
5517    /// The thresholds of each the `writer_stats` histogram buckets. This is
5518    /// emitted only once as all WriterStats share the same bucket layout.
5519    /// This field has the same cardinality of the
5520    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
5521    /// (The -1 is because the last overflow bucket is not reported in the _def).
5522    /// An array of values [10, 100, 1000] in the _def array means that there are
5523    /// four buckets (3 + the implicit overflow bucket):
5524    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
5525    #[prost(int64, repeated, packed="false", tag="17")]
5526    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
5527    #[prost(message, repeated, tag="18")]
5528    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
5529    /// Num. producers connected (whether they are involved in the current tracing
5530    /// session or not).
5531    #[prost(uint32, optional, tag="2")]
5532    pub producers_connected: ::core::option::Option<u32>,
5533    /// Num. producers ever seen for all trace sessions since startup (it's a good
5534    /// proxy for inferring num. producers crashed / killed).
5535    #[prost(uint64, optional, tag="3")]
5536    pub producers_seen: ::core::option::Option<u64>,
5537    /// Num. data sources registered for all trace sessions.
5538    #[prost(uint32, optional, tag="4")]
5539    pub data_sources_registered: ::core::option::Option<u32>,
5540    /// Num. data sources ever seen for all trace sessions since startup.
5541    #[prost(uint64, optional, tag="5")]
5542    pub data_sources_seen: ::core::option::Option<u64>,
5543    /// Num. concurrently active tracing sessions.
5544    #[prost(uint32, optional, tag="6")]
5545    pub tracing_sessions: ::core::option::Option<u32>,
5546    /// Num. buffers for all tracing session (not just the current one). This will
5547    /// be >= buffer_stats.size(), because the latter is only about the current
5548    /// session.
5549    #[prost(uint32, optional, tag="7")]
5550    pub total_buffers: ::core::option::Option<u32>,
5551    // The fields below have been introduced in Android Q.
5552
5553    /// Num. chunks that were discarded by the service before attempting to commit
5554    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
5555    #[prost(uint64, optional, tag="8")]
5556    pub chunks_discarded: ::core::option::Option<u64>,
5557    /// Num. patches that were discarded by the service before attempting to apply
5558    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
5559    #[prost(uint64, optional, tag="9")]
5560    pub patches_discarded: ::core::option::Option<u64>,
5561    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
5562    /// is a bug in the producer.
5563    #[prost(uint64, optional, tag="10")]
5564    pub invalid_packets: ::core::option::Option<u64>,
5565    #[prost(message, optional, tag="11")]
5566    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
5567    /// Count of Flush() requests (either from the Consumer, or self-induced
5568    /// periodic flushes). The final Flush() is also included in the count.
5569    #[prost(uint64, optional, tag="12")]
5570    pub flushes_requested: ::core::option::Option<u64>,
5571    /// The count of the Flush() requests that were completed successfully.
5572    /// In a well behaving trace this should always be == `flush_requests`.
5573    #[prost(uint64, optional, tag="13")]
5574    pub flushes_succeeded: ::core::option::Option<u64>,
5575    /// The count of the Flush() requests that failed (in most timed out).
5576    /// In a well behaving trace this should always be == 0.
5577    #[prost(uint64, optional, tag="14")]
5578    pub flushes_failed: ::core::option::Option<u64>,
5579    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
5580    pub final_flush_outcome: ::core::option::Option<i32>,
5581}
5582/// Nested message and enum types in `TraceStats`.
5583pub mod trace_stats {
5584    /// From TraceBuffer::Stats.
5585    ///
5586    /// Next id: 22.
5587    #[derive(Clone, PartialEq, ::prost::Message)]
5588    pub struct BufferStats {
5589        /// Size of the circular buffer in bytes.
5590        #[prost(uint64, optional, tag="12")]
5591        pub buffer_size: ::core::option::Option<u64>,
5592        /// Num. bytes written into the circular buffer, including chunk headers.
5593        #[prost(uint64, optional, tag="1")]
5594        pub bytes_written: ::core::option::Option<u64>,
5595        /// Num. bytes overwritten before they have been read (i.e. loss of data).
5596        #[prost(uint64, optional, tag="13")]
5597        pub bytes_overwritten: ::core::option::Option<u64>,
5598        /// Total size of chunks that were fully read from the circular buffer by the
5599        /// consumer. This may not be equal to |bytes_written| either in the middle
5600        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
5601        /// size of the chunks read from the buffer, including chunk headers, which
5602        /// will be different from the total size of packets returned to the
5603        /// consumer.
5604        ///
5605        /// The current utilization of the trace buffer (mid-tracing) can be obtained
5606        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
5607        /// adding the difference of |padding_bytes_written| and
5608        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
5609        /// Note that this represents the total size of buffered data in the buffer,
5610        /// yet this data may be spread non-contiguously through the buffer and may
5611        /// be overridden before the utilization reaches 100%.
5612        #[prost(uint64, optional, tag="14")]
5613        pub bytes_read: ::core::option::Option<u64>,
5614        /// Num. bytes that were allocated as padding between chunks in the circular
5615        /// buffer.
5616        #[prost(uint64, optional, tag="15")]
5617        pub padding_bytes_written: ::core::option::Option<u64>,
5618        /// Num. of padding bytes that were removed from the circular buffer when
5619        /// they were overwritten.
5620        ///
5621        /// The difference between |padding_bytes_written| and
5622        /// |padding_bytes_cleared| denotes the total size of padding currently
5623        /// present in the buffer.
5624        #[prost(uint64, optional, tag="16")]
5625        pub padding_bytes_cleared: ::core::option::Option<u64>,
5626        /// Num. chunks (!= packets) written into the buffer.
5627        #[prost(uint64, optional, tag="2")]
5628        pub chunks_written: ::core::option::Option<u64>,
5629        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
5630        /// the same chunk with additional packets appended to the end.
5631        #[prost(uint64, optional, tag="10")]
5632        pub chunks_rewritten: ::core::option::Option<u64>,
5633        /// Num. chunks overwritten before they have been read (i.e. loss of data).
5634        #[prost(uint64, optional, tag="3")]
5635        pub chunks_overwritten: ::core::option::Option<u64>,
5636        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
5637        /// is configured with FillPolicy == DISCARD.
5638        #[prost(uint64, optional, tag="18")]
5639        pub chunks_discarded: ::core::option::Option<u64>,
5640        /// Num. chunks (!= packets) that were fully read from the circular buffer by
5641        /// the consumer. This may not be equal to |chunks_written| either in the
5642        /// middle of tracing, or if |chunks_overwritten| is non-zero.
5643        #[prost(uint64, optional, tag="17")]
5644        pub chunks_read: ::core::option::Option<u64>,
5645        /// Num. chunks that were committed out of order.
5646        #[prost(uint64, optional, tag="11")]
5647        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
5648        /// Num. times the ring buffer wrapped around.
5649        #[prost(uint64, optional, tag="4")]
5650        pub write_wrap_count: ::core::option::Option<u64>,
5651        /// Num. out-of-band (OOB) patches that succeeded.
5652        #[prost(uint64, optional, tag="5")]
5653        pub patches_succeeded: ::core::option::Option<u64>,
5654        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
5655        #[prost(uint64, optional, tag="6")]
5656        pub patches_failed: ::core::option::Option<u64>,
5657        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
5658        /// successful packet read.
5659        #[prost(uint64, optional, tag="7")]
5660        pub readaheads_succeeded: ::core::option::Option<u64>,
5661        /// Num. readaheads aborted because of missing chunks in the sequence stream.
5662        /// Note that a small number > 0 is totally expected: occasionally, when
5663        /// issuing a read, the very last packet in a sequence might be incomplete
5664        /// (because the producer is still writing it while we read). The read will
5665        /// stop at that point, for that sequence, increasing this counter.
5666        #[prost(uint64, optional, tag="8")]
5667        pub readaheads_failed: ::core::option::Option<u64>,
5668        /// Num. of violations of the SharedMemoryABI found while writing or reading
5669        /// the buffer. This is an indication of either a bug in the producer(s) or
5670        /// malicious producer(s).
5671        #[prost(uint64, optional, tag="9")]
5672        pub abi_violations: ::core::option::Option<u64>,
5673        // The fields below have been introduced in Android R.
5674
5675        /// Num. of times the service detected packet loss on a trace writer
5676        /// sequence. This is usually caused by exhaustion of available chunks in the
5677        /// writer process's SMB. Note that this relies on the client's TraceWriter
5678        /// indicating this loss to the service -- packets lost for other reasons are
5679        /// not reflected in this stat.
5680        #[prost(uint64, optional, tag="19")]
5681        pub trace_writer_packet_loss: ::core::option::Option<u64>,
5682        #[prost(message, optional, tag="21")]
5683        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
5684    }
5685    /// Nested message and enum types in `BufferStats`.
5686    pub mod buffer_stats {
5687        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
5688        /// Only populated when the buffer is configured with shadow mode.
5689        #[derive(Clone, PartialEq, ::prost::Message)]
5690        pub struct ShadowBufferStats {
5691            /// Total num. packets read. This is not affected by capping of the hasher
5692            /// to 32K elements.
5693            #[prost(uint64, optional, tag="1")]
5694            pub packets_seen: ::core::option::Option<u64>,
5695            // The stats below are keps only for 32k packets. After reading 32K
5696            // packets hashes are randomly evicted and that might lead to slightly
5697            // inconsistent results.
5698
5699            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
5700            #[prost(uint64, optional, tag="2")]
5701            pub packets_in_both: ::core::option::Option<u64>,
5702            /// Num. packets found only in V1 buffer but not in V2.
5703            #[prost(uint64, optional, tag="3")]
5704            pub packets_only_v1: ::core::option::Option<u64>,
5705            /// Num. packets found only in V2 buffer but not in V1.
5706            #[prost(uint64, optional, tag="4")]
5707            pub packets_only_v2: ::core::option::Option<u64>,
5708            /// Num. patch operations attempted.
5709            #[prost(uint64, optional, tag="5")]
5710            pub patches_attempted: ::core::option::Option<u64>,
5711            /// Num. patches that succeeded on V1 buffer.
5712            #[prost(uint64, optional, tag="6")]
5713            pub v1_patches_succeeded: ::core::option::Option<u64>,
5714            /// Num. patches that succeeded on V2 buffer.
5715            #[prost(uint64, optional, tag="7")]
5716            pub v2_patches_succeeded: ::core::option::Option<u64>,
5717            /// This is to distinguish the updated calculations after fixing the
5718            /// hashes. This field is either empty or "2"
5719            #[prost(uint32, optional, tag="8")]
5720            pub stats_version: ::core::option::Option<u32>,
5721        }
5722    }
5723    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
5724    /// visible as a unique sequence ID in the trace.
5725    #[derive(Clone, PartialEq, ::prost::Message)]
5726    pub struct WriterStats {
5727        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
5728        /// correlate the stats with the actual packet types.
5729        #[prost(uint64, optional, tag="1")]
5730        pub sequence_id: ::core::option::Option<u64>,
5731        /// The buffer index (0..N, as defined in the TraceConfig).
5732        #[prost(uint32, optional, tag="4")]
5733        pub buffer: ::core::option::Option<u32>,
5734        /// These two arrays have the same cardinality and match the cardinality of
5735        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
5736        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
5737        /// for each bucket.
5738        #[prost(uint64, repeated, tag="2")]
5739        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
5740        #[prost(int64, repeated, tag="3")]
5741        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
5742    }
5743    /// This is set only when the TraceConfig specifies a TraceFilter.
5744    #[derive(Clone, PartialEq, ::prost::Message)]
5745    pub struct FilterStats {
5746        #[prost(uint64, optional, tag="1")]
5747        pub input_packets: ::core::option::Option<u64>,
5748        #[prost(uint64, optional, tag="2")]
5749        pub input_bytes: ::core::option::Option<u64>,
5750        #[prost(uint64, optional, tag="3")]
5751        pub output_bytes: ::core::option::Option<u64>,
5752        #[prost(uint64, optional, tag="4")]
5753        pub errors: ::core::option::Option<u64>,
5754        #[prost(uint64, optional, tag="5")]
5755        pub time_taken_ns: ::core::option::Option<u64>,
5756        /// The number of bytes discarded by the filter (i.e. output - input).
5757        /// The array has one entry for each buffer defined in the config (unless no
5758        /// packets for that buffer were seen and hence filtered).
5759        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
5760        /// (output_bytes - input_bytes) because the filter might also discard
5761        /// server-generated synthetic packets, that have no buffer index.
5762        #[prost(uint64, repeated, packed="false", tag="20")]
5763        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
5764    }
5765    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5766    #[repr(i32)]
5767    pub enum FinalFlushOutcome {
5768        FinalFlushUnspecified = 0,
5769        FinalFlushSucceeded = 1,
5770        FinalFlushFailed = 2,
5771    }
5772    impl FinalFlushOutcome {
5773        /// String value of the enum field names used in the ProtoBuf definition.
5774        ///
5775        /// The values are not transformed in any way and thus are considered stable
5776        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5777        pub fn as_str_name(&self) -> &'static str {
5778            match self {
5779                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
5780                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
5781                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
5782            }
5783        }
5784    }
5785}
5786// End of protos/perfetto/common/trace_stats.proto
5787
5788// Begin of protos/perfetto/trace/android/android_aflags.proto
5789
5790/// Android aconfig flags (aflags).
5791/// This message captures a snapshot of the state of aconfig flags on the device.
5792/// Keep in sync with:
5793/// <http://ac/packages/modules/ConfigInfrastructure/aflags/proto/aflags.proto>
5794#[derive(Clone, PartialEq, ::prost::Message)]
5795pub struct AndroidAflags {
5796    /// A collection of flags.
5797    #[prost(message, repeated, tag="1")]
5798    pub flags: ::prost::alloc::vec::Vec<android_aflags::Flag>,
5799    /// A human-readable error logged if aflags processing fails.
5800    /// This is a perfetto specific field used to help debugging.
5801    #[prost(string, optional, tag="2")]
5802    pub error: ::core::option::Option<::prost::alloc::string::String>,
5803}
5804/// Nested message and enum types in `AndroidAflags`.
5805pub mod android_aflags {
5806    /// Representation of an aconfig flag and its metadata.
5807    #[derive(Clone, PartialEq, ::prost::Message)]
5808    pub struct Flag {
5809        #[prost(string, optional, tag="1")]
5810        pub flag_namespace: ::core::option::Option<::prost::alloc::string::String>,
5811        #[prost(string, optional, tag="2")]
5812        pub name: ::core::option::Option<::prost::alloc::string::String>,
5813        /// The aconfig package (e.g. "com.android.foo"). These are system-level
5814        /// identifiers and not privacy-impacting.
5815        #[prost(string, optional, tag="3")]
5816        pub pkg: ::core::option::Option<::prost::alloc::string::String>,
5817        /// The container where the flag lives (e.g. "system", "vendor", or mainline
5818        /// module name).
5819        #[prost(string, optional, tag="4")]
5820        pub container: ::core::option::Option<::prost::alloc::string::String>,
5821        /// The flag value as a string to support different future data types.
5822        #[prost(string, optional, tag="5")]
5823        pub value: ::core::option::Option<::prost::alloc::string::String>,
5824        /// The value that will be applied after the next reboot, if different from
5825        /// the current value.
5826        #[prost(string, optional, tag="6")]
5827        pub staged_value: ::core::option::Option<::prost::alloc::string::String>,
5828        #[prost(enumeration="FlagPermission", optional, tag="7")]
5829        pub permission: ::core::option::Option<i32>,
5830        #[prost(enumeration="ValuePickedFrom", optional, tag="8")]
5831        pub value_picked_from: ::core::option::Option<i32>,
5832        #[prost(enumeration="FlagStorageBackend", optional, tag="9")]
5833        pub storage_backend: ::core::option::Option<i32>,
5834        #[prost(enumeration="FlagType", optional, tag="10")]
5835        pub r#type: ::core::option::Option<i32>,
5836    }
5837    /// Whether a flag can be modified at runtime.
5838    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5839    #[repr(i32)]
5840    pub enum FlagPermission {
5841        Unspecified = 0,
5842        ReadOnly = 1,
5843        ReadWrite = 2,
5844    }
5845    impl FlagPermission {
5846        /// String value of the enum field names used in the ProtoBuf definition.
5847        ///
5848        /// The values are not transformed in any way and thus are considered stable
5849        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5850        pub fn as_str_name(&self) -> &'static str {
5851            match self {
5852                FlagPermission::Unspecified => "FLAG_PERMISSION_UNSPECIFIED",
5853                FlagPermission::ReadOnly => "FLAG_PERMISSION_READ_ONLY",
5854                FlagPermission::ReadWrite => "FLAG_PERMISSION_READ_WRITE",
5855            }
5856        }
5857    }
5858    /// The source of the current flag value.
5859    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5860    #[repr(i32)]
5861    pub enum ValuePickedFrom {
5862        Unspecified = 0,
5863        /// The value is the build-time default.
5864        Default = 1,
5865        /// The value comes from a server-side override.
5866        Server = 2,
5867        /// The value comes from a local override on the device.
5868        Local = 3,
5869    }
5870    impl ValuePickedFrom {
5871        /// String value of the enum field names used in the ProtoBuf definition.
5872        ///
5873        /// The values are not transformed in any way and thus are considered stable
5874        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5875        pub fn as_str_name(&self) -> &'static str {
5876            match self {
5877                ValuePickedFrom::Unspecified => "VALUE_PICKED_FROM_UNSPECIFIED",
5878                ValuePickedFrom::Default => "VALUE_PICKED_FROM_DEFAULT",
5879                ValuePickedFrom::Server => "VALUE_PICKED_FROM_SERVER",
5880                ValuePickedFrom::Local => "VALUE_PICKED_FROM_LOCAL",
5881            }
5882        }
5883    }
5884    /// The underlying storage mechanism for the flag.
5885    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5886    #[repr(i32)]
5887    pub enum FlagStorageBackend {
5888        Unspecified = 0,
5889        None = 1,
5890        Aconfigd = 2,
5891        DeviceConfig = 3,
5892    }
5893    impl FlagStorageBackend {
5894        /// String value of the enum field names used in the ProtoBuf definition.
5895        ///
5896        /// The values are not transformed in any way and thus are considered stable
5897        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5898        pub fn as_str_name(&self) -> &'static str {
5899            match self {
5900                FlagStorageBackend::Unspecified => "FLAG_STORAGE_BACKEND_UNSPECIFIED",
5901                FlagStorageBackend::None => "FLAG_STORAGE_BACKEND_NONE",
5902                FlagStorageBackend::Aconfigd => "FLAG_STORAGE_BACKEND_ACONFIGD",
5903                FlagStorageBackend::DeviceConfig => "FLAG_STORAGE_BACKEND_DEVICE_CONFIG",
5904            }
5905        }
5906    }
5907    /// The value type of the flag.
5908    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5909    #[repr(i32)]
5910    pub enum FlagType {
5911        /// Flag type unspecified. This flag type means the flag is an old version
5912        /// boolean flag or unknown newer type.
5913        Unspecified = 0,
5914        Boolean = 1,
5915        Integer = 2,
5916    }
5917    impl FlagType {
5918        /// String value of the enum field names used in the ProtoBuf definition.
5919        ///
5920        /// The values are not transformed in any way and thus are considered stable
5921        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5922        pub fn as_str_name(&self) -> &'static str {
5923            match self {
5924                FlagType::Unspecified => "FLAG_TYPE_UNSPECIFIED",
5925                FlagType::Boolean => "FLAG_TYPE_BOOLEAN",
5926                FlagType::Integer => "FLAG_TYPE_INTEGER",
5927            }
5928        }
5929    }
5930}
5931// End of protos/perfetto/trace/android/android_aflags.proto
5932
5933// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
5934
5935#[derive(Clone, PartialEq, ::prost::Message)]
5936pub struct AndroidGameInterventionList {
5937    #[prost(message, repeated, tag="1")]
5938    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
5939    /// True when at least one error occurred when parsing
5940    /// game_mode_intervention.list
5941    #[prost(bool, optional, tag="2")]
5942    pub parse_error: ::core::option::Option<bool>,
5943    /// Failed to open / read game_mode_intervention.list
5944    #[prost(bool, optional, tag="3")]
5945    pub read_error: ::core::option::Option<bool>,
5946}
5947/// Nested message and enum types in `AndroidGameInterventionList`.
5948pub mod android_game_intervention_list {
5949    #[derive(Clone, PartialEq, ::prost::Message)]
5950    pub struct GameModeInfo {
5951        #[prost(uint32, optional, tag="1")]
5952        pub mode: ::core::option::Option<u32>,
5953        #[prost(bool, optional, tag="2")]
5954        pub use_angle: ::core::option::Option<bool>,
5955        #[prost(float, optional, tag="3")]
5956        pub resolution_downscale: ::core::option::Option<f32>,
5957        #[prost(float, optional, tag="4")]
5958        pub fps: ::core::option::Option<f32>,
5959    }
5960    #[derive(Clone, PartialEq, ::prost::Message)]
5961    pub struct GamePackageInfo {
5962        #[prost(string, optional, tag="1")]
5963        pub name: ::core::option::Option<::prost::alloc::string::String>,
5964        #[prost(uint64, optional, tag="2")]
5965        pub uid: ::core::option::Option<u64>,
5966        #[prost(uint32, optional, tag="3")]
5967        pub current_mode: ::core::option::Option<u32>,
5968        #[prost(message, repeated, tag="4")]
5969        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
5970    }
5971}
5972// End of protos/perfetto/trace/android/android_game_intervention_list.proto
5973
5974// Begin of protos/perfetto/trace/android/android_log.proto
5975
5976#[derive(Clone, PartialEq, ::prost::Message)]
5977pub struct AndroidLogPacket {
5978    #[prost(message, repeated, tag="1")]
5979    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
5980    #[prost(message, optional, tag="2")]
5981    pub stats: ::core::option::Option<android_log_packet::Stats>,
5982}
5983/// Nested message and enum types in `AndroidLogPacket`.
5984pub mod android_log_packet {
5985    #[derive(Clone, PartialEq, ::prost::Message)]
5986    pub struct LogEvent {
5987        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
5988        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
5989        pub log_id: ::core::option::Option<i32>,
5990        /// PID (TGID), TID and UID of the task that emitted the event.
5991        #[prost(int32, optional, tag="2")]
5992        pub pid: ::core::option::Option<i32>,
5993        #[prost(int32, optional, tag="3")]
5994        pub tid: ::core::option::Option<i32>,
5995        #[prost(int32, optional, tag="4")]
5996        pub uid: ::core::option::Option<i32>,
5997        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
5998        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
5999        /// processor will take care of realigning clocks using the ClockSnapshot(s).
6000        #[prost(uint64, optional, tag="5")]
6001        pub timestamp: ::core::option::Option<u64>,
6002        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
6003        /// the second column of /system/etc/event-log-tags. For all other events,
6004        /// |tag| is the app-specified argument passed to __android_log_write().
6005        #[prost(string, optional, tag="6")]
6006        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6007        /// Empty when log_id == LID_EVENTS.
6008        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
6009        pub prio: ::core::option::Option<i32>,
6010        /// Empty when log_id == LID_EVENTS.
6011        #[prost(string, optional, tag="8")]
6012        pub message: ::core::option::Option<::prost::alloc::string::String>,
6013        /// Only populated when log_id == LID_EVENTS.
6014        #[prost(message, repeated, tag="9")]
6015        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
6016    }
6017    /// Nested message and enum types in `LogEvent`.
6018    pub mod log_event {
6019        #[derive(Clone, PartialEq, ::prost::Message)]
6020        pub struct Arg {
6021            #[prost(string, optional, tag="1")]
6022            pub name: ::core::option::Option<::prost::alloc::string::String>,
6023            #[prost(oneof="arg::Value", tags="2, 3, 4")]
6024            pub value: ::core::option::Option<arg::Value>,
6025        }
6026        /// Nested message and enum types in `Arg`.
6027        pub mod arg {
6028            #[derive(Clone, PartialEq, ::prost::Oneof)]
6029            pub enum Value {
6030                #[prost(int64, tag="2")]
6031                IntValue(i64),
6032                #[prost(float, tag="3")]
6033                FloatValue(f32),
6034                #[prost(string, tag="4")]
6035                StringValue(::prost::alloc::string::String),
6036            }
6037        }
6038    }
6039    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
6040    /// absolute counters since the beginning of the lifetime of the tracing
6041    /// session and NOT relative to the previous Stats snapshot).
6042    #[derive(Clone, PartialEq, ::prost::Message)]
6043    pub struct Stats {
6044        /// Total number of log events seen, including errors and skipped entries
6045        /// (num of events stored in the trace = total - failed - skipped).
6046        #[prost(uint64, optional, tag="1")]
6047        pub num_total: ::core::option::Option<u64>,
6048        /// Parser failures.
6049        #[prost(uint64, optional, tag="2")]
6050        pub num_failed: ::core::option::Option<u64>,
6051        /// Messages skipped due to filters.
6052        #[prost(uint64, optional, tag="3")]
6053        pub num_skipped: ::core::option::Option<u64>,
6054    }
6055}
6056// End of protos/perfetto/trace/android/android_log.proto
6057
6058// Begin of protos/perfetto/trace/android/android_system_property.proto
6059
6060#[derive(Clone, PartialEq, ::prost::Message)]
6061pub struct AndroidSystemProperty {
6062    #[prost(message, repeated, tag="1")]
6063    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
6064}
6065/// Nested message and enum types in `AndroidSystemProperty`.
6066pub mod android_system_property {
6067    #[derive(Clone, PartialEq, ::prost::Message)]
6068    pub struct PropertyValue {
6069        #[prost(string, optional, tag="1")]
6070        pub name: ::core::option::Option<::prost::alloc::string::String>,
6071        #[prost(string, optional, tag="2")]
6072        pub value: ::core::option::Option<::prost::alloc::string::String>,
6073    }
6074}
6075// End of protos/perfetto/trace/android/android_system_property.proto
6076
6077// Begin of protos/perfetto/trace/android/camera_event.proto
6078
6079/// A profiling event corresponding to a single camera frame. This message
6080/// collects important details and timestamps involved in producing a single
6081/// camera frame.
6082/// Next ID: 17
6083#[derive(Clone, PartialEq, ::prost::Message)]
6084pub struct AndroidCameraFrameEvent {
6085    /// Identifier for the CameraCaptureSession this frame originates from. See:
6086    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
6087    #[prost(uint64, optional, tag="1")]
6088    pub session_id: ::core::option::Option<u64>,
6089    /// Identifier for the camera sensor that is the source of this frame. This may
6090    /// be either a physical or logical camera (up to vendor interpretation).
6091    #[prost(uint32, optional, tag="2")]
6092    pub camera_id: ::core::option::Option<u32>,
6093    /// The frame number identifying this frame on this camera.
6094    #[prost(int64, optional, tag="3")]
6095    pub frame_number: ::core::option::Option<i64>,
6096    /// Identifier for the CaptureRequest. See:
6097    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
6098    ///
6099    /// If multiple cameras are streaming simultaneously, the request_id may be
6100    /// used to identify which frames were captured in service of the same request.
6101    #[prost(int64, optional, tag="4")]
6102    pub request_id: ::core::option::Option<i64>,
6103    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
6104    /// received by the camera HAL pipeline. Note that this request may wait for
6105    /// some time before processing actually begins. See also
6106    /// request_processing_started_ns.
6107    #[prost(int64, optional, tag="5")]
6108    pub request_received_ns: ::core::option::Option<i64>,
6109    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
6110    /// processing by the camera HAL pipeline. This is the time at which the
6111    /// pipeline actually begins to work on the request.
6112    #[prost(int64, optional, tag="6")]
6113    pub request_processing_started_ns: ::core::option::Option<i64>,
6114    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
6115    #[prost(int64, optional, tag="7")]
6116    pub start_of_exposure_ns: ::core::option::Option<i64>,
6117    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
6118    /// event.
6119    #[prost(int64, optional, tag="8")]
6120    pub start_of_frame_ns: ::core::option::Option<i64>,
6121    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
6122    /// for the frame.
6123    #[prost(int64, optional, tag="9")]
6124    pub responses_all_sent_ns: ::core::option::Option<i64>,
6125    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
6126    pub capture_result_status: ::core::option::Option<i32>,
6127    /// The number of sensor frames that were skipped between this frame and the
6128    /// previous frame. Under normal operation, this should be zero. Any number
6129    /// greater than zero indicates dropped sensor frames.
6130    #[prost(int32, optional, tag="11")]
6131    pub skipped_sensor_frames: ::core::option::Option<i32>,
6132    /// The value of CONTROL_CAPTURE_INTENT. See:
6133    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
6134    #[prost(int32, optional, tag="12")]
6135    pub capture_intent: ::core::option::Option<i32>,
6136    /// The number of streams in the capture request.
6137    #[prost(int32, optional, tag="13")]
6138    pub num_streams: ::core::option::Option<i32>,
6139    #[prost(message, repeated, tag="14")]
6140    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
6141    /// These fields capture vendor-specific additions to this proto message. In
6142    /// practice `vendor_data` typically contains a serialized message of the
6143    /// vendor's design, and `vendor_data_version` is incremented each time there
6144    /// is a backwards incompatible change made to the message.
6145    #[prost(int32, optional, tag="15")]
6146    pub vendor_data_version: ::core::option::Option<i32>,
6147    #[prost(bytes="vec", optional, tag="16")]
6148    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6149}
6150/// Nested message and enum types in `AndroidCameraFrameEvent`.
6151pub mod android_camera_frame_event {
6152    /// A profiling event corresponding to a single node processing within the
6153    /// camera pipeline. Intuitively this corresponds to a single stage of
6154    /// processing to produce a camera frame. Next ID: 6
6155    #[derive(Clone, PartialEq, ::prost::Message)]
6156    pub struct CameraNodeProcessingDetails {
6157        #[prost(int64, optional, tag="1")]
6158        pub node_id: ::core::option::Option<i64>,
6159        /// The timestamp at which node processing begins to run.
6160        #[prost(int64, optional, tag="2")]
6161        pub start_processing_ns: ::core::option::Option<i64>,
6162        /// The timestamp at which node processing finishes running.
6163        #[prost(int64, optional, tag="3")]
6164        pub end_processing_ns: ::core::option::Option<i64>,
6165        /// The delay between inputs becoming ready and the node actually beginning
6166        /// to run.
6167        #[prost(int64, optional, tag="4")]
6168        pub scheduling_latency_ns: ::core::option::Option<i64>,
6169    }
6170    /// The error status, if any, reported to the camera framework. Any status
6171    /// other than STATUS_OK indicates a dropped frame.
6172    /// Next Enum: 6
6173    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6174    #[repr(i32)]
6175    pub enum CaptureResultStatus {
6176        StatusUnspecified = 0,
6177        StatusOk = 1,
6178        /// Early metadata was returned to the camera framework with an error.
6179        StatusEarlyMetadataError = 2,
6180        /// Final metadata was returned to the camera framework with an error.
6181        StatusFinalMetadataError = 3,
6182        /// One or more buffers were returned to the camera framework with an error.
6183        StatusBufferError = 4,
6184        /// The frame was dropped as a result of a flush operation.
6185        StatusFlushError = 5,
6186    }
6187    impl CaptureResultStatus {
6188        /// String value of the enum field names used in the ProtoBuf definition.
6189        ///
6190        /// The values are not transformed in any way and thus are considered stable
6191        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6192        pub fn as_str_name(&self) -> &'static str {
6193            match self {
6194                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
6195                CaptureResultStatus::StatusOk => "STATUS_OK",
6196                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
6197                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
6198                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
6199                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
6200            }
6201        }
6202    }
6203}
6204/// A profiling event that may be emitted periodically (i.e., at a slower rate
6205/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
6206/// session-specific values.
6207#[derive(Clone, PartialEq, ::prost::Message)]
6208pub struct AndroidCameraSessionStats {
6209    /// Identifier for the CameraCaptureSession this frame originates from. See:
6210    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
6211    #[prost(uint64, optional, tag="1")]
6212    pub session_id: ::core::option::Option<u64>,
6213    #[prost(message, optional, tag="2")]
6214    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
6215}
6216/// Nested message and enum types in `AndroidCameraSessionStats`.
6217pub mod android_camera_session_stats {
6218    /// Although vendor implementations may vary, camera pipeline processing is
6219    /// typically arranged into a directed graph-like structure. This message is
6220    /// used to record that graph.
6221    #[derive(Clone, PartialEq, ::prost::Message)]
6222    pub struct CameraGraph {
6223        #[prost(message, repeated, tag="1")]
6224        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
6225        #[prost(message, repeated, tag="2")]
6226        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
6227    }
6228    /// Nested message and enum types in `CameraGraph`.
6229    pub mod camera_graph {
6230        #[derive(Clone, PartialEq, ::prost::Message)]
6231        pub struct CameraNode {
6232            #[prost(int64, optional, tag="1")]
6233            pub node_id: ::core::option::Option<i64>,
6234            /// A list of inputs consumed by this node.
6235            #[prost(int64, repeated, packed="false", tag="2")]
6236            pub input_ids: ::prost::alloc::vec::Vec<i64>,
6237            /// A list of outputs produced by this node.
6238            #[prost(int64, repeated, packed="false", tag="3")]
6239            pub output_ids: ::prost::alloc::vec::Vec<i64>,
6240            /// These fields capture vendor-specific additions to this proto message.
6241            /// In practice `vendor_data` typically contains a serialized message of
6242            /// the vendor's design, and `vendor_data_version` is incremented each time
6243            /// there is a backwards incompatible change made to the message.
6244            #[prost(int32, optional, tag="4")]
6245            pub vendor_data_version: ::core::option::Option<i32>,
6246            #[prost(bytes="vec", optional, tag="5")]
6247            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6248        }
6249        /// An adjacency list describing connections between CameraNodes, mapping
6250        /// nodes and their outputs to other nodes that consume them as inputs.
6251        #[derive(Clone, PartialEq, ::prost::Message)]
6252        pub struct CameraEdge {
6253            /// The pair of IDs identifying the node and output connected by this edge.
6254            #[prost(int64, optional, tag="1")]
6255            pub output_node_id: ::core::option::Option<i64>,
6256            #[prost(int64, optional, tag="2")]
6257            pub output_id: ::core::option::Option<i64>,
6258            /// The pair of IDs identifying the node and input connected by this edge.
6259            #[prost(int64, optional, tag="3")]
6260            pub input_node_id: ::core::option::Option<i64>,
6261            #[prost(int64, optional, tag="4")]
6262            pub input_id: ::core::option::Option<i64>,
6263            /// These fields capture vendor-specific additions to this proto message.
6264            /// In practice `vendor_data` typically contains a serialized message of
6265            /// the vendor's design, and `vendor_data_version` is incremented each time
6266            /// there is a backwards incompatible change made to the message.
6267            #[prost(int32, optional, tag="5")]
6268            pub vendor_data_version: ::core::option::Option<i32>,
6269            #[prost(bytes="vec", optional, tag="6")]
6270            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6271        }
6272    }
6273}
6274// End of protos/perfetto/trace/android/camera_event.proto
6275
6276// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
6277
6278#[derive(Clone, PartialEq, ::prost::Message)]
6279pub struct CpuPerUidData {
6280    /// Number of clusters in the device. This will only be filled in the first
6281    /// packet in a sequence.
6282    #[prost(uint32, optional, tag="1")]
6283    pub cluster_count: ::core::option::Option<u32>,
6284    /// The UIDs for which we have data in this packet.
6285    #[prost(uint32, repeated, tag="2")]
6286    pub uid: ::prost::alloc::vec::Vec<u32>,
6287    /// List of times for {UID, cluster} tuples. This will be cluster_count
6288    /// times as long as the UID list.
6289    ///
6290    /// Ordered like:
6291    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
6292    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
6293    ///
6294    /// Each value is an absolute count for the first packet in a sequence, and a
6295    /// delta thereafter. UIDs for which all clusters have a zero delta are
6296    /// omitted; a single non-zero value for any cluster for a UID will cause
6297    /// values for all clusters to be recorded.
6298    #[prost(uint64, repeated, tag="3")]
6299    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
6300}
6301// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
6302
6303// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
6304
6305/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
6306/// Used in comparing the expected timeline of a frame to the actual timeline.
6307/// Key terms:
6308///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
6309///     2) SurfaceFrame - represents App's work on its frame
6310///     3) Timeline = start to end of a component's(app/SF) work on a frame.
6311/// SurfaceFlinger composites frames from many apps together, so
6312///     One DisplayFrame can map to N SurfaceFrame(s)
6313/// This relationship can be reconstructed by using
6314///     DisplayFrame.token = SurfaceFrame.display_frame_token
6315#[derive(Clone, PartialEq, ::prost::Message)]
6316pub struct FrameTimelineEvent {
6317    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
6318    pub event: ::core::option::Option<frame_timeline_event::Event>,
6319}
6320/// Nested message and enum types in `FrameTimelineEvent`.
6321pub mod frame_timeline_event {
6322    /// Indicates the start of expected timeline slice for SurfaceFrames.
6323    #[derive(Clone, PartialEq, ::prost::Message)]
6324    pub struct ExpectedSurfaceFrameStart {
6325        /// Cookie used to correlate between the start and end messages of the same
6326        /// frame. Since all values except the ts are same for start and end, cookie
6327        /// helps in preventing redundant data transmission.
6328        /// The same cookie is used only by start and end messages of a single frame
6329        /// and is otherwise unique.
6330        #[prost(int64, optional, tag="1")]
6331        pub cookie: ::core::option::Option<i64>,
6332        /// Token received by the app for its work. Can be shared between multiple
6333        /// layers of the same app (example: pip mode).
6334        #[prost(int64, optional, tag="2")]
6335        pub token: ::core::option::Option<i64>,
6336        /// The corresponding DisplayFrame token is required to link the App's work
6337        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
6338        /// DisplayFrame.
6339        /// this.display_frame_token = DisplayFrame.token
6340        #[prost(int64, optional, tag="3")]
6341        pub display_frame_token: ::core::option::Option<i64>,
6342        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
6343        /// the respective process track group.
6344        #[prost(int32, optional, tag="4")]
6345        pub pid: ::core::option::Option<i32>,
6346        #[prost(string, optional, tag="5")]
6347        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6348    }
6349    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
6350    /// includes the jank information.
6351    #[derive(Clone, PartialEq, ::prost::Message)]
6352    pub struct ActualSurfaceFrameStart {
6353        /// Cookie used to correlate between the start and end messages of the same
6354        /// frame. Since all values except the ts are same for start and end, cookie
6355        /// helps in preventing redundant data transmission.
6356        /// The same cookie is used only by start and end messages of a single frame
6357        /// and is otherwise unique.
6358        #[prost(int64, optional, tag="1")]
6359        pub cookie: ::core::option::Option<i64>,
6360        /// Token received by the app for its work. Can be shared between multiple
6361        /// layers of the same app (example: pip mode).
6362        #[prost(int64, optional, tag="2")]
6363        pub token: ::core::option::Option<i64>,
6364        /// The corresponding DisplayFrame token is required to link the App's work
6365        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
6366        /// DisplayFrame.
6367        /// this.display_frame_token = DisplayFrame.token
6368        #[prost(int64, optional, tag="3")]
6369        pub display_frame_token: ::core::option::Option<i64>,
6370        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
6371        /// the respective process track group.
6372        #[prost(int32, optional, tag="4")]
6373        pub pid: ::core::option::Option<i32>,
6374        #[prost(string, optional, tag="5")]
6375        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6376        #[prost(enumeration="PresentType", optional, tag="6")]
6377        pub present_type: ::core::option::Option<i32>,
6378        #[prost(bool, optional, tag="7")]
6379        pub on_time_finish: ::core::option::Option<bool>,
6380        #[prost(bool, optional, tag="8")]
6381        pub gpu_composition: ::core::option::Option<bool>,
6382        /// A bitmask of JankType. More than one reason can be attributed to a janky
6383        /// frame.
6384        #[prost(int32, optional, tag="9")]
6385        pub jank_type: ::core::option::Option<i32>,
6386        #[prost(enumeration="PredictionType", optional, tag="10")]
6387        pub prediction_type: ::core::option::Option<i32>,
6388        #[prost(bool, optional, tag="11")]
6389        pub is_buffer: ::core::option::Option<bool>,
6390        #[prost(enumeration="JankSeverityType", optional, tag="12")]
6391        pub jank_severity_type: ::core::option::Option<i32>,
6392        #[prost(float, optional, tag="13")]
6393        pub present_delay_millis: ::core::option::Option<f32>,
6394        #[prost(float, optional, tag="14")]
6395        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
6396        #[prost(float, optional, tag="15")]
6397        pub jank_severity_score: ::core::option::Option<f32>,
6398        /// experimental value for jank_type. Do not consider in jank analysis.
6399        #[prost(int32, optional, tag="16")]
6400        pub jank_type_experimental: ::core::option::Option<i32>,
6401        /// experimental value for present_type. Do not consider in jank analysis.
6402        #[prost(enumeration="PresentType", optional, tag="17")]
6403        pub present_type_experimental: ::core::option::Option<i32>,
6404        /// jank metadata information (for debug).
6405        #[prost(float, optional, tag="18")]
6406        pub jank_debug_metadata: ::core::option::Option<f32>,
6407        #[prost(enumeration="actual_surface_frame_start::LatchedFenceState", optional, tag="19")]
6408        pub latched_fence_state: ::core::option::Option<i32>,
6409        /// animation time (ms) used when drawing this frame.
6410        #[prost(float, optional, tag="20")]
6411        pub animation_time_millis: ::core::option::Option<f32>,
6412    }
6413    /// Nested message and enum types in `ActualSurfaceFrameStart`.
6414    pub mod actual_surface_frame_start {
6415        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6416        #[repr(i32)]
6417        pub enum LatchedFenceState {
6418            LatchedUnknown = 0,
6419            LatchedSignaled = 1,
6420            LatchedUnsignaled = 2,
6421            LatchedDelayedLatchUnsignaled = 3,
6422        }
6423        impl LatchedFenceState {
6424            /// String value of the enum field names used in the ProtoBuf definition.
6425            ///
6426            /// The values are not transformed in any way and thus are considered stable
6427            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6428            pub fn as_str_name(&self) -> &'static str {
6429                match self {
6430                    LatchedFenceState::LatchedUnknown => "LATCHED_UNKNOWN",
6431                    LatchedFenceState::LatchedSignaled => "LATCHED_SIGNALED",
6432                    LatchedFenceState::LatchedUnsignaled => "LATCHED_UNSIGNALED",
6433                    LatchedFenceState::LatchedDelayedLatchUnsignaled => "LATCHED_DELAYED_LATCH_UNSIGNALED",
6434                }
6435            }
6436        }
6437    }
6438    /// Indicates the start of expected timeline slice for DisplayFrames.
6439    #[derive(Clone, PartialEq, ::prost::Message)]
6440    pub struct ExpectedDisplayFrameStart {
6441        /// Cookie used to correlate between the start and end messages of the same
6442        /// frame. Since all values except the ts are same for start and end, cookie
6443        /// helps in preventing redundant data transmission.
6444        /// The same cookie is used only by start and end messages of a single frame
6445        /// and is otherwise unique.
6446        #[prost(int64, optional, tag="1")]
6447        pub cookie: ::core::option::Option<i64>,
6448        /// Token received by SurfaceFlinger for its work
6449        /// this.token = SurfaceFrame.display_frame_token
6450        #[prost(int64, optional, tag="2")]
6451        pub token: ::core::option::Option<i64>,
6452        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
6453        /// inside the SurfaceFlinger process group.
6454        #[prost(int32, optional, tag="3")]
6455        pub pid: ::core::option::Option<i32>,
6456    }
6457    /// Indicates the start of actual timeline slice for DisplayFrames. Also
6458    /// includes the jank information.
6459    #[derive(Clone, PartialEq, ::prost::Message)]
6460    pub struct ActualDisplayFrameStart {
6461        /// Cookie used to correlate between the start and end messages of the same
6462        /// frame. Since all values except the ts are same for start and end, cookie
6463        /// helps in preventing redundant data transmission.
6464        /// The same cookie is used only by start and end messages of a single frame
6465        /// and is otherwise unique.
6466        #[prost(int64, optional, tag="1")]
6467        pub cookie: ::core::option::Option<i64>,
6468        /// Token received by SurfaceFlinger for its work
6469        /// this.token = SurfaceFrame.display_frame_token
6470        #[prost(int64, optional, tag="2")]
6471        pub token: ::core::option::Option<i64>,
6472        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
6473        /// inside the SurfaceFlinger process group.
6474        #[prost(int32, optional, tag="3")]
6475        pub pid: ::core::option::Option<i32>,
6476        #[prost(enumeration="PresentType", optional, tag="4")]
6477        pub present_type: ::core::option::Option<i32>,
6478        #[prost(bool, optional, tag="5")]
6479        pub on_time_finish: ::core::option::Option<bool>,
6480        #[prost(bool, optional, tag="6")]
6481        pub gpu_composition: ::core::option::Option<bool>,
6482        /// A bitmask of JankType. More than one reason can be attributed to a janky
6483        /// frame.
6484        #[prost(int32, optional, tag="7")]
6485        pub jank_type: ::core::option::Option<i32>,
6486        #[prost(enumeration="PredictionType", optional, tag="8")]
6487        pub prediction_type: ::core::option::Option<i32>,
6488        #[prost(enumeration="JankSeverityType", optional, tag="9")]
6489        pub jank_severity_type: ::core::option::Option<i32>,
6490        #[prost(float, optional, tag="10")]
6491        pub present_delay_millis: ::core::option::Option<f32>,
6492        #[prost(float, optional, tag="11")]
6493        pub jank_severity_score: ::core::option::Option<f32>,
6494        /// experimental value for jank_type. Do not consider in jank analysis.
6495        #[prost(int32, optional, tag="12")]
6496        pub jank_type_experimental: ::core::option::Option<i32>,
6497        /// experimental value for present_type. Do not consider in jank analysis.
6498        #[prost(enumeration="PresentType", optional, tag="13")]
6499        pub present_type_experimental: ::core::option::Option<i32>,
6500        /// jank metadata information (for debug).
6501        #[prost(float, optional, tag="14")]
6502        pub jank_debug_metadata: ::core::option::Option<f32>,
6503        #[prost(int64, optional, tag="15")]
6504        pub latched_unsignaled_count: ::core::option::Option<i64>,
6505        #[prost(int64, optional, tag="16")]
6506        pub addressable_unsignaled_latch_count: ::core::option::Option<i64>,
6507    }
6508    /// FrameEnd just sends the cookie to indicate that the corresponding
6509    /// <display/surface>frame slice's end.
6510    #[derive(Clone, PartialEq, ::prost::Message)]
6511    pub struct FrameEnd {
6512        #[prost(int64, optional, tag="1")]
6513        pub cookie: ::core::option::Option<i64>,
6514    }
6515    /// Specifies the reason(s) most likely to have caused the jank.
6516    /// Used as a bitmask.
6517    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6518    #[repr(i32)]
6519    pub enum JankType {
6520        JankUnspecified = 0,
6521        JankNone = 1,
6522        JankSfScheduling = 2,
6523        JankPredictionError = 4,
6524        JankDisplayHal = 8,
6525        JankSfCpuDeadlineMissed = 16,
6526        JankSfGpuDeadlineMissed = 32,
6527        JankAppDeadlineMissed = 64,
6528        JankBufferStuffing = 128,
6529        JankUnknown = 256,
6530        JankSfStuffing = 512,
6531        JankDropped = 1024,
6532        JankNonAnimating = 2048,
6533        JankAppResyncedJitter = 4096,
6534        JankDisplayNotOn = 8192,
6535        JankDisplayModeChangeInProgress = 16384,
6536        JankDisplayPowerModeChangeInProgress = 32768,
6537    }
6538    impl JankType {
6539        /// String value of the enum field names used in the ProtoBuf definition.
6540        ///
6541        /// The values are not transformed in any way and thus are considered stable
6542        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6543        pub fn as_str_name(&self) -> &'static str {
6544            match self {
6545                JankType::JankUnspecified => "JANK_UNSPECIFIED",
6546                JankType::JankNone => "JANK_NONE",
6547                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
6548                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
6549                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
6550                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
6551                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
6552                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
6553                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
6554                JankType::JankUnknown => "JANK_UNKNOWN",
6555                JankType::JankSfStuffing => "JANK_SF_STUFFING",
6556                JankType::JankDropped => "JANK_DROPPED",
6557                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
6558                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
6559                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
6560                JankType::JankDisplayModeChangeInProgress => "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS",
6561                JankType::JankDisplayPowerModeChangeInProgress => "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS",
6562            }
6563        }
6564    }
6565    /// Specifies the severity of a jank.
6566    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6567    #[repr(i32)]
6568    pub enum JankSeverityType {
6569        SeverityUnknown = 0,
6570        SeverityNone = 1,
6571        SeverityPartial = 2,
6572        SeverityFull = 3,
6573    }
6574    impl JankSeverityType {
6575        /// String value of the enum field names used in the ProtoBuf definition.
6576        ///
6577        /// The values are not transformed in any way and thus are considered stable
6578        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6579        pub fn as_str_name(&self) -> &'static str {
6580            match self {
6581                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
6582                JankSeverityType::SeverityNone => "SEVERITY_NONE",
6583                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
6584                JankSeverityType::SeverityFull => "SEVERITY_FULL",
6585            }
6586        }
6587    }
6588    /// Specifies how a frame was presented on screen w.r.t. timing.
6589    /// Can be different for SurfaceFrame and DisplayFrame.
6590    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6591    #[repr(i32)]
6592    pub enum PresentType {
6593        PresentUnspecified = 0,
6594        PresentOnTime = 1,
6595        PresentLate = 2,
6596        PresentEarly = 3,
6597        PresentDropped = 4,
6598        PresentUnknown = 5,
6599    }
6600    impl PresentType {
6601        /// String value of the enum field names used in the ProtoBuf definition.
6602        ///
6603        /// The values are not transformed in any way and thus are considered stable
6604        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6605        pub fn as_str_name(&self) -> &'static str {
6606            match self {
6607                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
6608                PresentType::PresentOnTime => "PRESENT_ON_TIME",
6609                PresentType::PresentLate => "PRESENT_LATE",
6610                PresentType::PresentEarly => "PRESENT_EARLY",
6611                PresentType::PresentDropped => "PRESENT_DROPPED",
6612                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
6613            }
6614        }
6615    }
6616    /// Specifies if the predictions for the frame are still valid, expired or
6617    /// unknown.
6618    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6619    #[repr(i32)]
6620    pub enum PredictionType {
6621        PredictionUnspecified = 0,
6622        PredictionValid = 1,
6623        PredictionExpired = 2,
6624        PredictionUnknown = 3,
6625    }
6626    impl PredictionType {
6627        /// String value of the enum field names used in the ProtoBuf definition.
6628        ///
6629        /// The values are not transformed in any way and thus are considered stable
6630        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6631        pub fn as_str_name(&self) -> &'static str {
6632            match self {
6633                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
6634                PredictionType::PredictionValid => "PREDICTION_VALID",
6635                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
6636                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
6637            }
6638        }
6639    }
6640    #[derive(Clone, PartialEq, ::prost::Oneof)]
6641    pub enum Event {
6642        #[prost(message, tag="1")]
6643        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
6644        #[prost(message, tag="2")]
6645        ActualDisplayFrameStart(ActualDisplayFrameStart),
6646        #[prost(message, tag="3")]
6647        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
6648        #[prost(message, tag="4")]
6649        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
6650        #[prost(message, tag="5")]
6651        FrameEnd(FrameEnd),
6652    }
6653}
6654// End of protos/perfetto/trace/android/frame_timeline_event.proto
6655
6656// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
6657
6658/// Generated by Android's SurfaceFlinger.
6659#[derive(Clone, PartialEq, ::prost::Message)]
6660pub struct GraphicsFrameEvent {
6661    #[prost(message, optional, tag="1")]
6662    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
6663}
6664/// Nested message and enum types in `GraphicsFrameEvent`.
6665pub mod graphics_frame_event {
6666    #[derive(Clone, PartialEq, ::prost::Message)]
6667    pub struct BufferEvent {
6668        #[prost(uint32, optional, tag="1")]
6669        pub frame_number: ::core::option::Option<u32>,
6670        #[prost(enumeration="BufferEventType", optional, tag="2")]
6671        pub r#type: ::core::option::Option<i32>,
6672        #[prost(string, optional, tag="3")]
6673        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6674        /// If no duration is set, the event is an instant event.
6675        #[prost(uint64, optional, tag="4")]
6676        pub duration_ns: ::core::option::Option<u64>,
6677        /// Unique buffer identifier.
6678        #[prost(uint32, optional, tag="5")]
6679        pub buffer_id: ::core::option::Option<u32>,
6680    }
6681    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6682    #[repr(i32)]
6683    pub enum BufferEventType {
6684        Unspecified = 0,
6685        Dequeue = 1,
6686        Queue = 2,
6687        Post = 3,
6688        AcquireFence = 4,
6689        Latch = 5,
6690        /// HWC will compose this buffer
6691        HwcCompositionQueued = 6,
6692        /// renderEngine composition
6693        FallbackComposition = 7,
6694        PresentFence = 8,
6695        ReleaseFence = 9,
6696        Modify = 10,
6697        Detach = 11,
6698        Attach = 12,
6699        Cancel = 13,
6700    }
6701    impl BufferEventType {
6702        /// String value of the enum field names used in the ProtoBuf definition.
6703        ///
6704        /// The values are not transformed in any way and thus are considered stable
6705        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6706        pub fn as_str_name(&self) -> &'static str {
6707            match self {
6708                BufferEventType::Unspecified => "UNSPECIFIED",
6709                BufferEventType::Dequeue => "DEQUEUE",
6710                BufferEventType::Queue => "QUEUE",
6711                BufferEventType::Post => "POST",
6712                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
6713                BufferEventType::Latch => "LATCH",
6714                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
6715                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
6716                BufferEventType::PresentFence => "PRESENT_FENCE",
6717                BufferEventType::ReleaseFence => "RELEASE_FENCE",
6718                BufferEventType::Modify => "MODIFY",
6719                BufferEventType::Detach => "DETACH",
6720                BufferEventType::Attach => "ATTACH",
6721                BufferEventType::Cancel => "CANCEL",
6722            }
6723        }
6724    }
6725}
6726// End of protos/perfetto/trace/android/graphics_frame_event.proto
6727
6728// Begin of protos/perfetto/trace/android/initial_display_state.proto
6729
6730#[derive(Clone, PartialEq, ::prost::Message)]
6731pub struct InitialDisplayState {
6732    /// Same values as android.view.Display.STATE_*
6733    #[prost(int32, optional, tag="1")]
6734    pub display_state: ::core::option::Option<i32>,
6735    #[prost(double, optional, tag="2")]
6736    pub brightness: ::core::option::Option<f64>,
6737}
6738// End of protos/perfetto/trace/android/initial_display_state.proto
6739
6740// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
6741
6742#[derive(Clone, PartialEq, ::prost::Message)]
6743pub struct KernelWakelockData {
6744    /// This is only emitted when we encounter new wakelocks.
6745    #[prost(message, repeated, tag="1")]
6746    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
6747    /// Interning id.
6748    #[prost(uint32, repeated, tag="2")]
6749    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
6750    /// If we interned the wakelock name in this packet, this is the total time
6751    /// the wakelock has been held.
6752    /// If not, it's a delta from the last time we saw it.
6753    #[prost(uint64, repeated, tag="3")]
6754    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
6755    #[prost(uint64, optional, tag="4")]
6756    pub error_flags: ::core::option::Option<u64>,
6757}
6758/// Nested message and enum types in `KernelWakelockData`.
6759pub mod kernel_wakelock_data {
6760    #[derive(Clone, PartialEq, ::prost::Message)]
6761    pub struct Wakelock {
6762        /// Interning id.
6763        #[prost(uint32, optional, tag="1")]
6764        pub wakelock_id: ::core::option::Option<u32>,
6765        /// Name of the wakelock.
6766        #[prost(string, optional, tag="2")]
6767        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
6768        /// Type of the wakelock. We record data about both true kernel wakelocks
6769        /// and "native" wakelocks which are taken in userspace but are more
6770        /// conceptually similar to kernel wakelocks than normal userspace ones.
6771        #[prost(enumeration="wakelock::Type", optional, tag="3")]
6772        pub wakelock_type: ::core::option::Option<i32>,
6773    }
6774    /// Nested message and enum types in `Wakelock`.
6775    pub mod wakelock {
6776        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6777        #[repr(i32)]
6778        pub enum Type {
6779            WakelockTypeUnknown = 0,
6780            WakelockTypeKernel = 1,
6781            WakelockTypeNative = 2,
6782        }
6783        impl Type {
6784            /// String value of the enum field names used in the ProtoBuf definition.
6785            ///
6786            /// The values are not transformed in any way and thus are considered stable
6787            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6788            pub fn as_str_name(&self) -> &'static str {
6789                match self {
6790                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
6791                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
6792                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
6793                }
6794            }
6795        }
6796    }
6797}
6798// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
6799
6800// Begin of protos/perfetto/trace/android/packages_list.proto
6801
6802#[derive(Clone, PartialEq, ::prost::Message)]
6803pub struct PackagesList {
6804    #[prost(message, repeated, tag="1")]
6805    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
6806    /// At least one error occurred parsing the packages.list.
6807    #[prost(bool, optional, tag="2")]
6808    pub parse_error: ::core::option::Option<bool>,
6809    /// Failed to open / read packages.list.
6810    #[prost(bool, optional, tag="3")]
6811    pub read_error: ::core::option::Option<bool>,
6812}
6813/// Nested message and enum types in `PackagesList`.
6814pub mod packages_list {
6815    #[derive(Clone, PartialEq, ::prost::Message)]
6816    pub struct PackageInfo {
6817        #[prost(string, optional, tag="1")]
6818        pub name: ::core::option::Option<::prost::alloc::string::String>,
6819        #[prost(uint64, optional, tag="2")]
6820        pub uid: ::core::option::Option<u64>,
6821        #[prost(bool, optional, tag="3")]
6822        pub debuggable: ::core::option::Option<bool>,
6823        #[prost(bool, optional, tag="4")]
6824        pub profileable_from_shell: ::core::option::Option<bool>,
6825        #[prost(int64, optional, tag="5")]
6826        pub version_code: ::core::option::Option<i64>,
6827    }
6828}
6829// End of protos/perfetto/trace/android/packages_list.proto
6830
6831// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
6832
6833#[derive(Clone, PartialEq, ::prost::Message)]
6834pub struct PixelModemEvents {
6835    /// Pigweed-format dehydrated events.
6836    #[prost(bytes="vec", repeated, tag="1")]
6837    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
6838    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
6839    /// timestamp is the absolute timestamp of the first event. Subsequent
6840    /// timestamps are deltas from the previous timestamp.
6841    /// The nth entry from `events` gets the nth entry here.
6842    #[prost(uint64, repeated, packed="false", tag="2")]
6843    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
6844}
6845/// NB: this is not emitted in the trace but can be prepended later.
6846#[derive(Clone, PartialEq, ::prost::Message)]
6847pub struct PixelModemTokenDatabase {
6848    /// Pigweed-format database to allow event rehydration.
6849    #[prost(bytes="vec", optional, tag="1")]
6850    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6851}
6852// End of protos/perfetto/trace/android/pixel_modem_events.proto
6853
6854// Begin of protos/perfetto/trace/android/user_list.proto
6855
6856#[derive(Clone, PartialEq, ::prost::Message)]
6857pub struct AndroidUserList {
6858    #[prost(message, repeated, tag="1")]
6859    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
6860    /// Error number
6861    #[prost(int32, optional, tag="2")]
6862    pub error: ::core::option::Option<i32>,
6863}
6864/// Nested message and enum types in `AndroidUserList`.
6865pub mod android_user_list {
6866    #[derive(Clone, PartialEq, ::prost::Message)]
6867    pub struct UserInfo {
6868        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
6869        #[prost(string, optional, tag="1")]
6870        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
6871        #[prost(int32, optional, tag="2")]
6872        pub uid: ::core::option::Option<i32>,
6873    }
6874}
6875// End of protos/perfetto/trace/android/user_list.proto
6876
6877// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6878
6879/// This message is not intended to be written by the chrome on the device.
6880/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
6881/// part of the trace that's written by the telemetry tracing agent).
6882#[derive(Clone, PartialEq, ::prost::Message)]
6883pub struct ChromeBenchmarkMetadata {
6884    /// Time when the benchmark execution started (host unixtime in microseconds).
6885    #[prost(int64, optional, tag="1")]
6886    pub benchmark_start_time_us: ::core::option::Option<i64>,
6887    /// Time when this particular story was run (host unixtime in microseconds).
6888    #[prost(int64, optional, tag="2")]
6889    pub story_run_time_us: ::core::option::Option<i64>,
6890    /// Name of benchmark.
6891    #[prost(string, optional, tag="3")]
6892    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
6893    /// Description of benchmark.
6894    #[prost(string, optional, tag="4")]
6895    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
6896    /// Optional label.
6897    #[prost(string, optional, tag="5")]
6898    pub label: ::core::option::Option<::prost::alloc::string::String>,
6899    /// Name of story.
6900    #[prost(string, optional, tag="6")]
6901    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
6902    /// List of story tags.
6903    #[prost(string, repeated, tag="7")]
6904    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6905    /// Index of the story run (>0 if the same story was run several times).
6906    #[prost(int32, optional, tag="8")]
6907    pub story_run_index: ::core::option::Option<i32>,
6908    /// Whether this run failed.
6909    #[prost(bool, optional, tag="9")]
6910    pub had_failures: ::core::option::Option<bool>,
6911}
6912// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
6913
6914// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
6915
6916/// Metadata for chrome traces.
6917#[derive(Clone, PartialEq, ::prost::Message)]
6918pub struct ChromeMetadataPacket {
6919    #[prost(message, optional, tag="1")]
6920    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
6921    /// Version code of Chrome used by Android's Play Store. This field is only set
6922    /// on Android.
6923    #[prost(int32, optional, tag="2")]
6924    pub chrome_version_code: ::core::option::Option<i32>,
6925    /// Comma separated list of enabled categories for tracing. The list of
6926    /// possible category strings are listed in code
6927    /// base/trace_event/builtin_categories.h.
6928    #[prost(string, optional, tag="3")]
6929    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
6930    /// List of Finch study/groups that apply to this trace.
6931    #[prost(message, repeated, tag="4")]
6932    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
6933    /// The package name of the app which is being traced. This field is only set
6934    /// on Android.
6935    #[prost(string, optional, tag="5")]
6936    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
6937    /// A version number string for Chrome. This matches
6938    /// SystemProfileProto::app_version.
6939    #[prost(string, optional, tag="6")]
6940    pub app_version: ::core::option::Option<::prost::alloc::string::String>,
6941    /// This matches SystemProfileProto::channel.
6942    #[prost(uint32, optional, tag="7")]
6943    pub channel: ::core::option::Option<u32>,
6944    /// The user's operating system. This matches SystemProfileProto::OS::name.
6945    #[prost(string, optional, tag="8")]
6946    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
6947}
6948/// Nested message and enum types in `ChromeMetadataPacket`.
6949pub mod chrome_metadata_packet {
6950    /// Finch name and group based on the ActiveGroupId.
6951    #[derive(Clone, PartialEq, ::prost::Message)]
6952    pub struct FinchHash {
6953        #[prost(uint32, optional, tag="1")]
6954        pub name: ::core::option::Option<u32>,
6955        #[prost(uint32, optional, tag="2")]
6956        pub group: ::core::option::Option<u32>,
6957    }
6958}
6959/// Metadata related to background tracing scenarios, states and triggers.
6960#[derive(Clone, PartialEq, ::prost::Message)]
6961pub struct BackgroundTracingMetadata {
6962    /// Specifies the rule that caused the trace to be uploaded.
6963    #[prost(message, optional, tag="1")]
6964    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
6965    /// List of all active triggers in current session, when trace was triggered.
6966    #[prost(message, repeated, tag="2")]
6967    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
6968    /// Hash of the scenario name.
6969    #[prost(fixed32, optional, tag="3")]
6970    pub scenario_name_hash: ::core::option::Option<u32>,
6971}
6972/// Nested message and enum types in `BackgroundTracingMetadata`.
6973pub mod background_tracing_metadata {
6974    /// Information about a trigger rule defined in the experiment config.
6975    #[derive(Clone, PartialEq, ::prost::Message)]
6976    pub struct TriggerRule {
6977        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
6978        pub trigger_type: ::core::option::Option<i32>,
6979        #[prost(message, optional, tag="2")]
6980        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
6981        #[prost(message, optional, tag="3")]
6982        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
6983        /// Hash of the rule name.
6984        #[prost(fixed32, optional, tag="4")]
6985        pub name_hash: ::core::option::Option<u32>,
6986    }
6987    /// Nested message and enum types in `TriggerRule`.
6988    pub mod trigger_rule {
6989        /// Configuration of histogram trigger.
6990        #[derive(Clone, PartialEq, ::prost::Message)]
6991        pub struct HistogramRule {
6992            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
6993            #[prost(fixed64, optional, tag="1")]
6994            pub histogram_name_hash: ::core::option::Option<u64>,
6995            /// Range of values of the histogram that activates trigger.
6996            #[prost(int64, optional, tag="2")]
6997            pub histogram_min_trigger: ::core::option::Option<i64>,
6998            #[prost(int64, optional, tag="3")]
6999            pub histogram_max_trigger: ::core::option::Option<i64>,
7000        }
7001        /// Configuration of named trigger.
7002        #[derive(Clone, PartialEq, ::prost::Message)]
7003        pub struct NamedRule {
7004            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
7005            pub event_type: ::core::option::Option<i32>,
7006            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7007            /// content-trigger that actually fired.
7008            #[prost(fixed64, optional, tag="2")]
7009            pub content_trigger_name_hash: ::core::option::Option<u64>,
7010        }
7011        /// Nested message and enum types in `NamedRule`.
7012        pub mod named_rule {
7013            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7014            #[repr(i32)]
7015            pub enum EventType {
7016                Unspecified = 0,
7017                SessionRestore = 1,
7018                Navigation = 2,
7019                Startup = 3,
7020                ReachedCode = 4,
7021                ContentTrigger = 5,
7022                TestRule = 1000,
7023            }
7024            impl EventType {
7025                /// String value of the enum field names used in the ProtoBuf definition.
7026                ///
7027                /// The values are not transformed in any way and thus are considered stable
7028                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7029                pub fn as_str_name(&self) -> &'static str {
7030                    match self {
7031                        EventType::Unspecified => "UNSPECIFIED",
7032                        EventType::SessionRestore => "SESSION_RESTORE",
7033                        EventType::Navigation => "NAVIGATION",
7034                        EventType::Startup => "STARTUP",
7035                        EventType::ReachedCode => "REACHED_CODE",
7036                        EventType::ContentTrigger => "CONTENT_TRIGGER",
7037                        EventType::TestRule => "TEST_RULE",
7038                    }
7039                }
7040            }
7041        }
7042        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7043        #[repr(i32)]
7044        pub enum TriggerType {
7045            TriggerUnspecified = 0,
7046            /// Traces are triggered by specific range of values of an UMA histogram.
7047            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7048            /// Traces are triggered by specific named events in chromium codebase,
7049            /// like "second-update-failure".
7050            MonitorAndDumpWhenTriggerNamed = 2,
7051        }
7052        impl TriggerType {
7053            /// String value of the enum field names used in the ProtoBuf definition.
7054            ///
7055            /// The values are not transformed in any way and thus are considered stable
7056            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7057            pub fn as_str_name(&self) -> &'static str {
7058                match self {
7059                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7060                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
7061                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
7062                }
7063            }
7064        }
7065    }
7066}
7067// End of protos/perfetto/trace/chrome/chrome_metadata.proto
7068
7069// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
7070
7071#[derive(Clone, PartialEq, ::prost::Message)]
7072pub struct ChromeTracedValue {
7073    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
7074    pub nested_type: ::core::option::Option<i32>,
7075    #[prost(string, repeated, tag="2")]
7076    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7077    #[prost(message, repeated, tag="3")]
7078    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7079    #[prost(message, repeated, tag="4")]
7080    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7081    #[prost(int32, optional, tag="5")]
7082    pub int_value: ::core::option::Option<i32>,
7083    #[prost(double, optional, tag="6")]
7084    pub double_value: ::core::option::Option<f64>,
7085    #[prost(bool, optional, tag="7")]
7086    pub bool_value: ::core::option::Option<bool>,
7087    #[prost(string, optional, tag="8")]
7088    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7089}
7090/// Nested message and enum types in `ChromeTracedValue`.
7091pub mod chrome_traced_value {
7092    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7093    #[repr(i32)]
7094    pub enum NestedType {
7095        Dict = 0,
7096        Array = 1,
7097    }
7098    impl NestedType {
7099        /// String value of the enum field names used in the ProtoBuf definition.
7100        ///
7101        /// The values are not transformed in any way and thus are considered stable
7102        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7103        pub fn as_str_name(&self) -> &'static str {
7104            match self {
7105                NestedType::Dict => "DICT",
7106                NestedType::Array => "ARRAY",
7107            }
7108        }
7109    }
7110}
7111#[derive(Clone, PartialEq, ::prost::Message)]
7112pub struct ChromeStringTableEntry {
7113    #[prost(string, optional, tag="1")]
7114    pub value: ::core::option::Option<::prost::alloc::string::String>,
7115    #[prost(int32, optional, tag="2")]
7116    pub index: ::core::option::Option<i32>,
7117}
7118/// Deprecated, use TrackEvent protos instead.
7119#[derive(Clone, PartialEq, ::prost::Message)]
7120pub struct ChromeTraceEvent {
7121    #[prost(string, optional, tag="1")]
7122    pub name: ::core::option::Option<::prost::alloc::string::String>,
7123    #[prost(int64, optional, tag="2")]
7124    pub timestamp: ::core::option::Option<i64>,
7125    #[prost(int32, optional, tag="3")]
7126    pub phase: ::core::option::Option<i32>,
7127    #[prost(int32, optional, tag="4")]
7128    pub thread_id: ::core::option::Option<i32>,
7129    #[prost(int64, optional, tag="5")]
7130    pub duration: ::core::option::Option<i64>,
7131    #[prost(int64, optional, tag="6")]
7132    pub thread_duration: ::core::option::Option<i64>,
7133    #[prost(string, optional, tag="7")]
7134    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7135    #[prost(uint64, optional, tag="8")]
7136    pub id: ::core::option::Option<u64>,
7137    #[prost(uint32, optional, tag="9")]
7138    pub flags: ::core::option::Option<u32>,
7139    #[prost(string, optional, tag="10")]
7140    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7141    #[prost(int32, optional, tag="11")]
7142    pub process_id: ::core::option::Option<i32>,
7143    #[prost(int64, optional, tag="12")]
7144    pub thread_timestamp: ::core::option::Option<i64>,
7145    #[prost(uint64, optional, tag="13")]
7146    pub bind_id: ::core::option::Option<u64>,
7147    #[prost(message, repeated, tag="14")]
7148    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7149    /// Takes precedence over respectively |name| and
7150    /// |category_group_name_index| if set,
7151    /// and are indices into |string_table|.
7152    #[prost(uint32, optional, tag="15")]
7153    pub name_index: ::core::option::Option<u32>,
7154    #[prost(uint32, optional, tag="16")]
7155    pub category_group_name_index: ::core::option::Option<u32>,
7156}
7157/// Nested message and enum types in `ChromeTraceEvent`.
7158pub mod chrome_trace_event {
7159    #[derive(Clone, PartialEq, ::prost::Message)]
7160    pub struct Arg {
7161        #[prost(string, optional, tag="1")]
7162        pub name: ::core::option::Option<::prost::alloc::string::String>,
7163        /// Takes precedence over |name| if set,
7164        /// and is an index into |string_table|.
7165        #[prost(uint32, optional, tag="9")]
7166        pub name_index: ::core::option::Option<u32>,
7167        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
7168        pub value: ::core::option::Option<arg::Value>,
7169    }
7170    /// Nested message and enum types in `Arg`.
7171    pub mod arg {
7172        #[derive(Clone, PartialEq, ::prost::Oneof)]
7173        pub enum Value {
7174            #[prost(bool, tag="2")]
7175            BoolValue(bool),
7176            #[prost(uint64, tag="3")]
7177            UintValue(u64),
7178            #[prost(int64, tag="4")]
7179            IntValue(i64),
7180            #[prost(double, tag="5")]
7181            DoubleValue(f64),
7182            #[prost(string, tag="6")]
7183            StringValue(::prost::alloc::string::String),
7184            /// Pointers are stored in a separate type as the JSON output treats them
7185            /// differently from other uint64 values.
7186            #[prost(uint64, tag="7")]
7187            PointerValue(u64),
7188            #[prost(string, tag="8")]
7189            JsonValue(::prost::alloc::string::String),
7190            #[prost(message, tag="10")]
7191            TracedValue(super::super::ChromeTracedValue),
7192        }
7193    }
7194}
7195#[derive(Clone, PartialEq, ::prost::Message)]
7196pub struct ChromeMetadata {
7197    #[prost(string, optional, tag="1")]
7198    pub name: ::core::option::Option<::prost::alloc::string::String>,
7199    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
7200    pub value: ::core::option::Option<chrome_metadata::Value>,
7201}
7202/// Nested message and enum types in `ChromeMetadata`.
7203pub mod chrome_metadata {
7204    #[derive(Clone, PartialEq, ::prost::Oneof)]
7205    pub enum Value {
7206        #[prost(string, tag="2")]
7207        StringValue(::prost::alloc::string::String),
7208        #[prost(bool, tag="3")]
7209        BoolValue(bool),
7210        #[prost(int64, tag="4")]
7211        IntValue(i64),
7212        #[prost(string, tag="5")]
7213        JsonValue(::prost::alloc::string::String),
7214    }
7215}
7216/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7217/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7218/// TODO(eseckler): Update these agents to become perfetto producers.
7219#[derive(Clone, PartialEq, ::prost::Message)]
7220pub struct ChromeLegacyJsonTrace {
7221    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
7222    pub r#type: ::core::option::Option<i32>,
7223    #[prost(string, optional, tag="2")]
7224    pub data: ::core::option::Option<::prost::alloc::string::String>,
7225}
7226/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7227pub mod chrome_legacy_json_trace {
7228    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7229    #[repr(i32)]
7230    pub enum TraceType {
7231        UserTrace = 0,
7232        /// Deprecated.
7233        SystemTrace = 1,
7234    }
7235    impl TraceType {
7236        /// String value of the enum field names used in the ProtoBuf definition.
7237        ///
7238        /// The values are not transformed in any way and thus are considered stable
7239        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7240        pub fn as_str_name(&self) -> &'static str {
7241            match self {
7242                TraceType::UserTrace => "USER_TRACE",
7243                TraceType::SystemTrace => "SYSTEM_TRACE",
7244            }
7245        }
7246    }
7247}
7248#[derive(Clone, PartialEq, ::prost::Message)]
7249pub struct ChromeEventBundle {
7250    /// Deprecated, use TrackEvent protos instead.
7251    #[deprecated]
7252    #[prost(message, repeated, tag="1")]
7253    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7254    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7255    /// which contains typed fields.
7256    #[prost(message, repeated, tag="2")]
7257    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7258    /// ftrace output from CrOS and Cast system tracing agents.
7259    /// TODO(eseckler): Replace system traces with native perfetto service.
7260    #[prost(string, repeated, tag="4")]
7261    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7262    #[prost(message, repeated, tag="5")]
7263    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7264    /// Contents of a string table that's valid for
7265    /// the whole ChromeEventBundle entry.
7266    #[deprecated]
7267    #[prost(message, repeated, tag="3")]
7268    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7269}
7270// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
7271
7272// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
7273
7274/// Information about a specific trigger during a background tracing scenario
7275/// Associated packet timestamps are useful to delimitate a scenario range in a
7276/// trace. Triggers are also useful for filtering traces.
7277#[derive(Clone, PartialEq, ::prost::Message)]
7278pub struct ChromeTrigger {
7279    /// Name of the trigger which was received.
7280    #[prost(string, optional, tag="1")]
7281    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7282    /// SHA1 hash of the trigger name.
7283    #[prost(fixed32, optional, tag="2")]
7284    pub trigger_name_hash: ::core::option::Option<u32>,
7285    /// Flow id which should terminate on this trigger.
7286    #[prost(fixed64, optional, tag="3")]
7287    pub flow_id: ::core::option::Option<u64>,
7288}
7289// End of protos/perfetto/trace/chrome/chrome_trigger.proto
7290
7291// Begin of protos/perfetto/trace/chrome/v8.proto
7292
7293// These are the protos for the V8 data source.
7294//
7295// All events are associated to a V8 isolate instance. There can be multiple
7296// instances associated to a given thread, although this is rare.
7297//
7298// Generated code in V8 is allocated in the V8 heap (in a special executeable
7299// section), this means that code can be garbage collected (when no longer used)
7300// or can be moved around (e.g. during heap compactation). This means that a
7301// given callsite might correspond to function `A` at one point in time and to
7302// function `B` later on.
7303// In addition V8 code has various levels of optimization, so a function might
7304// have multiple associated code snippets.
7305//
7306// V8 does not track code deletion, so we have to indirectly infer it by
7307// detecting code overlaps, if a newer code creation event overlaps with older
7308// code we need to asume that the old code was deleted. Code moves are logged,
7309// and there is an event to track those.
7310
7311/// Strings used by V8 can have different encodings, instead of coverting to a
7312/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7313/// "raw" string and do the convestion at trace ingestion time.
7314///
7315/// ATTENTION: There is some overhead in using a message (as opossed to having
7316/// the `oneof encoded_string`` direcly embedded in the message), so use this
7317/// message in places were these extra bytes don't matter that much.
7318/// Next id: 5
7319#[derive(Clone, PartialEq, ::prost::Message)]
7320pub struct V8String {
7321    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
7322    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7323}
7324/// Nested message and enum types in `V8String`.
7325pub mod v8_string {
7326    #[derive(Clone, PartialEq, ::prost::Oneof)]
7327    pub enum EncodedString {
7328        /// ISO/IEC 8859-1:1998 encoding aka latin1
7329        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7330        #[prost(bytes, tag="1")]
7331        Latin1(::prost::alloc::vec::Vec<u8>),
7332        /// UTF-16 Little Endian Encoding
7333        #[prost(bytes, tag="2")]
7334        Utf16Le(::prost::alloc::vec::Vec<u8>),
7335        /// UTF-16 Big Endian Encoding
7336        #[prost(bytes, tag="3")]
7337        Utf16Be(::prost::alloc::vec::Vec<u8>),
7338    }
7339}
7340/// Interned version of V8String
7341#[derive(Clone, PartialEq, ::prost::Message)]
7342pub struct InternedV8String {
7343    #[prost(uint64, optional, tag="1")]
7344    pub iid: ::core::option::Option<u64>,
7345    /// We inline the fields in V8String here to save some bytes in the serialized
7346    /// proto format. Interning is about saving bytes so this makes sense here.
7347    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
7348    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7349}
7350/// Nested message and enum types in `InternedV8String`.
7351pub mod interned_v8_string {
7352    /// We inline the fields in V8String here to save some bytes in the serialized
7353    /// proto format. Interning is about saving bytes so this makes sense here.
7354    #[derive(Clone, PartialEq, ::prost::Oneof)]
7355    pub enum EncodedString {
7356        /// ISO/IEC 8859-1:1998 encoding aka latin1
7357        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7358        #[prost(bytes, tag="2")]
7359        Latin1(::prost::alloc::vec::Vec<u8>),
7360        /// UTF-16 Little Endian Encoding
7361        #[prost(bytes, tag="3")]
7362        Utf16Le(::prost::alloc::vec::Vec<u8>),
7363        /// UTF-16 Big Endian Encoding
7364        #[prost(bytes, tag="4")]
7365        Utf16Be(::prost::alloc::vec::Vec<u8>),
7366    }
7367}
7368/// Represents a script that was compiled to generate code. Some V8 code is
7369/// generated out of scripts and will reference a V8Script other types of code
7370/// will not (e.g. builtins).
7371#[derive(Clone, PartialEq, ::prost::Message)]
7372pub struct InternedV8JsScript {
7373    #[prost(uint64, optional, tag="1")]
7374    pub iid: ::core::option::Option<u64>,
7375    /// Unique in a given isolate
7376    #[prost(int32, optional, tag="2")]
7377    pub script_id: ::core::option::Option<i32>,
7378    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
7379    pub r#type: ::core::option::Option<i32>,
7380    #[prost(message, optional, tag="4")]
7381    pub name: ::core::option::Option<V8String>,
7382    /// Actual source of the script
7383    #[prost(message, optional, tag="5")]
7384    pub source: ::core::option::Option<V8String>,
7385}
7386/// Nested message and enum types in `InternedV8JsScript`.
7387pub mod interned_v8_js_script {
7388    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7389    #[repr(i32)]
7390    pub enum Type {
7391        Unknown = 0,
7392        Normal = 1,
7393        Eval = 2,
7394        Module = 3,
7395        Native = 4,
7396        Extension = 5,
7397        Inspector = 6,
7398    }
7399    impl Type {
7400        /// String value of the enum field names used in the ProtoBuf definition.
7401        ///
7402        /// The values are not transformed in any way and thus are considered stable
7403        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7404        pub fn as_str_name(&self) -> &'static str {
7405            match self {
7406                Type::Unknown => "TYPE_UNKNOWN",
7407                Type::Normal => "TYPE_NORMAL",
7408                Type::Eval => "TYPE_EVAL",
7409                Type::Module => "TYPE_MODULE",
7410                Type::Native => "TYPE_NATIVE",
7411                Type::Extension => "TYPE_EXTENSION",
7412                Type::Inspector => "TYPE_INSPECTOR",
7413            }
7414        }
7415    }
7416}
7417#[derive(Clone, PartialEq, ::prost::Message)]
7418pub struct InternedV8WasmScript {
7419    #[prost(uint64, optional, tag="1")]
7420    pub iid: ::core::option::Option<u64>,
7421    /// Unique in a given isolate
7422    #[prost(int32, optional, tag="2")]
7423    pub script_id: ::core::option::Option<i32>,
7424    #[prost(string, optional, tag="3")]
7425    pub url: ::core::option::Option<::prost::alloc::string::String>,
7426    /// Raw transferred wasm native module wire bytes.
7427    #[prost(bytes="vec", optional, tag="4")]
7428    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7429}
7430#[derive(Clone, PartialEq, ::prost::Message)]
7431pub struct InternedV8JsFunction {
7432    #[prost(uint64, optional, tag="1")]
7433    pub iid: ::core::option::Option<u64>,
7434    #[prost(uint64, optional, tag="2")]
7435    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7436    #[prost(uint64, optional, tag="3")]
7437    pub v8_js_script_iid: ::core::option::Option<u64>,
7438    #[prost(bool, optional, tag="4")]
7439    pub is_toplevel: ::core::option::Option<bool>,
7440    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
7441    pub kind: ::core::option::Option<i32>,
7442    /// Where in the script source this function is defined. This is counted in
7443    /// bytes not characters.
7444    #[prost(uint32, optional, tag="6")]
7445    pub byte_offset: ::core::option::Option<u32>,
7446    #[prost(uint32, optional, tag="7")]
7447    pub line: ::core::option::Option<u32>,
7448    #[prost(uint32, optional, tag="8")]
7449    pub column: ::core::option::Option<u32>,
7450}
7451/// Nested message and enum types in `InternedV8JsFunction`.
7452pub mod interned_v8_js_function {
7453    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7454    #[repr(i32)]
7455    pub enum Kind {
7456        Unknown = 0,
7457        NormalFunction = 1,
7458        Module = 2,
7459        AsyncModule = 3,
7460        BaseConstructor = 4,
7461        DefaultBaseConstructor = 5,
7462        DefaultDerivedConstructor = 6,
7463        DerivedConstructor = 7,
7464        GetterFunction = 8,
7465        StaticGetterFunction = 9,
7466        SetterFunction = 10,
7467        StaticSetterFunction = 11,
7468        ArrowFunction = 12,
7469        AsyncArrowFunction = 13,
7470        AsyncFunction = 14,
7471        AsyncConciseMethod = 15,
7472        StaticAsyncConciseMethod = 16,
7473        AsyncConciseGeneratorMethod = 17,
7474        StaticAsyncConciseGeneratorMethod = 18,
7475        AsyncGeneratorFunction = 19,
7476        GeneratorFunction = 20,
7477        ConciseGeneratorMethod = 21,
7478        StaticConciseGeneratorMethod = 22,
7479        ConciseMethod = 23,
7480        StaticConciseMethod = 24,
7481        ClassMembersInitializerFunction = 25,
7482        ClassStaticInitializerFunction = 26,
7483        Invalid = 27,
7484    }
7485    impl Kind {
7486        /// String value of the enum field names used in the ProtoBuf definition.
7487        ///
7488        /// The values are not transformed in any way and thus are considered stable
7489        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7490        pub fn as_str_name(&self) -> &'static str {
7491            match self {
7492                Kind::Unknown => "KIND_UNKNOWN",
7493                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
7494                Kind::Module => "KIND_MODULE",
7495                Kind::AsyncModule => "KIND_ASYNC_MODULE",
7496                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7497                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7498                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7499                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7500                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
7501                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7502                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
7503                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7504                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
7505                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7506                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
7507                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7508                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7509                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
7510                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
7511                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7512                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7513                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7514                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
7515                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
7516                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7517                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
7518                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
7519                Kind::Invalid => "KIND_INVALID",
7520            }
7521        }
7522    }
7523}
7524/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7525/// engine.
7526#[derive(Clone, PartialEq, ::prost::Message)]
7527pub struct InternedV8Isolate {
7528    #[prost(uint64, optional, tag="1")]
7529    pub iid: ::core::option::Option<u64>,
7530    #[prost(uint32, optional, tag="2")]
7531    pub pid: ::core::option::Option<u32>,
7532    /// Process unique isolate id.
7533    #[prost(int32, optional, tag="3")]
7534    pub isolate_id: ::core::option::Option<i32>,
7535    #[prost(message, optional, tag="4")]
7536    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
7537    /// The embedded blob holds code for built in functions that are precompiled in
7538    /// the V8 library.
7539    #[prost(uint64, optional, tag="5")]
7540    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
7541    #[prost(uint64, optional, tag="6")]
7542    pub embedded_blob_code_size: ::core::option::Option<u64>,
7543}
7544/// Nested message and enum types in `InternedV8Isolate`.
7545pub mod interned_v8_isolate {
7546    /// A code range is a virtual memory cage that may contain executable code.
7547    /// Depending on the Isolate settings the Isolate might have one or not.
7548    /// See:
7549    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
7550    /// If the isolate defines code range this will be tracked here.
7551    #[derive(Clone, PartialEq, ::prost::Message)]
7552    pub struct CodeRange {
7553        #[prost(uint64, optional, tag="1")]
7554        pub base_address: ::core::option::Option<u64>,
7555        #[prost(uint64, optional, tag="2")]
7556        pub size: ::core::option::Option<u64>,
7557        /// Used when short builtin calls are enabled, where embedded builtins are
7558        /// copied into the CodeRange so calls can be nearer.
7559        #[prost(uint64, optional, tag="3")]
7560        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
7561        /// Whether this code range is shared with other Isolates in the same process
7562        #[prost(bool, optional, tag="4")]
7563        pub is_process_wide: ::core::option::Option<bool>,
7564    }
7565}
7566#[derive(Clone, PartialEq, ::prost::Message)]
7567pub struct V8JsCode {
7568    #[prost(uint64, optional, tag="1")]
7569    pub v8_isolate_iid: ::core::option::Option<u64>,
7570    #[prost(uint32, optional, tag="2")]
7571    pub tid: ::core::option::Option<u32>,
7572    #[prost(uint64, optional, tag="3")]
7573    pub v8_js_function_iid: ::core::option::Option<u64>,
7574    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
7575    pub tier: ::core::option::Option<i32>,
7576    #[prost(uint64, optional, tag="5")]
7577    pub instruction_start: ::core::option::Option<u64>,
7578    #[prost(uint64, optional, tag="6")]
7579    pub instruction_size_bytes: ::core::option::Option<u64>,
7580    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
7581    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
7582    #[prost(oneof="v8_js_code::SourceMap", tags="9, 10, 11")]
7583    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
7584}
7585/// Nested message and enum types in `V8JsCode`.
7586pub mod v8_js_code {
7587    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7588    #[repr(i32)]
7589    pub enum Tier {
7590        Unknown = 0,
7591        Ignition = 1,
7592        Sparkplug = 2,
7593        Maglev = 3,
7594        Turboshaft = 4,
7595        Turbofan = 5,
7596    }
7597    impl Tier {
7598        /// String value of the enum field names used in the ProtoBuf definition.
7599        ///
7600        /// The values are not transformed in any way and thus are considered stable
7601        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7602        pub fn as_str_name(&self) -> &'static str {
7603            match self {
7604                Tier::Unknown => "TIER_UNKNOWN",
7605                Tier::Ignition => "TIER_IGNITION",
7606                Tier::Sparkplug => "TIER_SPARKPLUG",
7607                Tier::Maglev => "TIER_MAGLEV",
7608                Tier::Turboshaft => "TIER_TURBOSHAFT",
7609                Tier::Turbofan => "TIER_TURBOFAN",
7610            }
7611        }
7612    }
7613    #[derive(Clone, PartialEq, ::prost::Oneof)]
7614    pub enum Instructions {
7615        #[prost(bytes, tag="7")]
7616        MachineCode(::prost::alloc::vec::Vec<u8>),
7617        #[prost(bytes, tag="8")]
7618        Bytecode(::prost::alloc::vec::Vec<u8>),
7619    }
7620    #[derive(Clone, PartialEq, ::prost::Oneof)]
7621    pub enum SourceMap {
7622        /// For Ignition / bytecode:
7623        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
7624        ///     related js function)
7625        #[prost(bytes, tag="9")]
7626        SourcePositions(::prost::alloc::vec::Vec<u8>),
7627        /// For Sparkplug code:
7628        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
7629        ///     ignition code object for the same js-function.
7630        #[prost(bytes, tag="10")]
7631        BytecodePositions(::prost::alloc::vec::Vec<u8>),
7632        /// For optimized code:
7633        /// - Maps machine-code-ranges to bytecode ranges in various
7634        ///    ignition code objects (inlining might happen from multiple functions)
7635        #[prost(bytes, tag="11")]
7636        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
7637    }
7638}
7639#[derive(Clone, PartialEq, ::prost::Message)]
7640pub struct V8InternalCode {
7641    #[prost(uint64, optional, tag="1")]
7642    pub v8_isolate_iid: ::core::option::Option<u64>,
7643    #[prost(uint32, optional, tag="2")]
7644    pub tid: ::core::option::Option<u32>,
7645    #[prost(string, optional, tag="3")]
7646    pub name: ::core::option::Option<::prost::alloc::string::String>,
7647    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
7648    pub r#type: ::core::option::Option<i32>,
7649    #[prost(int32, optional, tag="5")]
7650    pub builtin_id: ::core::option::Option<i32>,
7651    #[prost(uint64, optional, tag="6")]
7652    pub instruction_start: ::core::option::Option<u64>,
7653    #[prost(uint64, optional, tag="7")]
7654    pub instruction_size_bytes: ::core::option::Option<u64>,
7655    #[prost(bytes="vec", optional, tag="8")]
7656    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7657}
7658/// Nested message and enum types in `V8InternalCode`.
7659pub mod v8_internal_code {
7660    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7661    #[repr(i32)]
7662    pub enum Type {
7663        Unknown = 0,
7664        BytecodeHandler = 1,
7665        ForTesting = 2,
7666        Builtin = 3,
7667        WasmFunction = 4,
7668        WasmToCapiFunction = 5,
7669        WasmToJsFunction = 6,
7670        JsToWasmFunction = 7,
7671        JsToJsFunction = 8,
7672        CWasmEntry = 9,
7673    }
7674    impl Type {
7675        /// String value of the enum field names used in the ProtoBuf definition.
7676        ///
7677        /// The values are not transformed in any way and thus are considered stable
7678        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7679        pub fn as_str_name(&self) -> &'static str {
7680            match self {
7681                Type::Unknown => "TYPE_UNKNOWN",
7682                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
7683                Type::ForTesting => "TYPE_FOR_TESTING",
7684                Type::Builtin => "TYPE_BUILTIN",
7685                Type::WasmFunction => "TYPE_WASM_FUNCTION",
7686                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
7687                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
7688                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
7689                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
7690                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
7691            }
7692        }
7693    }
7694}
7695#[derive(Clone, PartialEq, ::prost::Message)]
7696pub struct V8WasmCode {
7697    #[prost(uint64, optional, tag="1")]
7698    pub v8_isolate_iid: ::core::option::Option<u64>,
7699    #[prost(uint32, optional, tag="2")]
7700    pub tid: ::core::option::Option<u32>,
7701    #[prost(uint64, optional, tag="3")]
7702    pub v8_wasm_script_iid: ::core::option::Option<u64>,
7703    #[prost(string, optional, tag="4")]
7704    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7705    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
7706    pub tier: ::core::option::Option<i32>,
7707    #[prost(int32, optional, tag="6")]
7708    pub code_offset_in_module: ::core::option::Option<i32>,
7709    #[prost(uint64, optional, tag="7")]
7710    pub instruction_start: ::core::option::Option<u64>,
7711    #[prost(uint64, optional, tag="8")]
7712    pub instruction_size_bytes: ::core::option::Option<u64>,
7713    #[prost(bytes="vec", optional, tag="9")]
7714    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7715}
7716/// Nested message and enum types in `V8WasmCode`.
7717pub mod v8_wasm_code {
7718    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7719    #[repr(i32)]
7720    pub enum Tier {
7721        Unknown = 0,
7722        Liftoff = 1,
7723        Turbofan = 2,
7724    }
7725    impl Tier {
7726        /// String value of the enum field names used in the ProtoBuf definition.
7727        ///
7728        /// The values are not transformed in any way and thus are considered stable
7729        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7730        pub fn as_str_name(&self) -> &'static str {
7731            match self {
7732                Tier::Unknown => "TIER_UNKNOWN",
7733                Tier::Liftoff => "TIER_LIFTOFF",
7734                Tier::Turbofan => "TIER_TURBOFAN",
7735            }
7736        }
7737    }
7738}
7739#[derive(Clone, PartialEq, ::prost::Message)]
7740pub struct V8RegExpCode {
7741    #[prost(uint64, optional, tag="1")]
7742    pub v8_isolate_iid: ::core::option::Option<u64>,
7743    #[prost(uint32, optional, tag="2")]
7744    pub tid: ::core::option::Option<u32>,
7745    #[prost(message, optional, tag="3")]
7746    pub pattern: ::core::option::Option<V8String>,
7747    #[prost(uint64, optional, tag="4")]
7748    pub instruction_start: ::core::option::Option<u64>,
7749    #[prost(uint64, optional, tag="5")]
7750    pub instruction_size_bytes: ::core::option::Option<u64>,
7751    #[prost(bytes="vec", optional, tag="6")]
7752    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7753}
7754/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
7755/// memory by V8's GC.
7756#[derive(Clone, PartialEq, ::prost::Message)]
7757pub struct V8CodeMove {
7758    #[prost(uint64, optional, tag="1")]
7759    pub isolate_iid: ::core::option::Option<u64>,
7760    #[prost(uint32, optional, tag="2")]
7761    pub tid: ::core::option::Option<u32>,
7762    #[prost(uint64, optional, tag="3")]
7763    pub from_instruction_start_address: ::core::option::Option<u64>,
7764    #[prost(uint64, optional, tag="4")]
7765    pub to_instruction_start_address: ::core::option::Option<u64>,
7766    #[prost(uint64, optional, tag="5")]
7767    pub instruction_size_bytes: ::core::option::Option<u64>,
7768    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
7769    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
7770}
7771/// Nested message and enum types in `V8CodeMove`.
7772pub mod v8_code_move {
7773    #[derive(Clone, PartialEq, ::prost::Oneof)]
7774    pub enum ToInstructions {
7775        #[prost(bytes, tag="6")]
7776        ToMachineCode(::prost::alloc::vec::Vec<u8>),
7777        #[prost(bytes, tag="7")]
7778        ToBytecode(::prost::alloc::vec::Vec<u8>),
7779    }
7780}
7781#[derive(Clone, PartialEq, ::prost::Message)]
7782pub struct V8CodeDefaults {
7783    #[prost(uint32, optional, tag="1")]
7784    pub tid: ::core::option::Option<u32>,
7785}
7786// End of protos/perfetto/trace/chrome/v8.proto
7787
7788// Begin of protos/perfetto/trace/clock_snapshot.proto
7789
7790/// A snapshot of clock readings to allow for trace alignment.
7791#[derive(Clone, PartialEq, ::prost::Message)]
7792pub struct ClockSnapshot {
7793    #[prost(message, repeated, tag="1")]
7794    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
7795    /// The authoritative clock domain for the trace. When set, this definitively
7796    /// overrides the trace time clock. If not set, the trace time clock remains
7797    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
7798    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
7799    /// snapshots). Trace processor will attempt to translate packet/event
7800    /// timestamps from various data sources (and their chosen clock domains) to
7801    /// this domain during import.
7802    #[prost(enumeration="BuiltinClock", optional, tag="2")]
7803    pub primary_trace_clock: ::core::option::Option<i32>,
7804}
7805/// Nested message and enum types in `ClockSnapshot`.
7806pub mod clock_snapshot {
7807    #[derive(Clone, PartialEq, ::prost::Message)]
7808    pub struct Clock {
7809        /// Clock IDs have the following semantic:
7810        /// [1, 63]:    Builtin types, see BuiltinClock from
7811        ///              ../common/builtin_clock.proto.
7812        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
7813        ///              are only valid within the same |trusted_packet_sequence_id|
7814        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
7815        ///              that emitted the clock snapshot).
7816        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
7817        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
7818        #[prost(uint32, optional, tag="1")]
7819        pub clock_id: ::core::option::Option<u32>,
7820        /// Absolute timestamp. Unit is ns unless specified otherwise by the
7821        /// unit_multiplier_ns field below.
7822        #[prost(uint64, optional, tag="2")]
7823        pub timestamp: ::core::option::Option<u64>,
7824        /// When true each TracePacket's timestamp should be interpreted as a delta
7825        /// from the last TracePacket's timestamp (referencing this clock) emitted by
7826        /// the same packet_sequence_id. Should only be used for user-defined
7827        /// sequence-local clocks. The first packet timestamp after each
7828        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
7829        /// the ClockSnapshot.
7830        #[prost(bool, optional, tag="3")]
7831        pub is_incremental: ::core::option::Option<bool>,
7832        /// Allows to specify a custom unit different than the default (ns) for this
7833        /// clock domain.
7834        ///
7835        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
7836        ///    as 3000 ns = 3 us.
7837        /// * All snapshots for the same clock within a trace need to use the same
7838        ///    unit.
7839        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
7840        #[prost(uint64, optional, tag="4")]
7841        pub unit_multiplier_ns: ::core::option::Option<u64>,
7842    }
7843    /// Nested message and enum types in `Clock`.
7844    pub mod clock {
7845        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
7846        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7847        #[repr(i32)]
7848        pub enum BuiltinClocks {
7849            Unknown = 0,
7850            Realtime = 1,
7851            RealtimeCoarse = 2,
7852            Monotonic = 3,
7853            MonotonicCoarse = 4,
7854            MonotonicRaw = 5,
7855            Boottime = 6,
7856            BuiltinClockMaxId = 63,
7857        }
7858        impl BuiltinClocks {
7859            /// String value of the enum field names used in the ProtoBuf definition.
7860            ///
7861            /// The values are not transformed in any way and thus are considered stable
7862            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7863            pub fn as_str_name(&self) -> &'static str {
7864                match self {
7865                    BuiltinClocks::Unknown => "UNKNOWN",
7866                    BuiltinClocks::Realtime => "REALTIME",
7867                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
7868                    BuiltinClocks::Monotonic => "MONOTONIC",
7869                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
7870                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
7871                    BuiltinClocks::Boottime => "BOOTTIME",
7872                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
7873                }
7874            }
7875        }
7876    }
7877}
7878// End of protos/perfetto/trace/clock_snapshot.proto
7879
7880// Begin of protos/perfetto/trace/etw/etw.proto
7881
7882/// Proto definition based on the Thread_v2 CSwitch class definition
7883/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
7884#[derive(Clone, PartialEq, ::prost::Message)]
7885pub struct CSwitchEtwEvent {
7886    /// New thread ID after the switch.
7887    #[prost(uint32, optional, tag="1")]
7888    pub new_thread_id: ::core::option::Option<u32>,
7889    /// Previous thread ID.
7890    #[prost(uint32, optional, tag="2")]
7891    pub old_thread_id: ::core::option::Option<u32>,
7892    /// Thread priority of the new thread.
7893    #[prost(sint32, optional, tag="3")]
7894    pub new_thread_priority: ::core::option::Option<i32>,
7895    /// Thread priority of the previous thread.
7896    #[prost(sint32, optional, tag="4")]
7897    pub old_thread_priority: ::core::option::Option<i32>,
7898    /// The index of the C-state that was last used by the processor. A value of 0
7899    /// represents the lightest idle state with higher values representing deeper
7900    /// C-states.
7901    #[prost(uint32, optional, tag="5")]
7902    pub previous_c_state: ::core::option::Option<u32>,
7903    /// Ideal wait time of the previous thread.
7904    #[prost(sint32, optional, tag="9")]
7905    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
7906    /// Wait time for the new thread.
7907    #[prost(uint32, optional, tag="10")]
7908    pub new_thread_wait_time: ::core::option::Option<u32>,
7909    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
7910    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
7911    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
7912    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
7913    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
7914    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
7915}
7916/// Nested message and enum types in `CSwitchEtwEvent`.
7917pub mod c_switch_etw_event {
7918    /// Wait reason for the previous thread. The ordering is important as based on
7919    /// the OldThreadWaitReason definition from the link above. The following are
7920    /// the possible values:
7921    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7922    #[repr(i32)]
7923    pub enum OldThreadWaitReason {
7924        Executive = 0,
7925        FreePage = 1,
7926        PageIn = 2,
7927        PoolAllocation = 3,
7928        DelayExecution = 4,
7929        Suspend = 5,
7930        UserRequest = 6,
7931        WrExecutive = 7,
7932        WrFreePage = 8,
7933        WrPageIn = 9,
7934        WrPoolAllocation = 10,
7935        WrDelayExecution = 11,
7936        WrSuspended = 12,
7937        WrUserRequest = 13,
7938        WrEventPair = 14,
7939        WrQueue = 15,
7940        WrLpcReceiver = 16,
7941        WrLpcReply = 17,
7942        WrVirtualMemory = 18,
7943        WrPageOut = 19,
7944        WrRendezVous = 20,
7945        WrKeyedEvent = 21,
7946        WrTerminated = 22,
7947        WrProcessInSwap = 23,
7948        WrCpuRateControl = 24,
7949        WrCalloutStack = 25,
7950        WrKernel = 26,
7951        WrResource = 27,
7952        WrPushLock = 28,
7953        WrMutex = 29,
7954        WrQuantumEnd = 30,
7955        WrDispatchInt = 31,
7956        WrPreempted = 32,
7957        WrYieldExecution = 33,
7958        WrFastMutex = 34,
7959        WrGuardMutex = 35,
7960        WrRundown = 36,
7961        MaximumWaitReason = 37,
7962    }
7963    impl OldThreadWaitReason {
7964        /// String value of the enum field names used in the ProtoBuf definition.
7965        ///
7966        /// The values are not transformed in any way and thus are considered stable
7967        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7968        pub fn as_str_name(&self) -> &'static str {
7969            match self {
7970                OldThreadWaitReason::Executive => "EXECUTIVE",
7971                OldThreadWaitReason::FreePage => "FREE_PAGE",
7972                OldThreadWaitReason::PageIn => "PAGE_IN",
7973                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
7974                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
7975                OldThreadWaitReason::Suspend => "SUSPEND",
7976                OldThreadWaitReason::UserRequest => "USER_REQUEST",
7977                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
7978                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
7979                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
7980                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
7981                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
7982                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
7983                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
7984                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
7985                OldThreadWaitReason::WrQueue => "WR_QUEUE",
7986                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
7987                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
7988                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
7989                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
7990                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
7991                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
7992                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
7993                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
7994                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
7995                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
7996                OldThreadWaitReason::WrKernel => "WR_KERNEL",
7997                OldThreadWaitReason::WrResource => "WR_RESOURCE",
7998                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
7999                OldThreadWaitReason::WrMutex => "WR_MUTEX",
8000                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
8001                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
8002                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
8003                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
8004                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
8005                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
8006                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
8007                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8008            }
8009        }
8010    }
8011    /// Wait mode for the previous thread. The ordering is important as based on
8012    /// the OldThreadWaitMode definition from the link above. The following are the
8013    /// possible values:
8014    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8015    #[repr(i32)]
8016    pub enum OldThreadWaitMode {
8017        KernelMode = 0,
8018        UserMode = 1,
8019    }
8020    impl OldThreadWaitMode {
8021        /// String value of the enum field names used in the ProtoBuf definition.
8022        ///
8023        /// The values are not transformed in any way and thus are considered stable
8024        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8025        pub fn as_str_name(&self) -> &'static str {
8026            match self {
8027                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
8028                OldThreadWaitMode::UserMode => "USER_MODE",
8029            }
8030        }
8031    }
8032    /// State of the previous thread. The ordering is important as based on the
8033    /// OldThreadState definition from the link above. The following are the
8034    /// possible state values:
8035    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8036    #[repr(i32)]
8037    pub enum OldThreadState {
8038        Initialized = 0,
8039        Ready = 1,
8040        Running = 2,
8041        Standby = 3,
8042        Terminated = 4,
8043        Waiting = 5,
8044        Transition = 6,
8045        DeferredReady = 7,
8046    }
8047    impl OldThreadState {
8048        /// String value of the enum field names used in the ProtoBuf definition.
8049        ///
8050        /// The values are not transformed in any way and thus are considered stable
8051        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8052        pub fn as_str_name(&self) -> &'static str {
8053            match self {
8054                OldThreadState::Initialized => "INITIALIZED",
8055                OldThreadState::Ready => "READY",
8056                OldThreadState::Running => "RUNNING",
8057                OldThreadState::Standby => "STANDBY",
8058                OldThreadState::Terminated => "TERMINATED",
8059                OldThreadState::Waiting => "WAITING",
8060                OldThreadState::Transition => "TRANSITION",
8061                OldThreadState::DeferredReady => "DEFERRED_READY",
8062            }
8063        }
8064    }
8065    #[derive(Clone, PartialEq, ::prost::Oneof)]
8066    pub enum OldThreadWaitReasonEnumOrInt {
8067        #[prost(enumeration="OldThreadWaitReason", tag="6")]
8068        OldThreadWaitReason(i32),
8069        #[prost(int32, tag="11")]
8070        OldThreadWaitReasonInt(i32),
8071    }
8072    #[derive(Clone, PartialEq, ::prost::Oneof)]
8073    pub enum OldThreadWaitModeEnumOrInt {
8074        #[prost(enumeration="OldThreadWaitMode", tag="7")]
8075        OldThreadWaitMode(i32),
8076        #[prost(int32, tag="12")]
8077        OldThreadWaitModeInt(i32),
8078    }
8079    #[derive(Clone, PartialEq, ::prost::Oneof)]
8080    pub enum OldThreadStateEnumOrInt {
8081        #[prost(enumeration="OldThreadState", tag="8")]
8082        OldThreadState(i32),
8083        #[prost(sint32, tag="13")]
8084        OldThreadStateInt(i32),
8085    }
8086}
8087/// Proto definition based on the Thread_v2 CSwitch class definition
8088/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8089#[derive(Clone, PartialEq, ::prost::Message)]
8090pub struct ReadyThreadEtwEvent {
8091    /// The thread identifier of the thread being readied for execution.
8092    #[prost(uint32, optional, tag="1")]
8093    pub t_thread_id: ::core::option::Option<u32>,
8094    ///   The value by which the priority is being adjusted.
8095    #[prost(sint32, optional, tag="3")]
8096    pub adjust_increment: ::core::option::Option<i32>,
8097    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
8098    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
8099    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
8100    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8101}
8102/// Nested message and enum types in `ReadyThreadEtwEvent`.
8103pub mod ready_thread_etw_event {
8104    /// The reason for the priority boost. The ordering is important as based on
8105    /// the AdjustReason definition from the link above.
8106    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8107    #[repr(i32)]
8108    pub enum AdjustReason {
8109        IgnoreTheIncrement = 0,
8110        /// Apply the increment, which will decay incrementally at the end of each
8111        /// quantum.
8112        ApplyIncrement = 1,
8113        /// Apply the increment as a boost that will decay in its entirety at quantum
8114        /// (typically for priority donation).
8115        ApplyIncrementBoost = 2,
8116    }
8117    impl AdjustReason {
8118        /// String value of the enum field names used in the ProtoBuf definition.
8119        ///
8120        /// The values are not transformed in any way and thus are considered stable
8121        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8122        pub fn as_str_name(&self) -> &'static str {
8123            match self {
8124                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8125                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
8126                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8127            }
8128        }
8129    }
8130    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8131    #[repr(i32)]
8132    pub enum TraceFlag {
8133        Unspecified = 0,
8134        /// The thread has been readied from DPC (deferred procedure call).
8135        ThreadReadied = 1,
8136        /// The kernel stack is currently swapped out.
8137        KernelStackSwappedOut = 2,
8138        /// The process address space is swapped out.
8139        ProcessAddressSwappedOut = 4,
8140    }
8141    impl TraceFlag {
8142        /// String value of the enum field names used in the ProtoBuf definition.
8143        ///
8144        /// The values are not transformed in any way and thus are considered stable
8145        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8146        pub fn as_str_name(&self) -> &'static str {
8147            match self {
8148                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8149                TraceFlag::ThreadReadied => "THREAD_READIED",
8150                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8151                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8152            }
8153        }
8154    }
8155    #[derive(Clone, PartialEq, ::prost::Oneof)]
8156    pub enum AdjustReasonEnumOrInt {
8157        #[prost(enumeration="AdjustReason", tag="2")]
8158        AdjustReason(i32),
8159        #[prost(int32, tag="5")]
8160        AdjustReasonInt(i32),
8161    }
8162    #[derive(Clone, PartialEq, ::prost::Oneof)]
8163    pub enum FlagEnumOrInt {
8164        #[prost(enumeration="TraceFlag", tag="4")]
8165        Flag(i32),
8166        #[prost(int32, tag="6")]
8167        FlagInt(i32),
8168    }
8169}
8170/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8171/// on local traces using tracerpt:
8172/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8173#[derive(Clone, PartialEq, ::prost::Message)]
8174pub struct MemInfoEtwEvent {
8175    /// Number of memory priorities on the system.
8176    #[prost(uint32, optional, tag="1")]
8177    pub priority_levels: ::core::option::Option<u32>,
8178    /// Number of pages in the zero list.
8179    #[prost(uint64, optional, tag="2")]
8180    pub zero_page_count: ::core::option::Option<u64>,
8181    /// Number of pages in the free list.
8182    #[prost(uint64, optional, tag="3")]
8183    pub free_page_count: ::core::option::Option<u64>,
8184    /// Number of pages in the modified list.
8185    #[prost(uint64, optional, tag="4")]
8186    pub modified_page_count: ::core::option::Option<u64>,
8187    /// Number of modified non-paged pool pages.
8188    #[prost(uint64, optional, tag="5")]
8189    pub modified_no_write_page_count: ::core::option::Option<u64>,
8190    /// Number of bad pages.
8191    #[prost(uint64, optional, tag="6")]
8192    pub bad_page_count: ::core::option::Option<u64>,
8193    /// Number of standby pages by memory priority.
8194    #[prost(uint64, repeated, packed="false", tag="7")]
8195    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8196    /// Number of repurposed pages by memory priority.
8197    #[prost(uint64, repeated, packed="false", tag="8")]
8198    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
8199    /// Modified paged pages.
8200    #[prost(uint64, optional, tag="9")]
8201    pub modified_page_count_page_file: ::core::option::Option<u64>,
8202    /// Pool page counts.
8203    #[prost(uint64, optional, tag="10")]
8204    pub paged_pool_page_count: ::core::option::Option<u64>,
8205    #[prost(uint64, optional, tag="11")]
8206    pub non_paged_pool_page_count: ::core::option::Option<u64>,
8207    /// Memory Descriptor List page count.
8208    #[prost(uint64, optional, tag="12")]
8209    pub mdl_page_count: ::core::option::Option<u64>,
8210    /// Commit weight.
8211    #[prost(uint64, optional, tag="13")]
8212    pub commit_page_count: ::core::option::Option<u64>,
8213}
8214/// Proto definition based on the `FileIo_Create` class definition.
8215#[derive(Clone, PartialEq, ::prost::Message)]
8216pub struct FileIoCreateEtwEvent {
8217    #[prost(uint64, optional, tag="1")]
8218    pub irp_ptr: ::core::option::Option<u64>,
8219    #[prost(uint64, optional, tag="2")]
8220    pub file_object: ::core::option::Option<u64>,
8221    #[prost(uint32, optional, tag="3")]
8222    pub ttid: ::core::option::Option<u32>,
8223    #[prost(uint32, optional, tag="4")]
8224    pub create_options: ::core::option::Option<u32>,
8225    #[prost(uint32, optional, tag="5")]
8226    pub file_attributes: ::core::option::Option<u32>,
8227    #[prost(uint32, optional, tag="6")]
8228    pub share_access: ::core::option::Option<u32>,
8229    #[prost(string, optional, tag="7")]
8230    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
8231}
8232/// Proto definition based on the `FileIo_DirEnum` class definition.
8233#[derive(Clone, PartialEq, ::prost::Message)]
8234pub struct FileIoDirEnumEtwEvent {
8235    #[prost(uint64, optional, tag="1")]
8236    pub irp_ptr: ::core::option::Option<u64>,
8237    #[prost(uint64, optional, tag="2")]
8238    pub file_object: ::core::option::Option<u64>,
8239    #[prost(uint64, optional, tag="3")]
8240    pub file_key: ::core::option::Option<u64>,
8241    #[prost(uint32, optional, tag="4")]
8242    pub ttid: ::core::option::Option<u32>,
8243    #[prost(uint32, optional, tag="5")]
8244    pub length: ::core::option::Option<u32>,
8245    #[prost(uint32, optional, tag="6")]
8246    pub info_class: ::core::option::Option<u32>,
8247    #[prost(uint32, optional, tag="7")]
8248    pub file_index: ::core::option::Option<u32>,
8249    #[prost(string, optional, tag="8")]
8250    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8251    #[prost(uint32, optional, tag="9")]
8252    pub opcode: ::core::option::Option<u32>,
8253}
8254/// Proto definition based on the `FileIo_Info` class definition.
8255#[derive(Clone, PartialEq, ::prost::Message)]
8256pub struct FileIoInfoEtwEvent {
8257    #[prost(uint64, optional, tag="1")]
8258    pub irp_ptr: ::core::option::Option<u64>,
8259    #[prost(uint64, optional, tag="2")]
8260    pub file_object: ::core::option::Option<u64>,
8261    #[prost(uint64, optional, tag="3")]
8262    pub file_key: ::core::option::Option<u64>,
8263    #[prost(uint64, optional, tag="4")]
8264    pub extra_info: ::core::option::Option<u64>,
8265    #[prost(uint32, optional, tag="5")]
8266    pub ttid: ::core::option::Option<u32>,
8267    #[prost(uint32, optional, tag="6")]
8268    pub info_class: ::core::option::Option<u32>,
8269    #[prost(uint32, optional, tag="7")]
8270    pub opcode: ::core::option::Option<u32>,
8271}
8272/// Proto definition based on the `FileIo_ReadWrite` class definition.
8273#[derive(Clone, PartialEq, ::prost::Message)]
8274pub struct FileIoReadWriteEtwEvent {
8275    #[prost(uint64, optional, tag="1")]
8276    pub offset: ::core::option::Option<u64>,
8277    #[prost(uint64, optional, tag="2")]
8278    pub irp_ptr: ::core::option::Option<u64>,
8279    #[prost(uint64, optional, tag="3")]
8280    pub file_object: ::core::option::Option<u64>,
8281    #[prost(uint64, optional, tag="4")]
8282    pub file_key: ::core::option::Option<u64>,
8283    #[prost(uint32, optional, tag="5")]
8284    pub ttid: ::core::option::Option<u32>,
8285    #[prost(uint32, optional, tag="6")]
8286    pub io_size: ::core::option::Option<u32>,
8287    #[prost(uint32, optional, tag="7")]
8288    pub io_flags: ::core::option::Option<u32>,
8289    #[prost(uint32, optional, tag="8")]
8290    pub opcode: ::core::option::Option<u32>,
8291}
8292/// Proto definition based on the `FileIo_SimpleOp` class definition.
8293#[derive(Clone, PartialEq, ::prost::Message)]
8294pub struct FileIoSimpleOpEtwEvent {
8295    #[prost(uint64, optional, tag="1")]
8296    pub irp_ptr: ::core::option::Option<u64>,
8297    #[prost(uint64, optional, tag="2")]
8298    pub file_object: ::core::option::Option<u64>,
8299    #[prost(uint64, optional, tag="3")]
8300    pub file_key: ::core::option::Option<u64>,
8301    #[prost(uint32, optional, tag="4")]
8302    pub ttid: ::core::option::Option<u32>,
8303    #[prost(uint32, optional, tag="5")]
8304    pub opcode: ::core::option::Option<u32>,
8305}
8306/// Proto definition based on the `FileIo_OpEnd` class definition.
8307#[derive(Clone, PartialEq, ::prost::Message)]
8308pub struct FileIoOpEndEtwEvent {
8309    #[prost(uint64, optional, tag="1")]
8310    pub irp_ptr: ::core::option::Option<u64>,
8311    #[prost(uint64, optional, tag="2")]
8312    pub extra_info: ::core::option::Option<u64>,
8313    #[prost(uint32, optional, tag="3")]
8314    pub nt_status: ::core::option::Option<u32>,
8315}
8316/// Proto definition based on the `FileIo_PathOperation` class definition.
8317#[derive(Clone, PartialEq, ::prost::Message)]
8318pub struct FileIoPathOperationEtwEvent {
8319    #[prost(uint64, optional, tag="1")]
8320    pub irp_ptr: ::core::option::Option<u64>,
8321    #[prost(uint64, optional, tag="2")]
8322    pub file_object: ::core::option::Option<u64>,
8323    #[prost(uint64, optional, tag="3")]
8324    pub file_key: ::core::option::Option<u64>,
8325    #[prost(uint64, optional, tag="4")]
8326    pub extra_info: ::core::option::Option<u64>,
8327    #[prost(uint32, optional, tag="5")]
8328    pub ttid: ::core::option::Option<u32>,
8329    #[prost(uint32, optional, tag="6")]
8330    pub info_class: ::core::option::Option<u32>,
8331    #[prost(string, optional, tag="7")]
8332    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8333    #[prost(uint32, optional, tag="8")]
8334    pub opcode: ::core::option::Option<u32>,
8335}
8336/// Proto definition based on the `StackWalk_Event` class definition. See
8337/// `Callstack` in `perfetto/protos/perfetto/trace/track_event/track_event.proto`
8338/// for context on what is contained in it.
8339#[derive(Clone, PartialEq, ::prost::Message)]
8340pub struct StackWalkEtwEvent {
8341    #[prost(string, optional, tag="1")]
8342    pub trigger: ::core::option::Option<::prost::alloc::string::String>,
8343    #[prost(uint64, optional, tag="2")]
8344    pub callstack_iid: ::core::option::Option<u64>,
8345}
8346/// Proto definition based on the `DiskIo_TypeGroup1/2/3` class definitions.
8347#[derive(Clone, PartialEq, ::prost::Message)]
8348pub struct DiskIoEtwEvent {
8349    #[prost(uint32, optional, tag="1")]
8350    pub disk_number: ::core::option::Option<u32>,
8351    #[prost(uint32, optional, tag="2")]
8352    pub irp_flags: ::core::option::Option<u32>,
8353    #[prost(uint32, optional, tag="3")]
8354    pub transfer_size: ::core::option::Option<u32>,
8355    #[prost(int64, optional, tag="4")]
8356    pub byte_offset: ::core::option::Option<i64>,
8357    #[prost(uint64, optional, tag="5")]
8358    pub file_object: ::core::option::Option<u64>,
8359    #[prost(uint64, optional, tag="6")]
8360    pub irp_ptr: ::core::option::Option<u64>,
8361    #[prost(int64, optional, tag="7")]
8362    pub response_time: ::core::option::Option<i64>,
8363    #[prost(uint32, optional, tag="8")]
8364    pub issuing_thread_id: ::core::option::Option<u32>,
8365    #[prost(uint32, optional, tag="9")]
8366    pub opcode: ::core::option::Option<u32>,
8367}
8368// End of protos/perfetto/trace/etw/etw.proto
8369
8370// Begin of protos/perfetto/trace/etw/etw_event.proto
8371
8372#[derive(Clone, PartialEq, ::prost::Message)]
8373pub struct EtwTraceEvent {
8374    #[prost(uint64, optional, tag="1")]
8375    pub timestamp: ::core::option::Option<u64>,
8376    #[prost(uint32, optional, tag="4")]
8377    pub cpu: ::core::option::Option<u32>,
8378    #[prost(uint32, optional, tag="5")]
8379    pub thread_id: ::core::option::Option<u32>,
8380    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15")]
8381    pub event: ::core::option::Option<etw_trace_event::Event>,
8382}
8383/// Nested message and enum types in `EtwTraceEvent`.
8384pub mod etw_trace_event {
8385    #[derive(Clone, PartialEq, ::prost::Oneof)]
8386    pub enum Event {
8387        #[prost(message, tag="2")]
8388        CSwitch(super::CSwitchEtwEvent),
8389        #[prost(message, tag="3")]
8390        ReadyThread(super::ReadyThreadEtwEvent),
8391        #[prost(message, tag="6")]
8392        MemInfo(super::MemInfoEtwEvent),
8393        #[prost(message, tag="7")]
8394        FileIoCreate(super::FileIoCreateEtwEvent),
8395        #[prost(message, tag="8")]
8396        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
8397        #[prost(message, tag="9")]
8398        FileIoInfo(super::FileIoInfoEtwEvent),
8399        #[prost(message, tag="10")]
8400        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
8401        #[prost(message, tag="11")]
8402        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
8403        #[prost(message, tag="12")]
8404        FileIoOpEnd(super::FileIoOpEndEtwEvent),
8405        #[prost(message, tag="13")]
8406        StackWalk(super::StackWalkEtwEvent),
8407        #[prost(message, tag="14")]
8408        FileIoPathOperation(super::FileIoPathOperationEtwEvent),
8409        #[prost(message, tag="15")]
8410        DiskIo(super::DiskIoEtwEvent),
8411    }
8412}
8413// End of protos/perfetto/trace/etw/etw_event.proto
8414
8415// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
8416
8417/// The result of tracing one or more etw event uses per-processor buffers where
8418/// an in-use buffer is assigned to each processor at all times. Therefore,
8419/// collecting multiple events they should already be synchronized.
8420#[derive(Clone, PartialEq, ::prost::Message)]
8421pub struct EtwTraceEventBundle {
8422    #[prost(uint32, optional, tag="1")]
8423    pub cpu: ::core::option::Option<u32>,
8424    #[prost(message, repeated, tag="2")]
8425    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
8426}
8427// Begin of protos/perfetto/trace/evdev.proto
8428
8429/// Records an event in the evdev protocol, as used by Linux and some other *nix
8430/// kernels to report events from human interface devices.
8431///
8432/// Next ID: 5
8433#[derive(Clone, PartialEq, ::prost::Message)]
8434pub struct EvdevEvent {
8435    /// The device's unique ID number. This need not be the number of its
8436    /// /dev/input/event node.
8437    #[prost(uint32, optional, tag="1")]
8438    pub device_id: ::core::option::Option<u32>,
8439    #[prost(oneof="evdev_event::Event", tags="2, 3, 4")]
8440    pub event: ::core::option::Option<evdev_event::Event>,
8441}
8442/// Nested message and enum types in `EvdevEvent`.
8443pub mod evdev_event {
8444    /// Proto version of Linux's struct input_event. The meaning of types and codes
8445    /// are described in the Linux kernel documentation at
8446    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
8447    ///
8448    /// Next ID: 5
8449    #[derive(Clone, PartialEq, ::prost::Message)]
8450    pub struct InputEvent {
8451        /// The monotonic timestamp at which the event occurred, as reported by the
8452        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
8453        /// since the previous event.
8454        #[prost(uint64, optional, tag="1")]
8455        pub kernel_timestamp: ::core::option::Option<u64>,
8456        /// The code grouping for this event, used to distinguish signals, absolute
8457        /// and relative axis changes, and other types of event.
8458        #[prost(uint32, optional, tag="2")]
8459        pub r#type: ::core::option::Option<u32>,
8460        /// The precise type of the event, such as the axis code for absolute and
8461        /// relative events.
8462        #[prost(uint32, optional, tag="3")]
8463        pub code: ::core::option::Option<u32>,
8464        /// The new value of the axis described by type and code.
8465        #[prost(sint32, optional, tag="4")]
8466        pub value: ::core::option::Option<i32>,
8467    }
8468    /// Describes an evdev device being added to the system.
8469    ///
8470    /// Next ID: 2
8471    #[derive(Clone, PartialEq, ::prost::Message)]
8472    pub struct DeviceAddition {
8473        #[prost(message, optional, tag="1")]
8474        pub device: ::core::option::Option<super::EvdevDevice>,
8475    }
8476    /// Describes an evdev device being removed from the system.
8477    ///
8478    /// Next ID: 1
8479    ///
8480    /// Empty — we don't need to record any data other than the device ID for
8481    /// this event type.
8482    #[derive(Clone, PartialEq, ::prost::Message)]
8483    pub struct DeviceRemoval {
8484    }
8485    #[derive(Clone, PartialEq, ::prost::Oneof)]
8486    pub enum Event {
8487        #[prost(message, tag="2")]
8488        InputEvent(InputEvent),
8489        #[prost(message, tag="3")]
8490        AddEvent(DeviceAddition),
8491        #[prost(message, tag="4")]
8492        RemoveEvent(DeviceRemoval),
8493    }
8494}
8495/// The properties of an input device that don't change during the time that it's
8496/// connected, as well as the current values for all of its axes.
8497///
8498/// Next ID: 13
8499#[derive(Clone, PartialEq, ::prost::Message)]
8500pub struct EvdevDevice {
8501    /// The device's unique ID number. This need not be the number of its
8502    /// /dev/input/event node.
8503    #[prost(uint32, optional, tag="1")]
8504    pub device_id: ::core::option::Option<u32>,
8505    /// The number of the evdev device (i.e. from its /dev/input/eventX node path).
8506    #[prost(uint32, optional, tag="2")]
8507    pub device_num: ::core::option::Option<u32>,
8508    /// The device's name.
8509    #[prost(string, optional, tag="3")]
8510    pub name: ::core::option::Option<::prost::alloc::string::String>,
8511    /// The physical path to the device in the system hierarchy.
8512    #[prost(string, optional, tag="4")]
8513    pub phys: ::core::option::Option<::prost::alloc::string::String>,
8514    /// The unique identification code for the device (if it has one).
8515    #[prost(string, optional, tag="5")]
8516    pub uniq: ::core::option::Option<::prost::alloc::string::String>,
8517    /// The device's ID numbers.
8518    #[prost(message, optional, tag="6")]
8519    pub id: ::core::option::Option<evdev_device::Identifier>,
8520    /// A map of information for each of the device's absolute axes. Keys are the
8521    /// Linux ABS_* constants.
8522    #[prost(map="uint32, message", tag="7")]
8523    pub absolute_axis_infos: ::std::collections::HashMap<u32, evdev_device::AbsInfo>,
8524    /// Bitmask specifying which types of events the device declares.
8525    #[prost(bytes="vec", optional, tag="8")]
8526    pub ev_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8527    /// A map of bitmasks specifying which axes of each type the device declares.
8528    /// Keys are the Linux EV_* constants.
8529    #[prost(map="uint32, bytes", tag="9")]
8530    pub event_type_bitmasks: ::std::collections::HashMap<u32, ::prost::alloc::vec::Vec<u8>>,
8531    /// Bitmask of properties declared by the device.
8532    #[prost(bytes="vec", optional, tag="10")]
8533    pub prop_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8534    /// Current states of device axes.
8535    ///
8536    /// The keys are the Linux event type constants (e.g. EV_KEY, EV_ABS, etc.). We
8537    /// don't need to keep track of states for all axis types, only KEY, SW, LED,
8538    /// and ABS, so only those will have entries in this map. States for ABS_MT_*
8539    /// axes (which have multiple slots) will be kept in abs_mt_states instead.
8540    #[prost(map="uint32, message", tag="11")]
8541    pub axis_states: ::std::collections::HashMap<u32, evdev_device::AxisMap>,
8542    /// Current states of ABS_MT_* axes other than ABS_MT_SLOT. The keys are the
8543    /// ABS axis codes.
8544    #[prost(map="uint32, message", tag="12")]
8545    pub abs_mt_states: ::std::collections::HashMap<u32, evdev_device::SlotValuesMap>,
8546}
8547/// Nested message and enum types in `EvdevDevice`.
8548pub mod evdev_device {
8549    /// Proto version of Linux's struct input_id. Although uint32s are used for the
8550    /// fields, the kernel uses 16-bit ints so values will be less than 2^16.
8551    ///
8552    /// Next ID: 5
8553    #[derive(Clone, PartialEq, ::prost::Message)]
8554    pub struct Identifier {
8555        /// The bus that the device is connected to. Values will be one of Linux's
8556        /// BUS_* constants.
8557        #[prost(uint32, optional, tag="1")]
8558        pub bustype: ::core::option::Option<u32>,
8559        /// A number identifying the vendor of the device. Often a USB or Bluetooth
8560        /// vendor ID, but not always.
8561        #[prost(uint32, optional, tag="2")]
8562        pub vendor: ::core::option::Option<u32>,
8563        #[prost(uint32, optional, tag="3")]
8564        pub product: ::core::option::Option<u32>,
8565        #[prost(uint32, optional, tag="4")]
8566        pub version: ::core::option::Option<u32>,
8567    }
8568    /// Proto version of Linux's struct input_absinfo, excluding the value field
8569    /// (which is tracked elsewhere).
8570    ///
8571    /// Next ID: 6
8572    #[derive(Clone, PartialEq, ::prost::Message)]
8573    pub struct AbsInfo {
8574        #[prost(sint32, optional, tag="1")]
8575        pub minimum: ::core::option::Option<i32>,
8576        #[prost(sint32, optional, tag="2")]
8577        pub maximum: ::core::option::Option<i32>,
8578        #[prost(int32, optional, tag="3")]
8579        pub fuzz: ::core::option::Option<i32>,
8580        #[prost(int32, optional, tag="4")]
8581        pub flat: ::core::option::Option<i32>,
8582        #[prost(int32, optional, tag="5")]
8583        pub resolution: ::core::option::Option<i32>,
8584    }
8585    /// Contains the current values of all axes of a particular type (e.g. EV_ABS,
8586    /// EV_KEY, etc.).
8587    ///
8588    /// Next ID: 2
8589    #[derive(Clone, PartialEq, ::prost::Message)]
8590    pub struct AxisMap {
8591        /// Current values of all axes, other than ABS_MT_* axes (which have multiple
8592        /// slots), which are kept in abs_mt_states instead.
8593        ///
8594        /// The keys are the Linux axis codes, e.g. ABS_* for absolute axes. If there
8595        /// is no entry for a particular axis, assume that its value is 0.
8596        #[prost(map="uint32, sint32", tag="1")]
8597        pub axis_states: ::std::collections::HashMap<u32, i32>,
8598    }
8599    /// Contains the current values of a single ABS_MT_* axis across all of its
8600    /// slots.
8601    ///
8602    /// Next ID: 2
8603    #[derive(Clone, PartialEq, ::prost::Message)]
8604    pub struct SlotValuesMap {
8605        /// Current values for all slots.
8606        ///
8607        /// The keys are the slot numbers. If there is no entry for a particular
8608        /// slot, assume that its value is 0.
8609        #[prost(map="uint32, sint32", tag="1")]
8610        pub slot_values: ::std::collections::HashMap<u32, i32>,
8611    }
8612}
8613// End of protos/perfetto/trace/evdev.proto
8614
8615// Begin of protos/perfetto/common/descriptor.proto
8616
8617/// The protocol compiler can output a FileDescriptorSet containing the .proto
8618/// files it parses.
8619#[derive(Clone, PartialEq, ::prost::Message)]
8620pub struct FileDescriptorSet {
8621    #[prost(message, repeated, tag="1")]
8622    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
8623}
8624/// Describes a complete .proto file.
8625#[derive(Clone, PartialEq, ::prost::Message)]
8626pub struct FileDescriptorProto {
8627    /// file name, relative to root of source tree
8628    #[prost(string, optional, tag="1")]
8629    pub name: ::core::option::Option<::prost::alloc::string::String>,
8630    /// e.g. "foo", "foo.bar", etc.
8631    #[prost(string, optional, tag="2")]
8632    pub package: ::core::option::Option<::prost::alloc::string::String>,
8633    /// Names of files imported by this file.
8634    #[prost(string, repeated, tag="3")]
8635    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8636    /// Indexes of the public imported files in the dependency list above.
8637    #[prost(int32, repeated, packed="false", tag="10")]
8638    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
8639    /// Indexes of the weak imported files in the dependency list.
8640    /// For Google-internal migration only. Do not use.
8641    #[prost(int32, repeated, packed="false", tag="11")]
8642    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
8643    /// All top-level definitions in this file.
8644    #[prost(message, repeated, tag="4")]
8645    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8646    #[prost(message, repeated, tag="5")]
8647    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8648    #[prost(message, repeated, tag="7")]
8649    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8650}
8651/// Describes a message type.
8652#[derive(Clone, PartialEq, ::prost::Message)]
8653pub struct DescriptorProto {
8654    #[prost(string, optional, tag="1")]
8655    pub name: ::core::option::Option<::prost::alloc::string::String>,
8656    #[prost(message, repeated, tag="2")]
8657    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8658    #[prost(message, repeated, tag="6")]
8659    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8660    #[prost(message, repeated, tag="3")]
8661    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8662    #[prost(message, repeated, tag="4")]
8663    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8664    #[prost(message, repeated, tag="8")]
8665    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
8666    #[prost(message, repeated, tag="9")]
8667    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
8668    /// Reserved field names, which may not be used by fields in the same message.
8669    /// A given name may only be reserved once.
8670    #[prost(string, repeated, tag="10")]
8671    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8672}
8673/// Nested message and enum types in `DescriptorProto`.
8674pub mod descriptor_proto {
8675    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
8676    /// fields or extension ranges in the same message. Reserved ranges may
8677    /// not overlap.
8678    #[derive(Clone, PartialEq, ::prost::Message)]
8679    pub struct ReservedRange {
8680        /// Inclusive.
8681        #[prost(int32, optional, tag="1")]
8682        pub start: ::core::option::Option<i32>,
8683        /// Exclusive.
8684        #[prost(int32, optional, tag="2")]
8685        pub end: ::core::option::Option<i32>,
8686    }
8687}
8688/// A message representing a option the parser does not recognize. This only
8689/// appears in options protos created by the compiler::Parser class.
8690/// DescriptorPool resolves these when building Descriptor objects. Therefore,
8691/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
8692/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
8693/// in them.
8694#[derive(Clone, PartialEq, ::prost::Message)]
8695pub struct UninterpretedOption {
8696    #[prost(message, repeated, tag="2")]
8697    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
8698    /// The value of the uninterpreted option, in whatever type the tokenizer
8699    /// identified it as during parsing. Exactly one of these should be set.
8700    #[prost(string, optional, tag="3")]
8701    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
8702    #[prost(uint64, optional, tag="4")]
8703    pub positive_int_value: ::core::option::Option<u64>,
8704    #[prost(int64, optional, tag="5")]
8705    pub negative_int_value: ::core::option::Option<i64>,
8706    #[prost(double, optional, tag="6")]
8707    pub double_value: ::core::option::Option<f64>,
8708    #[prost(bytes="vec", optional, tag="7")]
8709    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8710    #[prost(string, optional, tag="8")]
8711    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
8712}
8713/// Nested message and enum types in `UninterpretedOption`.
8714pub mod uninterpreted_option {
8715    /// The name of the uninterpreted option.  Each string represents a segment in
8716    /// a dot-separated name.  is_extension is true iff a segment represents an
8717    /// extension (denoted with parentheses in options specs in .proto files).
8718    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
8719    /// "foo.(bar.baz).moo".
8720    #[derive(Clone, PartialEq, ::prost::Message)]
8721    pub struct NamePart {
8722        #[prost(string, optional, tag="1")]
8723        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
8724        #[prost(bool, optional, tag="2")]
8725        pub is_extension: ::core::option::Option<bool>,
8726    }
8727}
8728#[derive(Clone, PartialEq, ::prost::Message)]
8729pub struct FieldOptions {
8730    /// The packed option can be enabled for repeated primitive fields to enable
8731    /// a more efficient representation on the wire. Rather than repeatedly
8732    /// writing the tag and type for each element, the entire array is encoded as
8733    /// a single length-delimited blob. In proto3, only explicit setting it to
8734    /// false will avoid using packed encoding.
8735    #[prost(bool, optional, tag="2")]
8736    pub packed: ::core::option::Option<bool>,
8737    /// The parser stores options it doesn't recognize here. See above.
8738    #[prost(message, repeated, tag="999")]
8739    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
8740}
8741/// Describes a field within a message.
8742#[derive(Clone, PartialEq, ::prost::Message)]
8743pub struct FieldDescriptorProto {
8744    #[prost(string, optional, tag="1")]
8745    pub name: ::core::option::Option<::prost::alloc::string::String>,
8746    #[prost(int32, optional, tag="3")]
8747    pub number: ::core::option::Option<i32>,
8748    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
8749    pub label: ::core::option::Option<i32>,
8750    /// If type_name is set, this need not be set.  If both this and type_name
8751    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
8752    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
8753    pub r#type: ::core::option::Option<i32>,
8754    /// For message and enum types, this is the name of the type.  If the name
8755    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
8756    /// rules are used to find the type (i.e. first the nested types within this
8757    /// message are searched, then within the parent, on up to the root
8758    /// namespace).
8759    #[prost(string, optional, tag="6")]
8760    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
8761    /// For extensions, this is the name of the type being extended.  It is
8762    /// resolved in the same manner as type_name.
8763    #[prost(string, optional, tag="2")]
8764    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
8765    /// For numeric types, contains the original text representation of the value.
8766    /// For booleans, "true" or "false".
8767    /// For strings, contains the default text contents (not escaped in any way).
8768    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
8769    /// TODO(kenton):  Base-64 encode?
8770    #[prost(string, optional, tag="7")]
8771    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
8772    #[prost(message, optional, tag="8")]
8773    pub options: ::core::option::Option<FieldOptions>,
8774    /// If set, gives the index of a oneof in the containing type's oneof_decl
8775    /// list.  This field is a member of that oneof.
8776    #[prost(int32, optional, tag="9")]
8777    pub oneof_index: ::core::option::Option<i32>,
8778}
8779/// Nested message and enum types in `FieldDescriptorProto`.
8780pub mod field_descriptor_proto {
8781    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8782    #[repr(i32)]
8783    pub enum Type {
8784        /// 0 is reserved for errors.
8785        /// Order is weird for historical reasons.
8786        Double = 1,
8787        Float = 2,
8788        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
8789        /// negative values are likely.
8790        Int64 = 3,
8791        Uint64 = 4,
8792        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
8793        /// negative values are likely.
8794        Int32 = 5,
8795        Fixed64 = 6,
8796        Fixed32 = 7,
8797        Bool = 8,
8798        String = 9,
8799        /// Tag-delimited aggregate.
8800        /// Group type is deprecated and not supported in proto3. However, Proto3
8801        /// implementations should still be able to parse the group wire format and
8802        /// treat group fields as unknown fields.
8803        Group = 10,
8804        /// Length-delimited aggregate.
8805        Message = 11,
8806        /// New in version 2.
8807        Bytes = 12,
8808        Uint32 = 13,
8809        Enum = 14,
8810        Sfixed32 = 15,
8811        Sfixed64 = 16,
8812        /// Uses ZigZag encoding.
8813        Sint32 = 17,
8814        /// Uses ZigZag encoding.
8815        Sint64 = 18,
8816    }
8817    impl Type {
8818        /// String value of the enum field names used in the ProtoBuf definition.
8819        ///
8820        /// The values are not transformed in any way and thus are considered stable
8821        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8822        pub fn as_str_name(&self) -> &'static str {
8823            match self {
8824                Type::Double => "TYPE_DOUBLE",
8825                Type::Float => "TYPE_FLOAT",
8826                Type::Int64 => "TYPE_INT64",
8827                Type::Uint64 => "TYPE_UINT64",
8828                Type::Int32 => "TYPE_INT32",
8829                Type::Fixed64 => "TYPE_FIXED64",
8830                Type::Fixed32 => "TYPE_FIXED32",
8831                Type::Bool => "TYPE_BOOL",
8832                Type::String => "TYPE_STRING",
8833                Type::Group => "TYPE_GROUP",
8834                Type::Message => "TYPE_MESSAGE",
8835                Type::Bytes => "TYPE_BYTES",
8836                Type::Uint32 => "TYPE_UINT32",
8837                Type::Enum => "TYPE_ENUM",
8838                Type::Sfixed32 => "TYPE_SFIXED32",
8839                Type::Sfixed64 => "TYPE_SFIXED64",
8840                Type::Sint32 => "TYPE_SINT32",
8841                Type::Sint64 => "TYPE_SINT64",
8842            }
8843        }
8844    }
8845    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8846    #[repr(i32)]
8847    pub enum Label {
8848        /// 0 is reserved for errors
8849        Optional = 1,
8850        Required = 2,
8851        Repeated = 3,
8852    }
8853    impl Label {
8854        /// String value of the enum field names used in the ProtoBuf definition.
8855        ///
8856        /// The values are not transformed in any way and thus are considered stable
8857        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8858        pub fn as_str_name(&self) -> &'static str {
8859            match self {
8860                Label::Optional => "LABEL_OPTIONAL",
8861                Label::Required => "LABEL_REQUIRED",
8862                Label::Repeated => "LABEL_REPEATED",
8863            }
8864        }
8865    }
8866}
8867/// Describes a oneof.
8868#[derive(Clone, PartialEq, ::prost::Message)]
8869pub struct OneofDescriptorProto {
8870    #[prost(string, optional, tag="1")]
8871    pub name: ::core::option::Option<::prost::alloc::string::String>,
8872    #[prost(message, optional, tag="2")]
8873    pub options: ::core::option::Option<OneofOptions>,
8874}
8875/// Describes an enum type.
8876#[derive(Clone, PartialEq, ::prost::Message)]
8877pub struct EnumDescriptorProto {
8878    #[prost(string, optional, tag="1")]
8879    pub name: ::core::option::Option<::prost::alloc::string::String>,
8880    #[prost(message, repeated, tag="2")]
8881    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
8882    /// Reserved enum value names, which may not be reused. A given name may only
8883    /// be reserved once.
8884    #[prost(string, repeated, tag="5")]
8885    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8886}
8887/// Describes a value within an enum.
8888#[derive(Clone, PartialEq, ::prost::Message)]
8889pub struct EnumValueDescriptorProto {
8890    #[prost(string, optional, tag="1")]
8891    pub name: ::core::option::Option<::prost::alloc::string::String>,
8892    #[prost(int32, optional, tag="2")]
8893    pub number: ::core::option::Option<i32>,
8894}
8895#[derive(Clone, PartialEq, ::prost::Message)]
8896pub struct OneofOptions {
8897}
8898// End of protos/perfetto/common/descriptor.proto
8899
8900// Begin of protos/perfetto/trace/extension_descriptor.proto
8901
8902/// This message contains descriptors used to parse extension fields of
8903/// TrackEvent.
8904///
8905/// See docs/instrumentation/extensions.md for more details.
8906#[derive(Clone, PartialEq, ::prost::Message)]
8907pub struct ExtensionDescriptor {
8908    /// Optional, for debugging only. The file name or path of the descriptor
8909    /// source. Can be omitted without affecting functionality.
8910    #[prost(string, optional, tag="3")]
8911    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8912    #[prost(oneof="extension_descriptor::Descriptor", tags="1, 2")]
8913    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
8914}
8915/// Nested message and enum types in `ExtensionDescriptor`.
8916pub mod extension_descriptor {
8917    #[derive(Clone, PartialEq, ::prost::Oneof)]
8918    pub enum Descriptor {
8919        #[prost(message, tag="1")]
8920        ExtensionSet(super::FileDescriptorSet),
8921        /// Same as extension_set, but gzip-compressed. This is used by the tracing
8922        /// service on Android to emit pre-compressed descriptor files from
8923        /// /etc/tracing_descriptors.gz without decompressing them first.
8924        #[prost(bytes, tag="2")]
8925        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
8926    }
8927}
8928// End of protos/perfetto/trace/extension_descriptor.proto
8929
8930// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
8931
8932/// Represents the mapping between inode numbers in a block device and their path
8933/// on the filesystem
8934#[derive(Clone, PartialEq, ::prost::Message)]
8935pub struct InodeFileMap {
8936    #[prost(uint64, optional, tag="1")]
8937    pub block_device_id: ::core::option::Option<u64>,
8938    /// The mount points of the block device, e.g. \["system"\].
8939    #[prost(string, repeated, tag="2")]
8940    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8941    /// The list of all the entries from the block device
8942    #[prost(message, repeated, tag="3")]
8943    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
8944}
8945/// Nested message and enum types in `InodeFileMap`.
8946pub mod inode_file_map {
8947    /// Representation of Entry
8948    #[derive(Clone, PartialEq, ::prost::Message)]
8949    pub struct Entry {
8950        #[prost(uint64, optional, tag="1")]
8951        pub inode_number: ::core::option::Option<u64>,
8952        /// The path to the file, e.g. "etc/file.xml"
8953        /// List of strings for multiple hardlinks
8954        #[prost(string, repeated, tag="2")]
8955        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8956        #[prost(enumeration="entry::Type", optional, tag="3")]
8957        pub r#type: ::core::option::Option<i32>,
8958    }
8959    /// Nested message and enum types in `Entry`.
8960    pub mod entry {
8961        /// The file type
8962        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8963        #[repr(i32)]
8964        pub enum Type {
8965            Unknown = 0,
8966            File = 1,
8967            Directory = 2,
8968        }
8969        impl Type {
8970            /// String value of the enum field names used in the ProtoBuf definition.
8971            ///
8972            /// The values are not transformed in any way and thus are considered stable
8973            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8974            pub fn as_str_name(&self) -> &'static str {
8975                match self {
8976                    Type::Unknown => "UNKNOWN",
8977                    Type::File => "FILE",
8978                    Type::Directory => "DIRECTORY",
8979                }
8980            }
8981        }
8982    }
8983}
8984// End of protos/perfetto/trace/filesystem/inode_file_map.proto
8985
8986// Begin of protos/perfetto/trace/ftrace/android_fs.proto
8987
8988#[derive(Clone, PartialEq, ::prost::Message)]
8989pub struct AndroidFsDatareadEndFtraceEvent {
8990    #[prost(int32, optional, tag="1")]
8991    pub bytes: ::core::option::Option<i32>,
8992    #[prost(uint64, optional, tag="2")]
8993    pub ino: ::core::option::Option<u64>,
8994    #[prost(int64, optional, tag="3")]
8995    pub offset: ::core::option::Option<i64>,
8996}
8997#[derive(Clone, PartialEq, ::prost::Message)]
8998pub struct AndroidFsDatareadStartFtraceEvent {
8999    #[prost(int32, optional, tag="1")]
9000    pub bytes: ::core::option::Option<i32>,
9001    #[prost(string, optional, tag="2")]
9002    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9003    #[prost(int64, optional, tag="3")]
9004    pub i_size: ::core::option::Option<i64>,
9005    #[prost(uint64, optional, tag="4")]
9006    pub ino: ::core::option::Option<u64>,
9007    #[prost(int64, optional, tag="5")]
9008    pub offset: ::core::option::Option<i64>,
9009    #[prost(string, optional, tag="6")]
9010    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9011    #[prost(int32, optional, tag="7")]
9012    pub pid: ::core::option::Option<i32>,
9013}
9014#[derive(Clone, PartialEq, ::prost::Message)]
9015pub struct AndroidFsDatawriteEndFtraceEvent {
9016    #[prost(int32, optional, tag="1")]
9017    pub bytes: ::core::option::Option<i32>,
9018    #[prost(uint64, optional, tag="2")]
9019    pub ino: ::core::option::Option<u64>,
9020    #[prost(int64, optional, tag="3")]
9021    pub offset: ::core::option::Option<i64>,
9022}
9023#[derive(Clone, PartialEq, ::prost::Message)]
9024pub struct AndroidFsDatawriteStartFtraceEvent {
9025    #[prost(int32, optional, tag="1")]
9026    pub bytes: ::core::option::Option<i32>,
9027    #[prost(string, optional, tag="2")]
9028    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9029    #[prost(int64, optional, tag="3")]
9030    pub i_size: ::core::option::Option<i64>,
9031    #[prost(uint64, optional, tag="4")]
9032    pub ino: ::core::option::Option<u64>,
9033    #[prost(int64, optional, tag="5")]
9034    pub offset: ::core::option::Option<i64>,
9035    #[prost(string, optional, tag="6")]
9036    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9037    #[prost(int32, optional, tag="7")]
9038    pub pid: ::core::option::Option<i32>,
9039}
9040#[derive(Clone, PartialEq, ::prost::Message)]
9041pub struct AndroidFsFsyncEndFtraceEvent {
9042    #[prost(int32, optional, tag="1")]
9043    pub bytes: ::core::option::Option<i32>,
9044    #[prost(uint64, optional, tag="2")]
9045    pub ino: ::core::option::Option<u64>,
9046    #[prost(int64, optional, tag="3")]
9047    pub offset: ::core::option::Option<i64>,
9048}
9049#[derive(Clone, PartialEq, ::prost::Message)]
9050pub struct AndroidFsFsyncStartFtraceEvent {
9051    #[prost(string, optional, tag="1")]
9052    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9053    #[prost(int64, optional, tag="2")]
9054    pub i_size: ::core::option::Option<i64>,
9055    #[prost(uint64, optional, tag="3")]
9056    pub ino: ::core::option::Option<u64>,
9057    #[prost(string, optional, tag="4")]
9058    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9059    #[prost(int32, optional, tag="5")]
9060    pub pid: ::core::option::Option<i32>,
9061}
9062// End of protos/perfetto/trace/ftrace/android_fs.proto
9063
9064// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
9065
9066#[derive(Clone, PartialEq, ::prost::Message)]
9067pub struct BclIrqTriggerFtraceEvent {
9068    #[prost(int32, optional, tag="1")]
9069    pub id: ::core::option::Option<i32>,
9070    #[prost(int32, optional, tag="2")]
9071    pub throttle: ::core::option::Option<i32>,
9072    #[prost(int32, optional, tag="3")]
9073    pub cpu0_limit: ::core::option::Option<i32>,
9074    #[prost(int32, optional, tag="4")]
9075    pub cpu1_limit: ::core::option::Option<i32>,
9076    #[prost(int32, optional, tag="5")]
9077    pub cpu2_limit: ::core::option::Option<i32>,
9078    #[prost(int32, optional, tag="6")]
9079    pub tpu_limit: ::core::option::Option<i32>,
9080    #[prost(int32, optional, tag="7")]
9081    pub gpu_limit: ::core::option::Option<i32>,
9082    #[prost(int32, optional, tag="8")]
9083    pub voltage: ::core::option::Option<i32>,
9084    #[prost(int32, optional, tag="9")]
9085    pub capacity: ::core::option::Option<i32>,
9086}
9087// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
9088
9089// Begin of protos/perfetto/trace/ftrace/binder.proto
9090
9091#[derive(Clone, PartialEq, ::prost::Message)]
9092pub struct BinderTransactionFtraceEvent {
9093    #[prost(int32, optional, tag="1")]
9094    pub debug_id: ::core::option::Option<i32>,
9095    #[prost(int32, optional, tag="2")]
9096    pub target_node: ::core::option::Option<i32>,
9097    #[prost(int32, optional, tag="3")]
9098    pub to_proc: ::core::option::Option<i32>,
9099    #[prost(int32, optional, tag="4")]
9100    pub to_thread: ::core::option::Option<i32>,
9101    #[prost(int32, optional, tag="5")]
9102    pub reply: ::core::option::Option<i32>,
9103    #[prost(uint32, optional, tag="6")]
9104    pub code: ::core::option::Option<u32>,
9105    #[prost(uint32, optional, tag="7")]
9106    pub flags: ::core::option::Option<u32>,
9107}
9108#[derive(Clone, PartialEq, ::prost::Message)]
9109pub struct BinderTransactionReceivedFtraceEvent {
9110    #[prost(int32, optional, tag="1")]
9111    pub debug_id: ::core::option::Option<i32>,
9112}
9113#[derive(Clone, PartialEq, ::prost::Message)]
9114pub struct BinderSetPriorityFtraceEvent {
9115    #[prost(int32, optional, tag="1")]
9116    pub proc: ::core::option::Option<i32>,
9117    #[prost(int32, optional, tag="2")]
9118    pub thread: ::core::option::Option<i32>,
9119    #[prost(uint32, optional, tag="3")]
9120    pub old_prio: ::core::option::Option<u32>,
9121    #[prost(uint32, optional, tag="4")]
9122    pub new_prio: ::core::option::Option<u32>,
9123    #[prost(uint32, optional, tag="5")]
9124    pub desired_prio: ::core::option::Option<u32>,
9125}
9126#[derive(Clone, PartialEq, ::prost::Message)]
9127pub struct BinderLockFtraceEvent {
9128    #[prost(string, optional, tag="1")]
9129    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9130}
9131#[derive(Clone, PartialEq, ::prost::Message)]
9132pub struct BinderLockedFtraceEvent {
9133    #[prost(string, optional, tag="1")]
9134    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9135}
9136#[derive(Clone, PartialEq, ::prost::Message)]
9137pub struct BinderUnlockFtraceEvent {
9138    #[prost(string, optional, tag="1")]
9139    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9140}
9141#[derive(Clone, PartialEq, ::prost::Message)]
9142pub struct BinderTransactionAllocBufFtraceEvent {
9143    #[prost(uint64, optional, tag="1")]
9144    pub data_size: ::core::option::Option<u64>,
9145    #[prost(int32, optional, tag="2")]
9146    pub debug_id: ::core::option::Option<i32>,
9147    #[prost(uint64, optional, tag="3")]
9148    pub offsets_size: ::core::option::Option<u64>,
9149    #[prost(uint64, optional, tag="4")]
9150    pub extra_buffers_size: ::core::option::Option<u64>,
9151}
9152#[derive(Clone, PartialEq, ::prost::Message)]
9153pub struct BinderCommandFtraceEvent {
9154    #[prost(uint32, optional, tag="1")]
9155    pub cmd: ::core::option::Option<u32>,
9156}
9157#[derive(Clone, PartialEq, ::prost::Message)]
9158pub struct BinderReturnFtraceEvent {
9159    #[prost(uint32, optional, tag="1")]
9160    pub cmd: ::core::option::Option<u32>,
9161}
9162// End of protos/perfetto/trace/ftrace/binder.proto
9163
9164// Begin of protos/perfetto/trace/ftrace/block.proto
9165
9166#[derive(Clone, PartialEq, ::prost::Message)]
9167pub struct BlockRqIssueFtraceEvent {
9168    #[prost(uint64, optional, tag="1")]
9169    pub dev: ::core::option::Option<u64>,
9170    #[prost(uint64, optional, tag="2")]
9171    pub sector: ::core::option::Option<u64>,
9172    #[prost(uint32, optional, tag="3")]
9173    pub nr_sector: ::core::option::Option<u32>,
9174    #[prost(uint32, optional, tag="4")]
9175    pub bytes: ::core::option::Option<u32>,
9176    #[prost(string, optional, tag="5")]
9177    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9178    #[prost(string, optional, tag="6")]
9179    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9180    #[prost(string, optional, tag="7")]
9181    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9182}
9183#[derive(Clone, PartialEq, ::prost::Message)]
9184pub struct BlockBioBackmergeFtraceEvent {
9185    #[prost(uint64, optional, tag="1")]
9186    pub dev: ::core::option::Option<u64>,
9187    #[prost(uint64, optional, tag="2")]
9188    pub sector: ::core::option::Option<u64>,
9189    #[prost(uint32, optional, tag="3")]
9190    pub nr_sector: ::core::option::Option<u32>,
9191    #[prost(string, optional, tag="4")]
9192    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9193    #[prost(string, optional, tag="5")]
9194    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9195}
9196#[derive(Clone, PartialEq, ::prost::Message)]
9197pub struct BlockBioBounceFtraceEvent {
9198    #[prost(uint64, optional, tag="1")]
9199    pub dev: ::core::option::Option<u64>,
9200    #[prost(uint64, optional, tag="2")]
9201    pub sector: ::core::option::Option<u64>,
9202    #[prost(uint32, optional, tag="3")]
9203    pub nr_sector: ::core::option::Option<u32>,
9204    #[prost(string, optional, tag="4")]
9205    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9206    #[prost(string, optional, tag="5")]
9207    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9208}
9209#[derive(Clone, PartialEq, ::prost::Message)]
9210pub struct BlockBioCompleteFtraceEvent {
9211    #[prost(uint64, optional, tag="1")]
9212    pub dev: ::core::option::Option<u64>,
9213    #[prost(uint64, optional, tag="2")]
9214    pub sector: ::core::option::Option<u64>,
9215    #[prost(uint32, optional, tag="3")]
9216    pub nr_sector: ::core::option::Option<u32>,
9217    #[prost(int32, optional, tag="4")]
9218    pub error: ::core::option::Option<i32>,
9219    #[prost(string, optional, tag="5")]
9220    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9221}
9222#[derive(Clone, PartialEq, ::prost::Message)]
9223pub struct BlockBioFrontmergeFtraceEvent {
9224    #[prost(uint64, optional, tag="1")]
9225    pub dev: ::core::option::Option<u64>,
9226    #[prost(uint64, optional, tag="2")]
9227    pub sector: ::core::option::Option<u64>,
9228    #[prost(uint32, optional, tag="3")]
9229    pub nr_sector: ::core::option::Option<u32>,
9230    #[prost(string, optional, tag="4")]
9231    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9232    #[prost(string, optional, tag="5")]
9233    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9234}
9235#[derive(Clone, PartialEq, ::prost::Message)]
9236pub struct BlockBioQueueFtraceEvent {
9237    #[prost(uint64, optional, tag="1")]
9238    pub dev: ::core::option::Option<u64>,
9239    #[prost(uint64, optional, tag="2")]
9240    pub sector: ::core::option::Option<u64>,
9241    #[prost(uint32, optional, tag="3")]
9242    pub nr_sector: ::core::option::Option<u32>,
9243    #[prost(string, optional, tag="4")]
9244    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9245    #[prost(string, optional, tag="5")]
9246    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9247}
9248#[derive(Clone, PartialEq, ::prost::Message)]
9249pub struct BlockBioRemapFtraceEvent {
9250    #[prost(uint64, optional, tag="1")]
9251    pub dev: ::core::option::Option<u64>,
9252    #[prost(uint64, optional, tag="2")]
9253    pub sector: ::core::option::Option<u64>,
9254    #[prost(uint32, optional, tag="3")]
9255    pub nr_sector: ::core::option::Option<u32>,
9256    #[prost(uint64, optional, tag="4")]
9257    pub old_dev: ::core::option::Option<u64>,
9258    #[prost(uint64, optional, tag="5")]
9259    pub old_sector: ::core::option::Option<u64>,
9260    #[prost(string, optional, tag="6")]
9261    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9262}
9263#[derive(Clone, PartialEq, ::prost::Message)]
9264pub struct BlockDirtyBufferFtraceEvent {
9265    #[prost(uint64, optional, tag="1")]
9266    pub dev: ::core::option::Option<u64>,
9267    #[prost(uint64, optional, tag="2")]
9268    pub sector: ::core::option::Option<u64>,
9269    #[prost(uint64, optional, tag="3")]
9270    pub size: ::core::option::Option<u64>,
9271}
9272#[derive(Clone, PartialEq, ::prost::Message)]
9273pub struct BlockGetrqFtraceEvent {
9274    #[prost(uint64, optional, tag="1")]
9275    pub dev: ::core::option::Option<u64>,
9276    #[prost(uint64, optional, tag="2")]
9277    pub sector: ::core::option::Option<u64>,
9278    #[prost(uint32, optional, tag="3")]
9279    pub nr_sector: ::core::option::Option<u32>,
9280    #[prost(string, optional, tag="4")]
9281    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9282    #[prost(string, optional, tag="5")]
9283    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9284}
9285#[derive(Clone, PartialEq, ::prost::Message)]
9286pub struct BlockPlugFtraceEvent {
9287    #[prost(string, optional, tag="1")]
9288    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9289}
9290#[derive(Clone, PartialEq, ::prost::Message)]
9291pub struct BlockRqAbortFtraceEvent {
9292    #[prost(uint64, optional, tag="1")]
9293    pub dev: ::core::option::Option<u64>,
9294    #[prost(uint64, optional, tag="2")]
9295    pub sector: ::core::option::Option<u64>,
9296    #[prost(uint32, optional, tag="3")]
9297    pub nr_sector: ::core::option::Option<u32>,
9298    #[prost(int32, optional, tag="4")]
9299    pub errors: ::core::option::Option<i32>,
9300    #[prost(string, optional, tag="5")]
9301    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9302    #[prost(string, optional, tag="6")]
9303    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9304}
9305#[derive(Clone, PartialEq, ::prost::Message)]
9306pub struct BlockRqCompleteFtraceEvent {
9307    #[prost(uint64, optional, tag="1")]
9308    pub dev: ::core::option::Option<u64>,
9309    #[prost(uint64, optional, tag="2")]
9310    pub sector: ::core::option::Option<u64>,
9311    #[prost(uint32, optional, tag="3")]
9312    pub nr_sector: ::core::option::Option<u32>,
9313    #[prost(int32, optional, tag="4")]
9314    pub errors: ::core::option::Option<i32>,
9315    #[prost(string, optional, tag="5")]
9316    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9317    #[prost(string, optional, tag="6")]
9318    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9319    #[prost(int32, optional, tag="7")]
9320    pub error: ::core::option::Option<i32>,
9321}
9322#[derive(Clone, PartialEq, ::prost::Message)]
9323pub struct BlockRqInsertFtraceEvent {
9324    #[prost(uint64, optional, tag="1")]
9325    pub dev: ::core::option::Option<u64>,
9326    #[prost(uint64, optional, tag="2")]
9327    pub sector: ::core::option::Option<u64>,
9328    #[prost(uint32, optional, tag="3")]
9329    pub nr_sector: ::core::option::Option<u32>,
9330    #[prost(uint32, optional, tag="4")]
9331    pub bytes: ::core::option::Option<u32>,
9332    #[prost(string, optional, tag="5")]
9333    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9334    #[prost(string, optional, tag="6")]
9335    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9336    #[prost(string, optional, tag="7")]
9337    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9338}
9339#[derive(Clone, PartialEq, ::prost::Message)]
9340pub struct BlockRqRemapFtraceEvent {
9341    #[prost(uint64, optional, tag="1")]
9342    pub dev: ::core::option::Option<u64>,
9343    #[prost(uint64, optional, tag="2")]
9344    pub sector: ::core::option::Option<u64>,
9345    #[prost(uint32, optional, tag="3")]
9346    pub nr_sector: ::core::option::Option<u32>,
9347    #[prost(uint64, optional, tag="4")]
9348    pub old_dev: ::core::option::Option<u64>,
9349    #[prost(uint64, optional, tag="5")]
9350    pub old_sector: ::core::option::Option<u64>,
9351    #[prost(uint32, optional, tag="6")]
9352    pub nr_bios: ::core::option::Option<u32>,
9353    #[prost(string, optional, tag="7")]
9354    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9355}
9356#[derive(Clone, PartialEq, ::prost::Message)]
9357pub struct BlockRqRequeueFtraceEvent {
9358    #[prost(uint64, optional, tag="1")]
9359    pub dev: ::core::option::Option<u64>,
9360    #[prost(uint64, optional, tag="2")]
9361    pub sector: ::core::option::Option<u64>,
9362    #[prost(uint32, optional, tag="3")]
9363    pub nr_sector: ::core::option::Option<u32>,
9364    #[prost(int32, optional, tag="4")]
9365    pub errors: ::core::option::Option<i32>,
9366    #[prost(string, optional, tag="5")]
9367    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9368    #[prost(string, optional, tag="6")]
9369    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9370}
9371#[derive(Clone, PartialEq, ::prost::Message)]
9372pub struct BlockSleeprqFtraceEvent {
9373    #[prost(uint64, optional, tag="1")]
9374    pub dev: ::core::option::Option<u64>,
9375    #[prost(uint64, optional, tag="2")]
9376    pub sector: ::core::option::Option<u64>,
9377    #[prost(uint32, optional, tag="3")]
9378    pub nr_sector: ::core::option::Option<u32>,
9379    #[prost(string, optional, tag="4")]
9380    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9381    #[prost(string, optional, tag="5")]
9382    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9383}
9384#[derive(Clone, PartialEq, ::prost::Message)]
9385pub struct BlockSplitFtraceEvent {
9386    #[prost(uint64, optional, tag="1")]
9387    pub dev: ::core::option::Option<u64>,
9388    #[prost(uint64, optional, tag="2")]
9389    pub sector: ::core::option::Option<u64>,
9390    #[prost(uint64, optional, tag="3")]
9391    pub new_sector: ::core::option::Option<u64>,
9392    #[prost(string, optional, tag="4")]
9393    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9394    #[prost(string, optional, tag="5")]
9395    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9396}
9397#[derive(Clone, PartialEq, ::prost::Message)]
9398pub struct BlockTouchBufferFtraceEvent {
9399    #[prost(uint64, optional, tag="1")]
9400    pub dev: ::core::option::Option<u64>,
9401    #[prost(uint64, optional, tag="2")]
9402    pub sector: ::core::option::Option<u64>,
9403    #[prost(uint64, optional, tag="3")]
9404    pub size: ::core::option::Option<u64>,
9405}
9406#[derive(Clone, PartialEq, ::prost::Message)]
9407pub struct BlockUnplugFtraceEvent {
9408    #[prost(int32, optional, tag="1")]
9409    pub nr_rq: ::core::option::Option<i32>,
9410    #[prost(string, optional, tag="2")]
9411    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9412}
9413#[derive(Clone, PartialEq, ::prost::Message)]
9414pub struct BlockIoStartFtraceEvent {
9415    #[prost(uint64, optional, tag="1")]
9416    pub dev: ::core::option::Option<u64>,
9417    #[prost(uint64, optional, tag="2")]
9418    pub sector: ::core::option::Option<u64>,
9419    #[prost(uint32, optional, tag="3")]
9420    pub nr_sector: ::core::option::Option<u32>,
9421    #[prost(uint32, optional, tag="4")]
9422    pub bytes: ::core::option::Option<u32>,
9423    #[prost(uint32, optional, tag="5")]
9424    pub ioprio: ::core::option::Option<u32>,
9425    #[prost(string, optional, tag="6")]
9426    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9427    #[prost(string, optional, tag="7")]
9428    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9429    #[prost(string, optional, tag="8")]
9430    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9431}
9432#[derive(Clone, PartialEq, ::prost::Message)]
9433pub struct BlockIoDoneFtraceEvent {
9434    #[prost(uint64, optional, tag="1")]
9435    pub dev: ::core::option::Option<u64>,
9436    #[prost(uint64, optional, tag="2")]
9437    pub sector: ::core::option::Option<u64>,
9438    #[prost(uint32, optional, tag="3")]
9439    pub nr_sector: ::core::option::Option<u32>,
9440    #[prost(uint32, optional, tag="4")]
9441    pub bytes: ::core::option::Option<u32>,
9442    #[prost(uint32, optional, tag="5")]
9443    pub ioprio: ::core::option::Option<u32>,
9444    #[prost(string, optional, tag="6")]
9445    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9446    #[prost(string, optional, tag="7")]
9447    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9448    #[prost(string, optional, tag="8")]
9449    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9450}
9451// End of protos/perfetto/trace/ftrace/block.proto
9452
9453// Begin of protos/perfetto/trace/ftrace/cgroup.proto
9454
9455#[derive(Clone, PartialEq, ::prost::Message)]
9456pub struct CgroupAttachTaskFtraceEvent {
9457    #[prost(int32, optional, tag="1")]
9458    pub dst_root: ::core::option::Option<i32>,
9459    #[prost(int32, optional, tag="2")]
9460    pub dst_id: ::core::option::Option<i32>,
9461    #[prost(int32, optional, tag="3")]
9462    pub pid: ::core::option::Option<i32>,
9463    #[prost(string, optional, tag="4")]
9464    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9465    #[prost(string, optional, tag="5")]
9466    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9467    #[prost(int32, optional, tag="6")]
9468    pub dst_level: ::core::option::Option<i32>,
9469    #[prost(string, optional, tag="7")]
9470    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9471}
9472#[derive(Clone, PartialEq, ::prost::Message)]
9473pub struct CgroupMkdirFtraceEvent {
9474    #[prost(int32, optional, tag="1")]
9475    pub root: ::core::option::Option<i32>,
9476    #[prost(int32, optional, tag="2")]
9477    pub id: ::core::option::Option<i32>,
9478    #[prost(string, optional, tag="3")]
9479    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9480    #[prost(int32, optional, tag="4")]
9481    pub level: ::core::option::Option<i32>,
9482    #[prost(string, optional, tag="5")]
9483    pub path: ::core::option::Option<::prost::alloc::string::String>,
9484}
9485#[derive(Clone, PartialEq, ::prost::Message)]
9486pub struct CgroupRemountFtraceEvent {
9487    #[prost(int32, optional, tag="1")]
9488    pub root: ::core::option::Option<i32>,
9489    #[prost(uint32, optional, tag="2")]
9490    pub ss_mask: ::core::option::Option<u32>,
9491    #[prost(string, optional, tag="3")]
9492    pub name: ::core::option::Option<::prost::alloc::string::String>,
9493}
9494#[derive(Clone, PartialEq, ::prost::Message)]
9495pub struct CgroupRmdirFtraceEvent {
9496    #[prost(int32, optional, tag="1")]
9497    pub root: ::core::option::Option<i32>,
9498    #[prost(int32, optional, tag="2")]
9499    pub id: ::core::option::Option<i32>,
9500    #[prost(string, optional, tag="3")]
9501    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9502    #[prost(int32, optional, tag="4")]
9503    pub level: ::core::option::Option<i32>,
9504    #[prost(string, optional, tag="5")]
9505    pub path: ::core::option::Option<::prost::alloc::string::String>,
9506}
9507#[derive(Clone, PartialEq, ::prost::Message)]
9508pub struct CgroupTransferTasksFtraceEvent {
9509    #[prost(int32, optional, tag="1")]
9510    pub dst_root: ::core::option::Option<i32>,
9511    #[prost(int32, optional, tag="2")]
9512    pub dst_id: ::core::option::Option<i32>,
9513    #[prost(int32, optional, tag="3")]
9514    pub pid: ::core::option::Option<i32>,
9515    #[prost(string, optional, tag="4")]
9516    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9517    #[prost(string, optional, tag="5")]
9518    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9519    #[prost(int32, optional, tag="6")]
9520    pub dst_level: ::core::option::Option<i32>,
9521    #[prost(string, optional, tag="7")]
9522    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9523}
9524#[derive(Clone, PartialEq, ::prost::Message)]
9525pub struct CgroupDestroyRootFtraceEvent {
9526    #[prost(int32, optional, tag="1")]
9527    pub root: ::core::option::Option<i32>,
9528    #[prost(uint32, optional, tag="2")]
9529    pub ss_mask: ::core::option::Option<u32>,
9530    #[prost(string, optional, tag="3")]
9531    pub name: ::core::option::Option<::prost::alloc::string::String>,
9532}
9533#[derive(Clone, PartialEq, ::prost::Message)]
9534pub struct CgroupReleaseFtraceEvent {
9535    #[prost(int32, optional, tag="1")]
9536    pub root: ::core::option::Option<i32>,
9537    #[prost(int32, optional, tag="2")]
9538    pub id: ::core::option::Option<i32>,
9539    #[prost(string, optional, tag="3")]
9540    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9541    #[prost(int32, optional, tag="4")]
9542    pub level: ::core::option::Option<i32>,
9543    #[prost(string, optional, tag="5")]
9544    pub path: ::core::option::Option<::prost::alloc::string::String>,
9545}
9546#[derive(Clone, PartialEq, ::prost::Message)]
9547pub struct CgroupRenameFtraceEvent {
9548    #[prost(int32, optional, tag="1")]
9549    pub root: ::core::option::Option<i32>,
9550    #[prost(int32, optional, tag="2")]
9551    pub id: ::core::option::Option<i32>,
9552    #[prost(string, optional, tag="3")]
9553    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9554    #[prost(int32, optional, tag="4")]
9555    pub level: ::core::option::Option<i32>,
9556    #[prost(string, optional, tag="5")]
9557    pub path: ::core::option::Option<::prost::alloc::string::String>,
9558}
9559#[derive(Clone, PartialEq, ::prost::Message)]
9560pub struct CgroupSetupRootFtraceEvent {
9561    #[prost(int32, optional, tag="1")]
9562    pub root: ::core::option::Option<i32>,
9563    #[prost(uint32, optional, tag="2")]
9564    pub ss_mask: ::core::option::Option<u32>,
9565    #[prost(string, optional, tag="3")]
9566    pub name: ::core::option::Option<::prost::alloc::string::String>,
9567}
9568// End of protos/perfetto/trace/ftrace/cgroup.proto
9569
9570// Begin of protos/perfetto/trace/ftrace/clk.proto
9571
9572#[derive(Clone, PartialEq, ::prost::Message)]
9573pub struct ClkEnableFtraceEvent {
9574    #[prost(string, optional, tag="1")]
9575    pub name: ::core::option::Option<::prost::alloc::string::String>,
9576}
9577#[derive(Clone, PartialEq, ::prost::Message)]
9578pub struct ClkDisableFtraceEvent {
9579    #[prost(string, optional, tag="1")]
9580    pub name: ::core::option::Option<::prost::alloc::string::String>,
9581}
9582#[derive(Clone, PartialEq, ::prost::Message)]
9583pub struct ClkSetRateFtraceEvent {
9584    #[prost(string, optional, tag="1")]
9585    pub name: ::core::option::Option<::prost::alloc::string::String>,
9586    #[prost(uint64, optional, tag="2")]
9587    pub rate: ::core::option::Option<u64>,
9588}
9589// End of protos/perfetto/trace/ftrace/clk.proto
9590
9591// Begin of protos/perfetto/trace/ftrace/cma.proto
9592
9593#[derive(Clone, PartialEq, ::prost::Message)]
9594pub struct CmaAllocStartFtraceEvent {
9595    #[prost(uint32, optional, tag="1")]
9596    pub align: ::core::option::Option<u32>,
9597    #[prost(uint32, optional, tag="2")]
9598    pub count: ::core::option::Option<u32>,
9599    #[prost(string, optional, tag="3")]
9600    pub name: ::core::option::Option<::prost::alloc::string::String>,
9601}
9602#[derive(Clone, PartialEq, ::prost::Message)]
9603pub struct CmaAllocInfoFtraceEvent {
9604    #[prost(uint32, optional, tag="1")]
9605    pub align: ::core::option::Option<u32>,
9606    #[prost(uint32, optional, tag="2")]
9607    pub count: ::core::option::Option<u32>,
9608    #[prost(uint32, optional, tag="3")]
9609    pub err_iso: ::core::option::Option<u32>,
9610    #[prost(uint32, optional, tag="4")]
9611    pub err_mig: ::core::option::Option<u32>,
9612    #[prost(uint32, optional, tag="5")]
9613    pub err_test: ::core::option::Option<u32>,
9614    #[prost(string, optional, tag="6")]
9615    pub name: ::core::option::Option<::prost::alloc::string::String>,
9616    #[prost(uint64, optional, tag="7")]
9617    pub nr_mapped: ::core::option::Option<u64>,
9618    #[prost(uint64, optional, tag="8")]
9619    pub nr_migrated: ::core::option::Option<u64>,
9620    #[prost(uint64, optional, tag="9")]
9621    pub nr_reclaimed: ::core::option::Option<u64>,
9622    #[prost(uint64, optional, tag="10")]
9623    pub pfn: ::core::option::Option<u64>,
9624}
9625#[derive(Clone, PartialEq, ::prost::Message)]
9626pub struct CmaAllocFinishFtraceEvent {
9627    #[prost(string, optional, tag="1")]
9628    pub name: ::core::option::Option<::prost::alloc::string::String>,
9629    #[prost(uint64, optional, tag="2")]
9630    pub pfn: ::core::option::Option<u64>,
9631    #[prost(uint64, optional, tag="3")]
9632    pub page: ::core::option::Option<u64>,
9633    #[prost(uint64, optional, tag="4")]
9634    pub count: ::core::option::Option<u64>,
9635    #[prost(uint32, optional, tag="5")]
9636    pub align: ::core::option::Option<u32>,
9637    #[prost(int32, optional, tag="6")]
9638    pub errorno: ::core::option::Option<i32>,
9639}
9640// End of protos/perfetto/trace/ftrace/cma.proto
9641
9642// Begin of protos/perfetto/trace/ftrace/compaction.proto
9643
9644#[derive(Clone, PartialEq, ::prost::Message)]
9645pub struct MmCompactionBeginFtraceEvent {
9646    #[prost(uint64, optional, tag="1")]
9647    pub zone_start: ::core::option::Option<u64>,
9648    #[prost(uint64, optional, tag="2")]
9649    pub migrate_pfn: ::core::option::Option<u64>,
9650    #[prost(uint64, optional, tag="3")]
9651    pub free_pfn: ::core::option::Option<u64>,
9652    #[prost(uint64, optional, tag="4")]
9653    pub zone_end: ::core::option::Option<u64>,
9654    #[prost(uint32, optional, tag="5")]
9655    pub sync: ::core::option::Option<u32>,
9656}
9657#[derive(Clone, PartialEq, ::prost::Message)]
9658pub struct MmCompactionDeferCompactionFtraceEvent {
9659    #[prost(int32, optional, tag="1")]
9660    pub nid: ::core::option::Option<i32>,
9661    #[prost(uint32, optional, tag="2")]
9662    pub idx: ::core::option::Option<u32>,
9663    #[prost(int32, optional, tag="3")]
9664    pub order: ::core::option::Option<i32>,
9665    #[prost(uint32, optional, tag="4")]
9666    pub considered: ::core::option::Option<u32>,
9667    #[prost(uint32, optional, tag="5")]
9668    pub defer_shift: ::core::option::Option<u32>,
9669    #[prost(int32, optional, tag="6")]
9670    pub order_failed: ::core::option::Option<i32>,
9671}
9672#[derive(Clone, PartialEq, ::prost::Message)]
9673pub struct MmCompactionDeferredFtraceEvent {
9674    #[prost(int32, optional, tag="1")]
9675    pub nid: ::core::option::Option<i32>,
9676    #[prost(uint32, optional, tag="2")]
9677    pub idx: ::core::option::Option<u32>,
9678    #[prost(int32, optional, tag="3")]
9679    pub order: ::core::option::Option<i32>,
9680    #[prost(uint32, optional, tag="4")]
9681    pub considered: ::core::option::Option<u32>,
9682    #[prost(uint32, optional, tag="5")]
9683    pub defer_shift: ::core::option::Option<u32>,
9684    #[prost(int32, optional, tag="6")]
9685    pub order_failed: ::core::option::Option<i32>,
9686}
9687#[derive(Clone, PartialEq, ::prost::Message)]
9688pub struct MmCompactionDeferResetFtraceEvent {
9689    #[prost(int32, optional, tag="1")]
9690    pub nid: ::core::option::Option<i32>,
9691    #[prost(uint32, optional, tag="2")]
9692    pub idx: ::core::option::Option<u32>,
9693    #[prost(int32, optional, tag="3")]
9694    pub order: ::core::option::Option<i32>,
9695    #[prost(uint32, optional, tag="4")]
9696    pub considered: ::core::option::Option<u32>,
9697    #[prost(uint32, optional, tag="5")]
9698    pub defer_shift: ::core::option::Option<u32>,
9699    #[prost(int32, optional, tag="6")]
9700    pub order_failed: ::core::option::Option<i32>,
9701}
9702#[derive(Clone, PartialEq, ::prost::Message)]
9703pub struct MmCompactionEndFtraceEvent {
9704    #[prost(uint64, optional, tag="1")]
9705    pub zone_start: ::core::option::Option<u64>,
9706    #[prost(uint64, optional, tag="2")]
9707    pub migrate_pfn: ::core::option::Option<u64>,
9708    #[prost(uint64, optional, tag="3")]
9709    pub free_pfn: ::core::option::Option<u64>,
9710    #[prost(uint64, optional, tag="4")]
9711    pub zone_end: ::core::option::Option<u64>,
9712    #[prost(uint32, optional, tag="5")]
9713    pub sync: ::core::option::Option<u32>,
9714    #[prost(int32, optional, tag="6")]
9715    pub status: ::core::option::Option<i32>,
9716}
9717#[derive(Clone, PartialEq, ::prost::Message)]
9718pub struct MmCompactionFinishedFtraceEvent {
9719    #[prost(int32, optional, tag="1")]
9720    pub nid: ::core::option::Option<i32>,
9721    #[prost(uint32, optional, tag="2")]
9722    pub idx: ::core::option::Option<u32>,
9723    #[prost(int32, optional, tag="3")]
9724    pub order: ::core::option::Option<i32>,
9725    #[prost(int32, optional, tag="4")]
9726    pub ret: ::core::option::Option<i32>,
9727}
9728#[derive(Clone, PartialEq, ::prost::Message)]
9729pub struct MmCompactionIsolateFreepagesFtraceEvent {
9730    #[prost(uint64, optional, tag="1")]
9731    pub start_pfn: ::core::option::Option<u64>,
9732    #[prost(uint64, optional, tag="2")]
9733    pub end_pfn: ::core::option::Option<u64>,
9734    #[prost(uint64, optional, tag="3")]
9735    pub nr_scanned: ::core::option::Option<u64>,
9736    #[prost(uint64, optional, tag="4")]
9737    pub nr_taken: ::core::option::Option<u64>,
9738}
9739#[derive(Clone, PartialEq, ::prost::Message)]
9740pub struct MmCompactionIsolateMigratepagesFtraceEvent {
9741    #[prost(uint64, optional, tag="1")]
9742    pub start_pfn: ::core::option::Option<u64>,
9743    #[prost(uint64, optional, tag="2")]
9744    pub end_pfn: ::core::option::Option<u64>,
9745    #[prost(uint64, optional, tag="3")]
9746    pub nr_scanned: ::core::option::Option<u64>,
9747    #[prost(uint64, optional, tag="4")]
9748    pub nr_taken: ::core::option::Option<u64>,
9749}
9750#[derive(Clone, PartialEq, ::prost::Message)]
9751pub struct MmCompactionKcompactdSleepFtraceEvent {
9752    #[prost(int32, optional, tag="1")]
9753    pub nid: ::core::option::Option<i32>,
9754}
9755#[derive(Clone, PartialEq, ::prost::Message)]
9756pub struct MmCompactionKcompactdWakeFtraceEvent {
9757    #[prost(int32, optional, tag="1")]
9758    pub nid: ::core::option::Option<i32>,
9759    #[prost(int32, optional, tag="2")]
9760    pub order: ::core::option::Option<i32>,
9761    #[prost(uint32, optional, tag="3")]
9762    pub classzone_idx: ::core::option::Option<u32>,
9763    #[prost(uint32, optional, tag="4")]
9764    pub highest_zoneidx: ::core::option::Option<u32>,
9765}
9766#[derive(Clone, PartialEq, ::prost::Message)]
9767pub struct MmCompactionMigratepagesFtraceEvent {
9768    #[prost(uint64, optional, tag="1")]
9769    pub nr_migrated: ::core::option::Option<u64>,
9770    #[prost(uint64, optional, tag="2")]
9771    pub nr_failed: ::core::option::Option<u64>,
9772}
9773#[derive(Clone, PartialEq, ::prost::Message)]
9774pub struct MmCompactionSuitableFtraceEvent {
9775    #[prost(int32, optional, tag="1")]
9776    pub nid: ::core::option::Option<i32>,
9777    #[prost(uint32, optional, tag="2")]
9778    pub idx: ::core::option::Option<u32>,
9779    #[prost(int32, optional, tag="3")]
9780    pub order: ::core::option::Option<i32>,
9781    #[prost(int32, optional, tag="4")]
9782    pub ret: ::core::option::Option<i32>,
9783}
9784#[derive(Clone, PartialEq, ::prost::Message)]
9785pub struct MmCompactionTryToCompactPagesFtraceEvent {
9786    #[prost(int32, optional, tag="1")]
9787    pub order: ::core::option::Option<i32>,
9788    #[prost(uint32, optional, tag="2")]
9789    pub gfp_mask: ::core::option::Option<u32>,
9790    #[prost(uint32, optional, tag="3")]
9791    pub mode: ::core::option::Option<u32>,
9792    #[prost(int32, optional, tag="4")]
9793    pub prio: ::core::option::Option<i32>,
9794}
9795#[derive(Clone, PartialEq, ::prost::Message)]
9796pub struct MmCompactionWakeupKcompactdFtraceEvent {
9797    #[prost(int32, optional, tag="1")]
9798    pub nid: ::core::option::Option<i32>,
9799    #[prost(int32, optional, tag="2")]
9800    pub order: ::core::option::Option<i32>,
9801    #[prost(uint32, optional, tag="3")]
9802    pub classzone_idx: ::core::option::Option<u32>,
9803    #[prost(uint32, optional, tag="4")]
9804    pub highest_zoneidx: ::core::option::Option<u32>,
9805}
9806// End of protos/perfetto/trace/ftrace/compaction.proto
9807
9808// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
9809
9810#[derive(Clone, PartialEq, ::prost::Message)]
9811pub struct ParamSetValueCpmFtraceEvent {
9812    #[prost(string, optional, tag="1")]
9813    pub body: ::core::option::Option<::prost::alloc::string::String>,
9814    #[prost(uint32, optional, tag="2")]
9815    pub value: ::core::option::Option<u32>,
9816    #[prost(int64, optional, tag="3")]
9817    pub timestamp: ::core::option::Option<i64>,
9818}
9819// End of protos/perfetto/trace/ftrace/cpm_trace.proto
9820
9821// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
9822
9823#[derive(Clone, PartialEq, ::prost::Message)]
9824pub struct CpuhpExitFtraceEvent {
9825    #[prost(uint32, optional, tag="1")]
9826    pub cpu: ::core::option::Option<u32>,
9827    #[prost(int32, optional, tag="2")]
9828    pub idx: ::core::option::Option<i32>,
9829    #[prost(int32, optional, tag="3")]
9830    pub ret: ::core::option::Option<i32>,
9831    #[prost(int32, optional, tag="4")]
9832    pub state: ::core::option::Option<i32>,
9833}
9834#[derive(Clone, PartialEq, ::prost::Message)]
9835pub struct CpuhpMultiEnterFtraceEvent {
9836    #[prost(uint32, optional, tag="1")]
9837    pub cpu: ::core::option::Option<u32>,
9838    #[prost(uint64, optional, tag="2")]
9839    pub fun: ::core::option::Option<u64>,
9840    #[prost(int32, optional, tag="3")]
9841    pub idx: ::core::option::Option<i32>,
9842    #[prost(int32, optional, tag="4")]
9843    pub target: ::core::option::Option<i32>,
9844}
9845#[derive(Clone, PartialEq, ::prost::Message)]
9846pub struct CpuhpEnterFtraceEvent {
9847    #[prost(uint32, optional, tag="1")]
9848    pub cpu: ::core::option::Option<u32>,
9849    #[prost(uint64, optional, tag="2")]
9850    pub fun: ::core::option::Option<u64>,
9851    #[prost(int32, optional, tag="3")]
9852    pub idx: ::core::option::Option<i32>,
9853    #[prost(int32, optional, tag="4")]
9854    pub target: ::core::option::Option<i32>,
9855}
9856#[derive(Clone, PartialEq, ::prost::Message)]
9857pub struct CpuhpLatencyFtraceEvent {
9858    #[prost(uint32, optional, tag="1")]
9859    pub cpu: ::core::option::Option<u32>,
9860    #[prost(int32, optional, tag="2")]
9861    pub ret: ::core::option::Option<i32>,
9862    #[prost(uint32, optional, tag="3")]
9863    pub state: ::core::option::Option<u32>,
9864    #[prost(uint64, optional, tag="4")]
9865    pub time: ::core::option::Option<u64>,
9866}
9867#[derive(Clone, PartialEq, ::prost::Message)]
9868pub struct CpuhpPauseFtraceEvent {
9869    #[prost(uint32, optional, tag="1")]
9870    pub active_cpus: ::core::option::Option<u32>,
9871    #[prost(uint32, optional, tag="2")]
9872    pub cpus: ::core::option::Option<u32>,
9873    #[prost(uint32, optional, tag="3")]
9874    pub pause: ::core::option::Option<u32>,
9875    #[prost(uint32, optional, tag="4")]
9876    pub time: ::core::option::Option<u32>,
9877}
9878// End of protos/perfetto/trace/ftrace/cpuhp.proto
9879
9880// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
9881
9882#[derive(Clone, PartialEq, ::prost::Message)]
9883pub struct CrosEcSensorhubDataFtraceEvent {
9884    #[prost(int64, optional, tag="1")]
9885    pub current_time: ::core::option::Option<i64>,
9886    #[prost(int64, optional, tag="2")]
9887    pub current_timestamp: ::core::option::Option<i64>,
9888    #[prost(int64, optional, tag="3")]
9889    pub delta: ::core::option::Option<i64>,
9890    #[prost(uint32, optional, tag="4")]
9891    pub ec_fifo_timestamp: ::core::option::Option<u32>,
9892    #[prost(uint32, optional, tag="5")]
9893    pub ec_sensor_num: ::core::option::Option<u32>,
9894    #[prost(int64, optional, tag="6")]
9895    pub fifo_timestamp: ::core::option::Option<i64>,
9896}
9897// End of protos/perfetto/trace/ftrace/cros_ec.proto
9898
9899// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
9900
9901#[derive(Clone, PartialEq, ::prost::Message)]
9902pub struct DcvshFreqFtraceEvent {
9903    #[prost(uint64, optional, tag="1")]
9904    pub cpu: ::core::option::Option<u64>,
9905    #[prost(uint64, optional, tag="2")]
9906    pub freq: ::core::option::Option<u64>,
9907}
9908// End of protos/perfetto/trace/ftrace/dcvsh.proto
9909
9910// Begin of protos/perfetto/trace/ftrace/devfreq.proto
9911
9912#[derive(Clone, PartialEq, ::prost::Message)]
9913pub struct DevfreqFrequencyFtraceEvent {
9914    #[prost(string, optional, tag="1")]
9915    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
9916    #[prost(uint64, optional, tag="2")]
9917    pub freq: ::core::option::Option<u64>,
9918    #[prost(uint64, optional, tag="3")]
9919    pub prev_freq: ::core::option::Option<u64>,
9920    #[prost(uint64, optional, tag="4")]
9921    pub busy_time: ::core::option::Option<u64>,
9922    #[prost(uint64, optional, tag="5")]
9923    pub total_time: ::core::option::Option<u64>,
9924}
9925// End of protos/perfetto/trace/ftrace/devfreq.proto
9926
9927// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
9928
9929#[derive(Clone, PartialEq, ::prost::Message)]
9930pub struct DmaFenceInitFtraceEvent {
9931    #[prost(uint32, optional, tag="1")]
9932    pub context: ::core::option::Option<u32>,
9933    #[prost(string, optional, tag="2")]
9934    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9935    #[prost(uint32, optional, tag="3")]
9936    pub seqno: ::core::option::Option<u32>,
9937    #[prost(string, optional, tag="4")]
9938    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9939}
9940#[derive(Clone, PartialEq, ::prost::Message)]
9941pub struct DmaFenceEmitFtraceEvent {
9942    #[prost(uint32, optional, tag="1")]
9943    pub context: ::core::option::Option<u32>,
9944    #[prost(string, optional, tag="2")]
9945    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9946    #[prost(uint32, optional, tag="3")]
9947    pub seqno: ::core::option::Option<u32>,
9948    #[prost(string, optional, tag="4")]
9949    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9950}
9951#[derive(Clone, PartialEq, ::prost::Message)]
9952pub struct DmaFenceSignaledFtraceEvent {
9953    #[prost(uint32, optional, tag="1")]
9954    pub context: ::core::option::Option<u32>,
9955    #[prost(string, optional, tag="2")]
9956    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9957    #[prost(uint32, optional, tag="3")]
9958    pub seqno: ::core::option::Option<u32>,
9959    #[prost(string, optional, tag="4")]
9960    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9961}
9962#[derive(Clone, PartialEq, ::prost::Message)]
9963pub struct DmaFenceWaitStartFtraceEvent {
9964    #[prost(uint32, optional, tag="1")]
9965    pub context: ::core::option::Option<u32>,
9966    #[prost(string, optional, tag="2")]
9967    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9968    #[prost(uint32, optional, tag="3")]
9969    pub seqno: ::core::option::Option<u32>,
9970    #[prost(string, optional, tag="4")]
9971    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9972}
9973#[derive(Clone, PartialEq, ::prost::Message)]
9974pub struct DmaFenceWaitEndFtraceEvent {
9975    #[prost(uint32, optional, tag="1")]
9976    pub context: ::core::option::Option<u32>,
9977    #[prost(string, optional, tag="2")]
9978    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9979    #[prost(uint32, optional, tag="3")]
9980    pub seqno: ::core::option::Option<u32>,
9981    #[prost(string, optional, tag="4")]
9982    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9983}
9984// End of protos/perfetto/trace/ftrace/dma_fence.proto
9985
9986// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9987
9988#[derive(Clone, PartialEq, ::prost::Message)]
9989pub struct DmaHeapStatFtraceEvent {
9990    #[prost(uint64, optional, tag="1")]
9991    pub inode: ::core::option::Option<u64>,
9992    #[prost(int64, optional, tag="2")]
9993    pub len: ::core::option::Option<i64>,
9994    #[prost(uint64, optional, tag="3")]
9995    pub total_allocated: ::core::option::Option<u64>,
9996}
9997// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9998
9999// Begin of protos/perfetto/trace/ftrace/dpu.proto
10000
10001#[derive(Clone, PartialEq, ::prost::Message)]
10002pub struct DpuTracingMarkWriteFtraceEvent {
10003    #[prost(int32, optional, tag="1")]
10004    pub pid: ::core::option::Option<i32>,
10005    #[prost(string, optional, tag="2")]
10006    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10007    #[prost(uint32, optional, tag="3")]
10008    pub trace_begin: ::core::option::Option<u32>,
10009    #[prost(string, optional, tag="4")]
10010    pub name: ::core::option::Option<::prost::alloc::string::String>,
10011    #[prost(uint32, optional, tag="5")]
10012    pub r#type: ::core::option::Option<u32>,
10013    #[prost(int32, optional, tag="6")]
10014    pub value: ::core::option::Option<i32>,
10015}
10016#[derive(Clone, PartialEq, ::prost::Message)]
10017pub struct DpuDsiCmdFifoStatusFtraceEvent {
10018    #[prost(uint32, optional, tag="1")]
10019    pub header: ::core::option::Option<u32>,
10020    #[prost(uint32, optional, tag="2")]
10021    pub payload: ::core::option::Option<u32>,
10022}
10023#[derive(Clone, PartialEq, ::prost::Message)]
10024pub struct DpuDsiRxFtraceEvent {
10025    #[prost(uint32, optional, tag="1")]
10026    pub cmd: ::core::option::Option<u32>,
10027    #[prost(bytes="vec", optional, tag="3")]
10028    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10029}
10030#[derive(Clone, PartialEq, ::prost::Message)]
10031pub struct DpuDsiTxFtraceEvent {
10032    #[prost(uint32, optional, tag="1")]
10033    pub r#type: ::core::option::Option<u32>,
10034    #[prost(uint32, optional, tag="3")]
10035    pub last: ::core::option::Option<u32>,
10036    #[prost(uint32, optional, tag="4")]
10037    pub delay_ms: ::core::option::Option<u32>,
10038    #[prost(bytes="vec", optional, tag="5")]
10039    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10040}
10041#[derive(Clone, PartialEq, ::prost::Message)]
10042pub struct DpuDispDpuUnderrunFtraceEvent {
10043    #[prost(int32, optional, tag="1")]
10044    pub id: ::core::option::Option<i32>,
10045    #[prost(int32, optional, tag="2")]
10046    pub frames_pending: ::core::option::Option<i32>,
10047    #[prost(int32, optional, tag="3")]
10048    pub vsync_count: ::core::option::Option<i32>,
10049}
10050#[derive(Clone, PartialEq, ::prost::Message)]
10051pub struct DpuDispVblankIrqEnableFtraceEvent {
10052    #[prost(int32, optional, tag="1")]
10053    pub id: ::core::option::Option<i32>,
10054    #[prost(int32, optional, tag="2")]
10055    pub output_id: ::core::option::Option<i32>,
10056    #[prost(int32, optional, tag="3")]
10057    pub enable: ::core::option::Option<i32>,
10058}
10059#[derive(Clone, PartialEq, ::prost::Message)]
10060pub struct DpuDispFrameDoneTimeoutFtraceEvent {
10061    #[prost(int32, optional, tag="1")]
10062    pub display_id: ::core::option::Option<i32>,
10063    #[prost(uint32, optional, tag="2")]
10064    pub output_id: ::core::option::Option<u32>,
10065    #[prost(int32, optional, tag="3")]
10066    pub frames_pending: ::core::option::Option<i32>,
10067    #[prost(int32, optional, tag="4")]
10068    pub te_count: ::core::option::Option<i32>,
10069    #[prost(uint32, optional, tag="5")]
10070    pub during_disable: ::core::option::Option<u32>,
10071}
10072#[derive(Clone, PartialEq, ::prost::Message)]
10073pub struct DpuDispFrameStartTimeoutFtraceEvent {
10074    #[prost(int32, optional, tag="1")]
10075    pub display_id: ::core::option::Option<i32>,
10076    #[prost(uint32, optional, tag="2")]
10077    pub output_id: ::core::option::Option<u32>,
10078    #[prost(int32, optional, tag="3")]
10079    pub frames_pending: ::core::option::Option<i32>,
10080    #[prost(int32, optional, tag="4")]
10081    pub te_count: ::core::option::Option<i32>,
10082}
10083#[derive(Clone, PartialEq, ::prost::Message)]
10084pub struct DpuDispFrameDoneMissingFtraceEvent {
10085    #[prost(int32, optional, tag="1")]
10086    pub display_id: ::core::option::Option<i32>,
10087    #[prost(uint32, optional, tag="2")]
10088    pub output_id: ::core::option::Option<u32>,
10089    #[prost(int32, optional, tag="3")]
10090    pub frames_pending: ::core::option::Option<i32>,
10091    #[prost(int32, optional, tag="4")]
10092    pub te_count: ::core::option::Option<i32>,
10093}
10094#[derive(Clone, PartialEq, ::prost::Message)]
10095pub struct DpuDispFrameStartMissingFtraceEvent {
10096    #[prost(int32, optional, tag="1")]
10097    pub display_id: ::core::option::Option<i32>,
10098    #[prost(uint32, optional, tag="2")]
10099    pub output_id: ::core::option::Option<u32>,
10100    #[prost(int32, optional, tag="3")]
10101    pub frames_pending: ::core::option::Option<i32>,
10102    #[prost(int32, optional, tag="4")]
10103    pub te_count: ::core::option::Option<i32>,
10104}
10105#[derive(Clone, PartialEq, ::prost::Message)]
10106pub struct DpuDispDpuLineUnderrunFtraceEvent {
10107    #[prost(int32, optional, tag="1")]
10108    pub id: ::core::option::Option<i32>,
10109    #[prost(int32, optional, tag="2")]
10110    pub frames_pending: ::core::option::Option<i32>,
10111    #[prost(int32, optional, tag="3")]
10112    pub vsync_count: ::core::option::Option<i32>,
10113}
10114// End of protos/perfetto/trace/ftrace/dpu.proto
10115
10116// Begin of protos/perfetto/trace/ftrace/drm.proto
10117
10118#[derive(Clone, PartialEq, ::prost::Message)]
10119pub struct DrmVblankEventFtraceEvent {
10120    #[prost(int32, optional, tag="1")]
10121    pub crtc: ::core::option::Option<i32>,
10122    #[prost(uint32, optional, tag="2")]
10123    pub high_prec: ::core::option::Option<u32>,
10124    #[prost(uint32, optional, tag="3")]
10125    pub seq: ::core::option::Option<u32>,
10126    #[prost(int64, optional, tag="4")]
10127    pub time: ::core::option::Option<i64>,
10128}
10129#[derive(Clone, PartialEq, ::prost::Message)]
10130pub struct DrmVblankEventDeliveredFtraceEvent {
10131    #[prost(int32, optional, tag="1")]
10132    pub crtc: ::core::option::Option<i32>,
10133    #[prost(uint64, optional, tag="2")]
10134    pub file: ::core::option::Option<u64>,
10135    #[prost(uint32, optional, tag="3")]
10136    pub seq: ::core::option::Option<u32>,
10137}
10138// End of protos/perfetto/trace/ftrace/drm.proto
10139
10140// Begin of protos/perfetto/trace/ftrace/dwc3.proto
10141
10142#[derive(Clone, PartialEq, ::prost::Message)]
10143pub struct Dwc3AllocRequestFtraceEvent {
10144    #[prost(string, optional, tag="1")]
10145    pub name: ::core::option::Option<::prost::alloc::string::String>,
10146    #[prost(uint64, optional, tag="2")]
10147    pub req: ::core::option::Option<u64>,
10148    #[prost(uint32, optional, tag="3")]
10149    pub actual: ::core::option::Option<u32>,
10150    #[prost(uint32, optional, tag="4")]
10151    pub length: ::core::option::Option<u32>,
10152    #[prost(int32, optional, tag="5")]
10153    pub status: ::core::option::Option<i32>,
10154    #[prost(int32, optional, tag="6")]
10155    pub zero: ::core::option::Option<i32>,
10156    #[prost(int32, optional, tag="7")]
10157    pub short_not_ok: ::core::option::Option<i32>,
10158    #[prost(int32, optional, tag="8")]
10159    pub no_interrupt: ::core::option::Option<i32>,
10160}
10161#[derive(Clone, PartialEq, ::prost::Message)]
10162pub struct Dwc3CompleteTrbFtraceEvent {
10163    #[prost(string, optional, tag="1")]
10164    pub name: ::core::option::Option<::prost::alloc::string::String>,
10165    #[prost(uint64, optional, tag="2")]
10166    pub trb: ::core::option::Option<u64>,
10167    #[prost(uint32, optional, tag="3")]
10168    pub allocated: ::core::option::Option<u32>,
10169    #[prost(uint32, optional, tag="4")]
10170    pub queued: ::core::option::Option<u32>,
10171    #[prost(uint32, optional, tag="5")]
10172    pub bpl: ::core::option::Option<u32>,
10173    #[prost(uint32, optional, tag="6")]
10174    pub bph: ::core::option::Option<u32>,
10175    #[prost(uint32, optional, tag="7")]
10176    pub size: ::core::option::Option<u32>,
10177    #[prost(uint32, optional, tag="8")]
10178    pub ctrl: ::core::option::Option<u32>,
10179    #[prost(uint32, optional, tag="9")]
10180    pub r#type: ::core::option::Option<u32>,
10181    #[prost(uint32, optional, tag="10")]
10182    pub enqueue: ::core::option::Option<u32>,
10183    #[prost(uint32, optional, tag="11")]
10184    pub dequeue: ::core::option::Option<u32>,
10185}
10186#[derive(Clone, PartialEq, ::prost::Message)]
10187pub struct Dwc3CtrlReqFtraceEvent {
10188    #[prost(uint32, optional, tag="1")]
10189    pub b_request_type: ::core::option::Option<u32>,
10190    #[prost(uint32, optional, tag="2")]
10191    pub b_request: ::core::option::Option<u32>,
10192    #[prost(uint32, optional, tag="3")]
10193    pub w_value: ::core::option::Option<u32>,
10194    #[prost(uint32, optional, tag="4")]
10195    pub w_index: ::core::option::Option<u32>,
10196    #[prost(uint32, optional, tag="5")]
10197    pub w_length: ::core::option::Option<u32>,
10198    #[prost(string, optional, tag="6")]
10199    pub str: ::core::option::Option<::prost::alloc::string::String>,
10200}
10201#[derive(Clone, PartialEq, ::prost::Message)]
10202pub struct Dwc3EpDequeueFtraceEvent {
10203    #[prost(string, optional, tag="1")]
10204    pub name: ::core::option::Option<::prost::alloc::string::String>,
10205    #[prost(uint64, optional, tag="2")]
10206    pub req: ::core::option::Option<u64>,
10207    #[prost(uint32, optional, tag="3")]
10208    pub actual: ::core::option::Option<u32>,
10209    #[prost(uint32, optional, tag="4")]
10210    pub length: ::core::option::Option<u32>,
10211    #[prost(int32, optional, tag="5")]
10212    pub status: ::core::option::Option<i32>,
10213    #[prost(int32, optional, tag="6")]
10214    pub zero: ::core::option::Option<i32>,
10215    #[prost(int32, optional, tag="7")]
10216    pub short_not_ok: ::core::option::Option<i32>,
10217    #[prost(int32, optional, tag="8")]
10218    pub no_interrupt: ::core::option::Option<i32>,
10219}
10220#[derive(Clone, PartialEq, ::prost::Message)]
10221pub struct Dwc3EpQueueFtraceEvent {
10222    #[prost(string, optional, tag="1")]
10223    pub name: ::core::option::Option<::prost::alloc::string::String>,
10224    #[prost(uint64, optional, tag="2")]
10225    pub req: ::core::option::Option<u64>,
10226    #[prost(uint32, optional, tag="3")]
10227    pub actual: ::core::option::Option<u32>,
10228    #[prost(uint32, optional, tag="4")]
10229    pub length: ::core::option::Option<u32>,
10230    #[prost(int32, optional, tag="5")]
10231    pub status: ::core::option::Option<i32>,
10232    #[prost(int32, optional, tag="6")]
10233    pub zero: ::core::option::Option<i32>,
10234    #[prost(int32, optional, tag="7")]
10235    pub short_not_ok: ::core::option::Option<i32>,
10236    #[prost(int32, optional, tag="8")]
10237    pub no_interrupt: ::core::option::Option<i32>,
10238}
10239#[derive(Clone, PartialEq, ::prost::Message)]
10240pub struct Dwc3EventFtraceEvent {
10241    #[prost(uint32, optional, tag="1")]
10242    pub event: ::core::option::Option<u32>,
10243    #[prost(uint32, optional, tag="2")]
10244    pub ep0state: ::core::option::Option<u32>,
10245    #[prost(string, optional, tag="3")]
10246    pub str: ::core::option::Option<::prost::alloc::string::String>,
10247}
10248#[derive(Clone, PartialEq, ::prost::Message)]
10249pub struct Dwc3FreeRequestFtraceEvent {
10250    #[prost(string, optional, tag="1")]
10251    pub name: ::core::option::Option<::prost::alloc::string::String>,
10252    #[prost(uint64, optional, tag="2")]
10253    pub req: ::core::option::Option<u64>,
10254    #[prost(uint32, optional, tag="3")]
10255    pub actual: ::core::option::Option<u32>,
10256    #[prost(uint32, optional, tag="4")]
10257    pub length: ::core::option::Option<u32>,
10258    #[prost(int32, optional, tag="5")]
10259    pub status: ::core::option::Option<i32>,
10260    #[prost(int32, optional, tag="6")]
10261    pub zero: ::core::option::Option<i32>,
10262    #[prost(int32, optional, tag="7")]
10263    pub short_not_ok: ::core::option::Option<i32>,
10264    #[prost(int32, optional, tag="8")]
10265    pub no_interrupt: ::core::option::Option<i32>,
10266}
10267#[derive(Clone, PartialEq, ::prost::Message)]
10268pub struct Dwc3GadgetEpCmdFtraceEvent {
10269    #[prost(string, optional, tag="1")]
10270    pub name: ::core::option::Option<::prost::alloc::string::String>,
10271    #[prost(uint32, optional, tag="2")]
10272    pub cmd: ::core::option::Option<u32>,
10273    #[prost(uint32, optional, tag="3")]
10274    pub param0: ::core::option::Option<u32>,
10275    #[prost(uint32, optional, tag="4")]
10276    pub param1: ::core::option::Option<u32>,
10277    #[prost(uint32, optional, tag="5")]
10278    pub param2: ::core::option::Option<u32>,
10279    #[prost(int32, optional, tag="6")]
10280    pub cmd_status: ::core::option::Option<i32>,
10281}
10282#[derive(Clone, PartialEq, ::prost::Message)]
10283pub struct Dwc3GadgetEpDisableFtraceEvent {
10284    #[prost(string, optional, tag="1")]
10285    pub name: ::core::option::Option<::prost::alloc::string::String>,
10286    #[prost(uint32, optional, tag="2")]
10287    pub maxpacket: ::core::option::Option<u32>,
10288    #[prost(uint32, optional, tag="3")]
10289    pub maxpacket_limit: ::core::option::Option<u32>,
10290    #[prost(uint32, optional, tag="4")]
10291    pub max_streams: ::core::option::Option<u32>,
10292    #[prost(uint32, optional, tag="5")]
10293    pub maxburst: ::core::option::Option<u32>,
10294    #[prost(uint32, optional, tag="6")]
10295    pub flags: ::core::option::Option<u32>,
10296    #[prost(uint32, optional, tag="7")]
10297    pub direction: ::core::option::Option<u32>,
10298    #[prost(uint32, optional, tag="8")]
10299    pub trb_enqueue: ::core::option::Option<u32>,
10300    #[prost(uint32, optional, tag="9")]
10301    pub trb_dequeue: ::core::option::Option<u32>,
10302}
10303#[derive(Clone, PartialEq, ::prost::Message)]
10304pub struct Dwc3GadgetEpEnableFtraceEvent {
10305    #[prost(string, optional, tag="1")]
10306    pub name: ::core::option::Option<::prost::alloc::string::String>,
10307    #[prost(uint32, optional, tag="2")]
10308    pub maxpacket: ::core::option::Option<u32>,
10309    #[prost(uint32, optional, tag="3")]
10310    pub maxpacket_limit: ::core::option::Option<u32>,
10311    #[prost(uint32, optional, tag="4")]
10312    pub max_streams: ::core::option::Option<u32>,
10313    #[prost(uint32, optional, tag="5")]
10314    pub maxburst: ::core::option::Option<u32>,
10315    #[prost(uint32, optional, tag="6")]
10316    pub flags: ::core::option::Option<u32>,
10317    #[prost(uint32, optional, tag="7")]
10318    pub direction: ::core::option::Option<u32>,
10319    #[prost(uint32, optional, tag="8")]
10320    pub trb_enqueue: ::core::option::Option<u32>,
10321    #[prost(uint32, optional, tag="9")]
10322    pub trb_dequeue: ::core::option::Option<u32>,
10323}
10324#[derive(Clone, PartialEq, ::prost::Message)]
10325pub struct Dwc3GadgetGenericCmdFtraceEvent {
10326    #[prost(uint32, optional, tag="1")]
10327    pub cmd: ::core::option::Option<u32>,
10328    #[prost(uint32, optional, tag="2")]
10329    pub param: ::core::option::Option<u32>,
10330    #[prost(int32, optional, tag="3")]
10331    pub status: ::core::option::Option<i32>,
10332}
10333#[derive(Clone, PartialEq, ::prost::Message)]
10334pub struct Dwc3GadgetGivebackFtraceEvent {
10335    #[prost(string, optional, tag="1")]
10336    pub name: ::core::option::Option<::prost::alloc::string::String>,
10337    #[prost(uint64, optional, tag="2")]
10338    pub req: ::core::option::Option<u64>,
10339    #[prost(uint32, optional, tag="3")]
10340    pub actual: ::core::option::Option<u32>,
10341    #[prost(uint32, optional, tag="4")]
10342    pub length: ::core::option::Option<u32>,
10343    #[prost(int32, optional, tag="5")]
10344    pub status: ::core::option::Option<i32>,
10345    #[prost(int32, optional, tag="6")]
10346    pub zero: ::core::option::Option<i32>,
10347    #[prost(int32, optional, tag="7")]
10348    pub short_not_ok: ::core::option::Option<i32>,
10349    #[prost(int32, optional, tag="8")]
10350    pub no_interrupt: ::core::option::Option<i32>,
10351}
10352#[derive(Clone, PartialEq, ::prost::Message)]
10353pub struct Dwc3PrepareTrbFtraceEvent {
10354    #[prost(string, optional, tag="1")]
10355    pub name: ::core::option::Option<::prost::alloc::string::String>,
10356    #[prost(uint64, optional, tag="2")]
10357    pub trb: ::core::option::Option<u64>,
10358    #[prost(uint32, optional, tag="3")]
10359    pub allocated: ::core::option::Option<u32>,
10360    #[prost(uint32, optional, tag="4")]
10361    pub queued: ::core::option::Option<u32>,
10362    #[prost(uint32, optional, tag="5")]
10363    pub bpl: ::core::option::Option<u32>,
10364    #[prost(uint32, optional, tag="6")]
10365    pub bph: ::core::option::Option<u32>,
10366    #[prost(uint32, optional, tag="7")]
10367    pub size: ::core::option::Option<u32>,
10368    #[prost(uint32, optional, tag="8")]
10369    pub ctrl: ::core::option::Option<u32>,
10370    #[prost(uint32, optional, tag="9")]
10371    pub r#type: ::core::option::Option<u32>,
10372    #[prost(uint32, optional, tag="10")]
10373    pub enqueue: ::core::option::Option<u32>,
10374    #[prost(uint32, optional, tag="11")]
10375    pub dequeue: ::core::option::Option<u32>,
10376}
10377#[derive(Clone, PartialEq, ::prost::Message)]
10378pub struct Dwc3ReadlFtraceEvent {
10379    #[prost(uint64, optional, tag="1")]
10380    pub base: ::core::option::Option<u64>,
10381    #[prost(uint32, optional, tag="2")]
10382    pub offset: ::core::option::Option<u32>,
10383    #[prost(uint32, optional, tag="3")]
10384    pub value: ::core::option::Option<u32>,
10385    #[prost(string, optional, tag="4")]
10386    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10387}
10388#[derive(Clone, PartialEq, ::prost::Message)]
10389pub struct Dwc3WritelFtraceEvent {
10390    #[prost(uint64, optional, tag="1")]
10391    pub base: ::core::option::Option<u64>,
10392    #[prost(uint32, optional, tag="2")]
10393    pub offset: ::core::option::Option<u32>,
10394    #[prost(uint32, optional, tag="3")]
10395    pub value: ::core::option::Option<u32>,
10396    #[prost(string, optional, tag="4")]
10397    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10398}
10399// End of protos/perfetto/trace/ftrace/dwc3.proto
10400
10401// Begin of protos/perfetto/trace/ftrace/ext4.proto
10402
10403#[derive(Clone, PartialEq, ::prost::Message)]
10404pub struct Ext4DaWriteBeginFtraceEvent {
10405    #[prost(uint64, optional, tag="1")]
10406    pub dev: ::core::option::Option<u64>,
10407    #[prost(uint64, optional, tag="2")]
10408    pub ino: ::core::option::Option<u64>,
10409    #[prost(int64, optional, tag="3")]
10410    pub pos: ::core::option::Option<i64>,
10411    #[prost(uint32, optional, tag="4")]
10412    pub len: ::core::option::Option<u32>,
10413    #[prost(uint32, optional, tag="5")]
10414    pub flags: ::core::option::Option<u32>,
10415}
10416#[derive(Clone, PartialEq, ::prost::Message)]
10417pub struct Ext4DaWriteEndFtraceEvent {
10418    #[prost(uint64, optional, tag="1")]
10419    pub dev: ::core::option::Option<u64>,
10420    #[prost(uint64, optional, tag="2")]
10421    pub ino: ::core::option::Option<u64>,
10422    #[prost(int64, optional, tag="3")]
10423    pub pos: ::core::option::Option<i64>,
10424    #[prost(uint32, optional, tag="4")]
10425    pub len: ::core::option::Option<u32>,
10426    #[prost(uint32, optional, tag="5")]
10427    pub copied: ::core::option::Option<u32>,
10428}
10429#[derive(Clone, PartialEq, ::prost::Message)]
10430pub struct Ext4SyncFileEnterFtraceEvent {
10431    #[prost(uint64, optional, tag="1")]
10432    pub dev: ::core::option::Option<u64>,
10433    #[prost(uint64, optional, tag="2")]
10434    pub ino: ::core::option::Option<u64>,
10435    #[prost(uint64, optional, tag="3")]
10436    pub parent: ::core::option::Option<u64>,
10437    #[prost(int32, optional, tag="4")]
10438    pub datasync: ::core::option::Option<i32>,
10439}
10440#[derive(Clone, PartialEq, ::prost::Message)]
10441pub struct Ext4SyncFileExitFtraceEvent {
10442    #[prost(uint64, optional, tag="1")]
10443    pub dev: ::core::option::Option<u64>,
10444    #[prost(uint64, optional, tag="2")]
10445    pub ino: ::core::option::Option<u64>,
10446    #[prost(int32, optional, tag="3")]
10447    pub ret: ::core::option::Option<i32>,
10448}
10449#[derive(Clone, PartialEq, ::prost::Message)]
10450pub struct Ext4AllocDaBlocksFtraceEvent {
10451    #[prost(uint64, optional, tag="1")]
10452    pub dev: ::core::option::Option<u64>,
10453    #[prost(uint64, optional, tag="2")]
10454    pub ino: ::core::option::Option<u64>,
10455    #[prost(uint32, optional, tag="3")]
10456    pub data_blocks: ::core::option::Option<u32>,
10457    #[prost(uint32, optional, tag="4")]
10458    pub meta_blocks: ::core::option::Option<u32>,
10459}
10460#[derive(Clone, PartialEq, ::prost::Message)]
10461pub struct Ext4AllocateBlocksFtraceEvent {
10462    #[prost(uint64, optional, tag="1")]
10463    pub dev: ::core::option::Option<u64>,
10464    #[prost(uint64, optional, tag="2")]
10465    pub ino: ::core::option::Option<u64>,
10466    #[prost(uint64, optional, tag="3")]
10467    pub block: ::core::option::Option<u64>,
10468    #[prost(uint32, optional, tag="4")]
10469    pub len: ::core::option::Option<u32>,
10470    #[prost(uint32, optional, tag="5")]
10471    pub logical: ::core::option::Option<u32>,
10472    #[prost(uint32, optional, tag="6")]
10473    pub lleft: ::core::option::Option<u32>,
10474    #[prost(uint32, optional, tag="7")]
10475    pub lright: ::core::option::Option<u32>,
10476    #[prost(uint64, optional, tag="8")]
10477    pub goal: ::core::option::Option<u64>,
10478    #[prost(uint64, optional, tag="9")]
10479    pub pleft: ::core::option::Option<u64>,
10480    #[prost(uint64, optional, tag="10")]
10481    pub pright: ::core::option::Option<u64>,
10482    #[prost(uint32, optional, tag="11")]
10483    pub flags: ::core::option::Option<u32>,
10484}
10485#[derive(Clone, PartialEq, ::prost::Message)]
10486pub struct Ext4AllocateInodeFtraceEvent {
10487    #[prost(uint64, optional, tag="1")]
10488    pub dev: ::core::option::Option<u64>,
10489    #[prost(uint64, optional, tag="2")]
10490    pub ino: ::core::option::Option<u64>,
10491    #[prost(uint64, optional, tag="3")]
10492    pub dir: ::core::option::Option<u64>,
10493    #[prost(uint32, optional, tag="4")]
10494    pub mode: ::core::option::Option<u32>,
10495}
10496#[derive(Clone, PartialEq, ::prost::Message)]
10497pub struct Ext4BeginOrderedTruncateFtraceEvent {
10498    #[prost(uint64, optional, tag="1")]
10499    pub dev: ::core::option::Option<u64>,
10500    #[prost(uint64, optional, tag="2")]
10501    pub ino: ::core::option::Option<u64>,
10502    #[prost(int64, optional, tag="3")]
10503    pub new_size: ::core::option::Option<i64>,
10504}
10505#[derive(Clone, PartialEq, ::prost::Message)]
10506pub struct Ext4CollapseRangeFtraceEvent {
10507    #[prost(uint64, optional, tag="1")]
10508    pub dev: ::core::option::Option<u64>,
10509    #[prost(uint64, optional, tag="2")]
10510    pub ino: ::core::option::Option<u64>,
10511    #[prost(int64, optional, tag="3")]
10512    pub offset: ::core::option::Option<i64>,
10513    #[prost(int64, optional, tag="4")]
10514    pub len: ::core::option::Option<i64>,
10515}
10516#[derive(Clone, PartialEq, ::prost::Message)]
10517pub struct Ext4DaReleaseSpaceFtraceEvent {
10518    #[prost(uint64, optional, tag="1")]
10519    pub dev: ::core::option::Option<u64>,
10520    #[prost(uint64, optional, tag="2")]
10521    pub ino: ::core::option::Option<u64>,
10522    #[prost(uint64, optional, tag="3")]
10523    pub i_blocks: ::core::option::Option<u64>,
10524    #[prost(int32, optional, tag="4")]
10525    pub freed_blocks: ::core::option::Option<i32>,
10526    #[prost(int32, optional, tag="5")]
10527    pub reserved_data_blocks: ::core::option::Option<i32>,
10528    #[prost(int32, optional, tag="6")]
10529    pub reserved_meta_blocks: ::core::option::Option<i32>,
10530    #[prost(int32, optional, tag="7")]
10531    pub allocated_meta_blocks: ::core::option::Option<i32>,
10532    #[prost(uint32, optional, tag="8")]
10533    pub mode: ::core::option::Option<u32>,
10534}
10535#[derive(Clone, PartialEq, ::prost::Message)]
10536pub struct Ext4DaReserveSpaceFtraceEvent {
10537    #[prost(uint64, optional, tag="1")]
10538    pub dev: ::core::option::Option<u64>,
10539    #[prost(uint64, optional, tag="2")]
10540    pub ino: ::core::option::Option<u64>,
10541    #[prost(uint64, optional, tag="3")]
10542    pub i_blocks: ::core::option::Option<u64>,
10543    #[prost(int32, optional, tag="4")]
10544    pub reserved_data_blocks: ::core::option::Option<i32>,
10545    #[prost(int32, optional, tag="5")]
10546    pub reserved_meta_blocks: ::core::option::Option<i32>,
10547    #[prost(uint32, optional, tag="6")]
10548    pub mode: ::core::option::Option<u32>,
10549    #[prost(int32, optional, tag="7")]
10550    pub md_needed: ::core::option::Option<i32>,
10551}
10552#[derive(Clone, PartialEq, ::prost::Message)]
10553pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
10554    #[prost(uint64, optional, tag="1")]
10555    pub dev: ::core::option::Option<u64>,
10556    #[prost(uint64, optional, tag="2")]
10557    pub ino: ::core::option::Option<u64>,
10558    #[prost(uint64, optional, tag="3")]
10559    pub i_blocks: ::core::option::Option<u64>,
10560    #[prost(int32, optional, tag="4")]
10561    pub used_blocks: ::core::option::Option<i32>,
10562    #[prost(int32, optional, tag="5")]
10563    pub reserved_data_blocks: ::core::option::Option<i32>,
10564    #[prost(int32, optional, tag="6")]
10565    pub reserved_meta_blocks: ::core::option::Option<i32>,
10566    #[prost(int32, optional, tag="7")]
10567    pub allocated_meta_blocks: ::core::option::Option<i32>,
10568    #[prost(int32, optional, tag="8")]
10569    pub quota_claim: ::core::option::Option<i32>,
10570    #[prost(uint32, optional, tag="9")]
10571    pub mode: ::core::option::Option<u32>,
10572}
10573#[derive(Clone, PartialEq, ::prost::Message)]
10574pub struct Ext4DaWritePagesFtraceEvent {
10575    #[prost(uint64, optional, tag="1")]
10576    pub dev: ::core::option::Option<u64>,
10577    #[prost(uint64, optional, tag="2")]
10578    pub ino: ::core::option::Option<u64>,
10579    #[prost(uint64, optional, tag="3")]
10580    pub first_page: ::core::option::Option<u64>,
10581    #[prost(int64, optional, tag="4")]
10582    pub nr_to_write: ::core::option::Option<i64>,
10583    #[prost(int32, optional, tag="5")]
10584    pub sync_mode: ::core::option::Option<i32>,
10585    #[prost(uint64, optional, tag="6")]
10586    pub b_blocknr: ::core::option::Option<u64>,
10587    #[prost(uint32, optional, tag="7")]
10588    pub b_size: ::core::option::Option<u32>,
10589    #[prost(uint32, optional, tag="8")]
10590    pub b_state: ::core::option::Option<u32>,
10591    #[prost(int32, optional, tag="9")]
10592    pub io_done: ::core::option::Option<i32>,
10593    #[prost(int32, optional, tag="10")]
10594    pub pages_written: ::core::option::Option<i32>,
10595}
10596#[derive(Clone, PartialEq, ::prost::Message)]
10597pub struct Ext4DaWritePagesExtentFtraceEvent {
10598    #[prost(uint64, optional, tag="1")]
10599    pub dev: ::core::option::Option<u64>,
10600    #[prost(uint64, optional, tag="2")]
10601    pub ino: ::core::option::Option<u64>,
10602    #[prost(uint64, optional, tag="3")]
10603    pub lblk: ::core::option::Option<u64>,
10604    #[prost(uint32, optional, tag="4")]
10605    pub len: ::core::option::Option<u32>,
10606    #[prost(uint32, optional, tag="5")]
10607    pub flags: ::core::option::Option<u32>,
10608}
10609#[derive(Clone, PartialEq, ::prost::Message)]
10610pub struct Ext4DirectIoEnterFtraceEvent {
10611    #[prost(uint64, optional, tag="1")]
10612    pub dev: ::core::option::Option<u64>,
10613    #[prost(uint64, optional, tag="2")]
10614    pub ino: ::core::option::Option<u64>,
10615    #[prost(int64, optional, tag="3")]
10616    pub pos: ::core::option::Option<i64>,
10617    #[prost(uint64, optional, tag="4")]
10618    pub len: ::core::option::Option<u64>,
10619    #[prost(int32, optional, tag="5")]
10620    pub rw: ::core::option::Option<i32>,
10621}
10622#[derive(Clone, PartialEq, ::prost::Message)]
10623pub struct Ext4DirectIoExitFtraceEvent {
10624    #[prost(uint64, optional, tag="1")]
10625    pub dev: ::core::option::Option<u64>,
10626    #[prost(uint64, optional, tag="2")]
10627    pub ino: ::core::option::Option<u64>,
10628    #[prost(int64, optional, tag="3")]
10629    pub pos: ::core::option::Option<i64>,
10630    #[prost(uint64, optional, tag="4")]
10631    pub len: ::core::option::Option<u64>,
10632    #[prost(int32, optional, tag="5")]
10633    pub rw: ::core::option::Option<i32>,
10634    #[prost(int32, optional, tag="6")]
10635    pub ret: ::core::option::Option<i32>,
10636}
10637#[derive(Clone, PartialEq, ::prost::Message)]
10638pub struct Ext4DiscardBlocksFtraceEvent {
10639    #[prost(uint64, optional, tag="1")]
10640    pub dev: ::core::option::Option<u64>,
10641    #[prost(uint64, optional, tag="2")]
10642    pub blk: ::core::option::Option<u64>,
10643    #[prost(uint64, optional, tag="3")]
10644    pub count: ::core::option::Option<u64>,
10645}
10646#[derive(Clone, PartialEq, ::prost::Message)]
10647pub struct Ext4DiscardPreallocationsFtraceEvent {
10648    #[prost(uint64, optional, tag="1")]
10649    pub dev: ::core::option::Option<u64>,
10650    #[prost(uint64, optional, tag="2")]
10651    pub ino: ::core::option::Option<u64>,
10652    #[prost(uint32, optional, tag="3")]
10653    pub len: ::core::option::Option<u32>,
10654    #[prost(uint32, optional, tag="4")]
10655    pub needed: ::core::option::Option<u32>,
10656}
10657#[derive(Clone, PartialEq, ::prost::Message)]
10658pub struct Ext4DropInodeFtraceEvent {
10659    #[prost(uint64, optional, tag="1")]
10660    pub dev: ::core::option::Option<u64>,
10661    #[prost(uint64, optional, tag="2")]
10662    pub ino: ::core::option::Option<u64>,
10663    #[prost(int32, optional, tag="3")]
10664    pub drop: ::core::option::Option<i32>,
10665}
10666#[derive(Clone, PartialEq, ::prost::Message)]
10667pub struct Ext4EsCacheExtentFtraceEvent {
10668    #[prost(uint64, optional, tag="1")]
10669    pub dev: ::core::option::Option<u64>,
10670    #[prost(uint64, optional, tag="2")]
10671    pub ino: ::core::option::Option<u64>,
10672    #[prost(uint32, optional, tag="3")]
10673    pub lblk: ::core::option::Option<u32>,
10674    #[prost(uint32, optional, tag="4")]
10675    pub len: ::core::option::Option<u32>,
10676    #[prost(uint64, optional, tag="5")]
10677    pub pblk: ::core::option::Option<u64>,
10678    #[prost(uint32, optional, tag="6")]
10679    pub status: ::core::option::Option<u32>,
10680}
10681#[derive(Clone, PartialEq, ::prost::Message)]
10682pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
10683    #[prost(uint64, optional, tag="1")]
10684    pub dev: ::core::option::Option<u64>,
10685    #[prost(uint64, optional, tag="2")]
10686    pub ino: ::core::option::Option<u64>,
10687    #[prost(uint32, optional, tag="3")]
10688    pub lblk: ::core::option::Option<u32>,
10689}
10690#[derive(Clone, PartialEq, ::prost::Message)]
10691pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
10692    #[prost(uint64, optional, tag="1")]
10693    pub dev: ::core::option::Option<u64>,
10694    #[prost(uint64, optional, tag="2")]
10695    pub ino: ::core::option::Option<u64>,
10696    #[prost(uint32, optional, tag="3")]
10697    pub lblk: ::core::option::Option<u32>,
10698    #[prost(uint32, optional, tag="4")]
10699    pub len: ::core::option::Option<u32>,
10700    #[prost(uint64, optional, tag="5")]
10701    pub pblk: ::core::option::Option<u64>,
10702    #[prost(uint64, optional, tag="6")]
10703    pub status: ::core::option::Option<u64>,
10704}
10705#[derive(Clone, PartialEq, ::prost::Message)]
10706pub struct Ext4EsInsertExtentFtraceEvent {
10707    #[prost(uint64, optional, tag="1")]
10708    pub dev: ::core::option::Option<u64>,
10709    #[prost(uint64, optional, tag="2")]
10710    pub ino: ::core::option::Option<u64>,
10711    #[prost(uint32, optional, tag="3")]
10712    pub lblk: ::core::option::Option<u32>,
10713    #[prost(uint32, optional, tag="4")]
10714    pub len: ::core::option::Option<u32>,
10715    #[prost(uint64, optional, tag="5")]
10716    pub pblk: ::core::option::Option<u64>,
10717    #[prost(uint64, optional, tag="6")]
10718    pub status: ::core::option::Option<u64>,
10719}
10720#[derive(Clone, PartialEq, ::prost::Message)]
10721pub struct Ext4EsLookupExtentEnterFtraceEvent {
10722    #[prost(uint64, optional, tag="1")]
10723    pub dev: ::core::option::Option<u64>,
10724    #[prost(uint64, optional, tag="2")]
10725    pub ino: ::core::option::Option<u64>,
10726    #[prost(uint32, optional, tag="3")]
10727    pub lblk: ::core::option::Option<u32>,
10728}
10729#[derive(Clone, PartialEq, ::prost::Message)]
10730pub struct Ext4EsLookupExtentExitFtraceEvent {
10731    #[prost(uint64, optional, tag="1")]
10732    pub dev: ::core::option::Option<u64>,
10733    #[prost(uint64, optional, tag="2")]
10734    pub ino: ::core::option::Option<u64>,
10735    #[prost(uint32, optional, tag="3")]
10736    pub lblk: ::core::option::Option<u32>,
10737    #[prost(uint32, optional, tag="4")]
10738    pub len: ::core::option::Option<u32>,
10739    #[prost(uint64, optional, tag="5")]
10740    pub pblk: ::core::option::Option<u64>,
10741    #[prost(uint64, optional, tag="6")]
10742    pub status: ::core::option::Option<u64>,
10743    #[prost(int32, optional, tag="7")]
10744    pub found: ::core::option::Option<i32>,
10745}
10746#[derive(Clone, PartialEq, ::prost::Message)]
10747pub struct Ext4EsRemoveExtentFtraceEvent {
10748    #[prost(uint64, optional, tag="1")]
10749    pub dev: ::core::option::Option<u64>,
10750    #[prost(uint64, optional, tag="2")]
10751    pub ino: ::core::option::Option<u64>,
10752    #[prost(int64, optional, tag="3")]
10753    pub lblk: ::core::option::Option<i64>,
10754    #[prost(int64, optional, tag="4")]
10755    pub len: ::core::option::Option<i64>,
10756}
10757#[derive(Clone, PartialEq, ::prost::Message)]
10758pub struct Ext4EsShrinkFtraceEvent {
10759    #[prost(uint64, optional, tag="1")]
10760    pub dev: ::core::option::Option<u64>,
10761    #[prost(int32, optional, tag="2")]
10762    pub nr_shrunk: ::core::option::Option<i32>,
10763    #[prost(uint64, optional, tag="3")]
10764    pub scan_time: ::core::option::Option<u64>,
10765    #[prost(int32, optional, tag="4")]
10766    pub nr_skipped: ::core::option::Option<i32>,
10767    #[prost(int32, optional, tag="5")]
10768    pub retried: ::core::option::Option<i32>,
10769}
10770#[derive(Clone, PartialEq, ::prost::Message)]
10771pub struct Ext4EsShrinkCountFtraceEvent {
10772    #[prost(uint64, optional, tag="1")]
10773    pub dev: ::core::option::Option<u64>,
10774    #[prost(int32, optional, tag="2")]
10775    pub nr_to_scan: ::core::option::Option<i32>,
10776    #[prost(int32, optional, tag="3")]
10777    pub cache_cnt: ::core::option::Option<i32>,
10778}
10779#[derive(Clone, PartialEq, ::prost::Message)]
10780pub struct Ext4EsShrinkScanEnterFtraceEvent {
10781    #[prost(uint64, optional, tag="1")]
10782    pub dev: ::core::option::Option<u64>,
10783    #[prost(int32, optional, tag="2")]
10784    pub nr_to_scan: ::core::option::Option<i32>,
10785    #[prost(int32, optional, tag="3")]
10786    pub cache_cnt: ::core::option::Option<i32>,
10787}
10788#[derive(Clone, PartialEq, ::prost::Message)]
10789pub struct Ext4EsShrinkScanExitFtraceEvent {
10790    #[prost(uint64, optional, tag="1")]
10791    pub dev: ::core::option::Option<u64>,
10792    #[prost(int32, optional, tag="2")]
10793    pub nr_shrunk: ::core::option::Option<i32>,
10794    #[prost(int32, optional, tag="3")]
10795    pub cache_cnt: ::core::option::Option<i32>,
10796}
10797#[derive(Clone, PartialEq, ::prost::Message)]
10798pub struct Ext4EvictInodeFtraceEvent {
10799    #[prost(uint64, optional, tag="1")]
10800    pub dev: ::core::option::Option<u64>,
10801    #[prost(uint64, optional, tag="2")]
10802    pub ino: ::core::option::Option<u64>,
10803    #[prost(int32, optional, tag="3")]
10804    pub nlink: ::core::option::Option<i32>,
10805}
10806#[derive(Clone, PartialEq, ::prost::Message)]
10807pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
10808    #[prost(uint64, optional, tag="1")]
10809    pub dev: ::core::option::Option<u64>,
10810    #[prost(uint64, optional, tag="2")]
10811    pub ino: ::core::option::Option<u64>,
10812    #[prost(uint32, optional, tag="3")]
10813    pub m_lblk: ::core::option::Option<u32>,
10814    #[prost(uint32, optional, tag="4")]
10815    pub m_len: ::core::option::Option<u32>,
10816    #[prost(uint32, optional, tag="5")]
10817    pub u_lblk: ::core::option::Option<u32>,
10818    #[prost(uint32, optional, tag="6")]
10819    pub u_len: ::core::option::Option<u32>,
10820    #[prost(uint64, optional, tag="7")]
10821    pub u_pblk: ::core::option::Option<u64>,
10822}
10823#[derive(Clone, PartialEq, ::prost::Message)]
10824pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
10825    #[prost(uint64, optional, tag="1")]
10826    pub dev: ::core::option::Option<u64>,
10827    #[prost(uint64, optional, tag="2")]
10828    pub ino: ::core::option::Option<u64>,
10829    #[prost(uint32, optional, tag="3")]
10830    pub m_lblk: ::core::option::Option<u32>,
10831    #[prost(uint32, optional, tag="4")]
10832    pub m_len: ::core::option::Option<u32>,
10833    #[prost(uint32, optional, tag="5")]
10834    pub u_lblk: ::core::option::Option<u32>,
10835    #[prost(uint32, optional, tag="6")]
10836    pub u_len: ::core::option::Option<u32>,
10837    #[prost(uint64, optional, tag="7")]
10838    pub u_pblk: ::core::option::Option<u64>,
10839    #[prost(uint32, optional, tag="8")]
10840    pub i_lblk: ::core::option::Option<u32>,
10841    #[prost(uint32, optional, tag="9")]
10842    pub i_len: ::core::option::Option<u32>,
10843    #[prost(uint64, optional, tag="10")]
10844    pub i_pblk: ::core::option::Option<u64>,
10845}
10846#[derive(Clone, PartialEq, ::prost::Message)]
10847pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
10848    #[prost(uint64, optional, tag="1")]
10849    pub dev: ::core::option::Option<u64>,
10850    #[prost(uint64, optional, tag="2")]
10851    pub ino: ::core::option::Option<u64>,
10852    #[prost(int32, optional, tag="3")]
10853    pub flags: ::core::option::Option<i32>,
10854    #[prost(uint32, optional, tag="4")]
10855    pub lblk: ::core::option::Option<u32>,
10856    #[prost(uint64, optional, tag="5")]
10857    pub pblk: ::core::option::Option<u64>,
10858    #[prost(uint32, optional, tag="6")]
10859    pub len: ::core::option::Option<u32>,
10860    #[prost(uint32, optional, tag="7")]
10861    pub allocated: ::core::option::Option<u32>,
10862    #[prost(uint64, optional, tag="8")]
10863    pub newblk: ::core::option::Option<u64>,
10864}
10865#[derive(Clone, PartialEq, ::prost::Message)]
10866pub struct Ext4ExtInCacheFtraceEvent {
10867    #[prost(uint64, optional, tag="1")]
10868    pub dev: ::core::option::Option<u64>,
10869    #[prost(uint64, optional, tag="2")]
10870    pub ino: ::core::option::Option<u64>,
10871    #[prost(uint32, optional, tag="3")]
10872    pub lblk: ::core::option::Option<u32>,
10873    #[prost(int32, optional, tag="4")]
10874    pub ret: ::core::option::Option<i32>,
10875}
10876#[derive(Clone, PartialEq, ::prost::Message)]
10877pub struct Ext4ExtLoadExtentFtraceEvent {
10878    #[prost(uint64, optional, tag="1")]
10879    pub dev: ::core::option::Option<u64>,
10880    #[prost(uint64, optional, tag="2")]
10881    pub ino: ::core::option::Option<u64>,
10882    #[prost(uint64, optional, tag="3")]
10883    pub pblk: ::core::option::Option<u64>,
10884    #[prost(uint32, optional, tag="4")]
10885    pub lblk: ::core::option::Option<u32>,
10886}
10887#[derive(Clone, PartialEq, ::prost::Message)]
10888pub struct Ext4ExtMapBlocksEnterFtraceEvent {
10889    #[prost(uint64, optional, tag="1")]
10890    pub dev: ::core::option::Option<u64>,
10891    #[prost(uint64, optional, tag="2")]
10892    pub ino: ::core::option::Option<u64>,
10893    #[prost(uint32, optional, tag="3")]
10894    pub lblk: ::core::option::Option<u32>,
10895    #[prost(uint32, optional, tag="4")]
10896    pub len: ::core::option::Option<u32>,
10897    #[prost(uint32, optional, tag="5")]
10898    pub flags: ::core::option::Option<u32>,
10899}
10900#[derive(Clone, PartialEq, ::prost::Message)]
10901pub struct Ext4ExtMapBlocksExitFtraceEvent {
10902    #[prost(uint64, optional, tag="1")]
10903    pub dev: ::core::option::Option<u64>,
10904    #[prost(uint64, optional, tag="2")]
10905    pub ino: ::core::option::Option<u64>,
10906    #[prost(uint32, optional, tag="3")]
10907    pub flags: ::core::option::Option<u32>,
10908    #[prost(uint64, optional, tag="4")]
10909    pub pblk: ::core::option::Option<u64>,
10910    #[prost(uint32, optional, tag="5")]
10911    pub lblk: ::core::option::Option<u32>,
10912    #[prost(uint32, optional, tag="6")]
10913    pub len: ::core::option::Option<u32>,
10914    #[prost(uint32, optional, tag="7")]
10915    pub mflags: ::core::option::Option<u32>,
10916    #[prost(int32, optional, tag="8")]
10917    pub ret: ::core::option::Option<i32>,
10918}
10919#[derive(Clone, PartialEq, ::prost::Message)]
10920pub struct Ext4ExtPutInCacheFtraceEvent {
10921    #[prost(uint64, optional, tag="1")]
10922    pub dev: ::core::option::Option<u64>,
10923    #[prost(uint64, optional, tag="2")]
10924    pub ino: ::core::option::Option<u64>,
10925    #[prost(uint32, optional, tag="3")]
10926    pub lblk: ::core::option::Option<u32>,
10927    #[prost(uint32, optional, tag="4")]
10928    pub len: ::core::option::Option<u32>,
10929    #[prost(uint64, optional, tag="5")]
10930    pub start: ::core::option::Option<u64>,
10931}
10932#[derive(Clone, PartialEq, ::prost::Message)]
10933pub struct Ext4ExtRemoveSpaceFtraceEvent {
10934    #[prost(uint64, optional, tag="1")]
10935    pub dev: ::core::option::Option<u64>,
10936    #[prost(uint64, optional, tag="2")]
10937    pub ino: ::core::option::Option<u64>,
10938    #[prost(uint32, optional, tag="3")]
10939    pub start: ::core::option::Option<u32>,
10940    #[prost(uint32, optional, tag="4")]
10941    pub end: ::core::option::Option<u32>,
10942    #[prost(int32, optional, tag="5")]
10943    pub depth: ::core::option::Option<i32>,
10944}
10945#[derive(Clone, PartialEq, ::prost::Message)]
10946pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
10947    #[prost(uint64, optional, tag="1")]
10948    pub dev: ::core::option::Option<u64>,
10949    #[prost(uint64, optional, tag="2")]
10950    pub ino: ::core::option::Option<u64>,
10951    #[prost(uint32, optional, tag="3")]
10952    pub start: ::core::option::Option<u32>,
10953    #[prost(uint32, optional, tag="4")]
10954    pub end: ::core::option::Option<u32>,
10955    #[prost(int32, optional, tag="5")]
10956    pub depth: ::core::option::Option<i32>,
10957    #[prost(int64, optional, tag="6")]
10958    pub partial: ::core::option::Option<i64>,
10959    #[prost(uint32, optional, tag="7")]
10960    pub eh_entries: ::core::option::Option<u32>,
10961    #[prost(uint32, optional, tag="8")]
10962    pub pc_lblk: ::core::option::Option<u32>,
10963    #[prost(uint64, optional, tag="9")]
10964    pub pc_pclu: ::core::option::Option<u64>,
10965    #[prost(int32, optional, tag="10")]
10966    pub pc_state: ::core::option::Option<i32>,
10967}
10968#[derive(Clone, PartialEq, ::prost::Message)]
10969pub struct Ext4ExtRmIdxFtraceEvent {
10970    #[prost(uint64, optional, tag="1")]
10971    pub dev: ::core::option::Option<u64>,
10972    #[prost(uint64, optional, tag="2")]
10973    pub ino: ::core::option::Option<u64>,
10974    #[prost(uint64, optional, tag="3")]
10975    pub pblk: ::core::option::Option<u64>,
10976}
10977#[derive(Clone, PartialEq, ::prost::Message)]
10978pub struct Ext4ExtRmLeafFtraceEvent {
10979    #[prost(uint64, optional, tag="1")]
10980    pub dev: ::core::option::Option<u64>,
10981    #[prost(uint64, optional, tag="2")]
10982    pub ino: ::core::option::Option<u64>,
10983    #[prost(int64, optional, tag="3")]
10984    pub partial: ::core::option::Option<i64>,
10985    #[prost(uint32, optional, tag="4")]
10986    pub start: ::core::option::Option<u32>,
10987    #[prost(uint32, optional, tag="5")]
10988    pub ee_lblk: ::core::option::Option<u32>,
10989    #[prost(uint64, optional, tag="6")]
10990    pub ee_pblk: ::core::option::Option<u64>,
10991    #[prost(int32, optional, tag="7")]
10992    pub ee_len: ::core::option::Option<i32>,
10993    #[prost(uint32, optional, tag="8")]
10994    pub pc_lblk: ::core::option::Option<u32>,
10995    #[prost(uint64, optional, tag="9")]
10996    pub pc_pclu: ::core::option::Option<u64>,
10997    #[prost(int32, optional, tag="10")]
10998    pub pc_state: ::core::option::Option<i32>,
10999}
11000#[derive(Clone, PartialEq, ::prost::Message)]
11001pub struct Ext4ExtShowExtentFtraceEvent {
11002    #[prost(uint64, optional, tag="1")]
11003    pub dev: ::core::option::Option<u64>,
11004    #[prost(uint64, optional, tag="2")]
11005    pub ino: ::core::option::Option<u64>,
11006    #[prost(uint64, optional, tag="3")]
11007    pub pblk: ::core::option::Option<u64>,
11008    #[prost(uint32, optional, tag="4")]
11009    pub lblk: ::core::option::Option<u32>,
11010    #[prost(uint32, optional, tag="5")]
11011    pub len: ::core::option::Option<u32>,
11012}
11013#[derive(Clone, PartialEq, ::prost::Message)]
11014pub struct Ext4FallocateEnterFtraceEvent {
11015    #[prost(uint64, optional, tag="1")]
11016    pub dev: ::core::option::Option<u64>,
11017    #[prost(uint64, optional, tag="2")]
11018    pub ino: ::core::option::Option<u64>,
11019    #[prost(int64, optional, tag="3")]
11020    pub offset: ::core::option::Option<i64>,
11021    #[prost(int64, optional, tag="4")]
11022    pub len: ::core::option::Option<i64>,
11023    #[prost(int32, optional, tag="5")]
11024    pub mode: ::core::option::Option<i32>,
11025    #[prost(int64, optional, tag="6")]
11026    pub pos: ::core::option::Option<i64>,
11027}
11028#[derive(Clone, PartialEq, ::prost::Message)]
11029pub struct Ext4FallocateExitFtraceEvent {
11030    #[prost(uint64, optional, tag="1")]
11031    pub dev: ::core::option::Option<u64>,
11032    #[prost(uint64, optional, tag="2")]
11033    pub ino: ::core::option::Option<u64>,
11034    #[prost(int64, optional, tag="3")]
11035    pub pos: ::core::option::Option<i64>,
11036    #[prost(uint32, optional, tag="4")]
11037    pub blocks: ::core::option::Option<u32>,
11038    #[prost(int32, optional, tag="5")]
11039    pub ret: ::core::option::Option<i32>,
11040}
11041#[derive(Clone, PartialEq, ::prost::Message)]
11042pub struct Ext4FindDelallocRangeFtraceEvent {
11043    #[prost(uint64, optional, tag="1")]
11044    pub dev: ::core::option::Option<u64>,
11045    #[prost(uint64, optional, tag="2")]
11046    pub ino: ::core::option::Option<u64>,
11047    #[prost(uint32, optional, tag="3")]
11048    pub from: ::core::option::Option<u32>,
11049    #[prost(uint32, optional, tag="4")]
11050    pub to: ::core::option::Option<u32>,
11051    #[prost(int32, optional, tag="5")]
11052    pub reverse: ::core::option::Option<i32>,
11053    #[prost(int32, optional, tag="6")]
11054    pub found: ::core::option::Option<i32>,
11055    #[prost(uint32, optional, tag="7")]
11056    pub found_blk: ::core::option::Option<u32>,
11057}
11058#[derive(Clone, PartialEq, ::prost::Message)]
11059pub struct Ext4ForgetFtraceEvent {
11060    #[prost(uint64, optional, tag="1")]
11061    pub dev: ::core::option::Option<u64>,
11062    #[prost(uint64, optional, tag="2")]
11063    pub ino: ::core::option::Option<u64>,
11064    #[prost(uint64, optional, tag="3")]
11065    pub block: ::core::option::Option<u64>,
11066    #[prost(int32, optional, tag="4")]
11067    pub is_metadata: ::core::option::Option<i32>,
11068    #[prost(uint32, optional, tag="5")]
11069    pub mode: ::core::option::Option<u32>,
11070}
11071#[derive(Clone, PartialEq, ::prost::Message)]
11072pub struct Ext4FreeBlocksFtraceEvent {
11073    #[prost(uint64, optional, tag="1")]
11074    pub dev: ::core::option::Option<u64>,
11075    #[prost(uint64, optional, tag="2")]
11076    pub ino: ::core::option::Option<u64>,
11077    #[prost(uint64, optional, tag="3")]
11078    pub block: ::core::option::Option<u64>,
11079    #[prost(uint64, optional, tag="4")]
11080    pub count: ::core::option::Option<u64>,
11081    #[prost(int32, optional, tag="5")]
11082    pub flags: ::core::option::Option<i32>,
11083    #[prost(uint32, optional, tag="6")]
11084    pub mode: ::core::option::Option<u32>,
11085}
11086#[derive(Clone, PartialEq, ::prost::Message)]
11087pub struct Ext4FreeInodeFtraceEvent {
11088    #[prost(uint64, optional, tag="1")]
11089    pub dev: ::core::option::Option<u64>,
11090    #[prost(uint64, optional, tag="2")]
11091    pub ino: ::core::option::Option<u64>,
11092    #[prost(uint32, optional, tag="3")]
11093    pub uid: ::core::option::Option<u32>,
11094    #[prost(uint32, optional, tag="4")]
11095    pub gid: ::core::option::Option<u32>,
11096    #[prost(uint64, optional, tag="5")]
11097    pub blocks: ::core::option::Option<u64>,
11098    #[prost(uint32, optional, tag="6")]
11099    pub mode: ::core::option::Option<u32>,
11100}
11101#[derive(Clone, PartialEq, ::prost::Message)]
11102pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11103    #[prost(uint64, optional, tag="1")]
11104    pub dev: ::core::option::Option<u64>,
11105    #[prost(uint32, optional, tag="2")]
11106    pub flags: ::core::option::Option<u32>,
11107    #[prost(uint32, optional, tag="3")]
11108    pub lblk: ::core::option::Option<u32>,
11109    #[prost(uint64, optional, tag="4")]
11110    pub pblk: ::core::option::Option<u64>,
11111    #[prost(uint32, optional, tag="5")]
11112    pub len: ::core::option::Option<u32>,
11113    #[prost(int32, optional, tag="6")]
11114    pub ret: ::core::option::Option<i32>,
11115}
11116#[derive(Clone, PartialEq, ::prost::Message)]
11117pub struct Ext4GetReservedClusterAllocFtraceEvent {
11118    #[prost(uint64, optional, tag="1")]
11119    pub dev: ::core::option::Option<u64>,
11120    #[prost(uint64, optional, tag="2")]
11121    pub ino: ::core::option::Option<u64>,
11122    #[prost(uint32, optional, tag="3")]
11123    pub lblk: ::core::option::Option<u32>,
11124    #[prost(uint32, optional, tag="4")]
11125    pub len: ::core::option::Option<u32>,
11126}
11127#[derive(Clone, PartialEq, ::prost::Message)]
11128pub struct Ext4IndMapBlocksEnterFtraceEvent {
11129    #[prost(uint64, optional, tag="1")]
11130    pub dev: ::core::option::Option<u64>,
11131    #[prost(uint64, optional, tag="2")]
11132    pub ino: ::core::option::Option<u64>,
11133    #[prost(uint32, optional, tag="3")]
11134    pub lblk: ::core::option::Option<u32>,
11135    #[prost(uint32, optional, tag="4")]
11136    pub len: ::core::option::Option<u32>,
11137    #[prost(uint32, optional, tag="5")]
11138    pub flags: ::core::option::Option<u32>,
11139}
11140#[derive(Clone, PartialEq, ::prost::Message)]
11141pub struct Ext4IndMapBlocksExitFtraceEvent {
11142    #[prost(uint64, optional, tag="1")]
11143    pub dev: ::core::option::Option<u64>,
11144    #[prost(uint64, optional, tag="2")]
11145    pub ino: ::core::option::Option<u64>,
11146    #[prost(uint32, optional, tag="3")]
11147    pub flags: ::core::option::Option<u32>,
11148    #[prost(uint64, optional, tag="4")]
11149    pub pblk: ::core::option::Option<u64>,
11150    #[prost(uint32, optional, tag="5")]
11151    pub lblk: ::core::option::Option<u32>,
11152    #[prost(uint32, optional, tag="6")]
11153    pub len: ::core::option::Option<u32>,
11154    #[prost(uint32, optional, tag="7")]
11155    pub mflags: ::core::option::Option<u32>,
11156    #[prost(int32, optional, tag="8")]
11157    pub ret: ::core::option::Option<i32>,
11158}
11159#[derive(Clone, PartialEq, ::prost::Message)]
11160pub struct Ext4InsertRangeFtraceEvent {
11161    #[prost(uint64, optional, tag="1")]
11162    pub dev: ::core::option::Option<u64>,
11163    #[prost(uint64, optional, tag="2")]
11164    pub ino: ::core::option::Option<u64>,
11165    #[prost(int64, optional, tag="3")]
11166    pub offset: ::core::option::Option<i64>,
11167    #[prost(int64, optional, tag="4")]
11168    pub len: ::core::option::Option<i64>,
11169}
11170#[derive(Clone, PartialEq, ::prost::Message)]
11171pub struct Ext4InvalidatepageFtraceEvent {
11172    #[prost(uint64, optional, tag="1")]
11173    pub dev: ::core::option::Option<u64>,
11174    #[prost(uint64, optional, tag="2")]
11175    pub ino: ::core::option::Option<u64>,
11176    #[prost(uint64, optional, tag="3")]
11177    pub index: ::core::option::Option<u64>,
11178    #[prost(uint64, optional, tag="4")]
11179    pub offset: ::core::option::Option<u64>,
11180    #[prost(uint32, optional, tag="5")]
11181    pub length: ::core::option::Option<u32>,
11182}
11183#[derive(Clone, PartialEq, ::prost::Message)]
11184pub struct Ext4JournalStartFtraceEvent {
11185    #[prost(uint64, optional, tag="1")]
11186    pub dev: ::core::option::Option<u64>,
11187    #[prost(uint64, optional, tag="2")]
11188    pub ip: ::core::option::Option<u64>,
11189    #[prost(int32, optional, tag="3")]
11190    pub blocks: ::core::option::Option<i32>,
11191    #[prost(int32, optional, tag="4")]
11192    pub rsv_blocks: ::core::option::Option<i32>,
11193    #[prost(int32, optional, tag="5")]
11194    pub nblocks: ::core::option::Option<i32>,
11195    #[prost(int32, optional, tag="6")]
11196    pub revoke_creds: ::core::option::Option<i32>,
11197}
11198#[derive(Clone, PartialEq, ::prost::Message)]
11199pub struct Ext4JournalStartReservedFtraceEvent {
11200    #[prost(uint64, optional, tag="1")]
11201    pub dev: ::core::option::Option<u64>,
11202    #[prost(uint64, optional, tag="2")]
11203    pub ip: ::core::option::Option<u64>,
11204    #[prost(int32, optional, tag="3")]
11205    pub blocks: ::core::option::Option<i32>,
11206}
11207#[derive(Clone, PartialEq, ::prost::Message)]
11208pub struct Ext4JournalledInvalidatepageFtraceEvent {
11209    #[prost(uint64, optional, tag="1")]
11210    pub dev: ::core::option::Option<u64>,
11211    #[prost(uint64, optional, tag="2")]
11212    pub ino: ::core::option::Option<u64>,
11213    #[prost(uint64, optional, tag="3")]
11214    pub index: ::core::option::Option<u64>,
11215    #[prost(uint64, optional, tag="4")]
11216    pub offset: ::core::option::Option<u64>,
11217    #[prost(uint32, optional, tag="5")]
11218    pub length: ::core::option::Option<u32>,
11219}
11220#[derive(Clone, PartialEq, ::prost::Message)]
11221pub struct Ext4JournalledWriteEndFtraceEvent {
11222    #[prost(uint64, optional, tag="1")]
11223    pub dev: ::core::option::Option<u64>,
11224    #[prost(uint64, optional, tag="2")]
11225    pub ino: ::core::option::Option<u64>,
11226    #[prost(int64, optional, tag="3")]
11227    pub pos: ::core::option::Option<i64>,
11228    #[prost(uint32, optional, tag="4")]
11229    pub len: ::core::option::Option<u32>,
11230    #[prost(uint32, optional, tag="5")]
11231    pub copied: ::core::option::Option<u32>,
11232}
11233#[derive(Clone, PartialEq, ::prost::Message)]
11234pub struct Ext4LoadInodeFtraceEvent {
11235    #[prost(uint64, optional, tag="1")]
11236    pub dev: ::core::option::Option<u64>,
11237    #[prost(uint64, optional, tag="2")]
11238    pub ino: ::core::option::Option<u64>,
11239}
11240#[derive(Clone, PartialEq, ::prost::Message)]
11241pub struct Ext4LoadInodeBitmapFtraceEvent {
11242    #[prost(uint64, optional, tag="1")]
11243    pub dev: ::core::option::Option<u64>,
11244    #[prost(uint32, optional, tag="2")]
11245    pub group: ::core::option::Option<u32>,
11246}
11247#[derive(Clone, PartialEq, ::prost::Message)]
11248pub struct Ext4MarkInodeDirtyFtraceEvent {
11249    #[prost(uint64, optional, tag="1")]
11250    pub dev: ::core::option::Option<u64>,
11251    #[prost(uint64, optional, tag="2")]
11252    pub ino: ::core::option::Option<u64>,
11253    #[prost(uint64, optional, tag="3")]
11254    pub ip: ::core::option::Option<u64>,
11255}
11256#[derive(Clone, PartialEq, ::prost::Message)]
11257pub struct Ext4MbBitmapLoadFtraceEvent {
11258    #[prost(uint64, optional, tag="1")]
11259    pub dev: ::core::option::Option<u64>,
11260    #[prost(uint32, optional, tag="2")]
11261    pub group: ::core::option::Option<u32>,
11262}
11263#[derive(Clone, PartialEq, ::prost::Message)]
11264pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11265    #[prost(uint64, optional, tag="1")]
11266    pub dev: ::core::option::Option<u64>,
11267    #[prost(uint32, optional, tag="2")]
11268    pub group: ::core::option::Option<u32>,
11269}
11270#[derive(Clone, PartialEq, ::prost::Message)]
11271pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11272    #[prost(uint64, optional, tag="1")]
11273    pub dev: ::core::option::Option<u64>,
11274    #[prost(int32, optional, tag="2")]
11275    pub needed: ::core::option::Option<i32>,
11276}
11277#[derive(Clone, PartialEq, ::prost::Message)]
11278pub struct Ext4MbNewGroupPaFtraceEvent {
11279    #[prost(uint64, optional, tag="1")]
11280    pub dev: ::core::option::Option<u64>,
11281    #[prost(uint64, optional, tag="2")]
11282    pub ino: ::core::option::Option<u64>,
11283    #[prost(uint64, optional, tag="3")]
11284    pub pa_pstart: ::core::option::Option<u64>,
11285    #[prost(uint64, optional, tag="4")]
11286    pub pa_lstart: ::core::option::Option<u64>,
11287    #[prost(uint32, optional, tag="5")]
11288    pub pa_len: ::core::option::Option<u32>,
11289}
11290#[derive(Clone, PartialEq, ::prost::Message)]
11291pub struct Ext4MbNewInodePaFtraceEvent {
11292    #[prost(uint64, optional, tag="1")]
11293    pub dev: ::core::option::Option<u64>,
11294    #[prost(uint64, optional, tag="2")]
11295    pub ino: ::core::option::Option<u64>,
11296    #[prost(uint64, optional, tag="3")]
11297    pub pa_pstart: ::core::option::Option<u64>,
11298    #[prost(uint64, optional, tag="4")]
11299    pub pa_lstart: ::core::option::Option<u64>,
11300    #[prost(uint32, optional, tag="5")]
11301    pub pa_len: ::core::option::Option<u32>,
11302}
11303#[derive(Clone, PartialEq, ::prost::Message)]
11304pub struct Ext4MbReleaseGroupPaFtraceEvent {
11305    #[prost(uint64, optional, tag="1")]
11306    pub dev: ::core::option::Option<u64>,
11307    #[prost(uint64, optional, tag="2")]
11308    pub pa_pstart: ::core::option::Option<u64>,
11309    #[prost(uint32, optional, tag="3")]
11310    pub pa_len: ::core::option::Option<u32>,
11311}
11312#[derive(Clone, PartialEq, ::prost::Message)]
11313pub struct Ext4MbReleaseInodePaFtraceEvent {
11314    #[prost(uint64, optional, tag="1")]
11315    pub dev: ::core::option::Option<u64>,
11316    #[prost(uint64, optional, tag="2")]
11317    pub ino: ::core::option::Option<u64>,
11318    #[prost(uint64, optional, tag="3")]
11319    pub block: ::core::option::Option<u64>,
11320    #[prost(uint32, optional, tag="4")]
11321    pub count: ::core::option::Option<u32>,
11322}
11323#[derive(Clone, PartialEq, ::prost::Message)]
11324pub struct Ext4MballocAllocFtraceEvent {
11325    #[prost(uint64, optional, tag="1")]
11326    pub dev: ::core::option::Option<u64>,
11327    #[prost(uint64, optional, tag="2")]
11328    pub ino: ::core::option::Option<u64>,
11329    #[prost(uint32, optional, tag="3")]
11330    pub orig_logical: ::core::option::Option<u32>,
11331    #[prost(int32, optional, tag="4")]
11332    pub orig_start: ::core::option::Option<i32>,
11333    #[prost(uint32, optional, tag="5")]
11334    pub orig_group: ::core::option::Option<u32>,
11335    #[prost(int32, optional, tag="6")]
11336    pub orig_len: ::core::option::Option<i32>,
11337    #[prost(uint32, optional, tag="7")]
11338    pub goal_logical: ::core::option::Option<u32>,
11339    #[prost(int32, optional, tag="8")]
11340    pub goal_start: ::core::option::Option<i32>,
11341    #[prost(uint32, optional, tag="9")]
11342    pub goal_group: ::core::option::Option<u32>,
11343    #[prost(int32, optional, tag="10")]
11344    pub goal_len: ::core::option::Option<i32>,
11345    #[prost(uint32, optional, tag="11")]
11346    pub result_logical: ::core::option::Option<u32>,
11347    #[prost(int32, optional, tag="12")]
11348    pub result_start: ::core::option::Option<i32>,
11349    #[prost(uint32, optional, tag="13")]
11350    pub result_group: ::core::option::Option<u32>,
11351    #[prost(int32, optional, tag="14")]
11352    pub result_len: ::core::option::Option<i32>,
11353    #[prost(uint32, optional, tag="15")]
11354    pub found: ::core::option::Option<u32>,
11355    #[prost(uint32, optional, tag="16")]
11356    pub groups: ::core::option::Option<u32>,
11357    #[prost(uint32, optional, tag="17")]
11358    pub buddy: ::core::option::Option<u32>,
11359    #[prost(uint32, optional, tag="18")]
11360    pub flags: ::core::option::Option<u32>,
11361    #[prost(uint32, optional, tag="19")]
11362    pub tail: ::core::option::Option<u32>,
11363    #[prost(uint32, optional, tag="20")]
11364    pub cr: ::core::option::Option<u32>,
11365}
11366#[derive(Clone, PartialEq, ::prost::Message)]
11367pub struct Ext4MballocDiscardFtraceEvent {
11368    #[prost(uint64, optional, tag="1")]
11369    pub dev: ::core::option::Option<u64>,
11370    #[prost(uint64, optional, tag="2")]
11371    pub ino: ::core::option::Option<u64>,
11372    #[prost(int32, optional, tag="3")]
11373    pub result_start: ::core::option::Option<i32>,
11374    #[prost(uint32, optional, tag="4")]
11375    pub result_group: ::core::option::Option<u32>,
11376    #[prost(int32, optional, tag="5")]
11377    pub result_len: ::core::option::Option<i32>,
11378}
11379#[derive(Clone, PartialEq, ::prost::Message)]
11380pub struct Ext4MballocFreeFtraceEvent {
11381    #[prost(uint64, optional, tag="1")]
11382    pub dev: ::core::option::Option<u64>,
11383    #[prost(uint64, optional, tag="2")]
11384    pub ino: ::core::option::Option<u64>,
11385    #[prost(int32, optional, tag="3")]
11386    pub result_start: ::core::option::Option<i32>,
11387    #[prost(uint32, optional, tag="4")]
11388    pub result_group: ::core::option::Option<u32>,
11389    #[prost(int32, optional, tag="5")]
11390    pub result_len: ::core::option::Option<i32>,
11391}
11392#[derive(Clone, PartialEq, ::prost::Message)]
11393pub struct Ext4MballocPreallocFtraceEvent {
11394    #[prost(uint64, optional, tag="1")]
11395    pub dev: ::core::option::Option<u64>,
11396    #[prost(uint64, optional, tag="2")]
11397    pub ino: ::core::option::Option<u64>,
11398    #[prost(uint32, optional, tag="3")]
11399    pub orig_logical: ::core::option::Option<u32>,
11400    #[prost(int32, optional, tag="4")]
11401    pub orig_start: ::core::option::Option<i32>,
11402    #[prost(uint32, optional, tag="5")]
11403    pub orig_group: ::core::option::Option<u32>,
11404    #[prost(int32, optional, tag="6")]
11405    pub orig_len: ::core::option::Option<i32>,
11406    #[prost(uint32, optional, tag="7")]
11407    pub result_logical: ::core::option::Option<u32>,
11408    #[prost(int32, optional, tag="8")]
11409    pub result_start: ::core::option::Option<i32>,
11410    #[prost(uint32, optional, tag="9")]
11411    pub result_group: ::core::option::Option<u32>,
11412    #[prost(int32, optional, tag="10")]
11413    pub result_len: ::core::option::Option<i32>,
11414}
11415#[derive(Clone, PartialEq, ::prost::Message)]
11416pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
11417    #[prost(uint64, optional, tag="1")]
11418    pub dev: ::core::option::Option<u64>,
11419    #[prost(uint64, optional, tag="2")]
11420    pub ino: ::core::option::Option<u64>,
11421    #[prost(uint64, optional, tag="3")]
11422    pub orig_ino: ::core::option::Option<u64>,
11423    #[prost(uint32, optional, tag="4")]
11424    pub uid: ::core::option::Option<u32>,
11425    #[prost(uint32, optional, tag="5")]
11426    pub gid: ::core::option::Option<u32>,
11427    #[prost(uint32, optional, tag="6")]
11428    pub mode: ::core::option::Option<u32>,
11429}
11430#[derive(Clone, PartialEq, ::prost::Message)]
11431pub struct Ext4PunchHoleFtraceEvent {
11432    #[prost(uint64, optional, tag="1")]
11433    pub dev: ::core::option::Option<u64>,
11434    #[prost(uint64, optional, tag="2")]
11435    pub ino: ::core::option::Option<u64>,
11436    #[prost(int64, optional, tag="3")]
11437    pub offset: ::core::option::Option<i64>,
11438    #[prost(int64, optional, tag="4")]
11439    pub len: ::core::option::Option<i64>,
11440    #[prost(int32, optional, tag="5")]
11441    pub mode: ::core::option::Option<i32>,
11442}
11443#[derive(Clone, PartialEq, ::prost::Message)]
11444pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
11445    #[prost(uint64, optional, tag="1")]
11446    pub dev: ::core::option::Option<u64>,
11447    #[prost(uint32, optional, tag="2")]
11448    pub group: ::core::option::Option<u32>,
11449    #[prost(uint32, optional, tag="3")]
11450    pub prefetch: ::core::option::Option<u32>,
11451}
11452#[derive(Clone, PartialEq, ::prost::Message)]
11453pub struct Ext4ReadpageFtraceEvent {
11454    #[prost(uint64, optional, tag="1")]
11455    pub dev: ::core::option::Option<u64>,
11456    #[prost(uint64, optional, tag="2")]
11457    pub ino: ::core::option::Option<u64>,
11458    #[prost(uint64, optional, tag="3")]
11459    pub index: ::core::option::Option<u64>,
11460}
11461#[derive(Clone, PartialEq, ::prost::Message)]
11462pub struct Ext4ReleasepageFtraceEvent {
11463    #[prost(uint64, optional, tag="1")]
11464    pub dev: ::core::option::Option<u64>,
11465    #[prost(uint64, optional, tag="2")]
11466    pub ino: ::core::option::Option<u64>,
11467    #[prost(uint64, optional, tag="3")]
11468    pub index: ::core::option::Option<u64>,
11469}
11470#[derive(Clone, PartialEq, ::prost::Message)]
11471pub struct Ext4RemoveBlocksFtraceEvent {
11472    #[prost(uint64, optional, tag="1")]
11473    pub dev: ::core::option::Option<u64>,
11474    #[prost(uint64, optional, tag="2")]
11475    pub ino: ::core::option::Option<u64>,
11476    #[prost(uint32, optional, tag="3")]
11477    pub from: ::core::option::Option<u32>,
11478    #[prost(uint32, optional, tag="4")]
11479    pub to: ::core::option::Option<u32>,
11480    #[prost(int64, optional, tag="5")]
11481    pub partial: ::core::option::Option<i64>,
11482    #[prost(uint64, optional, tag="6")]
11483    pub ee_pblk: ::core::option::Option<u64>,
11484    #[prost(uint32, optional, tag="7")]
11485    pub ee_lblk: ::core::option::Option<u32>,
11486    #[prost(uint32, optional, tag="8")]
11487    pub ee_len: ::core::option::Option<u32>,
11488    #[prost(uint32, optional, tag="9")]
11489    pub pc_lblk: ::core::option::Option<u32>,
11490    #[prost(uint64, optional, tag="10")]
11491    pub pc_pclu: ::core::option::Option<u64>,
11492    #[prost(int32, optional, tag="11")]
11493    pub pc_state: ::core::option::Option<i32>,
11494}
11495#[derive(Clone, PartialEq, ::prost::Message)]
11496pub struct Ext4RequestBlocksFtraceEvent {
11497    #[prost(uint64, optional, tag="1")]
11498    pub dev: ::core::option::Option<u64>,
11499    #[prost(uint64, optional, tag="2")]
11500    pub ino: ::core::option::Option<u64>,
11501    #[prost(uint32, optional, tag="3")]
11502    pub len: ::core::option::Option<u32>,
11503    #[prost(uint32, optional, tag="4")]
11504    pub logical: ::core::option::Option<u32>,
11505    #[prost(uint32, optional, tag="5")]
11506    pub lleft: ::core::option::Option<u32>,
11507    #[prost(uint32, optional, tag="6")]
11508    pub lright: ::core::option::Option<u32>,
11509    #[prost(uint64, optional, tag="7")]
11510    pub goal: ::core::option::Option<u64>,
11511    #[prost(uint64, optional, tag="8")]
11512    pub pleft: ::core::option::Option<u64>,
11513    #[prost(uint64, optional, tag="9")]
11514    pub pright: ::core::option::Option<u64>,
11515    #[prost(uint32, optional, tag="10")]
11516    pub flags: ::core::option::Option<u32>,
11517}
11518#[derive(Clone, PartialEq, ::prost::Message)]
11519pub struct Ext4RequestInodeFtraceEvent {
11520    #[prost(uint64, optional, tag="1")]
11521    pub dev: ::core::option::Option<u64>,
11522    #[prost(uint64, optional, tag="2")]
11523    pub dir: ::core::option::Option<u64>,
11524    #[prost(uint32, optional, tag="3")]
11525    pub mode: ::core::option::Option<u32>,
11526}
11527#[derive(Clone, PartialEq, ::prost::Message)]
11528pub struct Ext4SyncFsFtraceEvent {
11529    #[prost(uint64, optional, tag="1")]
11530    pub dev: ::core::option::Option<u64>,
11531    #[prost(int32, optional, tag="2")]
11532    pub wait: ::core::option::Option<i32>,
11533}
11534#[derive(Clone, PartialEq, ::prost::Message)]
11535pub struct Ext4TrimAllFreeFtraceEvent {
11536    #[prost(int32, optional, tag="1")]
11537    pub dev_major: ::core::option::Option<i32>,
11538    #[prost(int32, optional, tag="2")]
11539    pub dev_minor: ::core::option::Option<i32>,
11540    #[prost(uint32, optional, tag="3")]
11541    pub group: ::core::option::Option<u32>,
11542    #[prost(int32, optional, tag="4")]
11543    pub start: ::core::option::Option<i32>,
11544    #[prost(int32, optional, tag="5")]
11545    pub len: ::core::option::Option<i32>,
11546}
11547#[derive(Clone, PartialEq, ::prost::Message)]
11548pub struct Ext4TrimExtentFtraceEvent {
11549    #[prost(int32, optional, tag="1")]
11550    pub dev_major: ::core::option::Option<i32>,
11551    #[prost(int32, optional, tag="2")]
11552    pub dev_minor: ::core::option::Option<i32>,
11553    #[prost(uint32, optional, tag="3")]
11554    pub group: ::core::option::Option<u32>,
11555    #[prost(int32, optional, tag="4")]
11556    pub start: ::core::option::Option<i32>,
11557    #[prost(int32, optional, tag="5")]
11558    pub len: ::core::option::Option<i32>,
11559}
11560#[derive(Clone, PartialEq, ::prost::Message)]
11561pub struct Ext4TruncateEnterFtraceEvent {
11562    #[prost(uint64, optional, tag="1")]
11563    pub dev: ::core::option::Option<u64>,
11564    #[prost(uint64, optional, tag="2")]
11565    pub ino: ::core::option::Option<u64>,
11566    #[prost(uint64, optional, tag="3")]
11567    pub blocks: ::core::option::Option<u64>,
11568}
11569#[derive(Clone, PartialEq, ::prost::Message)]
11570pub struct Ext4TruncateExitFtraceEvent {
11571    #[prost(uint64, optional, tag="1")]
11572    pub dev: ::core::option::Option<u64>,
11573    #[prost(uint64, optional, tag="2")]
11574    pub ino: ::core::option::Option<u64>,
11575    #[prost(uint64, optional, tag="3")]
11576    pub blocks: ::core::option::Option<u64>,
11577}
11578#[derive(Clone, PartialEq, ::prost::Message)]
11579pub struct Ext4UnlinkEnterFtraceEvent {
11580    #[prost(uint64, optional, tag="1")]
11581    pub dev: ::core::option::Option<u64>,
11582    #[prost(uint64, optional, tag="2")]
11583    pub ino: ::core::option::Option<u64>,
11584    #[prost(uint64, optional, tag="3")]
11585    pub parent: ::core::option::Option<u64>,
11586    #[prost(int64, optional, tag="4")]
11587    pub size: ::core::option::Option<i64>,
11588}
11589#[derive(Clone, PartialEq, ::prost::Message)]
11590pub struct Ext4UnlinkExitFtraceEvent {
11591    #[prost(uint64, optional, tag="1")]
11592    pub dev: ::core::option::Option<u64>,
11593    #[prost(uint64, optional, tag="2")]
11594    pub ino: ::core::option::Option<u64>,
11595    #[prost(int32, optional, tag="3")]
11596    pub ret: ::core::option::Option<i32>,
11597}
11598#[derive(Clone, PartialEq, ::prost::Message)]
11599pub struct Ext4WriteBeginFtraceEvent {
11600    #[prost(uint64, optional, tag="1")]
11601    pub dev: ::core::option::Option<u64>,
11602    #[prost(uint64, optional, tag="2")]
11603    pub ino: ::core::option::Option<u64>,
11604    #[prost(int64, optional, tag="3")]
11605    pub pos: ::core::option::Option<i64>,
11606    #[prost(uint32, optional, tag="4")]
11607    pub len: ::core::option::Option<u32>,
11608    #[prost(uint32, optional, tag="5")]
11609    pub flags: ::core::option::Option<u32>,
11610}
11611#[derive(Clone, PartialEq, ::prost::Message)]
11612pub struct Ext4WriteEndFtraceEvent {
11613    #[prost(uint64, optional, tag="1")]
11614    pub dev: ::core::option::Option<u64>,
11615    #[prost(uint64, optional, tag="2")]
11616    pub ino: ::core::option::Option<u64>,
11617    #[prost(int64, optional, tag="3")]
11618    pub pos: ::core::option::Option<i64>,
11619    #[prost(uint32, optional, tag="4")]
11620    pub len: ::core::option::Option<u32>,
11621    #[prost(uint32, optional, tag="5")]
11622    pub copied: ::core::option::Option<u32>,
11623}
11624#[derive(Clone, PartialEq, ::prost::Message)]
11625pub struct Ext4WritepageFtraceEvent {
11626    #[prost(uint64, optional, tag="1")]
11627    pub dev: ::core::option::Option<u64>,
11628    #[prost(uint64, optional, tag="2")]
11629    pub ino: ::core::option::Option<u64>,
11630    #[prost(uint64, optional, tag="3")]
11631    pub index: ::core::option::Option<u64>,
11632}
11633#[derive(Clone, PartialEq, ::prost::Message)]
11634pub struct Ext4WritepagesFtraceEvent {
11635    #[prost(uint64, optional, tag="1")]
11636    pub dev: ::core::option::Option<u64>,
11637    #[prost(uint64, optional, tag="2")]
11638    pub ino: ::core::option::Option<u64>,
11639    #[prost(int64, optional, tag="3")]
11640    pub nr_to_write: ::core::option::Option<i64>,
11641    #[prost(int64, optional, tag="4")]
11642    pub pages_skipped: ::core::option::Option<i64>,
11643    #[prost(int64, optional, tag="5")]
11644    pub range_start: ::core::option::Option<i64>,
11645    #[prost(int64, optional, tag="6")]
11646    pub range_end: ::core::option::Option<i64>,
11647    #[prost(uint64, optional, tag="7")]
11648    pub writeback_index: ::core::option::Option<u64>,
11649    #[prost(int32, optional, tag="8")]
11650    pub sync_mode: ::core::option::Option<i32>,
11651    #[prost(uint32, optional, tag="9")]
11652    pub for_kupdate: ::core::option::Option<u32>,
11653    #[prost(uint32, optional, tag="10")]
11654    pub range_cyclic: ::core::option::Option<u32>,
11655}
11656#[derive(Clone, PartialEq, ::prost::Message)]
11657pub struct Ext4WritepagesResultFtraceEvent {
11658    #[prost(uint64, optional, tag="1")]
11659    pub dev: ::core::option::Option<u64>,
11660    #[prost(uint64, optional, tag="2")]
11661    pub ino: ::core::option::Option<u64>,
11662    #[prost(int32, optional, tag="3")]
11663    pub ret: ::core::option::Option<i32>,
11664    #[prost(int32, optional, tag="4")]
11665    pub pages_written: ::core::option::Option<i32>,
11666    #[prost(int64, optional, tag="5")]
11667    pub pages_skipped: ::core::option::Option<i64>,
11668    #[prost(uint64, optional, tag="6")]
11669    pub writeback_index: ::core::option::Option<u64>,
11670    #[prost(int32, optional, tag="7")]
11671    pub sync_mode: ::core::option::Option<i32>,
11672}
11673#[derive(Clone, PartialEq, ::prost::Message)]
11674pub struct Ext4ZeroRangeFtraceEvent {
11675    #[prost(uint64, optional, tag="1")]
11676    pub dev: ::core::option::Option<u64>,
11677    #[prost(uint64, optional, tag="2")]
11678    pub ino: ::core::option::Option<u64>,
11679    #[prost(int64, optional, tag="3")]
11680    pub offset: ::core::option::Option<i64>,
11681    #[prost(int64, optional, tag="4")]
11682    pub len: ::core::option::Option<i64>,
11683    #[prost(int32, optional, tag="5")]
11684    pub mode: ::core::option::Option<i32>,
11685}
11686// End of protos/perfetto/trace/ftrace/ext4.proto
11687
11688// Begin of protos/perfetto/trace/ftrace/f2fs.proto
11689
11690#[derive(Clone, PartialEq, ::prost::Message)]
11691pub struct F2fsDoSubmitBioFtraceEvent {
11692    #[prost(uint64, optional, tag="1")]
11693    pub dev: ::core::option::Option<u64>,
11694    #[prost(int32, optional, tag="2")]
11695    pub btype: ::core::option::Option<i32>,
11696    #[prost(uint32, optional, tag="3")]
11697    pub sync: ::core::option::Option<u32>,
11698    #[prost(uint64, optional, tag="4")]
11699    pub sector: ::core::option::Option<u64>,
11700    #[prost(uint32, optional, tag="5")]
11701    pub size: ::core::option::Option<u32>,
11702}
11703#[derive(Clone, PartialEq, ::prost::Message)]
11704pub struct F2fsEvictInodeFtraceEvent {
11705    #[prost(uint64, optional, tag="1")]
11706    pub dev: ::core::option::Option<u64>,
11707    #[prost(uint64, optional, tag="2")]
11708    pub ino: ::core::option::Option<u64>,
11709    #[prost(uint64, optional, tag="3")]
11710    pub pino: ::core::option::Option<u64>,
11711    #[prost(uint32, optional, tag="4")]
11712    pub mode: ::core::option::Option<u32>,
11713    #[prost(int64, optional, tag="5")]
11714    pub size: ::core::option::Option<i64>,
11715    #[prost(uint32, optional, tag="6")]
11716    pub nlink: ::core::option::Option<u32>,
11717    #[prost(uint64, optional, tag="7")]
11718    pub blocks: ::core::option::Option<u64>,
11719    #[prost(uint32, optional, tag="8")]
11720    pub advise: ::core::option::Option<u32>,
11721}
11722#[derive(Clone, PartialEq, ::prost::Message)]
11723pub struct F2fsFallocateFtraceEvent {
11724    #[prost(uint64, optional, tag="1")]
11725    pub dev: ::core::option::Option<u64>,
11726    #[prost(uint64, optional, tag="2")]
11727    pub ino: ::core::option::Option<u64>,
11728    #[prost(int32, optional, tag="3")]
11729    pub mode: ::core::option::Option<i32>,
11730    #[prost(int64, optional, tag="4")]
11731    pub offset: ::core::option::Option<i64>,
11732    #[prost(int64, optional, tag="5")]
11733    pub len: ::core::option::Option<i64>,
11734    #[prost(int64, optional, tag="6")]
11735    pub size: ::core::option::Option<i64>,
11736    #[prost(uint64, optional, tag="7")]
11737    pub blocks: ::core::option::Option<u64>,
11738    #[prost(int32, optional, tag="8")]
11739    pub ret: ::core::option::Option<i32>,
11740}
11741#[derive(Clone, PartialEq, ::prost::Message)]
11742pub struct F2fsGetDataBlockFtraceEvent {
11743    #[prost(uint64, optional, tag="1")]
11744    pub dev: ::core::option::Option<u64>,
11745    #[prost(uint64, optional, tag="2")]
11746    pub ino: ::core::option::Option<u64>,
11747    #[prost(uint64, optional, tag="3")]
11748    pub iblock: ::core::option::Option<u64>,
11749    #[prost(uint64, optional, tag="4")]
11750    pub bh_start: ::core::option::Option<u64>,
11751    #[prost(uint64, optional, tag="5")]
11752    pub bh_size: ::core::option::Option<u64>,
11753    #[prost(int32, optional, tag="6")]
11754    pub ret: ::core::option::Option<i32>,
11755}
11756#[derive(Clone, PartialEq, ::prost::Message)]
11757pub struct F2fsGetVictimFtraceEvent {
11758    #[prost(uint64, optional, tag="1")]
11759    pub dev: ::core::option::Option<u64>,
11760    #[prost(int32, optional, tag="2")]
11761    pub r#type: ::core::option::Option<i32>,
11762    #[prost(int32, optional, tag="3")]
11763    pub gc_type: ::core::option::Option<i32>,
11764    #[prost(int32, optional, tag="4")]
11765    pub alloc_mode: ::core::option::Option<i32>,
11766    #[prost(int32, optional, tag="5")]
11767    pub gc_mode: ::core::option::Option<i32>,
11768    #[prost(uint32, optional, tag="6")]
11769    pub victim: ::core::option::Option<u32>,
11770    #[prost(uint32, optional, tag="7")]
11771    pub ofs_unit: ::core::option::Option<u32>,
11772    #[prost(uint32, optional, tag="8")]
11773    pub pre_victim: ::core::option::Option<u32>,
11774    #[prost(uint32, optional, tag="9")]
11775    pub prefree: ::core::option::Option<u32>,
11776    #[prost(uint32, optional, tag="10")]
11777    pub free: ::core::option::Option<u32>,
11778    #[prost(uint32, optional, tag="11")]
11779    pub cost: ::core::option::Option<u32>,
11780}
11781#[derive(Clone, PartialEq, ::prost::Message)]
11782pub struct F2fsIgetFtraceEvent {
11783    #[prost(uint64, optional, tag="1")]
11784    pub dev: ::core::option::Option<u64>,
11785    #[prost(uint64, optional, tag="2")]
11786    pub ino: ::core::option::Option<u64>,
11787    #[prost(uint64, optional, tag="3")]
11788    pub pino: ::core::option::Option<u64>,
11789    #[prost(uint32, optional, tag="4")]
11790    pub mode: ::core::option::Option<u32>,
11791    #[prost(int64, optional, tag="5")]
11792    pub size: ::core::option::Option<i64>,
11793    #[prost(uint32, optional, tag="6")]
11794    pub nlink: ::core::option::Option<u32>,
11795    #[prost(uint64, optional, tag="7")]
11796    pub blocks: ::core::option::Option<u64>,
11797    #[prost(uint32, optional, tag="8")]
11798    pub advise: ::core::option::Option<u32>,
11799}
11800#[derive(Clone, PartialEq, ::prost::Message)]
11801pub struct F2fsIgetExitFtraceEvent {
11802    #[prost(uint64, optional, tag="1")]
11803    pub dev: ::core::option::Option<u64>,
11804    #[prost(uint64, optional, tag="2")]
11805    pub ino: ::core::option::Option<u64>,
11806    #[prost(int32, optional, tag="3")]
11807    pub ret: ::core::option::Option<i32>,
11808}
11809#[derive(Clone, PartialEq, ::prost::Message)]
11810pub struct F2fsNewInodeFtraceEvent {
11811    #[prost(uint64, optional, tag="1")]
11812    pub dev: ::core::option::Option<u64>,
11813    #[prost(uint64, optional, tag="2")]
11814    pub ino: ::core::option::Option<u64>,
11815    #[prost(int32, optional, tag="3")]
11816    pub ret: ::core::option::Option<i32>,
11817}
11818#[derive(Clone, PartialEq, ::prost::Message)]
11819pub struct F2fsReadpageFtraceEvent {
11820    #[prost(uint64, optional, tag="1")]
11821    pub dev: ::core::option::Option<u64>,
11822    #[prost(uint64, optional, tag="2")]
11823    pub ino: ::core::option::Option<u64>,
11824    #[prost(uint64, optional, tag="3")]
11825    pub index: ::core::option::Option<u64>,
11826    #[prost(uint64, optional, tag="4")]
11827    pub blkaddr: ::core::option::Option<u64>,
11828    #[prost(int32, optional, tag="5")]
11829    pub r#type: ::core::option::Option<i32>,
11830    #[prost(int32, optional, tag="6")]
11831    pub dir: ::core::option::Option<i32>,
11832    #[prost(int32, optional, tag="7")]
11833    pub dirty: ::core::option::Option<i32>,
11834    #[prost(int32, optional, tag="8")]
11835    pub uptodate: ::core::option::Option<i32>,
11836}
11837#[derive(Clone, PartialEq, ::prost::Message)]
11838pub struct F2fsReserveNewBlockFtraceEvent {
11839    #[prost(uint64, optional, tag="1")]
11840    pub dev: ::core::option::Option<u64>,
11841    #[prost(uint32, optional, tag="2")]
11842    pub nid: ::core::option::Option<u32>,
11843    #[prost(uint32, optional, tag="3")]
11844    pub ofs_in_node: ::core::option::Option<u32>,
11845}
11846#[derive(Clone, PartialEq, ::prost::Message)]
11847pub struct F2fsSetPageDirtyFtraceEvent {
11848    #[prost(uint64, optional, tag="1")]
11849    pub dev: ::core::option::Option<u64>,
11850    #[prost(uint64, optional, tag="2")]
11851    pub ino: ::core::option::Option<u64>,
11852    #[prost(int32, optional, tag="3")]
11853    pub r#type: ::core::option::Option<i32>,
11854    #[prost(int32, optional, tag="4")]
11855    pub dir: ::core::option::Option<i32>,
11856    #[prost(uint64, optional, tag="5")]
11857    pub index: ::core::option::Option<u64>,
11858    #[prost(int32, optional, tag="6")]
11859    pub dirty: ::core::option::Option<i32>,
11860    #[prost(int32, optional, tag="7")]
11861    pub uptodate: ::core::option::Option<i32>,
11862}
11863#[derive(Clone, PartialEq, ::prost::Message)]
11864pub struct F2fsSubmitWritePageFtraceEvent {
11865    #[prost(uint64, optional, tag="1")]
11866    pub dev: ::core::option::Option<u64>,
11867    #[prost(uint64, optional, tag="2")]
11868    pub ino: ::core::option::Option<u64>,
11869    #[prost(int32, optional, tag="3")]
11870    pub r#type: ::core::option::Option<i32>,
11871    #[prost(uint64, optional, tag="4")]
11872    pub index: ::core::option::Option<u64>,
11873    #[prost(uint32, optional, tag="5")]
11874    pub block: ::core::option::Option<u32>,
11875}
11876#[derive(Clone, PartialEq, ::prost::Message)]
11877pub struct F2fsSyncFileEnterFtraceEvent {
11878    #[prost(uint64, optional, tag="1")]
11879    pub dev: ::core::option::Option<u64>,
11880    #[prost(uint64, optional, tag="2")]
11881    pub ino: ::core::option::Option<u64>,
11882    #[prost(uint64, optional, tag="3")]
11883    pub pino: ::core::option::Option<u64>,
11884    #[prost(uint32, optional, tag="4")]
11885    pub mode: ::core::option::Option<u32>,
11886    #[prost(int64, optional, tag="5")]
11887    pub size: ::core::option::Option<i64>,
11888    #[prost(uint32, optional, tag="6")]
11889    pub nlink: ::core::option::Option<u32>,
11890    #[prost(uint64, optional, tag="7")]
11891    pub blocks: ::core::option::Option<u64>,
11892    #[prost(uint32, optional, tag="8")]
11893    pub advise: ::core::option::Option<u32>,
11894}
11895#[derive(Clone, PartialEq, ::prost::Message)]
11896pub struct F2fsSyncFileExitFtraceEvent {
11897    #[prost(uint64, optional, tag="1")]
11898    pub dev: ::core::option::Option<u64>,
11899    #[prost(uint64, optional, tag="2")]
11900    pub ino: ::core::option::Option<u64>,
11901    #[prost(uint32, optional, tag="3")]
11902    pub need_cp: ::core::option::Option<u32>,
11903    #[prost(int32, optional, tag="4")]
11904    pub datasync: ::core::option::Option<i32>,
11905    #[prost(int32, optional, tag="5")]
11906    pub ret: ::core::option::Option<i32>,
11907    #[prost(int32, optional, tag="6")]
11908    pub cp_reason: ::core::option::Option<i32>,
11909}
11910#[derive(Clone, PartialEq, ::prost::Message)]
11911pub struct F2fsSyncFsFtraceEvent {
11912    #[prost(uint64, optional, tag="1")]
11913    pub dev: ::core::option::Option<u64>,
11914    #[prost(int32, optional, tag="2")]
11915    pub dirty: ::core::option::Option<i32>,
11916    #[prost(int32, optional, tag="3")]
11917    pub wait: ::core::option::Option<i32>,
11918}
11919#[derive(Clone, PartialEq, ::prost::Message)]
11920pub struct F2fsTruncateFtraceEvent {
11921    #[prost(uint64, optional, tag="1")]
11922    pub dev: ::core::option::Option<u64>,
11923    #[prost(uint64, optional, tag="2")]
11924    pub ino: ::core::option::Option<u64>,
11925    #[prost(uint64, optional, tag="3")]
11926    pub pino: ::core::option::Option<u64>,
11927    #[prost(uint32, optional, tag="4")]
11928    pub mode: ::core::option::Option<u32>,
11929    #[prost(int64, optional, tag="5")]
11930    pub size: ::core::option::Option<i64>,
11931    #[prost(uint32, optional, tag="6")]
11932    pub nlink: ::core::option::Option<u32>,
11933    #[prost(uint64, optional, tag="7")]
11934    pub blocks: ::core::option::Option<u64>,
11935    #[prost(uint32, optional, tag="8")]
11936    pub advise: ::core::option::Option<u32>,
11937}
11938#[derive(Clone, PartialEq, ::prost::Message)]
11939pub struct F2fsTruncateBlocksEnterFtraceEvent {
11940    #[prost(uint64, optional, tag="1")]
11941    pub dev: ::core::option::Option<u64>,
11942    #[prost(uint64, optional, tag="2")]
11943    pub ino: ::core::option::Option<u64>,
11944    #[prost(int64, optional, tag="3")]
11945    pub size: ::core::option::Option<i64>,
11946    #[prost(uint64, optional, tag="4")]
11947    pub blocks: ::core::option::Option<u64>,
11948    #[prost(uint64, optional, tag="5")]
11949    pub from: ::core::option::Option<u64>,
11950}
11951#[derive(Clone, PartialEq, ::prost::Message)]
11952pub struct F2fsTruncateBlocksExitFtraceEvent {
11953    #[prost(uint64, optional, tag="1")]
11954    pub dev: ::core::option::Option<u64>,
11955    #[prost(uint64, optional, tag="2")]
11956    pub ino: ::core::option::Option<u64>,
11957    #[prost(int32, optional, tag="3")]
11958    pub ret: ::core::option::Option<i32>,
11959}
11960#[derive(Clone, PartialEq, ::prost::Message)]
11961pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
11962    #[prost(uint64, optional, tag="1")]
11963    pub dev: ::core::option::Option<u64>,
11964    #[prost(uint64, optional, tag="2")]
11965    pub ino: ::core::option::Option<u64>,
11966    #[prost(uint32, optional, tag="3")]
11967    pub nid: ::core::option::Option<u32>,
11968    #[prost(uint32, optional, tag="4")]
11969    pub ofs: ::core::option::Option<u32>,
11970    #[prost(int32, optional, tag="5")]
11971    pub free: ::core::option::Option<i32>,
11972}
11973#[derive(Clone, PartialEq, ::prost::Message)]
11974pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
11975    #[prost(uint64, optional, tag="1")]
11976    pub dev: ::core::option::Option<u64>,
11977    #[prost(uint64, optional, tag="2")]
11978    pub ino: ::core::option::Option<u64>,
11979    #[prost(int64, optional, tag="3")]
11980    pub size: ::core::option::Option<i64>,
11981    #[prost(uint64, optional, tag="4")]
11982    pub blocks: ::core::option::Option<u64>,
11983    #[prost(uint64, optional, tag="5")]
11984    pub from: ::core::option::Option<u64>,
11985}
11986#[derive(Clone, PartialEq, ::prost::Message)]
11987pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
11988    #[prost(uint64, optional, tag="1")]
11989    pub dev: ::core::option::Option<u64>,
11990    #[prost(uint64, optional, tag="2")]
11991    pub ino: ::core::option::Option<u64>,
11992    #[prost(int32, optional, tag="3")]
11993    pub ret: ::core::option::Option<i32>,
11994}
11995#[derive(Clone, PartialEq, ::prost::Message)]
11996pub struct F2fsTruncateNodeFtraceEvent {
11997    #[prost(uint64, optional, tag="1")]
11998    pub dev: ::core::option::Option<u64>,
11999    #[prost(uint64, optional, tag="2")]
12000    pub ino: ::core::option::Option<u64>,
12001    #[prost(uint32, optional, tag="3")]
12002    pub nid: ::core::option::Option<u32>,
12003    #[prost(uint32, optional, tag="4")]
12004    pub blk_addr: ::core::option::Option<u32>,
12005}
12006#[derive(Clone, PartialEq, ::prost::Message)]
12007pub struct F2fsTruncateNodesEnterFtraceEvent {
12008    #[prost(uint64, optional, tag="1")]
12009    pub dev: ::core::option::Option<u64>,
12010    #[prost(uint64, optional, tag="2")]
12011    pub ino: ::core::option::Option<u64>,
12012    #[prost(uint32, optional, tag="3")]
12013    pub nid: ::core::option::Option<u32>,
12014    #[prost(uint32, optional, tag="4")]
12015    pub blk_addr: ::core::option::Option<u32>,
12016}
12017#[derive(Clone, PartialEq, ::prost::Message)]
12018pub struct F2fsTruncateNodesExitFtraceEvent {
12019    #[prost(uint64, optional, tag="1")]
12020    pub dev: ::core::option::Option<u64>,
12021    #[prost(uint64, optional, tag="2")]
12022    pub ino: ::core::option::Option<u64>,
12023    #[prost(int32, optional, tag="3")]
12024    pub ret: ::core::option::Option<i32>,
12025}
12026#[derive(Clone, PartialEq, ::prost::Message)]
12027pub struct F2fsTruncatePartialNodesFtraceEvent {
12028    #[prost(uint64, optional, tag="1")]
12029    pub dev: ::core::option::Option<u64>,
12030    #[prost(uint64, optional, tag="2")]
12031    pub ino: ::core::option::Option<u64>,
12032    #[prost(uint32, optional, tag="3")]
12033    pub nid: ::core::option::Option<u32>,
12034    #[prost(int32, optional, tag="4")]
12035    pub depth: ::core::option::Option<i32>,
12036    #[prost(int32, optional, tag="5")]
12037    pub err: ::core::option::Option<i32>,
12038}
12039#[derive(Clone, PartialEq, ::prost::Message)]
12040pub struct F2fsUnlinkEnterFtraceEvent {
12041    #[prost(uint64, optional, tag="1")]
12042    pub dev: ::core::option::Option<u64>,
12043    #[prost(uint64, optional, tag="2")]
12044    pub ino: ::core::option::Option<u64>,
12045    #[prost(int64, optional, tag="3")]
12046    pub size: ::core::option::Option<i64>,
12047    #[prost(uint64, optional, tag="4")]
12048    pub blocks: ::core::option::Option<u64>,
12049    #[prost(string, optional, tag="5")]
12050    pub name: ::core::option::Option<::prost::alloc::string::String>,
12051}
12052#[derive(Clone, PartialEq, ::prost::Message)]
12053pub struct F2fsUnlinkExitFtraceEvent {
12054    #[prost(uint64, optional, tag="1")]
12055    pub dev: ::core::option::Option<u64>,
12056    #[prost(uint64, optional, tag="2")]
12057    pub ino: ::core::option::Option<u64>,
12058    #[prost(int32, optional, tag="3")]
12059    pub ret: ::core::option::Option<i32>,
12060}
12061#[derive(Clone, PartialEq, ::prost::Message)]
12062pub struct F2fsVmPageMkwriteFtraceEvent {
12063    #[prost(uint64, optional, tag="1")]
12064    pub dev: ::core::option::Option<u64>,
12065    #[prost(uint64, optional, tag="2")]
12066    pub ino: ::core::option::Option<u64>,
12067    #[prost(int32, optional, tag="3")]
12068    pub r#type: ::core::option::Option<i32>,
12069    #[prost(int32, optional, tag="4")]
12070    pub dir: ::core::option::Option<i32>,
12071    #[prost(uint64, optional, tag="5")]
12072    pub index: ::core::option::Option<u64>,
12073    #[prost(int32, optional, tag="6")]
12074    pub dirty: ::core::option::Option<i32>,
12075    #[prost(int32, optional, tag="7")]
12076    pub uptodate: ::core::option::Option<i32>,
12077}
12078#[derive(Clone, PartialEq, ::prost::Message)]
12079pub struct F2fsWriteBeginFtraceEvent {
12080    #[prost(uint64, optional, tag="1")]
12081    pub dev: ::core::option::Option<u64>,
12082    #[prost(uint64, optional, tag="2")]
12083    pub ino: ::core::option::Option<u64>,
12084    #[prost(int64, optional, tag="3")]
12085    pub pos: ::core::option::Option<i64>,
12086    #[prost(uint32, optional, tag="4")]
12087    pub len: ::core::option::Option<u32>,
12088    #[prost(uint32, optional, tag="5")]
12089    pub flags: ::core::option::Option<u32>,
12090}
12091#[derive(Clone, PartialEq, ::prost::Message)]
12092pub struct F2fsWriteCheckpointFtraceEvent {
12093    #[prost(uint64, optional, tag="1")]
12094    pub dev: ::core::option::Option<u64>,
12095    #[prost(uint32, optional, tag="2")]
12096    pub is_umount: ::core::option::Option<u32>,
12097    #[prost(string, optional, tag="3")]
12098    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12099    #[prost(int32, optional, tag="4")]
12100    pub reason: ::core::option::Option<i32>,
12101    #[prost(uint32, optional, tag="5")]
12102    pub phase: ::core::option::Option<u32>,
12103}
12104#[derive(Clone, PartialEq, ::prost::Message)]
12105pub struct F2fsWriteEndFtraceEvent {
12106    #[prost(uint64, optional, tag="1")]
12107    pub dev: ::core::option::Option<u64>,
12108    #[prost(uint64, optional, tag="2")]
12109    pub ino: ::core::option::Option<u64>,
12110    #[prost(int64, optional, tag="3")]
12111    pub pos: ::core::option::Option<i64>,
12112    #[prost(uint32, optional, tag="4")]
12113    pub len: ::core::option::Option<u32>,
12114    #[prost(uint32, optional, tag="5")]
12115    pub copied: ::core::option::Option<u32>,
12116}
12117#[derive(Clone, PartialEq, ::prost::Message)]
12118pub struct F2fsIostatFtraceEvent {
12119    #[prost(uint64, optional, tag="1")]
12120    pub app_bio: ::core::option::Option<u64>,
12121    #[prost(uint64, optional, tag="2")]
12122    pub app_brio: ::core::option::Option<u64>,
12123    #[prost(uint64, optional, tag="3")]
12124    pub app_dio: ::core::option::Option<u64>,
12125    #[prost(uint64, optional, tag="4")]
12126    pub app_drio: ::core::option::Option<u64>,
12127    #[prost(uint64, optional, tag="5")]
12128    pub app_mio: ::core::option::Option<u64>,
12129    #[prost(uint64, optional, tag="6")]
12130    pub app_mrio: ::core::option::Option<u64>,
12131    #[prost(uint64, optional, tag="7")]
12132    pub app_rio: ::core::option::Option<u64>,
12133    #[prost(uint64, optional, tag="8")]
12134    pub app_wio: ::core::option::Option<u64>,
12135    #[prost(uint64, optional, tag="9")]
12136    pub dev: ::core::option::Option<u64>,
12137    #[prost(uint64, optional, tag="10")]
12138    pub fs_cdrio: ::core::option::Option<u64>,
12139    #[prost(uint64, optional, tag="11")]
12140    pub fs_cp_dio: ::core::option::Option<u64>,
12141    #[prost(uint64, optional, tag="12")]
12142    pub fs_cp_mio: ::core::option::Option<u64>,
12143    #[prost(uint64, optional, tag="13")]
12144    pub fs_cp_nio: ::core::option::Option<u64>,
12145    #[prost(uint64, optional, tag="14")]
12146    pub fs_dio: ::core::option::Option<u64>,
12147    #[prost(uint64, optional, tag="15")]
12148    pub fs_discard: ::core::option::Option<u64>,
12149    #[prost(uint64, optional, tag="16")]
12150    pub fs_drio: ::core::option::Option<u64>,
12151    #[prost(uint64, optional, tag="17")]
12152    pub fs_gc_dio: ::core::option::Option<u64>,
12153    #[prost(uint64, optional, tag="18")]
12154    pub fs_gc_nio: ::core::option::Option<u64>,
12155    #[prost(uint64, optional, tag="19")]
12156    pub fs_gdrio: ::core::option::Option<u64>,
12157    #[prost(uint64, optional, tag="20")]
12158    pub fs_mio: ::core::option::Option<u64>,
12159    #[prost(uint64, optional, tag="21")]
12160    pub fs_mrio: ::core::option::Option<u64>,
12161    #[prost(uint64, optional, tag="22")]
12162    pub fs_nio: ::core::option::Option<u64>,
12163    #[prost(uint64, optional, tag="23")]
12164    pub fs_nrio: ::core::option::Option<u64>,
12165}
12166#[derive(Clone, PartialEq, ::prost::Message)]
12167pub struct F2fsIostatLatencyFtraceEvent {
12168    #[prost(uint32, optional, tag="1")]
12169    pub d_rd_avg: ::core::option::Option<u32>,
12170    #[prost(uint32, optional, tag="2")]
12171    pub d_rd_cnt: ::core::option::Option<u32>,
12172    #[prost(uint32, optional, tag="3")]
12173    pub d_rd_peak: ::core::option::Option<u32>,
12174    #[prost(uint32, optional, tag="4")]
12175    pub d_wr_as_avg: ::core::option::Option<u32>,
12176    #[prost(uint32, optional, tag="5")]
12177    pub d_wr_as_cnt: ::core::option::Option<u32>,
12178    #[prost(uint32, optional, tag="6")]
12179    pub d_wr_as_peak: ::core::option::Option<u32>,
12180    #[prost(uint32, optional, tag="7")]
12181    pub d_wr_s_avg: ::core::option::Option<u32>,
12182    #[prost(uint32, optional, tag="8")]
12183    pub d_wr_s_cnt: ::core::option::Option<u32>,
12184    #[prost(uint32, optional, tag="9")]
12185    pub d_wr_s_peak: ::core::option::Option<u32>,
12186    #[prost(uint64, optional, tag="10")]
12187    pub dev: ::core::option::Option<u64>,
12188    #[prost(uint32, optional, tag="11")]
12189    pub m_rd_avg: ::core::option::Option<u32>,
12190    #[prost(uint32, optional, tag="12")]
12191    pub m_rd_cnt: ::core::option::Option<u32>,
12192    #[prost(uint32, optional, tag="13")]
12193    pub m_rd_peak: ::core::option::Option<u32>,
12194    #[prost(uint32, optional, tag="14")]
12195    pub m_wr_as_avg: ::core::option::Option<u32>,
12196    #[prost(uint32, optional, tag="15")]
12197    pub m_wr_as_cnt: ::core::option::Option<u32>,
12198    #[prost(uint32, optional, tag="16")]
12199    pub m_wr_as_peak: ::core::option::Option<u32>,
12200    #[prost(uint32, optional, tag="17")]
12201    pub m_wr_s_avg: ::core::option::Option<u32>,
12202    #[prost(uint32, optional, tag="18")]
12203    pub m_wr_s_cnt: ::core::option::Option<u32>,
12204    #[prost(uint32, optional, tag="19")]
12205    pub m_wr_s_peak: ::core::option::Option<u32>,
12206    #[prost(uint32, optional, tag="20")]
12207    pub n_rd_avg: ::core::option::Option<u32>,
12208    #[prost(uint32, optional, tag="21")]
12209    pub n_rd_cnt: ::core::option::Option<u32>,
12210    #[prost(uint32, optional, tag="22")]
12211    pub n_rd_peak: ::core::option::Option<u32>,
12212    #[prost(uint32, optional, tag="23")]
12213    pub n_wr_as_avg: ::core::option::Option<u32>,
12214    #[prost(uint32, optional, tag="24")]
12215    pub n_wr_as_cnt: ::core::option::Option<u32>,
12216    #[prost(uint32, optional, tag="25")]
12217    pub n_wr_as_peak: ::core::option::Option<u32>,
12218    #[prost(uint32, optional, tag="26")]
12219    pub n_wr_s_avg: ::core::option::Option<u32>,
12220    #[prost(uint32, optional, tag="27")]
12221    pub n_wr_s_cnt: ::core::option::Option<u32>,
12222    #[prost(uint32, optional, tag="28")]
12223    pub n_wr_s_peak: ::core::option::Option<u32>,
12224}
12225#[derive(Clone, PartialEq, ::prost::Message)]
12226pub struct F2fsBackgroundGcFtraceEvent {
12227    #[prost(uint64, optional, tag="1")]
12228    pub dev: ::core::option::Option<u64>,
12229    #[prost(uint32, optional, tag="2")]
12230    pub wait_ms: ::core::option::Option<u32>,
12231    #[prost(uint32, optional, tag="3")]
12232    pub prefree: ::core::option::Option<u32>,
12233    #[prost(uint32, optional, tag="4")]
12234    pub free: ::core::option::Option<u32>,
12235}
12236#[derive(Clone, PartialEq, ::prost::Message)]
12237pub struct F2fsGcBeginFtraceEvent {
12238    #[prost(uint64, optional, tag="1")]
12239    pub dev: ::core::option::Option<u64>,
12240    #[prost(uint32, optional, tag="2")]
12241    pub sync: ::core::option::Option<u32>,
12242    #[prost(uint32, optional, tag="3")]
12243    pub background: ::core::option::Option<u32>,
12244    #[prost(int64, optional, tag="4")]
12245    pub dirty_nodes: ::core::option::Option<i64>,
12246    #[prost(int64, optional, tag="5")]
12247    pub dirty_dents: ::core::option::Option<i64>,
12248    #[prost(int64, optional, tag="6")]
12249    pub dirty_imeta: ::core::option::Option<i64>,
12250    #[prost(uint32, optional, tag="7")]
12251    pub free_sec: ::core::option::Option<u32>,
12252    #[prost(uint32, optional, tag="8")]
12253    pub free_seg: ::core::option::Option<u32>,
12254    #[prost(int32, optional, tag="9")]
12255    pub reserved_seg: ::core::option::Option<i32>,
12256    #[prost(uint32, optional, tag="10")]
12257    pub prefree_seg: ::core::option::Option<u32>,
12258    #[prost(int32, optional, tag="11")]
12259    pub gc_type: ::core::option::Option<i32>,
12260    #[prost(uint32, optional, tag="12")]
12261    pub no_bg_gc: ::core::option::Option<u32>,
12262    #[prost(uint32, optional, tag="13")]
12263    pub nr_free_secs: ::core::option::Option<u32>,
12264}
12265#[derive(Clone, PartialEq, ::prost::Message)]
12266pub struct F2fsGcEndFtraceEvent {
12267    #[prost(uint64, optional, tag="1")]
12268    pub dev: ::core::option::Option<u64>,
12269    #[prost(int32, optional, tag="2")]
12270    pub ret: ::core::option::Option<i32>,
12271    #[prost(int32, optional, tag="3")]
12272    pub seg_freed: ::core::option::Option<i32>,
12273    #[prost(int32, optional, tag="4")]
12274    pub sec_freed: ::core::option::Option<i32>,
12275    #[prost(int64, optional, tag="5")]
12276    pub dirty_nodes: ::core::option::Option<i64>,
12277    #[prost(int64, optional, tag="6")]
12278    pub dirty_dents: ::core::option::Option<i64>,
12279    #[prost(int64, optional, tag="7")]
12280    pub dirty_imeta: ::core::option::Option<i64>,
12281    #[prost(uint32, optional, tag="8")]
12282    pub free_sec: ::core::option::Option<u32>,
12283    #[prost(uint32, optional, tag="9")]
12284    pub free_seg: ::core::option::Option<u32>,
12285    #[prost(int32, optional, tag="10")]
12286    pub reserved_seg: ::core::option::Option<i32>,
12287    #[prost(uint32, optional, tag="11")]
12288    pub prefree_seg: ::core::option::Option<u32>,
12289}
12290#[derive(Clone, PartialEq, ::prost::Message)]
12291pub struct F2fsLockElapsedTimeFtraceEvent {
12292    #[prost(uint64, optional, tag="1")]
12293    pub dev: ::core::option::Option<u64>,
12294    #[prost(string, optional, tag="2")]
12295    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12296    #[prost(int32, optional, tag="3")]
12297    pub pid: ::core::option::Option<i32>,
12298    #[prost(int32, optional, tag="4")]
12299    pub prio: ::core::option::Option<i32>,
12300    #[prost(int32, optional, tag="5")]
12301    pub ioprio_class: ::core::option::Option<i32>,
12302    #[prost(int32, optional, tag="6")]
12303    pub ioprio_data: ::core::option::Option<i32>,
12304    #[prost(uint32, optional, tag="7")]
12305    pub lock_name: ::core::option::Option<u32>,
12306    #[prost(uint32, optional, tag="8")]
12307    pub is_write: ::core::option::Option<u32>,
12308    #[prost(uint64, optional, tag="9")]
12309    pub total_time: ::core::option::Option<u64>,
12310    #[prost(uint64, optional, tag="10")]
12311    pub running_time: ::core::option::Option<u64>,
12312    #[prost(uint64, optional, tag="11")]
12313    pub runnable_time: ::core::option::Option<u64>,
12314    #[prost(uint64, optional, tag="12")]
12315    pub io_sleep_time: ::core::option::Option<u64>,
12316    #[prost(uint64, optional, tag="13")]
12317    pub other_time: ::core::option::Option<u64>,
12318}
12319// End of protos/perfetto/trace/ftrace/f2fs.proto
12320
12321// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
12322
12323#[derive(Clone, PartialEq, ::prost::Message)]
12324pub struct FastrpcDmaStatFtraceEvent {
12325    #[prost(int32, optional, tag="1")]
12326    pub cid: ::core::option::Option<i32>,
12327    #[prost(int64, optional, tag="2")]
12328    pub len: ::core::option::Option<i64>,
12329    #[prost(uint64, optional, tag="3")]
12330    pub total_allocated: ::core::option::Option<u64>,
12331}
12332#[derive(Clone, PartialEq, ::prost::Message)]
12333pub struct FastrpcDmaFreeFtraceEvent {
12334    #[prost(int32, optional, tag="1")]
12335    pub cid: ::core::option::Option<i32>,
12336    #[prost(uint64, optional, tag="2")]
12337    pub phys: ::core::option::Option<u64>,
12338    #[prost(uint64, optional, tag="3")]
12339    pub size: ::core::option::Option<u64>,
12340}
12341#[derive(Clone, PartialEq, ::prost::Message)]
12342pub struct FastrpcDmaAllocFtraceEvent {
12343    #[prost(int32, optional, tag="1")]
12344    pub cid: ::core::option::Option<i32>,
12345    #[prost(uint64, optional, tag="2")]
12346    pub phys: ::core::option::Option<u64>,
12347    #[prost(uint64, optional, tag="3")]
12348    pub size: ::core::option::Option<u64>,
12349    #[prost(uint64, optional, tag="4")]
12350    pub attr: ::core::option::Option<u64>,
12351    #[prost(int32, optional, tag="5")]
12352    pub mflags: ::core::option::Option<i32>,
12353}
12354#[derive(Clone, PartialEq, ::prost::Message)]
12355pub struct FastrpcDmaUnmapFtraceEvent {
12356    #[prost(int32, optional, tag="1")]
12357    pub cid: ::core::option::Option<i32>,
12358    #[prost(uint64, optional, tag="2")]
12359    pub phys: ::core::option::Option<u64>,
12360    #[prost(uint64, optional, tag="3")]
12361    pub size: ::core::option::Option<u64>,
12362}
12363#[derive(Clone, PartialEq, ::prost::Message)]
12364pub struct FastrpcDmaMapFtraceEvent {
12365    #[prost(int32, optional, tag="1")]
12366    pub cid: ::core::option::Option<i32>,
12367    #[prost(int32, optional, tag="2")]
12368    pub fd: ::core::option::Option<i32>,
12369    #[prost(uint64, optional, tag="3")]
12370    pub phys: ::core::option::Option<u64>,
12371    #[prost(uint64, optional, tag="4")]
12372    pub size: ::core::option::Option<u64>,
12373    #[prost(uint64, optional, tag="5")]
12374    pub len: ::core::option::Option<u64>,
12375    #[prost(uint32, optional, tag="6")]
12376    pub attr: ::core::option::Option<u32>,
12377    #[prost(int32, optional, tag="7")]
12378    pub mflags: ::core::option::Option<i32>,
12379}
12380// End of protos/perfetto/trace/ftrace/fastrpc.proto
12381
12382// Begin of protos/perfetto/trace/ftrace/fence.proto
12383
12384#[derive(Clone, PartialEq, ::prost::Message)]
12385pub struct FenceInitFtraceEvent {
12386    #[prost(uint32, optional, tag="1")]
12387    pub context: ::core::option::Option<u32>,
12388    #[prost(string, optional, tag="2")]
12389    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12390    #[prost(uint32, optional, tag="3")]
12391    pub seqno: ::core::option::Option<u32>,
12392    #[prost(string, optional, tag="4")]
12393    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12394}
12395#[derive(Clone, PartialEq, ::prost::Message)]
12396pub struct FenceDestroyFtraceEvent {
12397    #[prost(uint32, optional, tag="1")]
12398    pub context: ::core::option::Option<u32>,
12399    #[prost(string, optional, tag="2")]
12400    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12401    #[prost(uint32, optional, tag="3")]
12402    pub seqno: ::core::option::Option<u32>,
12403    #[prost(string, optional, tag="4")]
12404    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12405}
12406#[derive(Clone, PartialEq, ::prost::Message)]
12407pub struct FenceEnableSignalFtraceEvent {
12408    #[prost(uint32, optional, tag="1")]
12409    pub context: ::core::option::Option<u32>,
12410    #[prost(string, optional, tag="2")]
12411    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12412    #[prost(uint32, optional, tag="3")]
12413    pub seqno: ::core::option::Option<u32>,
12414    #[prost(string, optional, tag="4")]
12415    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12416}
12417#[derive(Clone, PartialEq, ::prost::Message)]
12418pub struct FenceSignaledFtraceEvent {
12419    #[prost(uint32, optional, tag="1")]
12420    pub context: ::core::option::Option<u32>,
12421    #[prost(string, optional, tag="2")]
12422    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12423    #[prost(uint32, optional, tag="3")]
12424    pub seqno: ::core::option::Option<u32>,
12425    #[prost(string, optional, tag="4")]
12426    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12427}
12428// End of protos/perfetto/trace/ftrace/fence.proto
12429
12430// Begin of protos/perfetto/trace/ftrace/filemap.proto
12431
12432#[derive(Clone, PartialEq, ::prost::Message)]
12433pub struct MmFilemapAddToPageCacheFtraceEvent {
12434    #[prost(uint64, optional, tag="1")]
12435    pub pfn: ::core::option::Option<u64>,
12436    #[prost(uint64, optional, tag="2")]
12437    pub i_ino: ::core::option::Option<u64>,
12438    #[prost(uint64, optional, tag="3")]
12439    pub index: ::core::option::Option<u64>,
12440    #[prost(uint64, optional, tag="4")]
12441    pub s_dev: ::core::option::Option<u64>,
12442    #[prost(uint64, optional, tag="5")]
12443    pub page: ::core::option::Option<u64>,
12444}
12445#[derive(Clone, PartialEq, ::prost::Message)]
12446pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
12447    #[prost(uint64, optional, tag="1")]
12448    pub pfn: ::core::option::Option<u64>,
12449    #[prost(uint64, optional, tag="2")]
12450    pub i_ino: ::core::option::Option<u64>,
12451    #[prost(uint64, optional, tag="3")]
12452    pub index: ::core::option::Option<u64>,
12453    #[prost(uint64, optional, tag="4")]
12454    pub s_dev: ::core::option::Option<u64>,
12455    #[prost(uint64, optional, tag="5")]
12456    pub page: ::core::option::Option<u64>,
12457}
12458// End of protos/perfetto/trace/ftrace/filemap.proto
12459
12460// Begin of protos/perfetto/trace/ftrace/fs.proto
12461
12462#[derive(Clone, PartialEq, ::prost::Message)]
12463pub struct DoSysOpenFtraceEvent {
12464    #[prost(string, optional, tag="1")]
12465    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12466    #[prost(int32, optional, tag="2")]
12467    pub flags: ::core::option::Option<i32>,
12468    #[prost(int32, optional, tag="3")]
12469    pub mode: ::core::option::Option<i32>,
12470}
12471#[derive(Clone, PartialEq, ::prost::Message)]
12472pub struct OpenExecFtraceEvent {
12473    #[prost(string, optional, tag="1")]
12474    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12475}
12476// End of protos/perfetto/trace/ftrace/fs.proto
12477
12478// Begin of protos/perfetto/trace/ftrace/ftrace.proto
12479
12480#[derive(Clone, PartialEq, ::prost::Message)]
12481pub struct PrintFtraceEvent {
12482    #[prost(uint64, optional, tag="1")]
12483    pub ip: ::core::option::Option<u64>,
12484    #[prost(string, optional, tag="2")]
12485    pub buf: ::core::option::Option<::prost::alloc::string::String>,
12486}
12487#[derive(Clone, PartialEq, ::prost::Message)]
12488pub struct FuncgraphEntryFtraceEvent {
12489    #[prost(int32, optional, tag="1")]
12490    pub depth: ::core::option::Option<i32>,
12491    #[prost(uint64, optional, tag="2")]
12492    pub func: ::core::option::Option<u64>,
12493}
12494#[derive(Clone, PartialEq, ::prost::Message)]
12495pub struct FuncgraphExitFtraceEvent {
12496    #[prost(uint64, optional, tag="1")]
12497    pub calltime: ::core::option::Option<u64>,
12498    #[prost(int32, optional, tag="2")]
12499    pub depth: ::core::option::Option<i32>,
12500    #[prost(uint64, optional, tag="3")]
12501    pub func: ::core::option::Option<u64>,
12502    #[prost(uint64, optional, tag="4")]
12503    pub overrun: ::core::option::Option<u64>,
12504    #[prost(uint64, optional, tag="5")]
12505    pub rettime: ::core::option::Option<u64>,
12506}
12507// End of protos/perfetto/trace/ftrace/ftrace.proto
12508
12509// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12510
12511#[derive(Clone, PartialEq, ::prost::Message)]
12512pub struct FwtpPerfettoCounterFtraceEvent {
12513    #[prost(uint64, optional, tag="1")]
12514    pub timestamp: ::core::option::Option<u64>,
12515    #[prost(uint32, optional, tag="2")]
12516    pub track_id: ::core::option::Option<u32>,
12517    #[prost(string, optional, tag="3")]
12518    pub category: ::core::option::Option<::prost::alloc::string::String>,
12519    #[prost(string, optional, tag="4")]
12520    pub name: ::core::option::Option<::prost::alloc::string::String>,
12521    #[prost(uint32, optional, tag="5")]
12522    pub value: ::core::option::Option<u32>,
12523}
12524#[derive(Clone, PartialEq, ::prost::Message)]
12525pub struct FwtpPerfettoSliceFtraceEvent {
12526    #[prost(uint64, optional, tag="1")]
12527    pub timestamp: ::core::option::Option<u64>,
12528    #[prost(uint32, optional, tag="2")]
12529    pub track_id: ::core::option::Option<u32>,
12530    #[prost(string, optional, tag="3")]
12531    pub category: ::core::option::Option<::prost::alloc::string::String>,
12532    #[prost(string, optional, tag="4")]
12533    pub name: ::core::option::Option<::prost::alloc::string::String>,
12534    #[prost(uint32, optional, tag="5")]
12535    pub begin: ::core::option::Option<u32>,
12536}
12537// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12538
12539// Begin of protos/perfetto/trace/ftrace/g2d.proto
12540
12541#[derive(Clone, PartialEq, ::prost::Message)]
12542pub struct G2dTracingMarkWriteFtraceEvent {
12543    #[prost(int32, optional, tag="1")]
12544    pub pid: ::core::option::Option<i32>,
12545    #[prost(string, optional, tag="4")]
12546    pub name: ::core::option::Option<::prost::alloc::string::String>,
12547    #[prost(uint32, optional, tag="5")]
12548    pub r#type: ::core::option::Option<u32>,
12549    #[prost(int32, optional, tag="6")]
12550    pub value: ::core::option::Option<i32>,
12551}
12552// End of protos/perfetto/trace/ftrace/g2d.proto
12553
12554// Begin of protos/perfetto/trace/ftrace/generic.proto
12555
12556/// This generic proto is used to output events in the trace
12557/// when a specific proto for that event does not exist.
12558#[derive(Clone, PartialEq, ::prost::Message)]
12559pub struct GenericFtraceEvent {
12560    #[prost(string, optional, tag="1")]
12561    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
12562    #[prost(message, repeated, tag="2")]
12563    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
12564}
12565/// Nested message and enum types in `GenericFtraceEvent`.
12566pub mod generic_ftrace_event {
12567    #[derive(Clone, PartialEq, ::prost::Message)]
12568    pub struct Field {
12569        #[prost(string, optional, tag="1")]
12570        pub name: ::core::option::Option<::prost::alloc::string::String>,
12571        #[prost(oneof="field::Value", tags="3, 4, 5")]
12572        pub value: ::core::option::Option<field::Value>,
12573    }
12574    /// Nested message and enum types in `Field`.
12575    pub mod field {
12576        #[derive(Clone, PartialEq, ::prost::Oneof)]
12577        pub enum Value {
12578            #[prost(string, tag="3")]
12579            StrValue(::prost::alloc::string::String),
12580            #[prost(int64, tag="4")]
12581            IntValue(i64),
12582            #[prost(uint64, tag="5")]
12583            UintValue(u64),
12584        }
12585    }
12586}
12587#[derive(Clone, PartialEq, ::prost::Message)]
12588pub struct KprobeEvent {
12589    #[prost(string, optional, tag="1")]
12590    pub name: ::core::option::Option<::prost::alloc::string::String>,
12591    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
12592    pub r#type: ::core::option::Option<i32>,
12593}
12594/// Nested message and enum types in `KprobeEvent`.
12595pub mod kprobe_event {
12596    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
12597    #[repr(i32)]
12598    pub enum KprobeType {
12599        Unknown = 0,
12600        Begin = 1,
12601        End = 2,
12602        Instant = 3,
12603    }
12604    impl KprobeType {
12605        /// String value of the enum field names used in the ProtoBuf definition.
12606        ///
12607        /// The values are not transformed in any way and thus are considered stable
12608        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12609        pub fn as_str_name(&self) -> &'static str {
12610            match self {
12611                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
12612                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
12613                KprobeType::End => "KPROBE_TYPE_END",
12614                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
12615            }
12616        }
12617    }
12618}
12619// End of protos/perfetto/trace/ftrace/generic.proto
12620
12621// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
12622
12623#[derive(Clone, PartialEq, ::prost::Message)]
12624pub struct GoogleIccEventFtraceEvent {
12625    #[prost(string, optional, tag="1")]
12626    pub event: ::core::option::Option<::prost::alloc::string::String>,
12627    #[prost(uint64, optional, tag="2")]
12628    pub timestamp: ::core::option::Option<u64>,
12629}
12630// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
12631
12632// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
12633
12634#[derive(Clone, PartialEq, ::prost::Message)]
12635pub struct GoogleIrmEventFtraceEvent {
12636    #[prost(string, optional, tag="1")]
12637    pub event: ::core::option::Option<::prost::alloc::string::String>,
12638    #[prost(uint64, optional, tag="2")]
12639    pub timestamp: ::core::option::Option<u64>,
12640}
12641// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
12642
12643// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
12644
12645#[derive(Clone, PartialEq, ::prost::Message)]
12646pub struct GpuMemTotalFtraceEvent {
12647    #[prost(uint32, optional, tag="1")]
12648    pub gpu_id: ::core::option::Option<u32>,
12649    #[prost(uint32, optional, tag="2")]
12650    pub pid: ::core::option::Option<u32>,
12651    #[prost(uint64, optional, tag="3")]
12652    pub size: ::core::option::Option<u64>,
12653}
12654// End of protos/perfetto/trace/ftrace/gpu_mem.proto
12655
12656// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12657
12658#[derive(Clone, PartialEq, ::prost::Message)]
12659pub struct DrmSchedJobFtraceEvent {
12660    #[prost(uint64, optional, tag="1")]
12661    pub entity: ::core::option::Option<u64>,
12662    #[prost(uint64, optional, tag="2")]
12663    pub fence: ::core::option::Option<u64>,
12664    #[prost(int32, optional, tag="3")]
12665    pub hw_job_count: ::core::option::Option<i32>,
12666    #[prost(uint64, optional, tag="4")]
12667    pub id: ::core::option::Option<u64>,
12668    #[prost(uint32, optional, tag="5")]
12669    pub job_count: ::core::option::Option<u32>,
12670    #[prost(string, optional, tag="6")]
12671    pub name: ::core::option::Option<::prost::alloc::string::String>,
12672}
12673#[derive(Clone, PartialEq, ::prost::Message)]
12674pub struct DrmRunJobFtraceEvent {
12675    #[prost(uint64, optional, tag="1")]
12676    pub entity: ::core::option::Option<u64>,
12677    #[prost(uint64, optional, tag="2")]
12678    pub fence: ::core::option::Option<u64>,
12679    #[prost(int32, optional, tag="3")]
12680    pub hw_job_count: ::core::option::Option<i32>,
12681    #[prost(uint64, optional, tag="4")]
12682    pub id: ::core::option::Option<u64>,
12683    #[prost(uint32, optional, tag="5")]
12684    pub job_count: ::core::option::Option<u32>,
12685    #[prost(string, optional, tag="6")]
12686    pub name: ::core::option::Option<::prost::alloc::string::String>,
12687}
12688#[derive(Clone, PartialEq, ::prost::Message)]
12689pub struct DrmSchedProcessJobFtraceEvent {
12690    #[prost(uint64, optional, tag="1")]
12691    pub fence: ::core::option::Option<u64>,
12692}
12693#[derive(Clone, PartialEq, ::prost::Message)]
12694pub struct DrmSchedJobAddDepFtraceEvent {
12695    #[prost(uint64, optional, tag="1")]
12696    pub fence_context: ::core::option::Option<u64>,
12697    #[prost(uint64, optional, tag="2")]
12698    pub fence_seqno: ::core::option::Option<u64>,
12699    #[prost(uint64, optional, tag="3")]
12700    pub ctx: ::core::option::Option<u64>,
12701    #[prost(uint64, optional, tag="4")]
12702    pub seqno: ::core::option::Option<u64>,
12703}
12704#[derive(Clone, PartialEq, ::prost::Message)]
12705pub struct DrmSchedJobDoneFtraceEvent {
12706    #[prost(uint64, optional, tag="1")]
12707    pub fence_context: ::core::option::Option<u64>,
12708    #[prost(uint64, optional, tag="2")]
12709    pub fence_seqno: ::core::option::Option<u64>,
12710}
12711#[derive(Clone, PartialEq, ::prost::Message)]
12712pub struct DrmSchedJobQueueFtraceEvent {
12713    #[prost(string, optional, tag="1")]
12714    pub name: ::core::option::Option<::prost::alloc::string::String>,
12715    #[prost(uint32, optional, tag="2")]
12716    pub job_count: ::core::option::Option<u32>,
12717    #[prost(int32, optional, tag="3")]
12718    pub hw_job_count: ::core::option::Option<i32>,
12719    #[prost(string, optional, tag="4")]
12720    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12721    #[prost(uint64, optional, tag="5")]
12722    pub fence_context: ::core::option::Option<u64>,
12723    #[prost(uint64, optional, tag="6")]
12724    pub fence_seqno: ::core::option::Option<u64>,
12725    #[prost(uint64, optional, tag="7")]
12726    pub client_id: ::core::option::Option<u64>,
12727}
12728#[derive(Clone, PartialEq, ::prost::Message)]
12729pub struct DrmSchedJobRunFtraceEvent {
12730    #[prost(string, optional, tag="1")]
12731    pub name: ::core::option::Option<::prost::alloc::string::String>,
12732    #[prost(uint32, optional, tag="2")]
12733    pub job_count: ::core::option::Option<u32>,
12734    #[prost(int32, optional, tag="3")]
12735    pub hw_job_count: ::core::option::Option<i32>,
12736    #[prost(string, optional, tag="4")]
12737    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12738    #[prost(uint64, optional, tag="5")]
12739    pub fence_context: ::core::option::Option<u64>,
12740    #[prost(uint64, optional, tag="6")]
12741    pub fence_seqno: ::core::option::Option<u64>,
12742    #[prost(uint64, optional, tag="7")]
12743    pub client_id: ::core::option::Option<u64>,
12744}
12745#[derive(Clone, PartialEq, ::prost::Message)]
12746pub struct DrmSchedJobUnschedulableFtraceEvent {
12747    #[prost(uint64, optional, tag="1")]
12748    pub fence_context: ::core::option::Option<u64>,
12749    #[prost(uint64, optional, tag="2")]
12750    pub fence_seqno: ::core::option::Option<u64>,
12751    #[prost(uint64, optional, tag="3")]
12752    pub ctx: ::core::option::Option<u64>,
12753    #[prost(uint64, optional, tag="4")]
12754    pub seqno: ::core::option::Option<u64>,
12755}
12756// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12757
12758// Begin of protos/perfetto/trace/ftrace/hyp.proto
12759
12760#[derive(Clone, PartialEq, ::prost::Message)]
12761pub struct HypEnterFtraceEvent {
12762}
12763#[derive(Clone, PartialEq, ::prost::Message)]
12764pub struct HypExitFtraceEvent {
12765}
12766#[derive(Clone, PartialEq, ::prost::Message)]
12767pub struct HostHcallFtraceEvent {
12768    #[prost(uint32, optional, tag="1")]
12769    pub id: ::core::option::Option<u32>,
12770    #[prost(uint32, optional, tag="2")]
12771    pub invalid: ::core::option::Option<u32>,
12772}
12773#[derive(Clone, PartialEq, ::prost::Message)]
12774pub struct HostSmcFtraceEvent {
12775    #[prost(uint64, optional, tag="1")]
12776    pub id: ::core::option::Option<u64>,
12777    #[prost(uint32, optional, tag="2")]
12778    pub forwarded: ::core::option::Option<u32>,
12779}
12780#[derive(Clone, PartialEq, ::prost::Message)]
12781pub struct HostMemAbortFtraceEvent {
12782    #[prost(uint64, optional, tag="1")]
12783    pub esr: ::core::option::Option<u64>,
12784    #[prost(uint64, optional, tag="2")]
12785    pub addr: ::core::option::Option<u64>,
12786}
12787#[derive(Clone, PartialEq, ::prost::Message)]
12788pub struct HostFfaCallFtraceEvent {
12789    #[prost(uint64, optional, tag="1")]
12790    pub func_id: ::core::option::Option<u64>,
12791    #[prost(uint64, optional, tag="2")]
12792    pub res_a1: ::core::option::Option<u64>,
12793    #[prost(uint64, optional, tag="3")]
12794    pub res_a2: ::core::option::Option<u64>,
12795    #[prost(uint64, optional, tag="4")]
12796    pub res_a3: ::core::option::Option<u64>,
12797    #[prost(uint64, optional, tag="5")]
12798    pub res_a4: ::core::option::Option<u64>,
12799    #[prost(int32, optional, tag="6")]
12800    pub handled: ::core::option::Option<i32>,
12801    #[prost(int32, optional, tag="7")]
12802    pub err: ::core::option::Option<i32>,
12803}
12804#[derive(Clone, PartialEq, ::prost::Message)]
12805pub struct IommuIdmapFtraceEvent {
12806    #[prost(uint64, optional, tag="1")]
12807    pub from: ::core::option::Option<u64>,
12808    #[prost(uint64, optional, tag="2")]
12809    pub to: ::core::option::Option<u64>,
12810    #[prost(int32, optional, tag="3")]
12811    pub prot: ::core::option::Option<i32>,
12812}
12813#[derive(Clone, PartialEq, ::prost::Message)]
12814pub struct PsciMemProtectFtraceEvent {
12815    #[prost(uint64, optional, tag="1")]
12816    pub count: ::core::option::Option<u64>,
12817    #[prost(uint64, optional, tag="2")]
12818    pub was: ::core::option::Option<u64>,
12819}
12820// End of protos/perfetto/trace/ftrace/hyp.proto
12821
12822// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
12823
12824#[derive(Clone, PartialEq, ::prost::Message)]
12825pub struct HypervisorHostHcallFtraceEvent {
12826    #[prost(uint32, optional, tag="1")]
12827    pub id: ::core::option::Option<u32>,
12828    #[prost(uint32, optional, tag="2")]
12829    pub invalid: ::core::option::Option<u32>,
12830}
12831#[derive(Clone, PartialEq, ::prost::Message)]
12832pub struct HypervisorHostSmcFtraceEvent {
12833    #[prost(uint64, optional, tag="1")]
12834    pub id: ::core::option::Option<u64>,
12835    #[prost(uint32, optional, tag="2")]
12836    pub forwarded: ::core::option::Option<u32>,
12837}
12838#[derive(Clone, PartialEq, ::prost::Message)]
12839pub struct HypervisorHypExitFtraceEvent {
12840}
12841#[derive(Clone, PartialEq, ::prost::Message)]
12842pub struct HypervisorIommuIdmapFtraceEvent {
12843    #[prost(uint64, optional, tag="1")]
12844    pub from: ::core::option::Option<u64>,
12845    #[prost(uint64, optional, tag="2")]
12846    pub to: ::core::option::Option<u64>,
12847    #[prost(int32, optional, tag="3")]
12848    pub prot: ::core::option::Option<i32>,
12849}
12850#[derive(Clone, PartialEq, ::prost::Message)]
12851pub struct HypervisorPsciMemProtectFtraceEvent {
12852    #[prost(uint64, optional, tag="1")]
12853    pub count: ::core::option::Option<u64>,
12854    #[prost(uint64, optional, tag="2")]
12855    pub was: ::core::option::Option<u64>,
12856}
12857#[derive(Clone, PartialEq, ::prost::Message)]
12858pub struct HypervisorHostMemAbortFtraceEvent {
12859    #[prost(uint64, optional, tag="1")]
12860    pub esr: ::core::option::Option<u64>,
12861    #[prost(uint64, optional, tag="2")]
12862    pub addr: ::core::option::Option<u64>,
12863}
12864#[derive(Clone, PartialEq, ::prost::Message)]
12865pub struct HypervisorHypEnterFtraceEvent {
12866}
12867#[derive(Clone, PartialEq, ::prost::Message)]
12868pub struct HypervisorIommuIdmapCompleteFtraceEvent {
12869    #[prost(uint32, optional, tag="1")]
12870    pub map: ::core::option::Option<u32>,
12871}
12872#[derive(Clone, PartialEq, ::prost::Message)]
12873pub struct HypervisorVcpuIllegalTrapFtraceEvent {
12874    #[prost(uint64, optional, tag="1")]
12875    pub esr: ::core::option::Option<u64>,
12876}
12877// End of protos/perfetto/trace/ftrace/hypervisor.proto
12878
12879// Begin of protos/perfetto/trace/ftrace/i2c.proto
12880
12881#[derive(Clone, PartialEq, ::prost::Message)]
12882pub struct I2cReadFtraceEvent {
12883    #[prost(int32, optional, tag="1")]
12884    pub adapter_nr: ::core::option::Option<i32>,
12885    #[prost(uint32, optional, tag="2")]
12886    pub msg_nr: ::core::option::Option<u32>,
12887    #[prost(uint32, optional, tag="3")]
12888    pub addr: ::core::option::Option<u32>,
12889    #[prost(uint32, optional, tag="4")]
12890    pub flags: ::core::option::Option<u32>,
12891    #[prost(uint32, optional, tag="5")]
12892    pub len: ::core::option::Option<u32>,
12893}
12894#[derive(Clone, PartialEq, ::prost::Message)]
12895pub struct I2cWriteFtraceEvent {
12896    #[prost(int32, optional, tag="1")]
12897    pub adapter_nr: ::core::option::Option<i32>,
12898    #[prost(uint32, optional, tag="2")]
12899    pub msg_nr: ::core::option::Option<u32>,
12900    #[prost(uint32, optional, tag="3")]
12901    pub addr: ::core::option::Option<u32>,
12902    #[prost(uint32, optional, tag="4")]
12903    pub flags: ::core::option::Option<u32>,
12904    #[prost(uint32, optional, tag="5")]
12905    pub len: ::core::option::Option<u32>,
12906    #[prost(bytes="vec", optional, tag="7")]
12907    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12908}
12909#[derive(Clone, PartialEq, ::prost::Message)]
12910pub struct I2cResultFtraceEvent {
12911    #[prost(int32, optional, tag="1")]
12912    pub adapter_nr: ::core::option::Option<i32>,
12913    #[prost(uint32, optional, tag="2")]
12914    pub nr_msgs: ::core::option::Option<u32>,
12915    #[prost(int32, optional, tag="3")]
12916    pub ret: ::core::option::Option<i32>,
12917}
12918#[derive(Clone, PartialEq, ::prost::Message)]
12919pub struct I2cReplyFtraceEvent {
12920    #[prost(int32, optional, tag="1")]
12921    pub adapter_nr: ::core::option::Option<i32>,
12922    #[prost(uint32, optional, tag="2")]
12923    pub msg_nr: ::core::option::Option<u32>,
12924    #[prost(uint32, optional, tag="3")]
12925    pub addr: ::core::option::Option<u32>,
12926    #[prost(uint32, optional, tag="4")]
12927    pub flags: ::core::option::Option<u32>,
12928    #[prost(uint32, optional, tag="5")]
12929    pub len: ::core::option::Option<u32>,
12930    #[prost(bytes="vec", optional, tag="7")]
12931    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12932}
12933#[derive(Clone, PartialEq, ::prost::Message)]
12934pub struct SmbusReadFtraceEvent {
12935    #[prost(int32, optional, tag="1")]
12936    pub adapter_nr: ::core::option::Option<i32>,
12937    #[prost(uint32, optional, tag="2")]
12938    pub flags: ::core::option::Option<u32>,
12939    #[prost(uint32, optional, tag="3")]
12940    pub addr: ::core::option::Option<u32>,
12941    #[prost(uint32, optional, tag="4")]
12942    pub command: ::core::option::Option<u32>,
12943    #[prost(uint32, optional, tag="5")]
12944    pub protocol: ::core::option::Option<u32>,
12945}
12946#[derive(Clone, PartialEq, ::prost::Message)]
12947pub struct SmbusWriteFtraceEvent {
12948    #[prost(int32, optional, tag="1")]
12949    pub adapter_nr: ::core::option::Option<i32>,
12950    #[prost(uint32, optional, tag="2")]
12951    pub addr: ::core::option::Option<u32>,
12952    #[prost(uint32, optional, tag="3")]
12953    pub flags: ::core::option::Option<u32>,
12954    #[prost(uint32, optional, tag="4")]
12955    pub command: ::core::option::Option<u32>,
12956    #[prost(uint32, optional, tag="5")]
12957    pub len: ::core::option::Option<u32>,
12958    #[prost(uint32, optional, tag="6")]
12959    pub protocol: ::core::option::Option<u32>,
12960}
12961#[derive(Clone, PartialEq, ::prost::Message)]
12962pub struct SmbusResultFtraceEvent {
12963    #[prost(int32, optional, tag="1")]
12964    pub adapter_nr: ::core::option::Option<i32>,
12965    #[prost(uint32, optional, tag="2")]
12966    pub addr: ::core::option::Option<u32>,
12967    #[prost(uint32, optional, tag="3")]
12968    pub flags: ::core::option::Option<u32>,
12969    #[prost(uint32, optional, tag="4")]
12970    pub read_write: ::core::option::Option<u32>,
12971    #[prost(uint32, optional, tag="5")]
12972    pub command: ::core::option::Option<u32>,
12973    #[prost(int32, optional, tag="6")]
12974    pub res: ::core::option::Option<i32>,
12975    #[prost(uint32, optional, tag="7")]
12976    pub protocol: ::core::option::Option<u32>,
12977}
12978#[derive(Clone, PartialEq, ::prost::Message)]
12979pub struct SmbusReplyFtraceEvent {
12980    #[prost(int32, optional, tag="1")]
12981    pub adapter_nr: ::core::option::Option<i32>,
12982    #[prost(uint32, optional, tag="2")]
12983    pub addr: ::core::option::Option<u32>,
12984    #[prost(uint32, optional, tag="3")]
12985    pub flags: ::core::option::Option<u32>,
12986    #[prost(uint32, optional, tag="4")]
12987    pub command: ::core::option::Option<u32>,
12988    #[prost(uint32, optional, tag="5")]
12989    pub len: ::core::option::Option<u32>,
12990    #[prost(uint32, optional, tag="6")]
12991    pub protocol: ::core::option::Option<u32>,
12992}
12993// End of protos/perfetto/trace/ftrace/i2c.proto
12994
12995// Begin of protos/perfetto/trace/ftrace/ion.proto
12996
12997#[derive(Clone, PartialEq, ::prost::Message)]
12998pub struct IonStatFtraceEvent {
12999    #[prost(uint32, optional, tag="1")]
13000    pub buffer_id: ::core::option::Option<u32>,
13001    #[prost(int64, optional, tag="2")]
13002    pub len: ::core::option::Option<i64>,
13003    #[prost(uint64, optional, tag="3")]
13004    pub total_allocated: ::core::option::Option<u64>,
13005}
13006// End of protos/perfetto/trace/ftrace/ion.proto
13007
13008// Begin of protos/perfetto/trace/ftrace/ipi.proto
13009
13010#[derive(Clone, PartialEq, ::prost::Message)]
13011pub struct IpiEntryFtraceEvent {
13012    #[prost(string, optional, tag="1")]
13013    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13014}
13015#[derive(Clone, PartialEq, ::prost::Message)]
13016pub struct IpiExitFtraceEvent {
13017    #[prost(string, optional, tag="1")]
13018    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13019}
13020#[derive(Clone, PartialEq, ::prost::Message)]
13021pub struct IpiRaiseFtraceEvent {
13022    #[prost(uint32, optional, tag="1")]
13023    pub target_cpus: ::core::option::Option<u32>,
13024    #[prost(string, optional, tag="2")]
13025    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13026}
13027// End of protos/perfetto/trace/ftrace/ipi.proto
13028
13029// Begin of protos/perfetto/trace/ftrace/irq.proto
13030
13031#[derive(Clone, PartialEq, ::prost::Message)]
13032pub struct SoftirqEntryFtraceEvent {
13033    #[prost(uint32, optional, tag="1")]
13034    pub vec: ::core::option::Option<u32>,
13035}
13036#[derive(Clone, PartialEq, ::prost::Message)]
13037pub struct SoftirqExitFtraceEvent {
13038    #[prost(uint32, optional, tag="1")]
13039    pub vec: ::core::option::Option<u32>,
13040}
13041#[derive(Clone, PartialEq, ::prost::Message)]
13042pub struct SoftirqRaiseFtraceEvent {
13043    #[prost(uint32, optional, tag="1")]
13044    pub vec: ::core::option::Option<u32>,
13045}
13046#[derive(Clone, PartialEq, ::prost::Message)]
13047pub struct IrqHandlerEntryFtraceEvent {
13048    #[prost(int32, optional, tag="1")]
13049    pub irq: ::core::option::Option<i32>,
13050    #[prost(string, optional, tag="2")]
13051    pub name: ::core::option::Option<::prost::alloc::string::String>,
13052    #[prost(uint32, optional, tag="3")]
13053    pub handler: ::core::option::Option<u32>,
13054}
13055#[derive(Clone, PartialEq, ::prost::Message)]
13056pub struct IrqHandlerExitFtraceEvent {
13057    #[prost(int32, optional, tag="1")]
13058    pub irq: ::core::option::Option<i32>,
13059    #[prost(int32, optional, tag="2")]
13060    pub ret: ::core::option::Option<i32>,
13061}
13062// End of protos/perfetto/trace/ftrace/irq.proto
13063
13064// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
13065
13066#[derive(Clone, PartialEq, ::prost::Message)]
13067pub struct LocalTimerEntryFtraceEvent {
13068    #[prost(int32, optional, tag="1")]
13069    pub vector: ::core::option::Option<i32>,
13070}
13071#[derive(Clone, PartialEq, ::prost::Message)]
13072pub struct LocalTimerExitFtraceEvent {
13073    #[prost(int32, optional, tag="1")]
13074    pub vector: ::core::option::Option<i32>,
13075}
13076// End of protos/perfetto/trace/ftrace/irq_vectors.proto
13077
13078// Begin of protos/perfetto/trace/ftrace/kgsl.proto
13079
13080#[derive(Clone, PartialEq, ::prost::Message)]
13081pub struct KgslGpuFrequencyFtraceEvent {
13082    #[prost(uint32, optional, tag="1")]
13083    pub gpu_freq: ::core::option::Option<u32>,
13084    #[prost(uint32, optional, tag="2")]
13085    pub gpu_id: ::core::option::Option<u32>,
13086}
13087#[derive(Clone, PartialEq, ::prost::Message)]
13088pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
13089    #[prost(uint32, optional, tag="1")]
13090    pub id: ::core::option::Option<u32>,
13091    #[prost(uint32, optional, tag="2")]
13092    pub timestamp: ::core::option::Option<u32>,
13093    #[prost(uint32, optional, tag="3")]
13094    pub queued: ::core::option::Option<u32>,
13095    #[prost(uint32, optional, tag="4")]
13096    pub flags: ::core::option::Option<u32>,
13097    #[prost(uint32, optional, tag="5")]
13098    pub prio: ::core::option::Option<u32>,
13099}
13100#[derive(Clone, PartialEq, ::prost::Message)]
13101pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13102    #[prost(uint32, optional, tag="1")]
13103    pub id: ::core::option::Option<u32>,
13104    #[prost(uint32, optional, tag="2")]
13105    pub timestamp: ::core::option::Option<u32>,
13106    #[prost(int64, optional, tag="3")]
13107    pub inflight: ::core::option::Option<i64>,
13108    #[prost(uint32, optional, tag="4")]
13109    pub flags: ::core::option::Option<u32>,
13110    #[prost(uint64, optional, tag="5")]
13111    pub ticks: ::core::option::Option<u64>,
13112    #[prost(uint64, optional, tag="6")]
13113    pub secs: ::core::option::Option<u64>,
13114    #[prost(uint64, optional, tag="7")]
13115    pub usecs: ::core::option::Option<u64>,
13116    #[prost(int32, optional, tag="8")]
13117    pub prio: ::core::option::Option<i32>,
13118    #[prost(int32, optional, tag="9")]
13119    pub rb_id: ::core::option::Option<i32>,
13120    #[prost(uint32, optional, tag="10")]
13121    pub rptr: ::core::option::Option<u32>,
13122    #[prost(uint32, optional, tag="11")]
13123    pub wptr: ::core::option::Option<u32>,
13124    #[prost(int32, optional, tag="12")]
13125    pub q_inflight: ::core::option::Option<i32>,
13126    #[prost(int32, optional, tag="13")]
13127    pub dispatch_queue: ::core::option::Option<i32>,
13128}
13129#[derive(Clone, PartialEq, ::prost::Message)]
13130pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13131    #[prost(uint32, optional, tag="1")]
13132    pub id: ::core::option::Option<u32>,
13133    #[prost(uint32, optional, tag="2")]
13134    pub timestamp: ::core::option::Option<u32>,
13135    #[prost(uint64, optional, tag="3")]
13136    pub ticks: ::core::option::Option<u64>,
13137    #[prost(int32, optional, tag="4")]
13138    pub prio: ::core::option::Option<i32>,
13139}
13140#[derive(Clone, PartialEq, ::prost::Message)]
13141pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13142    #[prost(uint32, optional, tag="1")]
13143    pub id: ::core::option::Option<u32>,
13144    #[prost(uint32, optional, tag="2")]
13145    pub timestamp: ::core::option::Option<u32>,
13146    #[prost(int64, optional, tag="3")]
13147    pub inflight: ::core::option::Option<i64>,
13148    #[prost(uint32, optional, tag="4")]
13149    pub recovery: ::core::option::Option<u32>,
13150    #[prost(uint32, optional, tag="5")]
13151    pub flags: ::core::option::Option<u32>,
13152    #[prost(uint64, optional, tag="6")]
13153    pub start: ::core::option::Option<u64>,
13154    #[prost(uint64, optional, tag="7")]
13155    pub retire: ::core::option::Option<u64>,
13156    #[prost(int32, optional, tag="8")]
13157    pub prio: ::core::option::Option<i32>,
13158    #[prost(int32, optional, tag="9")]
13159    pub rb_id: ::core::option::Option<i32>,
13160    #[prost(uint32, optional, tag="10")]
13161    pub rptr: ::core::option::Option<u32>,
13162    #[prost(uint32, optional, tag="11")]
13163    pub wptr: ::core::option::Option<u32>,
13164    #[prost(int32, optional, tag="12")]
13165    pub q_inflight: ::core::option::Option<i32>,
13166    #[prost(uint64, optional, tag="13")]
13167    pub fault_recovery: ::core::option::Option<u64>,
13168    #[prost(uint32, optional, tag="14")]
13169    pub dispatch_queue: ::core::option::Option<u32>,
13170    #[prost(uint64, optional, tag="15")]
13171    pub submitted_to_rb: ::core::option::Option<u64>,
13172    #[prost(uint64, optional, tag="16")]
13173    pub retired_on_gmu: ::core::option::Option<u64>,
13174    #[prost(uint64, optional, tag="17")]
13175    pub active: ::core::option::Option<u64>,
13176}
13177// End of protos/perfetto/trace/ftrace/kgsl.proto
13178
13179// Begin of protos/perfetto/trace/ftrace/kmem.proto
13180
13181#[derive(Clone, PartialEq, ::prost::Message)]
13182pub struct AllocPagesIommuEndFtraceEvent {
13183    #[prost(uint32, optional, tag="1")]
13184    pub gfp_flags: ::core::option::Option<u32>,
13185    #[prost(uint32, optional, tag="2")]
13186    pub order: ::core::option::Option<u32>,
13187}
13188#[derive(Clone, PartialEq, ::prost::Message)]
13189pub struct AllocPagesIommuFailFtraceEvent {
13190    #[prost(uint32, optional, tag="1")]
13191    pub gfp_flags: ::core::option::Option<u32>,
13192    #[prost(uint32, optional, tag="2")]
13193    pub order: ::core::option::Option<u32>,
13194}
13195#[derive(Clone, PartialEq, ::prost::Message)]
13196pub struct AllocPagesIommuStartFtraceEvent {
13197    #[prost(uint32, optional, tag="1")]
13198    pub gfp_flags: ::core::option::Option<u32>,
13199    #[prost(uint32, optional, tag="2")]
13200    pub order: ::core::option::Option<u32>,
13201}
13202#[derive(Clone, PartialEq, ::prost::Message)]
13203pub struct AllocPagesSysEndFtraceEvent {
13204    #[prost(uint32, optional, tag="1")]
13205    pub gfp_flags: ::core::option::Option<u32>,
13206    #[prost(uint32, optional, tag="2")]
13207    pub order: ::core::option::Option<u32>,
13208}
13209#[derive(Clone, PartialEq, ::prost::Message)]
13210pub struct AllocPagesSysFailFtraceEvent {
13211    #[prost(uint32, optional, tag="1")]
13212    pub gfp_flags: ::core::option::Option<u32>,
13213    #[prost(uint32, optional, tag="2")]
13214    pub order: ::core::option::Option<u32>,
13215}
13216#[derive(Clone, PartialEq, ::prost::Message)]
13217pub struct AllocPagesSysStartFtraceEvent {
13218    #[prost(uint32, optional, tag="1")]
13219    pub gfp_flags: ::core::option::Option<u32>,
13220    #[prost(uint32, optional, tag="2")]
13221    pub order: ::core::option::Option<u32>,
13222}
13223#[derive(Clone, PartialEq, ::prost::Message)]
13224pub struct DmaAllocContiguousRetryFtraceEvent {
13225    #[prost(int32, optional, tag="1")]
13226    pub tries: ::core::option::Option<i32>,
13227}
13228#[derive(Clone, PartialEq, ::prost::Message)]
13229pub struct IommuMapRangeFtraceEvent {
13230    #[prost(uint64, optional, tag="1")]
13231    pub chunk_size: ::core::option::Option<u64>,
13232    #[prost(uint64, optional, tag="2")]
13233    pub len: ::core::option::Option<u64>,
13234    #[prost(uint64, optional, tag="3")]
13235    pub pa: ::core::option::Option<u64>,
13236    #[prost(uint64, optional, tag="4")]
13237    pub va: ::core::option::Option<u64>,
13238}
13239#[derive(Clone, PartialEq, ::prost::Message)]
13240pub struct IommuSecPtblMapRangeEndFtraceEvent {
13241    #[prost(uint64, optional, tag="1")]
13242    pub len: ::core::option::Option<u64>,
13243    #[prost(int32, optional, tag="2")]
13244    pub num: ::core::option::Option<i32>,
13245    #[prost(uint32, optional, tag="3")]
13246    pub pa: ::core::option::Option<u32>,
13247    #[prost(int32, optional, tag="4")]
13248    pub sec_id: ::core::option::Option<i32>,
13249    #[prost(uint64, optional, tag="5")]
13250    pub va: ::core::option::Option<u64>,
13251}
13252#[derive(Clone, PartialEq, ::prost::Message)]
13253pub struct IommuSecPtblMapRangeStartFtraceEvent {
13254    #[prost(uint64, optional, tag="1")]
13255    pub len: ::core::option::Option<u64>,
13256    #[prost(int32, optional, tag="2")]
13257    pub num: ::core::option::Option<i32>,
13258    #[prost(uint32, optional, tag="3")]
13259    pub pa: ::core::option::Option<u32>,
13260    #[prost(int32, optional, tag="4")]
13261    pub sec_id: ::core::option::Option<i32>,
13262    #[prost(uint64, optional, tag="5")]
13263    pub va: ::core::option::Option<u64>,
13264}
13265#[derive(Clone, PartialEq, ::prost::Message)]
13266pub struct IonAllocBufferEndFtraceEvent {
13267    #[prost(string, optional, tag="1")]
13268    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13269    #[prost(uint32, optional, tag="2")]
13270    pub flags: ::core::option::Option<u32>,
13271    #[prost(string, optional, tag="3")]
13272    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13273    #[prost(uint64, optional, tag="4")]
13274    pub len: ::core::option::Option<u64>,
13275    #[prost(uint32, optional, tag="5")]
13276    pub mask: ::core::option::Option<u32>,
13277}
13278#[derive(Clone, PartialEq, ::prost::Message)]
13279pub struct IonAllocBufferFailFtraceEvent {
13280    #[prost(string, optional, tag="1")]
13281    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13282    #[prost(int64, optional, tag="2")]
13283    pub error: ::core::option::Option<i64>,
13284    #[prost(uint32, optional, tag="3")]
13285    pub flags: ::core::option::Option<u32>,
13286    #[prost(string, optional, tag="4")]
13287    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13288    #[prost(uint64, optional, tag="5")]
13289    pub len: ::core::option::Option<u64>,
13290    #[prost(uint32, optional, tag="6")]
13291    pub mask: ::core::option::Option<u32>,
13292}
13293#[derive(Clone, PartialEq, ::prost::Message)]
13294pub struct IonAllocBufferFallbackFtraceEvent {
13295    #[prost(string, optional, tag="1")]
13296    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13297    #[prost(int64, optional, tag="2")]
13298    pub error: ::core::option::Option<i64>,
13299    #[prost(uint32, optional, tag="3")]
13300    pub flags: ::core::option::Option<u32>,
13301    #[prost(string, optional, tag="4")]
13302    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13303    #[prost(uint64, optional, tag="5")]
13304    pub len: ::core::option::Option<u64>,
13305    #[prost(uint32, optional, tag="6")]
13306    pub mask: ::core::option::Option<u32>,
13307}
13308#[derive(Clone, PartialEq, ::prost::Message)]
13309pub struct IonAllocBufferStartFtraceEvent {
13310    #[prost(string, optional, tag="1")]
13311    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13312    #[prost(uint32, optional, tag="2")]
13313    pub flags: ::core::option::Option<u32>,
13314    #[prost(string, optional, tag="3")]
13315    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13316    #[prost(uint64, optional, tag="4")]
13317    pub len: ::core::option::Option<u64>,
13318    #[prost(uint32, optional, tag="5")]
13319    pub mask: ::core::option::Option<u32>,
13320}
13321#[derive(Clone, PartialEq, ::prost::Message)]
13322pub struct IonCpAllocRetryFtraceEvent {
13323    #[prost(int32, optional, tag="1")]
13324    pub tries: ::core::option::Option<i32>,
13325}
13326#[derive(Clone, PartialEq, ::prost::Message)]
13327pub struct IonCpSecureBufferEndFtraceEvent {
13328    #[prost(uint64, optional, tag="1")]
13329    pub align: ::core::option::Option<u64>,
13330    #[prost(uint64, optional, tag="2")]
13331    pub flags: ::core::option::Option<u64>,
13332    #[prost(string, optional, tag="3")]
13333    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13334    #[prost(uint64, optional, tag="4")]
13335    pub len: ::core::option::Option<u64>,
13336}
13337#[derive(Clone, PartialEq, ::prost::Message)]
13338pub struct IonCpSecureBufferStartFtraceEvent {
13339    #[prost(uint64, optional, tag="1")]
13340    pub align: ::core::option::Option<u64>,
13341    #[prost(uint64, optional, tag="2")]
13342    pub flags: ::core::option::Option<u64>,
13343    #[prost(string, optional, tag="3")]
13344    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13345    #[prost(uint64, optional, tag="4")]
13346    pub len: ::core::option::Option<u64>,
13347}
13348#[derive(Clone, PartialEq, ::prost::Message)]
13349pub struct IonPrefetchingFtraceEvent {
13350    #[prost(uint64, optional, tag="1")]
13351    pub len: ::core::option::Option<u64>,
13352}
13353#[derive(Clone, PartialEq, ::prost::Message)]
13354pub struct IonSecureCmaAddToPoolEndFtraceEvent {
13355    #[prost(uint32, optional, tag="1")]
13356    pub is_prefetch: ::core::option::Option<u32>,
13357    #[prost(uint64, optional, tag="2")]
13358    pub len: ::core::option::Option<u64>,
13359    #[prost(int32, optional, tag="3")]
13360    pub pool_total: ::core::option::Option<i32>,
13361}
13362#[derive(Clone, PartialEq, ::prost::Message)]
13363pub struct IonSecureCmaAddToPoolStartFtraceEvent {
13364    #[prost(uint32, optional, tag="1")]
13365    pub is_prefetch: ::core::option::Option<u32>,
13366    #[prost(uint64, optional, tag="2")]
13367    pub len: ::core::option::Option<u64>,
13368    #[prost(int32, optional, tag="3")]
13369    pub pool_total: ::core::option::Option<i32>,
13370}
13371#[derive(Clone, PartialEq, ::prost::Message)]
13372pub struct IonSecureCmaAllocateEndFtraceEvent {
13373    #[prost(uint64, optional, tag="1")]
13374    pub align: ::core::option::Option<u64>,
13375    #[prost(uint64, optional, tag="2")]
13376    pub flags: ::core::option::Option<u64>,
13377    #[prost(string, optional, tag="3")]
13378    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13379    #[prost(uint64, optional, tag="4")]
13380    pub len: ::core::option::Option<u64>,
13381}
13382#[derive(Clone, PartialEq, ::prost::Message)]
13383pub struct IonSecureCmaAllocateStartFtraceEvent {
13384    #[prost(uint64, optional, tag="1")]
13385    pub align: ::core::option::Option<u64>,
13386    #[prost(uint64, optional, tag="2")]
13387    pub flags: ::core::option::Option<u64>,
13388    #[prost(string, optional, tag="3")]
13389    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13390    #[prost(uint64, optional, tag="4")]
13391    pub len: ::core::option::Option<u64>,
13392}
13393#[derive(Clone, PartialEq, ::prost::Message)]
13394pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
13395    #[prost(uint64, optional, tag="1")]
13396    pub drained_size: ::core::option::Option<u64>,
13397    #[prost(uint64, optional, tag="2")]
13398    pub skipped_size: ::core::option::Option<u64>,
13399}
13400#[derive(Clone, PartialEq, ::prost::Message)]
13401pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
13402    #[prost(uint64, optional, tag="1")]
13403    pub drained_size: ::core::option::Option<u64>,
13404    #[prost(uint64, optional, tag="2")]
13405    pub skipped_size: ::core::option::Option<u64>,
13406}
13407#[derive(Clone, PartialEq, ::prost::Message)]
13408pub struct KfreeFtraceEvent {
13409    #[prost(uint64, optional, tag="1")]
13410    pub call_site: ::core::option::Option<u64>,
13411    #[prost(uint64, optional, tag="2")]
13412    pub ptr: ::core::option::Option<u64>,
13413}
13414#[derive(Clone, PartialEq, ::prost::Message)]
13415pub struct KmallocFtraceEvent {
13416    #[prost(uint64, optional, tag="1")]
13417    pub bytes_alloc: ::core::option::Option<u64>,
13418    #[prost(uint64, optional, tag="2")]
13419    pub bytes_req: ::core::option::Option<u64>,
13420    #[prost(uint64, optional, tag="3")]
13421    pub call_site: ::core::option::Option<u64>,
13422    #[prost(uint32, optional, tag="4")]
13423    pub gfp_flags: ::core::option::Option<u32>,
13424    #[prost(uint64, optional, tag="5")]
13425    pub ptr: ::core::option::Option<u64>,
13426}
13427#[derive(Clone, PartialEq, ::prost::Message)]
13428pub struct KmallocNodeFtraceEvent {
13429    #[prost(uint64, optional, tag="1")]
13430    pub bytes_alloc: ::core::option::Option<u64>,
13431    #[prost(uint64, optional, tag="2")]
13432    pub bytes_req: ::core::option::Option<u64>,
13433    #[prost(uint64, optional, tag="3")]
13434    pub call_site: ::core::option::Option<u64>,
13435    #[prost(uint32, optional, tag="4")]
13436    pub gfp_flags: ::core::option::Option<u32>,
13437    #[prost(int32, optional, tag="5")]
13438    pub node: ::core::option::Option<i32>,
13439    #[prost(uint64, optional, tag="6")]
13440    pub ptr: ::core::option::Option<u64>,
13441}
13442#[derive(Clone, PartialEq, ::prost::Message)]
13443pub struct KmemCacheAllocFtraceEvent {
13444    #[prost(uint64, optional, tag="1")]
13445    pub bytes_alloc: ::core::option::Option<u64>,
13446    #[prost(uint64, optional, tag="2")]
13447    pub bytes_req: ::core::option::Option<u64>,
13448    #[prost(uint64, optional, tag="3")]
13449    pub call_site: ::core::option::Option<u64>,
13450    #[prost(uint32, optional, tag="4")]
13451    pub gfp_flags: ::core::option::Option<u32>,
13452    #[prost(uint64, optional, tag="5")]
13453    pub ptr: ::core::option::Option<u64>,
13454}
13455#[derive(Clone, PartialEq, ::prost::Message)]
13456pub struct KmemCacheAllocNodeFtraceEvent {
13457    #[prost(uint64, optional, tag="1")]
13458    pub bytes_alloc: ::core::option::Option<u64>,
13459    #[prost(uint64, optional, tag="2")]
13460    pub bytes_req: ::core::option::Option<u64>,
13461    #[prost(uint64, optional, tag="3")]
13462    pub call_site: ::core::option::Option<u64>,
13463    #[prost(uint32, optional, tag="4")]
13464    pub gfp_flags: ::core::option::Option<u32>,
13465    #[prost(int32, optional, tag="5")]
13466    pub node: ::core::option::Option<i32>,
13467    #[prost(uint64, optional, tag="6")]
13468    pub ptr: ::core::option::Option<u64>,
13469}
13470#[derive(Clone, PartialEq, ::prost::Message)]
13471pub struct KmemCacheFreeFtraceEvent {
13472    #[prost(uint64, optional, tag="1")]
13473    pub call_site: ::core::option::Option<u64>,
13474    #[prost(uint64, optional, tag="2")]
13475    pub ptr: ::core::option::Option<u64>,
13476}
13477#[derive(Clone, PartialEq, ::prost::Message)]
13478pub struct MigratePagesEndFtraceEvent {
13479    #[prost(int32, optional, tag="1")]
13480    pub mode: ::core::option::Option<i32>,
13481}
13482#[derive(Clone, PartialEq, ::prost::Message)]
13483pub struct MigratePagesStartFtraceEvent {
13484    #[prost(int32, optional, tag="1")]
13485    pub mode: ::core::option::Option<i32>,
13486}
13487#[derive(Clone, PartialEq, ::prost::Message)]
13488pub struct MigrateRetryFtraceEvent {
13489    #[prost(int32, optional, tag="1")]
13490    pub tries: ::core::option::Option<i32>,
13491}
13492#[derive(Clone, PartialEq, ::prost::Message)]
13493pub struct MmPageAllocFtraceEvent {
13494    #[prost(uint32, optional, tag="1")]
13495    pub gfp_flags: ::core::option::Option<u32>,
13496    #[prost(int32, optional, tag="2")]
13497    pub migratetype: ::core::option::Option<i32>,
13498    #[prost(uint32, optional, tag="3")]
13499    pub order: ::core::option::Option<u32>,
13500    #[prost(uint64, optional, tag="4")]
13501    pub page: ::core::option::Option<u64>,
13502    #[prost(uint64, optional, tag="5")]
13503    pub pfn: ::core::option::Option<u64>,
13504}
13505#[derive(Clone, PartialEq, ::prost::Message)]
13506pub struct MmPageAllocExtfragFtraceEvent {
13507    #[prost(int32, optional, tag="1")]
13508    pub alloc_migratetype: ::core::option::Option<i32>,
13509    #[prost(int32, optional, tag="2")]
13510    pub alloc_order: ::core::option::Option<i32>,
13511    #[prost(int32, optional, tag="3")]
13512    pub fallback_migratetype: ::core::option::Option<i32>,
13513    #[prost(int32, optional, tag="4")]
13514    pub fallback_order: ::core::option::Option<i32>,
13515    #[prost(uint64, optional, tag="5")]
13516    pub page: ::core::option::Option<u64>,
13517    #[prost(int32, optional, tag="6")]
13518    pub change_ownership: ::core::option::Option<i32>,
13519    #[prost(uint64, optional, tag="7")]
13520    pub pfn: ::core::option::Option<u64>,
13521}
13522#[derive(Clone, PartialEq, ::prost::Message)]
13523pub struct MmPageAllocZoneLockedFtraceEvent {
13524    #[prost(int32, optional, tag="1")]
13525    pub migratetype: ::core::option::Option<i32>,
13526    #[prost(uint32, optional, tag="2")]
13527    pub order: ::core::option::Option<u32>,
13528    #[prost(uint64, optional, tag="3")]
13529    pub page: ::core::option::Option<u64>,
13530    #[prost(uint64, optional, tag="4")]
13531    pub pfn: ::core::option::Option<u64>,
13532}
13533#[derive(Clone, PartialEq, ::prost::Message)]
13534pub struct MmPageFreeFtraceEvent {
13535    #[prost(uint32, optional, tag="1")]
13536    pub order: ::core::option::Option<u32>,
13537    #[prost(uint64, optional, tag="2")]
13538    pub page: ::core::option::Option<u64>,
13539    #[prost(uint64, optional, tag="3")]
13540    pub pfn: ::core::option::Option<u64>,
13541}
13542#[derive(Clone, PartialEq, ::prost::Message)]
13543pub struct MmPageFreeBatchedFtraceEvent {
13544    #[prost(int32, optional, tag="1")]
13545    pub cold: ::core::option::Option<i32>,
13546    #[prost(uint64, optional, tag="2")]
13547    pub page: ::core::option::Option<u64>,
13548    #[prost(uint64, optional, tag="3")]
13549    pub pfn: ::core::option::Option<u64>,
13550}
13551#[derive(Clone, PartialEq, ::prost::Message)]
13552pub struct MmPagePcpuDrainFtraceEvent {
13553    #[prost(int32, optional, tag="1")]
13554    pub migratetype: ::core::option::Option<i32>,
13555    #[prost(uint32, optional, tag="2")]
13556    pub order: ::core::option::Option<u32>,
13557    #[prost(uint64, optional, tag="3")]
13558    pub page: ::core::option::Option<u64>,
13559    #[prost(uint64, optional, tag="4")]
13560    pub pfn: ::core::option::Option<u64>,
13561}
13562#[derive(Clone, PartialEq, ::prost::Message)]
13563pub struct RssStatFtraceEvent {
13564    #[prost(int32, optional, tag="1")]
13565    pub member: ::core::option::Option<i32>,
13566    #[prost(int64, optional, tag="2")]
13567    pub size: ::core::option::Option<i64>,
13568    #[prost(uint32, optional, tag="3")]
13569    pub curr: ::core::option::Option<u32>,
13570    #[prost(uint32, optional, tag="4")]
13571    pub mm_id: ::core::option::Option<u32>,
13572}
13573#[derive(Clone, PartialEq, ::prost::Message)]
13574pub struct IonHeapShrinkFtraceEvent {
13575    #[prost(string, optional, tag="1")]
13576    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13577    #[prost(uint64, optional, tag="2")]
13578    pub len: ::core::option::Option<u64>,
13579    #[prost(int64, optional, tag="3")]
13580    pub total_allocated: ::core::option::Option<i64>,
13581}
13582#[derive(Clone, PartialEq, ::prost::Message)]
13583pub struct IonHeapGrowFtraceEvent {
13584    #[prost(string, optional, tag="1")]
13585    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13586    #[prost(uint64, optional, tag="2")]
13587    pub len: ::core::option::Option<u64>,
13588    #[prost(int64, optional, tag="3")]
13589    pub total_allocated: ::core::option::Option<i64>,
13590}
13591#[derive(Clone, PartialEq, ::prost::Message)]
13592pub struct IonBufferCreateFtraceEvent {
13593    #[prost(uint64, optional, tag="1")]
13594    pub addr: ::core::option::Option<u64>,
13595    #[prost(uint64, optional, tag="2")]
13596    pub len: ::core::option::Option<u64>,
13597}
13598#[derive(Clone, PartialEq, ::prost::Message)]
13599pub struct IonBufferDestroyFtraceEvent {
13600    #[prost(uint64, optional, tag="1")]
13601    pub addr: ::core::option::Option<u64>,
13602    #[prost(uint64, optional, tag="2")]
13603    pub len: ::core::option::Option<u64>,
13604}
13605#[derive(Clone, PartialEq, ::prost::Message)]
13606pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
13607    #[prost(uint64, optional, tag="1")]
13608    pub start: ::core::option::Option<u64>,
13609    #[prost(uint64, optional, tag="2")]
13610    pub end: ::core::option::Option<u64>,
13611    #[prost(uint64, optional, tag="3")]
13612    pub nr_migrated: ::core::option::Option<u64>,
13613    #[prost(uint64, optional, tag="4")]
13614    pub nr_reclaimed: ::core::option::Option<u64>,
13615    #[prost(uint64, optional, tag="5")]
13616    pub nr_mapped: ::core::option::Option<u64>,
13617    #[prost(int32, optional, tag="6")]
13618    pub migratetype: ::core::option::Option<i32>,
13619}
13620#[derive(Clone, PartialEq, ::prost::Message)]
13621pub struct DmabufRssStatFtraceEvent {
13622    #[prost(uint64, optional, tag="1")]
13623    pub rss: ::core::option::Option<u64>,
13624    #[prost(int64, optional, tag="2")]
13625    pub rss_delta: ::core::option::Option<i64>,
13626    #[prost(uint64, optional, tag="3")]
13627    pub i_ino: ::core::option::Option<u64>,
13628}
13629// End of protos/perfetto/trace/ftrace/kmem.proto
13630
13631// Begin of protos/perfetto/trace/ftrace/kvm.proto
13632
13633#[derive(Clone, PartialEq, ::prost::Message)]
13634pub struct KvmAccessFaultFtraceEvent {
13635    #[prost(uint64, optional, tag="1")]
13636    pub ipa: ::core::option::Option<u64>,
13637}
13638#[derive(Clone, PartialEq, ::prost::Message)]
13639pub struct KvmAckIrqFtraceEvent {
13640    #[prost(uint32, optional, tag="1")]
13641    pub irqchip: ::core::option::Option<u32>,
13642    #[prost(uint32, optional, tag="2")]
13643    pub pin: ::core::option::Option<u32>,
13644}
13645#[derive(Clone, PartialEq, ::prost::Message)]
13646pub struct KvmAgeHvaFtraceEvent {
13647    #[prost(uint64, optional, tag="1")]
13648    pub end: ::core::option::Option<u64>,
13649    #[prost(uint64, optional, tag="2")]
13650    pub start: ::core::option::Option<u64>,
13651}
13652#[derive(Clone, PartialEq, ::prost::Message)]
13653pub struct KvmAgePageFtraceEvent {
13654    #[prost(uint64, optional, tag="1")]
13655    pub gfn: ::core::option::Option<u64>,
13656    #[prost(uint64, optional, tag="2")]
13657    pub hva: ::core::option::Option<u64>,
13658    #[prost(uint32, optional, tag="3")]
13659    pub level: ::core::option::Option<u32>,
13660    #[prost(uint32, optional, tag="4")]
13661    pub referenced: ::core::option::Option<u32>,
13662}
13663#[derive(Clone, PartialEq, ::prost::Message)]
13664pub struct KvmArmClearDebugFtraceEvent {
13665    #[prost(uint32, optional, tag="1")]
13666    pub guest_debug: ::core::option::Option<u32>,
13667}
13668#[derive(Clone, PartialEq, ::prost::Message)]
13669pub struct KvmArmSetDreg32FtraceEvent {
13670    #[prost(string, optional, tag="1")]
13671    pub name: ::core::option::Option<::prost::alloc::string::String>,
13672    #[prost(uint32, optional, tag="2")]
13673    pub value: ::core::option::Option<u32>,
13674}
13675#[derive(Clone, PartialEq, ::prost::Message)]
13676pub struct KvmArmSetRegsetFtraceEvent {
13677    #[prost(int32, optional, tag="1")]
13678    pub len: ::core::option::Option<i32>,
13679    #[prost(string, optional, tag="2")]
13680    pub name: ::core::option::Option<::prost::alloc::string::String>,
13681}
13682#[derive(Clone, PartialEq, ::prost::Message)]
13683pub struct KvmArmSetupDebugFtraceEvent {
13684    #[prost(uint32, optional, tag="1")]
13685    pub guest_debug: ::core::option::Option<u32>,
13686    #[prost(uint64, optional, tag="2")]
13687    pub vcpu: ::core::option::Option<u64>,
13688}
13689#[derive(Clone, PartialEq, ::prost::Message)]
13690pub struct KvmEntryFtraceEvent {
13691    #[prost(uint64, optional, tag="1")]
13692    pub vcpu_pc: ::core::option::Option<u64>,
13693}
13694#[derive(Clone, PartialEq, ::prost::Message)]
13695pub struct KvmExitFtraceEvent {
13696    #[prost(uint32, optional, tag="1")]
13697    pub esr_ec: ::core::option::Option<u32>,
13698    #[prost(int32, optional, tag="2")]
13699    pub ret: ::core::option::Option<i32>,
13700    #[prost(uint64, optional, tag="3")]
13701    pub vcpu_pc: ::core::option::Option<u64>,
13702}
13703#[derive(Clone, PartialEq, ::prost::Message)]
13704pub struct KvmFpuFtraceEvent {
13705    #[prost(uint32, optional, tag="1")]
13706    pub load: ::core::option::Option<u32>,
13707}
13708#[derive(Clone, PartialEq, ::prost::Message)]
13709pub struct KvmGetTimerMapFtraceEvent {
13710    #[prost(int32, optional, tag="1")]
13711    pub direct_ptimer: ::core::option::Option<i32>,
13712    #[prost(int32, optional, tag="2")]
13713    pub direct_vtimer: ::core::option::Option<i32>,
13714    #[prost(int32, optional, tag="3")]
13715    pub emul_ptimer: ::core::option::Option<i32>,
13716    #[prost(uint64, optional, tag="4")]
13717    pub vcpu_id: ::core::option::Option<u64>,
13718}
13719#[derive(Clone, PartialEq, ::prost::Message)]
13720pub struct KvmGuestFaultFtraceEvent {
13721    #[prost(uint64, optional, tag="1")]
13722    pub hsr: ::core::option::Option<u64>,
13723    #[prost(uint64, optional, tag="2")]
13724    pub hxfar: ::core::option::Option<u64>,
13725    #[prost(uint64, optional, tag="3")]
13726    pub ipa: ::core::option::Option<u64>,
13727    #[prost(uint64, optional, tag="4")]
13728    pub vcpu_pc: ::core::option::Option<u64>,
13729}
13730#[derive(Clone, PartialEq, ::prost::Message)]
13731pub struct KvmHandleSysRegFtraceEvent {
13732    #[prost(uint64, optional, tag="1")]
13733    pub hsr: ::core::option::Option<u64>,
13734}
13735#[derive(Clone, PartialEq, ::prost::Message)]
13736pub struct KvmHvcArm64FtraceEvent {
13737    #[prost(uint64, optional, tag="1")]
13738    pub imm: ::core::option::Option<u64>,
13739    #[prost(uint64, optional, tag="2")]
13740    pub r0: ::core::option::Option<u64>,
13741    #[prost(uint64, optional, tag="3")]
13742    pub vcpu_pc: ::core::option::Option<u64>,
13743}
13744#[derive(Clone, PartialEq, ::prost::Message)]
13745pub struct KvmIrqLineFtraceEvent {
13746    #[prost(int32, optional, tag="1")]
13747    pub irq_num: ::core::option::Option<i32>,
13748    #[prost(int32, optional, tag="2")]
13749    pub level: ::core::option::Option<i32>,
13750    #[prost(uint32, optional, tag="3")]
13751    pub r#type: ::core::option::Option<u32>,
13752    #[prost(int32, optional, tag="4")]
13753    pub vcpu_idx: ::core::option::Option<i32>,
13754}
13755#[derive(Clone, PartialEq, ::prost::Message)]
13756pub struct KvmMmioFtraceEvent {
13757    #[prost(uint64, optional, tag="1")]
13758    pub gpa: ::core::option::Option<u64>,
13759    #[prost(uint32, optional, tag="2")]
13760    pub len: ::core::option::Option<u32>,
13761    #[prost(uint32, optional, tag="3")]
13762    pub r#type: ::core::option::Option<u32>,
13763    #[prost(uint64, optional, tag="4")]
13764    pub val: ::core::option::Option<u64>,
13765}
13766#[derive(Clone, PartialEq, ::prost::Message)]
13767pub struct KvmMmioEmulateFtraceEvent {
13768    #[prost(uint64, optional, tag="1")]
13769    pub cpsr: ::core::option::Option<u64>,
13770    #[prost(uint64, optional, tag="2")]
13771    pub instr: ::core::option::Option<u64>,
13772    #[prost(uint64, optional, tag="3")]
13773    pub vcpu_pc: ::core::option::Option<u64>,
13774}
13775#[derive(Clone, PartialEq, ::prost::Message)]
13776pub struct KvmSetGuestDebugFtraceEvent {
13777    #[prost(uint32, optional, tag="1")]
13778    pub guest_debug: ::core::option::Option<u32>,
13779    #[prost(uint64, optional, tag="2")]
13780    pub vcpu: ::core::option::Option<u64>,
13781}
13782#[derive(Clone, PartialEq, ::prost::Message)]
13783pub struct KvmSetIrqFtraceEvent {
13784    #[prost(uint32, optional, tag="1")]
13785    pub gsi: ::core::option::Option<u32>,
13786    #[prost(int32, optional, tag="2")]
13787    pub irq_source_id: ::core::option::Option<i32>,
13788    #[prost(int32, optional, tag="3")]
13789    pub level: ::core::option::Option<i32>,
13790}
13791#[derive(Clone, PartialEq, ::prost::Message)]
13792pub struct KvmSetSpteHvaFtraceEvent {
13793    #[prost(uint64, optional, tag="1")]
13794    pub hva: ::core::option::Option<u64>,
13795}
13796#[derive(Clone, PartialEq, ::prost::Message)]
13797pub struct KvmSetWayFlushFtraceEvent {
13798    #[prost(uint32, optional, tag="1")]
13799    pub cache: ::core::option::Option<u32>,
13800    #[prost(uint64, optional, tag="2")]
13801    pub vcpu_pc: ::core::option::Option<u64>,
13802}
13803#[derive(Clone, PartialEq, ::prost::Message)]
13804pub struct KvmSysAccessFtraceEvent {
13805    #[prost(uint32, optional, tag="1")]
13806    pub c_rm: ::core::option::Option<u32>,
13807    #[prost(uint32, optional, tag="2")]
13808    pub c_rn: ::core::option::Option<u32>,
13809    #[prost(uint32, optional, tag="3")]
13810    pub op0: ::core::option::Option<u32>,
13811    #[prost(uint32, optional, tag="4")]
13812    pub op1: ::core::option::Option<u32>,
13813    #[prost(uint32, optional, tag="5")]
13814    pub op2: ::core::option::Option<u32>,
13815    #[prost(uint32, optional, tag="6")]
13816    pub is_write: ::core::option::Option<u32>,
13817    #[prost(string, optional, tag="7")]
13818    pub name: ::core::option::Option<::prost::alloc::string::String>,
13819    #[prost(uint64, optional, tag="8")]
13820    pub vcpu_pc: ::core::option::Option<u64>,
13821}
13822#[derive(Clone, PartialEq, ::prost::Message)]
13823pub struct KvmTestAgeHvaFtraceEvent {
13824    #[prost(uint64, optional, tag="1")]
13825    pub hva: ::core::option::Option<u64>,
13826}
13827#[derive(Clone, PartialEq, ::prost::Message)]
13828pub struct KvmTimerEmulateFtraceEvent {
13829    #[prost(uint32, optional, tag="1")]
13830    pub should_fire: ::core::option::Option<u32>,
13831    #[prost(int32, optional, tag="2")]
13832    pub timer_idx: ::core::option::Option<i32>,
13833}
13834#[derive(Clone, PartialEq, ::prost::Message)]
13835pub struct KvmTimerHrtimerExpireFtraceEvent {
13836    #[prost(int32, optional, tag="1")]
13837    pub timer_idx: ::core::option::Option<i32>,
13838}
13839#[derive(Clone, PartialEq, ::prost::Message)]
13840pub struct KvmTimerRestoreStateFtraceEvent {
13841    #[prost(uint64, optional, tag="1")]
13842    pub ctl: ::core::option::Option<u64>,
13843    #[prost(uint64, optional, tag="2")]
13844    pub cval: ::core::option::Option<u64>,
13845    #[prost(int32, optional, tag="3")]
13846    pub timer_idx: ::core::option::Option<i32>,
13847}
13848#[derive(Clone, PartialEq, ::prost::Message)]
13849pub struct KvmTimerSaveStateFtraceEvent {
13850    #[prost(uint64, optional, tag="1")]
13851    pub ctl: ::core::option::Option<u64>,
13852    #[prost(uint64, optional, tag="2")]
13853    pub cval: ::core::option::Option<u64>,
13854    #[prost(int32, optional, tag="3")]
13855    pub timer_idx: ::core::option::Option<i32>,
13856}
13857#[derive(Clone, PartialEq, ::prost::Message)]
13858pub struct KvmTimerUpdateIrqFtraceEvent {
13859    #[prost(uint32, optional, tag="1")]
13860    pub irq: ::core::option::Option<u32>,
13861    #[prost(int32, optional, tag="2")]
13862    pub level: ::core::option::Option<i32>,
13863    #[prost(uint64, optional, tag="3")]
13864    pub vcpu_id: ::core::option::Option<u64>,
13865}
13866#[derive(Clone, PartialEq, ::prost::Message)]
13867pub struct KvmToggleCacheFtraceEvent {
13868    #[prost(uint32, optional, tag="1")]
13869    pub now: ::core::option::Option<u32>,
13870    #[prost(uint64, optional, tag="2")]
13871    pub vcpu_pc: ::core::option::Option<u64>,
13872    #[prost(uint32, optional, tag="3")]
13873    pub was: ::core::option::Option<u32>,
13874}
13875#[derive(Clone, PartialEq, ::prost::Message)]
13876pub struct KvmUnmapHvaRangeFtraceEvent {
13877    #[prost(uint64, optional, tag="1")]
13878    pub end: ::core::option::Option<u64>,
13879    #[prost(uint64, optional, tag="2")]
13880    pub start: ::core::option::Option<u64>,
13881}
13882#[derive(Clone, PartialEq, ::prost::Message)]
13883pub struct KvmUserspaceExitFtraceEvent {
13884    #[prost(uint32, optional, tag="1")]
13885    pub reason: ::core::option::Option<u32>,
13886}
13887#[derive(Clone, PartialEq, ::prost::Message)]
13888pub struct KvmVcpuWakeupFtraceEvent {
13889    #[prost(uint64, optional, tag="1")]
13890    pub ns: ::core::option::Option<u64>,
13891    #[prost(uint32, optional, tag="2")]
13892    pub valid: ::core::option::Option<u32>,
13893    #[prost(uint32, optional, tag="3")]
13894    pub waited: ::core::option::Option<u32>,
13895}
13896#[derive(Clone, PartialEq, ::prost::Message)]
13897pub struct KvmWfxArm64FtraceEvent {
13898    #[prost(uint32, optional, tag="1")]
13899    pub is_wfe: ::core::option::Option<u32>,
13900    #[prost(uint64, optional, tag="2")]
13901    pub vcpu_pc: ::core::option::Option<u64>,
13902}
13903#[derive(Clone, PartialEq, ::prost::Message)]
13904pub struct TrapRegFtraceEvent {
13905    #[prost(string, optional, tag="1")]
13906    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
13907    #[prost(uint32, optional, tag="2")]
13908    pub is_write: ::core::option::Option<u32>,
13909    #[prost(int32, optional, tag="3")]
13910    pub reg: ::core::option::Option<i32>,
13911    #[prost(uint64, optional, tag="4")]
13912    pub write_value: ::core::option::Option<u64>,
13913}
13914#[derive(Clone, PartialEq, ::prost::Message)]
13915pub struct VgicUpdateIrqPendingFtraceEvent {
13916    #[prost(uint32, optional, tag="1")]
13917    pub irq: ::core::option::Option<u32>,
13918    #[prost(uint32, optional, tag="2")]
13919    pub level: ::core::option::Option<u32>,
13920    #[prost(uint64, optional, tag="3")]
13921    pub vcpu_id: ::core::option::Option<u64>,
13922}
13923// End of protos/perfetto/trace/ftrace/kvm.proto
13924
13925// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13926
13927#[derive(Clone, PartialEq, ::prost::Message)]
13928pub struct LowmemoryKillFtraceEvent {
13929    #[prost(string, optional, tag="1")]
13930    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13931    #[prost(int32, optional, tag="2")]
13932    pub pid: ::core::option::Option<i32>,
13933    #[prost(int64, optional, tag="3")]
13934    pub pagecache_size: ::core::option::Option<i64>,
13935    #[prost(int64, optional, tag="4")]
13936    pub pagecache_limit: ::core::option::Option<i64>,
13937    #[prost(int64, optional, tag="5")]
13938    pub free: ::core::option::Option<i64>,
13939}
13940// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13941
13942// Begin of protos/perfetto/trace/ftrace/lwis.proto
13943
13944#[derive(Clone, PartialEq, ::prost::Message)]
13945pub struct LwisTracingMarkWriteFtraceEvent {
13946    #[prost(string, optional, tag="1")]
13947    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
13948    #[prost(uint32, optional, tag="2")]
13949    pub r#type: ::core::option::Option<u32>,
13950    #[prost(int32, optional, tag="3")]
13951    pub pid: ::core::option::Option<i32>,
13952    #[prost(string, optional, tag="4")]
13953    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
13954    #[prost(int64, optional, tag="5")]
13955    pub value: ::core::option::Option<i64>,
13956}
13957// End of protos/perfetto/trace/ftrace/lwis.proto
13958
13959// Begin of protos/perfetto/trace/ftrace/mali.proto
13960
13961#[derive(Clone, PartialEq, ::prost::Message)]
13962pub struct MaliTracingMarkWriteFtraceEvent {
13963    #[prost(string, optional, tag="1")]
13964    pub name: ::core::option::Option<::prost::alloc::string::String>,
13965    #[prost(int32, optional, tag="2")]
13966    pub pid: ::core::option::Option<i32>,
13967    #[prost(uint32, optional, tag="3")]
13968    pub r#type: ::core::option::Option<u32>,
13969    #[prost(int32, optional, tag="4")]
13970    pub value: ::core::option::Option<i32>,
13971}
13972#[derive(Clone, PartialEq, ::prost::Message)]
13973pub struct MaliMaliKcpucqssetFtraceEvent {
13974    #[prost(uint32, optional, tag="1")]
13975    pub id: ::core::option::Option<u32>,
13976    #[prost(uint64, optional, tag="2")]
13977    pub info_val1: ::core::option::Option<u64>,
13978    #[prost(uint64, optional, tag="3")]
13979    pub info_val2: ::core::option::Option<u64>,
13980    #[prost(uint32, optional, tag="4")]
13981    pub kctx_id: ::core::option::Option<u32>,
13982    #[prost(int32, optional, tag="5")]
13983    pub kctx_tgid: ::core::option::Option<i32>,
13984}
13985#[derive(Clone, PartialEq, ::prost::Message)]
13986pub struct MaliMaliKcpucqswaitstartFtraceEvent {
13987    #[prost(uint32, optional, tag="1")]
13988    pub id: ::core::option::Option<u32>,
13989    #[prost(uint64, optional, tag="2")]
13990    pub info_val1: ::core::option::Option<u64>,
13991    #[prost(uint64, optional, tag="3")]
13992    pub info_val2: ::core::option::Option<u64>,
13993    #[prost(uint32, optional, tag="4")]
13994    pub kctx_id: ::core::option::Option<u32>,
13995    #[prost(int32, optional, tag="5")]
13996    pub kctx_tgid: ::core::option::Option<i32>,
13997}
13998#[derive(Clone, PartialEq, ::prost::Message)]
13999pub struct MaliMaliKcpucqswaitendFtraceEvent {
14000    #[prost(uint32, optional, tag="1")]
14001    pub id: ::core::option::Option<u32>,
14002    #[prost(uint64, optional, tag="2")]
14003    pub info_val1: ::core::option::Option<u64>,
14004    #[prost(uint64, optional, tag="3")]
14005    pub info_val2: ::core::option::Option<u64>,
14006    #[prost(uint32, optional, tag="4")]
14007    pub kctx_id: ::core::option::Option<u32>,
14008    #[prost(int32, optional, tag="5")]
14009    pub kctx_tgid: ::core::option::Option<i32>,
14010}
14011#[derive(Clone, PartialEq, ::prost::Message)]
14012pub struct MaliMaliKcpufencesignalFtraceEvent {
14013    #[prost(uint64, optional, tag="1")]
14014    pub info_val1: ::core::option::Option<u64>,
14015    #[prost(uint64, optional, tag="2")]
14016    pub info_val2: ::core::option::Option<u64>,
14017    #[prost(int32, optional, tag="3")]
14018    pub kctx_tgid: ::core::option::Option<i32>,
14019    #[prost(uint32, optional, tag="4")]
14020    pub kctx_id: ::core::option::Option<u32>,
14021    #[prost(uint32, optional, tag="5")]
14022    pub id: ::core::option::Option<u32>,
14023}
14024#[derive(Clone, PartialEq, ::prost::Message)]
14025pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14026    #[prost(uint64, optional, tag="1")]
14027    pub info_val1: ::core::option::Option<u64>,
14028    #[prost(uint64, optional, tag="2")]
14029    pub info_val2: ::core::option::Option<u64>,
14030    #[prost(int32, optional, tag="3")]
14031    pub kctx_tgid: ::core::option::Option<i32>,
14032    #[prost(uint32, optional, tag="4")]
14033    pub kctx_id: ::core::option::Option<u32>,
14034    #[prost(uint32, optional, tag="5")]
14035    pub id: ::core::option::Option<u32>,
14036}
14037#[derive(Clone, PartialEq, ::prost::Message)]
14038pub struct MaliMaliKcpufencewaitendFtraceEvent {
14039    #[prost(uint64, optional, tag="1")]
14040    pub info_val1: ::core::option::Option<u64>,
14041    #[prost(uint64, optional, tag="2")]
14042    pub info_val2: ::core::option::Option<u64>,
14043    #[prost(int32, optional, tag="3")]
14044    pub kctx_tgid: ::core::option::Option<i32>,
14045    #[prost(uint32, optional, tag="4")]
14046    pub kctx_id: ::core::option::Option<u32>,
14047    #[prost(uint32, optional, tag="5")]
14048    pub id: ::core::option::Option<u32>,
14049}
14050#[derive(Clone, PartialEq, ::prost::Message)]
14051pub struct MaliMaliCsfinterruptstartFtraceEvent {
14052    #[prost(int32, optional, tag="1")]
14053    pub kctx_tgid: ::core::option::Option<i32>,
14054    #[prost(uint32, optional, tag="2")]
14055    pub kctx_id: ::core::option::Option<u32>,
14056    #[prost(uint64, optional, tag="3")]
14057    pub info_val: ::core::option::Option<u64>,
14058}
14059#[derive(Clone, PartialEq, ::prost::Message)]
14060pub struct MaliMaliCsfinterruptendFtraceEvent {
14061    #[prost(int32, optional, tag="1")]
14062    pub kctx_tgid: ::core::option::Option<i32>,
14063    #[prost(uint32, optional, tag="2")]
14064    pub kctx_id: ::core::option::Option<u32>,
14065    #[prost(uint64, optional, tag="3")]
14066    pub info_val: ::core::option::Option<u64>,
14067}
14068#[derive(Clone, PartialEq, ::prost::Message)]
14069pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
14070    #[prost(int32, optional, tag="1")]
14071    pub kctx_tgid: ::core::option::Option<i32>,
14072    #[prost(uint32, optional, tag="2")]
14073    pub kctx_id: ::core::option::Option<u32>,
14074    #[prost(uint64, optional, tag="3")]
14075    pub info_val: ::core::option::Option<u64>,
14076}
14077#[derive(Clone, PartialEq, ::prost::Message)]
14078pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
14079    #[prost(int32, optional, tag="1")]
14080    pub kctx_tgid: ::core::option::Option<i32>,
14081    #[prost(uint32, optional, tag="2")]
14082    pub kctx_id: ::core::option::Option<u32>,
14083    #[prost(uint64, optional, tag="3")]
14084    pub info_val: ::core::option::Option<u64>,
14085}
14086#[derive(Clone, PartialEq, ::prost::Message)]
14087pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
14088    #[prost(int32, optional, tag="1")]
14089    pub kctx_tgid: ::core::option::Option<i32>,
14090    #[prost(uint32, optional, tag="2")]
14091    pub kctx_id: ::core::option::Option<u32>,
14092    #[prost(uint64, optional, tag="3")]
14093    pub info_val: ::core::option::Option<u64>,
14094}
14095#[derive(Clone, PartialEq, ::prost::Message)]
14096pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14097    #[prost(int32, optional, tag="1")]
14098    pub kctx_tgid: ::core::option::Option<i32>,
14099    #[prost(uint32, optional, tag="2")]
14100    pub kctx_id: ::core::option::Option<u32>,
14101    #[prost(uint64, optional, tag="3")]
14102    pub info_val: ::core::option::Option<u64>,
14103}
14104#[derive(Clone, PartialEq, ::prost::Message)]
14105pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14106    #[prost(int32, optional, tag="1")]
14107    pub kctx_tgid: ::core::option::Option<i32>,
14108    #[prost(uint32, optional, tag="2")]
14109    pub kctx_id: ::core::option::Option<u32>,
14110    #[prost(uint64, optional, tag="3")]
14111    pub info_val: ::core::option::Option<u64>,
14112}
14113#[derive(Clone, PartialEq, ::prost::Message)]
14114pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14115    #[prost(int32, optional, tag="1")]
14116    pub kctx_tgid: ::core::option::Option<i32>,
14117    #[prost(uint32, optional, tag="2")]
14118    pub kctx_id: ::core::option::Option<u32>,
14119    #[prost(uint64, optional, tag="3")]
14120    pub info_val: ::core::option::Option<u64>,
14121}
14122#[derive(Clone, PartialEq, ::prost::Message)]
14123pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14124    #[prost(int32, optional, tag="1")]
14125    pub kctx_tgid: ::core::option::Option<i32>,
14126    #[prost(uint32, optional, tag="2")]
14127    pub kctx_id: ::core::option::Option<u32>,
14128    #[prost(uint64, optional, tag="3")]
14129    pub info_val: ::core::option::Option<u64>,
14130}
14131#[derive(Clone, PartialEq, ::prost::Message)]
14132pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14133    #[prost(int32, optional, tag="1")]
14134    pub kctx_tgid: ::core::option::Option<i32>,
14135    #[prost(uint32, optional, tag="2")]
14136    pub kctx_id: ::core::option::Option<u32>,
14137    #[prost(uint64, optional, tag="3")]
14138    pub info_val: ::core::option::Option<u64>,
14139}
14140#[derive(Clone, PartialEq, ::prost::Message)]
14141pub struct MaliMaliPmmcuinsleepFtraceEvent {
14142    #[prost(int32, optional, tag="1")]
14143    pub kctx_tgid: ::core::option::Option<i32>,
14144    #[prost(uint32, optional, tag="2")]
14145    pub kctx_id: ::core::option::Option<u32>,
14146    #[prost(uint64, optional, tag="3")]
14147    pub info_val: ::core::option::Option<u64>,
14148}
14149#[derive(Clone, PartialEq, ::prost::Message)]
14150pub struct MaliMaliPmmcuoffFtraceEvent {
14151    #[prost(int32, optional, tag="1")]
14152    pub kctx_tgid: ::core::option::Option<i32>,
14153    #[prost(uint32, optional, tag="2")]
14154    pub kctx_id: ::core::option::Option<u32>,
14155    #[prost(uint64, optional, tag="3")]
14156    pub info_val: ::core::option::Option<u64>,
14157}
14158#[derive(Clone, PartialEq, ::prost::Message)]
14159pub struct MaliMaliPmmcuonFtraceEvent {
14160    #[prost(int32, optional, tag="1")]
14161    pub kctx_tgid: ::core::option::Option<i32>,
14162    #[prost(uint32, optional, tag="2")]
14163    pub kctx_id: ::core::option::Option<u32>,
14164    #[prost(uint64, optional, tag="3")]
14165    pub info_val: ::core::option::Option<u64>,
14166}
14167#[derive(Clone, PartialEq, ::prost::Message)]
14168pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14169    #[prost(int32, optional, tag="1")]
14170    pub kctx_tgid: ::core::option::Option<i32>,
14171    #[prost(uint32, optional, tag="2")]
14172    pub kctx_id: ::core::option::Option<u32>,
14173    #[prost(uint64, optional, tag="3")]
14174    pub info_val: ::core::option::Option<u64>,
14175}
14176#[derive(Clone, PartialEq, ::prost::Message)]
14177pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14178    #[prost(int32, optional, tag="1")]
14179    pub kctx_tgid: ::core::option::Option<i32>,
14180    #[prost(uint32, optional, tag="2")]
14181    pub kctx_id: ::core::option::Option<u32>,
14182    #[prost(uint64, optional, tag="3")]
14183    pub info_val: ::core::option::Option<u64>,
14184}
14185#[derive(Clone, PartialEq, ::prost::Message)]
14186pub struct MaliMaliPmmcuonhaltFtraceEvent {
14187    #[prost(int32, optional, tag="1")]
14188    pub kctx_tgid: ::core::option::Option<i32>,
14189    #[prost(uint32, optional, tag="2")]
14190    pub kctx_id: ::core::option::Option<u32>,
14191    #[prost(uint64, optional, tag="3")]
14192    pub info_val: ::core::option::Option<u64>,
14193}
14194#[derive(Clone, PartialEq, ::prost::Message)]
14195pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14196    #[prost(int32, optional, tag="1")]
14197    pub kctx_tgid: ::core::option::Option<i32>,
14198    #[prost(uint32, optional, tag="2")]
14199    pub kctx_id: ::core::option::Option<u32>,
14200    #[prost(uint64, optional, tag="3")]
14201    pub info_val: ::core::option::Option<u64>,
14202}
14203#[derive(Clone, PartialEq, ::prost::Message)]
14204pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14205    #[prost(int32, optional, tag="1")]
14206    pub kctx_tgid: ::core::option::Option<i32>,
14207    #[prost(uint32, optional, tag="2")]
14208    pub kctx_id: ::core::option::Option<u32>,
14209    #[prost(uint64, optional, tag="3")]
14210    pub info_val: ::core::option::Option<u64>,
14211}
14212#[derive(Clone, PartialEq, ::prost::Message)]
14213pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14214    #[prost(int32, optional, tag="1")]
14215    pub kctx_tgid: ::core::option::Option<i32>,
14216    #[prost(uint32, optional, tag="2")]
14217    pub kctx_id: ::core::option::Option<u32>,
14218    #[prost(uint64, optional, tag="3")]
14219    pub info_val: ::core::option::Option<u64>,
14220}
14221#[derive(Clone, PartialEq, ::prost::Message)]
14222pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14223    #[prost(int32, optional, tag="1")]
14224    pub kctx_tgid: ::core::option::Option<i32>,
14225    #[prost(uint32, optional, tag="2")]
14226    pub kctx_id: ::core::option::Option<u32>,
14227    #[prost(uint64, optional, tag="3")]
14228    pub info_val: ::core::option::Option<u64>,
14229}
14230#[derive(Clone, PartialEq, ::prost::Message)]
14231pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14232    #[prost(int32, optional, tag="1")]
14233    pub kctx_tgid: ::core::option::Option<i32>,
14234    #[prost(uint32, optional, tag="2")]
14235    pub kctx_id: ::core::option::Option<u32>,
14236    #[prost(uint64, optional, tag="3")]
14237    pub info_val: ::core::option::Option<u64>,
14238}
14239#[derive(Clone, PartialEq, ::prost::Message)]
14240pub struct MaliMaliPmmcupendoffFtraceEvent {
14241    #[prost(int32, optional, tag="1")]
14242    pub kctx_tgid: ::core::option::Option<i32>,
14243    #[prost(uint32, optional, tag="2")]
14244    pub kctx_id: ::core::option::Option<u32>,
14245    #[prost(uint64, optional, tag="3")]
14246    pub info_val: ::core::option::Option<u64>,
14247}
14248#[derive(Clone, PartialEq, ::prost::Message)]
14249pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14250    #[prost(int32, optional, tag="1")]
14251    pub kctx_tgid: ::core::option::Option<i32>,
14252    #[prost(uint32, optional, tag="2")]
14253    pub kctx_id: ::core::option::Option<u32>,
14254    #[prost(uint64, optional, tag="3")]
14255    pub info_val: ::core::option::Option<u64>,
14256}
14257#[derive(Clone, PartialEq, ::prost::Message)]
14258pub struct MaliMaliPmmcupowerdownFtraceEvent {
14259    #[prost(int32, optional, tag="1")]
14260    pub kctx_tgid: ::core::option::Option<i32>,
14261    #[prost(uint32, optional, tag="2")]
14262    pub kctx_id: ::core::option::Option<u32>,
14263    #[prost(uint64, optional, tag="3")]
14264    pub info_val: ::core::option::Option<u64>,
14265}
14266#[derive(Clone, PartialEq, ::prost::Message)]
14267pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14268    #[prost(int32, optional, tag="1")]
14269    pub kctx_tgid: ::core::option::Option<i32>,
14270    #[prost(uint32, optional, tag="2")]
14271    pub kctx_id: ::core::option::Option<u32>,
14272    #[prost(uint64, optional, tag="3")]
14273    pub info_val: ::core::option::Option<u64>,
14274}
14275#[derive(Clone, PartialEq, ::prost::Message)]
14276pub struct MaliGpuPowerStateFtraceEvent {
14277    #[prost(uint64, optional, tag="1")]
14278    pub change_ns: ::core::option::Option<u64>,
14279    #[prost(int32, optional, tag="2")]
14280    pub from_state: ::core::option::Option<i32>,
14281    #[prost(int32, optional, tag="3")]
14282    pub to_state: ::core::option::Option<i32>,
14283}
14284// End of protos/perfetto/trace/ftrace/mali.proto
14285
14286// Begin of protos/perfetto/trace/ftrace/mdss.proto
14287
14288#[derive(Clone, PartialEq, ::prost::Message)]
14289pub struct MdpCmdKickoffFtraceEvent {
14290    #[prost(uint32, optional, tag="1")]
14291    pub ctl_num: ::core::option::Option<u32>,
14292    #[prost(int32, optional, tag="2")]
14293    pub kickoff_cnt: ::core::option::Option<i32>,
14294}
14295#[derive(Clone, PartialEq, ::prost::Message)]
14296pub struct MdpCommitFtraceEvent {
14297    #[prost(uint32, optional, tag="1")]
14298    pub num: ::core::option::Option<u32>,
14299    #[prost(uint32, optional, tag="2")]
14300    pub play_cnt: ::core::option::Option<u32>,
14301    #[prost(uint32, optional, tag="3")]
14302    pub clk_rate: ::core::option::Option<u32>,
14303    #[prost(uint64, optional, tag="4")]
14304    pub bandwidth: ::core::option::Option<u64>,
14305}
14306#[derive(Clone, PartialEq, ::prost::Message)]
14307pub struct MdpPerfSetOtFtraceEvent {
14308    #[prost(uint32, optional, tag="1")]
14309    pub pnum: ::core::option::Option<u32>,
14310    #[prost(uint32, optional, tag="2")]
14311    pub xin_id: ::core::option::Option<u32>,
14312    #[prost(uint32, optional, tag="3")]
14313    pub rd_lim: ::core::option::Option<u32>,
14314    #[prost(uint32, optional, tag="4")]
14315    pub is_vbif_rt: ::core::option::Option<u32>,
14316}
14317#[derive(Clone, PartialEq, ::prost::Message)]
14318pub struct MdpSsppChangeFtraceEvent {
14319    #[prost(uint32, optional, tag="1")]
14320    pub num: ::core::option::Option<u32>,
14321    #[prost(uint32, optional, tag="2")]
14322    pub play_cnt: ::core::option::Option<u32>,
14323    #[prost(uint32, optional, tag="3")]
14324    pub mixer: ::core::option::Option<u32>,
14325    #[prost(uint32, optional, tag="4")]
14326    pub stage: ::core::option::Option<u32>,
14327    #[prost(uint32, optional, tag="5")]
14328    pub flags: ::core::option::Option<u32>,
14329    #[prost(uint32, optional, tag="6")]
14330    pub format: ::core::option::Option<u32>,
14331    #[prost(uint32, optional, tag="7")]
14332    pub img_w: ::core::option::Option<u32>,
14333    #[prost(uint32, optional, tag="8")]
14334    pub img_h: ::core::option::Option<u32>,
14335    #[prost(uint32, optional, tag="9")]
14336    pub src_x: ::core::option::Option<u32>,
14337    #[prost(uint32, optional, tag="10")]
14338    pub src_y: ::core::option::Option<u32>,
14339    #[prost(uint32, optional, tag="11")]
14340    pub src_w: ::core::option::Option<u32>,
14341    #[prost(uint32, optional, tag="12")]
14342    pub src_h: ::core::option::Option<u32>,
14343    #[prost(uint32, optional, tag="13")]
14344    pub dst_x: ::core::option::Option<u32>,
14345    #[prost(uint32, optional, tag="14")]
14346    pub dst_y: ::core::option::Option<u32>,
14347    #[prost(uint32, optional, tag="15")]
14348    pub dst_w: ::core::option::Option<u32>,
14349    #[prost(uint32, optional, tag="16")]
14350    pub dst_h: ::core::option::Option<u32>,
14351}
14352#[derive(Clone, PartialEq, ::prost::Message)]
14353pub struct TracingMarkWriteFtraceEvent {
14354    #[prost(int32, optional, tag="1")]
14355    pub pid: ::core::option::Option<i32>,
14356    #[prost(string, optional, tag="2")]
14357    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14358    #[prost(uint32, optional, tag="3")]
14359    pub trace_begin: ::core::option::Option<u32>,
14360}
14361#[derive(Clone, PartialEq, ::prost::Message)]
14362pub struct MdpCmdPingpongDoneFtraceEvent {
14363    #[prost(uint32, optional, tag="1")]
14364    pub ctl_num: ::core::option::Option<u32>,
14365    #[prost(uint32, optional, tag="2")]
14366    pub intf_num: ::core::option::Option<u32>,
14367    #[prost(uint32, optional, tag="3")]
14368    pub pp_num: ::core::option::Option<u32>,
14369    #[prost(int32, optional, tag="4")]
14370    pub koff_cnt: ::core::option::Option<i32>,
14371}
14372#[derive(Clone, PartialEq, ::prost::Message)]
14373pub struct MdpCompareBwFtraceEvent {
14374    #[prost(uint64, optional, tag="1")]
14375    pub new_ab: ::core::option::Option<u64>,
14376    #[prost(uint64, optional, tag="2")]
14377    pub new_ib: ::core::option::Option<u64>,
14378    #[prost(uint64, optional, tag="3")]
14379    pub new_wb: ::core::option::Option<u64>,
14380    #[prost(uint64, optional, tag="4")]
14381    pub old_ab: ::core::option::Option<u64>,
14382    #[prost(uint64, optional, tag="5")]
14383    pub old_ib: ::core::option::Option<u64>,
14384    #[prost(uint64, optional, tag="6")]
14385    pub old_wb: ::core::option::Option<u64>,
14386    #[prost(uint32, optional, tag="7")]
14387    pub params_changed: ::core::option::Option<u32>,
14388    #[prost(uint32, optional, tag="8")]
14389    pub update_bw: ::core::option::Option<u32>,
14390}
14391#[derive(Clone, PartialEq, ::prost::Message)]
14392pub struct MdpPerfSetPanicLutsFtraceEvent {
14393    #[prost(uint32, optional, tag="1")]
14394    pub pnum: ::core::option::Option<u32>,
14395    #[prost(uint32, optional, tag="2")]
14396    pub fmt: ::core::option::Option<u32>,
14397    #[prost(uint32, optional, tag="3")]
14398    pub mode: ::core::option::Option<u32>,
14399    #[prost(uint32, optional, tag="4")]
14400    pub panic_lut: ::core::option::Option<u32>,
14401    #[prost(uint32, optional, tag="5")]
14402    pub robust_lut: ::core::option::Option<u32>,
14403}
14404#[derive(Clone, PartialEq, ::prost::Message)]
14405pub struct MdpSsppSetFtraceEvent {
14406    #[prost(uint32, optional, tag="1")]
14407    pub num: ::core::option::Option<u32>,
14408    #[prost(uint32, optional, tag="2")]
14409    pub play_cnt: ::core::option::Option<u32>,
14410    #[prost(uint32, optional, tag="3")]
14411    pub mixer: ::core::option::Option<u32>,
14412    #[prost(uint32, optional, tag="4")]
14413    pub stage: ::core::option::Option<u32>,
14414    #[prost(uint32, optional, tag="5")]
14415    pub flags: ::core::option::Option<u32>,
14416    #[prost(uint32, optional, tag="6")]
14417    pub format: ::core::option::Option<u32>,
14418    #[prost(uint32, optional, tag="7")]
14419    pub img_w: ::core::option::Option<u32>,
14420    #[prost(uint32, optional, tag="8")]
14421    pub img_h: ::core::option::Option<u32>,
14422    #[prost(uint32, optional, tag="9")]
14423    pub src_x: ::core::option::Option<u32>,
14424    #[prost(uint32, optional, tag="10")]
14425    pub src_y: ::core::option::Option<u32>,
14426    #[prost(uint32, optional, tag="11")]
14427    pub src_w: ::core::option::Option<u32>,
14428    #[prost(uint32, optional, tag="12")]
14429    pub src_h: ::core::option::Option<u32>,
14430    #[prost(uint32, optional, tag="13")]
14431    pub dst_x: ::core::option::Option<u32>,
14432    #[prost(uint32, optional, tag="14")]
14433    pub dst_y: ::core::option::Option<u32>,
14434    #[prost(uint32, optional, tag="15")]
14435    pub dst_w: ::core::option::Option<u32>,
14436    #[prost(uint32, optional, tag="16")]
14437    pub dst_h: ::core::option::Option<u32>,
14438}
14439#[derive(Clone, PartialEq, ::prost::Message)]
14440pub struct MdpCmdReadptrDoneFtraceEvent {
14441    #[prost(uint32, optional, tag="1")]
14442    pub ctl_num: ::core::option::Option<u32>,
14443    #[prost(int32, optional, tag="2")]
14444    pub koff_cnt: ::core::option::Option<i32>,
14445}
14446#[derive(Clone, PartialEq, ::prost::Message)]
14447pub struct MdpMisrCrcFtraceEvent {
14448    #[prost(uint32, optional, tag="1")]
14449    pub block_id: ::core::option::Option<u32>,
14450    #[prost(uint32, optional, tag="2")]
14451    pub vsync_cnt: ::core::option::Option<u32>,
14452    #[prost(uint32, optional, tag="3")]
14453    pub crc: ::core::option::Option<u32>,
14454}
14455#[derive(Clone, PartialEq, ::prost::Message)]
14456pub struct MdpPerfSetQosLutsFtraceEvent {
14457    #[prost(uint32, optional, tag="1")]
14458    pub pnum: ::core::option::Option<u32>,
14459    #[prost(uint32, optional, tag="2")]
14460    pub fmt: ::core::option::Option<u32>,
14461    #[prost(uint32, optional, tag="3")]
14462    pub intf: ::core::option::Option<u32>,
14463    #[prost(uint32, optional, tag="4")]
14464    pub rot: ::core::option::Option<u32>,
14465    #[prost(uint32, optional, tag="5")]
14466    pub fl: ::core::option::Option<u32>,
14467    #[prost(uint32, optional, tag="6")]
14468    pub lut: ::core::option::Option<u32>,
14469    #[prost(uint32, optional, tag="7")]
14470    pub linear: ::core::option::Option<u32>,
14471}
14472#[derive(Clone, PartialEq, ::prost::Message)]
14473pub struct MdpTraceCounterFtraceEvent {
14474    #[prost(int32, optional, tag="1")]
14475    pub pid: ::core::option::Option<i32>,
14476    #[prost(string, optional, tag="2")]
14477    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
14478    #[prost(int32, optional, tag="3")]
14479    pub value: ::core::option::Option<i32>,
14480}
14481#[derive(Clone, PartialEq, ::prost::Message)]
14482pub struct MdpCmdReleaseBwFtraceEvent {
14483    #[prost(uint32, optional, tag="1")]
14484    pub ctl_num: ::core::option::Option<u32>,
14485}
14486#[derive(Clone, PartialEq, ::prost::Message)]
14487pub struct MdpMixerUpdateFtraceEvent {
14488    #[prost(uint32, optional, tag="1")]
14489    pub mixer_num: ::core::option::Option<u32>,
14490}
14491#[derive(Clone, PartialEq, ::prost::Message)]
14492pub struct MdpPerfSetWmLevelsFtraceEvent {
14493    #[prost(uint32, optional, tag="1")]
14494    pub pnum: ::core::option::Option<u32>,
14495    #[prost(uint32, optional, tag="2")]
14496    pub use_space: ::core::option::Option<u32>,
14497    #[prost(uint32, optional, tag="3")]
14498    pub priority_bytes: ::core::option::Option<u32>,
14499    #[prost(uint32, optional, tag="4")]
14500    pub wm0: ::core::option::Option<u32>,
14501    #[prost(uint32, optional, tag="5")]
14502    pub wm1: ::core::option::Option<u32>,
14503    #[prost(uint32, optional, tag="6")]
14504    pub wm2: ::core::option::Option<u32>,
14505    #[prost(uint32, optional, tag="7")]
14506    pub mb_cnt: ::core::option::Option<u32>,
14507    #[prost(uint32, optional, tag="8")]
14508    pub mb_size: ::core::option::Option<u32>,
14509}
14510#[derive(Clone, PartialEq, ::prost::Message)]
14511pub struct MdpVideoUnderrunDoneFtraceEvent {
14512    #[prost(uint32, optional, tag="1")]
14513    pub ctl_num: ::core::option::Option<u32>,
14514    #[prost(uint32, optional, tag="2")]
14515    pub underrun_cnt: ::core::option::Option<u32>,
14516}
14517#[derive(Clone, PartialEq, ::prost::Message)]
14518pub struct MdpCmdWaitPingpongFtraceEvent {
14519    #[prost(uint32, optional, tag="1")]
14520    pub ctl_num: ::core::option::Option<u32>,
14521    #[prost(int32, optional, tag="2")]
14522    pub kickoff_cnt: ::core::option::Option<i32>,
14523}
14524#[derive(Clone, PartialEq, ::prost::Message)]
14525pub struct MdpPerfPrefillCalcFtraceEvent {
14526    #[prost(uint32, optional, tag="1")]
14527    pub pnum: ::core::option::Option<u32>,
14528    #[prost(uint32, optional, tag="2")]
14529    pub latency_buf: ::core::option::Option<u32>,
14530    #[prost(uint32, optional, tag="3")]
14531    pub ot: ::core::option::Option<u32>,
14532    #[prost(uint32, optional, tag="4")]
14533    pub y_buf: ::core::option::Option<u32>,
14534    #[prost(uint32, optional, tag="5")]
14535    pub y_scaler: ::core::option::Option<u32>,
14536    #[prost(uint32, optional, tag="6")]
14537    pub pp_lines: ::core::option::Option<u32>,
14538    #[prost(uint32, optional, tag="7")]
14539    pub pp_bytes: ::core::option::Option<u32>,
14540    #[prost(uint32, optional, tag="8")]
14541    pub post_sc: ::core::option::Option<u32>,
14542    #[prost(uint32, optional, tag="9")]
14543    pub fbc_bytes: ::core::option::Option<u32>,
14544    #[prost(uint32, optional, tag="10")]
14545    pub prefill_bytes: ::core::option::Option<u32>,
14546}
14547#[derive(Clone, PartialEq, ::prost::Message)]
14548pub struct MdpPerfUpdateBusFtraceEvent {
14549    #[prost(int32, optional, tag="1")]
14550    pub client: ::core::option::Option<i32>,
14551    #[prost(uint64, optional, tag="2")]
14552    pub ab_quota: ::core::option::Option<u64>,
14553    #[prost(uint64, optional, tag="3")]
14554    pub ib_quota: ::core::option::Option<u64>,
14555}
14556#[derive(Clone, PartialEq, ::prost::Message)]
14557pub struct RotatorBwAoAsContextFtraceEvent {
14558    #[prost(uint32, optional, tag="1")]
14559    pub state: ::core::option::Option<u32>,
14560}
14561// End of protos/perfetto/trace/ftrace/mdss.proto
14562
14563// Begin of protos/perfetto/trace/ftrace/mm_event.proto
14564
14565#[derive(Clone, PartialEq, ::prost::Message)]
14566pub struct MmEventRecordFtraceEvent {
14567    #[prost(uint32, optional, tag="1")]
14568    pub avg_lat: ::core::option::Option<u32>,
14569    #[prost(uint32, optional, tag="2")]
14570    pub count: ::core::option::Option<u32>,
14571    #[prost(uint32, optional, tag="3")]
14572    pub max_lat: ::core::option::Option<u32>,
14573    #[prost(uint32, optional, tag="4")]
14574    pub r#type: ::core::option::Option<u32>,
14575}
14576// End of protos/perfetto/trace/ftrace/mm_event.proto
14577
14578// Begin of protos/perfetto/trace/ftrace/net.proto
14579
14580#[derive(Clone, PartialEq, ::prost::Message)]
14581pub struct NetifReceiveSkbFtraceEvent {
14582    #[prost(uint32, optional, tag="1")]
14583    pub len: ::core::option::Option<u32>,
14584    #[prost(string, optional, tag="2")]
14585    pub name: ::core::option::Option<::prost::alloc::string::String>,
14586    #[prost(uint64, optional, tag="3")]
14587    pub skbaddr: ::core::option::Option<u64>,
14588}
14589#[derive(Clone, PartialEq, ::prost::Message)]
14590pub struct NetDevXmitFtraceEvent {
14591    #[prost(uint32, optional, tag="1")]
14592    pub len: ::core::option::Option<u32>,
14593    #[prost(string, optional, tag="2")]
14594    pub name: ::core::option::Option<::prost::alloc::string::String>,
14595    #[prost(int32, optional, tag="3")]
14596    pub rc: ::core::option::Option<i32>,
14597    #[prost(uint64, optional, tag="4")]
14598    pub skbaddr: ::core::option::Option<u64>,
14599}
14600#[derive(Clone, PartialEq, ::prost::Message)]
14601pub struct NapiGroReceiveEntryFtraceEvent {
14602    #[prost(uint32, optional, tag="1")]
14603    pub data_len: ::core::option::Option<u32>,
14604    #[prost(uint32, optional, tag="2")]
14605    pub gso_size: ::core::option::Option<u32>,
14606    #[prost(uint32, optional, tag="3")]
14607    pub gso_type: ::core::option::Option<u32>,
14608    #[prost(uint32, optional, tag="4")]
14609    pub hash: ::core::option::Option<u32>,
14610    #[prost(uint32, optional, tag="5")]
14611    pub ip_summed: ::core::option::Option<u32>,
14612    #[prost(uint32, optional, tag="6")]
14613    pub l4_hash: ::core::option::Option<u32>,
14614    #[prost(uint32, optional, tag="7")]
14615    pub len: ::core::option::Option<u32>,
14616    #[prost(int32, optional, tag="8")]
14617    pub mac_header: ::core::option::Option<i32>,
14618    #[prost(uint32, optional, tag="9")]
14619    pub mac_header_valid: ::core::option::Option<u32>,
14620    #[prost(string, optional, tag="10")]
14621    pub name: ::core::option::Option<::prost::alloc::string::String>,
14622    #[prost(uint32, optional, tag="11")]
14623    pub napi_id: ::core::option::Option<u32>,
14624    #[prost(uint32, optional, tag="12")]
14625    pub nr_frags: ::core::option::Option<u32>,
14626    #[prost(uint32, optional, tag="13")]
14627    pub protocol: ::core::option::Option<u32>,
14628    #[prost(uint32, optional, tag="14")]
14629    pub queue_mapping: ::core::option::Option<u32>,
14630    #[prost(uint64, optional, tag="15")]
14631    pub skbaddr: ::core::option::Option<u64>,
14632    #[prost(uint32, optional, tag="16")]
14633    pub truesize: ::core::option::Option<u32>,
14634    #[prost(uint32, optional, tag="17")]
14635    pub vlan_proto: ::core::option::Option<u32>,
14636    #[prost(uint32, optional, tag="18")]
14637    pub vlan_tagged: ::core::option::Option<u32>,
14638    #[prost(uint32, optional, tag="19")]
14639    pub vlan_tci: ::core::option::Option<u32>,
14640}
14641#[derive(Clone, PartialEq, ::prost::Message)]
14642pub struct NapiGroReceiveExitFtraceEvent {
14643    #[prost(int32, optional, tag="1")]
14644    pub ret: ::core::option::Option<i32>,
14645}
14646// End of protos/perfetto/trace/ftrace/net.proto
14647
14648// Begin of protos/perfetto/trace/ftrace/oom.proto
14649
14650#[derive(Clone, PartialEq, ::prost::Message)]
14651pub struct OomScoreAdjUpdateFtraceEvent {
14652    #[prost(string, optional, tag="1")]
14653    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14654    #[prost(int32, optional, tag="2")]
14655    pub oom_score_adj: ::core::option::Option<i32>,
14656    #[prost(int32, optional, tag="3")]
14657    pub pid: ::core::option::Option<i32>,
14658}
14659#[derive(Clone, PartialEq, ::prost::Message)]
14660pub struct MarkVictimFtraceEvent {
14661    #[prost(int32, optional, tag="1")]
14662    pub pid: ::core::option::Option<i32>,
14663}
14664// End of protos/perfetto/trace/ftrace/oom.proto
14665
14666// Begin of protos/perfetto/trace/ftrace/panel.proto
14667
14668#[derive(Clone, PartialEq, ::prost::Message)]
14669pub struct DsiCmdFifoStatusFtraceEvent {
14670    #[prost(uint32, optional, tag="1")]
14671    pub header: ::core::option::Option<u32>,
14672    #[prost(uint32, optional, tag="2")]
14673    pub payload: ::core::option::Option<u32>,
14674}
14675#[derive(Clone, PartialEq, ::prost::Message)]
14676pub struct DsiRxFtraceEvent {
14677    #[prost(uint32, optional, tag="1")]
14678    pub cmd: ::core::option::Option<u32>,
14679    #[prost(bytes="vec", optional, tag="3")]
14680    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14681}
14682#[derive(Clone, PartialEq, ::prost::Message)]
14683pub struct DsiTxFtraceEvent {
14684    #[prost(uint32, optional, tag="1")]
14685    pub last: ::core::option::Option<u32>,
14686    #[prost(uint32, optional, tag="3")]
14687    pub r#type: ::core::option::Option<u32>,
14688    #[prost(bytes="vec", optional, tag="4")]
14689    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14690}
14691#[derive(Clone, PartialEq, ::prost::Message)]
14692pub struct PanelWriteGenericFtraceEvent {
14693    #[prost(int32, optional, tag="1")]
14694    pub pid: ::core::option::Option<i32>,
14695    #[prost(string, optional, tag="2")]
14696    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14697    #[prost(uint32, optional, tag="3")]
14698    pub trace_begin: ::core::option::Option<u32>,
14699    #[prost(string, optional, tag="4")]
14700    pub name: ::core::option::Option<::prost::alloc::string::String>,
14701    #[prost(uint32, optional, tag="5")]
14702    pub r#type: ::core::option::Option<u32>,
14703    #[prost(int32, optional, tag="6")]
14704    pub value: ::core::option::Option<i32>,
14705}
14706#[derive(Clone, PartialEq, ::prost::Message)]
14707pub struct GramCollisionFtraceEvent {
14708    #[prost(int32, optional, tag="1")]
14709    pub panel_index: ::core::option::Option<i32>,
14710    #[prost(uint32, optional, tag="2")]
14711    pub collision_cnt: ::core::option::Option<u32>,
14712}
14713#[derive(Clone, PartialEq, ::prost::Message)]
14714pub struct PanelSettingsFullFtraceEvent {
14715    #[prost(int32, optional, tag="1")]
14716    pub panel_index: ::core::option::Option<i32>,
14717    #[prost(uint32, optional, tag="2")]
14718    pub hbm: ::core::option::Option<u32>,
14719    #[prost(uint32, optional, tag="3")]
14720    pub irc: ::core::option::Option<u32>,
14721    #[prost(uint32, optional, tag="4")]
14722    pub h_pwm: ::core::option::Option<u32>,
14723    #[prost(uint32, optional, tag="5")]
14724    pub fi_auto: ::core::option::Option<u32>,
14725    #[prost(uint32, optional, tag="6")]
14726    pub fi_manual: ::core::option::Option<u32>,
14727    #[prost(uint32, optional, tag="7")]
14728    pub early_exit: ::core::option::Option<u32>,
14729    #[prost(uint32, optional, tag="8")]
14730    pub min_rr: ::core::option::Option<u32>,
14731    #[prost(uint32, optional, tag="9")]
14732    pub max_rr: ::core::option::Option<u32>,
14733    #[prost(uint32, optional, tag="10")]
14734    pub te_freq: ::core::option::Option<u32>,
14735}
14736#[derive(Clone, PartialEq, ::prost::Message)]
14737pub struct PanelSettingsLiteFtraceEvent {
14738    #[prost(int32, optional, tag="1")]
14739    pub panel_index: ::core::option::Option<i32>,
14740    #[prost(uint32, optional, tag="2")]
14741    pub vrr: ::core::option::Option<u32>,
14742    #[prost(uint32, optional, tag="3")]
14743    pub min_rr: ::core::option::Option<u32>,
14744    #[prost(uint32, optional, tag="4")]
14745    pub max_rr: ::core::option::Option<u32>,
14746    #[prost(uint32, optional, tag="5")]
14747    pub te_freq: ::core::option::Option<u32>,
14748}
14749// End of protos/perfetto/trace/ftrace/panel.proto
14750
14751// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14752
14753#[derive(Clone, PartialEq, ::prost::Message)]
14754pub struct SchedSwitchWithCtrsFtraceEvent {
14755    #[prost(int32, optional, tag="1")]
14756    pub old_pid: ::core::option::Option<i32>,
14757    #[prost(int32, optional, tag="2")]
14758    pub new_pid: ::core::option::Option<i32>,
14759    #[prost(uint64, optional, tag="3")]
14760    pub cctr: ::core::option::Option<u64>,
14761    #[prost(uint64, optional, tag="4")]
14762    pub ctr0: ::core::option::Option<u64>,
14763    #[prost(uint64, optional, tag="5")]
14764    pub ctr1: ::core::option::Option<u64>,
14765    #[prost(uint64, optional, tag="6")]
14766    pub ctr2: ::core::option::Option<u64>,
14767    #[prost(uint64, optional, tag="7")]
14768    pub ctr3: ::core::option::Option<u64>,
14769    #[prost(uint32, optional, tag="8")]
14770    pub lctr0: ::core::option::Option<u32>,
14771    #[prost(uint32, optional, tag="9")]
14772    pub lctr1: ::core::option::Option<u32>,
14773    #[prost(uint64, optional, tag="10")]
14774    pub ctr4: ::core::option::Option<u64>,
14775    #[prost(uint64, optional, tag="11")]
14776    pub ctr5: ::core::option::Option<u64>,
14777    #[prost(string, optional, tag="12")]
14778    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14779    #[prost(int32, optional, tag="13")]
14780    pub prev_pid: ::core::option::Option<i32>,
14781    #[prost(uint32, optional, tag="14")]
14782    pub cyc: ::core::option::Option<u32>,
14783    #[prost(uint32, optional, tag="15")]
14784    pub inst: ::core::option::Option<u32>,
14785    #[prost(uint32, optional, tag="16")]
14786    pub stallbm: ::core::option::Option<u32>,
14787    #[prost(uint32, optional, tag="17")]
14788    pub l3dm: ::core::option::Option<u32>,
14789    #[prost(int32, optional, tag="18")]
14790    pub next_pid: ::core::option::Option<i32>,
14791    #[prost(string, optional, tag="19")]
14792    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14793    #[prost(int64, optional, tag="20")]
14794    pub prev_state: ::core::option::Option<i64>,
14795    #[prost(uint64, optional, tag="21")]
14796    pub amu0: ::core::option::Option<u64>,
14797    #[prost(uint64, optional, tag="22")]
14798    pub amu1: ::core::option::Option<u64>,
14799    #[prost(uint64, optional, tag="23")]
14800    pub amu2: ::core::option::Option<u64>,
14801}
14802// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14803
14804// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
14805
14806#[derive(Clone, PartialEq, ::prost::Message)]
14807pub struct PixelMmKswapdWakeFtraceEvent {
14808    #[prost(int32, optional, tag="1")]
14809    pub whatever: ::core::option::Option<i32>,
14810}
14811#[derive(Clone, PartialEq, ::prost::Message)]
14812pub struct PixelMmKswapdDoneFtraceEvent {
14813    #[prost(uint64, optional, tag="1")]
14814    pub delta_nr_scanned: ::core::option::Option<u64>,
14815    #[prost(uint64, optional, tag="2")]
14816    pub delta_nr_reclaimed: ::core::option::Option<u64>,
14817    #[prost(uint64, optional, tag="3")]
14818    pub delta_nr_allocated: ::core::option::Option<u64>,
14819    #[prost(uint64, optional, tag="4")]
14820    pub duration_ns: ::core::option::Option<u64>,
14821}
14822// End of protos/perfetto/trace/ftrace/pixel_mm.proto
14823
14824// Begin of protos/perfetto/trace/ftrace/power.proto
14825
14826#[derive(Clone, PartialEq, ::prost::Message)]
14827pub struct CpuFrequencyFtraceEvent {
14828    #[prost(uint32, optional, tag="1")]
14829    pub state: ::core::option::Option<u32>,
14830    #[prost(uint32, optional, tag="2")]
14831    pub cpu_id: ::core::option::Option<u32>,
14832}
14833#[derive(Clone, PartialEq, ::prost::Message)]
14834pub struct CpuFrequencyLimitsFtraceEvent {
14835    #[prost(uint32, optional, tag="1")]
14836    pub min_freq: ::core::option::Option<u32>,
14837    #[prost(uint32, optional, tag="2")]
14838    pub max_freq: ::core::option::Option<u32>,
14839    #[prost(uint32, optional, tag="3")]
14840    pub cpu_id: ::core::option::Option<u32>,
14841}
14842#[derive(Clone, PartialEq, ::prost::Message)]
14843pub struct CpuIdleFtraceEvent {
14844    #[prost(uint32, optional, tag="1")]
14845    pub state: ::core::option::Option<u32>,
14846    #[prost(uint32, optional, tag="2")]
14847    pub cpu_id: ::core::option::Option<u32>,
14848}
14849#[derive(Clone, PartialEq, ::prost::Message)]
14850pub struct ClockEnableFtraceEvent {
14851    #[prost(string, optional, tag="1")]
14852    pub name: ::core::option::Option<::prost::alloc::string::String>,
14853    #[prost(uint64, optional, tag="2")]
14854    pub state: ::core::option::Option<u64>,
14855    #[prost(uint64, optional, tag="3")]
14856    pub cpu_id: ::core::option::Option<u64>,
14857}
14858#[derive(Clone, PartialEq, ::prost::Message)]
14859pub struct ClockDisableFtraceEvent {
14860    #[prost(string, optional, tag="1")]
14861    pub name: ::core::option::Option<::prost::alloc::string::String>,
14862    #[prost(uint64, optional, tag="2")]
14863    pub state: ::core::option::Option<u64>,
14864    #[prost(uint64, optional, tag="3")]
14865    pub cpu_id: ::core::option::Option<u64>,
14866}
14867#[derive(Clone, PartialEq, ::prost::Message)]
14868pub struct ClockSetRateFtraceEvent {
14869    #[prost(string, optional, tag="1")]
14870    pub name: ::core::option::Option<::prost::alloc::string::String>,
14871    #[prost(uint64, optional, tag="2")]
14872    pub state: ::core::option::Option<u64>,
14873    #[prost(uint64, optional, tag="3")]
14874    pub cpu_id: ::core::option::Option<u64>,
14875}
14876#[derive(Clone, PartialEq, ::prost::Message)]
14877pub struct SuspendResumeFtraceEvent {
14878    #[prost(string, optional, tag="1")]
14879    pub action: ::core::option::Option<::prost::alloc::string::String>,
14880    #[prost(int32, optional, tag="2")]
14881    pub val: ::core::option::Option<i32>,
14882    #[prost(uint32, optional, tag="3")]
14883    pub start: ::core::option::Option<u32>,
14884}
14885#[derive(Clone, PartialEq, ::prost::Message)]
14886pub struct GpuFrequencyFtraceEvent {
14887    #[prost(uint32, optional, tag="1")]
14888    pub gpu_id: ::core::option::Option<u32>,
14889    #[prost(uint32, optional, tag="2")]
14890    pub state: ::core::option::Option<u32>,
14891}
14892#[derive(Clone, PartialEq, ::prost::Message)]
14893pub struct WakeupSourceActivateFtraceEvent {
14894    #[prost(string, optional, tag="1")]
14895    pub name: ::core::option::Option<::prost::alloc::string::String>,
14896    #[prost(uint64, optional, tag="2")]
14897    pub state: ::core::option::Option<u64>,
14898}
14899#[derive(Clone, PartialEq, ::prost::Message)]
14900pub struct WakeupSourceDeactivateFtraceEvent {
14901    #[prost(string, optional, tag="1")]
14902    pub name: ::core::option::Option<::prost::alloc::string::String>,
14903    #[prost(uint64, optional, tag="2")]
14904    pub state: ::core::option::Option<u64>,
14905}
14906#[derive(Clone, PartialEq, ::prost::Message)]
14907pub struct GpuWorkPeriodFtraceEvent {
14908    #[prost(uint32, optional, tag="1")]
14909    pub gpu_id: ::core::option::Option<u32>,
14910    #[prost(uint32, optional, tag="2")]
14911    pub uid: ::core::option::Option<u32>,
14912    #[prost(uint64, optional, tag="3")]
14913    pub start_time_ns: ::core::option::Option<u64>,
14914    #[prost(uint64, optional, tag="4")]
14915    pub end_time_ns: ::core::option::Option<u64>,
14916    #[prost(uint64, optional, tag="5")]
14917    pub total_active_duration_ns: ::core::option::Option<u64>,
14918}
14919#[derive(Clone, PartialEq, ::prost::Message)]
14920pub struct DevicePmCallbackStartFtraceEvent {
14921    #[prost(string, optional, tag="1")]
14922    pub device: ::core::option::Option<::prost::alloc::string::String>,
14923    #[prost(string, optional, tag="2")]
14924    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14925    #[prost(string, optional, tag="3")]
14926    pub parent: ::core::option::Option<::prost::alloc::string::String>,
14927    #[prost(string, optional, tag="4")]
14928    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
14929    #[prost(int32, optional, tag="5")]
14930    pub event: ::core::option::Option<i32>,
14931}
14932#[derive(Clone, PartialEq, ::prost::Message)]
14933pub struct DevicePmCallbackEndFtraceEvent {
14934    #[prost(string, optional, tag="1")]
14935    pub device: ::core::option::Option<::prost::alloc::string::String>,
14936    #[prost(string, optional, tag="2")]
14937    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14938    #[prost(int32, optional, tag="3")]
14939    pub error: ::core::option::Option<i32>,
14940}
14941#[derive(Clone, PartialEq, ::prost::Message)]
14942pub struct GpuPowerStateFtraceEvent {
14943    #[prost(int32, optional, tag="1")]
14944    pub old_state: ::core::option::Option<i32>,
14945    #[prost(int32, optional, tag="2")]
14946    pub new_state: ::core::option::Option<i32>,
14947}
14948#[derive(Clone, PartialEq, ::prost::Message)]
14949pub struct PsciDomainIdleExitFtraceEvent {
14950    #[prost(uint32, optional, tag="1")]
14951    pub cpu_id: ::core::option::Option<u32>,
14952    #[prost(uint32, optional, tag="2")]
14953    pub state: ::core::option::Option<u32>,
14954    #[prost(uint32, optional, tag="3")]
14955    pub s2idle: ::core::option::Option<u32>,
14956}
14957#[derive(Clone, PartialEq, ::prost::Message)]
14958pub struct PsciDomainIdleEnterFtraceEvent {
14959    #[prost(uint32, optional, tag="1")]
14960    pub cpu_id: ::core::option::Option<u32>,
14961    #[prost(uint32, optional, tag="2")]
14962    pub state: ::core::option::Option<u32>,
14963    #[prost(uint32, optional, tag="3")]
14964    pub s2idle: ::core::option::Option<u32>,
14965}
14966// End of protos/perfetto/trace/ftrace/power.proto
14967
14968// Begin of protos/perfetto/trace/ftrace/printk.proto
14969
14970#[derive(Clone, PartialEq, ::prost::Message)]
14971pub struct ConsoleFtraceEvent {
14972    #[prost(string, optional, tag="1")]
14973    pub msg: ::core::option::Option<::prost::alloc::string::String>,
14974}
14975// End of protos/perfetto/trace/ftrace/printk.proto
14976
14977// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
14978
14979#[derive(Clone, PartialEq, ::prost::Message)]
14980pub struct SysEnterFtraceEvent {
14981    #[prost(int64, optional, tag="1")]
14982    pub id: ::core::option::Option<i64>,
14983    #[prost(uint64, repeated, packed="false", tag="2")]
14984    pub args: ::prost::alloc::vec::Vec<u64>,
14985}
14986#[derive(Clone, PartialEq, ::prost::Message)]
14987pub struct SysExitFtraceEvent {
14988    #[prost(int64, optional, tag="1")]
14989    pub id: ::core::option::Option<i64>,
14990    #[prost(int64, optional, tag="2")]
14991    pub ret: ::core::option::Option<i64>,
14992}
14993// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
14994
14995// Begin of protos/perfetto/trace/ftrace/regulator.proto
14996
14997#[derive(Clone, PartialEq, ::prost::Message)]
14998pub struct RegulatorDisableFtraceEvent {
14999    #[prost(string, optional, tag="1")]
15000    pub name: ::core::option::Option<::prost::alloc::string::String>,
15001}
15002#[derive(Clone, PartialEq, ::prost::Message)]
15003pub struct RegulatorDisableCompleteFtraceEvent {
15004    #[prost(string, optional, tag="1")]
15005    pub name: ::core::option::Option<::prost::alloc::string::String>,
15006}
15007#[derive(Clone, PartialEq, ::prost::Message)]
15008pub struct RegulatorEnableFtraceEvent {
15009    #[prost(string, optional, tag="1")]
15010    pub name: ::core::option::Option<::prost::alloc::string::String>,
15011}
15012#[derive(Clone, PartialEq, ::prost::Message)]
15013pub struct RegulatorEnableCompleteFtraceEvent {
15014    #[prost(string, optional, tag="1")]
15015    pub name: ::core::option::Option<::prost::alloc::string::String>,
15016}
15017#[derive(Clone, PartialEq, ::prost::Message)]
15018pub struct RegulatorEnableDelayFtraceEvent {
15019    #[prost(string, optional, tag="1")]
15020    pub name: ::core::option::Option<::prost::alloc::string::String>,
15021}
15022#[derive(Clone, PartialEq, ::prost::Message)]
15023pub struct RegulatorSetVoltageFtraceEvent {
15024    #[prost(string, optional, tag="1")]
15025    pub name: ::core::option::Option<::prost::alloc::string::String>,
15026    #[prost(int32, optional, tag="2")]
15027    pub min: ::core::option::Option<i32>,
15028    #[prost(int32, optional, tag="3")]
15029    pub max: ::core::option::Option<i32>,
15030}
15031#[derive(Clone, PartialEq, ::prost::Message)]
15032pub struct RegulatorSetVoltageCompleteFtraceEvent {
15033    #[prost(string, optional, tag="1")]
15034    pub name: ::core::option::Option<::prost::alloc::string::String>,
15035    #[prost(uint32, optional, tag="2")]
15036    pub val: ::core::option::Option<u32>,
15037}
15038// End of protos/perfetto/trace/ftrace/regulator.proto
15039
15040// Begin of protos/perfetto/trace/ftrace/rpm.proto
15041
15042#[derive(Clone, PartialEq, ::prost::Message)]
15043pub struct RpmStatusFtraceEvent {
15044    #[prost(string, optional, tag="1")]
15045    pub name: ::core::option::Option<::prost::alloc::string::String>,
15046    #[prost(int32, optional, tag="2")]
15047    pub status: ::core::option::Option<i32>,
15048}
15049// End of protos/perfetto/trace/ftrace/rpm.proto
15050
15051// Begin of protos/perfetto/trace/ftrace/samsung.proto
15052
15053#[derive(Clone, PartialEq, ::prost::Message)]
15054pub struct SamsungTracingMarkWriteFtraceEvent {
15055    #[prost(int32, optional, tag="1")]
15056    pub pid: ::core::option::Option<i32>,
15057    #[prost(string, optional, tag="2")]
15058    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15059    #[prost(uint32, optional, tag="3")]
15060    pub trace_begin: ::core::option::Option<u32>,
15061    #[prost(uint32, optional, tag="4")]
15062    pub trace_type: ::core::option::Option<u32>,
15063    #[prost(int32, optional, tag="5")]
15064    pub value: ::core::option::Option<i32>,
15065}
15066// End of protos/perfetto/trace/ftrace/samsung.proto
15067
15068// Begin of protos/perfetto/trace/ftrace/sched.proto
15069
15070#[derive(Clone, PartialEq, ::prost::Message)]
15071pub struct SchedSwitchFtraceEvent {
15072    #[prost(string, optional, tag="1")]
15073    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15074    #[prost(int32, optional, tag="2")]
15075    pub prev_pid: ::core::option::Option<i32>,
15076    #[prost(int32, optional, tag="3")]
15077    pub prev_prio: ::core::option::Option<i32>,
15078    #[prost(int64, optional, tag="4")]
15079    pub prev_state: ::core::option::Option<i64>,
15080    #[prost(string, optional, tag="5")]
15081    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15082    #[prost(int32, optional, tag="6")]
15083    pub next_pid: ::core::option::Option<i32>,
15084    #[prost(int32, optional, tag="7")]
15085    pub next_prio: ::core::option::Option<i32>,
15086}
15087#[derive(Clone, PartialEq, ::prost::Message)]
15088pub struct SchedWakeupFtraceEvent {
15089    #[prost(string, optional, tag="1")]
15090    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15091    #[prost(int32, optional, tag="2")]
15092    pub pid: ::core::option::Option<i32>,
15093    #[prost(int32, optional, tag="3")]
15094    pub prio: ::core::option::Option<i32>,
15095    #[prost(int32, optional, tag="4")]
15096    pub success: ::core::option::Option<i32>,
15097    #[prost(int32, optional, tag="5")]
15098    pub target_cpu: ::core::option::Option<i32>,
15099}
15100#[derive(Clone, PartialEq, ::prost::Message)]
15101pub struct SchedBlockedReasonFtraceEvent {
15102    #[prost(int32, optional, tag="1")]
15103    pub pid: ::core::option::Option<i32>,
15104    #[prost(uint64, optional, tag="2")]
15105    pub caller: ::core::option::Option<u64>,
15106    #[prost(uint32, optional, tag="3")]
15107    pub io_wait: ::core::option::Option<u32>,
15108}
15109#[derive(Clone, PartialEq, ::prost::Message)]
15110pub struct SchedCpuHotplugFtraceEvent {
15111    #[prost(int32, optional, tag="1")]
15112    pub affected_cpu: ::core::option::Option<i32>,
15113    #[prost(int32, optional, tag="2")]
15114    pub error: ::core::option::Option<i32>,
15115    #[prost(int32, optional, tag="3")]
15116    pub status: ::core::option::Option<i32>,
15117}
15118#[derive(Clone, PartialEq, ::prost::Message)]
15119pub struct SchedWakingFtraceEvent {
15120    #[prost(string, optional, tag="1")]
15121    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15122    #[prost(int32, optional, tag="2")]
15123    pub pid: ::core::option::Option<i32>,
15124    #[prost(int32, optional, tag="3")]
15125    pub prio: ::core::option::Option<i32>,
15126    #[prost(int32, optional, tag="4")]
15127    pub success: ::core::option::Option<i32>,
15128    #[prost(int32, optional, tag="5")]
15129    pub target_cpu: ::core::option::Option<i32>,
15130}
15131#[derive(Clone, PartialEq, ::prost::Message)]
15132pub struct SchedWakeupNewFtraceEvent {
15133    #[prost(string, optional, tag="1")]
15134    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15135    #[prost(int32, optional, tag="2")]
15136    pub pid: ::core::option::Option<i32>,
15137    #[prost(int32, optional, tag="3")]
15138    pub prio: ::core::option::Option<i32>,
15139    #[prost(int32, optional, tag="4")]
15140    pub success: ::core::option::Option<i32>,
15141    #[prost(int32, optional, tag="5")]
15142    pub target_cpu: ::core::option::Option<i32>,
15143}
15144#[derive(Clone, PartialEq, ::prost::Message)]
15145pub struct SchedProcessExecFtraceEvent {
15146    #[prost(string, optional, tag="1")]
15147    pub filename: ::core::option::Option<::prost::alloc::string::String>,
15148    #[prost(int32, optional, tag="2")]
15149    pub pid: ::core::option::Option<i32>,
15150    #[prost(int32, optional, tag="3")]
15151    pub old_pid: ::core::option::Option<i32>,
15152}
15153#[derive(Clone, PartialEq, ::prost::Message)]
15154pub struct SchedProcessExitFtraceEvent {
15155    #[prost(string, optional, tag="1")]
15156    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15157    #[prost(int32, optional, tag="2")]
15158    pub pid: ::core::option::Option<i32>,
15159    #[prost(int32, optional, tag="3")]
15160    pub tgid: ::core::option::Option<i32>,
15161    #[prost(int32, optional, tag="4")]
15162    pub prio: ::core::option::Option<i32>,
15163}
15164#[derive(Clone, PartialEq, ::prost::Message)]
15165pub struct SchedProcessForkFtraceEvent {
15166    #[prost(string, optional, tag="1")]
15167    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15168    #[prost(int32, optional, tag="2")]
15169    pub parent_pid: ::core::option::Option<i32>,
15170    #[prost(string, optional, tag="3")]
15171    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15172    #[prost(int32, optional, tag="4")]
15173    pub child_pid: ::core::option::Option<i32>,
15174}
15175#[derive(Clone, PartialEq, ::prost::Message)]
15176pub struct SchedProcessFreeFtraceEvent {
15177    #[prost(string, optional, tag="1")]
15178    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15179    #[prost(int32, optional, tag="2")]
15180    pub pid: ::core::option::Option<i32>,
15181    #[prost(int32, optional, tag="3")]
15182    pub prio: ::core::option::Option<i32>,
15183}
15184#[derive(Clone, PartialEq, ::prost::Message)]
15185pub struct SchedProcessHangFtraceEvent {
15186    #[prost(string, optional, tag="1")]
15187    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15188    #[prost(int32, optional, tag="2")]
15189    pub pid: ::core::option::Option<i32>,
15190}
15191#[derive(Clone, PartialEq, ::prost::Message)]
15192pub struct SchedProcessWaitFtraceEvent {
15193    #[prost(string, optional, tag="1")]
15194    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15195    #[prost(int32, optional, tag="2")]
15196    pub pid: ::core::option::Option<i32>,
15197    #[prost(int32, optional, tag="3")]
15198    pub prio: ::core::option::Option<i32>,
15199}
15200#[derive(Clone, PartialEq, ::prost::Message)]
15201pub struct SchedPiSetprioFtraceEvent {
15202    #[prost(string, optional, tag="1")]
15203    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15204    #[prost(int32, optional, tag="2")]
15205    pub newprio: ::core::option::Option<i32>,
15206    #[prost(int32, optional, tag="3")]
15207    pub oldprio: ::core::option::Option<i32>,
15208    #[prost(int32, optional, tag="4")]
15209    pub pid: ::core::option::Option<i32>,
15210}
15211#[derive(Clone, PartialEq, ::prost::Message)]
15212pub struct SchedCpuUtilCfsFtraceEvent {
15213    #[prost(int32, optional, tag="1")]
15214    pub active: ::core::option::Option<i32>,
15215    #[prost(uint64, optional, tag="2")]
15216    pub capacity: ::core::option::Option<u64>,
15217    #[prost(uint64, optional, tag="3")]
15218    pub capacity_orig: ::core::option::Option<u64>,
15219    #[prost(uint32, optional, tag="4")]
15220    pub cpu: ::core::option::Option<u32>,
15221    #[prost(uint64, optional, tag="5")]
15222    pub cpu_importance: ::core::option::Option<u64>,
15223    #[prost(uint64, optional, tag="6")]
15224    pub cpu_util: ::core::option::Option<u64>,
15225    #[prost(uint32, optional, tag="7")]
15226    pub exit_lat: ::core::option::Option<u32>,
15227    #[prost(uint64, optional, tag="8")]
15228    pub group_capacity: ::core::option::Option<u64>,
15229    #[prost(uint32, optional, tag="9")]
15230    pub grp_overutilized: ::core::option::Option<u32>,
15231    #[prost(uint32, optional, tag="10")]
15232    pub idle_cpu: ::core::option::Option<u32>,
15233    #[prost(uint32, optional, tag="11")]
15234    pub nr_running: ::core::option::Option<u32>,
15235    #[prost(int64, optional, tag="12")]
15236    pub spare_cap: ::core::option::Option<i64>,
15237    #[prost(uint32, optional, tag="13")]
15238    pub task_fits: ::core::option::Option<u32>,
15239    #[prost(uint64, optional, tag="14")]
15240    pub wake_group_util: ::core::option::Option<u64>,
15241    #[prost(uint64, optional, tag="15")]
15242    pub wake_util: ::core::option::Option<u64>,
15243}
15244#[derive(Clone, PartialEq, ::prost::Message)]
15245pub struct SchedMigrateTaskFtraceEvent {
15246    #[prost(string, optional, tag="1")]
15247    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15248    #[prost(int32, optional, tag="2")]
15249    pub pid: ::core::option::Option<i32>,
15250    #[prost(int32, optional, tag="3")]
15251    pub prio: ::core::option::Option<i32>,
15252    #[prost(int32, optional, tag="4")]
15253    pub orig_cpu: ::core::option::Option<i32>,
15254    #[prost(int32, optional, tag="5")]
15255    pub dest_cpu: ::core::option::Option<i32>,
15256    #[prost(int32, optional, tag="6")]
15257    pub running: ::core::option::Option<i32>,
15258    #[prost(uint32, optional, tag="7")]
15259    pub load: ::core::option::Option<u32>,
15260}
15261#[derive(Clone, PartialEq, ::prost::Message)]
15262pub struct SchedWakeupTaskAttrFtraceEvent {
15263    #[prost(int32, optional, tag="1")]
15264    pub pid: ::core::option::Option<i32>,
15265    #[prost(uint64, optional, tag="2")]
15266    pub cpu_affinity: ::core::option::Option<u64>,
15267    #[prost(uint64, optional, tag="3")]
15268    pub task_util: ::core::option::Option<u64>,
15269    #[prost(uint64, optional, tag="4")]
15270    pub uclamp_min: ::core::option::Option<u64>,
15271    #[prost(uint64, optional, tag="5")]
15272    pub vruntime: ::core::option::Option<u64>,
15273}
15274#[derive(Clone, PartialEq, ::prost::Message)]
15275pub struct SchedGroupTrackerFtraceEvent {
15276    #[prost(string, optional, tag="1")]
15277    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15278    #[prost(int32, optional, tag="2")]
15279    pub pid: ::core::option::Option<i32>,
15280    #[prost(string, optional, tag="3")]
15281    pub group: ::core::option::Option<::prost::alloc::string::String>,
15282    #[prost(int32, optional, tag="4")]
15283    pub group_num: ::core::option::Option<i32>,
15284}
15285// End of protos/perfetto/trace/ftrace/sched.proto
15286
15287// Begin of protos/perfetto/trace/ftrace/scm.proto
15288
15289#[derive(Clone, PartialEq, ::prost::Message)]
15290pub struct ScmCallStartFtraceEvent {
15291    #[prost(uint32, optional, tag="1")]
15292    pub arginfo: ::core::option::Option<u32>,
15293    #[prost(uint64, optional, tag="2")]
15294    pub x0: ::core::option::Option<u64>,
15295    #[prost(uint64, optional, tag="3")]
15296    pub x5: ::core::option::Option<u64>,
15297}
15298#[derive(Clone, PartialEq, ::prost::Message)]
15299pub struct ScmCallEndFtraceEvent {
15300}
15301// End of protos/perfetto/trace/ftrace/scm.proto
15302
15303// Begin of protos/perfetto/trace/ftrace/scsi.proto
15304
15305#[derive(Clone, PartialEq, ::prost::Message)]
15306pub struct ScsiDispatchCmdErrorFtraceEvent {
15307    #[prost(uint32, optional, tag="1")]
15308    pub host_no: ::core::option::Option<u32>,
15309    #[prost(uint32, optional, tag="2")]
15310    pub channel: ::core::option::Option<u32>,
15311    #[prost(uint32, optional, tag="3")]
15312    pub id: ::core::option::Option<u32>,
15313    #[prost(uint32, optional, tag="4")]
15314    pub lun: ::core::option::Option<u32>,
15315    #[prost(int32, optional, tag="5")]
15316    pub rtn: ::core::option::Option<i32>,
15317    #[prost(uint32, optional, tag="6")]
15318    pub opcode: ::core::option::Option<u32>,
15319    #[prost(uint32, optional, tag="7")]
15320    pub cmd_len: ::core::option::Option<u32>,
15321    #[prost(uint32, optional, tag="8")]
15322    pub data_sglen: ::core::option::Option<u32>,
15323    #[prost(uint32, optional, tag="9")]
15324    pub prot_sglen: ::core::option::Option<u32>,
15325    #[prost(uint32, optional, tag="10")]
15326    pub prot_op: ::core::option::Option<u32>,
15327    #[prost(int32, optional, tag="12")]
15328    pub driver_tag: ::core::option::Option<i32>,
15329    #[prost(int32, optional, tag="13")]
15330    pub scheduler_tag: ::core::option::Option<i32>,
15331    #[prost(bytes="vec", optional, tag="14")]
15332    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15333}
15334#[derive(Clone, PartialEq, ::prost::Message)]
15335pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15336    #[prost(uint32, optional, tag="1")]
15337    pub host_no: ::core::option::Option<u32>,
15338    #[prost(uint32, optional, tag="2")]
15339    pub channel: ::core::option::Option<u32>,
15340    #[prost(uint32, optional, tag="3")]
15341    pub id: ::core::option::Option<u32>,
15342    #[prost(uint32, optional, tag="4")]
15343    pub lun: ::core::option::Option<u32>,
15344    #[prost(int32, optional, tag="5")]
15345    pub result: ::core::option::Option<i32>,
15346    #[prost(uint32, optional, tag="6")]
15347    pub opcode: ::core::option::Option<u32>,
15348    #[prost(uint32, optional, tag="7")]
15349    pub cmd_len: ::core::option::Option<u32>,
15350    #[prost(uint32, optional, tag="8")]
15351    pub data_sglen: ::core::option::Option<u32>,
15352    #[prost(uint32, optional, tag="9")]
15353    pub prot_sglen: ::core::option::Option<u32>,
15354    #[prost(uint32, optional, tag="10")]
15355    pub prot_op: ::core::option::Option<u32>,
15356    #[prost(int32, optional, tag="12")]
15357    pub driver_tag: ::core::option::Option<i32>,
15358    #[prost(int32, optional, tag="13")]
15359    pub scheduler_tag: ::core::option::Option<i32>,
15360    #[prost(uint32, optional, tag="14")]
15361    pub sense_key: ::core::option::Option<u32>,
15362    #[prost(uint32, optional, tag="15")]
15363    pub asc: ::core::option::Option<u32>,
15364    #[prost(uint32, optional, tag="16")]
15365    pub ascq: ::core::option::Option<u32>,
15366    #[prost(bytes="vec", optional, tag="17")]
15367    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15368}
15369#[derive(Clone, PartialEq, ::prost::Message)]
15370pub struct ScsiEhWakeupFtraceEvent {
15371    #[prost(uint32, optional, tag="1")]
15372    pub host_no: ::core::option::Option<u32>,
15373}
15374// End of protos/perfetto/trace/ftrace/scsi.proto
15375
15376// Begin of protos/perfetto/trace/ftrace/sde.proto
15377
15378#[derive(Clone, PartialEq, ::prost::Message)]
15379pub struct SdeTracingMarkWriteFtraceEvent {
15380    #[prost(int32, optional, tag="1")]
15381    pub pid: ::core::option::Option<i32>,
15382    #[prost(string, optional, tag="2")]
15383    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15384    #[prost(uint32, optional, tag="3")]
15385    pub trace_type: ::core::option::Option<u32>,
15386    #[prost(int32, optional, tag="4")]
15387    pub value: ::core::option::Option<i32>,
15388    #[prost(uint32, optional, tag="5")]
15389    pub trace_begin: ::core::option::Option<u32>,
15390}
15391#[derive(Clone, PartialEq, ::prost::Message)]
15392pub struct SdeSdeEvtlogFtraceEvent {
15393    #[prost(string, optional, tag="1")]
15394    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
15395    #[prost(int32, optional, tag="2")]
15396    pub pid: ::core::option::Option<i32>,
15397    #[prost(uint32, optional, tag="3")]
15398    pub tag_id: ::core::option::Option<u32>,
15399}
15400#[derive(Clone, PartialEq, ::prost::Message)]
15401pub struct SdeSdePerfCalcCrtcFtraceEvent {
15402    #[prost(uint64, optional, tag="1")]
15403    pub bw_ctl_ebi: ::core::option::Option<u64>,
15404    #[prost(uint64, optional, tag="2")]
15405    pub bw_ctl_llcc: ::core::option::Option<u64>,
15406    #[prost(uint64, optional, tag="3")]
15407    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15408    #[prost(uint32, optional, tag="4")]
15409    pub core_clk_rate: ::core::option::Option<u32>,
15410    #[prost(uint32, optional, tag="5")]
15411    pub crtc: ::core::option::Option<u32>,
15412    #[prost(uint64, optional, tag="6")]
15413    pub ib_ebi: ::core::option::Option<u64>,
15414    #[prost(uint64, optional, tag="7")]
15415    pub ib_llcc: ::core::option::Option<u64>,
15416    #[prost(uint64, optional, tag="8")]
15417    pub ib_mnoc: ::core::option::Option<u64>,
15418}
15419#[derive(Clone, PartialEq, ::prost::Message)]
15420pub struct SdeSdePerfCrtcUpdateFtraceEvent {
15421    #[prost(uint64, optional, tag="1")]
15422    pub bw_ctl_ebi: ::core::option::Option<u64>,
15423    #[prost(uint64, optional, tag="2")]
15424    pub bw_ctl_llcc: ::core::option::Option<u64>,
15425    #[prost(uint64, optional, tag="3")]
15426    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15427    #[prost(uint32, optional, tag="4")]
15428    pub core_clk_rate: ::core::option::Option<u32>,
15429    #[prost(uint32, optional, tag="5")]
15430    pub crtc: ::core::option::Option<u32>,
15431    #[prost(int32, optional, tag="6")]
15432    pub params: ::core::option::Option<i32>,
15433    #[prost(uint64, optional, tag="7")]
15434    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
15435    #[prost(uint64, optional, tag="8")]
15436    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
15437    #[prost(uint64, optional, tag="9")]
15438    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
15439    #[prost(uint32, optional, tag="10")]
15440    pub stop_req: ::core::option::Option<u32>,
15441    #[prost(uint32, optional, tag="11")]
15442    pub update_bus: ::core::option::Option<u32>,
15443    #[prost(uint32, optional, tag="12")]
15444    pub update_clk: ::core::option::Option<u32>,
15445}
15446#[derive(Clone, PartialEq, ::prost::Message)]
15447pub struct SdeSdePerfSetQosLutsFtraceEvent {
15448    #[prost(uint32, optional, tag="1")]
15449    pub fl: ::core::option::Option<u32>,
15450    #[prost(uint32, optional, tag="2")]
15451    pub fmt: ::core::option::Option<u32>,
15452    #[prost(uint64, optional, tag="3")]
15453    pub lut: ::core::option::Option<u64>,
15454    #[prost(uint32, optional, tag="4")]
15455    pub lut_usage: ::core::option::Option<u32>,
15456    #[prost(uint32, optional, tag="5")]
15457    pub pnum: ::core::option::Option<u32>,
15458    #[prost(uint32, optional, tag="6")]
15459    pub rt: ::core::option::Option<u32>,
15460}
15461#[derive(Clone, PartialEq, ::prost::Message)]
15462pub struct SdeSdePerfUpdateBusFtraceEvent {
15463    #[prost(uint64, optional, tag="1")]
15464    pub ab_quota: ::core::option::Option<u64>,
15465    #[prost(uint32, optional, tag="2")]
15466    pub bus_id: ::core::option::Option<u32>,
15467    #[prost(int32, optional, tag="3")]
15468    pub client: ::core::option::Option<i32>,
15469    #[prost(uint64, optional, tag="4")]
15470    pub ib_quota: ::core::option::Option<u64>,
15471}
15472// End of protos/perfetto/trace/ftrace/sde.proto
15473
15474// Begin of protos/perfetto/trace/ftrace/signal.proto
15475
15476#[derive(Clone, PartialEq, ::prost::Message)]
15477pub struct SignalDeliverFtraceEvent {
15478    #[prost(int32, optional, tag="1")]
15479    pub code: ::core::option::Option<i32>,
15480    #[prost(uint64, optional, tag="2")]
15481    pub sa_flags: ::core::option::Option<u64>,
15482    #[prost(int32, optional, tag="3")]
15483    pub sig: ::core::option::Option<i32>,
15484}
15485#[derive(Clone, PartialEq, ::prost::Message)]
15486pub struct SignalGenerateFtraceEvent {
15487    #[prost(int32, optional, tag="1")]
15488    pub code: ::core::option::Option<i32>,
15489    #[prost(string, optional, tag="2")]
15490    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15491    #[prost(int32, optional, tag="3")]
15492    pub group: ::core::option::Option<i32>,
15493    #[prost(int32, optional, tag="4")]
15494    pub pid: ::core::option::Option<i32>,
15495    #[prost(int32, optional, tag="5")]
15496    pub result: ::core::option::Option<i32>,
15497    #[prost(int32, optional, tag="6")]
15498    pub sig: ::core::option::Option<i32>,
15499}
15500// End of protos/perfetto/trace/ftrace/signal.proto
15501
15502// Begin of protos/perfetto/trace/ftrace/skb.proto
15503
15504#[derive(Clone, PartialEq, ::prost::Message)]
15505pub struct KfreeSkbFtraceEvent {
15506    #[prost(uint64, optional, tag="1")]
15507    pub location: ::core::option::Option<u64>,
15508    #[prost(uint32, optional, tag="2")]
15509    pub protocol: ::core::option::Option<u32>,
15510    #[prost(uint64, optional, tag="3")]
15511    pub skbaddr: ::core::option::Option<u64>,
15512}
15513// End of protos/perfetto/trace/ftrace/skb.proto
15514
15515// Begin of protos/perfetto/trace/ftrace/sock.proto
15516
15517#[derive(Clone, PartialEq, ::prost::Message)]
15518pub struct InetSockSetStateFtraceEvent {
15519    #[prost(uint32, optional, tag="1")]
15520    pub daddr: ::core::option::Option<u32>,
15521    #[prost(uint32, optional, tag="2")]
15522    pub dport: ::core::option::Option<u32>,
15523    #[prost(uint32, optional, tag="3")]
15524    pub family: ::core::option::Option<u32>,
15525    #[prost(int32, optional, tag="4")]
15526    pub newstate: ::core::option::Option<i32>,
15527    #[prost(int32, optional, tag="5")]
15528    pub oldstate: ::core::option::Option<i32>,
15529    #[prost(uint32, optional, tag="6")]
15530    pub protocol: ::core::option::Option<u32>,
15531    #[prost(uint32, optional, tag="7")]
15532    pub saddr: ::core::option::Option<u32>,
15533    #[prost(uint64, optional, tag="8")]
15534    pub skaddr: ::core::option::Option<u64>,
15535    #[prost(uint32, optional, tag="9")]
15536    pub sport: ::core::option::Option<u32>,
15537}
15538// End of protos/perfetto/trace/ftrace/sock.proto
15539
15540// Begin of protos/perfetto/trace/ftrace/sync.proto
15541
15542#[derive(Clone, PartialEq, ::prost::Message)]
15543pub struct SyncPtFtraceEvent {
15544    #[prost(string, optional, tag="1")]
15545    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15546    #[prost(string, optional, tag="2")]
15547    pub value: ::core::option::Option<::prost::alloc::string::String>,
15548}
15549#[derive(Clone, PartialEq, ::prost::Message)]
15550pub struct SyncTimelineFtraceEvent {
15551    #[prost(string, optional, tag="1")]
15552    pub name: ::core::option::Option<::prost::alloc::string::String>,
15553    #[prost(string, optional, tag="2")]
15554    pub value: ::core::option::Option<::prost::alloc::string::String>,
15555}
15556#[derive(Clone, PartialEq, ::prost::Message)]
15557pub struct SyncWaitFtraceEvent {
15558    #[prost(string, optional, tag="1")]
15559    pub name: ::core::option::Option<::prost::alloc::string::String>,
15560    #[prost(int32, optional, tag="2")]
15561    pub status: ::core::option::Option<i32>,
15562    #[prost(uint32, optional, tag="3")]
15563    pub begin: ::core::option::Option<u32>,
15564}
15565// End of protos/perfetto/trace/ftrace/sync.proto
15566
15567// Begin of protos/perfetto/trace/ftrace/synthetic.proto
15568
15569#[derive(Clone, PartialEq, ::prost::Message)]
15570pub struct RssStatThrottledFtraceEvent {
15571    #[prost(uint32, optional, tag="1")]
15572    pub curr: ::core::option::Option<u32>,
15573    #[prost(int32, optional, tag="2")]
15574    pub member: ::core::option::Option<i32>,
15575    #[prost(uint32, optional, tag="3")]
15576    pub mm_id: ::core::option::Option<u32>,
15577    #[prost(int64, optional, tag="4")]
15578    pub size: ::core::option::Option<i64>,
15579}
15580#[derive(Clone, PartialEq, ::prost::Message)]
15581pub struct SuspendResumeMinimalFtraceEvent {
15582    #[prost(uint32, optional, tag="1")]
15583    pub start: ::core::option::Option<u32>,
15584}
15585// End of protos/perfetto/trace/ftrace/synthetic.proto
15586
15587// Begin of protos/perfetto/trace/ftrace/systrace.proto
15588
15589#[derive(Clone, PartialEq, ::prost::Message)]
15590pub struct ZeroFtraceEvent {
15591    #[prost(int32, optional, tag="1")]
15592    pub flag: ::core::option::Option<i32>,
15593    #[prost(string, optional, tag="2")]
15594    pub name: ::core::option::Option<::prost::alloc::string::String>,
15595    #[prost(int32, optional, tag="3")]
15596    pub pid: ::core::option::Option<i32>,
15597    #[prost(int64, optional, tag="4")]
15598    pub value: ::core::option::Option<i64>,
15599}
15600// End of protos/perfetto/trace/ftrace/systrace.proto
15601
15602// Begin of protos/perfetto/trace/ftrace/task.proto
15603
15604#[derive(Clone, PartialEq, ::prost::Message)]
15605pub struct TaskNewtaskFtraceEvent {
15606    #[prost(int32, optional, tag="1")]
15607    pub pid: ::core::option::Option<i32>,
15608    #[prost(string, optional, tag="2")]
15609    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15610    #[prost(uint64, optional, tag="3")]
15611    pub clone_flags: ::core::option::Option<u64>,
15612    #[prost(int32, optional, tag="4")]
15613    pub oom_score_adj: ::core::option::Option<i32>,
15614}
15615#[derive(Clone, PartialEq, ::prost::Message)]
15616pub struct TaskRenameFtraceEvent {
15617    #[prost(int32, optional, tag="1")]
15618    pub pid: ::core::option::Option<i32>,
15619    #[prost(string, optional, tag="2")]
15620    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
15621    #[prost(string, optional, tag="3")]
15622    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
15623    #[prost(int32, optional, tag="4")]
15624    pub oom_score_adj: ::core::option::Option<i32>,
15625}
15626// End of protos/perfetto/trace/ftrace/task.proto
15627
15628// Begin of protos/perfetto/trace/ftrace/tcp.proto
15629
15630#[derive(Clone, PartialEq, ::prost::Message)]
15631pub struct TcpRetransmitSkbFtraceEvent {
15632    #[prost(uint32, optional, tag="1")]
15633    pub daddr: ::core::option::Option<u32>,
15634    #[prost(uint32, optional, tag="2")]
15635    pub dport: ::core::option::Option<u32>,
15636    #[prost(uint32, optional, tag="3")]
15637    pub saddr: ::core::option::Option<u32>,
15638    #[prost(uint64, optional, tag="4")]
15639    pub skaddr: ::core::option::Option<u64>,
15640    #[prost(uint64, optional, tag="5")]
15641    pub skbaddr: ::core::option::Option<u64>,
15642    #[prost(uint32, optional, tag="6")]
15643    pub sport: ::core::option::Option<u32>,
15644    #[prost(int32, optional, tag="7")]
15645    pub state: ::core::option::Option<i32>,
15646}
15647// End of protos/perfetto/trace/ftrace/tcp.proto
15648
15649// Begin of protos/perfetto/trace/ftrace/thermal.proto
15650
15651#[derive(Clone, PartialEq, ::prost::Message)]
15652pub struct ThermalTemperatureFtraceEvent {
15653    #[prost(int32, optional, tag="1")]
15654    pub id: ::core::option::Option<i32>,
15655    #[prost(int32, optional, tag="2")]
15656    pub temp: ::core::option::Option<i32>,
15657    #[prost(int32, optional, tag="3")]
15658    pub temp_prev: ::core::option::Option<i32>,
15659    #[prost(string, optional, tag="4")]
15660    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
15661}
15662#[derive(Clone, PartialEq, ::prost::Message)]
15663pub struct CdevUpdateFtraceEvent {
15664    #[prost(uint64, optional, tag="1")]
15665    pub target: ::core::option::Option<u64>,
15666    #[prost(string, optional, tag="2")]
15667    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
15668}
15669// End of protos/perfetto/trace/ftrace/thermal.proto
15670
15671// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
15672
15673#[derive(Clone, PartialEq, ::prost::Message)]
15674pub struct ThermalExynosAcpmBulkFtraceEvent {
15675    #[prost(uint32, optional, tag="1")]
15676    pub tz_id: ::core::option::Option<u32>,
15677    #[prost(uint32, optional, tag="2")]
15678    pub current_temp: ::core::option::Option<u32>,
15679    #[prost(uint32, optional, tag="3")]
15680    pub ctrl_temp: ::core::option::Option<u32>,
15681    #[prost(uint32, optional, tag="4")]
15682    pub cdev_state: ::core::option::Option<u32>,
15683    #[prost(int32, optional, tag="5")]
15684    pub pid_et_p: ::core::option::Option<i32>,
15685    #[prost(int32, optional, tag="6")]
15686    pub pid_power_range: ::core::option::Option<i32>,
15687    #[prost(int32, optional, tag="7")]
15688    pub pid_p: ::core::option::Option<i32>,
15689    #[prost(int32, optional, tag="8")]
15690    pub pid_i: ::core::option::Option<i32>,
15691    #[prost(int32, optional, tag="9")]
15692    pub k_p: ::core::option::Option<i32>,
15693    #[prost(int32, optional, tag="10")]
15694    pub k_i: ::core::option::Option<i32>,
15695    #[prost(uint64, optional, tag="11")]
15696    pub timestamp: ::core::option::Option<u64>,
15697}
15698#[derive(Clone, PartialEq, ::prost::Message)]
15699pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
15700    #[prost(int32, optional, tag="1")]
15701    pub tz_id: ::core::option::Option<i32>,
15702    #[prost(uint32, optional, tag="2")]
15703    pub current_temp: ::core::option::Option<u32>,
15704    #[prost(uint32, optional, tag="3")]
15705    pub ctrl_temp: ::core::option::Option<u32>,
15706    #[prost(uint32, optional, tag="4")]
15707    pub cdev_state: ::core::option::Option<u32>,
15708    #[prost(int32, optional, tag="5")]
15709    pub pid_et_p: ::core::option::Option<i32>,
15710    #[prost(int32, optional, tag="6")]
15711    pub k_p: ::core::option::Option<i32>,
15712    #[prost(int32, optional, tag="7")]
15713    pub k_i: ::core::option::Option<i32>,
15714}
15715// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
15716
15717// Begin of protos/perfetto/trace/ftrace/timer.proto
15718
15719#[derive(Clone, PartialEq, ::prost::Message)]
15720pub struct HrtimerStartFtraceEvent {
15721    #[prost(uint64, optional, tag="1")]
15722    pub hrtimer: ::core::option::Option<u64>,
15723    #[prost(uint64, optional, tag="2")]
15724    pub function: ::core::option::Option<u64>,
15725    #[prost(int64, optional, tag="3")]
15726    pub expires: ::core::option::Option<i64>,
15727    #[prost(int64, optional, tag="4")]
15728    pub softexpires: ::core::option::Option<i64>,
15729    #[prost(uint32, optional, tag="5")]
15730    pub mode: ::core::option::Option<u32>,
15731}
15732#[derive(Clone, PartialEq, ::prost::Message)]
15733pub struct HrtimerCancelFtraceEvent {
15734    #[prost(uint64, optional, tag="1")]
15735    pub hrtimer: ::core::option::Option<u64>,
15736}
15737#[derive(Clone, PartialEq, ::prost::Message)]
15738pub struct HrtimerExpireEntryFtraceEvent {
15739    #[prost(uint64, optional, tag="1")]
15740    pub hrtimer: ::core::option::Option<u64>,
15741    #[prost(int64, optional, tag="2")]
15742    pub now: ::core::option::Option<i64>,
15743    #[prost(uint64, optional, tag="3")]
15744    pub function: ::core::option::Option<u64>,
15745}
15746#[derive(Clone, PartialEq, ::prost::Message)]
15747pub struct HrtimerExpireExitFtraceEvent {
15748    #[prost(uint64, optional, tag="1")]
15749    pub hrtimer: ::core::option::Option<u64>,
15750}
15751#[derive(Clone, PartialEq, ::prost::Message)]
15752pub struct TimerStartFtraceEvent {
15753    #[prost(uint64, optional, tag="1")]
15754    pub timer: ::core::option::Option<u64>,
15755    #[prost(uint64, optional, tag="2")]
15756    pub function: ::core::option::Option<u64>,
15757    #[prost(uint64, optional, tag="3")]
15758    pub expires: ::core::option::Option<u64>,
15759    #[prost(uint64, optional, tag="4")]
15760    pub now: ::core::option::Option<u64>,
15761    #[prost(uint32, optional, tag="5")]
15762    pub deferrable: ::core::option::Option<u32>,
15763    #[prost(uint32, optional, tag="6")]
15764    pub flags: ::core::option::Option<u32>,
15765    #[prost(uint64, optional, tag="7")]
15766    pub bucket_expiry: ::core::option::Option<u64>,
15767}
15768#[derive(Clone, PartialEq, ::prost::Message)]
15769pub struct TimerCancelFtraceEvent {
15770    #[prost(uint64, optional, tag="1")]
15771    pub timer: ::core::option::Option<u64>,
15772}
15773#[derive(Clone, PartialEq, ::prost::Message)]
15774pub struct TimerExpireEntryFtraceEvent {
15775    #[prost(uint64, optional, tag="1")]
15776    pub timer: ::core::option::Option<u64>,
15777    #[prost(uint64, optional, tag="2")]
15778    pub now: ::core::option::Option<u64>,
15779    #[prost(uint64, optional, tag="3")]
15780    pub function: ::core::option::Option<u64>,
15781    #[prost(uint64, optional, tag="4")]
15782    pub baseclk: ::core::option::Option<u64>,
15783}
15784#[derive(Clone, PartialEq, ::prost::Message)]
15785pub struct TimerExpireExitFtraceEvent {
15786    #[prost(uint64, optional, tag="1")]
15787    pub timer: ::core::option::Option<u64>,
15788}
15789// End of protos/perfetto/trace/ftrace/timer.proto
15790
15791// Begin of protos/perfetto/trace/ftrace/trusty.proto
15792
15793#[derive(Clone, PartialEq, ::prost::Message)]
15794pub struct TrustySmcFtraceEvent {
15795    #[prost(uint64, optional, tag="1")]
15796    pub r0: ::core::option::Option<u64>,
15797    #[prost(uint64, optional, tag="2")]
15798    pub r1: ::core::option::Option<u64>,
15799    #[prost(uint64, optional, tag="3")]
15800    pub r2: ::core::option::Option<u64>,
15801    #[prost(uint64, optional, tag="4")]
15802    pub r3: ::core::option::Option<u64>,
15803}
15804#[derive(Clone, PartialEq, ::prost::Message)]
15805pub struct TrustySmcDoneFtraceEvent {
15806    #[prost(uint64, optional, tag="1")]
15807    pub ret: ::core::option::Option<u64>,
15808}
15809#[derive(Clone, PartialEq, ::prost::Message)]
15810pub struct TrustyStdCall32FtraceEvent {
15811    #[prost(uint64, optional, tag="1")]
15812    pub r0: ::core::option::Option<u64>,
15813    #[prost(uint64, optional, tag="2")]
15814    pub r1: ::core::option::Option<u64>,
15815    #[prost(uint64, optional, tag="3")]
15816    pub r2: ::core::option::Option<u64>,
15817    #[prost(uint64, optional, tag="4")]
15818    pub r3: ::core::option::Option<u64>,
15819}
15820#[derive(Clone, PartialEq, ::prost::Message)]
15821pub struct TrustyStdCall32DoneFtraceEvent {
15822    #[prost(int64, optional, tag="1")]
15823    pub ret: ::core::option::Option<i64>,
15824}
15825#[derive(Clone, PartialEq, ::prost::Message)]
15826pub struct TrustyShareMemoryFtraceEvent {
15827    #[prost(uint64, optional, tag="1")]
15828    pub len: ::core::option::Option<u64>,
15829    #[prost(uint32, optional, tag="2")]
15830    pub lend: ::core::option::Option<u32>,
15831    #[prost(uint32, optional, tag="3")]
15832    pub nents: ::core::option::Option<u32>,
15833}
15834#[derive(Clone, PartialEq, ::prost::Message)]
15835pub struct TrustyShareMemoryDoneFtraceEvent {
15836    #[prost(uint64, optional, tag="1")]
15837    pub handle: ::core::option::Option<u64>,
15838    #[prost(uint64, optional, tag="2")]
15839    pub len: ::core::option::Option<u64>,
15840    #[prost(uint32, optional, tag="3")]
15841    pub lend: ::core::option::Option<u32>,
15842    #[prost(uint32, optional, tag="4")]
15843    pub nents: ::core::option::Option<u32>,
15844    #[prost(int32, optional, tag="5")]
15845    pub ret: ::core::option::Option<i32>,
15846}
15847#[derive(Clone, PartialEq, ::prost::Message)]
15848pub struct TrustyReclaimMemoryFtraceEvent {
15849    #[prost(uint64, optional, tag="1")]
15850    pub id: ::core::option::Option<u64>,
15851}
15852#[derive(Clone, PartialEq, ::prost::Message)]
15853pub struct TrustyReclaimMemoryDoneFtraceEvent {
15854    #[prost(uint64, optional, tag="1")]
15855    pub id: ::core::option::Option<u64>,
15856    #[prost(int32, optional, tag="2")]
15857    pub ret: ::core::option::Option<i32>,
15858}
15859#[derive(Clone, PartialEq, ::prost::Message)]
15860pub struct TrustyIrqFtraceEvent {
15861    #[prost(int32, optional, tag="1")]
15862    pub irq: ::core::option::Option<i32>,
15863}
15864#[derive(Clone, PartialEq, ::prost::Message)]
15865pub struct TrustyIpcHandleEventFtraceEvent {
15866    #[prost(uint32, optional, tag="1")]
15867    pub chan: ::core::option::Option<u32>,
15868    #[prost(uint32, optional, tag="2")]
15869    pub event_id: ::core::option::Option<u32>,
15870    #[prost(string, optional, tag="3")]
15871    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15872}
15873#[derive(Clone, PartialEq, ::prost::Message)]
15874pub struct TrustyIpcConnectFtraceEvent {
15875    #[prost(uint32, optional, tag="1")]
15876    pub chan: ::core::option::Option<u32>,
15877    #[prost(string, optional, tag="2")]
15878    pub port: ::core::option::Option<::prost::alloc::string::String>,
15879    #[prost(int32, optional, tag="3")]
15880    pub state: ::core::option::Option<i32>,
15881}
15882#[derive(Clone, PartialEq, ::prost::Message)]
15883pub struct TrustyIpcConnectEndFtraceEvent {
15884    #[prost(uint32, optional, tag="1")]
15885    pub chan: ::core::option::Option<u32>,
15886    #[prost(int32, optional, tag="2")]
15887    pub err: ::core::option::Option<i32>,
15888    #[prost(int32, optional, tag="3")]
15889    pub state: ::core::option::Option<i32>,
15890}
15891#[derive(Clone, PartialEq, ::prost::Message)]
15892pub struct TrustyIpcWriteFtraceEvent {
15893    #[prost(uint64, optional, tag="1")]
15894    pub buf_id: ::core::option::Option<u64>,
15895    #[prost(uint32, optional, tag="2")]
15896    pub chan: ::core::option::Option<u32>,
15897    #[prost(int32, optional, tag="3")]
15898    pub kind_shm: ::core::option::Option<i32>,
15899    #[prost(int32, optional, tag="4")]
15900    pub len_or_err: ::core::option::Option<i32>,
15901    #[prost(uint64, optional, tag="5")]
15902    pub shm_cnt: ::core::option::Option<u64>,
15903    #[prost(string, optional, tag="6")]
15904    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15905}
15906#[derive(Clone, PartialEq, ::prost::Message)]
15907pub struct TrustyIpcPollFtraceEvent {
15908    #[prost(uint32, optional, tag="1")]
15909    pub chan: ::core::option::Option<u32>,
15910    #[prost(uint32, optional, tag="2")]
15911    pub poll_mask: ::core::option::Option<u32>,
15912    #[prost(string, optional, tag="3")]
15913    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15914}
15915#[derive(Clone, PartialEq, ::prost::Message)]
15916pub struct TrustyIpcReadFtraceEvent {
15917    #[prost(uint32, optional, tag="1")]
15918    pub chan: ::core::option::Option<u32>,
15919    #[prost(string, optional, tag="2")]
15920    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15921}
15922#[derive(Clone, PartialEq, ::prost::Message)]
15923pub struct TrustyIpcReadEndFtraceEvent {
15924    #[prost(uint64, optional, tag="1")]
15925    pub buf_id: ::core::option::Option<u64>,
15926    #[prost(uint32, optional, tag="2")]
15927    pub chan: ::core::option::Option<u32>,
15928    #[prost(int32, optional, tag="3")]
15929    pub len_or_err: ::core::option::Option<i32>,
15930    #[prost(uint64, optional, tag="4")]
15931    pub shm_cnt: ::core::option::Option<u64>,
15932    #[prost(string, optional, tag="5")]
15933    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15934}
15935#[derive(Clone, PartialEq, ::prost::Message)]
15936pub struct TrustyIpcRxFtraceEvent {
15937    #[prost(uint64, optional, tag="1")]
15938    pub buf_id: ::core::option::Option<u64>,
15939    #[prost(uint32, optional, tag="2")]
15940    pub chan: ::core::option::Option<u32>,
15941    #[prost(string, optional, tag="3")]
15942    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15943}
15944#[derive(Clone, PartialEq, ::prost::Message)]
15945pub struct TrustyEnqueueNopFtraceEvent {
15946    #[prost(uint32, optional, tag="1")]
15947    pub arg1: ::core::option::Option<u32>,
15948    #[prost(uint32, optional, tag="2")]
15949    pub arg2: ::core::option::Option<u32>,
15950    #[prost(uint32, optional, tag="3")]
15951    pub arg3: ::core::option::Option<u32>,
15952}
15953// End of protos/perfetto/trace/ftrace/trusty.proto
15954
15955// Begin of protos/perfetto/trace/ftrace/ufs.proto
15956
15957#[derive(Clone, PartialEq, ::prost::Message)]
15958pub struct UfshcdCommandFtraceEvent {
15959    #[prost(string, optional, tag="1")]
15960    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15961    #[prost(uint32, optional, tag="2")]
15962    pub doorbell: ::core::option::Option<u32>,
15963    #[prost(uint32, optional, tag="3")]
15964    pub intr: ::core::option::Option<u32>,
15965    #[prost(uint64, optional, tag="4")]
15966    pub lba: ::core::option::Option<u64>,
15967    #[prost(uint32, optional, tag="5")]
15968    pub opcode: ::core::option::Option<u32>,
15969    #[prost(string, optional, tag="6")]
15970    pub str: ::core::option::Option<::prost::alloc::string::String>,
15971    #[prost(uint32, optional, tag="7")]
15972    pub tag: ::core::option::Option<u32>,
15973    #[prost(int32, optional, tag="8")]
15974    pub transfer_len: ::core::option::Option<i32>,
15975    #[prost(uint32, optional, tag="9")]
15976    pub group_id: ::core::option::Option<u32>,
15977    #[prost(uint32, optional, tag="10")]
15978    pub str_t: ::core::option::Option<u32>,
15979}
15980#[derive(Clone, PartialEq, ::prost::Message)]
15981pub struct UfshcdClkGatingFtraceEvent {
15982    #[prost(string, optional, tag="1")]
15983    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15984    #[prost(int32, optional, tag="2")]
15985    pub state: ::core::option::Option<i32>,
15986}
15987// End of protos/perfetto/trace/ftrace/ufs.proto
15988
15989// Begin of protos/perfetto/trace/ftrace/v4l2.proto
15990
15991#[derive(Clone, PartialEq, ::prost::Message)]
15992pub struct V4l2QbufFtraceEvent {
15993    #[prost(uint32, optional, tag="1")]
15994    pub bytesused: ::core::option::Option<u32>,
15995    #[prost(uint32, optional, tag="2")]
15996    pub field: ::core::option::Option<u32>,
15997    #[prost(uint32, optional, tag="3")]
15998    pub flags: ::core::option::Option<u32>,
15999    #[prost(uint32, optional, tag="4")]
16000    pub index: ::core::option::Option<u32>,
16001    #[prost(int32, optional, tag="5")]
16002    pub minor: ::core::option::Option<i32>,
16003    #[prost(uint32, optional, tag="6")]
16004    pub sequence: ::core::option::Option<u32>,
16005    #[prost(uint32, optional, tag="7")]
16006    pub timecode_flags: ::core::option::Option<u32>,
16007    #[prost(uint32, optional, tag="8")]
16008    pub timecode_frames: ::core::option::Option<u32>,
16009    #[prost(uint32, optional, tag="9")]
16010    pub timecode_hours: ::core::option::Option<u32>,
16011    #[prost(uint32, optional, tag="10")]
16012    pub timecode_minutes: ::core::option::Option<u32>,
16013    #[prost(uint32, optional, tag="11")]
16014    pub timecode_seconds: ::core::option::Option<u32>,
16015    #[prost(uint32, optional, tag="12")]
16016    pub timecode_type: ::core::option::Option<u32>,
16017    #[prost(uint32, optional, tag="13")]
16018    pub timecode_userbits0: ::core::option::Option<u32>,
16019    #[prost(uint32, optional, tag="14")]
16020    pub timecode_userbits1: ::core::option::Option<u32>,
16021    #[prost(uint32, optional, tag="15")]
16022    pub timecode_userbits2: ::core::option::Option<u32>,
16023    #[prost(uint32, optional, tag="16")]
16024    pub timecode_userbits3: ::core::option::Option<u32>,
16025    #[prost(int64, optional, tag="17")]
16026    pub timestamp: ::core::option::Option<i64>,
16027    #[prost(uint32, optional, tag="18")]
16028    pub r#type: ::core::option::Option<u32>,
16029}
16030#[derive(Clone, PartialEq, ::prost::Message)]
16031pub struct V4l2DqbufFtraceEvent {
16032    #[prost(uint32, optional, tag="1")]
16033    pub bytesused: ::core::option::Option<u32>,
16034    #[prost(uint32, optional, tag="2")]
16035    pub field: ::core::option::Option<u32>,
16036    #[prost(uint32, optional, tag="3")]
16037    pub flags: ::core::option::Option<u32>,
16038    #[prost(uint32, optional, tag="4")]
16039    pub index: ::core::option::Option<u32>,
16040    #[prost(int32, optional, tag="5")]
16041    pub minor: ::core::option::Option<i32>,
16042    #[prost(uint32, optional, tag="6")]
16043    pub sequence: ::core::option::Option<u32>,
16044    #[prost(uint32, optional, tag="7")]
16045    pub timecode_flags: ::core::option::Option<u32>,
16046    #[prost(uint32, optional, tag="8")]
16047    pub timecode_frames: ::core::option::Option<u32>,
16048    #[prost(uint32, optional, tag="9")]
16049    pub timecode_hours: ::core::option::Option<u32>,
16050    #[prost(uint32, optional, tag="10")]
16051    pub timecode_minutes: ::core::option::Option<u32>,
16052    #[prost(uint32, optional, tag="11")]
16053    pub timecode_seconds: ::core::option::Option<u32>,
16054    #[prost(uint32, optional, tag="12")]
16055    pub timecode_type: ::core::option::Option<u32>,
16056    #[prost(uint32, optional, tag="13")]
16057    pub timecode_userbits0: ::core::option::Option<u32>,
16058    #[prost(uint32, optional, tag="14")]
16059    pub timecode_userbits1: ::core::option::Option<u32>,
16060    #[prost(uint32, optional, tag="15")]
16061    pub timecode_userbits2: ::core::option::Option<u32>,
16062    #[prost(uint32, optional, tag="16")]
16063    pub timecode_userbits3: ::core::option::Option<u32>,
16064    #[prost(int64, optional, tag="17")]
16065    pub timestamp: ::core::option::Option<i64>,
16066    #[prost(uint32, optional, tag="18")]
16067    pub r#type: ::core::option::Option<u32>,
16068}
16069#[derive(Clone, PartialEq, ::prost::Message)]
16070pub struct Vb2V4l2BufQueueFtraceEvent {
16071    #[prost(uint32, optional, tag="1")]
16072    pub field: ::core::option::Option<u32>,
16073    #[prost(uint32, optional, tag="2")]
16074    pub flags: ::core::option::Option<u32>,
16075    #[prost(int32, optional, tag="3")]
16076    pub minor: ::core::option::Option<i32>,
16077    #[prost(uint32, optional, tag="4")]
16078    pub sequence: ::core::option::Option<u32>,
16079    #[prost(uint32, optional, tag="5")]
16080    pub timecode_flags: ::core::option::Option<u32>,
16081    #[prost(uint32, optional, tag="6")]
16082    pub timecode_frames: ::core::option::Option<u32>,
16083    #[prost(uint32, optional, tag="7")]
16084    pub timecode_hours: ::core::option::Option<u32>,
16085    #[prost(uint32, optional, tag="8")]
16086    pub timecode_minutes: ::core::option::Option<u32>,
16087    #[prost(uint32, optional, tag="9")]
16088    pub timecode_seconds: ::core::option::Option<u32>,
16089    #[prost(uint32, optional, tag="10")]
16090    pub timecode_type: ::core::option::Option<u32>,
16091    #[prost(uint32, optional, tag="11")]
16092    pub timecode_userbits0: ::core::option::Option<u32>,
16093    #[prost(uint32, optional, tag="12")]
16094    pub timecode_userbits1: ::core::option::Option<u32>,
16095    #[prost(uint32, optional, tag="13")]
16096    pub timecode_userbits2: ::core::option::Option<u32>,
16097    #[prost(uint32, optional, tag="14")]
16098    pub timecode_userbits3: ::core::option::Option<u32>,
16099    #[prost(int64, optional, tag="15")]
16100    pub timestamp: ::core::option::Option<i64>,
16101}
16102#[derive(Clone, PartialEq, ::prost::Message)]
16103pub struct Vb2V4l2BufDoneFtraceEvent {
16104    #[prost(uint32, optional, tag="1")]
16105    pub field: ::core::option::Option<u32>,
16106    #[prost(uint32, optional, tag="2")]
16107    pub flags: ::core::option::Option<u32>,
16108    #[prost(int32, optional, tag="3")]
16109    pub minor: ::core::option::Option<i32>,
16110    #[prost(uint32, optional, tag="4")]
16111    pub sequence: ::core::option::Option<u32>,
16112    #[prost(uint32, optional, tag="5")]
16113    pub timecode_flags: ::core::option::Option<u32>,
16114    #[prost(uint32, optional, tag="6")]
16115    pub timecode_frames: ::core::option::Option<u32>,
16116    #[prost(uint32, optional, tag="7")]
16117    pub timecode_hours: ::core::option::Option<u32>,
16118    #[prost(uint32, optional, tag="8")]
16119    pub timecode_minutes: ::core::option::Option<u32>,
16120    #[prost(uint32, optional, tag="9")]
16121    pub timecode_seconds: ::core::option::Option<u32>,
16122    #[prost(uint32, optional, tag="10")]
16123    pub timecode_type: ::core::option::Option<u32>,
16124    #[prost(uint32, optional, tag="11")]
16125    pub timecode_userbits0: ::core::option::Option<u32>,
16126    #[prost(uint32, optional, tag="12")]
16127    pub timecode_userbits1: ::core::option::Option<u32>,
16128    #[prost(uint32, optional, tag="13")]
16129    pub timecode_userbits2: ::core::option::Option<u32>,
16130    #[prost(uint32, optional, tag="14")]
16131    pub timecode_userbits3: ::core::option::Option<u32>,
16132    #[prost(int64, optional, tag="15")]
16133    pub timestamp: ::core::option::Option<i64>,
16134}
16135#[derive(Clone, PartialEq, ::prost::Message)]
16136pub struct Vb2V4l2QbufFtraceEvent {
16137    #[prost(uint32, optional, tag="1")]
16138    pub field: ::core::option::Option<u32>,
16139    #[prost(uint32, optional, tag="2")]
16140    pub flags: ::core::option::Option<u32>,
16141    #[prost(int32, optional, tag="3")]
16142    pub minor: ::core::option::Option<i32>,
16143    #[prost(uint32, optional, tag="4")]
16144    pub sequence: ::core::option::Option<u32>,
16145    #[prost(uint32, optional, tag="5")]
16146    pub timecode_flags: ::core::option::Option<u32>,
16147    #[prost(uint32, optional, tag="6")]
16148    pub timecode_frames: ::core::option::Option<u32>,
16149    #[prost(uint32, optional, tag="7")]
16150    pub timecode_hours: ::core::option::Option<u32>,
16151    #[prost(uint32, optional, tag="8")]
16152    pub timecode_minutes: ::core::option::Option<u32>,
16153    #[prost(uint32, optional, tag="9")]
16154    pub timecode_seconds: ::core::option::Option<u32>,
16155    #[prost(uint32, optional, tag="10")]
16156    pub timecode_type: ::core::option::Option<u32>,
16157    #[prost(uint32, optional, tag="11")]
16158    pub timecode_userbits0: ::core::option::Option<u32>,
16159    #[prost(uint32, optional, tag="12")]
16160    pub timecode_userbits1: ::core::option::Option<u32>,
16161    #[prost(uint32, optional, tag="13")]
16162    pub timecode_userbits2: ::core::option::Option<u32>,
16163    #[prost(uint32, optional, tag="14")]
16164    pub timecode_userbits3: ::core::option::Option<u32>,
16165    #[prost(int64, optional, tag="15")]
16166    pub timestamp: ::core::option::Option<i64>,
16167}
16168#[derive(Clone, PartialEq, ::prost::Message)]
16169pub struct Vb2V4l2DqbufFtraceEvent {
16170    #[prost(uint32, optional, tag="1")]
16171    pub field: ::core::option::Option<u32>,
16172    #[prost(uint32, optional, tag="2")]
16173    pub flags: ::core::option::Option<u32>,
16174    #[prost(int32, optional, tag="3")]
16175    pub minor: ::core::option::Option<i32>,
16176    #[prost(uint32, optional, tag="4")]
16177    pub sequence: ::core::option::Option<u32>,
16178    #[prost(uint32, optional, tag="5")]
16179    pub timecode_flags: ::core::option::Option<u32>,
16180    #[prost(uint32, optional, tag="6")]
16181    pub timecode_frames: ::core::option::Option<u32>,
16182    #[prost(uint32, optional, tag="7")]
16183    pub timecode_hours: ::core::option::Option<u32>,
16184    #[prost(uint32, optional, tag="8")]
16185    pub timecode_minutes: ::core::option::Option<u32>,
16186    #[prost(uint32, optional, tag="9")]
16187    pub timecode_seconds: ::core::option::Option<u32>,
16188    #[prost(uint32, optional, tag="10")]
16189    pub timecode_type: ::core::option::Option<u32>,
16190    #[prost(uint32, optional, tag="11")]
16191    pub timecode_userbits0: ::core::option::Option<u32>,
16192    #[prost(uint32, optional, tag="12")]
16193    pub timecode_userbits1: ::core::option::Option<u32>,
16194    #[prost(uint32, optional, tag="13")]
16195    pub timecode_userbits2: ::core::option::Option<u32>,
16196    #[prost(uint32, optional, tag="14")]
16197    pub timecode_userbits3: ::core::option::Option<u32>,
16198    #[prost(int64, optional, tag="15")]
16199    pub timestamp: ::core::option::Option<i64>,
16200}
16201// End of protos/perfetto/trace/ftrace/v4l2.proto
16202
16203// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
16204
16205#[derive(Clone, PartialEq, ::prost::Message)]
16206pub struct VirtioGpuCmdQueueFtraceEvent {
16207    #[prost(uint32, optional, tag="1")]
16208    pub ctx_id: ::core::option::Option<u32>,
16209    #[prost(int32, optional, tag="2")]
16210    pub dev: ::core::option::Option<i32>,
16211    #[prost(uint64, optional, tag="3")]
16212    pub fence_id: ::core::option::Option<u64>,
16213    #[prost(uint32, optional, tag="4")]
16214    pub flags: ::core::option::Option<u32>,
16215    #[prost(string, optional, tag="5")]
16216    pub name: ::core::option::Option<::prost::alloc::string::String>,
16217    #[prost(uint32, optional, tag="6")]
16218    pub num_free: ::core::option::Option<u32>,
16219    #[prost(uint32, optional, tag="7")]
16220    pub seqno: ::core::option::Option<u32>,
16221    #[prost(uint32, optional, tag="8")]
16222    pub r#type: ::core::option::Option<u32>,
16223    #[prost(uint32, optional, tag="9")]
16224    pub vq: ::core::option::Option<u32>,
16225}
16226#[derive(Clone, PartialEq, ::prost::Message)]
16227pub struct VirtioGpuCmdResponseFtraceEvent {
16228    #[prost(uint32, optional, tag="1")]
16229    pub ctx_id: ::core::option::Option<u32>,
16230    #[prost(int32, optional, tag="2")]
16231    pub dev: ::core::option::Option<i32>,
16232    #[prost(uint64, optional, tag="3")]
16233    pub fence_id: ::core::option::Option<u64>,
16234    #[prost(uint32, optional, tag="4")]
16235    pub flags: ::core::option::Option<u32>,
16236    #[prost(string, optional, tag="5")]
16237    pub name: ::core::option::Option<::prost::alloc::string::String>,
16238    #[prost(uint32, optional, tag="6")]
16239    pub num_free: ::core::option::Option<u32>,
16240    #[prost(uint32, optional, tag="7")]
16241    pub seqno: ::core::option::Option<u32>,
16242    #[prost(uint32, optional, tag="8")]
16243    pub r#type: ::core::option::Option<u32>,
16244    #[prost(uint32, optional, tag="9")]
16245    pub vq: ::core::option::Option<u32>,
16246}
16247// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
16248
16249// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
16250
16251#[derive(Clone, PartialEq, ::prost::Message)]
16252pub struct VirtioVideoCmdFtraceEvent {
16253    #[prost(uint32, optional, tag="1")]
16254    pub stream_id: ::core::option::Option<u32>,
16255    #[prost(uint32, optional, tag="2")]
16256    pub r#type: ::core::option::Option<u32>,
16257}
16258#[derive(Clone, PartialEq, ::prost::Message)]
16259pub struct VirtioVideoCmdDoneFtraceEvent {
16260    #[prost(uint32, optional, tag="1")]
16261    pub stream_id: ::core::option::Option<u32>,
16262    #[prost(uint32, optional, tag="2")]
16263    pub r#type: ::core::option::Option<u32>,
16264}
16265#[derive(Clone, PartialEq, ::prost::Message)]
16266pub struct VirtioVideoResourceQueueFtraceEvent {
16267    #[prost(uint32, optional, tag="1")]
16268    pub data_size0: ::core::option::Option<u32>,
16269    #[prost(uint32, optional, tag="2")]
16270    pub data_size1: ::core::option::Option<u32>,
16271    #[prost(uint32, optional, tag="3")]
16272    pub data_size2: ::core::option::Option<u32>,
16273    #[prost(uint32, optional, tag="4")]
16274    pub data_size3: ::core::option::Option<u32>,
16275    #[prost(uint32, optional, tag="5")]
16276    pub queue_type: ::core::option::Option<u32>,
16277    #[prost(int32, optional, tag="6")]
16278    pub resource_id: ::core::option::Option<i32>,
16279    #[prost(int32, optional, tag="7")]
16280    pub stream_id: ::core::option::Option<i32>,
16281    #[prost(uint64, optional, tag="8")]
16282    pub timestamp: ::core::option::Option<u64>,
16283}
16284#[derive(Clone, PartialEq, ::prost::Message)]
16285pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16286    #[prost(uint32, optional, tag="1")]
16287    pub data_size0: ::core::option::Option<u32>,
16288    #[prost(uint32, optional, tag="2")]
16289    pub data_size1: ::core::option::Option<u32>,
16290    #[prost(uint32, optional, tag="3")]
16291    pub data_size2: ::core::option::Option<u32>,
16292    #[prost(uint32, optional, tag="4")]
16293    pub data_size3: ::core::option::Option<u32>,
16294    #[prost(uint32, optional, tag="5")]
16295    pub queue_type: ::core::option::Option<u32>,
16296    #[prost(int32, optional, tag="6")]
16297    pub resource_id: ::core::option::Option<i32>,
16298    #[prost(int32, optional, tag="7")]
16299    pub stream_id: ::core::option::Option<i32>,
16300    #[prost(uint64, optional, tag="8")]
16301    pub timestamp: ::core::option::Option<u64>,
16302}
16303// End of protos/perfetto/trace/ftrace/virtio_video.proto
16304
16305// Begin of protos/perfetto/trace/ftrace/vmscan.proto
16306
16307#[derive(Clone, PartialEq, ::prost::Message)]
16308pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16309    #[prost(int32, optional, tag="1")]
16310    pub order: ::core::option::Option<i32>,
16311    #[prost(int32, optional, tag="2")]
16312    pub may_writepage: ::core::option::Option<i32>,
16313    #[prost(uint32, optional, tag="3")]
16314    pub gfp_flags: ::core::option::Option<u32>,
16315}
16316#[derive(Clone, PartialEq, ::prost::Message)]
16317pub struct MmVmscanDirectReclaimEndFtraceEvent {
16318    #[prost(uint64, optional, tag="1")]
16319    pub nr_reclaimed: ::core::option::Option<u64>,
16320}
16321#[derive(Clone, PartialEq, ::prost::Message)]
16322pub struct MmVmscanKswapdWakeFtraceEvent {
16323    #[prost(int32, optional, tag="1")]
16324    pub nid: ::core::option::Option<i32>,
16325    #[prost(int32, optional, tag="2")]
16326    pub order: ::core::option::Option<i32>,
16327    #[prost(int32, optional, tag="3")]
16328    pub zid: ::core::option::Option<i32>,
16329}
16330#[derive(Clone, PartialEq, ::prost::Message)]
16331pub struct MmVmscanKswapdSleepFtraceEvent {
16332    #[prost(int32, optional, tag="1")]
16333    pub nid: ::core::option::Option<i32>,
16334}
16335#[derive(Clone, PartialEq, ::prost::Message)]
16336pub struct MmShrinkSlabStartFtraceEvent {
16337    #[prost(uint64, optional, tag="1")]
16338    pub cache_items: ::core::option::Option<u64>,
16339    #[prost(uint64, optional, tag="2")]
16340    pub delta: ::core::option::Option<u64>,
16341    #[prost(uint32, optional, tag="3")]
16342    pub gfp_flags: ::core::option::Option<u32>,
16343    #[prost(uint64, optional, tag="4")]
16344    pub lru_pgs: ::core::option::Option<u64>,
16345    #[prost(int64, optional, tag="5")]
16346    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16347    #[prost(uint64, optional, tag="6")]
16348    pub pgs_scanned: ::core::option::Option<u64>,
16349    #[prost(uint64, optional, tag="7")]
16350    pub shr: ::core::option::Option<u64>,
16351    #[prost(uint64, optional, tag="8")]
16352    pub shrink: ::core::option::Option<u64>,
16353    #[prost(uint64, optional, tag="9")]
16354    pub total_scan: ::core::option::Option<u64>,
16355    #[prost(int32, optional, tag="10")]
16356    pub nid: ::core::option::Option<i32>,
16357    #[prost(int32, optional, tag="11")]
16358    pub priority: ::core::option::Option<i32>,
16359}
16360#[derive(Clone, PartialEq, ::prost::Message)]
16361pub struct MmShrinkSlabEndFtraceEvent {
16362    #[prost(int64, optional, tag="1")]
16363    pub new_scan: ::core::option::Option<i64>,
16364    #[prost(int32, optional, tag="2")]
16365    pub retval: ::core::option::Option<i32>,
16366    #[prost(uint64, optional, tag="3")]
16367    pub shr: ::core::option::Option<u64>,
16368    #[prost(uint64, optional, tag="4")]
16369    pub shrink: ::core::option::Option<u64>,
16370    #[prost(int64, optional, tag="5")]
16371    pub total_scan: ::core::option::Option<i64>,
16372    #[prost(int64, optional, tag="6")]
16373    pub unused_scan: ::core::option::Option<i64>,
16374    #[prost(int32, optional, tag="7")]
16375    pub nid: ::core::option::Option<i32>,
16376}
16377#[derive(Clone, PartialEq, ::prost::Message)]
16378pub struct MmVmscanMemcgReclaimBeginFtraceEvent {
16379    #[prost(int32, optional, tag="1")]
16380    pub order: ::core::option::Option<i32>,
16381    #[prost(int32, optional, tag="2")]
16382    pub may_writepage: ::core::option::Option<i32>,
16383    #[prost(uint64, optional, tag="3")]
16384    pub gfp_flags: ::core::option::Option<u64>,
16385}
16386#[derive(Clone, PartialEq, ::prost::Message)]
16387pub struct MmVmscanMemcgReclaimEndFtraceEvent {
16388    #[prost(uint64, optional, tag="1")]
16389    pub nr_reclaimed: ::core::option::Option<u64>,
16390}
16391// End of protos/perfetto/trace/ftrace/vmscan.proto
16392
16393// Begin of protos/perfetto/trace/ftrace/workqueue.proto
16394
16395#[derive(Clone, PartialEq, ::prost::Message)]
16396pub struct WorkqueueActivateWorkFtraceEvent {
16397    #[prost(uint64, optional, tag="1")]
16398    pub work: ::core::option::Option<u64>,
16399    #[prost(uint64, optional, tag="2")]
16400    pub function: ::core::option::Option<u64>,
16401}
16402#[derive(Clone, PartialEq, ::prost::Message)]
16403pub struct WorkqueueExecuteEndFtraceEvent {
16404    #[prost(uint64, optional, tag="1")]
16405    pub work: ::core::option::Option<u64>,
16406    #[prost(uint64, optional, tag="2")]
16407    pub function: ::core::option::Option<u64>,
16408}
16409#[derive(Clone, PartialEq, ::prost::Message)]
16410pub struct WorkqueueExecuteStartFtraceEvent {
16411    #[prost(uint64, optional, tag="1")]
16412    pub work: ::core::option::Option<u64>,
16413    #[prost(uint64, optional, tag="2")]
16414    pub function: ::core::option::Option<u64>,
16415}
16416#[derive(Clone, PartialEq, ::prost::Message)]
16417pub struct WorkqueueQueueWorkFtraceEvent {
16418    #[prost(uint64, optional, tag="1")]
16419    pub work: ::core::option::Option<u64>,
16420    #[prost(uint64, optional, tag="2")]
16421    pub function: ::core::option::Option<u64>,
16422    #[prost(int32, optional, tag="4")]
16423    pub req_cpu: ::core::option::Option<i32>,
16424    #[prost(int32, optional, tag="5")]
16425    pub cpu: ::core::option::Option<i32>,
16426    #[prost(string, optional, tag="6")]
16427    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
16428}
16429// End of protos/perfetto/trace/ftrace/workqueue.proto
16430
16431// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
16432
16433#[derive(Clone, PartialEq, ::prost::Message)]
16434pub struct FtraceEvent {
16435    /// Timestamp in nanoseconds using .../tracing/trace_clock.
16436    #[prost(uint64, optional, tag="1")]
16437    pub timestamp: ::core::option::Option<u64>,
16438    /// Kernel pid (do not confuse with userspace pid aka tgid).
16439    #[prost(uint32, optional, tag="2")]
16440    pub pid: ::core::option::Option<u32>,
16441    /// Not populated in actual traces. Wire format might change.
16442    /// Placeholder declaration so that the ftrace parsing code accepts the
16443    /// existence of this common field. If this becomes needed for all events:
16444    /// consider merging with common_preempt_count to avoid extra proto tags.
16445    #[prost(uint32, optional, tag="5")]
16446    pub common_flags: ::core::option::Option<u32>,
16447    #[prost(oneof="ftrace_event::Event", tags="3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615")]
16448    pub event: ::core::option::Option<ftrace_event::Event>,
16449}
16450/// Nested message and enum types in `FtraceEvent`.
16451pub mod ftrace_event {
16452    #[derive(Clone, PartialEq, ::prost::Oneof)]
16453    pub enum Event {
16454        #[prost(message, tag="3")]
16455        Print(super::PrintFtraceEvent),
16456        #[prost(message, tag="4")]
16457        SchedSwitch(super::SchedSwitchFtraceEvent),
16458        /// removed field with id 5;
16459        /// removed field with id 6;
16460        /// removed field with id 7;
16461        /// removed field with id 8;
16462        /// removed field with id 9;
16463        /// removed field with id 10;
16464        #[prost(message, tag="11")]
16465        CpuFrequency(super::CpuFrequencyFtraceEvent),
16466        #[prost(message, tag="12")]
16467        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
16468        #[prost(message, tag="13")]
16469        CpuIdle(super::CpuIdleFtraceEvent),
16470        #[prost(message, tag="14")]
16471        ClockEnable(super::ClockEnableFtraceEvent),
16472        #[prost(message, tag="15")]
16473        ClockDisable(super::ClockDisableFtraceEvent),
16474        #[prost(message, tag="16")]
16475        ClockSetRate(super::ClockSetRateFtraceEvent),
16476        #[prost(message, tag="17")]
16477        SchedWakeup(super::SchedWakeupFtraceEvent),
16478        #[prost(message, tag="18")]
16479        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
16480        #[prost(message, tag="19")]
16481        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
16482        #[prost(message, tag="20")]
16483        SchedWaking(super::SchedWakingFtraceEvent),
16484        #[prost(message, tag="21")]
16485        IpiEntry(super::IpiEntryFtraceEvent),
16486        #[prost(message, tag="22")]
16487        IpiExit(super::IpiExitFtraceEvent),
16488        #[prost(message, tag="23")]
16489        IpiRaise(super::IpiRaiseFtraceEvent),
16490        #[prost(message, tag="24")]
16491        SoftirqEntry(super::SoftirqEntryFtraceEvent),
16492        #[prost(message, tag="25")]
16493        SoftirqExit(super::SoftirqExitFtraceEvent),
16494        #[prost(message, tag="26")]
16495        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
16496        #[prost(message, tag="27")]
16497        I2cRead(super::I2cReadFtraceEvent),
16498        #[prost(message, tag="28")]
16499        I2cWrite(super::I2cWriteFtraceEvent),
16500        #[prost(message, tag="29")]
16501        I2cResult(super::I2cResultFtraceEvent),
16502        #[prost(message, tag="30")]
16503        I2cReply(super::I2cReplyFtraceEvent),
16504        #[prost(message, tag="31")]
16505        SmbusRead(super::SmbusReadFtraceEvent),
16506        #[prost(message, tag="32")]
16507        SmbusWrite(super::SmbusWriteFtraceEvent),
16508        #[prost(message, tag="33")]
16509        SmbusResult(super::SmbusResultFtraceEvent),
16510        #[prost(message, tag="34")]
16511        SmbusReply(super::SmbusReplyFtraceEvent),
16512        #[prost(message, tag="35")]
16513        LowmemoryKill(super::LowmemoryKillFtraceEvent),
16514        #[prost(message, tag="36")]
16515        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
16516        #[prost(message, tag="37")]
16517        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
16518        #[prost(message, tag="38")]
16519        SyncPt(super::SyncPtFtraceEvent),
16520        #[prost(message, tag="39")]
16521        SyncTimeline(super::SyncTimelineFtraceEvent),
16522        #[prost(message, tag="40")]
16523        SyncWait(super::SyncWaitFtraceEvent),
16524        #[prost(message, tag="41")]
16525        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
16526        #[prost(message, tag="42")]
16527        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
16528        #[prost(message, tag="43")]
16529        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
16530        #[prost(message, tag="44")]
16531        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
16532        #[prost(message, tag="45")]
16533        BlockRqIssue(super::BlockRqIssueFtraceEvent),
16534        #[prost(message, tag="46")]
16535        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
16536        #[prost(message, tag="47")]
16537        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
16538        #[prost(message, tag="48")]
16539        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
16540        #[prost(message, tag="49")]
16541        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
16542        #[prost(message, tag="50")]
16543        BinderTransaction(super::BinderTransactionFtraceEvent),
16544        #[prost(message, tag="51")]
16545        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
16546        #[prost(message, tag="52")]
16547        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
16548        #[prost(message, tag="53")]
16549        BinderLock(super::BinderLockFtraceEvent),
16550        #[prost(message, tag="54")]
16551        BinderLocked(super::BinderLockedFtraceEvent),
16552        #[prost(message, tag="55")]
16553        BinderUnlock(super::BinderUnlockFtraceEvent),
16554        #[prost(message, tag="56")]
16555        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
16556        #[prost(message, tag="57")]
16557        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
16558        #[prost(message, tag="58")]
16559        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
16560        #[prost(message, tag="59")]
16561        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
16562        #[prost(message, tag="60")]
16563        RegulatorDisable(super::RegulatorDisableFtraceEvent),
16564        #[prost(message, tag="61")]
16565        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
16566        #[prost(message, tag="62")]
16567        RegulatorEnable(super::RegulatorEnableFtraceEvent),
16568        #[prost(message, tag="63")]
16569        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
16570        #[prost(message, tag="64")]
16571        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
16572        #[prost(message, tag="65")]
16573        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
16574        #[prost(message, tag="66")]
16575        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
16576        #[prost(message, tag="67")]
16577        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
16578        #[prost(message, tag="68")]
16579        CgroupMkdir(super::CgroupMkdirFtraceEvent),
16580        #[prost(message, tag="69")]
16581        CgroupRemount(super::CgroupRemountFtraceEvent),
16582        #[prost(message, tag="70")]
16583        CgroupRmdir(super::CgroupRmdirFtraceEvent),
16584        #[prost(message, tag="71")]
16585        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
16586        #[prost(message, tag="72")]
16587        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
16588        #[prost(message, tag="73")]
16589        CgroupRelease(super::CgroupReleaseFtraceEvent),
16590        #[prost(message, tag="74")]
16591        CgroupRename(super::CgroupRenameFtraceEvent),
16592        #[prost(message, tag="75")]
16593        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
16594        #[prost(message, tag="76")]
16595        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
16596        #[prost(message, tag="77")]
16597        MdpCommit(super::MdpCommitFtraceEvent),
16598        #[prost(message, tag="78")]
16599        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
16600        #[prost(message, tag="79")]
16601        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
16602        #[prost(message, tag="80")]
16603        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
16604        #[prost(message, tag="81")]
16605        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
16606        #[prost(message, tag="82")]
16607        MdpCompareBw(super::MdpCompareBwFtraceEvent),
16608        #[prost(message, tag="83")]
16609        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
16610        #[prost(message, tag="84")]
16611        MdpSsppSet(super::MdpSsppSetFtraceEvent),
16612        #[prost(message, tag="85")]
16613        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
16614        #[prost(message, tag="86")]
16615        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
16616        #[prost(message, tag="87")]
16617        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
16618        #[prost(message, tag="88")]
16619        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
16620        #[prost(message, tag="89")]
16621        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
16622        #[prost(message, tag="90")]
16623        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
16624        #[prost(message, tag="91")]
16625        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
16626        #[prost(message, tag="92")]
16627        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
16628        #[prost(message, tag="93")]
16629        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
16630        #[prost(message, tag="94")]
16631        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
16632        #[prost(message, tag="95")]
16633        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
16634        #[prost(message, tag="96")]
16635        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
16636        #[prost(message, tag="97")]
16637        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
16638        #[prost(message, tag="98")]
16639        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
16640        #[prost(message, tag="99")]
16641        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
16642        #[prost(message, tag="100")]
16643        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
16644        #[prost(message, tag="101")]
16645        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
16646        #[prost(message, tag="102")]
16647        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
16648        #[prost(message, tag="103")]
16649        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
16650        #[prost(message, tag="104")]
16651        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
16652        #[prost(message, tag="105")]
16653        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
16654        #[prost(message, tag="106")]
16655        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
16656        #[prost(message, tag="107")]
16657        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
16658        #[prost(message, tag="108")]
16659        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
16660        #[prost(message, tag="109")]
16661        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
16662        #[prost(message, tag="110")]
16663        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
16664        #[prost(message, tag="111")]
16665        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
16666        #[prost(message, tag="112")]
16667        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
16668        #[prost(message, tag="113")]
16669        SuspendResume(super::SuspendResumeFtraceEvent),
16670        #[prost(message, tag="114")]
16671        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
16672        #[prost(message, tag="115")]
16673        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
16674        #[prost(message, tag="116")]
16675        BlockBioBounce(super::BlockBioBounceFtraceEvent),
16676        #[prost(message, tag="117")]
16677        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
16678        #[prost(message, tag="118")]
16679        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
16680        #[prost(message, tag="119")]
16681        BlockBioQueue(super::BlockBioQueueFtraceEvent),
16682        #[prost(message, tag="120")]
16683        BlockBioRemap(super::BlockBioRemapFtraceEvent),
16684        #[prost(message, tag="121")]
16685        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
16686        #[prost(message, tag="122")]
16687        BlockGetrq(super::BlockGetrqFtraceEvent),
16688        #[prost(message, tag="123")]
16689        BlockPlug(super::BlockPlugFtraceEvent),
16690        #[prost(message, tag="124")]
16691        BlockRqAbort(super::BlockRqAbortFtraceEvent),
16692        #[prost(message, tag="125")]
16693        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
16694        #[prost(message, tag="126")]
16695        BlockRqInsert(super::BlockRqInsertFtraceEvent),
16696        /// removed field with id 127;
16697        #[prost(message, tag="128")]
16698        BlockRqRemap(super::BlockRqRemapFtraceEvent),
16699        #[prost(message, tag="129")]
16700        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
16701        #[prost(message, tag="130")]
16702        BlockSleeprq(super::BlockSleeprqFtraceEvent),
16703        #[prost(message, tag="131")]
16704        BlockSplit(super::BlockSplitFtraceEvent),
16705        #[prost(message, tag="132")]
16706        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
16707        #[prost(message, tag="133")]
16708        BlockUnplug(super::BlockUnplugFtraceEvent),
16709        #[prost(message, tag="134")]
16710        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
16711        #[prost(message, tag="135")]
16712        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
16713        #[prost(message, tag="136")]
16714        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
16715        #[prost(message, tag="137")]
16716        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
16717        #[prost(message, tag="138")]
16718        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
16719        #[prost(message, tag="139")]
16720        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
16721        #[prost(message, tag="140")]
16722        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
16723        #[prost(message, tag="141")]
16724        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
16725        #[prost(message, tag="142")]
16726        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
16727        #[prost(message, tag="143")]
16728        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
16729        #[prost(message, tag="144")]
16730        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
16731        #[prost(message, tag="145")]
16732        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
16733        #[prost(message, tag="146")]
16734        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
16735        #[prost(message, tag="147")]
16736        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
16737        #[prost(message, tag="148")]
16738        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
16739        #[prost(message, tag="149")]
16740        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
16741        #[prost(message, tag="150")]
16742        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
16743        #[prost(message, tag="151")]
16744        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
16745        #[prost(message, tag="152")]
16746        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
16747        #[prost(message, tag="153")]
16748        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
16749        #[prost(message, tag="154")]
16750        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
16751        #[prost(message, tag="155")]
16752        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
16753        #[prost(message, tag="156")]
16754        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
16755        #[prost(message, tag="157")]
16756        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
16757        #[prost(message, tag="158")]
16758        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
16759        #[prost(message, tag="159")]
16760        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
16761        #[prost(message, tag="160")]
16762        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
16763        #[prost(message, tag="161")]
16764        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
16765        #[prost(message, tag="162")]
16766        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
16767        #[prost(message, tag="163")]
16768        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
16769        #[prost(message, tag="164")]
16770        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
16771        #[prost(message, tag="165")]
16772        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
16773        #[prost(message, tag="166")]
16774        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
16775        #[prost(message, tag="167")]
16776        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
16777        #[prost(message, tag="168")]
16778        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
16779        #[prost(message, tag="169")]
16780        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
16781        #[prost(message, tag="170")]
16782        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
16783        #[prost(message, tag="171")]
16784        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
16785        #[prost(message, tag="172")]
16786        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
16787        #[prost(message, tag="173")]
16788        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
16789        #[prost(message, tag="174")]
16790        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
16791        #[prost(message, tag="175")]
16792        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
16793        #[prost(message, tag="176")]
16794        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
16795        #[prost(message, tag="177")]
16796        Ext4Forget(super::Ext4ForgetFtraceEvent),
16797        #[prost(message, tag="178")]
16798        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
16799        #[prost(message, tag="179")]
16800        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
16801        #[prost(message, tag="180")]
16802        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
16803        #[prost(message, tag="181")]
16804        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
16805        #[prost(message, tag="182")]
16806        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
16807        #[prost(message, tag="183")]
16808        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
16809        #[prost(message, tag="184")]
16810        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
16811        #[prost(message, tag="185")]
16812        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
16813        #[prost(message, tag="186")]
16814        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
16815        #[prost(message, tag="187")]
16816        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
16817        #[prost(message, tag="188")]
16818        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
16819        #[prost(message, tag="189")]
16820        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
16821        #[prost(message, tag="190")]
16822        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
16823        #[prost(message, tag="191")]
16824        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
16825        #[prost(message, tag="192")]
16826        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
16827        #[prost(message, tag="193")]
16828        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
16829        #[prost(message, tag="194")]
16830        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
16831        #[prost(message, tag="195")]
16832        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
16833        #[prost(message, tag="196")]
16834        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
16835        #[prost(message, tag="197")]
16836        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
16837        #[prost(message, tag="198")]
16838        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
16839        #[prost(message, tag="199")]
16840        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
16841        #[prost(message, tag="200")]
16842        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
16843        #[prost(message, tag="201")]
16844        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
16845        #[prost(message, tag="202")]
16846        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
16847        #[prost(message, tag="203")]
16848        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
16849        #[prost(message, tag="204")]
16850        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
16851        #[prost(message, tag="205")]
16852        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
16853        #[prost(message, tag="206")]
16854        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
16855        #[prost(message, tag="207")]
16856        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
16857        #[prost(message, tag="208")]
16858        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
16859        #[prost(message, tag="209")]
16860        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
16861        #[prost(message, tag="210")]
16862        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
16863        #[prost(message, tag="211")]
16864        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
16865        #[prost(message, tag="212")]
16866        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
16867        #[prost(message, tag="213")]
16868        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
16869        #[prost(message, tag="214")]
16870        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
16871        #[prost(message, tag="215")]
16872        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
16873        #[prost(message, tag="216")]
16874        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
16875        #[prost(message, tag="217")]
16876        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
16877        #[prost(message, tag="218")]
16878        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
16879        #[prost(message, tag="219")]
16880        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
16881        /// removed field with id 220;
16882        /// removed field with id 221;
16883        /// removed field with id 222;
16884        /// removed field with id 223;
16885        /// removed field with id 224;
16886        /// removed field with id 225;
16887        /// removed field with id 226;
16888        /// removed field with id 227;
16889        /// removed field with id 228;
16890        /// removed field with id 229;
16891        #[prost(message, tag="230")]
16892        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
16893        #[prost(message, tag="231")]
16894        Ext4Writepage(super::Ext4WritepageFtraceEvent),
16895        #[prost(message, tag="232")]
16896        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
16897        #[prost(message, tag="233")]
16898        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
16899        #[prost(message, tag="234")]
16900        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
16901        #[prost(message, tag="235")]
16902        TaskNewtask(super::TaskNewtaskFtraceEvent),
16903        #[prost(message, tag="236")]
16904        TaskRename(super::TaskRenameFtraceEvent),
16905        #[prost(message, tag="237")]
16906        SchedProcessExec(super::SchedProcessExecFtraceEvent),
16907        #[prost(message, tag="238")]
16908        SchedProcessExit(super::SchedProcessExitFtraceEvent),
16909        #[prost(message, tag="239")]
16910        SchedProcessFork(super::SchedProcessForkFtraceEvent),
16911        #[prost(message, tag="240")]
16912        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
16913        #[prost(message, tag="241")]
16914        SchedProcessHang(super::SchedProcessHangFtraceEvent),
16915        #[prost(message, tag="242")]
16916        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
16917        #[prost(message, tag="243")]
16918        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
16919        #[prost(message, tag="244")]
16920        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
16921        #[prost(message, tag="245")]
16922        F2fsFallocate(super::F2fsFallocateFtraceEvent),
16923        #[prost(message, tag="246")]
16924        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
16925        #[prost(message, tag="247")]
16926        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
16927        #[prost(message, tag="248")]
16928        F2fsIget(super::F2fsIgetFtraceEvent),
16929        #[prost(message, tag="249")]
16930        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
16931        #[prost(message, tag="250")]
16932        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
16933        #[prost(message, tag="251")]
16934        F2fsReadpage(super::F2fsReadpageFtraceEvent),
16935        #[prost(message, tag="252")]
16936        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
16937        #[prost(message, tag="253")]
16938        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
16939        #[prost(message, tag="254")]
16940        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
16941        #[prost(message, tag="255")]
16942        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
16943        #[prost(message, tag="256")]
16944        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
16945        #[prost(message, tag="257")]
16946        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
16947        #[prost(message, tag="258")]
16948        F2fsTruncate(super::F2fsTruncateFtraceEvent),
16949        #[prost(message, tag="259")]
16950        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
16951        #[prost(message, tag="260")]
16952        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
16953        #[prost(message, tag="261")]
16954        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
16955        #[prost(message, tag="262")]
16956        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
16957        #[prost(message, tag="263")]
16958        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
16959        #[prost(message, tag="264")]
16960        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
16961        #[prost(message, tag="265")]
16962        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
16963        #[prost(message, tag="266")]
16964        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
16965        #[prost(message, tag="267")]
16966        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
16967        #[prost(message, tag="268")]
16968        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
16969        #[prost(message, tag="269")]
16970        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
16971        #[prost(message, tag="270")]
16972        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
16973        #[prost(message, tag="271")]
16974        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
16975        #[prost(message, tag="272")]
16976        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
16977        #[prost(message, tag="273")]
16978        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
16979        #[prost(message, tag="274")]
16980        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
16981        #[prost(message, tag="275")]
16982        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
16983        #[prost(message, tag="276")]
16984        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
16985        #[prost(message, tag="277")]
16986        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
16987        #[prost(message, tag="278")]
16988        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
16989        #[prost(message, tag="279")]
16990        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
16991        #[prost(message, tag="280")]
16992        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
16993        #[prost(message, tag="281")]
16994        IommuMapRange(super::IommuMapRangeFtraceEvent),
16995        #[prost(message, tag="282")]
16996        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
16997        #[prost(message, tag="283")]
16998        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
16999        #[prost(message, tag="284")]
17000        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17001        #[prost(message, tag="285")]
17002        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17003        #[prost(message, tag="286")]
17004        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17005        #[prost(message, tag="287")]
17006        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17007        #[prost(message, tag="288")]
17008        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17009        #[prost(message, tag="289")]
17010        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17011        #[prost(message, tag="290")]
17012        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17013        #[prost(message, tag="291")]
17014        IonPrefetching(super::IonPrefetchingFtraceEvent),
17015        #[prost(message, tag="292")]
17016        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17017        #[prost(message, tag="293")]
17018        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17019        #[prost(message, tag="294")]
17020        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17021        #[prost(message, tag="295")]
17022        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17023        #[prost(message, tag="296")]
17024        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17025        #[prost(message, tag="297")]
17026        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17027        #[prost(message, tag="298")]
17028        Kfree(super::KfreeFtraceEvent),
17029        #[prost(message, tag="299")]
17030        Kmalloc(super::KmallocFtraceEvent),
17031        #[prost(message, tag="300")]
17032        KmallocNode(super::KmallocNodeFtraceEvent),
17033        #[prost(message, tag="301")]
17034        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17035        #[prost(message, tag="302")]
17036        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17037        #[prost(message, tag="303")]
17038        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17039        #[prost(message, tag="304")]
17040        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17041        #[prost(message, tag="305")]
17042        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17043        #[prost(message, tag="306")]
17044        MigrateRetry(super::MigrateRetryFtraceEvent),
17045        #[prost(message, tag="307")]
17046        MmPageAlloc(super::MmPageAllocFtraceEvent),
17047        #[prost(message, tag="308")]
17048        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17049        #[prost(message, tag="309")]
17050        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17051        #[prost(message, tag="310")]
17052        MmPageFree(super::MmPageFreeFtraceEvent),
17053        #[prost(message, tag="311")]
17054        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17055        #[prost(message, tag="312")]
17056        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17057        #[prost(message, tag="313")]
17058        RssStat(super::RssStatFtraceEvent),
17059        #[prost(message, tag="314")]
17060        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17061        #[prost(message, tag="315")]
17062        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17063        #[prost(message, tag="316")]
17064        FenceInit(super::FenceInitFtraceEvent),
17065        #[prost(message, tag="317")]
17066        FenceDestroy(super::FenceDestroyFtraceEvent),
17067        #[prost(message, tag="318")]
17068        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17069        #[prost(message, tag="319")]
17070        FenceSignaled(super::FenceSignaledFtraceEvent),
17071        #[prost(message, tag="320")]
17072        ClkEnable(super::ClkEnableFtraceEvent),
17073        #[prost(message, tag="321")]
17074        ClkDisable(super::ClkDisableFtraceEvent),
17075        #[prost(message, tag="322")]
17076        ClkSetRate(super::ClkSetRateFtraceEvent),
17077        #[prost(message, tag="323")]
17078        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17079        #[prost(message, tag="324")]
17080        SignalDeliver(super::SignalDeliverFtraceEvent),
17081        #[prost(message, tag="325")]
17082        SignalGenerate(super::SignalGenerateFtraceEvent),
17083        #[prost(message, tag="326")]
17084        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17085        #[prost(message, tag="327")]
17086        Generic(super::GenericFtraceEvent),
17087        #[prost(message, tag="328")]
17088        MmEventRecord(super::MmEventRecordFtraceEvent),
17089        #[prost(message, tag="329")]
17090        SysEnter(super::SysEnterFtraceEvent),
17091        #[prost(message, tag="330")]
17092        SysExit(super::SysExitFtraceEvent),
17093        #[prost(message, tag="331")]
17094        Zero(super::ZeroFtraceEvent),
17095        #[prost(message, tag="332")]
17096        GpuFrequency(super::GpuFrequencyFtraceEvent),
17097        #[prost(message, tag="333")]
17098        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
17099        #[prost(message, tag="334")]
17100        MarkVictim(super::MarkVictimFtraceEvent),
17101        #[prost(message, tag="335")]
17102        IonStat(super::IonStatFtraceEvent),
17103        #[prost(message, tag="336")]
17104        IonBufferCreate(super::IonBufferCreateFtraceEvent),
17105        #[prost(message, tag="337")]
17106        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
17107        #[prost(message, tag="338")]
17108        ScmCallStart(super::ScmCallStartFtraceEvent),
17109        #[prost(message, tag="339")]
17110        ScmCallEnd(super::ScmCallEndFtraceEvent),
17111        #[prost(message, tag="340")]
17112        GpuMemTotal(super::GpuMemTotalFtraceEvent),
17113        #[prost(message, tag="341")]
17114        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
17115        #[prost(message, tag="342")]
17116        CdevUpdate(super::CdevUpdateFtraceEvent),
17117        #[prost(message, tag="343")]
17118        CpuhpExit(super::CpuhpExitFtraceEvent),
17119        #[prost(message, tag="344")]
17120        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
17121        #[prost(message, tag="345")]
17122        CpuhpEnter(super::CpuhpEnterFtraceEvent),
17123        #[prost(message, tag="346")]
17124        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
17125        #[prost(message, tag="347")]
17126        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
17127        #[prost(message, tag="348")]
17128        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
17129        #[prost(message, tag="349")]
17130        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
17131        #[prost(message, tag="350")]
17132        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
17133        #[prost(message, tag="351")]
17134        DmaHeapStat(super::DmaHeapStatFtraceEvent),
17135        #[prost(message, tag="352")]
17136        CpuhpPause(super::CpuhpPauseFtraceEvent),
17137        #[prost(message, tag="353")]
17138        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
17139        #[prost(message, tag="354")]
17140        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
17141        #[prost(message, tag="355")]
17142        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
17143        #[prost(message, tag="356")]
17144        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
17145        #[prost(message, tag="357")]
17146        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
17147        #[prost(message, tag="358")]
17148        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
17149        #[prost(message, tag="359")]
17150        RssStatThrottled(super::RssStatThrottledFtraceEvent),
17151        #[prost(message, tag="360")]
17152        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
17153        #[prost(message, tag="361")]
17154        NetDevXmit(super::NetDevXmitFtraceEvent),
17155        #[prost(message, tag="362")]
17156        InetSockSetState(super::InetSockSetStateFtraceEvent),
17157        #[prost(message, tag="363")]
17158        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
17159        #[prost(message, tag="364")]
17160        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
17161        #[prost(message, tag="365")]
17162        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
17163        #[prost(message, tag="366")]
17164        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
17165        #[prost(message, tag="367")]
17166        KfreeSkb(super::KfreeSkbFtraceEvent),
17167        #[prost(message, tag="368")]
17168        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
17169        #[prost(message, tag="369")]
17170        KvmAckIrq(super::KvmAckIrqFtraceEvent),
17171        #[prost(message, tag="370")]
17172        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
17173        #[prost(message, tag="371")]
17174        KvmAgePage(super::KvmAgePageFtraceEvent),
17175        #[prost(message, tag="372")]
17176        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
17177        #[prost(message, tag="373")]
17178        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
17179        #[prost(message, tag="374")]
17180        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
17181        #[prost(message, tag="375")]
17182        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
17183        #[prost(message, tag="376")]
17184        KvmEntry(super::KvmEntryFtraceEvent),
17185        #[prost(message, tag="377")]
17186        KvmExit(super::KvmExitFtraceEvent),
17187        #[prost(message, tag="378")]
17188        KvmFpu(super::KvmFpuFtraceEvent),
17189        #[prost(message, tag="379")]
17190        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17191        #[prost(message, tag="380")]
17192        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17193        #[prost(message, tag="381")]
17194        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17195        #[prost(message, tag="382")]
17196        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17197        #[prost(message, tag="383")]
17198        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17199        #[prost(message, tag="384")]
17200        KvmMmio(super::KvmMmioFtraceEvent),
17201        #[prost(message, tag="385")]
17202        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17203        #[prost(message, tag="386")]
17204        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17205        #[prost(message, tag="387")]
17206        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17207        #[prost(message, tag="388")]
17208        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17209        #[prost(message, tag="389")]
17210        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17211        #[prost(message, tag="390")]
17212        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17213        #[prost(message, tag="391")]
17214        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17215        #[prost(message, tag="392")]
17216        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17217        #[prost(message, tag="393")]
17218        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17219        #[prost(message, tag="394")]
17220        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17221        #[prost(message, tag="395")]
17222        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17223        #[prost(message, tag="396")]
17224        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17225        #[prost(message, tag="397")]
17226        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17227        #[prost(message, tag="398")]
17228        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17229        #[prost(message, tag="399")]
17230        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17231        #[prost(message, tag="400")]
17232        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17233        #[prost(message, tag="401")]
17234        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17235        #[prost(message, tag="402")]
17236        TrapReg(super::TrapRegFtraceEvent),
17237        #[prost(message, tag="403")]
17238        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17239        #[prost(message, tag="404")]
17240        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17241        #[prost(message, tag="405")]
17242        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17243        #[prost(message, tag="406")]
17244        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17245        #[prost(message, tag="407")]
17246        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17247        #[prost(message, tag="408")]
17248        Console(super::ConsoleFtraceEvent),
17249        #[prost(message, tag="409")]
17250        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17251        #[prost(message, tag="410")]
17252        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17253        #[prost(message, tag="411")]
17254        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17255        #[prost(message, tag="412")]
17256        DrmRunJob(super::DrmRunJobFtraceEvent),
17257        #[prost(message, tag="413")]
17258        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17259        #[prost(message, tag="414")]
17260        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17261        #[prost(message, tag="415")]
17262        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17263        #[prost(message, tag="416")]
17264        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17265        #[prost(message, tag="417")]
17266        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17267        #[prost(message, tag="418")]
17268        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17269        #[prost(message, tag="419")]
17270        F2fsIostat(super::F2fsIostatFtraceEvent),
17271        #[prost(message, tag="420")]
17272        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17273        #[prost(message, tag="421")]
17274        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17275        #[prost(message, tag="422")]
17276        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17277        #[prost(message, tag="423")]
17278        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17279        #[prost(message, tag="424")]
17280        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17281        #[prost(message, tag="425")]
17282        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17283        #[prost(message, tag="426")]
17284        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17285        #[prost(message, tag="427")]
17286        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17287        #[prost(message, tag="428")]
17288        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17289        #[prost(message, tag="429")]
17290        DsiRx(super::DsiRxFtraceEvent),
17291        #[prost(message, tag="430")]
17292        DsiTx(super::DsiTxFtraceEvent),
17293        #[prost(message, tag="431")]
17294        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17295        #[prost(message, tag="432")]
17296        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17297        #[prost(message, tag="433")]
17298        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17299        #[prost(message, tag="434")]
17300        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17301        #[prost(message, tag="435")]
17302        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17303        #[prost(message, tag="436")]
17304        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17305        #[prost(message, tag="437")]
17306        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17307        #[prost(message, tag="438")]
17308        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17309        #[prost(message, tag="439")]
17310        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17311        #[prost(message, tag="440")]
17312        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17313        #[prost(message, tag="441")]
17314        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17315        #[prost(message, tag="442")]
17316        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17317        #[prost(message, tag="443")]
17318        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17319        #[prost(message, tag="444")]
17320        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17321        #[prost(message, tag="445")]
17322        TrustySmc(super::TrustySmcFtraceEvent),
17323        #[prost(message, tag="446")]
17324        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17325        #[prost(message, tag="447")]
17326        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17327        #[prost(message, tag="448")]
17328        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17329        #[prost(message, tag="449")]
17330        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17331        #[prost(message, tag="450")]
17332        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17333        #[prost(message, tag="451")]
17334        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17335        #[prost(message, tag="452")]
17336        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17337        #[prost(message, tag="453")]
17338        TrustyIrq(super::TrustyIrqFtraceEvent),
17339        #[prost(message, tag="454")]
17340        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17341        #[prost(message, tag="455")]
17342        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17343        #[prost(message, tag="456")]
17344        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17345        #[prost(message, tag="457")]
17346        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17347        #[prost(message, tag="458")]
17348        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17349        /// removed field with id 459;
17350        #[prost(message, tag="460")]
17351        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17352        #[prost(message, tag="461")]
17353        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17354        #[prost(message, tag="462")]
17355        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17356        /// removed field with id 463;
17357        #[prost(message, tag="464")]
17358        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17359        #[prost(message, tag="465")]
17360        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17361        #[prost(message, tag="466")]
17362        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17363        #[prost(message, tag="467")]
17364        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17365        #[prost(message, tag="468")]
17366        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17367        #[prost(message, tag="469")]
17368        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17369        #[prost(message, tag="470")]
17370        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17371        #[prost(message, tag="471")]
17372        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17373        #[prost(message, tag="472")]
17374        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17375        #[prost(message, tag="473")]
17376        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17377        #[prost(message, tag="474")]
17378        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17379        #[prost(message, tag="475")]
17380        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
17381        #[prost(message, tag="476")]
17382        HypEnter(super::HypEnterFtraceEvent),
17383        #[prost(message, tag="477")]
17384        HypExit(super::HypExitFtraceEvent),
17385        #[prost(message, tag="478")]
17386        HostHcall(super::HostHcallFtraceEvent),
17387        #[prost(message, tag="479")]
17388        HostSmc(super::HostSmcFtraceEvent),
17389        #[prost(message, tag="480")]
17390        HostMemAbort(super::HostMemAbortFtraceEvent),
17391        #[prost(message, tag="481")]
17392        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
17393        #[prost(message, tag="482")]
17394        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
17395        #[prost(message, tag="483")]
17396        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
17397        #[prost(message, tag="484")]
17398        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
17399        #[prost(message, tag="485")]
17400        BinderCommand(super::BinderCommandFtraceEvent),
17401        #[prost(message, tag="486")]
17402        BinderReturn(super::BinderReturnFtraceEvent),
17403        #[prost(message, tag="487")]
17404        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
17405        #[prost(message, tag="488")]
17406        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
17407        #[prost(message, tag="489")]
17408        RpmStatus(super::RpmStatusFtraceEvent),
17409        #[prost(message, tag="490")]
17410        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
17411        #[prost(message, tag="491")]
17412        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
17413        #[prost(message, tag="492")]
17414        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
17415        #[prost(message, tag="493")]
17416        DpuDsiRx(super::DpuDsiRxFtraceEvent),
17417        #[prost(message, tag="494")]
17418        DpuDsiTx(super::DpuDsiTxFtraceEvent),
17419        #[prost(message, tag="495")]
17420        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
17421        #[prost(message, tag="496")]
17422        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
17423        #[prost(message, tag="497")]
17424        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
17425        #[prost(message, tag="498")]
17426        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
17427        #[prost(message, tag="499")]
17428        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
17429        #[prost(message, tag="500")]
17430        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
17431        #[prost(message, tag="501")]
17432        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
17433        #[prost(message, tag="502")]
17434        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
17435        #[prost(message, tag="503")]
17436        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
17437        #[prost(message, tag="504")]
17438        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
17439        #[prost(message, tag="505")]
17440        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
17441        #[prost(message, tag="506")]
17442        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
17443        #[prost(message, tag="507")]
17444        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
17445        #[prost(message, tag="508")]
17446        DcvshFreq(super::DcvshFreqFtraceEvent),
17447        #[prost(message, tag="509")]
17448        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
17449        #[prost(message, tag="510")]
17450        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
17451        #[prost(message, tag="511")]
17452        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
17453        #[prost(message, tag="512")]
17454        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
17455        #[prost(message, tag="513")]
17456        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
17457        #[prost(message, tag="514")]
17458        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
17459        #[prost(message, tag="515")]
17460        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
17461        #[prost(message, tag="516")]
17462        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
17463        #[prost(message, tag="517")]
17464        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
17465        #[prost(message, tag="518")]
17466        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
17467        #[prost(message, tag="519")]
17468        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
17469        #[prost(message, tag="520")]
17470        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
17471        #[prost(message, tag="521")]
17472        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
17473        #[prost(message, tag="522")]
17474        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
17475        #[prost(message, tag="523")]
17476        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
17477        #[prost(message, tag="524")]
17478        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
17479        #[prost(message, tag="525")]
17480        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
17481        #[prost(message, tag="526")]
17482        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
17483        #[prost(message, tag="527")]
17484        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
17485        #[prost(message, tag="528")]
17486        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
17487        #[prost(message, tag="529")]
17488        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
17489        #[prost(message, tag="530")]
17490        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
17491        #[prost(message, tag="531")]
17492        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
17493        #[prost(message, tag="532")]
17494        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
17495        #[prost(message, tag="533")]
17496        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
17497        #[prost(message, tag="534")]
17498        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
17499        #[prost(message, tag="535")]
17500        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
17501        #[prost(message, tag="536")]
17502        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
17503        #[prost(message, tag="537")]
17504        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
17505        #[prost(message, tag="538")]
17506        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
17507        #[prost(message, tag="539")]
17508        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
17509        #[prost(message, tag="540")]
17510        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
17511        #[prost(message, tag="541")]
17512        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
17513        #[prost(message, tag="542")]
17514        KprobeEvent(super::KprobeEvent),
17515        #[prost(message, tag="543")]
17516        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
17517        #[prost(message, tag="544")]
17518        DoSysOpen(super::DoSysOpenFtraceEvent),
17519        #[prost(message, tag="545")]
17520        OpenExec(super::OpenExecFtraceEvent),
17521        #[prost(message, tag="546")]
17522        BlockIoStart(super::BlockIoStartFtraceEvent),
17523        #[prost(message, tag="547")]
17524        BlockIoDone(super::BlockIoDoneFtraceEvent),
17525        #[prost(message, tag="548")]
17526        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
17527        #[prost(message, tag="549")]
17528        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
17529        #[prost(message, tag="550")]
17530        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
17531        #[prost(message, tag="551")]
17532        HrtimerStart(super::HrtimerStartFtraceEvent),
17533        #[prost(message, tag="552")]
17534        HrtimerCancel(super::HrtimerCancelFtraceEvent),
17535        #[prost(message, tag="553")]
17536        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
17537        #[prost(message, tag="554")]
17538        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
17539        #[prost(message, tag="555")]
17540        TimerStart(super::TimerStartFtraceEvent),
17541        #[prost(message, tag="556")]
17542        TimerCancel(super::TimerCancelFtraceEvent),
17543        #[prost(message, tag="557")]
17544        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
17545        #[prost(message, tag="558")]
17546        TimerExpireExit(super::TimerExpireExitFtraceEvent),
17547        #[prost(message, tag="559")]
17548        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
17549        #[prost(message, tag="560")]
17550        LocalTimerExit(super::LocalTimerExitFtraceEvent),
17551        #[prost(message, tag="561")]
17552        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
17553        #[prost(message, tag="562")]
17554        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
17555        #[prost(message, tag="563")]
17556        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
17557        #[prost(message, tag="564")]
17558        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
17559        #[prost(message, tag="565")]
17560        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
17561        #[prost(message, tag="566")]
17562        Dwc3Event(super::Dwc3EventFtraceEvent),
17563        #[prost(message, tag="567")]
17564        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
17565        #[prost(message, tag="568")]
17566        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
17567        #[prost(message, tag="569")]
17568        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
17569        #[prost(message, tag="570")]
17570        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
17571        #[prost(message, tag="571")]
17572        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
17573        #[prost(message, tag="572")]
17574        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
17575        #[prost(message, tag="573")]
17576        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
17577        #[prost(message, tag="574")]
17578        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
17579        #[prost(message, tag="575")]
17580        Dwc3Writel(super::Dwc3WritelFtraceEvent),
17581        #[prost(message, tag="576")]
17582        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
17583        #[prost(message, tag="577")]
17584        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
17585        #[prost(message, tag="578")]
17586        HostFfaCall(super::HostFfaCallFtraceEvent),
17587        #[prost(message, tag="579")]
17588        DmabufRssStat(super::DmabufRssStatFtraceEvent),
17589        #[prost(message, tag="580")]
17590        IommuIdmap(super::IommuIdmapFtraceEvent),
17591        #[prost(message, tag="581")]
17592        PsciMemProtect(super::PsciMemProtectFtraceEvent),
17593        #[prost(message, tag="582")]
17594        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
17595        #[prost(message, tag="583")]
17596        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
17597        #[prost(message, tag="584")]
17598        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
17599        #[prost(message, tag="585")]
17600        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
17601        #[prost(message, tag="586")]
17602        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
17603        #[prost(message, tag="587")]
17604        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
17605        #[prost(message, tag="588")]
17606        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
17607        #[prost(message, tag="589")]
17608        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
17609        #[prost(message, tag="590")]
17610        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
17611        #[prost(message, tag="591")]
17612        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
17613        #[prost(message, tag="592")]
17614        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
17615        #[prost(message, tag="593")]
17616        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
17617        #[prost(message, tag="594")]
17618        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
17619        #[prost(message, tag="595")]
17620        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
17621        #[prost(message, tag="596")]
17622        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
17623        #[prost(message, tag="597")]
17624        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
17625        #[prost(message, tag="598")]
17626        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
17627        #[prost(message, tag="599")]
17628        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
17629        #[prost(message, tag="600")]
17630        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
17631        #[prost(message, tag="601")]
17632        GpuPowerState(super::GpuPowerStateFtraceEvent),
17633        #[prost(message, tag="602")]
17634        GramCollision(super::GramCollisionFtraceEvent),
17635        #[prost(message, tag="603")]
17636        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
17637        #[prost(message, tag="604")]
17638        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
17639        #[prost(message, tag="605")]
17640        DpuDispFrameDoneTimeout(super::DpuDispFrameDoneTimeoutFtraceEvent),
17641        #[prost(message, tag="606")]
17642        DpuDispFrameStartTimeout(super::DpuDispFrameStartTimeoutFtraceEvent),
17643        #[prost(message, tag="607")]
17644        MmVmscanMemcgReclaimBegin(super::MmVmscanMemcgReclaimBeginFtraceEvent),
17645        #[prost(message, tag="608")]
17646        MmVmscanMemcgReclaimEnd(super::MmVmscanMemcgReclaimEndFtraceEvent),
17647        #[prost(message, tag="609")]
17648        DpuDispFrameDoneMissing(super::DpuDispFrameDoneMissingFtraceEvent),
17649        #[prost(message, tag="610")]
17650        DpuDispFrameStartMissing(super::DpuDispFrameStartMissingFtraceEvent),
17651        #[prost(message, tag="611")]
17652        PanelSettingsFull(super::PanelSettingsFullFtraceEvent),
17653        #[prost(message, tag="612")]
17654        PanelSettingsLite(super::PanelSettingsLiteFtraceEvent),
17655        #[prost(message, tag="613")]
17656        DpuDispDpuLineUnderrun(super::DpuDispDpuLineUnderrunFtraceEvent),
17657        #[prost(message, tag="614")]
17658        PsciDomainIdleExit(super::PsciDomainIdleExitFtraceEvent),
17659        #[prost(message, tag="615")]
17660        PsciDomainIdleEnter(super::PsciDomainIdleEnterFtraceEvent),
17661    }
17662}
17663// End of protos/perfetto/trace/ftrace/ftrace_event.proto
17664
17665// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
17666
17667/// Per-CPU kernel buffer stats for the ftrace data source gathered from
17668/// /sys/kernel/tracing/per_cpu/cpuX/stats.
17669#[derive(Clone, PartialEq, ::prost::Message)]
17670pub struct FtraceCpuStats {
17671    /// CPU index.
17672    #[prost(uint64, optional, tag="1")]
17673    pub cpu: ::core::option::Option<u64>,
17674    /// Number of entries currently in the kernel buffer.
17675    #[prost(uint64, optional, tag="2")]
17676    pub entries: ::core::option::Option<u64>,
17677    /// Number of events lost in kernel buffers due to overwriting of old events
17678    /// before userspace had a chance to drain them. Valid if the buffer is in
17679    /// "overwrite" mode, otherwise see |dropped_events|.
17680    #[prost(uint64, optional, tag="3")]
17681    pub overrun: ::core::option::Option<u64>,
17682    /// This should always be zero. If not the buffer size is way too small or
17683    /// something went wrong with the tracer. Quoting the kernel: "number of
17684    /// commits failing due to the buffer wrapping around while there are
17685    /// uncommitted events, such as during an interrupt storm".
17686    #[prost(uint64, optional, tag="4")]
17687    pub commit_overrun: ::core::option::Option<u64>,
17688    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
17689    /// The field should be named "bytes", but is misnamed for historical reasons.
17690    /// This value has known inaccuracies before Linux v6.6:
17691    /// <https://github.com/torvalds/linux/commit/45d99ea>
17692    #[prost(uint64, optional, tag="5")]
17693    pub bytes_read: ::core::option::Option<u64>,
17694    /// The timestamp for the oldest event still in the ring buffer.
17695    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17696    #[prost(double, optional, tag="6")]
17697    pub oldest_event_ts: ::core::option::Option<f64>,
17698    /// The current timestamp.
17699    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17700    #[prost(double, optional, tag="7")]
17701    pub now_ts: ::core::option::Option<f64>,
17702    /// If the kernel buffer has overwrite mode disabled, this will show the number
17703    /// of new events that were lost because the buffer was full. This is similar
17704    /// to |overrun| but only for the overwrite=false case.
17705    #[prost(uint64, optional, tag="8")]
17706    pub dropped_events: ::core::option::Option<u64>,
17707    /// The number of events read (consumed) from the buffer by userspace.
17708    #[prost(uint64, optional, tag="9")]
17709    pub read_events: ::core::option::Option<u64>,
17710}
17711/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
17712#[derive(Clone, PartialEq, ::prost::Message)]
17713pub struct FtraceKprobeStats {
17714    /// Cumulative number of kprobe events generated for this function
17715    #[prost(int64, optional, tag="1")]
17716    pub hits: ::core::option::Option<i64>,
17717    /// Cumulative number of kprobe events that could not be generated for this
17718    /// function and were missed.  This happens when too much nesting
17719    /// happens between a kprobe and its kretprobe, overflowing the
17720    /// maxactives buffer.
17721    #[prost(int64, optional, tag="2")]
17722    pub misses: ::core::option::Option<i64>,
17723}
17724/// Errors and kernel buffer stats for the ftrace data source.
17725#[derive(Clone, PartialEq, ::prost::Message)]
17726pub struct FtraceStats {
17727    /// A pair of FtraceStats is written on every trace flush:
17728    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
17729    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
17730    ///                   before this packet was written. For simple traces this
17731    ///                   will be once at the end of the trace.
17732    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
17733    pub phase: ::core::option::Option<i32>,
17734    /// Per-CPU stats (one entry for each CPU).
17735    #[prost(message, repeated, tag="2")]
17736    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
17737    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
17738    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
17739    /// trace or not. It can be used to debug kptr_restrict or security-related
17740    /// errors.
17741    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
17742    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
17743    #[prost(uint32, optional, tag="3")]
17744    pub kernel_symbols_parsed: ::core::option::Option<u32>,
17745    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
17746    #[prost(uint32, optional, tag="4")]
17747    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
17748    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
17749    /// one or more atrace categories not available on the device.
17750    #[prost(string, optional, tag="5")]
17751    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
17752    /// Error message due to exclusivity violation of a single-tenant feature.
17753    #[prost(string, optional, tag="13")]
17754    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
17755    /// Ftrace events requested by the config but not present on device.
17756    #[prost(string, repeated, tag="6")]
17757    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17758    /// Ftrace events requested by the config and present on device, but which we
17759    /// failed to enable due to permissions, or due to a conflicting option
17760    /// (currently FtraceConfig.disable_generic_events).
17761    #[prost(string, repeated, tag="7")]
17762    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17763    /// The data source was configured to preserve existing events in the ftrace
17764    /// buffer before the start of the trace.
17765    #[prost(bool, optional, tag="8")]
17766    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
17767    /// Unique errors encountered during reading and parsing of the raw ftrace
17768    /// data. Ring buffer ABI related errors will also be recorded in the
17769    /// affected FtraceEventBundles with a timestamp.
17770    /// Any traces with entries in this field should be investigated, as they
17771    /// indicate a bug in perfetto or the kernel.
17772    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
17773    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
17774    /// Kprobe profile stats for functions hits and misses
17775    #[prost(message, optional, tag="10")]
17776    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
17777    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
17778    /// Added in: perfetto v52.
17779    #[prost(uint32, optional, tag="11")]
17780    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
17781    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
17782    /// on the value we're writing into the tracefs control file. Might not be
17783    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
17784    /// scratch pages (and/or other factors). Added in: perfetto v52.
17785    #[prost(uint32, optional, tag="12")]
17786    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
17787}
17788/// Nested message and enum types in `FtraceStats`.
17789pub mod ftrace_stats {
17790    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17791    #[repr(i32)]
17792    pub enum Phase {
17793        Unspecified = 0,
17794        StartOfTrace = 1,
17795        EndOfTrace = 2,
17796    }
17797    impl Phase {
17798        /// String value of the enum field names used in the ProtoBuf definition.
17799        ///
17800        /// The values are not transformed in any way and thus are considered stable
17801        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17802        pub fn as_str_name(&self) -> &'static str {
17803            match self {
17804                Phase::Unspecified => "UNSPECIFIED",
17805                Phase::StartOfTrace => "START_OF_TRACE",
17806                Phase::EndOfTrace => "END_OF_TRACE",
17807            }
17808        }
17809    }
17810}
17811// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
17812
17813// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17814
17815/// The result of tracing one or more ftrace data pages from a single per-cpu
17816/// kernel ring buffer. If collating multiple pages' worth of events, all of
17817/// them come from contiguous pages, with no kernel data loss in between.
17818#[derive(Clone, PartialEq, ::prost::Message)]
17819pub struct FtraceEventBundle {
17820    #[prost(uint32, optional, tag="1")]
17821    pub cpu: ::core::option::Option<u32>,
17822    #[prost(message, repeated, tag="2")]
17823    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
17824    /// Set to true if there was data loss between the last time we've read from
17825    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
17826    /// in this bundle.
17827    #[prost(bool, optional, tag="3")]
17828    pub lost_events: ::core::option::Option<bool>,
17829    #[prost(message, optional, tag="4")]
17830    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
17831    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
17832    /// timestamps as that counts during suspend, is available to userspace, and
17833    /// is coherent across cpus.
17834    ///
17835    /// If this field is set, it means that a different clock was used during
17836    /// recording. Either because the boot clock is unavailable (e.g. old kernels
17837    /// before 3.x), or the trace config has set an incompatible option
17838    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
17839    /// trace_processor will do best-effort clock alignment using timestamp pairs
17840    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
17841    /// when the ftrace clock is "boot", as that is the default assumption.
17842    ///
17843    /// Some clocks (local/global) are technically per-cpu, but we make a
17844    /// simplifying assumption that they are global, as their inter-cpu skew
17845    /// should be reasonably bounded on modern systems.
17846    ///
17847    /// Added in: perfetto v19. Android T (13).
17848    #[prost(enumeration="FtraceClock", optional, tag="5")]
17849    pub ftrace_clock: ::core::option::Option<i32>,
17850    /// The timestamp according to the ftrace clock, taken at the same instant as
17851    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
17852    /// will be in the future relative to the data covered by this bundle.
17853    /// Implementation note: Populated by reading the 'now ts:' field in
17854    /// tracefs/per_cpu/cpu0/stat.
17855    ///
17856    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17857    #[prost(int64, optional, tag="6")]
17858    pub ftrace_timestamp: ::core::option::Option<i64>,
17859    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
17860    /// |ftrace_timestamp|.
17861    ///
17862    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17863    #[prost(int64, optional, tag="7")]
17864    pub boot_timestamp: ::core::option::Option<i64>,
17865    #[prost(message, repeated, tag="8")]
17866    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
17867    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
17868    /// primary difference is that this field tracked the last timestamp read from
17869    /// the per-cpu buffer, while the newer field tracks events that get
17870    /// serialised into the trace.
17871    /// Added in: perfetto v44.
17872    #[prost(uint64, optional, tag="9")]
17873    pub last_read_event_timestamp: ::core::option::Option<u64>,
17874    /// The timestamp (using ftrace clock) of the last event written into this
17875    /// data source on this cpu. In other words: the last event in the previous
17876    /// bundle.
17877    /// Lets the trace processing find an initial timestamp after which ftrace
17878    /// data is known to be valid across all cpus. Of particular importance when
17879    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
17880    /// oldest bundles can skew the first valid timestamp per cpu significantly.
17881    /// Added in: perfetto v47.
17882    #[prost(uint64, optional, tag="10")]
17883    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
17884    #[prost(message, repeated, tag="11")]
17885    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
17886    /// Written only on android builds if the config sets |debug_ftrace_abi|.
17887    /// Contains the raw ring buffer tracing page that the implementation could
17888    /// not parse.
17889    /// Addded in: perfetto v50.
17890    #[prost(bytes="vec", optional, tag="512")]
17891    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17892}
17893/// Nested message and enum types in `FtraceEventBundle`.
17894pub mod ftrace_event_bundle {
17895    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
17896    /// a subset of events & their fields is recorded.
17897    /// All fields (except comms) are stored in a structure-of-arrays form, one
17898    /// entry in each repeated field per event.
17899    #[derive(Clone, PartialEq, ::prost::Message)]
17900    pub struct CompactSched {
17901        /// Interned table of unique strings for this bundle.
17902        #[prost(string, repeated, tag="5")]
17903        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17904        /// Delta-encoded timestamps across all sched_switch events within this
17905        /// bundle. The first is absolute, each next one is relative to its
17906        /// predecessor.
17907        #[prost(uint64, repeated, tag="1")]
17908        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
17909        #[prost(int64, repeated, tag="2")]
17910        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
17911        #[prost(int32, repeated, tag="3")]
17912        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
17913        #[prost(int32, repeated, tag="4")]
17914        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
17915        /// One per event, index into |intern_table| corresponding to the
17916        /// next_comm field of the event.
17917        #[prost(uint32, repeated, tag="6")]
17918        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
17919        /// Delta-encoded timestamps across all sched_waking events within this
17920        /// bundle. The first is absolute, each next one is relative to its
17921        /// predecessor.
17922        #[prost(uint64, repeated, tag="7")]
17923        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
17924        #[prost(int32, repeated, tag="8")]
17925        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
17926        #[prost(int32, repeated, tag="9")]
17927        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
17928        #[prost(int32, repeated, tag="10")]
17929        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
17930        /// One per event, index into |intern_table| corresponding to the
17931        /// comm field of the event.
17932        #[prost(uint32, repeated, tag="11")]
17933        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
17934        #[prost(uint32, repeated, tag="12")]
17935        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
17936    }
17937    /// Errors encountered during parsing of the raw ftrace data. In case of ring
17938    /// buffer layout errors, the parser skips the rest of the offending kernel
17939    /// buffer page and continues from the next page.
17940    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
17941    /// seen within the duration of the trace (even if the affected bundles get
17942    /// overwritten in ring buffer mode).
17943    #[derive(Clone, PartialEq, ::prost::Message)]
17944    pub struct FtraceError {
17945        /// Timestamp of the data that we're unable to parse, in the ftrace clock
17946        /// domain. Currently, we use the base timestamp of the tracing page
17947        /// containing the bad record rather than the time of the record itself.
17948        #[prost(uint64, optional, tag="1")]
17949        pub timestamp: ::core::option::Option<u64>,
17950        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
17951        pub status: ::core::option::Option<i32>,
17952    }
17953    /// Describes the serialised |FtraceEvent| protos for events not known at
17954    /// compile time, when using the |denser_generic_event_encoding| option.
17955    /// Addded in: perfetto v50.
17956    #[derive(Clone, PartialEq, ::prost::Message)]
17957    pub struct GenericEventDescriptor {
17958        /// submessage id within FtraceEvent described by |event_descriptor|.
17959        #[prost(int32, optional, tag="1")]
17960        pub field_id: ::core::option::Option<i32>,
17961        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
17962        /// The event name itself is in |event_descriptor.name|.
17963        #[prost(string, optional, tag="3")]
17964        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
17965        /// serialised DescriptorProto.
17966        #[prost(bytes="vec", optional, tag="2")]
17967        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17968    }
17969}
17970// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17971
17972// Begin of protos/perfetto/trace/generic_kernel/generic_gpu_frequency.proto
17973
17974/// GenericGpuFrequencyEvent is the standard proto to capture GPU
17975/// frequency change events in a generic kernel implementation.
17976#[derive(Clone, PartialEq, ::prost::Message)]
17977pub struct GenericGpuFrequencyEvent {
17978    /// GPU on which the frequency change occurred.
17979    #[prost(uint32, optional, tag="1")]
17980    pub gpu_id: ::core::option::Option<u32>,
17981    /// Frequency (kHz) of the GPU.
17982    #[prost(uint32, optional, tag="2")]
17983    pub frequency_khz: ::core::option::Option<u32>,
17984}
17985// End of protos/perfetto/trace/generic_kernel/generic_gpu_frequency.proto
17986
17987// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
17988
17989/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
17990/// frequency change events in a generic kernel implementation.
17991#[derive(Clone, PartialEq, ::prost::Message)]
17992pub struct GenericKernelCpuFrequencyEvent {
17993    /// CPU in which the event occurred.
17994    #[prost(int32, optional, tag="1")]
17995    pub cpu: ::core::option::Option<i32>,
17996    /// Frequency (Hz) of the CPU.
17997    #[prost(int64, optional, tag="2")]
17998    pub freq_hz: ::core::option::Option<i64>,
17999}
18000// End of protos/perfetto/trace/generic_kernel/generic_power.proto
18001
18002// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
18003
18004/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18005/// change events in a generic kernel implementation. This is mainly for the
18006/// case where scheduler events are not directly supported in the kernel's
18007/// tracing mechanism.
18008///
18009/// By capturing these task state events Perfetto is able to infer higher-level
18010/// events such as context switches and task waking events, providing as much
18011/// parity as possible with established tracing frameworks such as
18012/// Linux's ftrace.
18013#[derive(Clone, PartialEq, ::prost::Message)]
18014pub struct GenericKernelTaskStateEvent {
18015    /// CPU in which the event occurred.
18016    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18017    /// no specific meaning to the cpu field in a non-running state event.
18018    #[prost(int32, optional, tag="1")]
18019    pub cpu: ::core::option::Option<i32>,
18020    /// Command name for the thread.
18021    #[prost(string, optional, tag="2")]
18022    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18023    /// Thread id.
18024    #[prost(int64, optional, tag="3")]
18025    pub tid: ::core::option::Option<i64>,
18026    /// New state of the thread.
18027    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
18028    pub state: ::core::option::Option<i32>,
18029    /// Priority of the thread.
18030    /// This value is OS agnostic and should only be interpreted based on the
18031    /// kernel who emitted the message.
18032    #[prost(int32, optional, tag="5")]
18033    pub prio: ::core::option::Option<i32>,
18034}
18035/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18036pub mod generic_kernel_task_state_event {
18037    /// TaskStateEnum represents the valid states of a thread.
18038    /// These states are a generic representation of the actual thread state and
18039    /// don't necessarily map one-to-one to the states the actual OS kernel
18040    /// tracks internally.
18041    ///
18042    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18043    /// an error resulting in potential data loss.
18044    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18045    #[repr(i32)]
18046    pub enum TaskStateEnum {
18047        TaskStateUnknown = 0,
18048        TaskStateCreated = 1,
18049        TaskStateRunnable = 2,
18050        TaskStateRunning = 3,
18051        TaskStateInterruptibleSleep = 4,
18052        TaskStateUninterruptibleSleep = 5,
18053        TaskStateStopped = 6,
18054        TaskStateDead = 7,
18055        TaskStateDestroyed = 8,
18056    }
18057    impl TaskStateEnum {
18058        /// String value of the enum field names used in the ProtoBuf definition.
18059        ///
18060        /// The values are not transformed in any way and thus are considered stable
18061        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18062        pub fn as_str_name(&self) -> &'static str {
18063            match self {
18064                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18065                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
18066                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18067                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
18068                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18069                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18070                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
18071                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
18072                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18073            }
18074        }
18075    }
18076}
18077/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18078/// of a thread.
18079#[derive(Clone, PartialEq, ::prost::Message)]
18080pub struct GenericKernelTaskRenameEvent {
18081    /// Thread id.
18082    #[prost(int64, optional, tag="1")]
18083    pub tid: ::core::option::Option<i64>,
18084    /// New command name for the thread.
18085    #[prost(string, optional, tag="2")]
18086    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18087}
18088/// Metadata about the processes and threads in the trace.
18089/// The main goal of this proto is to provide a generic kernel
18090/// implementation a mechanism to outline its process structure.
18091#[derive(Clone, PartialEq, ::prost::Message)]
18092pub struct GenericKernelProcessTree {
18093    /// List of processes and threads in the kernel. These lists are incremental
18094    /// and not exhaustive. A process and its threads might show up separately in
18095    /// different ProcessTree messages. A thread might not show up at all, if
18096    /// no sched switch activity was detected, for instance:
18097    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
18098    /// #1 { threads: [{tid: 12, pid: 10}] }
18099    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
18100    #[prost(message, repeated, tag="1")]
18101    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18102    #[prost(message, repeated, tag="2")]
18103    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18104}
18105/// Nested message and enum types in `GenericKernelProcessTree`.
18106pub mod generic_kernel_process_tree {
18107    /// Representation of a thread.
18108    #[derive(Clone, PartialEq, ::prost::Message)]
18109    pub struct Thread {
18110        /// Thread id.
18111        #[prost(int64, optional, tag="1")]
18112        pub tid: ::core::option::Option<i64>,
18113        /// Id of the parent process.
18114        #[prost(int64, optional, tag="2")]
18115        pub pid: ::core::option::Option<i64>,
18116        /// The command name of the thread.
18117        #[prost(string, optional, tag="3")]
18118        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18119        /// True if thread is the main thread.
18120        #[prost(bool, optional, tag="4")]
18121        pub is_main_thread: ::core::option::Option<bool>,
18122        /// True if thread is an idle thread.
18123        #[prost(bool, optional, tag="5")]
18124        pub is_idle: ::core::option::Option<bool>,
18125    }
18126    /// Representation of a process.
18127    #[derive(Clone, PartialEq, ::prost::Message)]
18128    pub struct Process {
18129        /// Process id.
18130        #[prost(int64, optional, tag="1")]
18131        pub pid: ::core::option::Option<i64>,
18132        /// Parent process id.
18133        #[prost(int64, optional, tag="2")]
18134        pub ppid: ::core::option::Option<i64>,
18135        /// The command line of the process.
18136        /// If the cmdline has spaces in it, then we use the characters from
18137        /// position 0 to the first instance of the space char (' ') as the name
18138        /// of the process. If no spaces are present, then the entire cmdline is
18139        /// used as the name.
18140        #[prost(string, optional, tag="3")]
18141        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
18142    }
18143}
18144// End of protos/perfetto/trace/generic_kernel/generic_task.proto
18145
18146// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
18147
18148/// Events for emitting information about GPU counters.
18149///
18150/// There are two "modes" to use these protos:
18151///    1) Using GpuCounterDescriptor. This is the simplest way to use this proto
18152///       but has the limitation that counter ids are*global* so must only be
18153///       emitted by a single producer or requires coordination between different
18154///       producers. This is the mechanism which *must* be used by Android OEMS
18155///       to be complaint with CDD/CTS tests.
18156///    2) Using InternedGpuCounterDescriptor. This is generally recommended for
18157///       more complex use-cases involving multiple producers, multiple GPUs etc.
18158#[derive(Clone, PartialEq, ::prost::Message)]
18159pub struct GpuCounterEvent {
18160    #[prost(message, repeated, tag="2")]
18161    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
18162    /// Identifier for GPU in a multi-gpu device.
18163    ///
18164    /// If `counter_descriptor_iid` is specified, the `gpu_id` in
18165    /// `InternedGpuCounterDescriptor` takes precedence over this field.
18166    #[prost(int32, optional, tag="3")]
18167    pub gpu_id: ::core::option::Option<i32>,
18168    /// The specification for the GPU counters. Gives them information like the
18169    /// name of the counter, unit etc.
18170    #[prost(oneof="gpu_counter_event::Desc", tags="1, 4")]
18171    pub desc: ::core::option::Option<gpu_counter_event::Desc>,
18172}
18173/// Nested message and enum types in `GpuCounterEvent`.
18174pub mod gpu_counter_event {
18175    #[derive(Clone, PartialEq, ::prost::Message)]
18176    pub struct GpuCounter {
18177        /// required. Identifier for counter.
18178        #[prost(uint32, optional, tag="1")]
18179        pub counter_id: ::core::option::Option<u32>,
18180        /// required. Value of the counter.
18181        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
18182        pub value: ::core::option::Option<gpu_counter::Value>,
18183    }
18184    /// Nested message and enum types in `GpuCounter`.
18185    pub mod gpu_counter {
18186        /// required. Value of the counter.
18187        #[derive(Clone, PartialEq, ::prost::Oneof)]
18188        pub enum Value {
18189            #[prost(int64, tag="2")]
18190            IntValue(i64),
18191            #[prost(double, tag="3")]
18192            DoubleValue(f64),
18193        }
18194    }
18195    /// The specification for the GPU counters. Gives them information like the
18196    /// name of the counter, unit etc.
18197    #[derive(Clone, PartialEq, ::prost::Oneof)]
18198    pub enum Desc {
18199        /// Must be specified on first trace packet of each session if using mode 1.
18200        /// (e.g. if you're an Android GPU vendor).
18201        #[prost(message, tag="1")]
18202        CounterDescriptor(super::GpuCounterDescriptor),
18203        /// ID to a InternedGpuCounterDescriptor in InternedData. Must be specified
18204        /// on first trace packet of the trusted sequence if using mode 2.
18205        #[prost(uint64, tag="4")]
18206        CounterDescriptorIid(u64),
18207    }
18208}
18209/// Interned GPU counter descriptor for sequence-scoped counter specs.
18210#[derive(Clone, PartialEq, ::prost::Message)]
18211pub struct InternedGpuCounterDescriptor {
18212    #[prost(uint64, optional, tag="1")]
18213    pub iid: ::core::option::Option<u64>,
18214    #[prost(message, optional, tag="2")]
18215    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
18216    /// optional. Identifier for GPU in a multi-gpu device.
18217    #[prost(int32, optional, tag="3")]
18218    pub gpu_id: ::core::option::Option<i32>,
18219}
18220// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
18221
18222// Begin of protos/perfetto/trace/gpu/gpu_log.proto
18223
18224/// Message for logging events GPU data producer.
18225#[derive(Clone, PartialEq, ::prost::Message)]
18226pub struct GpuLog {
18227    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
18228    pub severity: ::core::option::Option<i32>,
18229    #[prost(string, optional, tag="2")]
18230    pub tag: ::core::option::Option<::prost::alloc::string::String>,
18231    #[prost(string, optional, tag="3")]
18232    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
18233}
18234/// Nested message and enum types in `GpuLog`.
18235pub mod gpu_log {
18236    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18237    #[repr(i32)]
18238    pub enum Severity {
18239        LogSeverityUnspecified = 0,
18240        LogSeverityVerbose = 1,
18241        LogSeverityDebug = 2,
18242        LogSeverityInfo = 3,
18243        LogSeverityWarning = 4,
18244        LogSeverityError = 5,
18245    }
18246    impl Severity {
18247        /// String value of the enum field names used in the ProtoBuf definition.
18248        ///
18249        /// The values are not transformed in any way and thus are considered stable
18250        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18251        pub fn as_str_name(&self) -> &'static str {
18252            match self {
18253                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
18254                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
18255                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
18256                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
18257                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
18258                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
18259            }
18260        }
18261    }
18262}
18263// End of protos/perfetto/trace/gpu/gpu_log.proto
18264
18265// Begin of protos/perfetto/trace/gpu/gpu_mem_event.proto
18266
18267/// Generated by Android's GpuService.
18268#[derive(Clone, PartialEq, ::prost::Message)]
18269pub struct GpuMemTotalEvent {
18270    #[prost(uint32, optional, tag="1")]
18271    pub gpu_id: ::core::option::Option<u32>,
18272    #[prost(uint32, optional, tag="2")]
18273    pub pid: ::core::option::Option<u32>,
18274    #[prost(uint64, optional, tag="3")]
18275    pub size: ::core::option::Option<u64>,
18276}
18277// End of protos/perfetto/trace/gpu/gpu_mem_event.proto
18278
18279// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18280
18281/// next id: 22
18282#[derive(Clone, PartialEq, ::prost::Message)]
18283pub struct GpuRenderStageEvent {
18284    /// required. Unique ID for the event.
18285    #[prost(uint64, optional, tag="1")]
18286    pub event_id: ::core::option::Option<u64>,
18287    /// optional. Duration of the event in nanoseconds. If unset, this is a
18288    /// single time point event.
18289    #[prost(uint64, optional, tag="2")]
18290    pub duration: ::core::option::Option<u64>,
18291    /// required. ID to a hardware queue description in the specifications.
18292    /// InternedGpuRenderStageSpecification
18293    #[prost(uint64, optional, tag="13")]
18294    pub hw_queue_iid: ::core::option::Option<u64>,
18295    /// required. ID to a render stage description in the specifications.
18296    /// InternedGpuRenderStageSpecification
18297    #[prost(uint64, optional, tag="14")]
18298    pub stage_iid: ::core::option::Option<u64>,
18299    /// optional. Identifier for GPU in a multi-gpu device.
18300    #[prost(int32, optional, tag="11")]
18301    pub gpu_id: ::core::option::Option<i32>,
18302    /// required. Graphics context for the event.
18303    /// For OpenGL, this is the GL context.
18304    /// For Vulkan, this is the VkDevice.
18305    #[prost(uint64, optional, tag="5")]
18306    pub context: ::core::option::Option<u64>,
18307    /// optional. The render target for this event.
18308    /// For OpenGL, this is the GL frame buffer handle.
18309    /// For Vulkan, this is the VkFrameBuffer handle.
18310    #[prost(uint64, optional, tag="8")]
18311    pub render_target_handle: ::core::option::Option<u64>,
18312    /// optional. Submission ID generated by the UMD.
18313    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
18314    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
18315    /// to a single API submission should share the same ID.
18316    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18317    #[prost(uint32, optional, tag="10")]
18318    pub submission_id: ::core::option::Option<u32>,
18319    #[prost(message, repeated, tag="6")]
18320    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18321    // VULKAN SPECIFICS
18322
18323    /// optional. The Vulkan render pass handle.
18324    #[prost(uint64, optional, tag="9")]
18325    pub render_pass_handle: ::core::option::Option<u64>,
18326    /// optional. An ID for the render pass instance. This is used to correlate
18327    /// different events on different queues produced by the same Vulkan render
18328    /// pass instance.
18329    #[prost(uint64, optional, tag="16")]
18330    pub render_pass_instance_id: ::core::option::Option<u64>,
18331    /// optional. A bit mask representing which render subpasses contributed to
18332    /// this render stage event.  Subpass index 0 is represented by setting the
18333    /// LSB of the mask.  Additional mask can be added for subpass index greater
18334    /// than 63.
18335    #[prost(uint64, repeated, packed="false", tag="15")]
18336    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18337    /// optional. The Vulkan command buffer handle.
18338    #[prost(uint64, optional, tag="12")]
18339    pub command_buffer_handle: ::core::option::Option<u64>,
18340    /// Event IDs of other GpuRenderStageEvents that this event
18341    /// had to wait on before it could run.
18342    #[prost(uint64, repeated, packed="false", tag="18")]
18343    pub event_wait_ids: ::prost::alloc::vec::Vec<u64>,
18344    /// optional. ID to a compute kernel description in the interned data.
18345    /// InternedComputeKernel
18346    #[prost(uint64, optional, tag="19")]
18347    pub kernel_iid: ::core::option::Option<u64>,
18348    /// optional. Compute kernel launch parameters for this event.
18349    #[prost(message, optional, tag="21")]
18350    pub launch: ::core::option::Option<gpu_render_stage_event::ComputeKernelLaunch>,
18351    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18352    /// InternedGpuRenderStageSpecification instead.
18353    #[deprecated]
18354    #[prost(message, optional, tag="7")]
18355    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18356    /// Deprecated. Use hw_queue_iid instead;
18357    #[deprecated]
18358    #[prost(int32, optional, tag="3")]
18359    pub hw_queue_id: ::core::option::Option<i32>,
18360    /// Deprecated. Use stage_iid instead;
18361    #[deprecated]
18362    #[prost(int32, optional, tag="4")]
18363    pub stage_id: ::core::option::Option<i32>,
18364    /// optional. Custom name for this render stage event. When set, this
18365    /// provides a name for the stage instead of using the name from the stage
18366    /// specification.
18367    #[prost(oneof="gpu_render_stage_event::NameField", tags="17, 20")]
18368    pub name_field: ::core::option::Option<gpu_render_stage_event::NameField>,
18369}
18370/// Nested message and enum types in `GpuRenderStageEvent`.
18371pub mod gpu_render_stage_event {
18372    /// optional. Additional data for the user. This may include attributes for
18373    /// the event like resource ids, shaders, etc.
18374    #[derive(Clone, PartialEq, ::prost::Message)]
18375    pub struct ExtraData {
18376        #[prost(string, optional, tag="1")]
18377        pub name: ::core::option::Option<::prost::alloc::string::String>,
18378        #[prost(string, optional, tag="2")]
18379        pub value: ::core::option::Option<::prost::alloc::string::String>,
18380    }
18381    /// 3D unsigned integer vector for grid and workgroup dimensions.
18382    #[derive(Clone, PartialEq, ::prost::Message)]
18383    pub struct Dim3 {
18384        #[prost(uint32, optional, tag="1")]
18385        pub x: ::core::option::Option<u32>,
18386        #[prost(uint32, optional, tag="2")]
18387        pub y: ::core::option::Option<u32>,
18388        #[prost(uint32, optional, tag="3")]
18389        pub z: ::core::option::Option<u32>,
18390    }
18391    /// Typed key/value argument for extending compute kernel descriptions
18392    /// and launch parameters with custom data.
18393    #[derive(Clone, PartialEq, ::prost::Message)]
18394    pub struct ExtraComputeArg {
18395        #[prost(oneof="extra_compute_arg::NameField", tags="1, 2")]
18396        pub name_field: ::core::option::Option<extra_compute_arg::NameField>,
18397        #[prost(oneof="extra_compute_arg::Value", tags="3, 4, 5, 6, 7")]
18398        pub value: ::core::option::Option<extra_compute_arg::Value>,
18399    }
18400    /// Nested message and enum types in `ExtraComputeArg`.
18401    pub mod extra_compute_arg {
18402        #[derive(Clone, PartialEq, ::prost::Oneof)]
18403        pub enum NameField {
18404            /// Interned InternedComputeArgName.
18405            #[prost(uint64, tag="1")]
18406            NameIid(u64),
18407            /// Non-interned variant.
18408            #[prost(string, tag="2")]
18409            Name(::prost::alloc::string::String),
18410        }
18411        #[derive(Clone, PartialEq, ::prost::Oneof)]
18412        pub enum Value {
18413            #[prost(int64, tag="3")]
18414            IntValue(i64),
18415            #[prost(uint64, tag="4")]
18416            UintValue(u64),
18417            #[prost(double, tag="5")]
18418            DoubleValue(f64),
18419            #[prost(string, tag="6")]
18420            StringValue(::prost::alloc::string::String),
18421            /// Interned InternedString via debug_annotation_string_values.
18422            #[prost(uint64, tag="7")]
18423            StringValueIid(u64),
18424        }
18425    }
18426    /// Compute kernel launch parameters for a single dispatch.
18427    #[derive(Clone, PartialEq, ::prost::Message)]
18428    pub struct ComputeKernelLaunch {
18429        /// Grid dimensions (number of workgroups in each dimension).
18430        #[prost(message, optional, tag="1")]
18431        pub grid_size: ::core::option::Option<Dim3>,
18432        /// Workgroup dimensions (number of threads per workgroup in each dimension).
18433        #[prost(message, optional, tag="2")]
18434        pub workgroup_size: ::core::option::Option<Dim3>,
18435        /// Additional typed launch parameters (e.g. registers_per_thread,
18436        /// shared_mem_dynamic, shared_mem_static).
18437        #[prost(message, repeated, tag="3")]
18438        pub args: ::prost::alloc::vec::Vec<ExtraComputeArg>,
18439    }
18440    // DEPRECATED
18441
18442    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18443    /// The first trace packet of each session should include a Specifications
18444    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18445    /// must be earlier than all other packets. Only one packet with Specifications
18446    /// is expected.
18447    #[derive(Clone, PartialEq, ::prost::Message)]
18448    pub struct Specifications {
18449        #[prost(message, optional, tag="1")]
18450        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18451        /// Labels to categorize the hw Queue this event goes on.
18452        #[prost(message, repeated, tag="2")]
18453        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18454        /// Labels to categorize render stage(binning, render, compute etc).
18455        #[prost(message, repeated, tag="3")]
18456        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18457    }
18458    /// Nested message and enum types in `Specifications`.
18459    pub mod specifications {
18460        #[derive(Clone, PartialEq, ::prost::Message)]
18461        pub struct ContextSpec {
18462            #[prost(uint64, optional, tag="1")]
18463            pub context: ::core::option::Option<u64>,
18464            #[prost(int32, optional, tag="2")]
18465            pub pid: ::core::option::Option<i32>,
18466        }
18467        #[derive(Clone, PartialEq, ::prost::Message)]
18468        pub struct Description {
18469            #[prost(string, optional, tag="1")]
18470            pub name: ::core::option::Option<::prost::alloc::string::String>,
18471            #[prost(string, optional, tag="2")]
18472            pub description: ::core::option::Option<::prost::alloc::string::String>,
18473        }
18474    }
18475    /// optional. Custom name for this render stage event. When set, this
18476    /// provides a name for the stage instead of using the name from the stage
18477    /// specification.
18478    #[derive(Clone, PartialEq, ::prost::Oneof)]
18479    pub enum NameField {
18480        #[prost(string, tag="17")]
18481        Name(::prost::alloc::string::String),
18482        /// Interned event name. Refers to EventName in InternedData.
18483        #[prost(uint64, tag="20")]
18484        NameIid(u64),
18485    }
18486}
18487// Interned data.
18488
18489/// The iid is the numeric value of either the GL Context or the VkDevice
18490/// handle.
18491#[derive(Clone, PartialEq, ::prost::Message)]
18492pub struct InternedGraphicsContext {
18493    #[prost(uint64, optional, tag="1")]
18494    pub iid: ::core::option::Option<u64>,
18495    #[prost(int32, optional, tag="2")]
18496    pub pid: ::core::option::Option<i32>,
18497    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
18498    pub api: ::core::option::Option<i32>,
18499}
18500/// Nested message and enum types in `InternedGraphicsContext`.
18501pub mod interned_graphics_context {
18502    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18503    #[repr(i32)]
18504    pub enum Api {
18505        Undefined = 0,
18506        OpenGl = 1,
18507        Vulkan = 2,
18508        OpenCl = 3,
18509        Cuda = 4,
18510        Hip = 5,
18511    }
18512    impl Api {
18513        /// String value of the enum field names used in the ProtoBuf definition.
18514        ///
18515        /// The values are not transformed in any way and thus are considered stable
18516        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18517        pub fn as_str_name(&self) -> &'static str {
18518            match self {
18519                Api::Undefined => "UNDEFINED",
18520                Api::OpenGl => "OPEN_GL",
18521                Api::Vulkan => "VULKAN",
18522                Api::OpenCl => "OPEN_CL",
18523                Api::Cuda => "CUDA",
18524                Api::Hip => "HIP",
18525            }
18526        }
18527    }
18528}
18529#[derive(Clone, PartialEq, ::prost::Message)]
18530pub struct InternedGpuRenderStageSpecification {
18531    #[prost(uint64, optional, tag="1")]
18532    pub iid: ::core::option::Option<u64>,
18533    #[prost(string, optional, tag="2")]
18534    pub name: ::core::option::Option<::prost::alloc::string::String>,
18535    #[prost(string, optional, tag="3")]
18536    pub description: ::core::option::Option<::prost::alloc::string::String>,
18537    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
18538    pub category: ::core::option::Option<i32>,
18539}
18540/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
18541pub mod interned_gpu_render_stage_specification {
18542    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18543    #[repr(i32)]
18544    pub enum RenderStageCategory {
18545        Other = 0,
18546        Graphics = 1,
18547        Compute = 2,
18548    }
18549    impl RenderStageCategory {
18550        /// String value of the enum field names used in the ProtoBuf definition.
18551        ///
18552        /// The values are not transformed in any way and thus are considered stable
18553        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18554        pub fn as_str_name(&self) -> &'static str {
18555            match self {
18556                RenderStageCategory::Other => "OTHER",
18557                RenderStageCategory::Graphics => "GRAPHICS",
18558                RenderStageCategory::Compute => "COMPUTE",
18559            }
18560        }
18561    }
18562}
18563#[derive(Clone, PartialEq, ::prost::Message)]
18564pub struct InternedComputeKernel {
18565    #[prost(uint64, optional, tag="1")]
18566    pub iid: ::core::option::Option<u64>,
18567    #[prost(string, optional, tag="2")]
18568    pub name: ::core::option::Option<::prost::alloc::string::String>,
18569    #[prost(string, optional, tag="3")]
18570    pub demangled_name: ::core::option::Option<::prost::alloc::string::String>,
18571    #[prost(string, optional, tag="4")]
18572    pub arch: ::core::option::Option<::prost::alloc::string::String>,
18573    /// Additional typed kernel attributes (e.g. static resource limits).
18574    #[prost(message, repeated, tag="5")]
18575    pub args: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraComputeArg>,
18576}
18577#[derive(Clone, PartialEq, ::prost::Message)]
18578pub struct InternedComputeArgName {
18579    #[prost(uint64, optional, tag="1")]
18580    pub iid: ::core::option::Option<u64>,
18581    #[prost(string, optional, tag="2")]
18582    pub name: ::core::option::Option<::prost::alloc::string::String>,
18583}
18584// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18585
18586// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
18587
18588/// Message for recording the Vulkan call.
18589#[derive(Clone, PartialEq, ::prost::Message)]
18590pub struct VulkanApiEvent {
18591    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
18592    pub event: ::core::option::Option<vulkan_api_event::Event>,
18593}
18594/// Nested message and enum types in `VulkanApiEvent`.
18595pub mod vulkan_api_event {
18596    /// For recording vkSetDebugUtilsObjectNameEXT and
18597    /// vkDebugMarkerSetObjectNameEXT
18598    #[derive(Clone, PartialEq, ::prost::Message)]
18599    pub struct VkDebugUtilsObjectName {
18600        #[prost(uint32, optional, tag="1")]
18601        pub pid: ::core::option::Option<u32>,
18602        #[prost(uint64, optional, tag="2")]
18603        pub vk_device: ::core::option::Option<u64>,
18604        /// VkObjectType.  Value must match
18605        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
18606        #[prost(int32, optional, tag="3")]
18607        pub object_type: ::core::option::Option<i32>,
18608        #[prost(uint64, optional, tag="4")]
18609        pub object: ::core::option::Option<u64>,
18610        #[prost(string, optional, tag="5")]
18611        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
18612    }
18613    /// For recording vkQueueSubmit call.
18614    #[derive(Clone, PartialEq, ::prost::Message)]
18615    pub struct VkQueueSubmit {
18616        #[prost(uint64, optional, tag="1")]
18617        pub duration_ns: ::core::option::Option<u64>,
18618        #[prost(uint32, optional, tag="2")]
18619        pub pid: ::core::option::Option<u32>,
18620        #[prost(uint32, optional, tag="3")]
18621        pub tid: ::core::option::Option<u32>,
18622        #[prost(uint64, optional, tag="4")]
18623        pub vk_queue: ::core::option::Option<u64>,
18624        #[prost(uint64, repeated, packed="false", tag="5")]
18625        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
18626        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
18627        /// submission_id must match GpuRenderStageEvent.submission_id if the
18628        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
18629        #[prost(uint32, optional, tag="6")]
18630        pub submission_id: ::core::option::Option<u32>,
18631    }
18632    #[derive(Clone, PartialEq, ::prost::Oneof)]
18633    pub enum Event {
18634        #[prost(message, tag="1")]
18635        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
18636        #[prost(message, tag="2")]
18637        VkQueueSubmit(VkQueueSubmit),
18638    }
18639}
18640// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
18641
18642// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18643
18644/// All the information that cannot be sent within a VulkanMemoryEvent message,
18645/// are sent as annotations to the main memory event. One example is the
18646/// properties of the object that consumes the allocated memory, for example, a
18647/// buffer or an image.
18648/// key_iid and string_iid are both interned strings. Original string value is
18649/// stored in vulkan_memory_keys from
18650/// protos/perfetto/trace/interned_data/interned_data.proto.
18651#[derive(Clone, PartialEq, ::prost::Message)]
18652pub struct VulkanMemoryEventAnnotation {
18653    #[prost(uint64, optional, tag="1")]
18654    pub key_iid: ::core::option::Option<u64>,
18655    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
18656    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
18657}
18658/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
18659pub mod vulkan_memory_event_annotation {
18660    #[derive(Clone, PartialEq, ::prost::Oneof)]
18661    pub enum Value {
18662        #[prost(int64, tag="2")]
18663        IntValue(i64),
18664        #[prost(double, tag="3")]
18665        DoubleValue(f64),
18666        #[prost(uint64, tag="4")]
18667        StringIid(u64),
18668    }
18669}
18670/// Each VulkanMemoryEvent encompasses information regarding one single function
18671/// call that results in reserving, binding or freeing host or GPU memory. There
18672/// is a special message type, ANNOTATIONS, which is used to communicate
18673/// information that are not directly related to a memory event, nonetheless are
18674/// essential to understand the memory usage. An example is the size and memory
18675/// types of the memory heaps.
18676///
18677/// Next reserved id: 10 (up to 15).
18678/// Next id: 21.
18679#[derive(Clone, PartialEq, ::prost::Message)]
18680pub struct VulkanMemoryEvent {
18681    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
18682    pub source: ::core::option::Option<i32>,
18683    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
18684    pub operation: ::core::option::Option<i32>,
18685    #[prost(int64, optional, tag="3")]
18686    pub timestamp: ::core::option::Option<i64>,
18687    #[prost(uint32, optional, tag="4")]
18688    pub pid: ::core::option::Option<u32>,
18689    #[prost(fixed64, optional, tag="5")]
18690    pub memory_address: ::core::option::Option<u64>,
18691    #[prost(uint64, optional, tag="6")]
18692    pub memory_size: ::core::option::Option<u64>,
18693    /// Interned string. Original string value is stored in function_names from
18694    /// protos/perfetto/trace/interned_data/interned_data.proto.
18695    #[prost(uint64, optional, tag="7")]
18696    pub caller_iid: ::core::option::Option<u64>,
18697    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
18698    pub allocation_scope: ::core::option::Option<i32>,
18699    /// Extra related information, e.g., create configs, etc.
18700    #[prost(message, repeated, tag="9")]
18701    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
18702    /// Field IDs used for device memory (low sampling rate)
18703    #[prost(fixed64, optional, tag="16")]
18704    pub device: ::core::option::Option<u64>,
18705    #[prost(fixed64, optional, tag="17")]
18706    pub device_memory: ::core::option::Option<u64>,
18707    #[prost(uint32, optional, tag="18")]
18708    pub memory_type: ::core::option::Option<u32>,
18709    #[prost(uint32, optional, tag="19")]
18710    pub heap: ::core::option::Option<u32>,
18711    #[prost(fixed64, optional, tag="20")]
18712    pub object_handle: ::core::option::Option<u64>,
18713}
18714/// Nested message and enum types in `VulkanMemoryEvent`.
18715pub mod vulkan_memory_event {
18716    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18717    #[repr(i32)]
18718    pub enum Source {
18719        Unspecified = 0,
18720        Driver = 1,
18721        Device = 2,
18722        DeviceMemory = 3,
18723        Buffer = 4,
18724        Image = 5,
18725    }
18726    impl Source {
18727        /// String value of the enum field names used in the ProtoBuf definition.
18728        ///
18729        /// The values are not transformed in any way and thus are considered stable
18730        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18731        pub fn as_str_name(&self) -> &'static str {
18732            match self {
18733                Source::Unspecified => "SOURCE_UNSPECIFIED",
18734                Source::Driver => "SOURCE_DRIVER",
18735                Source::Device => "SOURCE_DEVICE",
18736                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
18737                Source::Buffer => "SOURCE_BUFFER",
18738                Source::Image => "SOURCE_IMAGE",
18739            }
18740        }
18741    }
18742    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18743    #[repr(i32)]
18744    pub enum Operation {
18745        OpUnspecified = 0,
18746        /// alloc, create
18747        OpCreate = 1,
18748        /// free, destroy(non-bound)
18749        OpDestroy = 2,
18750        /// bind buffer and image
18751        OpBind = 3,
18752        /// destroy (bound)
18753        OpDestroyBound = 4,
18754        /// only annotations
18755        OpAnnotations = 5,
18756    }
18757    impl Operation {
18758        /// String value of the enum field names used in the ProtoBuf definition.
18759        ///
18760        /// The values are not transformed in any way and thus are considered stable
18761        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18762        pub fn as_str_name(&self) -> &'static str {
18763            match self {
18764                Operation::OpUnspecified => "OP_UNSPECIFIED",
18765                Operation::OpCreate => "OP_CREATE",
18766                Operation::OpDestroy => "OP_DESTROY",
18767                Operation::OpBind => "OP_BIND",
18768                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
18769                Operation::OpAnnotations => "OP_ANNOTATIONS",
18770            }
18771        }
18772    }
18773    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18774    #[repr(i32)]
18775    pub enum AllocationScope {
18776        ScopeUnspecified = 0,
18777        ScopeCommand = 1,
18778        ScopeObject = 2,
18779        ScopeCache = 3,
18780        ScopeDevice = 4,
18781        ScopeInstance = 5,
18782    }
18783    impl AllocationScope {
18784        /// String value of the enum field names used in the ProtoBuf definition.
18785        ///
18786        /// The values are not transformed in any way and thus are considered stable
18787        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18788        pub fn as_str_name(&self) -> &'static str {
18789            match self {
18790                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
18791                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
18792                AllocationScope::ScopeObject => "SCOPE_OBJECT",
18793                AllocationScope::ScopeCache => "SCOPE_CACHE",
18794                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
18795                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
18796            }
18797        }
18798    }
18799}
18800// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18801
18802// Begin of protos/perfetto/trace/profiling/profile_common.proto
18803
18804/// The interning fields in this file can refer to 2 different intern tables,
18805/// depending on the message they are used in. If the interned fields are present
18806/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
18807/// should be used. If the intered fields are present in the
18808/// StreamingProfilePacket proto, then the intern tables included in all of the
18809/// previous InternedData message with same sequence ID should be used.
18810/// TODO(fmayer): Move to the intern tables to a common location.
18811#[derive(Clone, PartialEq, ::prost::Message)]
18812pub struct InternedString {
18813    /// Interning key. Starts from 1, 0 is the same as "not set".
18814    #[prost(uint64, optional, tag="1")]
18815    pub iid: ::core::option::Option<u64>,
18816    /// The actual string.
18817    #[prost(bytes="vec", optional, tag="2")]
18818    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18819}
18820/// Source line info.
18821#[derive(Clone, PartialEq, ::prost::Message)]
18822pub struct Line {
18823    #[prost(string, optional, tag="1")]
18824    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
18825    #[prost(string, optional, tag="2")]
18826    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
18827    #[prost(uint32, optional, tag="3")]
18828    pub line_number: ::core::option::Option<u32>,
18829}
18830/// Symbols for a given address in a module.
18831#[derive(Clone, PartialEq, ::prost::Message)]
18832pub struct AddressSymbols {
18833    #[prost(uint64, optional, tag="1")]
18834    pub address: ::core::option::Option<u64>,
18835    /// Source lines that correspond to this address.
18836    ///
18837    /// These are repeated because when inlining happens, multiple functions'
18838    /// frames can be at a single address. Imagine function Foo calling the
18839    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
18840    /// both Foo and the std::vector<int> constructor when we symbolize the
18841    /// address.
18842    #[prost(message, repeated, tag="2")]
18843    pub lines: ::prost::alloc::vec::Vec<Line>,
18844}
18845/// Symbols for addresses seen in a module.
18846/// Used in re-symbolisation of complete traces.
18847#[derive(Clone, PartialEq, ::prost::Message)]
18848pub struct ModuleSymbols {
18849    /// Fully qualified path to the mapping.
18850    /// E.g. /system/lib64/libc.so.
18851    #[prost(string, optional, tag="1")]
18852    pub path: ::core::option::Option<::prost::alloc::string::String>,
18853    /// .note.gnu.build-id on Linux (not hex encoded).
18854    /// uuid on MacOS.
18855    /// Module GUID on Windows.
18856    #[prost(string, optional, tag="2")]
18857    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
18858    #[prost(message, repeated, tag="3")]
18859    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
18860}
18861#[derive(Clone, PartialEq, ::prost::Message)]
18862pub struct Mapping {
18863    /// Interning key.
18864    /// Starts from 1, 0 is the same as "not set".
18865    #[prost(uint64, optional, tag="1")]
18866    pub iid: ::core::option::Option<u64>,
18867    /// Interning key.
18868    /// Starts from 1, 0 is the same as "not set".
18869    #[prost(uint64, optional, tag="2")]
18870    pub build_id: ::core::option::Option<u64>,
18871    // The linker may create multiple memory mappings for the same shared
18872    // library.
18873    // This is so that the ELF header is mapped as read only, while the
18874    // executable memory is mapped as executable only.
18875    // The details of this depend on the linker, a possible mapping of an ELF
18876    // file is this:
18877    //          +----------------------+
18878    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
18879    //          +---------+------------+
18880    //          |         |
18881    //          | read    | executable
18882    //          v mapping v mapping
18883    //          +----------------------+
18884    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
18885    //          +------------------+---+
18886    //          ^         ^        ^
18887    //          +         +        +
18888    //        start     exact    relpc
18889    //        offset   offset    0x1800
18890    //        0x0000   0x1000
18891    //
18892    // exact_offset is the offset into the library file of this mapping.
18893    // start_offset is the offset into the library file of the first mapping
18894    // for that library. For native libraries (.so files) this should be 0.
18895
18896    /// This is not set on Android 10.
18897    #[prost(uint64, optional, tag="8")]
18898    pub exact_offset: ::core::option::Option<u64>,
18899    #[prost(uint64, optional, tag="3")]
18900    pub start_offset: ::core::option::Option<u64>,
18901    #[prost(uint64, optional, tag="4")]
18902    pub start: ::core::option::Option<u64>,
18903    #[prost(uint64, optional, tag="5")]
18904    pub end: ::core::option::Option<u64>,
18905    /// Libunwindstack-specific concept, not to be confused with bionic linker's
18906    /// notion of load_bias. Needed to correct relative pc addresses (as produced
18907    /// by libunwindstack) when doing offline resymbolisation.
18908    ///
18909    /// For an executable ELF PT_LOAD segment, this is:
18910    ///    p_vaddr - p_offset
18911    ///
18912    /// Where p_offset means that the code is at that offset into the ELF file on
18913    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
18914    /// to where the linker loads the ELF into the address space. For most ELFs,
18915    /// the two values are identical and therefore load_bias is zero.
18916    #[prost(uint64, optional, tag="6")]
18917    pub load_bias: ::core::option::Option<u64>,
18918    /// E.g. ["system", "lib64", "libc.so"]
18919    /// id of string.
18920    #[prost(uint64, repeated, packed="false", tag="7")]
18921    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
18922}
18923#[derive(Clone, PartialEq, ::prost::Message)]
18924pub struct Frame {
18925    /// Interning key. Starts from 1, 0 is the same as "not set".
18926    #[prost(uint64, optional, tag="1")]
18927    pub iid: ::core::option::Option<u64>,
18928    /// E.g. "fopen"
18929    /// id of string.
18930    #[prost(uint64, optional, tag="2")]
18931    pub function_name_id: ::core::option::Option<u64>,
18932    /// The mapping in which this frame's instruction pointer resides.
18933    /// iid of Mapping.iid.
18934    ///
18935    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
18936    /// this frame has no associated memory mapping (e.g., symbolized frames
18937    /// without address information).
18938    ///
18939    /// Starts from 1, 0 is the same as "not set".
18940    #[prost(uint64, optional, tag="3")]
18941    pub mapping_id: ::core::option::Option<u64>,
18942    /// Instruction pointer relative to the start of the mapping.
18943    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
18944    #[prost(uint64, optional, tag="4")]
18945    pub rel_pc: ::core::option::Option<u64>,
18946    /// Source file path for this frame.
18947    /// This is typically set during online symbolization when symbol information
18948    /// is available at trace collection time. If not set, source file paths may be
18949    /// added later via offline symbolization (see ModuleSymbols).
18950    ///
18951    /// Starts from 1, 0 is the same as "not set".
18952    ///
18953    /// iid of InternedData.source_paths.
18954    #[prost(uint64, optional, tag="5")]
18955    pub source_path_iid: ::core::option::Option<u64>,
18956    /// Line number in the source file for this frame.
18957    /// This is typically set during online symbolization when symbol information
18958    /// is available at trace collection time. If not set, line numbers may be
18959    /// added later via offline symbolization (see ModuleSymbols).
18960    #[prost(uint32, optional, tag="6")]
18961    pub line_number: ::core::option::Option<u32>,
18962}
18963#[derive(Clone, PartialEq, ::prost::Message)]
18964pub struct Callstack {
18965    /// Interning key. Starts from 1, 0 is the same as "not set".
18966    #[prost(uint64, optional, tag="1")]
18967    pub iid: ::core::option::Option<u64>,
18968    /// Frames of this callstack. Bottom frame first.
18969    #[prost(uint64, repeated, packed="false", tag="2")]
18970    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
18971}
18972// End of protos/perfetto/trace/profiling/profile_common.proto
18973
18974// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18975
18976#[derive(Clone, PartialEq, ::prost::Message)]
18977pub struct HistogramName {
18978    #[prost(uint64, optional, tag="1")]
18979    pub iid: ::core::option::Option<u64>,
18980    #[prost(string, optional, tag="2")]
18981    pub name: ::core::option::Option<::prost::alloc::string::String>,
18982}
18983/// An individual histogram sample logged via Chrome's UMA metrics system.
18984#[derive(Clone, PartialEq, ::prost::Message)]
18985pub struct ChromeHistogramSample {
18986    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
18987    /// both must be present.
18988    #[prost(uint64, optional, tag="1")]
18989    pub name_hash: ::core::option::Option<u64>,
18990    #[prost(string, optional, tag="2")]
18991    pub name: ::core::option::Option<::prost::alloc::string::String>,
18992    #[prost(int64, optional, tag="3")]
18993    pub sample: ::core::option::Option<i64>,
18994    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
18995    #[prost(uint64, optional, tag="4")]
18996    pub name_iid: ::core::option::Option<u64>,
18997}
18998// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18999
19000// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
19001
19002/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
19003/// macros. Users of the Perfetto SDK should prefer to use the
19004/// perfetto::TracedValue API to fill these protos, rather than filling them
19005/// manually.
19006///
19007/// Debug annotations are intended for debug use and are not considered a stable
19008/// API of the trace contents. Trace-based metrics that use debug annotation
19009/// values are prone to breakage, so please rely on typed TrackEvent fields for
19010/// these instead.
19011///
19012/// DebugAnnotations support nested arrays and dictionaries. Each entry is
19013/// encoded as a single DebugAnnotation message. Only dictionary entries
19014/// set the "name" field. The TrackEvent message forms an implicit root
19015/// dictionary.
19016///
19017/// Example TrackEvent with nested annotations:
19018///    track_event {
19019///      debug_annotations {
19020///        name: "foo"
19021///        dict_entries {
19022///          name: "a"
19023///          bool_value: true
19024///        }
19025///        dict_entries {
19026///          name: "b"
19027///          int_value: 123
19028///        }
19029///      }
19030///      debug_annotations {
19031///        name: "bar"
19032///        array_values {
19033///          string_value: "hello"
19034///        }
19035///        array_values {
19036///          string_value: "world"
19037///        }
19038///      }
19039///    }
19040///
19041/// Next ID: 18.
19042/// Reserved ID: 15
19043#[derive(Clone, PartialEq, ::prost::Message)]
19044pub struct DebugAnnotation {
19045    #[prost(bytes="vec", optional, tag="14")]
19046    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19047    #[prost(message, repeated, tag="11")]
19048    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
19049    #[prost(message, repeated, tag="12")]
19050    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
19051    /// Name fields are set only for dictionary entries.
19052    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
19053    pub name_field: ::core::option::Option<debug_annotation::NameField>,
19054    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
19055    pub value: ::core::option::Option<debug_annotation::Value>,
19056    /// Used to embed arbitrary proto messages (which are also typically used to
19057    /// represent typed TrackEvent arguments). |proto_type_name| or
19058    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19059    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19060    /// proto messages. See |TracedValue::WriteProto| for more details.
19061    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
19062    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
19063}
19064/// Nested message and enum types in `DebugAnnotation`.
19065pub mod debug_annotation {
19066    /// Deprecated legacy way to use nested values. Only kept for
19067    /// backwards-compatibility in TraceProcessor. May be removed in the future -
19068    /// code filling protos should use |dict_entries| and |array_values| instead.
19069    #[derive(Clone, PartialEq, ::prost::Message)]
19070    pub struct NestedValue {
19071        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
19072        pub nested_type: ::core::option::Option<i32>,
19073        #[prost(string, repeated, tag="2")]
19074        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19075        #[prost(message, repeated, tag="3")]
19076        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
19077        #[prost(message, repeated, tag="4")]
19078        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
19079        #[prost(int64, optional, tag="5")]
19080        pub int_value: ::core::option::Option<i64>,
19081        #[prost(double, optional, tag="6")]
19082        pub double_value: ::core::option::Option<f64>,
19083        #[prost(bool, optional, tag="7")]
19084        pub bool_value: ::core::option::Option<bool>,
19085        #[prost(string, optional, tag="8")]
19086        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
19087    }
19088    /// Nested message and enum types in `NestedValue`.
19089    pub mod nested_value {
19090        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19091        #[repr(i32)]
19092        pub enum NestedType {
19093            /// leaf value.
19094            Unspecified = 0,
19095            Dict = 1,
19096            Array = 2,
19097        }
19098        impl NestedType {
19099            /// String value of the enum field names used in the ProtoBuf definition.
19100            ///
19101            /// The values are not transformed in any way and thus are considered stable
19102            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19103            pub fn as_str_name(&self) -> &'static str {
19104                match self {
19105                    NestedType::Unspecified => "UNSPECIFIED",
19106                    NestedType::Dict => "DICT",
19107                    NestedType::Array => "ARRAY",
19108                }
19109            }
19110        }
19111    }
19112    /// Name fields are set only for dictionary entries.
19113    #[derive(Clone, PartialEq, ::prost::Oneof)]
19114    pub enum NameField {
19115        /// interned DebugAnnotationName.
19116        #[prost(uint64, tag="1")]
19117        NameIid(u64),
19118        /// non-interned variant.
19119        #[prost(string, tag="10")]
19120        Name(::prost::alloc::string::String),
19121    }
19122    #[derive(Clone, PartialEq, ::prost::Oneof)]
19123    pub enum Value {
19124        #[prost(bool, tag="2")]
19125        BoolValue(bool),
19126        #[prost(uint64, tag="3")]
19127        UintValue(u64),
19128        #[prost(int64, tag="4")]
19129        IntValue(i64),
19130        #[prost(double, tag="5")]
19131        DoubleValue(f64),
19132        /// Pointers are stored in a separate type as the JSON output treats them
19133        /// differently from other uint64 values.
19134        #[prost(uint64, tag="7")]
19135        PointerValue(u64),
19136        /// Deprecated. Use dict_entries / array_values instead.
19137        #[prost(message, tag="8")]
19138        NestedValue(NestedValue),
19139        /// Legacy instrumentation may not support conversion of nested data to
19140        /// NestedValue yet.
19141        #[prost(string, tag="9")]
19142        LegacyJsonValue(::prost::alloc::string::String),
19143        /// interned and non-interned variants of strings.
19144        #[prost(string, tag="6")]
19145        StringValue(::prost::alloc::string::String),
19146        /// Corresponds to |debug_annotation_string_values| field in InternedData.
19147        #[prost(uint64, tag="17")]
19148        StringValueIid(u64),
19149    }
19150    /// Used to embed arbitrary proto messages (which are also typically used to
19151    /// represent typed TrackEvent arguments). |proto_type_name| or
19152    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19153    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19154    /// proto messages. See |TracedValue::WriteProto| for more details.
19155    #[derive(Clone, PartialEq, ::prost::Oneof)]
19156    pub enum ProtoTypeDescriptor {
19157        #[prost(string, tag="16")]
19158        ProtoTypeName(::prost::alloc::string::String),
19159        /// interned DebugAnnotationValueTypeName.
19160        #[prost(uint64, tag="13")]
19161        ProtoTypeNameIid(u64),
19162    }
19163}
19164// --------------------
19165// Interned data types:
19166// --------------------
19167
19168#[derive(Clone, PartialEq, ::prost::Message)]
19169pub struct DebugAnnotationName {
19170    #[prost(uint64, optional, tag="1")]
19171    pub iid: ::core::option::Option<u64>,
19172    #[prost(string, optional, tag="2")]
19173    pub name: ::core::option::Option<::prost::alloc::string::String>,
19174}
19175/// See the |proto_type_descriptor| comment.
19176#[derive(Clone, PartialEq, ::prost::Message)]
19177pub struct DebugAnnotationValueTypeName {
19178    #[prost(uint64, optional, tag="1")]
19179    pub iid: ::core::option::Option<u64>,
19180    #[prost(string, optional, tag="2")]
19181    pub name: ::core::option::Option<::prost::alloc::string::String>,
19182}
19183// End of protos/perfetto/trace/track_event/debug_annotation.proto
19184
19185// Begin of protos/perfetto/trace/track_event/log_message.proto
19186
19187#[derive(Clone, PartialEq, ::prost::Message)]
19188pub struct LogMessage {
19189    /// interned SourceLocation.
19190    #[prost(uint64, optional, tag="1")]
19191    pub source_location_iid: ::core::option::Option<u64>,
19192    /// interned LogMessageBody.
19193    #[prost(uint64, optional, tag="2")]
19194    pub body_iid: ::core::option::Option<u64>,
19195    #[prost(enumeration="log_message::Priority", optional, tag="3")]
19196    pub prio: ::core::option::Option<i32>,
19197}
19198/// Nested message and enum types in `LogMessage`.
19199pub mod log_message {
19200    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19201    #[repr(i32)]
19202    pub enum Priority {
19203        PrioUnspecified = 0,
19204        PrioUnused = 1,
19205        PrioVerbose = 2,
19206        PrioDebug = 3,
19207        PrioInfo = 4,
19208        PrioWarn = 5,
19209        PrioError = 6,
19210        PrioFatal = 7,
19211    }
19212    impl Priority {
19213        /// String value of the enum field names used in the ProtoBuf definition.
19214        ///
19215        /// The values are not transformed in any way and thus are considered stable
19216        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19217        pub fn as_str_name(&self) -> &'static str {
19218            match self {
19219                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
19220                Priority::PrioUnused => "PRIO_UNUSED",
19221                Priority::PrioVerbose => "PRIO_VERBOSE",
19222                Priority::PrioDebug => "PRIO_DEBUG",
19223                Priority::PrioInfo => "PRIO_INFO",
19224                Priority::PrioWarn => "PRIO_WARN",
19225                Priority::PrioError => "PRIO_ERROR",
19226                Priority::PrioFatal => "PRIO_FATAL",
19227            }
19228        }
19229    }
19230}
19231// --------------------
19232// Interned data types:
19233// --------------------
19234
19235#[derive(Clone, PartialEq, ::prost::Message)]
19236pub struct LogMessageBody {
19237    #[prost(uint64, optional, tag="1")]
19238    pub iid: ::core::option::Option<u64>,
19239    #[prost(string, optional, tag="2")]
19240    pub body: ::core::option::Option<::prost::alloc::string::String>,
19241}
19242// End of protos/perfetto/trace/track_event/log_message.proto
19243
19244// Begin of protos/perfetto/trace/track_event/source_location.proto
19245
19246// --------------------
19247// Interned data types:
19248// --------------------
19249
19250/// A source location, represented as a native symbol.
19251/// This is similar to `message Frame` from
19252/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
19253/// source code locations (for example in track event args), not stack frames.
19254#[derive(Clone, PartialEq, ::prost::Message)]
19255pub struct UnsymbolizedSourceLocation {
19256    #[prost(uint64, optional, tag="1")]
19257    pub iid: ::core::option::Option<u64>,
19258    #[prost(uint64, optional, tag="2")]
19259    pub mapping_id: ::core::option::Option<u64>,
19260    #[prost(uint64, optional, tag="3")]
19261    pub rel_pc: ::core::option::Option<u64>,
19262}
19263#[derive(Clone, PartialEq, ::prost::Message)]
19264pub struct SourceLocation {
19265    #[prost(uint64, optional, tag="1")]
19266    pub iid: ::core::option::Option<u64>,
19267    #[prost(string, optional, tag="2")]
19268    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
19269    #[prost(string, optional, tag="3")]
19270    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19271    #[prost(uint32, optional, tag="4")]
19272    pub line_number: ::core::option::Option<u32>,
19273}
19274// End of protos/perfetto/trace/track_event/source_location.proto
19275
19276// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
19277
19278/// A list of processes connected to the tracing service.
19279#[derive(Clone, PartialEq, ::prost::Message)]
19280pub struct ChromeActiveProcesses {
19281    #[prost(int32, repeated, packed="false", tag="1")]
19282    pub pid: ::prost::alloc::vec::Vec<i32>,
19283}
19284// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
19285
19286/// Trace event arguments for application state changes.
19287#[derive(Clone, PartialEq, ::prost::Message)]
19288pub struct ChromeApplicationStateInfo {
19289    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
19290    pub application_state: ::core::option::Option<i32>,
19291}
19292/// Nested message and enum types in `ChromeApplicationStateInfo`.
19293pub mod chrome_application_state_info {
19294    /// Enum definition taken from:
19295    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
19296    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19297    #[repr(i32)]
19298    pub enum ChromeApplicationState {
19299        ApplicationStateUnknown = 0,
19300        ApplicationStateHasRunningActivities = 1,
19301        ApplicationStateHasPausedActivities = 2,
19302        ApplicationStateHasStoppedActivities = 3,
19303        ApplicationStateHasDestroyedActivities = 4,
19304    }
19305    impl ChromeApplicationState {
19306        /// String value of the enum field names used in the ProtoBuf definition.
19307        ///
19308        /// The values are not transformed in any way and thus are considered stable
19309        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19310        pub fn as_str_name(&self) -> &'static str {
19311            match self {
19312                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
19313                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
19314                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
19315                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
19316                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
19317            }
19318        }
19319    }
19320}
19321/// Next id: 18
19322#[derive(Clone, PartialEq, ::prost::Message)]
19323pub struct ChromeCompositorSchedulerState {
19324    #[prost(message, optional, tag="1")]
19325    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
19326    #[prost(bool, optional, tag="2")]
19327    pub observing_begin_frame_source: ::core::option::Option<bool>,
19328    #[prost(bool, optional, tag="3")]
19329    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
19330    #[prost(bool, optional, tag="4")]
19331    pub pending_begin_frame_task: ::core::option::Option<bool>,
19332    #[prost(bool, optional, tag="5")]
19333    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
19334    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
19335    pub inside_action: ::core::option::Option<i32>,
19336    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
19337    pub deadline_mode: ::core::option::Option<i32>,
19338    #[prost(int64, optional, tag="9")]
19339    pub deadline_us: ::core::option::Option<i64>,
19340    #[prost(int64, optional, tag="10")]
19341    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
19342    #[prost(int64, optional, tag="11")]
19343    pub now_us: ::core::option::Option<i64>,
19344    #[prost(int64, optional, tag="12")]
19345    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
19346    #[prost(int64, optional, tag="13")]
19347    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
19348    #[prost(message, optional, tag="14")]
19349    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
19350    #[prost(message, optional, tag="15")]
19351    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
19352    #[prost(message, optional, tag="16")]
19353    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
19354    #[prost(message, optional, tag="17")]
19355    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
19356}
19357/// Nested message and enum types in `ChromeCompositorSchedulerState`.
19358pub mod chrome_compositor_scheduler_state {
19359    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19360    #[repr(i32)]
19361    pub enum BeginImplFrameDeadlineMode {
19362        DeadlineModeUnspecified = 0,
19363        DeadlineModeNone = 1,
19364        DeadlineModeImmediate = 2,
19365        DeadlineModeRegular = 3,
19366        DeadlineModeLate = 4,
19367        DeadlineModeBlocked = 5,
19368    }
19369    impl BeginImplFrameDeadlineMode {
19370        /// String value of the enum field names used in the ProtoBuf definition.
19371        ///
19372        /// The values are not transformed in any way and thus are considered stable
19373        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19374        pub fn as_str_name(&self) -> &'static str {
19375            match self {
19376                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
19377                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
19378                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
19379                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
19380                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
19381                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
19382            }
19383        }
19384    }
19385}
19386/// Describes the current values stored in the Chrome Compositor state machine.
19387/// Next id: 3
19388#[derive(Clone, PartialEq, ::prost::Message)]
19389pub struct ChromeCompositorStateMachine {
19390    #[prost(message, optional, tag="1")]
19391    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
19392    #[prost(message, optional, tag="2")]
19393    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
19394}
19395/// Nested message and enum types in `ChromeCompositorStateMachine`.
19396pub mod chrome_compositor_state_machine {
19397    /// Next id: 6
19398    #[derive(Clone, PartialEq, ::prost::Message)]
19399    pub struct MajorState {
19400        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
19401        pub next_action: ::core::option::Option<i32>,
19402        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
19403        pub begin_impl_frame_state: ::core::option::Option<i32>,
19404        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
19405        pub begin_main_frame_state: ::core::option::Option<i32>,
19406        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
19407        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
19408        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
19409        pub forced_redraw_state: ::core::option::Option<i32>,
19410    }
19411    /// Nested message and enum types in `MajorState`.
19412    pub mod major_state {
19413        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19414        #[repr(i32)]
19415        pub enum BeginImplFrameState {
19416            BeginImplFrameUnspecified = 0,
19417            BeginImplFrameIdle = 1,
19418            BeginImplFrameInsideBeginFrame = 2,
19419            BeginImplFrameInsideDeadline = 3,
19420        }
19421        impl BeginImplFrameState {
19422            /// String value of the enum field names used in the ProtoBuf definition.
19423            ///
19424            /// The values are not transformed in any way and thus are considered stable
19425            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19426            pub fn as_str_name(&self) -> &'static str {
19427                match self {
19428                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
19429                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
19430                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
19431                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
19432                }
19433            }
19434        }
19435        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19436        #[repr(i32)]
19437        pub enum BeginMainFrameState {
19438            BeginMainFrameUnspecified = 0,
19439            BeginMainFrameIdle = 1,
19440            BeginMainFrameSent = 2,
19441            BeginMainFrameReadyToCommit = 3,
19442        }
19443        impl BeginMainFrameState {
19444            /// String value of the enum field names used in the ProtoBuf definition.
19445            ///
19446            /// The values are not transformed in any way and thus are considered stable
19447            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19448            pub fn as_str_name(&self) -> &'static str {
19449                match self {
19450                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
19451                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
19452                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
19453                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
19454                }
19455            }
19456        }
19457        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19458        #[repr(i32)]
19459        pub enum LayerTreeFrameSinkState {
19460            LayerTreeFrameUnspecified = 0,
19461            LayerTreeFrameNone = 1,
19462            LayerTreeFrameActive = 2,
19463            LayerTreeFrameCreating = 3,
19464            LayerTreeFrameWaitingForFirstCommit = 4,
19465            LayerTreeFrameWaitingForFirstActivation = 5,
19466        }
19467        impl LayerTreeFrameSinkState {
19468            /// String value of the enum field names used in the ProtoBuf definition.
19469            ///
19470            /// The values are not transformed in any way and thus are considered stable
19471            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19472            pub fn as_str_name(&self) -> &'static str {
19473                match self {
19474                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
19475                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
19476                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
19477                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
19478                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
19479                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
19480                }
19481            }
19482        }
19483        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19484        #[repr(i32)]
19485        pub enum ForcedRedrawOnTimeoutState {
19486            ForcedRedrawUnspecified = 0,
19487            ForcedRedrawIdle = 1,
19488            ForcedRedrawWaitingForCommit = 2,
19489            ForcedRedrawWaitingForActivation = 3,
19490            ForcedRedrawWaitingForDraw = 4,
19491        }
19492        impl ForcedRedrawOnTimeoutState {
19493            /// String value of the enum field names used in the ProtoBuf definition.
19494            ///
19495            /// The values are not transformed in any way and thus are considered stable
19496            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19497            pub fn as_str_name(&self) -> &'static str {
19498                match self {
19499                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
19500                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
19501                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
19502                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
19503                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
19504                }
19505            }
19506        }
19507    }
19508    /// Next id: 47
19509    #[derive(Clone, PartialEq, ::prost::Message)]
19510    pub struct MinorState {
19511        #[prost(int32, optional, tag="1")]
19512        pub commit_count: ::core::option::Option<i32>,
19513        #[prost(int32, optional, tag="2")]
19514        pub current_frame_number: ::core::option::Option<i32>,
19515        #[prost(int32, optional, tag="3")]
19516        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
19517        #[prost(int32, optional, tag="4")]
19518        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
19519        #[prost(int32, optional, tag="5")]
19520        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
19521        #[prost(bool, optional, tag="6")]
19522        pub did_draw: ::core::option::Option<bool>,
19523        #[prost(bool, optional, tag="7")]
19524        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
19525        #[prost(bool, optional, tag="8")]
19526        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
19527        #[prost(bool, optional, tag="9")]
19528        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
19529        #[prost(bool, optional, tag="10")]
19530        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
19531        #[prost(bool, optional, tag="11")]
19532        pub did_commit_during_frame: ::core::option::Option<bool>,
19533        #[prost(bool, optional, tag="12")]
19534        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
19535        #[prost(bool, optional, tag="13")]
19536        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
19537        #[prost(bool, optional, tag="14")]
19538        pub did_prepare_tiles: ::core::option::Option<bool>,
19539        #[prost(int32, optional, tag="15")]
19540        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
19541        #[prost(int32, optional, tag="16")]
19542        pub pending_submit_frames: ::core::option::Option<i32>,
19543        #[prost(int32, optional, tag="17")]
19544        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
19545        #[prost(bool, optional, tag="18")]
19546        pub needs_redraw: ::core::option::Option<bool>,
19547        #[prost(bool, optional, tag="19")]
19548        pub needs_prepare_tiles: ::core::option::Option<bool>,
19549        #[prost(bool, optional, tag="20")]
19550        pub needs_begin_main_frame: ::core::option::Option<bool>,
19551        #[prost(bool, optional, tag="21")]
19552        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
19553        #[prost(bool, optional, tag="22")]
19554        pub visible: ::core::option::Option<bool>,
19555        #[prost(bool, optional, tag="23")]
19556        pub begin_frame_source_paused: ::core::option::Option<bool>,
19557        #[prost(bool, optional, tag="24")]
19558        pub can_draw: ::core::option::Option<bool>,
19559        #[prost(bool, optional, tag="25")]
19560        pub resourceless_draw: ::core::option::Option<bool>,
19561        #[prost(bool, optional, tag="26")]
19562        pub has_pending_tree: ::core::option::Option<bool>,
19563        #[prost(bool, optional, tag="27")]
19564        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
19565        #[prost(bool, optional, tag="28")]
19566        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
19567        #[prost(bool, optional, tag="29")]
19568        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
19569        #[prost(bool, optional, tag="30")]
19570        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
19571        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
19572        pub tree_priority: ::core::option::Option<i32>,
19573        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
19574        pub scroll_handler_state: ::core::option::Option<i32>,
19575        #[prost(bool, optional, tag="33")]
19576        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
19577        #[prost(bool, optional, tag="34")]
19578        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
19579        #[prost(bool, optional, tag="36")]
19580        pub video_needs_begin_frames: ::core::option::Option<bool>,
19581        #[prost(bool, optional, tag="37")]
19582        pub defer_begin_main_frame: ::core::option::Option<bool>,
19583        #[prost(bool, optional, tag="38")]
19584        pub last_commit_had_no_updates: ::core::option::Option<bool>,
19585        #[prost(bool, optional, tag="39")]
19586        pub did_draw_in_last_frame: ::core::option::Option<bool>,
19587        #[prost(bool, optional, tag="40")]
19588        pub did_submit_in_last_frame: ::core::option::Option<bool>,
19589        #[prost(bool, optional, tag="41")]
19590        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
19591        #[prost(bool, optional, tag="42")]
19592        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
19593        #[prost(bool, optional, tag="43")]
19594        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
19595        #[prost(bool, optional, tag="44")]
19596        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
19597        #[prost(bool, optional, tag="45")]
19598        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
19599        #[prost(bool, optional, tag="46")]
19600        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
19601    }
19602    /// Nested message and enum types in `MinorState`.
19603    pub mod minor_state {
19604        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19605        #[repr(i32)]
19606        pub enum TreePriority {
19607            Unspecified = 0,
19608            SamePriorityForBothTrees = 1,
19609            SmoothnessTakesPriority = 2,
19610            NewContentTakesPriority = 3,
19611        }
19612        impl TreePriority {
19613            /// String value of the enum field names used in the ProtoBuf definition.
19614            ///
19615            /// The values are not transformed in any way and thus are considered stable
19616            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19617            pub fn as_str_name(&self) -> &'static str {
19618                match self {
19619                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
19620                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
19621                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
19622                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
19623                }
19624            }
19625        }
19626        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19627        #[repr(i32)]
19628        pub enum ScrollHandlerState {
19629            ScrollHandlerUnspecified = 0,
19630            ScrollAffectsScrollHandler = 1,
19631            ScrollDoesNotAffectScrollHandler = 2,
19632        }
19633        impl ScrollHandlerState {
19634            /// String value of the enum field names used in the ProtoBuf definition.
19635            ///
19636            /// The values are not transformed in any way and thus are considered stable
19637            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19638            pub fn as_str_name(&self) -> &'static str {
19639                match self {
19640                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
19641                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
19642                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
19643                }
19644            }
19645        }
19646    }
19647}
19648/// Next id: 13
19649#[derive(Clone, PartialEq, ::prost::Message)]
19650pub struct BeginFrameArgs {
19651    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
19652    pub r#type: ::core::option::Option<i32>,
19653    #[prost(uint64, optional, tag="2")]
19654    pub source_id: ::core::option::Option<u64>,
19655    #[prost(uint64, optional, tag="3")]
19656    pub sequence_number: ::core::option::Option<u64>,
19657    #[prost(int64, optional, tag="4")]
19658    pub frame_time_us: ::core::option::Option<i64>,
19659    #[prost(int64, optional, tag="5")]
19660    pub deadline_us: ::core::option::Option<i64>,
19661    #[prost(int64, optional, tag="6")]
19662    pub interval_delta_us: ::core::option::Option<i64>,
19663    #[prost(bool, optional, tag="7")]
19664    pub on_critical_path: ::core::option::Option<bool>,
19665    #[prost(bool, optional, tag="8")]
19666    pub animate_only: ::core::option::Option<bool>,
19667    #[prost(int64, optional, tag="12")]
19668    pub frames_throttled_since_last: ::core::option::Option<i64>,
19669    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
19670    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
19671}
19672/// Nested message and enum types in `BeginFrameArgs`.
19673pub mod begin_frame_args {
19674    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
19675    /// drop this in the proto representation, and instead make the JSON format
19676    /// "subtype" field become the type field.
19677    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19678    #[repr(i32)]
19679    pub enum BeginFrameArgsType {
19680        Unspecified = 0,
19681        Invalid = 1,
19682        Normal = 2,
19683        Missed = 3,
19684    }
19685    impl BeginFrameArgsType {
19686        /// String value of the enum field names used in the ProtoBuf definition.
19687        ///
19688        /// The values are not transformed in any way and thus are considered stable
19689        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19690        pub fn as_str_name(&self) -> &'static str {
19691            match self {
19692                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
19693                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
19694                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
19695                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
19696            }
19697        }
19698    }
19699    #[derive(Clone, PartialEq, ::prost::Oneof)]
19700    pub enum CreatedFrom {
19701        /// The interned SourceLocation.
19702        #[prost(uint64, tag="9")]
19703        SourceLocationIid(u64),
19704        /// The SourceLocation that this args was created from.
19705        /// TODO(nuskos): Eventually we will support interning inside of
19706        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
19707        /// since we can emit it as part of the InternedData message. When we can
19708        /// remove this |source_location|.
19709        #[prost(message, tag="10")]
19710        SourceLocation(super::SourceLocation),
19711    }
19712}
19713/// Next id: 7
19714#[derive(Clone, PartialEq, ::prost::Message)]
19715pub struct BeginImplFrameArgs {
19716    #[prost(int64, optional, tag="1")]
19717    pub updated_at_us: ::core::option::Option<i64>,
19718    #[prost(int64, optional, tag="2")]
19719    pub finished_at_us: ::core::option::Option<i64>,
19720    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
19721    pub state: ::core::option::Option<i32>,
19722    #[prost(message, optional, tag="6")]
19723    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
19724    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
19725    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
19726}
19727/// Nested message and enum types in `BeginImplFrameArgs`.
19728pub mod begin_impl_frame_args {
19729    #[derive(Clone, PartialEq, ::prost::Message)]
19730    pub struct TimestampsInUs {
19731        #[prost(int64, optional, tag="1")]
19732        pub interval_delta: ::core::option::Option<i64>,
19733        #[prost(int64, optional, tag="2")]
19734        pub now_to_deadline_delta: ::core::option::Option<i64>,
19735        #[prost(int64, optional, tag="3")]
19736        pub frame_time_to_now_delta: ::core::option::Option<i64>,
19737        #[prost(int64, optional, tag="4")]
19738        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
19739        #[prost(int64, optional, tag="5")]
19740        pub now: ::core::option::Option<i64>,
19741        #[prost(int64, optional, tag="6")]
19742        pub frame_time: ::core::option::Option<i64>,
19743        #[prost(int64, optional, tag="7")]
19744        pub deadline: ::core::option::Option<i64>,
19745    }
19746    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19747    #[repr(i32)]
19748    pub enum State {
19749        BeginFrameFinished = 0,
19750        BeginFrameUsing = 1,
19751    }
19752    impl State {
19753        /// String value of the enum field names used in the ProtoBuf definition.
19754        ///
19755        /// The values are not transformed in any way and thus are considered stable
19756        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19757        pub fn as_str_name(&self) -> &'static str {
19758            match self {
19759                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
19760                State::BeginFrameUsing => "BEGIN_FRAME_USING",
19761            }
19762        }
19763    }
19764    #[derive(Clone, PartialEq, ::prost::Oneof)]
19765    pub enum Args {
19766        /// Only set if |state| is BEGIN_FRAME_FINISHED.
19767        #[prost(message, tag="4")]
19768        CurrentArgs(super::BeginFrameArgs),
19769        /// Only set if |state| is BEGIN_FRAME_USING.
19770        #[prost(message, tag="5")]
19771        LastArgs(super::BeginFrameArgs),
19772    }
19773}
19774#[derive(Clone, PartialEq, ::prost::Message)]
19775pub struct BeginFrameObserverState {
19776    #[prost(int64, optional, tag="1")]
19777    pub dropped_begin_frame_args: ::core::option::Option<i64>,
19778    #[prost(message, optional, tag="2")]
19779    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19780}
19781#[derive(Clone, PartialEq, ::prost::Message)]
19782pub struct BeginFrameSourceState {
19783    #[prost(uint32, optional, tag="1")]
19784    pub source_id: ::core::option::Option<u32>,
19785    #[prost(bool, optional, tag="2")]
19786    pub paused: ::core::option::Option<bool>,
19787    #[prost(uint32, optional, tag="3")]
19788    pub num_observers: ::core::option::Option<u32>,
19789    #[prost(message, optional, tag="4")]
19790    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19791}
19792#[derive(Clone, PartialEq, ::prost::Message)]
19793pub struct CompositorTimingHistory {
19794    #[prost(int64, optional, tag="1")]
19795    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
19796    #[prost(int64, optional, tag="2")]
19797    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
19798    #[prost(int64, optional, tag="3")]
19799    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
19800    #[prost(int64, optional, tag="4")]
19801    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
19802    #[prost(int64, optional, tag="5")]
19803    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
19804    #[prost(int64, optional, tag="6")]
19805    pub activate_estimate_delta_us: ::core::option::Option<i64>,
19806    #[prost(int64, optional, tag="7")]
19807    pub draw_estimate_delta_us: ::core::option::Option<i64>,
19808}
19809// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
19810
19811// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
19812
19813/// Details about ContentSettings trace events.
19814#[derive(Clone, PartialEq, ::prost::Message)]
19815pub struct ChromeContentSettingsEventInfo {
19816    /// The number of user defined hostname patterns for content settings at
19817    /// browser start. Similar to UMA histogram
19818    /// 'ContentSettings.NumberOfExceptions'.
19819    #[prost(uint32, optional, tag="1")]
19820    pub number_of_exceptions: ::core::option::Option<u32>,
19821}
19822// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
19823
19824/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
19825/// in
19826/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
19827/// instead.
19828#[derive(Clone, PartialEq, ::prost::Message)]
19829pub struct ChromeFrameReporter {
19830    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
19831    pub state: ::core::option::Option<i32>,
19832    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
19833    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
19834    pub reason: ::core::option::Option<i32>,
19835    #[prost(uint64, optional, tag="3")]
19836    pub frame_source: ::core::option::Option<u64>,
19837    #[prost(uint64, optional, tag="4")]
19838    pub frame_sequence: ::core::option::Option<u64>,
19839    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
19840    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
19841    /// smoothness.
19842    #[prost(bool, optional, tag="5")]
19843    pub affects_smoothness: ::core::option::Option<bool>,
19844    /// The type of active scroll.
19845    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
19846    pub scroll_state: ::core::option::Option<i32>,
19847    /// If any main thread animation is active during this frame.
19848    #[prost(bool, optional, tag="7")]
19849    pub has_main_animation: ::core::option::Option<bool>,
19850    /// If any compositor thread animation is active during this frame.
19851    #[prost(bool, optional, tag="8")]
19852    pub has_compositor_animation: ::core::option::Option<bool>,
19853    /// If any touch-driven UX (not scroll) is active during this frame.
19854    #[prost(bool, optional, tag="9")]
19855    pub has_smooth_input_main: ::core::option::Option<bool>,
19856    /// Whether the frame contained any missing content (i.e. whether there was
19857    /// checkerboarding in the frame).  If has_missing_content,
19858    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
19859    /// values, has_missing_content should equal checkerboarded_needs_raster ||
19860    /// checkerboarded_needs_record.
19861    #[prost(bool, optional, tag="10")]
19862    pub has_missing_content: ::core::option::Option<bool>,
19863    /// The id of layer_tree_host that the frame has been produced for.
19864    #[prost(uint64, optional, tag="11")]
19865    pub layer_tree_host_id: ::core::option::Option<u64>,
19866    /// If total latency of PipelineReporter exceeds a certain limit.
19867    #[prost(bool, optional, tag="12")]
19868    pub has_high_latency: ::core::option::Option<bool>,
19869    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
19870    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
19871    /// (i.e. dropped frames when there are no partial compositor updates).
19872    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
19873    pub frame_type: ::core::option::Option<i32>,
19874    /// The breakdown stage of PipelineReporter that is most likely accountable for
19875    /// high latency.
19876    #[prost(string, repeated, tag="14")]
19877    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19878    /// Whether the frame contained any content that is not fully rastered.
19879    #[prost(bool, optional, tag="15")]
19880    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
19881    /// Whether the frame contained any content that is not fully recorded.
19882    #[prost(bool, optional, tag="16")]
19883    pub checkerboarded_needs_record: ::core::option::Option<bool>,
19884    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
19885    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
19886    #[prost(int64, optional, tag="17")]
19887    pub surface_frame_trace_id: ::core::option::Option<i64>,
19888    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
19889    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
19890    #[prost(int64, optional, tag="18")]
19891    pub display_trace_id: ::core::option::Option<i64>,
19892}
19893/// Nested message and enum types in `ChromeFrameReporter`.
19894pub mod chrome_frame_reporter {
19895    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19896    #[repr(i32)]
19897    pub enum State {
19898        /// The frame did not have any updates to present.
19899        NoUpdateDesired = 0,
19900        /// The frame presented all the desired updates (i.e. any updates requested
19901        /// from both the compositor thread and main-threads were handled).
19902        PresentedAll = 1,
19903        /// The frame was presented with some updates, but also missed some updates
19904        /// (e.g. missed updates from the main-thread, but included updates from the
19905        /// compositor thread).
19906        PresentedPartial = 2,
19907        /// The frame was dropped, i.e. some updates were desired for the frame, but
19908        /// was not presented.
19909        Dropped = 3,
19910    }
19911    impl State {
19912        /// String value of the enum field names used in the ProtoBuf definition.
19913        ///
19914        /// The values are not transformed in any way and thus are considered stable
19915        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19916        pub fn as_str_name(&self) -> &'static str {
19917            match self {
19918                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
19919                State::PresentedAll => "STATE_PRESENTED_ALL",
19920                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
19921                State::Dropped => "STATE_DROPPED",
19922            }
19923        }
19924    }
19925    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19926    #[repr(i32)]
19927    pub enum FrameDropReason {
19928        ReasonUnspecified = 0,
19929        /// Frame was dropped by the display-compositor.
19930        /// The display-compositor may drop a frame some times (e.g. the frame missed
19931        /// the deadline, or was blocked on surface-sync, etc.)
19932        ReasonDisplayCompositor = 1,
19933        /// Frame was dropped because of the main-thread.
19934        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
19935        /// is running expensive javascript, or doing a lot of layout updates, etc.
19936        ReasonMainThread = 2,
19937        /// Frame was dropped by the client compositor.
19938        /// The client compositor can drop some frames too (e.g. attempting to
19939        /// recover latency, missing the deadline, etc.).
19940        ReasonClientCompositor = 3,
19941    }
19942    impl FrameDropReason {
19943        /// String value of the enum field names used in the ProtoBuf definition.
19944        ///
19945        /// The values are not transformed in any way and thus are considered stable
19946        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19947        pub fn as_str_name(&self) -> &'static str {
19948            match self {
19949                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
19950                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
19951                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
19952                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
19953            }
19954        }
19955    }
19956    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19957    #[repr(i32)]
19958    pub enum ScrollState {
19959        ScrollNone = 0,
19960        ScrollMainThread = 1,
19961        ScrollCompositorThread = 2,
19962        ScrollRaster = 3,
19963        /// Used when it can't be determined whether a scroll is in progress or not.
19964        ScrollUnknown = 4,
19965    }
19966    impl ScrollState {
19967        /// String value of the enum field names used in the ProtoBuf definition.
19968        ///
19969        /// The values are not transformed in any way and thus are considered stable
19970        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19971        pub fn as_str_name(&self) -> &'static str {
19972            match self {
19973                ScrollState::ScrollNone => "SCROLL_NONE",
19974                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
19975                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
19976                ScrollState::ScrollRaster => "SCROLL_RASTER",
19977                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
19978            }
19979        }
19980    }
19981    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19982    #[repr(i32)]
19983    pub enum FrameType {
19984        Forked = 0,
19985        Backfill = 1,
19986    }
19987    impl FrameType {
19988        /// String value of the enum field names used in the ProtoBuf definition.
19989        ///
19990        /// The values are not transformed in any way and thus are considered stable
19991        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19992        pub fn as_str_name(&self) -> &'static str {
19993            match self {
19994                FrameType::Forked => "FORKED",
19995                FrameType::Backfill => "BACKFILL",
19996            }
19997        }
19998    }
19999}
20000// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20001
20002// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20003
20004/// Details about one of Chrome's keyed services associated with the event.
20005#[derive(Clone, PartialEq, ::prost::Message)]
20006pub struct ChromeKeyedService {
20007    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
20008    /// Chrome, these are static strings known at compile time).
20009    #[prost(string, optional, tag="1")]
20010    pub name: ::core::option::Option<::prost::alloc::string::String>,
20011}
20012// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20013
20014// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
20015
20016#[derive(Clone, PartialEq, ::prost::Message)]
20017pub struct ChromeLatencyInfo {
20018    #[prost(int64, optional, tag="1")]
20019    pub trace_id: ::core::option::Option<i64>,
20020    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
20021    pub step: ::core::option::Option<i32>,
20022    #[prost(int32, optional, tag="3")]
20023    pub frame_tree_node_id: ::core::option::Option<i32>,
20024    #[prost(message, repeated, tag="4")]
20025    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
20026    #[prost(bool, optional, tag="5")]
20027    pub is_coalesced: ::core::option::Option<bool>,
20028    #[prost(int64, optional, tag="6")]
20029    pub gesture_scroll_id: ::core::option::Option<i64>,
20030    #[prost(int64, optional, tag="7")]
20031    pub touch_id: ::core::option::Option<i64>,
20032    /// The type of input corresponding to this `ChromeLatencyInfo`.
20033    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
20034    pub input_type: ::core::option::Option<i32>,
20035}
20036/// Nested message and enum types in `ChromeLatencyInfo`.
20037pub mod chrome_latency_info {
20038    #[derive(Clone, PartialEq, ::prost::Message)]
20039    pub struct ComponentInfo {
20040        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
20041        pub component_type: ::core::option::Option<i32>,
20042        /// Microsecond timestamp in CLOCK_MONOTONIC domain
20043        #[prost(uint64, optional, tag="2")]
20044        pub time_us: ::core::option::Option<u64>,
20045    }
20046    /// NEXT ID: 12
20047    /// All step are optional but the enum is ordered (not by number) below in the
20048    /// order we expect them to appear if they are emitted in trace in a blocking
20049    /// fashion.
20050    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20051    #[repr(i32)]
20052    pub enum Step {
20053        Unspecified = 0,
20054        /// Emitted on the browser main thread.
20055        SendInputEventUi = 3,
20056        /// Happens on the renderer's compositor.
20057        HandleInputEventImpl = 5,
20058        DidHandleInputAndOverscroll = 8,
20059        /// Occurs on the Renderer's main thread.
20060        HandleInputEventMain = 4,
20061        MainThreadScrollUpdate = 2,
20062        HandleInputEventMainCommit = 1,
20063        /// Could be emitted on both the renderer's main OR compositor.
20064        HandledInputEventMainOrImpl = 9,
20065        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
20066        /// renderer's compositor and this will be emitted.
20067        HandledInputEventImpl = 10,
20068        /// Renderer's compositor.
20069        SwapBuffers = 6,
20070        /// Happens on the VizCompositor in the GPU process.
20071        DrawAndSwap = 7,
20072        /// Happens on the GPU main thread after the swap has completed.
20073        ///
20074        /// See above for NEXT ID, enum steps are not ordered by tag number.
20075        FinishedSwapBuffers = 11,
20076    }
20077    impl Step {
20078        /// String value of the enum field names used in the ProtoBuf definition.
20079        ///
20080        /// The values are not transformed in any way and thus are considered stable
20081        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20082        pub fn as_str_name(&self) -> &'static str {
20083            match self {
20084                Step::Unspecified => "STEP_UNSPECIFIED",
20085                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
20086                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
20087                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
20088                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
20089                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
20090                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
20091                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
20092                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
20093                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
20094                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
20095                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
20096            }
20097        }
20098    }
20099    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
20100    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
20101    /// practices.
20102    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20103    #[repr(i32)]
20104    pub enum LatencyComponentType {
20105        ComponentUnspecified = 0,
20106        ComponentInputEventLatencyBeginRwh = 1,
20107        ComponentInputEventLatencyScrollUpdateOriginal = 2,
20108        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
20109        ComponentInputEventLatencyOriginal = 4,
20110        ComponentInputEventLatencyUi = 5,
20111        ComponentInputEventLatencyRendererMain = 6,
20112        ComponentInputEventLatencyRenderingScheduledMain = 7,
20113        ComponentInputEventLatencyRenderingScheduledImpl = 8,
20114        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
20115        ComponentInputEventLatencyAckRwh = 10,
20116        ComponentInputEventLatencyRendererSwap = 11,
20117        ComponentDisplayCompositorReceivedFrame = 12,
20118        ComponentInputEventGpuSwapBuffer = 13,
20119        ComponentInputEventLatencyFrameSwap = 14,
20120    }
20121    impl LatencyComponentType {
20122        /// String value of the enum field names used in the ProtoBuf definition.
20123        ///
20124        /// The values are not transformed in any way and thus are considered stable
20125        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20126        pub fn as_str_name(&self) -> &'static str {
20127            match self {
20128                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
20129                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
20130                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
20131                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
20132                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
20133                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
20134                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
20135                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
20136                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
20137                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
20138                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
20139                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
20140                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
20141                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
20142                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
20143            }
20144        }
20145    }
20146    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20147    #[repr(i32)]
20148    pub enum InputType {
20149        UnspecifiedOrOther = 0,
20150        TouchMoved = 1,
20151        GestureScrollBegin = 2,
20152        GestureScrollUpdate = 3,
20153        GestureScrollEnd = 4,
20154        GestureTap = 5,
20155        GestureTapCancel = 6,
20156    }
20157    impl InputType {
20158        /// String value of the enum field names used in the ProtoBuf definition.
20159        ///
20160        /// The values are not transformed in any way and thus are considered stable
20161        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20162        pub fn as_str_name(&self) -> &'static str {
20163            match self {
20164                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
20165                InputType::TouchMoved => "TOUCH_MOVED",
20166                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
20167                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
20168                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
20169                InputType::GestureTap => "GESTURE_TAP",
20170                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
20171            }
20172        }
20173    }
20174}
20175// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
20176
20177// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20178
20179/// Details about a legacy Chrome IPC message that is either sent by the event.
20180/// TODO(eseckler): Also use this message on the receiving side?
20181#[derive(Clone, PartialEq, ::prost::Message)]
20182pub struct ChromeLegacyIpc {
20183    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
20184    /// enum, e.g. FrameMsgStart,
20185    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
20186    pub message_class: ::core::option::Option<i32>,
20187    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
20188    /// IPC_MESSAGE_START macros.
20189    #[prost(uint32, optional, tag="2")]
20190    pub message_line: ::core::option::Option<u32>,
20191}
20192/// Nested message and enum types in `ChromeLegacyIpc`.
20193pub mod chrome_legacy_ipc {
20194    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20195    #[repr(i32)]
20196    pub enum MessageClass {
20197        ClassUnspecified = 0,
20198        ClassAutomation = 1,
20199        ClassFrame = 2,
20200        ClassPage = 3,
20201        ClassView = 4,
20202        ClassWidget = 5,
20203        ClassInput = 6,
20204        ClassTest = 7,
20205        ClassWorker = 8,
20206        ClassNacl = 9,
20207        ClassGpuChannel = 10,
20208        ClassMedia = 11,
20209        ClassPpapi = 12,
20210        ClassChrome = 13,
20211        ClassDrag = 14,
20212        ClassPrint = 15,
20213        ClassExtension = 16,
20214        ClassTextInputClient = 17,
20215        ClassBlinkTest = 18,
20216        ClassAccessibility = 19,
20217        ClassPrerender = 20,
20218        ClassChromoting = 21,
20219        ClassBrowserPlugin = 22,
20220        ClassAndroidWebView = 23,
20221        ClassNaclHost = 24,
20222        ClassEncryptedMedia = 25,
20223        ClassCast = 26,
20224        ClassGinJavaBridge = 27,
20225        ClassChromeUtilityPrinting = 28,
20226        ClassOzoneGpu = 29,
20227        ClassWebTest = 30,
20228        ClassNetworkHints = 31,
20229        ClassExtensionsGuestView = 32,
20230        ClassGuestView = 33,
20231        ClassMediaPlayerDelegate = 34,
20232        ClassExtensionWorker = 35,
20233        ClassSubresourceFilter = 36,
20234        ClassUnfreezableFrame = 37,
20235    }
20236    impl MessageClass {
20237        /// String value of the enum field names used in the ProtoBuf definition.
20238        ///
20239        /// The values are not transformed in any way and thus are considered stable
20240        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20241        pub fn as_str_name(&self) -> &'static str {
20242            match self {
20243                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
20244                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
20245                MessageClass::ClassFrame => "CLASS_FRAME",
20246                MessageClass::ClassPage => "CLASS_PAGE",
20247                MessageClass::ClassView => "CLASS_VIEW",
20248                MessageClass::ClassWidget => "CLASS_WIDGET",
20249                MessageClass::ClassInput => "CLASS_INPUT",
20250                MessageClass::ClassTest => "CLASS_TEST",
20251                MessageClass::ClassWorker => "CLASS_WORKER",
20252                MessageClass::ClassNacl => "CLASS_NACL",
20253                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
20254                MessageClass::ClassMedia => "CLASS_MEDIA",
20255                MessageClass::ClassPpapi => "CLASS_PPAPI",
20256                MessageClass::ClassChrome => "CLASS_CHROME",
20257                MessageClass::ClassDrag => "CLASS_DRAG",
20258                MessageClass::ClassPrint => "CLASS_PRINT",
20259                MessageClass::ClassExtension => "CLASS_EXTENSION",
20260                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
20261                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
20262                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
20263                MessageClass::ClassPrerender => "CLASS_PRERENDER",
20264                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
20265                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
20266                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
20267                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
20268                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
20269                MessageClass::ClassCast => "CLASS_CAST",
20270                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
20271                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
20272                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
20273                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
20274                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
20275                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
20276                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
20277                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
20278                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
20279                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
20280                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
20281            }
20282        }
20283    }
20284}
20285// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20286
20287// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
20288
20289/// Details about Chrome message pump events
20290#[derive(Clone, PartialEq, ::prost::Message)]
20291pub struct ChromeMessagePump {
20292    /// True if there are sent messages in the queue.
20293    #[prost(bool, optional, tag="1")]
20294    pub sent_messages_in_queue: ::core::option::Option<bool>,
20295    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
20296    /// invoke.
20297    #[prost(uint64, optional, tag="2")]
20298    pub io_handler_location_iid: ::core::option::Option<u64>,
20299}
20300// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
20301
20302// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
20303
20304/// Contains information to identify mojo handling events. The trace events in
20305/// mojo are common for all mojo interfaces and this information is used to
20306/// identify who is the caller or callee.
20307#[derive(Clone, PartialEq, ::prost::Message)]
20308pub struct ChromeMojoEventInfo {
20309    /// Contains the interface name or the file name of the creator of a mojo
20310    /// handle watcher, recorded when an event if notified to the watcher. The code
20311    /// that runs within the track event belongs to the interface.
20312    #[prost(string, optional, tag="1")]
20313    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20314    /// The hash of the IPC message that is being handled.
20315    #[prost(uint32, optional, tag="2")]
20316    pub ipc_hash: ::core::option::Option<u32>,
20317    /// A static string representing the mojo interface name of the message that is
20318    /// being handled.
20319    #[prost(string, optional, tag="3")]
20320    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20321    /// Refers to an interned UnsymbolizedSourceLocation.
20322    /// The UnsymbolizedSourceLocation contains the interface method that's being
20323    /// handled, represented as a native symbol.
20324    /// The native symbol can be symbolized after the trace is recorded.
20325    /// Not using a symbolized source location for official Chromium builds to
20326    /// reduce binary size - emitting file/function names as strings into the
20327    /// trace requires storing them in the binary, which causes a significant
20328    /// binary size bloat for Chromium.
20329    #[prost(uint64, optional, tag="4")]
20330    pub mojo_interface_method_iid: ::core::option::Option<u64>,
20331    /// Indicate whether this is a message or reply.
20332    #[prost(bool, optional, tag="5")]
20333    pub is_reply: ::core::option::Option<bool>,
20334    /// The payload size of the message being sent through mojo messages.
20335    #[prost(uint64, optional, tag="6")]
20336    pub payload_size: ::core::option::Option<u64>,
20337    /// Represents the size of the message. Includes all headers and user payload.
20338    #[prost(uint64, optional, tag="7")]
20339    pub data_num_bytes: ::core::option::Option<u64>,
20340}
20341#[derive(Clone, PartialEq, ::prost::Message)]
20342pub struct ChromeRendererSchedulerState {
20343    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
20344    pub rail_mode: ::core::option::Option<i32>,
20345    #[prost(bool, optional, tag="2")]
20346    pub is_backgrounded: ::core::option::Option<bool>,
20347    #[prost(bool, optional, tag="3")]
20348    pub is_hidden: ::core::option::Option<bool>,
20349}
20350// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
20351
20352// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
20353
20354/// Details about a UI interaction initiated by the user, such as opening or
20355/// closing a tab or a context menu.
20356#[derive(Clone, PartialEq, ::prost::Message)]
20357pub struct ChromeUserEvent {
20358    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
20359    /// Chrome, these are usually static strings known at compile time, or
20360    /// concatenations of multiple such static strings).
20361    #[prost(string, optional, tag="1")]
20362    pub action: ::core::option::Option<::prost::alloc::string::String>,
20363    /// MD5 hash of the action string.
20364    #[prost(uint64, optional, tag="2")]
20365    pub action_hash: ::core::option::Option<u64>,
20366}
20367// End of protos/perfetto/trace/track_event/chrome_user_event.proto
20368
20369// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20370
20371/// Details about HWNDMessageHandler trace events.
20372#[derive(Clone, PartialEq, ::prost::Message)]
20373pub struct ChromeWindowHandleEventInfo {
20374    #[prost(uint32, optional, tag="1")]
20375    pub dpi: ::core::option::Option<u32>,
20376    #[prost(uint32, optional, tag="2")]
20377    pub message_id: ::core::option::Option<u32>,
20378    #[prost(fixed64, optional, tag="3")]
20379    pub hwnd_ptr: ::core::option::Option<u64>,
20380}
20381// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20382
20383// Begin of protos/perfetto/trace/track_event/screenshot.proto
20384
20385#[derive(Clone, PartialEq, ::prost::Message)]
20386pub struct Screenshot {
20387    /// The JPEG (Joint Photographic Experts Group) file format.
20388    #[prost(bytes="vec", optional, tag="1")]
20389    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20390    /// The PAM (Portable Arbitrary Map) file format.
20391    #[prost(bytes="vec", optional, tag="2")]
20392    pub pam_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20393    /// The PPM (Portable Pixmap) file format.
20394    #[prost(bytes="vec", optional, tag="3")]
20395    pub ppm_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20396}
20397// End of protos/perfetto/trace/track_event/screenshot.proto
20398
20399// Begin of protos/perfetto/trace/track_event/task_execution.proto
20400
20401/// TrackEvent arguments describing the execution of a task.
20402#[derive(Clone, PartialEq, ::prost::Message)]
20403pub struct TaskExecution {
20404    /// Source location that the task was posted from.
20405    /// interned SourceLocation.
20406    #[prost(uint64, optional, tag="1")]
20407    pub posted_from_iid: ::core::option::Option<u64>,
20408}
20409// Begin of protos/perfetto/trace/track_event/track_event.proto
20410
20411// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
20412// protos are still subject to change. Don't depend on them staying as they are.
20413
20414/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
20415/// which describe activity on a track, such as a thread or asynchronous event
20416/// track. The track is specified using separate TrackDescriptor messages and
20417/// referred to via the track's UUID.
20418///
20419/// A simple TrackEvent packet specifies a timestamp, category, name and type:
20420/// ```protobuf
20421///    trace_packet {
20422///      timestamp: 1000
20423///      track_event {
20424///        categories: \["my_cat"\]
20425///        name: "my_event"
20426///        type: TYPE_INSTANT
20427///       }
20428///     }
20429/// ```
20430///
20431/// To associate an event with a custom track (e.g. a thread), the track is
20432/// defined in a separate packet and referred to from the TrackEvent by its UUID:
20433/// ```protobuf
20434///    trace_packet {
20435///      track_descriptor {
20436///        track_uuid: 1234
20437///        name: "my_track"
20438///
20439///        // Optionally, associate the track with a thread.
20440///        thread_descriptor {
20441///          pid: 10
20442///          tid: 10
20443///          ..
20444///        }
20445///      }
20446///    }
20447/// ```
20448///
20449/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
20450///
20451/// ```protobuf
20452///    trace_packet {
20453///      timestamp: 1200
20454///      track_event {
20455///        track_uuid: 1234
20456///        categories: \["my_cat"\]
20457///        name: "my_slice"
20458///        type: TYPE_SLICE_BEGIN
20459///      }
20460///    }
20461///    trace_packet {
20462///      timestamp: 1400
20463///      track_event {
20464///        track_uuid: 1234
20465///        type: TYPE_SLICE_END
20466///      }
20467///    }
20468/// ```
20469/// TrackEvents also support optimizations to reduce data repetition and encoded
20470/// data size, e.g. through data interning (names, categories, ...) and delta
20471/// encoding of timestamps/counters. For details, see the InternedData message.
20472/// Further, default values for attributes of events on the same sequence (e.g.
20473/// their default track association) can be emitted as part of a
20474/// TrackEventDefaults message.
20475///
20476/// Next reserved id: 13 (up to 15). Next id: 58.
20477#[derive(Clone, PartialEq, ::prost::Message)]
20478pub struct TrackEvent {
20479    /// Names of categories of the event. In the client library, categories are a
20480    /// way to turn groups of individual events on or off.
20481    /// interned EventCategoryName.
20482    #[prost(uint64, repeated, packed="false", tag="3")]
20483    pub category_iids: ::prost::alloc::vec::Vec<u64>,
20484    /// non-interned variant.
20485    #[prost(string, repeated, tag="22")]
20486    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20487    #[prost(enumeration="track_event::Type", optional, tag="9")]
20488    pub r#type: ::core::option::Option<i32>,
20489    /// Identifies the track of the event. The default value may be overridden
20490    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
20491    /// sequence (in most cases sequence = one thread). If no value is specified
20492    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
20493    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
20494    #[prost(uint64, optional, tag="11")]
20495    pub track_uuid: ::core::option::Option<u64>,
20496    /// To encode counter values more efficiently, we support attaching additional
20497    /// counter values to a TrackEvent of any type. All values will share the same
20498    /// timestamp specified in the TracePacket. The value at
20499    /// extra_counter_values\[N\] is for the counter track referenced by
20500    /// extra_counter_track_uuids\[N\].
20501    ///
20502    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
20503    /// should always be equal or more uuids than values. It is valid to set more
20504    /// uuids (e.g. via defaults) than values. If uuids are specified in
20505    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
20506    /// default uuid list.
20507    ///
20508    /// For example, this allows snapshotting the thread time clock at each
20509    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
20510    #[prost(uint64, repeated, packed="false", tag="31")]
20511    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20512    #[prost(int64, repeated, packed="false", tag="12")]
20513    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
20514    /// Counter snapshots using floating point instead of integer values.
20515    #[prost(uint64, repeated, packed="false", tag="45")]
20516    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20517    #[prost(double, repeated, packed="false", tag="46")]
20518    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
20519    /// IDs of flows originating, passing through, or ending at this event.
20520    /// Flow IDs are global within a trace.
20521    ///
20522    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
20523    /// an input event may be handled on one thread but cause another event on
20524    /// a different thread - a flow between the two events can associate them.
20525    ///
20526    /// The direction of the flows between events is inferred from the events'
20527    /// timestamps. The earliest event with the same flow ID becomes the source
20528    /// of the flow. Any events thereafter are intermediate steps of the flow,
20529    /// until the flow terminates at the last event with the flow ID.
20530    ///
20531    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
20532    /// that the same ID can later be reused for another flow.
20533    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
20534    #[deprecated]
20535    #[prost(uint64, repeated, packed="false", tag="36")]
20536    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20537    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
20538    /// consumption.
20539    #[prost(fixed64, repeated, packed="false", tag="47")]
20540    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
20541    /// List of flow ids which should terminate on this event, otherwise same as
20542    /// |flow_ids|.
20543    /// Any one flow ID should be either listed as part of |flow_ids| OR
20544    /// |terminating_flow_ids|, not both.
20545    /// DEPRECATED. Only kept for backwards compatibility.  Use
20546    /// |terminating_flow_ids|.
20547    #[deprecated]
20548    #[prost(uint64, repeated, packed="false", tag="42")]
20549    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20550    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
20551    /// "terminating_flow_ids" to reduce memory consumption.
20552    #[prost(fixed64, repeated, packed="false", tag="48")]
20553    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
20554    /// Debug annotations associated with this event. These are arbitrary key-value
20555    /// pairs that can be used to attach additional information to the event.
20556    /// See DebugAnnotation message for details on supported value types.
20557    ///
20558    /// For example, debug annotations can be used to attach a URL or resource
20559    /// identifier to a network request event. Arrays, dictionaries and full
20560    /// nested structures (e.g. arrays of dictionaries of dictionaries)
20561    /// are supported.
20562    #[prost(message, repeated, tag="4")]
20563    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
20564    // ---------------------------------------------------------------------------
20565    // TrackEvent arguments:
20566    // ---------------------------------------------------------------------------
20567    //
20568    // NOTE: The fields below this point are NOT part of the stable public API.
20569    // They are primarily intended for internal use by Chrome and Android. These
20570    // fields may change or be removed without notice. For custom/synthetic
20571    // traces, prefer using the fields above (name, categories, type, flows,
20572    // correlation_id, callstack, etc.) along with custom debug_annotations.
20573
20574    /// Typed event arguments:
20575    #[prost(message, optional, tag="5")]
20576    pub task_execution: ::core::option::Option<TaskExecution>,
20577    #[prost(message, optional, tag="21")]
20578    pub log_message: ::core::option::Option<LogMessage>,
20579    #[prost(message, optional, tag="24")]
20580    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
20581    #[prost(message, optional, tag="25")]
20582    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
20583    #[prost(message, optional, tag="26")]
20584    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
20585    #[prost(message, optional, tag="27")]
20586    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
20587    #[prost(message, optional, tag="28")]
20588    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
20589    #[prost(message, optional, tag="29")]
20590    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
20591    /// DEPRECATED. Only kept for backwards compatibility. Use the
20592    /// |ChromeTrackEvent.frame_reporter| extension in
20593    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20594    /// instead.
20595    #[deprecated]
20596    #[prost(message, optional, tag="32")]
20597    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
20598    #[prost(message, optional, tag="39")]
20599    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
20600    #[prost(message, optional, tag="40")]
20601    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
20602    #[prost(message, optional, tag="41")]
20603    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
20604    #[prost(message, optional, tag="43")]
20605    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
20606    #[prost(message, optional, tag="49")]
20607    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
20608    #[prost(message, optional, tag="50")]
20609    pub screenshot: ::core::option::Option<Screenshot>,
20610    #[prost(message, optional, tag="35")]
20611    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
20612    #[prost(message, optional, tag="38")]
20613    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
20614    #[prost(message, optional, tag="6")]
20615    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
20616    /// Optional name of the event for its display in trace viewer. May be left
20617    /// unspecified for events with typed arguments.
20618    ///
20619    /// Note that metrics should not rely on event names, as they are prone to
20620    /// changing. Instead, they should use typed arguments to identify the events
20621    /// they are interested in.
20622    #[prost(oneof="track_event::NameField", tags="10, 23")]
20623    pub name_field: ::core::option::Option<track_event::NameField>,
20624    /// A new value for a counter track. |track_uuid| should refer to a track with
20625    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20626    /// efficient encoding of counter values that are sampled at the beginning/end
20627    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20628    /// Counter values can optionally be encoded in as delta values (positive or
20629    /// negative) on each packet sequence (see CounterIncrementalBase).
20630    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
20631    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
20632    /// An opaque identifier to correlate this slice with other slices that are
20633    /// considered part of the same logical operation, even if they are not
20634    /// causally connected. Examples uses of a correlation id might be the number
20635    /// of frame going through various stages of rendering in a GPU, the id for an
20636    /// RPC request going through a distributed system, or the id of a network
20637    /// request going through various stages of processing by the kernel.
20638    ///
20639    /// NOTE: if the events *are* causually connected, you probably want to use
20640    /// flows instead of OR in addition to correlation ids.
20641    ///
20642    /// UIs can use this identifier to visually link these slices, for instance,
20643    /// by assigning them a consistent color or highlighting the entire correlated
20644    /// set when one slice is hovered.
20645    ///
20646    /// Only one field within this 'oneof' should be set to define the correlation.
20647    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
20648    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
20649    /// Callstack associated with this event. This captures the program stack at
20650    /// the time the event occurred, useful for understanding what code path led
20651    /// to the event.
20652    ///
20653    /// Two variants are supported:
20654    /// - callstack: Inline callstack data (simpler when trace size is not a
20655    ///    concern or callstacks are unique)
20656    /// - callstack_iid: Reference to an interned Callstack in InternedData
20657    ///    (efficient for repeated callstacks)
20658    ///
20659    /// Only one of these fields should be set.
20660    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
20661    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
20662    /// This field is used only if the source location represents the function that
20663    /// executes during this event.
20664    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
20665    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
20666    // ---------------------------------------------------------------------------
20667    // Deprecated / legacy event fields, which will be removed in the future:
20668    // ---------------------------------------------------------------------------
20669
20670    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20671    /// TracePacket instead.
20672    ///
20673    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20674    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
20675    pub timestamp: ::core::option::Option<track_event::Timestamp>,
20676    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20677    /// encode thread time instead.
20678    ///
20679    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20680    /// microseconds.
20681    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
20682    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
20683    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20684    /// encode thread instruction count instead.
20685    ///
20686    /// Value of the instruction counter for the current thread.
20687    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
20688    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
20689}
20690/// Nested message and enum types in `TrackEvent`.
20691pub mod track_event {
20692    /// Inline callstack for TrackEvents when interning is not needed.
20693    /// This is a simplified version of the profiling Callstack/Frame messages,
20694    /// designed for cases where trace size is not critical or callstacks are
20695    /// unique.
20696    ///
20697    /// Use this for simple callstacks with function names and source locations.
20698    /// For binary/library information (mappings, build IDs, relative PCs), use
20699    /// interned callstacks via callstack_iid instead.
20700    #[derive(Clone, PartialEq, ::prost::Message)]
20701    pub struct Callstack {
20702        /// Frames of this callstack, ordered from bottom (outermost) to top
20703        /// (innermost). For example, if main() calls foo() which calls bar(), the
20704        /// frames would be: [main, foo, bar]
20705        #[prost(message, repeated, tag="1")]
20706        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
20707    }
20708    /// Nested message and enum types in `Callstack`.
20709    pub mod callstack {
20710        /// Frame within an inline callstack.
20711        #[derive(Clone, PartialEq, ::prost::Message)]
20712        pub struct Frame {
20713            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
20714            #[prost(string, optional, tag="1")]
20715            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20716            /// Optional: Source file path, e.g., "/src/foo.cc"
20717            #[prost(string, optional, tag="2")]
20718            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
20719            /// Optional: Line number in the source file
20720            #[prost(uint32, optional, tag="3")]
20721            pub line_number: ::core::option::Option<u32>,
20722        }
20723    }
20724    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
20725    /// event attributes are initially simply proxied for conversion to a JSON
20726    /// trace. We intend to gradually transition these attributes to similar native
20727    /// features in TrackEvent (e.g. async + flow events), or deprecate them
20728    /// without replacement where transition is unsuitable.
20729    ///
20730    /// Next reserved id: 16 (up to 16).
20731    /// Next id: 20.
20732    #[derive(Clone, PartialEq, ::prost::Message)]
20733    pub struct LegacyEvent {
20734        /// Deprecated, use TrackEvent::name(_iid) instead.
20735        /// interned EventName.
20736        #[prost(uint64, optional, tag="1")]
20737        pub name_iid: ::core::option::Option<u64>,
20738        #[prost(int32, optional, tag="2")]
20739        pub phase: ::core::option::Option<i32>,
20740        #[prost(int64, optional, tag="3")]
20741        pub duration_us: ::core::option::Option<i64>,
20742        #[prost(int64, optional, tag="4")]
20743        pub thread_duration_us: ::core::option::Option<i64>,
20744        /// Elapsed retired instruction count during the event.
20745        #[prost(int64, optional, tag="15")]
20746        pub thread_instruction_delta: ::core::option::Option<i64>,
20747        /// Additional optional scope for |id|.
20748        #[prost(string, optional, tag="7")]
20749        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
20750        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
20751        #[prost(bool, optional, tag="9")]
20752        pub use_async_tts: ::core::option::Option<bool>,
20753        /// Idenfifies a flow. Flow events with the same bind_id are connected.
20754        #[prost(uint64, optional, tag="8")]
20755        pub bind_id: ::core::option::Option<u64>,
20756        /// Use the enclosing slice as binding point for a flow end event instead of
20757        /// the next slice. Flow start/step events always bind to the enclosing
20758        /// slice.
20759        #[prost(bool, optional, tag="12")]
20760        pub bind_to_enclosing: ::core::option::Option<bool>,
20761        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
20762        pub flow_direction: ::core::option::Option<i32>,
20763        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
20764        pub instant_event_scope: ::core::option::Option<i32>,
20765        /// Override the pid/tid if the writer needs to emit events on behalf of
20766        /// another process/thread. This should be the exception. Normally, the
20767        /// pid+tid from ThreadDescriptor is used.
20768        #[prost(int32, optional, tag="18")]
20769        pub pid_override: ::core::option::Option<i32>,
20770        #[prost(int32, optional, tag="19")]
20771        pub tid_override: ::core::option::Option<i32>,
20772        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
20773        pub id: ::core::option::Option<legacy_event::Id>,
20774    }
20775    /// Nested message and enum types in `LegacyEvent`.
20776    pub mod legacy_event {
20777        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20778        #[repr(i32)]
20779        pub enum FlowDirection {
20780            FlowUnspecified = 0,
20781            FlowIn = 1,
20782            FlowOut = 2,
20783            FlowInout = 3,
20784        }
20785        impl FlowDirection {
20786            /// String value of the enum field names used in the ProtoBuf definition.
20787            ///
20788            /// The values are not transformed in any way and thus are considered stable
20789            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20790            pub fn as_str_name(&self) -> &'static str {
20791                match self {
20792                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
20793                    FlowDirection::FlowIn => "FLOW_IN",
20794                    FlowDirection::FlowOut => "FLOW_OUT",
20795                    FlowDirection::FlowInout => "FLOW_INOUT",
20796                }
20797            }
20798        }
20799        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20800        #[repr(i32)]
20801        pub enum InstantEventScope {
20802            ScopeUnspecified = 0,
20803            ScopeGlobal = 1,
20804            ScopeProcess = 2,
20805            ScopeThread = 3,
20806        }
20807        impl InstantEventScope {
20808            /// String value of the enum field names used in the ProtoBuf definition.
20809            ///
20810            /// The values are not transformed in any way and thus are considered stable
20811            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20812            pub fn as_str_name(&self) -> &'static str {
20813                match self {
20814                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
20815                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
20816                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
20817                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
20818                }
20819            }
20820        }
20821        #[derive(Clone, PartialEq, ::prost::Oneof)]
20822        pub enum Id {
20823            #[prost(uint64, tag="6")]
20824            UnscopedId(u64),
20825            #[prost(uint64, tag="10")]
20826            LocalId(u64),
20827            #[prost(uint64, tag="11")]
20828            GlobalId(u64),
20829        }
20830    }
20831    // TODO(eseckler): Support using binary symbols for category/event names.
20832
20833    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
20834    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20835    #[repr(i32)]
20836    pub enum Type {
20837        Unspecified = 0,
20838        /// Slice events are events that have a begin and end timestamp, i.e. a
20839        /// duration. They can be nested similar to a callstack: If, on the same
20840        /// track, event B begins after event A, but before A ends, B is a child
20841        /// event of A and will be drawn as a nested event underneath A in the UI.
20842        /// Note that child events should always end before their parents (e.g. B
20843        /// before A).
20844        ///
20845        /// Each slice event is formed by a pair of BEGIN + END events. The END event
20846        /// does not need to repeat any TrackEvent fields it has in common with its
20847        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
20848        /// END pair will be merged during trace import.
20849        ///
20850        /// Note that we deliberately chose not to support COMPLETE events (which
20851        /// would specify a duration directly) since clients would need to delay
20852        /// writing them until the slice is completed, which can result in reordered
20853        /// events in the trace and loss of unfinished events at the end of a trace.
20854        SliceBegin = 1,
20855        SliceEnd = 2,
20856        /// Instant events are nestable events without duration. They can be children
20857        /// of slice events on the same track.
20858        Instant = 3,
20859        /// Event that provides a value for a counter track. |track_uuid| should
20860        /// refer to a counter track and |counter_value| set to the new value. Note
20861        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
20862        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
20863        Counter = 4,
20864        /// Event that provides a state value update for a state track. Think of this
20865        /// as a symbolic counter (a TYPE_COUNTER with literals rather then numbers).
20866        /// |track_uuid| should refer to a state track, and the state value update is
20867        /// carried in the |state| field. An empty or unset state field indicates "no
20868        /// state" / "idle". For more details, see
20869        /// \[RFC-0023\](<https://github.com/google/perfetto/discussions/5549>).
20870        State = 5,
20871    }
20872    impl Type {
20873        /// String value of the enum field names used in the ProtoBuf definition.
20874        ///
20875        /// The values are not transformed in any way and thus are considered stable
20876        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20877        pub fn as_str_name(&self) -> &'static str {
20878            match self {
20879                Type::Unspecified => "TYPE_UNSPECIFIED",
20880                Type::SliceBegin => "TYPE_SLICE_BEGIN",
20881                Type::SliceEnd => "TYPE_SLICE_END",
20882                Type::Instant => "TYPE_INSTANT",
20883                Type::Counter => "TYPE_COUNTER",
20884                Type::State => "TYPE_STATE",
20885            }
20886        }
20887    }
20888    /// Optional name of the event for its display in trace viewer. May be left
20889    /// unspecified for events with typed arguments.
20890    ///
20891    /// Note that metrics should not rely on event names, as they are prone to
20892    /// changing. Instead, they should use typed arguments to identify the events
20893    /// they are interested in.
20894    #[derive(Clone, PartialEq, ::prost::Oneof)]
20895    pub enum NameField {
20896        /// interned EventName.
20897        #[prost(uint64, tag="10")]
20898        NameIid(u64),
20899        /// non-interned variant.
20900        #[prost(string, tag="23")]
20901        Name(::prost::alloc::string::String),
20902    }
20903    /// A new value for a counter track. |track_uuid| should refer to a track with
20904    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20905    /// efficient encoding of counter values that are sampled at the beginning/end
20906    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20907    /// Counter values can optionally be encoded in as delta values (positive or
20908    /// negative) on each packet sequence (see CounterIncrementalBase).
20909    #[derive(Clone, PartialEq, ::prost::Oneof)]
20910    pub enum CounterValueField {
20911        #[prost(int64, tag="30")]
20912        CounterValue(i64),
20913        #[prost(double, tag="44")]
20914        DoubleCounterValue(f64),
20915    }
20916    /// An opaque identifier to correlate this slice with other slices that are
20917    /// considered part of the same logical operation, even if they are not
20918    /// causally connected. Examples uses of a correlation id might be the number
20919    /// of frame going through various stages of rendering in a GPU, the id for an
20920    /// RPC request going through a distributed system, or the id of a network
20921    /// request going through various stages of processing by the kernel.
20922    ///
20923    /// NOTE: if the events *are* causually connected, you probably want to use
20924    /// flows instead of OR in addition to correlation ids.
20925    ///
20926    /// UIs can use this identifier to visually link these slices, for instance,
20927    /// by assigning them a consistent color or highlighting the entire correlated
20928    /// set when one slice is hovered.
20929    ///
20930    /// Only one field within this 'oneof' should be set to define the correlation.
20931    #[derive(Clone, PartialEq, ::prost::Oneof)]
20932    pub enum CorrelationIdField {
20933        /// A 64-bit unsigned integer used as the correlation ID.
20934        ///
20935        /// Best for performance and compact traces if the identifier is naturally
20936        /// numerical or can be easily mapped to one by the trace producer.
20937        #[prost(uint64, tag="52")]
20938        CorrelationId(u64),
20939        /// A string value used as the correlation ID.
20940        ///
20941        /// Offers maximum flexibility for human-readable or complex identifiers
20942        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
20943        /// size. For frequently repeated string identifiers, consider
20944        /// 'correlation_id_string_iid'.
20945        #[prost(string, tag="53")]
20946        CorrelationIdStr(::prost::alloc::string::String),
20947        /// An interned string identifier (an IID) for correlation.
20948        ///
20949        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
20950        /// field within the packet sequence's InternedData. This approach combines
20951        /// the descriptiveness and uniqueness of strings with the efficiency of
20952        /// integer IDs for storage and comparison, especially for identifiers that
20953        /// repeat across many events.
20954        #[prost(uint64, tag="54")]
20955        CorrelationIdStrIid(u64),
20956    }
20957    /// Callstack associated with this event. This captures the program stack at
20958    /// the time the event occurred, useful for understanding what code path led
20959    /// to the event.
20960    ///
20961    /// Two variants are supported:
20962    /// - callstack: Inline callstack data (simpler when trace size is not a
20963    ///    concern or callstacks are unique)
20964    /// - callstack_iid: Reference to an interned Callstack in InternedData
20965    ///    (efficient for repeated callstacks)
20966    ///
20967    /// Only one of these fields should be set.
20968    #[derive(Clone, PartialEq, ::prost::Oneof)]
20969    pub enum CallstackField {
20970        /// Inline callstack data. Use this for simplicity when interning is not
20971        /// needed (e.g., for unique callstacks or when trace size is not critical).
20972        #[prost(message, tag="55")]
20973        Callstack(Callstack),
20974        /// Reference to interned Callstack (see InternedData.callstacks).
20975        /// This is the efficient option when callstacks are repeated.
20976        ///
20977        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
20978        #[prost(uint64, tag="56")]
20979        CallstackIid(u64),
20980    }
20981    /// This field is used only if the source location represents the function that
20982    /// executes during this event.
20983    #[derive(Clone, PartialEq, ::prost::Oneof)]
20984    pub enum SourceLocationField {
20985        /// Non-interned field.
20986        #[prost(message, tag="33")]
20987        SourceLocation(super::SourceLocation),
20988        /// Interned field.
20989        #[prost(uint64, tag="34")]
20990        SourceLocationIid(u64),
20991    }
20992    // ---------------------------------------------------------------------------
20993    // Deprecated / legacy event fields, which will be removed in the future:
20994    // ---------------------------------------------------------------------------
20995
20996    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20997    /// TracePacket instead.
20998    ///
20999    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
21000    #[derive(Clone, PartialEq, ::prost::Oneof)]
21001    pub enum Timestamp {
21002        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21003        /// calculate the absolute timestamp value, sum up all delta values of the
21004        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21005        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21006        /// be positive.
21007        #[prost(int64, tag="1")]
21008        TimestampDeltaUs(i64),
21009        /// Absolute value (e.g. a manually specified timestamp in the macro).
21010        /// This is a one-off value that does not affect delta timestamp computation
21011        /// in subsequent TrackEvents.
21012        #[prost(int64, tag="16")]
21013        TimestampAbsoluteUs(i64),
21014    }
21015    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21016    /// encode thread time instead.
21017    ///
21018    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
21019    /// microseconds.
21020    #[derive(Clone, PartialEq, ::prost::Oneof)]
21021    pub enum ThreadTime {
21022        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21023        /// calculate the absolute timestamp value, sum up all delta values of the
21024        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21025        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21026        /// be positive.
21027        #[prost(int64, tag="2")]
21028        ThreadTimeDeltaUs(i64),
21029        /// This is a one-off absolute value that does not affect delta timestamp
21030        /// computation in subsequent TrackEvents.
21031        #[prost(int64, tag="17")]
21032        ThreadTimeAbsoluteUs(i64),
21033    }
21034    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21035    /// encode thread instruction count instead.
21036    ///
21037    /// Value of the instruction counter for the current thread.
21038    #[derive(Clone, PartialEq, ::prost::Oneof)]
21039    pub enum ThreadInstructionCount {
21040        /// Same encoding as |thread_time| field above.
21041        #[prost(int64, tag="8")]
21042        ThreadInstructionCountDelta(i64),
21043        #[prost(int64, tag="20")]
21044        ThreadInstructionCountAbsolute(i64),
21045    }
21046}
21047/// Default values for fields of all TrackEvents on the same packet sequence.
21048/// Should be emitted as part of TracePacketDefaults whenever incremental state
21049/// is cleared. It's defined here because field IDs should match those of the
21050/// corresponding fields in TrackEvent.
21051#[derive(Clone, PartialEq, ::prost::Message)]
21052pub struct TrackEventDefaults {
21053    #[prost(uint64, optional, tag="11")]
21054    pub track_uuid: ::core::option::Option<u64>,
21055    #[prost(uint64, repeated, packed="false", tag="31")]
21056    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21057    #[prost(uint64, repeated, packed="false", tag="45")]
21058    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21059}
21060// --------------------
21061// Interned data types:
21062// --------------------
21063
21064#[derive(Clone, PartialEq, ::prost::Message)]
21065pub struct EventCategory {
21066    #[prost(uint64, optional, tag="1")]
21067    pub iid: ::core::option::Option<u64>,
21068    #[prost(string, optional, tag="2")]
21069    pub name: ::core::option::Option<::prost::alloc::string::String>,
21070}
21071#[derive(Clone, PartialEq, ::prost::Message)]
21072pub struct EventName {
21073    #[prost(uint64, optional, tag="1")]
21074    pub iid: ::core::option::Option<u64>,
21075    #[prost(string, optional, tag="2")]
21076    pub name: ::core::option::Option<::prost::alloc::string::String>,
21077}
21078// End of protos/perfetto/trace/track_event/track_event.proto
21079
21080// Begin of protos/perfetto/trace/interned_data/interned_data.proto
21081
21082// ------------------------------ DATA INTERNING: ------------------------------
21083// Interning indexes are built up gradually by adding the entries contained in
21084// each TracePacket of the same packet sequence (packets emitted by the same
21085// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
21086// can only refer to interned data from other packets in the same sequence.
21087//
21088// The writer will emit new entries when it encounters new internable values
21089// that aren't yet in the index. Data in current and subsequent TracePackets can
21090// then refer to the entry by its position (interning ID, abbreviated "iid") in
21091// its index. An interning ID with value 0 is considered invalid (not set).
21092//
21093// Because of the incremental build-up, the interning index will miss data when
21094// TracePackets are lost, e.g. because a chunk was overridden in the central
21095// ring buffer. To avoid invalidation of the whole trace in such a case, the
21096// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
21097// When packet loss occurs, the reader will only lose interning data up to the
21098// next reset.
21099// -----------------------------------------------------------------------------
21100
21101/// Message that contains new entries for the interning indices of a packet
21102/// sequence.
21103///
21104/// The writer will usually emit new entries in the same TracePacket that first
21105/// refers to them (since the last reset of interning state). They may also be
21106/// emitted proactively in advance of referring to them in later packets.
21107///
21108/// Next reserved id: 8 (up to 15).
21109/// Next id: 48.
21110///
21111/// TODO(eseckler): Replace iid fields inside interned messages with
21112/// map<iid, message> type fields in InternedData.
21113#[derive(Clone, PartialEq, ::prost::Message)]
21114pub struct InternedData {
21115    /// Each field's message type needs to specify an |iid| field, which is the ID
21116    /// of the entry in the field's interning index. Each field constructs its own
21117    /// index, thus interning IDs are scoped to the tracing session and field
21118    /// (usually as a counter for efficient var-int encoding), and optionally to
21119    /// the incremental state generation of the packet sequence.
21120    #[prost(message, repeated, tag="1")]
21121    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
21122    #[prost(message, repeated, tag="2")]
21123    pub event_names: ::prost::alloc::vec::Vec<EventName>,
21124    #[prost(message, repeated, tag="3")]
21125    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
21126    #[prost(message, repeated, tag="27")]
21127    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
21128    #[prost(message, repeated, tag="4")]
21129    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
21130    #[prost(message, repeated, tag="28")]
21131    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
21132    #[prost(message, repeated, tag="20")]
21133    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
21134    #[prost(message, repeated, tag="25")]
21135    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
21136    // Note: field IDs up to 15 should be used for frequent data only.
21137
21138    /// Build IDs of exectuable files.
21139    #[prost(message, repeated, tag="16")]
21140    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
21141    /// Paths to executable files.
21142    #[prost(message, repeated, tag="17")]
21143    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
21144    /// Paths to source files.
21145    #[prost(message, repeated, tag="18")]
21146    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
21147    /// Names of functions used in frames below.
21148    #[prost(message, repeated, tag="5")]
21149    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
21150    /// Executable files mapped into processes.
21151    #[prost(message, repeated, tag="19")]
21152    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21153    /// Frames of callstacks of a program.
21154    #[prost(message, repeated, tag="6")]
21155    pub frames: ::prost::alloc::vec::Vec<Frame>,
21156    /// A callstack of a program.
21157    #[prost(message, repeated, tag="7")]
21158    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21159    /// Additional Vulkan information sent in a VulkanMemoryEvent message
21160    #[prost(message, repeated, tag="22")]
21161    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
21162    /// Graphics context of a render stage event.  This represent the GL
21163    /// context for an OpenGl app or the VkDevice for a Vulkan app.
21164    #[prost(message, repeated, tag="23")]
21165    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
21166    /// Description of a GPU hardware queue or render stage.
21167    #[prost(message, repeated, tag="24")]
21168    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
21169    /// This is set when FtraceConfig.symbolize_ksyms = true.
21170    /// The id of each symbol the number that will be reported in ftrace events
21171    /// like sched_block_reason.caller and is obtained from a monotonic counter.
21172    /// The same symbol can have different indexes in different bundles.
21173    /// This is is NOT the real address. This is to avoid disclosing KASLR through
21174    /// traces.
21175    #[prost(message, repeated, tag="26")]
21176    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
21177    /// Interned string values in the DebugAnnotation proto.
21178    #[prost(message, repeated, tag="29")]
21179    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
21180    /// Interned name of a js function. We only intern js functions as there is a
21181    /// lot of duplication for them, but less so for other strings in the V8 data
21182    /// source.
21183    #[prost(message, repeated, tag="31")]
21184    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
21185    /// Js functions can be emitted multiple times for various compilation tiers,
21186    /// so it makes sense to deduplicate all this.
21187    #[prost(message, repeated, tag="32")]
21188    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
21189    /// Interned JS script (there is one associated with each JS function)
21190    #[prost(message, repeated, tag="33")]
21191    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
21192    /// Interned Wasm script (there is one associated with each Wasm function)
21193    #[prost(message, repeated, tag="34")]
21194    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
21195    /// Every V8 event is associated with an isolate, intern the isolate to remove
21196    /// duplication.
21197    #[prost(message, repeated, tag="35")]
21198    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
21199    /// Interned protolog strings args.
21200    #[prost(message, repeated, tag="36")]
21201    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
21202    /// Interned protolog stacktraces.
21203    #[prost(message, repeated, tag="37")]
21204    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
21205    /// viewcapture
21206    #[prost(message, repeated, tag="38")]
21207    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
21208    #[prost(message, repeated, tag="39")]
21209    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
21210    #[prost(message, repeated, tag="40")]
21211    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
21212    #[prost(message, repeated, tag="41")]
21213    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
21214    #[prost(message, repeated, tag="45")]
21215    pub viewcapture_content_description: ::prost::alloc::vec::Vec<InternedString>,
21216    #[prost(message, repeated, tag="46")]
21217    pub viewcapture_text: ::prost::alloc::vec::Vec<InternedString>,
21218    /// Interned correlation ids in track_event.
21219    #[prost(message, repeated, tag="43")]
21220    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
21221    /// Description of GPU counters available in a data source.
21222    #[prost(message, repeated, tag="47")]
21223    pub gpu_counter_descriptors: ::prost::alloc::vec::Vec<InternedGpuCounterDescriptor>,
21224}
21225// End of protos/perfetto/trace/interned_data/interned_data.proto
21226
21227// Begin of protos/perfetto/trace/linux/journald_event.proto
21228
21229/// A journald log event packet, collected from the Linux systemd journal.
21230/// Emitted by the "linux.systemd_journald" data source in traced_probes.
21231/// Next field id: 13, statistics starting at 20
21232#[derive(Clone, PartialEq, ::prost::Message)]
21233pub struct SystemdJournaldEvent {
21234    /// _PID: PID of the process that wrote the log entry (trusted).
21235    #[prost(uint32, optional, tag="1")]
21236    pub pid: ::core::option::Option<u32>,
21237    /// _TID: thread ID of the logging thread (trusted, set by journald for
21238    /// native journal protocol entries). Absent for syslog, stdout-piped, and
21239    /// kernel entries.
21240    #[prost(uint32, optional, tag="2")]
21241    pub tid: ::core::option::Option<u32>,
21242    /// _UID: user ID of the process (trusted).
21243    #[prost(uint32, optional, tag="3")]
21244    pub uid: ::core::option::Option<u32>,
21245    /// _GID: group ID of the process (trusted).
21246    #[prost(uint32, optional, tag="4")]
21247    pub gid: ::core::option::Option<u32>,
21248    /// PRIORITY: syslog priority level 0 (EMERG) .. 7 (DEBUG).
21249    #[prost(uint32, optional, tag="5")]
21250    pub prio: ::core::option::Option<u32>,
21251    /// SYSLOG_IDENTIFIER: program name / tag, set by the logging application.
21252    #[prost(string, optional, tag="6")]
21253    pub tag: ::core::option::Option<::prost::alloc::string::String>,
21254    /// MESSAGE: the human-readable log message text.
21255    #[prost(string, optional, tag="7")]
21256    pub message: ::core::option::Option<::prost::alloc::string::String>,
21257    /// _COMM: short process name as known to the kernel (trusted).
21258    #[prost(string, optional, tag="8")]
21259    pub comm: ::core::option::Option<::prost::alloc::string::String>,
21260    /// _EXE: full executable path (trusted).
21261    #[prost(string, optional, tag="9")]
21262    pub exe: ::core::option::Option<::prost::alloc::string::String>,
21263    /// _SYSTEMD_UNIT: the systemd unit that owns this process (trusted).
21264    #[prost(string, optional, tag="10")]
21265    pub systemd_unit: ::core::option::Option<::prost::alloc::string::String>,
21266    /// _HOSTNAME: hostname of the machine (trusted).
21267    #[prost(string, optional, tag="11")]
21268    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
21269    /// _TRANSPORT: how the entry was received by journald (trusted).
21270    /// Values: "audit", "driver", "syslog", "journal", "stdout", "kernel".
21271    #[prost(string, optional, tag="12")]
21272    pub transport: ::core::option::Option<::prost::alloc::string::String>,
21273    /// These statistics emitted once on Flush()
21274    #[prost(uint64, optional, tag="20")]
21275    pub num_total: ::core::option::Option<u64>,
21276    #[prost(uint64, optional, tag="21")]
21277    pub num_failed: ::core::option::Option<u64>,
21278}
21279// End of protos/perfetto/trace/linux/journald_event.proto
21280
21281// Begin of protos/perfetto/trace/memory_graph.proto
21282
21283// Message definitions for app-reported memory breakdowns. At the moment, this
21284// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
21285// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
21286// This is unrelated to the native or java heap profilers (those protos live
21287// in //protos/perfetto/trace/profiling/).
21288
21289#[derive(Clone, PartialEq, ::prost::Message)]
21290pub struct MemoryTrackerSnapshot {
21291    /// Unique ID that represents the global memory dump.
21292    #[prost(uint64, optional, tag="1")]
21293    pub global_dump_id: ::core::option::Option<u64>,
21294    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
21295    pub level_of_detail: ::core::option::Option<i32>,
21296    #[prost(message, repeated, tag="3")]
21297    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
21298}
21299/// Nested message and enum types in `MemoryTrackerSnapshot`.
21300pub mod memory_tracker_snapshot {
21301    /// Memory snapshot of a process. The snapshot contains memory data that is
21302    /// from 2 different sources, namely system stats and instrumentation stats.
21303    /// The system memory usage stats come from the OS based on standard API
21304    /// available in the platform to query memory usage. The instrumentation stats
21305    /// are added by instrumenting specific piece of code which tracks memory
21306    /// allocations and deallocations made by a small sub-system within the
21307    /// application.
21308    /// The system stats of the global memory snapshot are recorded as part of
21309    /// ProcessStats and SmapsPacket fields in trace packet with the same
21310    /// timestamp.
21311    #[derive(Clone, PartialEq, ::prost::Message)]
21312    pub struct ProcessSnapshot {
21313        /// Process ID of the process
21314        #[prost(int32, optional, tag="1")]
21315        pub pid: ::core::option::Option<i32>,
21316        #[prost(message, repeated, tag="2")]
21317        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
21318        #[prost(message, repeated, tag="3")]
21319        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
21320    }
21321    /// Nested message and enum types in `ProcessSnapshot`.
21322    pub mod process_snapshot {
21323        // Memory dumps are represented as a graph of memory nodes which contain
21324        // statistics. To avoid double counting the same memory across different
21325        // nodes, edges are used to mark nodes that account for the same memory. See
21326        // this doc for examples of the usage:
21327        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
21328
21329        /// A single node in the memory graph.
21330        #[derive(Clone, PartialEq, ::prost::Message)]
21331        pub struct MemoryNode {
21332            /// Unique ID of the node across all processes involved in the global
21333            /// memory dump. The ID is only unique within this particular global dump
21334            /// identified by GlobalMemoryDumpPacket.global_dump_id.
21335            #[prost(uint64, optional, tag="1")]
21336            pub id: ::core::option::Option<u64>,
21337            /// Absolute name is a unique name for the memory node within the process
21338            /// with ProcessMemoryDump.pid. The name can contain multiple parts
21339            /// separated by '/', which traces the edges of the node from the root
21340            /// node.
21341            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
21342            /// node "buffer1" in a graph structure of:
21343            ///    root -> partition_allocator -> array_buffers -> buffer1.
21344            #[prost(string, optional, tag="2")]
21345            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
21346            /// A weak node means that the instrumentation that added the current node
21347            /// is unsure about the existence of the actual memory. Unless a "strong"
21348            /// (non-weak is default) node that has an edge to the current node exists
21349            /// in the current global dump, the current node will be discarded.
21350            #[prost(bool, optional, tag="3")]
21351            pub weak: ::core::option::Option<bool>,
21352            /// Size of the node in bytes, used to compute the effective size of the
21353            /// nodes without double counting.
21354            #[prost(uint64, optional, tag="4")]
21355            pub size_bytes: ::core::option::Option<u64>,
21356            #[prost(message, repeated, tag="5")]
21357            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
21358        }
21359        /// Nested message and enum types in `MemoryNode`.
21360        pub mod memory_node {
21361            /// Entries in the memory node that contain statistics and additional
21362            /// debuggable information about the memory. The size of the node is
21363            /// tracked separately in the |size_bytes| field.
21364            #[derive(Clone, PartialEq, ::prost::Message)]
21365            pub struct MemoryNodeEntry {
21366                #[prost(string, optional, tag="1")]
21367                pub name: ::core::option::Option<::prost::alloc::string::String>,
21368                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
21369                pub units: ::core::option::Option<i32>,
21370                /// Contains either one of uint64 or string value.
21371                #[prost(uint64, optional, tag="3")]
21372                pub value_uint64: ::core::option::Option<u64>,
21373                #[prost(string, optional, tag="4")]
21374                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
21375            }
21376            /// Nested message and enum types in `MemoryNodeEntry`.
21377            pub mod memory_node_entry {
21378                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21379                #[repr(i32)]
21380                pub enum Units {
21381                    Unspecified = 0,
21382                    Bytes = 1,
21383                    Count = 2,
21384                }
21385                impl Units {
21386                    /// String value of the enum field names used in the ProtoBuf definition.
21387                    ///
21388                    /// The values are not transformed in any way and thus are considered stable
21389                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21390                    pub fn as_str_name(&self) -> &'static str {
21391                        match self {
21392                            Units::Unspecified => "UNSPECIFIED",
21393                            Units::Bytes => "BYTES",
21394                            Units::Count => "COUNT",
21395                        }
21396                    }
21397                }
21398            }
21399        }
21400        /// A directed edge that connects any 2 nodes in the graph above. These are
21401        /// in addition to the inherent edges added due to the tree structure of the
21402        /// node's absolute names.
21403        /// Node with id |source_id| owns the node with id |target_id|, and has the
21404        /// effect of attributing the memory usage of target to source. |importance|
21405        /// is optional and relevant only for the cases of co-ownership, where it
21406        /// acts as a z-index: the owner with the highest importance will be
21407        /// attributed target's memory.
21408        #[derive(Clone, PartialEq, ::prost::Message)]
21409        pub struct MemoryEdge {
21410            #[prost(uint64, optional, tag="1")]
21411            pub source_id: ::core::option::Option<u64>,
21412            #[prost(uint64, optional, tag="2")]
21413            pub target_id: ::core::option::Option<u64>,
21414            #[prost(uint32, optional, tag="3")]
21415            pub importance: ::core::option::Option<u32>,
21416            #[prost(bool, optional, tag="4")]
21417            pub overridable: ::core::option::Option<bool>,
21418        }
21419    }
21420    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21421    #[repr(i32)]
21422    pub enum LevelOfDetail {
21423        DetailFull = 0,
21424        DetailLight = 1,
21425        DetailBackground = 2,
21426    }
21427    impl LevelOfDetail {
21428        /// String value of the enum field names used in the ProtoBuf definition.
21429        ///
21430        /// The values are not transformed in any way and thus are considered stable
21431        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21432        pub fn as_str_name(&self) -> &'static str {
21433            match self {
21434                LevelOfDetail::DetailFull => "DETAIL_FULL",
21435                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
21436                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
21437            }
21438        }
21439    }
21440}
21441// End of protos/perfetto/trace/memory_graph.proto
21442
21443// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21444
21445/// Used to trace the execution of perfetto itself.
21446#[derive(Clone, PartialEq, ::prost::Message)]
21447pub struct PerfettoMetatrace {
21448    /// Only when using |event_id|.
21449    #[prost(uint64, optional, tag="3")]
21450    pub event_duration_ns: ::core::option::Option<u64>,
21451    /// Only when using |counter_id|.
21452    #[prost(int32, optional, tag="4")]
21453    pub counter_value: ::core::option::Option<i32>,
21454    /// ID of the thread that emitted the event.
21455    #[prost(uint32, optional, tag="5")]
21456    pub thread_id: ::core::option::Option<u32>,
21457    /// If true the meta-tracing ring buffer had overruns and hence some data is
21458    /// missing from this point.
21459    #[prost(bool, optional, tag="6")]
21460    pub has_overruns: ::core::option::Option<bool>,
21461    /// Args for the event.
21462    #[prost(message, repeated, tag="7")]
21463    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
21464    #[prost(message, repeated, tag="10")]
21465    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
21466    /// See base/metatrace_events.h for definitions.
21467    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
21468    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
21469}
21470/// Nested message and enum types in `PerfettoMetatrace`.
21471pub mod perfetto_metatrace {
21472    #[derive(Clone, PartialEq, ::prost::Message)]
21473    pub struct Arg {
21474        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
21475        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
21476        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
21477        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
21478    }
21479    /// Nested message and enum types in `Arg`.
21480    pub mod arg {
21481        #[derive(Clone, PartialEq, ::prost::Oneof)]
21482        pub enum KeyOrInternedKey {
21483            #[prost(string, tag="1")]
21484            Key(::prost::alloc::string::String),
21485            #[prost(uint64, tag="3")]
21486            KeyIid(u64),
21487        }
21488        #[derive(Clone, PartialEq, ::prost::Oneof)]
21489        pub enum ValueOrInternedValue {
21490            #[prost(string, tag="2")]
21491            Value(::prost::alloc::string::String),
21492            #[prost(uint64, tag="4")]
21493            ValueIid(u64),
21494        }
21495    }
21496    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
21497    /// |value_iid| above.
21498    #[derive(Clone, PartialEq, ::prost::Message)]
21499    pub struct InternedString {
21500        #[prost(uint64, optional, tag="1")]
21501        pub iid: ::core::option::Option<u64>,
21502        #[prost(string, optional, tag="2")]
21503        pub value: ::core::option::Option<::prost::alloc::string::String>,
21504    }
21505    /// See base/metatrace_events.h for definitions.
21506    #[derive(Clone, PartialEq, ::prost::Oneof)]
21507    pub enum RecordType {
21508        #[prost(uint32, tag="1")]
21509        EventId(u32),
21510        #[prost(uint32, tag="2")]
21511        CounterId(u32),
21512        /// For trace processor metatracing.
21513        #[prost(string, tag="8")]
21514        EventName(::prost::alloc::string::String),
21515        #[prost(uint64, tag="11")]
21516        EventNameIid(u64),
21517        #[prost(string, tag="9")]
21518        CounterName(::prost::alloc::string::String),
21519    }
21520}
21521// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21522
21523// Begin of protos/perfetto/trace/perfetto/trace_provenance.proto
21524
21525#[derive(Clone, PartialEq, ::prost::Message)]
21526pub struct TraceProvenance {
21527    #[prost(message, repeated, tag="2")]
21528    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
21529}
21530/// Nested message and enum types in `TraceProvenance`.
21531pub mod trace_provenance {
21532    #[derive(Clone, PartialEq, ::prost::Message)]
21533    pub struct Sequence {
21534        /// The trusted_packet_sequence_id reported in each TracePacket.
21535        #[prost(uint32, optional, tag="1")]
21536        pub id: ::core::option::Option<u32>,
21537        /// ID of the producer, as per Producer.id.
21538        #[prost(int32, optional, tag="2")]
21539        pub producer_id: ::core::option::Option<i32>,
21540    }
21541    /// Describes a trace buffer and all the sequences writing to it.
21542    #[derive(Clone, PartialEq, ::prost::Message)]
21543    pub struct Buffer {
21544        #[prost(message, repeated, tag="1")]
21545        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
21546    }
21547}
21548// End of protos/perfetto/trace/perfetto/trace_provenance.proto
21549
21550// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
21551
21552/// Events emitted by the tracing service.
21553/// Next id: 12.
21554#[derive(Clone, PartialEq, ::prost::Message)]
21555pub struct TracingServiceEvent {
21556    /// When each of the following booleans are set to true, they report the
21557    /// point in time (through TracePacket's timestamp) where the condition
21558    /// they describe happened.
21559    /// The order of the booleans below matches the timestamp ordering
21560    /// they would generally be expected to have.
21561    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
21562    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
21563}
21564/// Nested message and enum types in `TracingServiceEvent`.
21565pub mod tracing_service_event {
21566    #[derive(Clone, PartialEq, ::prost::Message)]
21567    pub struct DataSources {
21568        #[prost(message, repeated, tag="1")]
21569        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
21570    }
21571    /// Nested message and enum types in `DataSources`.
21572    pub mod data_sources {
21573        #[derive(Clone, PartialEq, ::prost::Message)]
21574        pub struct DataSource {
21575            #[prost(string, optional, tag="1")]
21576            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
21577            #[prost(string, optional, tag="2")]
21578            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21579        }
21580    }
21581    /// When each of the following booleans are set to true, they report the
21582    /// point in time (through TracePacket's timestamp) where the condition
21583    /// they describe happened.
21584    /// The order of the booleans below matches the timestamp ordering
21585    /// they would generally be expected to have.
21586    #[derive(Clone, PartialEq, ::prost::Oneof)]
21587    pub enum EventType {
21588        /// Emitted when we start tracing and specifically, this will be before any
21589        /// producer is notified about the existence of this trace. This is always
21590        /// emitted before the all_data_sources_started event. This event is also
21591        /// guaranteed to be seen (byte-offset wise) before any data packets from
21592        /// producers.
21593        #[prost(bool, tag="2")]
21594        TracingStarted(bool),
21595        /// Emitted after all data sources saw the start event and ACKed it.
21596        /// This identifies the point in time when it's safe to assume that all data
21597        /// sources have been recording events.
21598        #[prost(bool, tag="1")]
21599        AllDataSourcesStarted(bool),
21600        /// Emitted when a flush is started.
21601        #[prost(bool, tag="9")]
21602        FlushStarted(bool),
21603        /// Emitted when all data sources have been flushed successfully or with an
21604        /// error (including timeouts). This can generally happen many times over the
21605        /// course of the trace.
21606        #[prost(bool, tag="3")]
21607        AllDataSourcesFlushed(bool),
21608        /// Emitted when reading back the central tracing buffers has been completed.
21609        /// If |write_into_file| is specified, this can happen many times over the
21610        /// course of the trace.
21611        #[prost(bool, tag="4")]
21612        ReadTracingBuffersCompleted(bool),
21613        /// Emitted after tracing has been disabled and specifically, this will be
21614        /// after all packets from producers have been included in the central
21615        /// tracing buffer.
21616        #[prost(bool, tag="5")]
21617        TracingDisabled(bool),
21618        /// Emitted if perfetto --save-for-bugreport was invoked while the current
21619        /// tracing session was running and it had the highest bugreport_score. In
21620        /// this case the original consumer will see a nearly empty trace, because
21621        /// the contents are routed onto the bugreport file. This event flags the
21622        /// situation explicitly. Traces that contain this marker should be discarded
21623        /// by test infrastructures / pipelines.
21624        /// Deprecated since Android U, where --save-for-bugreport uses
21625        /// non-destructive cloning.
21626        #[prost(bool, tag="6")]
21627        SeizedForBugreport(bool),
21628        /// Emitted when not all data sources in all producers reply to a start
21629        /// request after some time.
21630        #[prost(message, tag="7")]
21631        SlowStartingDataSources(DataSources),
21632        /// Emitted when the last flush request has failed. Lists data sources that
21633        /// did not reply on time.
21634        #[prost(message, tag="8")]
21635        LastFlushSlowDataSources(DataSources),
21636        /// If this was a cloned tracing session, emitted when the tracing serice
21637        /// started the clone operation.
21638        #[prost(bool, tag="10")]
21639        CloneStarted(bool),
21640        /// If this was a cloned tracing session, emitted when the tracing service
21641        /// finished the clone operation (for a specific buffer).
21642        #[prost(uint32, tag="11")]
21643        BufferCloned(u32),
21644    }
21645}
21646// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
21647
21648// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
21649
21650/// Energy consumer based on aidl class:
21651/// android.hardware.power.stats.EnergyConsumer.
21652#[derive(Clone, PartialEq, ::prost::Message)]
21653pub struct AndroidEnergyConsumer {
21654    /// Unique ID of this energy consumer.  Matches the ID in a
21655    /// AndroidEnergyEstimationBreakdown.
21656    #[prost(int32, optional, tag="1")]
21657    pub energy_consumer_id: ::core::option::Option<i32>,
21658    /// For a group of energy consumers of the same logical type, sorting by
21659    /// ordinal gives their physical order. Ordinals must be consecutive integers
21660    /// starting from 0.
21661    #[prost(int32, optional, tag="2")]
21662    pub ordinal: ::core::option::Option<i32>,
21663    /// Type of this energy consumer.
21664    #[prost(string, optional, tag="3")]
21665    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
21666    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
21667    /// framework.
21668    #[prost(string, optional, tag="4")]
21669    pub name: ::core::option::Option<::prost::alloc::string::String>,
21670}
21671#[derive(Clone, PartialEq, ::prost::Message)]
21672pub struct AndroidEnergyConsumerDescriptor {
21673    #[prost(message, repeated, tag="1")]
21674    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
21675}
21676// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
21677
21678// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21679
21680/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
21681/// This proto represents the aidl class:
21682/// android.hardware.power.stats.EnergyConsumerResult.
21683#[derive(Clone, PartialEq, ::prost::Message)]
21684pub struct AndroidEnergyEstimationBreakdown {
21685    /// The first trace packet of each session should include a energy consumer
21686    /// descriptor.
21687    #[prost(message, optional, tag="1")]
21688    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
21689    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
21690    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
21691    /// should be sent at the beginning of a trace.
21692    #[prost(int32, optional, tag="2")]
21693    pub energy_consumer_id: ::core::option::Option<i32>,
21694    /// Total accumulated energy since boot in microwatt-seconds (uWs)
21695    #[prost(int64, optional, tag="3")]
21696    pub energy_uws: ::core::option::Option<i64>,
21697    /// Optional attributed energy per Android ID / Linux UID for this
21698    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
21699    /// to total accumulated energy.
21700    #[prost(message, repeated, tag="4")]
21701    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
21702}
21703/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
21704pub mod android_energy_estimation_breakdown {
21705    #[derive(Clone, PartialEq, ::prost::Message)]
21706    pub struct EnergyUidBreakdown {
21707        /// Android ID/Linux UID, the accumulated energy is attributed to.
21708        #[prost(int32, optional, tag="1")]
21709        pub uid: ::core::option::Option<i32>,
21710        /// Accumulated energy since boot in microwatt-seconds (uWs).
21711        #[prost(int64, optional, tag="2")]
21712        pub energy_uws: ::core::option::Option<i64>,
21713    }
21714}
21715// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21716
21717// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
21718
21719#[derive(Clone, PartialEq, ::prost::Message)]
21720pub struct EntityStateResidency {
21721    /// This is only emitted at the beginning of the trace.
21722    #[prost(message, repeated, tag="1")]
21723    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
21724    #[prost(message, repeated, tag="2")]
21725    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
21726}
21727/// Nested message and enum types in `EntityStateResidency`.
21728pub mod entity_state_residency {
21729    #[derive(Clone, PartialEq, ::prost::Message)]
21730    pub struct PowerEntityState {
21731        /// Index corresponding to the entity
21732        #[prost(int32, optional, tag="1")]
21733        pub entity_index: ::core::option::Option<i32>,
21734        /// Index corresponding to the state
21735        #[prost(int32, optional, tag="2")]
21736        pub state_index: ::core::option::Option<i32>,
21737        /// Name of the entity. This is device-specific, determined by the PowerStats
21738        /// HAL, and cannot be configured by the user. An example would be
21739        /// "Bluetooth".
21740        #[prost(string, optional, tag="3")]
21741        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
21742        /// Name of the state. This is device-specific, determined by the PowerStats
21743        /// HAL, and cannot be configured by the user. An example would be
21744        /// "Active".
21745        #[prost(string, optional, tag="4")]
21746        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
21747    }
21748    #[derive(Clone, PartialEq, ::prost::Message)]
21749    pub struct StateResidency {
21750        /// Index corresponding to PowerEntityState.entity_index
21751        #[prost(int32, optional, tag="1")]
21752        pub entity_index: ::core::option::Option<i32>,
21753        /// Index corresponding to PowerEntityState.state_index
21754        #[prost(int32, optional, tag="2")]
21755        pub state_index: ::core::option::Option<i32>,
21756        /// Time since boot that this entity has been in this state
21757        #[prost(uint64, optional, tag="3")]
21758        pub total_time_in_state_ms: ::core::option::Option<u64>,
21759        /// Total number of times since boot that the entity has entered this state
21760        #[prost(uint64, optional, tag="4")]
21761        pub total_state_entry_count: ::core::option::Option<u64>,
21762        /// Timestamp of the last time the entity entered this state
21763        #[prost(uint64, optional, tag="5")]
21764        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
21765    }
21766}
21767// End of protos/perfetto/trace/power/android_entity_state_residency.proto
21768
21769// Begin of protos/perfetto/trace/power/battery_counters.proto
21770
21771#[derive(Clone, PartialEq, ::prost::Message)]
21772pub struct BatteryCounters {
21773    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
21774    #[prost(int64, optional, tag="1")]
21775    pub charge_counter_uah: ::core::option::Option<i64>,
21776    /// Remaining battery capacity percentage of total capacity
21777    #[prost(float, optional, tag="2")]
21778    pub capacity_percent: ::core::option::Option<f32>,
21779    /// Instantaneous battery current in microamperes(µA).
21780    /// Negative values indicate current being drained from the battery and
21781    /// positive values indicate current feeding the battery from a charge source
21782    /// (USB).
21783    ///
21784    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
21785    #[prost(int64, optional, tag="3")]
21786    pub current_ua: ::core::option::Option<i64>,
21787    /// Instantaneous battery current in microamperes(µA).
21788    #[prost(int64, optional, tag="4")]
21789    pub current_avg_ua: ::core::option::Option<i64>,
21790    /// Battery name, emitted only on multiple batteries.
21791    #[prost(string, optional, tag="5")]
21792    pub name: ::core::option::Option<::prost::alloc::string::String>,
21793    /// Battery capacity in microwatt-hours(µWh).
21794    #[prost(int64, optional, tag="6")]
21795    pub energy_counter_uwh: ::core::option::Option<i64>,
21796    /// Battery voltage in microvolts(µV).
21797    #[prost(int64, optional, tag="7")]
21798    pub voltage_uv: ::core::option::Option<i64>,
21799}
21800// End of protos/perfetto/trace/power/battery_counters.proto
21801
21802// Begin of protos/perfetto/trace/power/power_rails.proto
21803
21804#[derive(Clone, PartialEq, ::prost::Message)]
21805pub struct PowerRails {
21806    /// This is only emitted at the beginning of the trace.
21807    #[prost(message, repeated, tag="1")]
21808    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
21809    #[prost(message, repeated, tag="2")]
21810    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
21811    /// A unique session id that can be used to match energy data to sets of
21812    /// descriptors. The indices used by rail descriptors and energy data packets
21813    /// are meant to be unique to a given session uuid. When multiple data sources
21814    /// are running in parallel, each data source should use a unique id.
21815    #[prost(uint64, optional, tag="3")]
21816    pub session_uuid: ::core::option::Option<u64>,
21817}
21818/// Nested message and enum types in `PowerRails`.
21819pub mod power_rails {
21820    #[derive(Clone, PartialEq, ::prost::Message)]
21821    pub struct RailDescriptor {
21822        /// Index corresponding to the rail
21823        #[prost(uint32, optional, tag="1")]
21824        pub index: ::core::option::Option<u32>,
21825        /// Name of the rail
21826        #[prost(string, optional, tag="2")]
21827        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
21828        /// Name of the subsystem to which this rail belongs
21829        #[prost(string, optional, tag="3")]
21830        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
21831        /// Hardware sampling rate (Hz).
21832        #[prost(uint32, optional, tag="4")]
21833        pub sampling_rate: ::core::option::Option<u32>,
21834    }
21835    #[derive(Clone, PartialEq, ::prost::Message)]
21836    pub struct EnergyData {
21837        /// Index corresponding to RailDescriptor.index
21838        #[prost(uint32, optional, tag="1")]
21839        pub index: ::core::option::Option<u32>,
21840        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
21841        #[prost(uint64, optional, tag="2")]
21842        pub timestamp_ms: ::core::option::Option<u64>,
21843        /// Accumulated energy since device boot in microwatt-seconds (uWs).
21844        #[prost(uint64, optional, tag="3")]
21845        pub energy: ::core::option::Option<u64>,
21846    }
21847}
21848// End of protos/perfetto/trace/power/power_rails.proto
21849
21850// Begin of protos/perfetto/trace/profiling/art_process_metadata.proto
21851
21852#[derive(Clone, PartialEq, ::prost::Message)]
21853pub struct JavaFrame {
21854    #[prost(string, optional, tag="1")]
21855    pub method_name: ::core::option::Option<::prost::alloc::string::String>,
21856    #[prost(string, optional, tag="2")]
21857    pub source_file: ::core::option::Option<::prost::alloc::string::String>,
21858    #[prost(int32, optional, tag="3")]
21859    pub line_number: ::core::option::Option<i32>,
21860}
21861#[derive(Clone, PartialEq, ::prost::Message)]
21862pub struct JavaStack {
21863    #[prost(message, repeated, tag="1")]
21864    pub frames: ::prost::alloc::vec::Vec<JavaFrame>,
21865}
21866#[derive(Clone, PartialEq, ::prost::Message)]
21867pub struct ArtProcessMetadata {
21868    #[prost(int32, optional, tag="1")]
21869    pub pid: ::core::option::Option<i32>,
21870    #[prost(int32, optional, tag="2")]
21871    pub uid: ::core::option::Option<i32>,
21872    /// /proc/self/cmdline argv0
21873    #[prost(string, optional, tag="3")]
21874    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
21875    /// Set by VMRuntime.setProcessPackageName
21876    #[prost(string, optional, tag="4")]
21877    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
21878    /// OutOfMemoryError details (if heap dump was triggered by an OOM)
21879    /// The size of the allocation that ended up failing with OOME
21880    #[prost(uint64, optional, tag="5")]
21881    pub oom_allocation_size: ::core::option::Option<u64>,
21882    /// Amount of free memory until the runtime would need to grow the heap
21883    #[prost(uint64, optional, tag="6")]
21884    pub oom_total_bytes_free: ::core::option::Option<u64>,
21885    /// Amount of memory remaining until the max heap size supported
21886    #[prost(uint64, optional, tag="7")]
21887    pub oom_free_bytes_until_oom: ::core::option::Option<u64>,
21888    /// Stacktrace for the thread doing the failing allocation
21889    #[prost(message, optional, tag="8")]
21890    pub oom_thread_java_stack: ::core::option::Option<JavaStack>,
21891    /// Full OOME exception message
21892    #[prost(string, optional, tag="9")]
21893    pub oom_error_msg: ::core::option::Option<::prost::alloc::string::String>,
21894}
21895// End of protos/perfetto/trace/profiling/art_process_metadata.proto
21896
21897// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
21898
21899#[derive(Clone, PartialEq, ::prost::Message)]
21900pub struct ObfuscatedMember {
21901    /// This is the obfuscated field name relative to the class containing the
21902    /// ObfuscatedMember.
21903    #[prost(string, optional, tag="1")]
21904    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21905    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
21906    /// field name including its class. Otherwise, this is this the unqualified
21907    /// deobfuscated field name relative to the class containing this
21908    /// ObfuscatedMember.
21909    #[prost(string, optional, tag="2")]
21910    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21911    /// R8 inline method support: line number ranges for disambiguation.
21912    /// When multiple methods map to the same obfuscated name, the line number
21913    /// from the stack frame is used to select the correct mapping.
21914    ///
21915    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
21916    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
21917    /// - source_line_start/end = 10:12 (line range in original source)
21918    ///
21919    /// Methods with the same obfuscated_name and overlapping obfuscated line
21920    /// ranges form an inline chain, ordered innermost (inlined) first.
21921    #[prost(uint32, optional, tag="3")]
21922    pub obfuscated_line_start: ::core::option::Option<u32>,
21923    #[prost(uint32, optional, tag="4")]
21924    pub obfuscated_line_end: ::core::option::Option<u32>,
21925    #[prost(uint32, optional, tag="5")]
21926    pub source_line_start: ::core::option::Option<u32>,
21927    #[prost(uint32, optional, tag="6")]
21928    pub source_line_end: ::core::option::Option<u32>,
21929}
21930#[derive(Clone, PartialEq, ::prost::Message)]
21931pub struct ObfuscatedClass {
21932    #[prost(string, optional, tag="1")]
21933    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21934    #[prost(string, optional, tag="2")]
21935    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21936    /// fields.
21937    #[prost(message, repeated, tag="3")]
21938    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21939    #[prost(message, repeated, tag="4")]
21940    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21941}
21942#[derive(Clone, PartialEq, ::prost::Message)]
21943pub struct DeobfuscationMapping {
21944    #[prost(string, optional, tag="1")]
21945    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
21946    #[prost(int64, optional, tag="2")]
21947    pub version_code: ::core::option::Option<i64>,
21948    #[prost(message, repeated, tag="3")]
21949    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
21950}
21951// Begin of protos/perfetto/trace/profiling/profile_packet.proto
21952
21953// This file contains a mixture of messages emitted by various sampling
21954// profilers:
21955//
21956// Memory allocator profiling
21957// ----------------
21958// ProfilePacket:
21959//    The packet emitted by heapprofd, which started off as a native heap
21960//    (malloc/free) profiler, but now supports custom allocators as well. Each
21961//    packet contains a preaggregated state of the heap at snapshot time, which
21962//    report the total allocated/free bytes per callstack (plus other info such
21963//    as the number of samples).
21964// StreamingAllocation/StreamingFree:
21965//    Emitted by heapprofd when configured in streaming mode (i.e. when
21966//    stream_allocations = true). This is only for local testing, and doesn't
21967//    report callstacks (only address time and size of each alloc/free). It can
21968//    lead to enormous traces, as it contains the stream of each alloc/free call.
21969//
21970// Callstack sampling
21971// ------------------
21972// StreamingProfilePacket:
21973//    The packet emitted by the chromium in-process sampling profiler, which is
21974//    based on periodically sending a signal to itself, and unwinding the stack
21975//    in the signal handler. Each packet contains a series of individual stack
21976//    samples for a Chromium thread.
21977//
21978// Callstack and performance counter sampling
21979// ---------------------
21980// PerfSample:
21981//    The packet emitted by traced_perf sampling performance profiler based on
21982//    the perf_event_open syscall. Each packet represents an individual sample
21983//    of a performance counter (which might be a timer), and optionally a
21984//    callstack of the process that was scheduled at the time of the sample.
21985//
21986
21987/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
21988/// involve more than one ProfilePacket if the snapshot is big (when |continued|
21989/// is true). The cardinality and grouping is as follows:
21990/// A ProfilePacket contains:
21991///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
21992///     one heap per process (the main malloc/free heap), but there can be more if
21993///     the process is using the heapprofd API to profile custom allocators.
21994///   - Globally interned strings, mappings and frames (to allow de-duplicating
21995///     frames/mapping in common between different processes).
21996/// A ProcessHeapSamples contains:
21997///   - The process and heap identifier.
21998///   - A number of HeapSample, one for each callsite that had some alloc/frees.
21999///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
22000/// A HeapSample contains statistics about callsites:
22001///   - Total number of bytes allocated and freed from that callsite.
22002///   - Total number of alloc/free calls sampled.
22003///   - Stats at the local maximum when dump_at_max = true.
22004/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
22005#[derive(Clone, PartialEq, ::prost::Message)]
22006pub struct ProfilePacket {
22007    /// The following interning tables are only used in Android version Q.
22008    /// In newer versions, these tables are in InternedData
22009    /// (see protos/perfetto/trace/interned_data) and are shared across
22010    /// multiple ProfilePackets.
22011    /// For backwards compatibility, consumers need to first look up interned
22012    /// data in the tables within the ProfilePacket, and then, if they are empty,
22013    /// look up in the InternedData instead.
22014    #[prost(message, repeated, tag="1")]
22015    pub strings: ::prost::alloc::vec::Vec<InternedString>,
22016    #[prost(message, repeated, tag="4")]
22017    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22018    #[prost(message, repeated, tag="2")]
22019    pub frames: ::prost::alloc::vec::Vec<Frame>,
22020    #[prost(message, repeated, tag="3")]
22021    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22022    #[prost(message, repeated, tag="5")]
22023    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
22024    /// If this is true, the next ProfilePacket in this package_sequence_id is a
22025    /// continuation of this one.
22026    /// To get all samples for a process, accummulate its
22027    /// ProcessHeapSamples.samples until you see continued=false.
22028    #[prost(bool, optional, tag="6")]
22029    pub continued: ::core::option::Option<bool>,
22030    /// Index of this ProfilePacket on its package_sequence_id. Can be used
22031    /// to detect dropped data.
22032    /// Verify these are consecutive.
22033    #[prost(uint64, optional, tag="7")]
22034    pub index: ::core::option::Option<u64>,
22035}
22036/// Nested message and enum types in `ProfilePacket`.
22037pub mod profile_packet {
22038    /// Next ID: 9
22039    #[derive(Clone, PartialEq, ::prost::Message)]
22040    pub struct HeapSample {
22041        #[prost(uint64, optional, tag="1")]
22042        pub callstack_id: ::core::option::Option<u64>,
22043        /// bytes allocated at this callstack.
22044        #[prost(uint64, optional, tag="2")]
22045        pub self_allocated: ::core::option::Option<u64>,
22046        /// bytes allocated at this callstack that have been freed.
22047        #[prost(uint64, optional, tag="3")]
22048        pub self_freed: ::core::option::Option<u64>,
22049        /// Bytes allocated by this callstack but not freed at the time the malloc
22050        /// heap usage of this process was maximal. This is only set if dump_at_max
22051        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
22052        /// self_idle will not be set.
22053        #[prost(uint64, optional, tag="8")]
22054        pub self_max: ::core::option::Option<u64>,
22055        /// Number of allocations that were sampled at this callstack but not freed
22056        /// at the time the malloc heap usage of this process was maximal. This is
22057        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
22058        /// self_allocated, self_freed and self_idle will not be set.
22059        #[prost(uint64, optional, tag="9")]
22060        pub self_max_count: ::core::option::Option<u64>,
22061        /// timestamp \[opt\]
22062        #[prost(uint64, optional, tag="4")]
22063        pub timestamp: ::core::option::Option<u64>,
22064        /// Number of allocations that were sampled at this callstack.
22065        #[prost(uint64, optional, tag="5")]
22066        pub alloc_count: ::core::option::Option<u64>,
22067        /// Number of allocations that were sampled at this callstack that have been
22068        /// freed.
22069        #[prost(uint64, optional, tag="6")]
22070        pub free_count: ::core::option::Option<u64>,
22071    }
22072    #[derive(Clone, PartialEq, ::prost::Message)]
22073    pub struct Histogram {
22074        #[prost(message, repeated, tag="1")]
22075        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
22076    }
22077    /// Nested message and enum types in `Histogram`.
22078    pub mod histogram {
22079        #[derive(Clone, PartialEq, ::prost::Message)]
22080        pub struct Bucket {
22081            /// This bucket counts values from the previous bucket's (or -infinity if
22082            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
22083            /// (exclusive).
22084            #[prost(uint64, optional, tag="1")]
22085            pub upper_limit: ::core::option::Option<u64>,
22086            /// This is the highest bucket. This is set instead of the upper_limit. Any
22087            /// values larger or equal to the previous bucket's upper_limit are counted
22088            /// in this bucket.
22089            #[prost(bool, optional, tag="2")]
22090            pub max_bucket: ::core::option::Option<bool>,
22091            /// Number of values that fall into this range.
22092            #[prost(uint64, optional, tag="3")]
22093            pub count: ::core::option::Option<u64>,
22094        }
22095    }
22096    #[derive(Clone, PartialEq, ::prost::Message)]
22097    pub struct ProcessStats {
22098        #[prost(uint64, optional, tag="1")]
22099        pub unwinding_errors: ::core::option::Option<u64>,
22100        #[prost(uint64, optional, tag="2")]
22101        pub heap_samples: ::core::option::Option<u64>,
22102        #[prost(uint64, optional, tag="3")]
22103        pub map_reparses: ::core::option::Option<u64>,
22104        #[prost(message, optional, tag="4")]
22105        pub unwinding_time_us: ::core::option::Option<Histogram>,
22106        #[prost(uint64, optional, tag="5")]
22107        pub total_unwinding_time_us: ::core::option::Option<u64>,
22108        #[prost(uint64, optional, tag="6")]
22109        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
22110    }
22111    #[derive(Clone, PartialEq, ::prost::Message)]
22112    pub struct ProcessHeapSamples {
22113        #[prost(uint64, optional, tag="1")]
22114        pub pid: ::core::option::Option<u64>,
22115        /// This process was profiled from startup.
22116        /// If false, this process was already running when profiling started.
22117        #[prost(bool, optional, tag="3")]
22118        pub from_startup: ::core::option::Option<bool>,
22119        /// This process was not profiled because a concurrent session was active.
22120        /// If this is true, samples will be empty.
22121        #[prost(bool, optional, tag="4")]
22122        pub rejected_concurrent: ::core::option::Option<bool>,
22123        /// This process disconnected while it was profiled.
22124        /// If false, the process outlived the profiling session.
22125        #[prost(bool, optional, tag="6")]
22126        pub disconnected: ::core::option::Option<bool>,
22127        /// If disconnected, this disconnect was caused by the client overrunning
22128        /// the buffer.
22129        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
22130        /// on new S builds.
22131        #[prost(bool, optional, tag="7")]
22132        pub buffer_overran: ::core::option::Option<bool>,
22133        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
22134        pub client_error: ::core::option::Option<i32>,
22135        /// If disconnected, this disconnected was caused by the shared memory
22136        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
22137        /// MEMORY CORRUPTION.
22138        #[prost(bool, optional, tag="8")]
22139        pub buffer_corrupted: ::core::option::Option<bool>,
22140        /// If disconnected, this disconnect was caused by heapprofd exceeding
22141        /// guardrails during this profiling session.
22142        #[prost(bool, optional, tag="10")]
22143        pub hit_guardrail: ::core::option::Option<bool>,
22144        #[prost(string, optional, tag="11")]
22145        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
22146        #[prost(uint64, optional, tag="12")]
22147        pub sampling_interval_bytes: ::core::option::Option<u64>,
22148        #[prost(uint64, optional, tag="13")]
22149        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
22150        /// Timestamp of the state of the target process that this dump represents.
22151        /// This can be different to the timestamp of the TracePackets for various
22152        /// reasons:
22153        /// * If disconnected is set above, this is the timestamp of last state
22154        ///    heapprofd had of the process before it disconnected.
22155        /// * Otherwise, if the rate of events produced by the process is high,
22156        ///    heapprofd might be behind.
22157        ///
22158        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
22159        ///                to have a type enum that we can reuse here.
22160        #[prost(uint64, optional, tag="9")]
22161        pub timestamp: ::core::option::Option<u64>,
22162        /// Metadata about heapprofd.
22163        #[prost(message, optional, tag="5")]
22164        pub stats: ::core::option::Option<ProcessStats>,
22165        #[prost(message, repeated, tag="2")]
22166        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
22167    }
22168    /// Nested message and enum types in `ProcessHeapSamples`.
22169    pub mod process_heap_samples {
22170        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22171        #[repr(i32)]
22172        pub enum ClientError {
22173            None = 0,
22174            HitTimeout = 1,
22175            InvalidStackBounds = 2,
22176        }
22177        impl ClientError {
22178            /// String value of the enum field names used in the ProtoBuf definition.
22179            ///
22180            /// The values are not transformed in any way and thus are considered stable
22181            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22182            pub fn as_str_name(&self) -> &'static str {
22183                match self {
22184                    ClientError::None => "CLIENT_ERROR_NONE",
22185                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
22186                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
22187                }
22188            }
22189        }
22190    }
22191}
22192/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22193/// testing. Doesn't report the callsite.
22194#[derive(Clone, PartialEq, ::prost::Message)]
22195pub struct StreamingAllocation {
22196    /// TODO(fmayer): Add callstack.
22197    #[prost(uint64, repeated, packed="false", tag="1")]
22198    pub address: ::prost::alloc::vec::Vec<u64>,
22199    #[prost(uint64, repeated, packed="false", tag="2")]
22200    pub size: ::prost::alloc::vec::Vec<u64>,
22201    #[prost(uint64, repeated, packed="false", tag="3")]
22202    pub sample_size: ::prost::alloc::vec::Vec<u64>,
22203    #[prost(uint64, repeated, packed="false", tag="4")]
22204    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
22205    #[prost(uint32, repeated, packed="false", tag="5")]
22206    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22207    #[prost(uint64, repeated, packed="false", tag="6")]
22208    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22209}
22210/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22211/// testing. Doesn't report the callsite.
22212#[derive(Clone, PartialEq, ::prost::Message)]
22213pub struct StreamingFree {
22214    /// TODO(fmayer): Add callstack.
22215    #[prost(uint64, repeated, packed="false", tag="1")]
22216    pub address: ::prost::alloc::vec::Vec<u64>,
22217    #[prost(uint32, repeated, packed="false", tag="2")]
22218    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22219    #[prost(uint64, repeated, packed="false", tag="3")]
22220    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22221}
22222/// Packet emitted by the chromium in-process signal-based callstack sampler.
22223/// Represents a series of individual stack samples (sampled at discrete points
22224/// in time), rather than aggregated over an interval.
22225#[derive(Clone, PartialEq, ::prost::Message)]
22226pub struct StreamingProfilePacket {
22227    /// Index into InternedData.callstacks
22228    #[prost(uint64, repeated, packed="false", tag="1")]
22229    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
22230    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
22231    /// this with ClockSnapshot-based delta encoding instead.
22232    #[prost(int64, repeated, packed="false", tag="2")]
22233    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
22234    #[prost(int32, optional, tag="3")]
22235    pub process_priority: ::core::option::Option<i32>,
22236}
22237/// Namespace for the contained enums.
22238#[derive(Clone, PartialEq, ::prost::Message)]
22239pub struct Profiling {
22240}
22241/// Nested message and enum types in `Profiling`.
22242pub mod profiling {
22243    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22244    #[repr(i32)]
22245    pub enum CpuMode {
22246        ModeUnknown = 0,
22247        ModeKernel = 1,
22248        ModeUser = 2,
22249        /// The following values aren't expected, but included for completeness:
22250        ModeHypervisor = 3,
22251        ModeGuestKernel = 4,
22252        ModeGuestUser = 5,
22253    }
22254    impl CpuMode {
22255        /// String value of the enum field names used in the ProtoBuf definition.
22256        ///
22257        /// The values are not transformed in any way and thus are considered stable
22258        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22259        pub fn as_str_name(&self) -> &'static str {
22260            match self {
22261                CpuMode::ModeUnknown => "MODE_UNKNOWN",
22262                CpuMode::ModeKernel => "MODE_KERNEL",
22263                CpuMode::ModeUser => "MODE_USER",
22264                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
22265                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
22266                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
22267            }
22268        }
22269    }
22270    /// Enumeration of libunwindstack's error codes.
22271    /// NB: the integral representations of the two enums are different.
22272    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22273    #[repr(i32)]
22274    pub enum StackUnwindError {
22275        UnwindErrorUnknown = 0,
22276        UnwindErrorNone = 1,
22277        UnwindErrorMemoryInvalid = 2,
22278        UnwindErrorUnwindInfo = 3,
22279        UnwindErrorUnsupported = 4,
22280        UnwindErrorInvalidMap = 5,
22281        UnwindErrorMaxFramesExceeded = 6,
22282        UnwindErrorRepeatedFrame = 7,
22283        UnwindErrorInvalidElf = 8,
22284        UnwindErrorSystemCall = 9,
22285        UnwindErrorThreadTimeout = 10,
22286        UnwindErrorThreadDoesNotExist = 11,
22287        UnwindErrorBadArch = 12,
22288        UnwindErrorMapsParse = 13,
22289        UnwindErrorInvalidParameter = 14,
22290        UnwindErrorPtraceCall = 15,
22291    }
22292    impl StackUnwindError {
22293        /// String value of the enum field names used in the ProtoBuf definition.
22294        ///
22295        /// The values are not transformed in any way and thus are considered stable
22296        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22297        pub fn as_str_name(&self) -> &'static str {
22298            match self {
22299                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
22300                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
22301                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
22302                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
22303                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
22304                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
22305                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
22306                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
22307                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
22308                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
22309                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
22310                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
22311                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
22312                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
22313                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
22314                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
22315            }
22316        }
22317    }
22318}
22319/// Packet emitted by the traced_perf sampling performance profiler, which
22320/// gathers data via the perf_event_open syscall. Each packet contains an
22321/// individual sample with a counter value, and optionally a
22322/// callstack.
22323///
22324/// Timestamps are within the root packet. The config can specify the clock, or
22325/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
22326/// timeframe, the default was CLOCK_BOOTTIME.
22327///
22328/// There are several distinct views of this message:
22329/// * indication of kernel buffer data loss (kernel_records_lost set)
22330/// * indication of skipped samples (sample_skipped_reason set)
22331/// * notable event in the sampling implementation (producer_event set)
22332/// * normal sample (timebase_count set, typically also callstack_iid)
22333#[derive(Clone, PartialEq, ::prost::Message)]
22334pub struct PerfSample {
22335    #[prost(uint32, optional, tag="1")]
22336    pub cpu: ::core::option::Option<u32>,
22337    #[prost(uint32, optional, tag="2")]
22338    pub pid: ::core::option::Option<u32>,
22339    #[prost(uint32, optional, tag="3")]
22340    pub tid: ::core::option::Option<u32>,
22341    /// Execution state that the process was sampled at.
22342    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
22343    pub cpu_mode: ::core::option::Option<i32>,
22344    /// Value of the timebase counter (since the event was configured, no deltas).
22345    #[prost(uint64, optional, tag="6")]
22346    pub timebase_count: ::core::option::Option<u64>,
22347    /// Value of the followers counter (since the event was configured, no deltas).
22348    #[prost(uint64, repeated, packed="false", tag="7")]
22349    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
22350    /// Unwound callstack. Might be partial, in which case a synthetic "error"
22351    /// frame is appended, and |unwind_error| is set accordingly.
22352    #[prost(uint64, optional, tag="4")]
22353    pub callstack_iid: ::core::option::Option<u64>,
22354    /// If set, indicates that this message is not a sample, but rather an
22355    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
22356    /// loss occurs when the kernel has insufficient ring buffer capacity to write
22357    /// a record (which gets discarded). A record in this context is an individual
22358    /// ring buffer entry, and counts more than just sample records.
22359    ///
22360    /// The |timestamp| of the packet corresponds to the time that the producer
22361    /// wrote the packet for trace-sorting purposes alone, and should not be
22362    /// interpreted relative to the sample timestamps. This field is sufficient to
22363    /// detect that *some* kernel data loss happened within the trace, but not the
22364    /// specific time bounds of that loss (which would require tracking precedessor
22365    /// & successor timestamps, which is not deemed necessary at the moment).
22366    #[prost(uint64, optional, tag="17")]
22367    pub kernel_records_lost: ::core::option::Option<u64>,
22368    #[prost(message, optional, tag="19")]
22369    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
22370    /// If set, stack unwinding was incomplete due to an error.
22371    /// Unset values should be treated as UNWIND_ERROR_NONE.
22372    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
22373    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
22374    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
22375    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
22376}
22377/// Nested message and enum types in `PerfSample`.
22378pub mod perf_sample {
22379    /// A notable event within the sampling implementation.
22380    #[derive(Clone, PartialEq, ::prost::Message)]
22381    pub struct ProducerEvent {
22382        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
22383        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
22384    }
22385    /// Nested message and enum types in `ProducerEvent`.
22386    pub mod producer_event {
22387        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22388        #[repr(i32)]
22389        pub enum DataSourceStopReason {
22390            ProfilerStopUnknown = 0,
22391            ProfilerStopGuardrail = 1,
22392        }
22393        impl DataSourceStopReason {
22394            /// String value of the enum field names used in the ProtoBuf definition.
22395            ///
22396            /// The values are not transformed in any way and thus are considered stable
22397            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22398            pub fn as_str_name(&self) -> &'static str {
22399                match self {
22400                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
22401                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
22402                }
22403            }
22404        }
22405        #[derive(Clone, PartialEq, ::prost::Oneof)]
22406        pub enum OptionalSourceStopReason {
22407            #[prost(enumeration="DataSourceStopReason", tag="1")]
22408            SourceStopReason(i32),
22409        }
22410    }
22411    /// If set, indicates that the profiler encountered a sample that was relevant,
22412    /// but was skipped.
22413    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22414    #[repr(i32)]
22415    pub enum SampleSkipReason {
22416        ProfilerSkipUnknown = 0,
22417        ProfilerSkipReadStage = 1,
22418        ProfilerSkipUnwindStage = 2,
22419        ProfilerSkipUnwindEnqueue = 3,
22420        ProfilerSkipNotInScope = 4,
22421    }
22422    impl SampleSkipReason {
22423        /// String value of the enum field names used in the ProtoBuf definition.
22424        ///
22425        /// The values are not transformed in any way and thus are considered stable
22426        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22427        pub fn as_str_name(&self) -> &'static str {
22428            match self {
22429                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
22430                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
22431                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
22432                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
22433                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
22434            }
22435        }
22436    }
22437    /// If set, stack unwinding was incomplete due to an error.
22438    /// Unset values should be treated as UNWIND_ERROR_NONE.
22439    #[derive(Clone, PartialEq, ::prost::Oneof)]
22440    pub enum OptionalUnwindError {
22441        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
22442        UnwindError(i32),
22443    }
22444    #[derive(Clone, PartialEq, ::prost::Oneof)]
22445    pub enum OptionalSampleSkippedReason {
22446        #[prost(enumeration="SampleSkipReason", tag="18")]
22447        SampleSkippedReason(i32),
22448    }
22449}
22450/// Submessage for TracePacketDefaults.
22451#[derive(Clone, PartialEq, ::prost::Message)]
22452pub struct PerfSampleDefaults {
22453    /// The sampling timebase. Might not be identical to the data source config if
22454    /// the implementation decided to default/override some parameters.
22455    #[prost(message, optional, tag="1")]
22456    pub timebase: ::core::option::Option<perf_events::Timebase>,
22457    /// Description of followers event
22458    #[prost(message, repeated, tag="4")]
22459    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
22460    /// If the config requested process sharding, report back the count and which
22461    /// of those bins was selected. Never changes for the duration of a trace.
22462    #[prost(uint32, optional, tag="2")]
22463    pub process_shard_count: ::core::option::Option<u32>,
22464    #[prost(uint32, optional, tag="3")]
22465    pub chosen_process_shard: ::core::option::Option<u32>,
22466}
22467// End of protos/perfetto/trace/profiling/profile_packet.proto
22468
22469// Begin of protos/perfetto/trace/profiling/smaps.proto
22470
22471#[derive(Clone, PartialEq, ::prost::Message)]
22472pub struct SmapsEntry {
22473    #[prost(string, optional, tag="1")]
22474    pub path: ::core::option::Option<::prost::alloc::string::String>,
22475    #[prost(uint64, optional, tag="2")]
22476    pub size_kb: ::core::option::Option<u64>,
22477    #[prost(uint64, optional, tag="3")]
22478    pub private_dirty_kb: ::core::option::Option<u64>,
22479    #[prost(uint64, optional, tag="4")]
22480    pub swap_kb: ::core::option::Option<u64>,
22481    /// for field upload (instead of path).
22482    #[prost(string, optional, tag="5")]
22483    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
22484    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
22485    #[prost(uint64, optional, tag="6")]
22486    pub start_address: ::core::option::Option<u64>,
22487    #[prost(uint64, optional, tag="7")]
22488    pub module_timestamp: ::core::option::Option<u64>,
22489    #[prost(string, optional, tag="8")]
22490    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
22491    #[prost(string, optional, tag="9")]
22492    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
22493    #[prost(uint32, optional, tag="10")]
22494    pub protection_flags: ::core::option::Option<u32>,
22495    #[prost(uint64, optional, tag="11")]
22496    pub private_clean_resident_kb: ::core::option::Option<u64>,
22497    #[prost(uint64, optional, tag="12")]
22498    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
22499    #[prost(uint64, optional, tag="13")]
22500    pub shared_clean_resident_kb: ::core::option::Option<u64>,
22501    #[prost(uint64, optional, tag="14")]
22502    pub locked_kb: ::core::option::Option<u64>,
22503    #[prost(uint64, optional, tag="15")]
22504    pub proportional_resident_kb: ::core::option::Option<u64>,
22505}
22506/// Structure-of-arrays style smaps packet of a single process. All packed
22507/// repeated fields, if set, must have the same length.
22508#[derive(Clone, PartialEq, ::prost::Message)]
22509pub struct PackedSmaps {
22510    /// Table of path names. Notes:
22511    /// * first element is the empty string, serialised explicitly.
22512    /// * the table might contain duplicates.
22513    #[prost(string, repeated, tag="1")]
22514    pub string_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22515    /// Interned file paths as an index into |string_table|.
22516    /// Note: the "(deleted)" suffix is kept as part of the string_table entry, and
22517    /// is to be handled during trace import stage.
22518    /// Written only if config.unaggregated == true. Otherwise the string_table is
22519    /// exactly the ordered names of the aggregated mappings.
22520    #[prost(uint32, repeated, tag="2")]
22521    pub name_id: ::prost::alloc::vec::Vec<u32>,
22522    /// How many mappings were merged by name, summing the values below.
22523    /// Written only if config.unaggregated == false.
22524    #[prost(uint32, repeated, tag="3")]
22525    pub aggregate_count: ::prost::alloc::vec::Vec<u32>,
22526    #[prost(uint64, repeated, tag="4")]
22527    pub size_kb: ::prost::alloc::vec::Vec<u64>,
22528    #[prost(uint64, repeated, tag="5")]
22529    pub rss_kb: ::prost::alloc::vec::Vec<u64>,
22530    #[prost(uint64, repeated, tag="6")]
22531    pub anonymous_kb: ::prost::alloc::vec::Vec<u64>,
22532    #[prost(uint64, repeated, tag="7")]
22533    pub swap_kb: ::prost::alloc::vec::Vec<u64>,
22534    #[prost(uint64, repeated, tag="8")]
22535    pub shared_clean_kb: ::prost::alloc::vec::Vec<u64>,
22536    #[prost(uint64, repeated, tag="9")]
22537    pub shared_dirty_kb: ::prost::alloc::vec::Vec<u64>,
22538    #[prost(uint64, repeated, tag="10")]
22539    pub private_clean_kb: ::prost::alloc::vec::Vec<u64>,
22540    #[prost(uint64, repeated, tag="11")]
22541    pub private_dirty_kb: ::prost::alloc::vec::Vec<u64>,
22542    #[prost(uint64, repeated, tag="12")]
22543    pub locked_kb: ::prost::alloc::vec::Vec<u64>,
22544    #[prost(uint64, repeated, tag="13")]
22545    pub pss_kb: ::prost::alloc::vec::Vec<u64>,
22546    #[prost(uint64, repeated, tag="14")]
22547    pub pss_dirty_kb: ::prost::alloc::vec::Vec<u64>,
22548    #[prost(uint64, repeated, tag="15")]
22549    pub swap_pss_kb: ::prost::alloc::vec::Vec<u64>,
22550}
22551#[derive(Clone, PartialEq, ::prost::Message)]
22552pub struct SmapsPacket {
22553    #[prost(uint32, optional, tag="1")]
22554    pub pid: ::core::option::Option<u32>,
22555    #[prost(message, repeated, tag="2")]
22556    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
22557    #[prost(message, optional, tag="3")]
22558    pub packed_entries: ::core::option::Option<PackedSmaps>,
22559}
22560// End of protos/perfetto/trace/profiling/smaps.proto
22561
22562// Begin of protos/perfetto/trace/ps/process_stats.proto
22563
22564/// Per-process periodically sampled stats. These samples are wrapped in a
22565/// dedicated message (as opposite to be fields in process_tree.proto) because
22566/// they are dumped at a different rate than cmdline and thread list.
22567/// Note: not all of these stats will be present in every ProcessStats message
22568/// and sometimes processes may be missing. This is because counters are
22569/// cached to reduce emission of counters which do not change.
22570#[derive(Clone, PartialEq, ::prost::Message)]
22571pub struct ProcessStats {
22572    #[prost(message, repeated, tag="1")]
22573    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
22574    /// The time at which we finish collecting this batch of samples;
22575    /// the top-level packet timestamp is the time at which
22576    /// we begin collection.
22577    #[prost(uint64, optional, tag="2")]
22578    pub collection_end_timestamp: ::core::option::Option<u64>,
22579}
22580/// Nested message and enum types in `ProcessStats`.
22581pub mod process_stats {
22582    /// Per-thread periodically sampled stats.
22583    /// Note: not all of these stats will be present in every message. See the note
22584    /// for ProcessStats.
22585    #[derive(Clone, PartialEq, ::prost::Message)]
22586    pub struct Thread {
22587        #[prost(int32, optional, tag="1")]
22588        pub tid: ::core::option::Option<i32>,
22589    }
22590    #[derive(Clone, PartialEq, ::prost::Message)]
22591    pub struct FdInfo {
22592        #[prost(uint64, optional, tag="1")]
22593        pub fd: ::core::option::Option<u64>,
22594        #[prost(string, optional, tag="2")]
22595        pub path: ::core::option::Option<::prost::alloc::string::String>,
22596    }
22597    #[derive(Clone, PartialEq, ::prost::Message)]
22598    pub struct Process {
22599        #[prost(int32, optional, tag="1")]
22600        pub pid: ::core::option::Option<i32>,
22601        #[prost(message, repeated, tag="11")]
22602        pub threads: ::prost::alloc::vec::Vec<Thread>,
22603        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
22604        #[prost(uint64, optional, tag="2")]
22605        pub vm_size_kb: ::core::option::Option<u64>,
22606        #[prost(uint64, optional, tag="3")]
22607        pub vm_rss_kb: ::core::option::Option<u64>,
22608        #[prost(uint64, optional, tag="4")]
22609        pub rss_anon_kb: ::core::option::Option<u64>,
22610        #[prost(uint64, optional, tag="5")]
22611        pub rss_file_kb: ::core::option::Option<u64>,
22612        #[prost(uint64, optional, tag="6")]
22613        pub rss_shmem_kb: ::core::option::Option<u64>,
22614        #[prost(uint64, optional, tag="7")]
22615        pub vm_swap_kb: ::core::option::Option<u64>,
22616        #[prost(uint64, optional, tag="8")]
22617        pub vm_locked_kb: ::core::option::Option<u64>,
22618        /// When adding a new field remember to update kProcMemCounterSize in
22619        /// the trace processor.
22620        #[prost(uint64, optional, tag="9")]
22621        pub vm_hwm_kb: ::core::option::Option<u64>,
22622        #[prost(int64, optional, tag="10")]
22623        pub oom_score_adj: ::core::option::Option<i64>,
22624        /// The peak resident set size is resettable in newer Posix kernels.
22625        /// This field specifies if reset is supported and if the writer had reset
22626        /// the peaks after each process stats recording.
22627        #[prost(bool, optional, tag="12")]
22628        pub is_peak_rss_resettable: ::core::option::Option<bool>,
22629        /// Private, shared and swap footprint of the process as measured by
22630        /// Chrome. To know more about these metrics refer to:
22631        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
22632        #[prost(uint32, optional, tag="13")]
22633        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
22634        #[prost(uint32, optional, tag="14")]
22635        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
22636        #[prost(message, repeated, tag="15")]
22637        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
22638        /// These fields are set only when scan_smaps_rollup=true
22639        #[prost(uint64, optional, tag="16")]
22640        pub smr_rss_kb: ::core::option::Option<u64>,
22641        #[prost(uint64, optional, tag="17")]
22642        pub smr_pss_kb: ::core::option::Option<u64>,
22643        #[prost(uint64, optional, tag="18")]
22644        pub smr_pss_anon_kb: ::core::option::Option<u64>,
22645        #[prost(uint64, optional, tag="19")]
22646        pub smr_pss_file_kb: ::core::option::Option<u64>,
22647        #[prost(uint64, optional, tag="20")]
22648        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
22649        #[prost(uint64, optional, tag="23")]
22650        pub smr_swap_pss_kb: ::core::option::Option<u64>,
22651        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
22652        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22653        /// Resolution of "clock ticks", usually 10ms.
22654        #[prost(uint64, optional, tag="21")]
22655        pub runtime_user_mode: ::core::option::Option<u64>,
22656        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
22657        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22658        /// Resolution of "clock ticks", usually 10ms.
22659        #[prost(uint64, optional, tag="22")]
22660        pub runtime_kernel_mode: ::core::option::Option<u64>,
22661        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
22662        #[prost(uint64, optional, tag="24")]
22663        pub dmabuf_rss_kb: ::core::option::Option<u64>,
22664    }
22665}
22666// End of protos/perfetto/trace/ps/process_stats.proto
22667
22668// Begin of protos/perfetto/trace/ps/process_tree.proto
22669
22670/// Metadata about the processes and threads in the trace.
22671/// Note: this proto was designed to be filled in by traced_probes and should
22672/// only be populated with accurate information coming from the system. Other
22673/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
22674/// in TrackDescriptor.
22675#[derive(Clone, PartialEq, ::prost::Message)]
22676pub struct ProcessTree {
22677    /// List of processes and threads in the client. These lists are incremental
22678    /// and not exhaustive. A process and its threads might show up separately in
22679    /// different ProcessTree messages. A thread might event not show up at all, if
22680    /// no sched_switch activity was detected, for instance:
22681    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
22682    /// #1 { threads: [{pid: 12, tgid: 10}] }
22683    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
22684    #[prost(message, repeated, tag="1")]
22685    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
22686    #[prost(message, repeated, tag="2")]
22687    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
22688    /// The time at which we finish collecting this process tree;
22689    /// the top-level packet timestamp is the time at which
22690    /// we begin collection.
22691    #[prost(uint64, optional, tag="3")]
22692    pub collection_end_timestamp: ::core::option::Option<u64>,
22693}
22694/// Nested message and enum types in `ProcessTree`.
22695pub mod process_tree {
22696    /// Representation of a thread.
22697    #[derive(Clone, PartialEq, ::prost::Message)]
22698    pub struct Thread {
22699        /// The thread ID (as per gettid()) in the root PID namespace.
22700        #[prost(int32, optional, tag="1")]
22701        pub tid: ::core::option::Option<i32>,
22702        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
22703        #[prost(int32, optional, tag="3")]
22704        pub tgid: ::core::option::Option<i32>,
22705        /// The name of the thread.
22706        #[prost(string, optional, tag="2")]
22707        pub name: ::core::option::Option<::prost::alloc::string::String>,
22708        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
22709        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
22710        /// level thread ID) omitted.
22711        #[prost(int32, repeated, packed="false", tag="4")]
22712        pub nstid: ::prost::alloc::vec::Vec<i32>,
22713    }
22714    /// Representation of a process.
22715    #[derive(Clone, PartialEq, ::prost::Message)]
22716    pub struct Process {
22717        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
22718        /// PID namespace.
22719        #[prost(int32, optional, tag="1")]
22720        pub pid: ::core::option::Option<i32>,
22721        /// The parent process ID, as per getppid().
22722        #[prost(int32, optional, tag="2")]
22723        pub ppid: ::core::option::Option<i32>,
22724        /// The command line for the process, as per /proc/pid/cmdline, broken up on
22725        /// NUL bytes.
22726        /// If it is a kernel thread or a zombie, there will only be one cmdline
22727        /// field and it will contain /proc/pid/comm.
22728        #[prost(string, repeated, tag="3")]
22729        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22730        /// If true, the |cmdline| field was filled with the main thread's "comm"
22731        /// field instead.
22732        /// Introduced in: perfetto v50.
22733        #[prost(bool, optional, tag="9")]
22734        pub cmdline_is_comm: ::core::option::Option<bool>,
22735        /// The uid for the process, as per /proc/pid/status.
22736        #[prost(int32, optional, tag="5")]
22737        pub uid: ::core::option::Option<i32>,
22738        /// The non-root-level process IDs if the process runs in a PID namespace.
22739        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
22740        /// (root-level process ID) omitted.
22741        #[prost(int32, repeated, packed="false", tag="6")]
22742        pub nspid: ::prost::alloc::vec::Vec<i32>,
22743        /// Timestamp of when the process was created, in nanoseconds
22744        /// from boot. Parsed from starttime in /proc/pid/stat.
22745        /// Recorded if record_process_age config option is set.
22746        /// Resolution of "clock ticks", usually 10ms.
22747        #[prost(uint64, optional, tag="7")]
22748        pub process_start_from_boot: ::core::option::Option<u64>,
22749        /// If true, the process is a kernel thread.
22750        /// Set only on linux v6.4+. For traces from older devices, it is possible to
22751        /// infer most kthreads by checking that they're a descendant of kthreadd
22752        /// (pid=2), or are the idle process (pid=0).
22753        /// Introduced in: perfetto v50.
22754        #[prost(bool, optional, tag="8")]
22755        pub is_kthread: ::core::option::Option<bool>,
22756    }
22757}
22758// End of protos/perfetto/trace/ps/process_tree.proto
22759
22760// Begin of protos/perfetto/trace/remote_clock_sync.proto
22761
22762/// Records the parameters for aligning clock readings between machines.
22763#[derive(Clone, PartialEq, ::prost::Message)]
22764pub struct RemoteClockSync {
22765    #[prost(message, repeated, tag="1")]
22766    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
22767}
22768/// Nested message and enum types in `RemoteClockSync`.
22769pub mod remote_clock_sync {
22770    /// Synchronized clock snapshots taken on both sides of the relay port (the
22771    /// tracing service and the relay service). A round of clock synchronization
22772    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
22773    /// snapshot -> client snapshot -> host snapshot.
22774    #[derive(Clone, PartialEq, ::prost::Message)]
22775    pub struct SyncedClocks {
22776        #[prost(message, optional, tag="2")]
22777        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
22778        #[prost(message, optional, tag="3")]
22779        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
22780    }
22781}
22782// End of protos/perfetto/trace/remote_clock_sync.proto
22783
22784// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
22785
22786/// Deliberate empty message. See comment on StatsdAtom#atom below.
22787#[derive(Clone, PartialEq, ::prost::Message)]
22788pub struct Atom {
22789}
22790/// One or more statsd atoms. This must continue to match:
22791/// perfetto/protos/third_party/statsd/shell_data.proto
22792/// So that we can efficiently add data from statsd directly to the
22793/// trace.
22794#[derive(Clone, PartialEq, ::prost::Message)]
22795pub struct StatsdAtom {
22796    /// Atom should be filled with an Atom proto from:
22797    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
22798    /// We don't reference Atom directly here since we don't want to import
22799    /// Atom.proto and all its transitive dependencies into Perfetto.
22800    /// atom and timestamp_nanos have the same cardinality
22801    #[prost(message, repeated, tag="1")]
22802    pub atom: ::prost::alloc::vec::Vec<Atom>,
22803    #[prost(int64, repeated, packed="false", tag="2")]
22804    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
22805}
22806// End of protos/perfetto/trace/statsd/statsd_atom.proto
22807
22808// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
22809
22810/// Various Linux system stat counters from /proc.
22811/// The fields in this message can be reported at different rates and with
22812/// different granularity. See sys_stats_config.proto.
22813#[derive(Clone, PartialEq, ::prost::Message)]
22814pub struct SysStats {
22815    #[prost(message, repeated, tag="1")]
22816    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
22817    #[prost(message, repeated, tag="2")]
22818    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
22819    /// One entry per cpu.
22820    #[prost(message, repeated, tag="3")]
22821    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
22822    /// Num processes forked since boot.
22823    /// Populated only if FORK_COUNT in config.stat_counters.
22824    #[prost(uint64, optional, tag="4")]
22825    pub num_forks: ::core::option::Option<u64>,
22826    // Number of interrupts, broken by IRQ number.
22827    // Populated only if IRQ_COUNTS in config.stat_counters.
22828
22829    /// Total num of irqs serviced since boot.
22830    #[prost(uint64, optional, tag="5")]
22831    pub num_irq_total: ::core::option::Option<u64>,
22832    #[prost(message, repeated, tag="6")]
22833    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22834    // Number of softirqs, broken by softirq number.
22835    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
22836
22837    /// Total num of softirqs since boot.
22838    #[prost(uint64, optional, tag="7")]
22839    pub num_softirq_total: ::core::option::Option<u64>,
22840    /// Per-softirq count.
22841    #[prost(message, repeated, tag="8")]
22842    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22843    /// The time at which we finish collecting this set of samples;
22844    /// the top-level packet timestamp is the time at which
22845    /// we begin collection.
22846    #[prost(uint64, optional, tag="9")]
22847    pub collection_end_timestamp: ::core::option::Option<u64>,
22848    /// One entry per device.
22849    #[prost(message, repeated, tag="10")]
22850    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
22851    /// Cpu current frequency from
22852    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
22853    /// One entry per cpu. Report 0 for offline cpu
22854    #[prost(uint32, repeated, packed="false", tag="11")]
22855    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
22856    /// One entry per each node's zones.
22857    #[prost(message, repeated, tag="12")]
22858    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
22859    /// One entry per disk device.
22860    #[prost(message, repeated, tag="13")]
22861    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
22862    /// One entry per PsiResource type.
22863    #[prost(message, repeated, tag="14")]
22864    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
22865    #[prost(message, repeated, tag="15")]
22866    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
22867    #[prost(message, repeated, tag="16")]
22868    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
22869    /// Read GPU frequency info on Intel/AMD devices.
22870    #[prost(uint64, repeated, packed="false", tag="17")]
22871    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
22872    #[prost(message, repeated, tag="18")]
22873    pub slab_info: ::prost::alloc::vec::Vec<sys_stats::SlabInfo>,
22874}
22875/// Nested message and enum types in `SysStats`.
22876pub mod sys_stats {
22877    /// Counters from /proc/meminfo. Values are in KB.
22878    #[derive(Clone, PartialEq, ::prost::Message)]
22879    pub struct MeminfoValue {
22880        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
22881        pub key: ::core::option::Option<i32>,
22882        #[prost(uint64, optional, tag="2")]
22883        pub value: ::core::option::Option<u64>,
22884    }
22885    /// Counter from /proc/vmstat. Units are often pages, not KB.
22886    #[derive(Clone, PartialEq, ::prost::Message)]
22887    pub struct VmstatValue {
22888        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
22889        pub key: ::core::option::Option<i32>,
22890        #[prost(uint64, optional, tag="2")]
22891        pub value: ::core::option::Option<u64>,
22892    }
22893    /// Times in each mode, since boot. Unit: nanoseconds.
22894    #[derive(Clone, PartialEq, ::prost::Message)]
22895    pub struct CpuTimes {
22896        #[prost(uint32, optional, tag="1")]
22897        pub cpu_id: ::core::option::Option<u32>,
22898        /// Time spent in user mode.
22899        #[prost(uint64, optional, tag="2")]
22900        pub user_ns: ::core::option::Option<u64>,
22901        /// Time spent in user mode (low prio).
22902        #[prost(uint64, optional, tag="3")]
22903        pub user_nice_ns: ::core::option::Option<u64>,
22904        /// Time spent in system mode.
22905        #[prost(uint64, optional, tag="4")]
22906        pub system_mode_ns: ::core::option::Option<u64>,
22907        /// Time spent in the idle task.
22908        #[prost(uint64, optional, tag="5")]
22909        pub idle_ns: ::core::option::Option<u64>,
22910        /// Time spent waiting for I/O.
22911        #[prost(uint64, optional, tag="6")]
22912        pub io_wait_ns: ::core::option::Option<u64>,
22913        /// Time spent servicing interrupts.
22914        #[prost(uint64, optional, tag="7")]
22915        pub irq_ns: ::core::option::Option<u64>,
22916        /// Time spent servicing softirqs.
22917        #[prost(uint64, optional, tag="8")]
22918        pub softirq_ns: ::core::option::Option<u64>,
22919        /// Time spent executing something else on host than this guest.
22920        #[prost(uint64, optional, tag="9")]
22921        pub steal_ns: ::core::option::Option<u64>,
22922    }
22923    #[derive(Clone, PartialEq, ::prost::Message)]
22924    pub struct InterruptCount {
22925        #[prost(int32, optional, tag="1")]
22926        pub irq: ::core::option::Option<i32>,
22927        #[prost(uint64, optional, tag="2")]
22928        pub count: ::core::option::Option<u64>,
22929    }
22930    /// Frequencies for /sys/class/devfreq/ entries in kHz.
22931    #[derive(Clone, PartialEq, ::prost::Message)]
22932    pub struct DevfreqValue {
22933        #[prost(string, optional, tag="1")]
22934        pub key: ::core::option::Option<::prost::alloc::string::String>,
22935        #[prost(uint64, optional, tag="2")]
22936        pub value: ::core::option::Option<u64>,
22937    }
22938    #[derive(Clone, PartialEq, ::prost::Message)]
22939    pub struct BuddyInfo {
22940        #[prost(string, optional, tag="1")]
22941        pub node: ::core::option::Option<::prost::alloc::string::String>,
22942        #[prost(string, optional, tag="2")]
22943        pub zone: ::core::option::Option<::prost::alloc::string::String>,
22944        #[prost(uint32, repeated, packed="false", tag="3")]
22945        pub order_pages: ::prost::alloc::vec::Vec<u32>,
22946    }
22947    /// Counters from /proc/diskstats.
22948    #[derive(Clone, PartialEq, ::prost::Message)]
22949    pub struct DiskStat {
22950        #[prost(string, optional, tag="1")]
22951        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
22952        #[prost(uint64, optional, tag="2")]
22953        pub read_sectors: ::core::option::Option<u64>,
22954        #[prost(uint64, optional, tag="3")]
22955        pub read_time_ms: ::core::option::Option<u64>,
22956        #[prost(uint64, optional, tag="4")]
22957        pub write_sectors: ::core::option::Option<u64>,
22958        #[prost(uint64, optional, tag="5")]
22959        pub write_time_ms: ::core::option::Option<u64>,
22960        #[prost(uint64, optional, tag="6")]
22961        pub discard_sectors: ::core::option::Option<u64>,
22962        #[prost(uint64, optional, tag="7")]
22963        pub discard_time_ms: ::core::option::Option<u64>,
22964        #[prost(uint64, optional, tag="8")]
22965        pub flush_count: ::core::option::Option<u64>,
22966        #[prost(uint64, optional, tag="9")]
22967        pub flush_time_ms: ::core::option::Option<u64>,
22968    }
22969    /// Reading from /proc/pressure/*.
22970    #[derive(Clone, PartialEq, ::prost::Message)]
22971    pub struct PsiSample {
22972        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
22973        pub resource: ::core::option::Option<i32>,
22974        /// Total absolute stall time (in nanos) for a given resource.
22975        /// While PSI readings are in micros, we store in nanos for consistency with
22976        /// most other time-based counters.
22977        #[prost(uint64, optional, tag="2")]
22978        pub total_ns: ::core::option::Option<u64>,
22979    }
22980    /// Nested message and enum types in `PsiSample`.
22981    pub mod psi_sample {
22982        /// Type of resource that may have exhibited pressure stalls.
22983        ///     * _SOME indicates some resource tasks stalled.
22984        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
22985        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22986        #[repr(i32)]
22987        pub enum PsiResource {
22988            Unspecified = 0,
22989            CpuSome = 1,
22990            CpuFull = 2,
22991            IoSome = 3,
22992            IoFull = 4,
22993            MemorySome = 5,
22994            MemoryFull = 6,
22995        }
22996        impl PsiResource {
22997            /// String value of the enum field names used in the ProtoBuf definition.
22998            ///
22999            /// The values are not transformed in any way and thus are considered stable
23000            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23001            pub fn as_str_name(&self) -> &'static str {
23002                match self {
23003                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
23004                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
23005                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
23006                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
23007                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
23008                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
23009                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
23010                }
23011            }
23012        }
23013    }
23014    /// Reading from /sys/class/thermal/*.
23015    #[derive(Clone, PartialEq, ::prost::Message)]
23016    pub struct ThermalZone {
23017        #[prost(string, optional, tag="1")]
23018        pub name: ::core::option::Option<::prost::alloc::string::String>,
23019        #[prost(uint64, optional, tag="2")]
23020        pub temp: ::core::option::Option<u64>,
23021        #[prost(string, optional, tag="3")]
23022        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23023    }
23024    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
23025    #[derive(Clone, PartialEq, ::prost::Message)]
23026    pub struct CpuIdleStateEntry {
23027        /// Name of the idle state, e.g. C1-C10
23028        #[prost(string, optional, tag="1")]
23029        pub state: ::core::option::Option<::prost::alloc::string::String>,
23030        #[prost(uint64, optional, tag="2")]
23031        pub duration_us: ::core::option::Option<u64>,
23032    }
23033    #[derive(Clone, PartialEq, ::prost::Message)]
23034    pub struct CpuIdleState {
23035        #[prost(uint32, optional, tag="1")]
23036        pub cpu_id: ::core::option::Option<u32>,
23037        #[prost(message, repeated, tag="2")]
23038        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
23039    }
23040    /// Reading from /proc/slabinfo.
23041    #[derive(Clone, PartialEq, ::prost::Message)]
23042    pub struct SlabInfo {
23043        #[prost(string, optional, tag="1")]
23044        pub name: ::core::option::Option<::prost::alloc::string::String>,
23045        #[prost(uint32, optional, tag="2")]
23046        pub pages_per_slab: ::core::option::Option<u32>,
23047        #[prost(uint32, optional, tag="3")]
23048        pub num_slabs: ::core::option::Option<u32>,
23049    }
23050}
23051// End of protos/perfetto/trace/sys_stats/sys_stats.proto
23052
23053// Begin of protos/perfetto/trace/system_info/cpu_info.proto
23054
23055/// Information about CPUs from procfs and sysfs.
23056#[derive(Clone, PartialEq, ::prost::Message)]
23057pub struct CpuInfo {
23058    /// Describes available CPUs, one entry per CPU.
23059    #[prost(message, repeated, tag="1")]
23060    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
23061}
23062/// Nested message and enum types in `CpuInfo`.
23063pub mod cpu_info {
23064    #[derive(Clone, PartialEq, ::prost::Message)]
23065    pub struct ArmCpuIdentifier {
23066        /// Implementer code
23067        #[prost(uint32, optional, tag="1")]
23068        pub implementer: ::core::option::Option<u32>,
23069        /// Architecture code
23070        #[prost(uint32, optional, tag="2")]
23071        pub architecture: ::core::option::Option<u32>,
23072        /// CPU variant
23073        #[prost(uint32, optional, tag="3")]
23074        pub variant: ::core::option::Option<u32>,
23075        /// CPU part
23076        #[prost(uint32, optional, tag="4")]
23077        pub part: ::core::option::Option<u32>,
23078        /// CPU revision
23079        #[prost(uint32, optional, tag="5")]
23080        pub revision: ::core::option::Option<u32>,
23081    }
23082    /// Information about a single CPU.
23083    #[derive(Clone, PartialEq, ::prost::Message)]
23084    pub struct Cpu {
23085        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
23086        /// Example: "AArch64 Processor rev 12 (aarch64)"
23087        #[prost(string, optional, tag="1")]
23088        pub processor: ::core::option::Option<::prost::alloc::string::String>,
23089        /// Frequencies from
23090        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
23091        /// where X is the index of this CPU.
23092        #[prost(uint32, repeated, packed="false", tag="2")]
23093        pub frequencies: ::prost::alloc::vec::Vec<u32>,
23094        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
23095        /// the index of this CPU.
23096        #[prost(uint32, optional, tag="3")]
23097        pub capacity: ::core::option::Option<u32>,
23098        /// Features is a bitmap containing a bit set for each feature defined in
23099        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
23100        /// index.
23101        #[prost(uint64, optional, tag="5")]
23102        pub features: ::core::option::Option<u64>,
23103        /// Code to identify the CPU
23104        #[prost(oneof="cpu::Identifier", tags="4")]
23105        pub identifier: ::core::option::Option<cpu::Identifier>,
23106    }
23107    /// Nested message and enum types in `Cpu`.
23108    pub mod cpu {
23109        /// Code to identify the CPU
23110        #[derive(Clone, PartialEq, ::prost::Oneof)]
23111        pub enum Identifier {
23112            #[prost(message, tag="4")]
23113            ArmIdentifier(super::ArmCpuIdentifier),
23114        }
23115    }
23116}
23117// End of protos/perfetto/trace/system_info/cpu_info.proto
23118
23119// Begin of protos/perfetto/trace/system_info/gpu_info.proto
23120
23121/// Information about GPUs on the device.
23122#[derive(Clone, PartialEq, ::prost::Message)]
23123pub struct GpuInfo {
23124    /// Describes available GPUs, one entry per GPU. The index in the list
23125    /// corresponds to the gpu_id used elsewhere in the trace.
23126    #[prost(message, repeated, tag="1")]
23127    pub gpus: ::prost::alloc::vec::Vec<gpu_info::Gpu>,
23128}
23129/// Nested message and enum types in `GpuInfo`.
23130pub mod gpu_info {
23131    /// Information about a single GPU.
23132    #[derive(Clone, PartialEq, ::prost::Message)]
23133    pub struct Gpu {
23134        /// GPU name (e.g., "NVIDIA A100", "Adreno 740").
23135        /// Used by the Perfetto UI as the display label for GPU tracks (e.g.,
23136        /// "NVIDIA A100 Frequency" instead of "GPU 0 Frequency"). If multiple GPUs
23137        /// share the same name, consider appending an index to distinguish them
23138        /// (e.g., "NVIDIA A100 #0", "NVIDIA A100 #1").
23139        #[prost(string, optional, tag="1")]
23140        pub name: ::core::option::Option<::prost::alloc::string::String>,
23141        /// GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
23142        #[prost(string, optional, tag="2")]
23143        pub vendor: ::core::option::Option<::prost::alloc::string::String>,
23144        /// GPU model/product identifier.
23145        #[prost(string, optional, tag="3")]
23146        pub model: ::core::option::Option<::prost::alloc::string::String>,
23147        /// GPU architecture (e.g., "Ampere", "RDNA 3", "Adreno").
23148        #[prost(string, optional, tag="4")]
23149        pub architecture: ::core::option::Option<::prost::alloc::string::String>,
23150        /// 16-byte device UUID when available.
23151        #[prost(bytes="vec", optional, tag="5")]
23152        pub uuid: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
23153        /// PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
23154        #[prost(string, optional, tag="7")]
23155        pub pci_bdf: ::core::option::Option<::prost::alloc::string::String>,
23156        #[prost(message, repeated, tag="6")]
23157        pub extra_info: ::prost::alloc::vec::Vec<gpu::KeyValue>,
23158    }
23159    /// Nested message and enum types in `Gpu`.
23160    pub mod gpu {
23161        /// Arbitrary key-value pairs for vendor-specific info
23162        /// (driver version, memory size, compute capability, clock speeds, etc.).
23163        #[derive(Clone, PartialEq, ::prost::Message)]
23164        pub struct KeyValue {
23165            #[prost(string, optional, tag="1")]
23166            pub key: ::core::option::Option<::prost::alloc::string::String>,
23167            #[prost(string, optional, tag="2")]
23168            pub value: ::core::option::Option<::prost::alloc::string::String>,
23169        }
23170    }
23171}
23172// End of protos/perfetto/trace/system_info/gpu_info.proto
23173
23174// Begin of protos/perfetto/trace/system_info/interrupt_info.proto
23175
23176/// Hardware interrupt (IRQ) ID-to-name mappings collected from
23177/// /proc/interrupts at the start of a trace.
23178/// Emitted by the linux.system_info data source when irq_names: true is set
23179/// in SystemInfoConfig.
23180#[derive(Clone, PartialEq, ::prost::Message)]
23181pub struct InterruptInfo {
23182    /// One entry per hardware IRQ found in /proc/interrupts.
23183    #[prost(message, repeated, tag="1")]
23184    pub irq_mapping: ::prost::alloc::vec::Vec<interrupt_info::InterruptMapping>,
23185}
23186/// Nested message and enum types in `InterruptInfo`.
23187pub mod interrupt_info {
23188    #[derive(Clone, PartialEq, ::prost::Message)]
23189    pub struct InterruptMapping {
23190        /// Numeric IRQ identifier.
23191        #[prost(uint32, optional, tag="1")]
23192        pub irq_id: ::core::option::Option<u32>,
23193        /// Human-readable name for the IRQ (e.g. "arch_timer", "arm-pmu").
23194        #[prost(string, optional, tag="2")]
23195        pub name: ::core::option::Option<::prost::alloc::string::String>,
23196    }
23197}
23198// End of protos/perfetto/trace/system_info/interrupt_info.proto
23199
23200// Begin of protos/perfetto/trace/test_event.proto
23201
23202/// Event used by testing code.
23203#[derive(Clone, PartialEq, ::prost::Message)]
23204pub struct TestEvent {
23205    /// Arbitrary string used in tests.
23206    #[prost(string, optional, tag="1")]
23207    pub str: ::core::option::Option<::prost::alloc::string::String>,
23208    /// The current value of the random number sequence used in tests.
23209    #[prost(uint32, optional, tag="2")]
23210    pub seq_value: ::core::option::Option<u32>,
23211    /// Monotonically increased on each packet.
23212    #[prost(uint64, optional, tag="3")]
23213    pub counter: ::core::option::Option<u64>,
23214    /// No more packets should follow (from the current sequence).
23215    #[prost(bool, optional, tag="4")]
23216    pub is_last: ::core::option::Option<bool>,
23217    #[prost(message, optional, tag="5")]
23218    pub payload: ::core::option::Option<test_event::TestPayload>,
23219    #[prost(message, optional, tag="6")]
23220    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
23221    #[prost(message, optional, tag="7")]
23222    pub protovm_incremental_state: ::core::option::Option<test_event::ProtoVmIncrementalState>,
23223}
23224/// Nested message and enum types in `TestEvent`.
23225pub mod test_event {
23226    #[derive(Clone, PartialEq, ::prost::Message)]
23227    pub struct TestPayload {
23228        #[prost(string, repeated, tag="1")]
23229        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23230        #[prost(message, repeated, tag="2")]
23231        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
23232        #[prost(string, optional, tag="4")]
23233        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
23234        #[prost(int32, optional, tag="5")]
23235        pub single_int: ::core::option::Option<i32>,
23236        #[prost(int32, repeated, packed="false", tag="6")]
23237        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
23238        /// When 0 this is the bottom-most nested message.
23239        #[prost(uint32, optional, tag="3")]
23240        pub remaining_nesting_depth: ::core::option::Option<u32>,
23241        #[prost(message, repeated, tag="7")]
23242        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
23243    }
23244    /// Simple ProtoVm patch and incremental state formats used for testing
23245    #[derive(Clone, PartialEq, ::prost::Message)]
23246    pub struct ProtoVmMessage {
23247        #[prost(uint32, optional, tag="1")]
23248        pub id: ::core::option::Option<u32>,
23249        #[prost(message, optional, tag="2")]
23250        pub submessage: ::core::option::Option<proto_vm_message::ProtoVmSubmessage>,
23251    }
23252    /// Nested message and enum types in `ProtoVmMessage`.
23253    pub mod proto_vm_message {
23254        #[derive(Clone, PartialEq, ::prost::Message)]
23255        pub struct ProtoVmSubmessage {
23256            #[prost(uint32, optional, tag="1")]
23257            pub single_int: ::core::option::Option<u32>,
23258        }
23259    }
23260    #[derive(Clone, PartialEq, ::prost::Message)]
23261    pub struct ProtoVmPatch {
23262        #[prost(string, optional, tag="1")]
23263        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
23264        #[prost(int32, optional, tag="2")]
23265        pub int_to_merge: ::core::option::Option<i32>,
23266        #[prost(message, optional, tag="3")]
23267        pub single_message: ::core::option::Option<ProtoVmMessage>,
23268        #[prost(message, repeated, tag="4")]
23269        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
23270        #[prost(uint32, repeated, packed="false", tag="5")]
23271        pub delete_message_ids: ::prost::alloc::vec::Vec<u32>,
23272    }
23273    #[derive(Clone, PartialEq, ::prost::Message)]
23274    pub struct ProtoVmIncrementalState {
23275        #[prost(string, optional, tag="1")]
23276        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
23277        #[prost(int32, optional, tag="2")]
23278        pub int_merged: ::core::option::Option<i32>,
23279        #[prost(message, optional, tag="3")]
23280        pub single_message: ::core::option::Option<ProtoVmMessage>,
23281        #[prost(message, repeated, tag="4")]
23282        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
23283    }
23284}
23285// End of protos/perfetto/trace/test_event.proto
23286
23287// Begin of protos/perfetto/trace/trace_packet_defaults.proto
23288
23289/// Default values for TracePacket fields that hold for a particular TraceWriter
23290/// packet sequence. This message contains a subset of the TracePacket fields
23291/// with matching IDs. When provided, these fields define the default values
23292/// that should be applied, at import time, to all TracePacket(s) with the same
23293/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
23294///
23295/// Should be reemitted whenever incremental state is cleared on the sequence.
23296#[derive(Clone, PartialEq, ::prost::Message)]
23297pub struct TracePacketDefaults {
23298    #[prost(uint32, optional, tag="58")]
23299    pub timestamp_clock_id: ::core::option::Option<u32>,
23300    /// Default values for TrackEvents (e.g. default track).
23301    #[prost(message, optional, tag="11")]
23302    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
23303    /// Defaults for perf profiler packets (PerfSample).
23304    #[prost(message, optional, tag="12")]
23305    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
23306    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
23307    /// V8RegexpCode)
23308    #[prost(message, optional, tag="99")]
23309    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
23310}
23311// Begin of protos/perfetto/trace/trace_uuid.proto
23312
23313/// A random unique ID that identifies the trace.
23314/// This message has been introduced in v32. Prior to that, the UUID was
23315/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
23316/// This has been moved to a standalone packet to deal with new use-cases for
23317/// go/gapless-aot, where the same tracing session can be serialized several
23318/// times, in which case the UUID is changed on each snapshot and does not match
23319/// the one in the TraceConfig.
23320#[derive(Clone, PartialEq, ::prost::Message)]
23321pub struct TraceUuid {
23322    #[prost(int64, optional, tag="1")]
23323    pub msb: ::core::option::Option<i64>,
23324    #[prost(int64, optional, tag="2")]
23325    pub lsb: ::core::option::Option<i64>,
23326}
23327// End of protos/perfetto/trace/trace_uuid.proto
23328
23329// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
23330
23331/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
23332/// usually by the process's main thread.
23333///
23334/// Next id: 9.
23335#[derive(Clone, PartialEq, ::prost::Message)]
23336pub struct ProcessDescriptor {
23337    #[prost(int32, optional, tag="1")]
23338    pub pid: ::core::option::Option<i32>,
23339    #[prost(string, repeated, tag="2")]
23340    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23341    #[prost(string, optional, tag="6")]
23342    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
23343    #[prost(int32, optional, tag="5")]
23344    pub process_priority: ::core::option::Option<i32>,
23345    /// Process start time in nanoseconds.
23346    /// The timestamp refers to the trace clock by default. Other clock IDs
23347    /// provided in TracePacket are not supported.
23348    #[prost(int64, optional, tag="7")]
23349    pub start_timestamp_ns: ::core::option::Option<i64>,
23350    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
23351    pub chrome_process_type: ::core::option::Option<i32>,
23352    /// To support old UI. New UI should determine default sorting by process_type.
23353    #[prost(int32, optional, tag="3")]
23354    pub legacy_sort_index: ::core::option::Option<i32>,
23355    /// Labels can be used to further describe properties of the work performed by
23356    /// the process. For example, these can be used by Chrome renderer process to
23357    /// provide titles of frames being rendered.
23358    #[prost(string, repeated, tag="8")]
23359    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23360}
23361/// Nested message and enum types in `ProcessDescriptor`.
23362pub mod process_descriptor {
23363    // ---------------------------------------------------------------------------
23364    // Deprecated / legacy fields, which will be removed in the future:
23365    // ---------------------------------------------------------------------------
23366
23367    /// See chromium's content::ProcessType.
23368    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23369    #[repr(i32)]
23370    pub enum ChromeProcessType {
23371        ProcessUnspecified = 0,
23372        ProcessBrowser = 1,
23373        ProcessRenderer = 2,
23374        ProcessUtility = 3,
23375        ProcessZygote = 4,
23376        ProcessSandboxHelper = 5,
23377        ProcessGpu = 6,
23378        ProcessPpapiPlugin = 7,
23379        ProcessPpapiBroker = 8,
23380    }
23381    impl ChromeProcessType {
23382        /// String value of the enum field names used in the ProtoBuf definition.
23383        ///
23384        /// The values are not transformed in any way and thus are considered stable
23385        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23386        pub fn as_str_name(&self) -> &'static str {
23387            match self {
23388                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
23389                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
23390                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
23391                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
23392                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
23393                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
23394                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
23395                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
23396                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
23397            }
23398        }
23399    }
23400}
23401// End of protos/perfetto/trace/track_event/process_descriptor.proto
23402
23403// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
23404
23405/// This message specifies the "range of interest" for track events. With the
23406/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
23407/// Trace Processor drops track events outside of this range.
23408#[derive(Clone, PartialEq, ::prost::Message)]
23409pub struct TrackEventRangeOfInterest {
23410    #[prost(int64, optional, tag="1")]
23411    pub start_us: ::core::option::Option<i64>,
23412}
23413// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
23414
23415/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
23416/// usually by the thread's trace writer.
23417///
23418/// Next id: 9.
23419#[derive(Clone, PartialEq, ::prost::Message)]
23420pub struct ThreadDescriptor {
23421    #[prost(int32, optional, tag="1")]
23422    pub pid: ::core::option::Option<i32>,
23423    #[prost(int64, optional, tag="2")]
23424    pub tid: ::core::option::Option<i64>,
23425    #[prost(string, optional, tag="5")]
23426    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
23427    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
23428    pub chrome_thread_type: ::core::option::Option<i32>,
23429    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
23430    /// and timestamp_clock_id fields instead.
23431    #[prost(int64, optional, tag="6")]
23432    pub reference_timestamp_us: ::core::option::Option<i64>,
23433    /// Absolute reference values. Clock values in subsequent TrackEvents can be
23434    /// encoded accumulatively and relative to these. This reduces their var-int
23435    /// encoding size.
23436    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
23437    #[prost(int64, optional, tag="7")]
23438    pub reference_thread_time_us: ::core::option::Option<i64>,
23439    #[prost(int64, optional, tag="8")]
23440    pub reference_thread_instruction_count: ::core::option::Option<i64>,
23441    /// To support old UI. New UI should determine default sorting by thread_type.
23442    #[prost(int32, optional, tag="3")]
23443    pub legacy_sort_index: ::core::option::Option<i32>,
23444}
23445/// Nested message and enum types in `ThreadDescriptor`.
23446pub mod thread_descriptor {
23447    // ---------------------------------------------------------------------------
23448    // Deprecated / legacy fields, which will be removed in the future:
23449    // ---------------------------------------------------------------------------
23450
23451    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23452    #[repr(i32)]
23453    pub enum ChromeThreadType {
23454        ChromeThreadUnspecified = 0,
23455        ChromeThreadMain = 1,
23456        ChromeThreadIo = 2,
23457        /// Scheduler:
23458        ChromeThreadPoolBgWorker = 3,
23459        ChromeThreadPoolFgWorker = 4,
23460        ChromeThreadPoolFbBlocking = 5,
23461        ChromeThreadPoolBgBlocking = 6,
23462        ChromeThreadPoolService = 7,
23463        /// Compositor:
23464        ChromeThreadCompositor = 8,
23465        ChromeThreadVizCompositor = 9,
23466        ChromeThreadCompositorWorker = 10,
23467        /// Renderer:
23468        ChromeThreadServiceWorker = 11,
23469        /// Tracing related threads:
23470        ChromeThreadMemoryInfra = 50,
23471        ChromeThreadSamplingProfiler = 51,
23472    }
23473    impl ChromeThreadType {
23474        /// String value of the enum field names used in the ProtoBuf definition.
23475        ///
23476        /// The values are not transformed in any way and thus are considered stable
23477        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23478        pub fn as_str_name(&self) -> &'static str {
23479            match self {
23480                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
23481                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
23482                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
23483                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
23484                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
23485                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
23486                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
23487                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
23488                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
23489                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
23490                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
23491                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
23492                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
23493                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
23494            }
23495        }
23496    }
23497}
23498// End of protos/perfetto/trace/track_event/thread_descriptor.proto
23499
23500// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23501
23502/// Describes the attributes for a Chrome process. Must be paired with a
23503/// ProcessDescriptor in the same TrackDescriptor.
23504///
23505/// Next id: 6.
23506#[derive(Clone, PartialEq, ::prost::Message)]
23507pub struct ChromeProcessDescriptor {
23508    /// This is a chrome_enums::ProcessType from
23509    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23510    /// be imported here because of a dependency loop.
23511    #[prost(int32, optional, tag="1")]
23512    pub process_type: ::core::option::Option<i32>,
23513    #[prost(int32, optional, tag="2")]
23514    pub process_priority: ::core::option::Option<i32>,
23515    /// To support old UI. New UI should determine default sorting by process_type.
23516    #[prost(int32, optional, tag="3")]
23517    pub legacy_sort_index: ::core::option::Option<i32>,
23518    /// Name of the hosting app for WebView. Used to match renderer processes to
23519    /// their hosting apps.
23520    #[prost(string, optional, tag="4")]
23521    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
23522    /// The ID to link crashes to trace.
23523    /// Notes:
23524    /// * The ID is per process. So, each trace may contain many IDs, and you need
23525    ///    to look for the ID from crashed process to find the crash report.
23526    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
23527    ///    get an uploaded trace, since uploads could have failed.
23528    /// * On the other hand, if there was a crash during the session and trace was
23529    ///    uploaded, it is very likely to find a crash report with the trace ID.
23530    /// * This is not crash ID or trace ID. It is just a random 64-bit number
23531    ///    recorded in both traces and crashes. It is possible to have collisions,
23532    ///    though very rare.
23533    #[prost(uint64, optional, tag="5")]
23534    pub crash_trace_id: ::core::option::Option<u64>,
23535}
23536// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23537
23538// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23539
23540/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
23541/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
23542/// in the same TrackDescriptor.
23543///
23544/// Next id: 3.
23545#[derive(Clone, PartialEq, ::prost::Message)]
23546pub struct ChromeThreadDescriptor {
23547    /// This is a chrome_enums::ThreadType from
23548    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23549    /// be imported here because of a dependency loop.
23550    #[prost(int32, optional, tag="1")]
23551    pub thread_type: ::core::option::Option<i32>,
23552    /// To support old UI. New UI should determine default sorting by thread_type.
23553    #[prost(int32, optional, tag="2")]
23554    pub legacy_sort_index: ::core::option::Option<i32>,
23555    /// Indicates whether the thread's tid specified in the thread descriptor is
23556    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
23557    #[prost(bool, optional, tag="3")]
23558    pub is_sandboxed_tid: ::core::option::Option<bool>,
23559}
23560// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23561
23562// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
23563
23564/// Defines properties of a counter track, e.g. for built-in counters (thread
23565/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
23566/// a specific app component).
23567///
23568/// Counter tracks only support TYPE_COUNTER track events, which specify new
23569/// values for the counter. For counters that require per-slice values, counter
23570/// values can instead be provided in a more efficient encoding via TrackEvent's
23571/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
23572/// slice-type events cannot be emitted onto a counter track.
23573///
23574/// Values for counters that are only emitted on a single packet sequence can
23575/// optionally be delta-encoded, see |is_incremental|.
23576///
23577/// Next id: 7.
23578#[derive(Clone, PartialEq, ::prost::Message)]
23579pub struct CounterDescriptor {
23580    /// For built-in counters (e.g. thread time). Custom user-specified counters
23581    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
23582    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
23583    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
23584    pub r#type: ::core::option::Option<i32>,
23585    /// Names of categories of the counter (usually for user-specified counters).
23586    /// In the client library, categories are a way to turn groups of individual
23587    /// counters (or events) on or off.
23588    #[prost(string, repeated, tag="2")]
23589    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23590    /// Type of the counter's values. Built-in counters imply a value for this
23591    /// field.
23592    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
23593    pub unit: ::core::option::Option<i32>,
23594    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
23595    /// name can be used instead.
23596    #[prost(string, optional, tag="6")]
23597    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
23598    /// Multiplication factor of this counter's values, e.g. to supply
23599    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
23600    #[prost(int64, optional, tag="4")]
23601    pub unit_multiplier: ::core::option::Option<i64>,
23602    /// Whether values for this counter are provided as delta values. Only
23603    /// supported for counters that are emitted on a single packet-sequence (e.g.
23604    /// thread time). Counter values in subsequent packets on the current packet
23605    /// sequence will be interpreted as delta values from the sequence's most
23606    /// recent value for the counter. When incremental state is cleared, the
23607    /// counter value is considered to be reset to 0. Thus, the first value after
23608    /// incremental state is cleared is effectively an absolute value.
23609    #[prost(bool, optional, tag="5")]
23610    pub is_incremental: ::core::option::Option<bool>,
23611    // TODO(eseckler): Support arguments describing the counter (?).
23612    // repeated DebugAnnotation debug_annotations;
23613
23614    /// When visualizing multiple counter tracks, it is often useful to have them
23615    /// share the same Y-axis range. This allows for easy comparison of their
23616    /// values.
23617    ///
23618    /// All counter tracks with the same |y_axis_share_key| and the same parent
23619    /// track (e.g. grouped under the same process track) will share their y-axis
23620    /// range in the UI.
23621    #[prost(string, optional, tag="7")]
23622    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
23623}
23624/// Nested message and enum types in `CounterDescriptor`.
23625pub mod counter_descriptor {
23626    /// Built-in counters, usually with special meaning in the client library,
23627    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
23628    /// track name from the enum value if none is provided in TrackDescriptor.
23629    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23630    #[repr(i32)]
23631    pub enum BuiltinCounterType {
23632        CounterUnspecified = 0,
23633        // Thread-scoped counters. The thread's track should be specified via
23634        // |parent_uuid| in the TrackDescriptor for such a counter.
23635
23636        /// implies UNIT_TIME_NS.
23637        CounterThreadTimeNs = 1,
23638        /// implies UNIT_COUNT.
23639        CounterThreadInstructionCount = 2,
23640    }
23641    impl BuiltinCounterType {
23642        /// String value of the enum field names used in the ProtoBuf definition.
23643        ///
23644        /// The values are not transformed in any way and thus are considered stable
23645        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23646        pub fn as_str_name(&self) -> &'static str {
23647            match self {
23648                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
23649                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
23650                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
23651            }
23652        }
23653    }
23654    /// Type of the values for the counters - to supply lower granularity units,
23655    /// see also |unit_multiplier|.
23656    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23657    #[repr(i32)]
23658    pub enum Unit {
23659        Unspecified = 0,
23660        TimeNs = 1,
23661        Count = 2,
23662        /// TODO(eseckler): Support more units as necessary.
23663        SizeBytes = 3,
23664    }
23665    impl Unit {
23666        /// String value of the enum field names used in the ProtoBuf definition.
23667        ///
23668        /// The values are not transformed in any way and thus are considered stable
23669        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23670        pub fn as_str_name(&self) -> &'static str {
23671            match self {
23672                Unit::Unspecified => "UNIT_UNSPECIFIED",
23673                Unit::TimeNs => "UNIT_TIME_NS",
23674                Unit::Count => "UNIT_COUNT",
23675                Unit::SizeBytes => "UNIT_SIZE_BYTES",
23676            }
23677        }
23678    }
23679}
23680// End of protos/perfetto/trace/track_event/counter_descriptor.proto
23681
23682// Begin of protos/perfetto/trace/track_event/state_descriptor.proto
23683
23684/// Descriptor for a state track.
23685///
23686/// For now, this message is empty. It is used to identify a track as a state
23687/// track.
23688#[derive(Clone, PartialEq, ::prost::Message)]
23689pub struct StateDescriptor {
23690}
23691// End of protos/perfetto/trace/track_event/state_descriptor.proto
23692
23693// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
23694
23695/// Defines a track for TrackEvents. Slices and instant events on the same track
23696/// will be nested based on their timestamps, see TrackEvent::Type.
23697///
23698/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
23699/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
23700/// when the ring buffer wraps, it should be reemitted whenever incremental state
23701/// is cleared.
23702///
23703/// As a fallback, TrackEvents emitted without an explicit track association will
23704/// be associated with an implicit trace-global track (uuid = 0), see also
23705/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
23706/// TrackDescriptor for this implicit track.
23707///
23708/// Next id: 19.
23709#[derive(Clone, PartialEq, ::prost::Message)]
23710pub struct TrackDescriptor {
23711    /// Unique ID that identifies this track. This ID is global to the whole trace.
23712    /// Producers should ensure that it is unlikely to clash with IDs emitted by
23713    /// other producers. A value of 0 denotes the implicit trace-global track.
23714    ///
23715    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
23716    /// event id + id_scope, pid, and/or tid to compute this ID.
23717    #[prost(uint64, optional, tag="1")]
23718    pub uuid: ::core::option::Option<u64>,
23719    /// A parent track reference can be used to describe relationships between
23720    /// tracks. For example, to define an asynchronous track which is scoped to a
23721    /// specific process, specify the uuid for that process's process track here.
23722    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
23723    /// thread, specify the uuid for that thread's thread track here. In general,
23724    /// setting a parent will *nest* that track under the parent in the UI and in
23725    /// the trace processor data model (with the important exception noted below).
23726    ///
23727    /// If not specified, the track will be a root track, i.e. not nested under any
23728    /// other track.
23729    ///
23730    /// Note: if the `thread` or `process` fields are set, this value will be
23731    /// *ignored* as priority is given to those fields.
23732    ///
23733    /// Note: if the parent is set to a track with `thread` or `process` fields
23734    /// set, the track will *not* be nested under the parent in the UI and in the
23735    /// trace processor data model. Instead, the track will inherit the parent's
23736    /// thread/process association and will appear as a *sibling* of the parent.
23737    /// This semantic exists for back-compat reasons as the UI used to work this
23738    /// way for years and changing this leads to a lot of traces subtly breaking.
23739    /// If you want to force nesting, create *another* intermediate track to act as
23740    /// the parent.
23741    #[prost(uint64, optional, tag="5")]
23742    pub parent_uuid: ::core::option::Option<u64>,
23743    /// A human-readable description of the track providing more context about its
23744    /// data. In the UI, this is shown in a popup when the track's help button is
23745    /// clicked.
23746    #[prost(string, optional, tag="14")]
23747    pub description: ::core::option::Option<::prost::alloc::string::String>,
23748    /// Associate the track with a process, making it the process-global track.
23749    /// There should only be one such track per process (usually for instant
23750    /// events; trace processor uses this fact to detect pid reuse). If you need
23751    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
23752    ///
23753    /// Trace processor will merge events on a process track with slice-type events
23754    /// from other sources (e.g. ftrace) for the same process into a single
23755    /// timeline view.
23756    #[prost(message, optional, tag="3")]
23757    pub process: ::core::option::Option<ProcessDescriptor>,
23758    #[prost(message, optional, tag="6")]
23759    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
23760    /// Associate the track with a thread, indicating that the track's events
23761    /// describe synchronous code execution on the thread. There should only be one
23762    /// such track per thread (trace processor uses this fact to detect tid reuse).
23763    ///
23764    /// Trace processor will merge events on a thread track with slice-type events
23765    /// from other sources (e.g. ftrace) for the same thread into a single timeline
23766    /// view.
23767    #[prost(message, optional, tag="4")]
23768    pub thread: ::core::option::Option<ThreadDescriptor>,
23769    #[prost(message, optional, tag="7")]
23770    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
23771    /// Descriptor for a counter track. If set, the track will only support
23772    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
23773    /// |extra_counter_values|).
23774    #[prost(message, optional, tag="8")]
23775    pub counter: ::core::option::Option<CounterDescriptor>,
23776    /// Descriptor for a state track. If set, the track will support
23777    /// TYPE_STATE TrackEvents.
23778    #[prost(message, optional, tag="18")]
23779    pub state: ::core::option::Option<StateDescriptor>,
23780    /// If true, forces Trace Processor to use separate tracks for track events
23781    /// and system events for the same thread.
23782    ///
23783    /// Track events timestamps in Chrome have microsecond resolution, while
23784    /// system events use nanoseconds. It results in broken event nesting when
23785    /// track events and system events share a track.
23786    #[prost(bool, optional, tag="9")]
23787    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
23788    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
23789    pub child_ordering: ::core::option::Option<i32>,
23790    /// An opaque value which allows specifying how two sibling tracks should be
23791    /// ordered relative to each other: tracks with lower ranks will appear before
23792    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
23793    /// 0.
23794    ///
23795    /// Note: this option is only relevant for tracks where the parent has
23796    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
23797    ///
23798    /// Note: for tracks where the parent has `thread` or `process` are set, this
23799    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
23800    /// See `parent_uuid` for details.
23801    #[prost(int32, optional, tag="12")]
23802    pub sibling_order_rank: ::core::option::Option<i32>,
23803    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
23804    pub sibling_merge_behavior: ::core::option::Option<i32>,
23805    /// Name of the track.
23806    ///
23807    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
23808    /// emitted before any `TrackEvent`s on the same track.
23809    ///
23810    /// Note: any name specified here will be *ignored* for the root thread scoped
23811    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
23812    /// case, the name of the track is shared by many different data sources and so
23813    /// is centrally controlled by trace processor.
23814    ///
23815    /// It's strongly recommended to only emit the name for a track uuid *once*. If
23816    /// a descriptor *has* to be emitted multiple times (e.g. between different
23817    /// processes), it's recommended to ensure that the name is consistent across
23818    /// all TrackDescriptors with the same `uuid`.
23819    ///
23820    /// If the the above recommendation is not followed and the same uuid is
23821    /// emitted with different names, it is implementation defined how the final
23822    /// name will be chosen and may change at any time.
23823    ///
23824    /// The current implementation of trace processor chooses the name in the
23825    /// following way, depending on the value of the `sibling_merge_behavior`
23826    /// field:
23827    ///
23828    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
23829    ///    * The *last* non-null name in the whole trace according to trace order
23830    ///      will be used.
23831    ///    * If no non-null name is present in the whole trace, the trace processor
23832    ///      may fall back to other sources to provide a name for the track (e.g.
23833    ///      the first event name for slice tracks, the counter name for counter
23834    ///      tracks). This is implementation defined and may change at any time.
23835    ///
23836    /// 2. If `sibling_merge_behavior` is set to any other value:
23837    ///    * The first non-null name before the first event on the track *or on any
23838    ///      descendant tracks* is processed will be used. For example, consider
23839    ///      the following sequence of events:
23840    ///        ts=100: TrackDescriptor(uuid=A)
23841    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
23842    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
23843    ///        ts=400: TrackEvent(track_uuid=B)
23844    ///      In this case, the name for track A will be "Track A" because the
23845    ///      descriptor with the name was emitted before the first event on a
23846    ///      descendant track (B).
23847    ///    * If no non-null name is present before the event is processed, the trace
23848    ///      processor may fall back to other sources to provide a name for the
23849    ///      track (e.g. the first event name for slice tracks, the counter name for
23850    ///      counter tracks). This is implementation defined and may change at any
23851    ///      time.
23852    ///    * Note on processing order: In the standard trace processor pipeline,
23853    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
23854    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
23855    ///      track, all its descriptors in the trace are processed before its
23856    ///      events. Consequently, the "first non-null name before the first event"
23857    ///      will be the name from the first `TrackDescriptor` for that track in the
23858    ///      trace file that has a non-null name. However, in a streaming parsing
23859    ///      scenario, the timestamp order of descriptors and events is significant,
23860    ///      and a descriptor arriving after an event has been processed will not be
23861    ///      used to name the track.
23862    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
23863    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
23864    /// An opaque value which allows specifying which tracks should be merged
23865    /// together.
23866    ///
23867    /// Only meaningful when `sibling_merge_behavior` is set to
23868    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
23869    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
23870    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
23871}
23872/// Nested message and enum types in `TrackDescriptor`.
23873pub mod track_descriptor {
23874    /// Specifies how the UI should display child tracks of this track (i.e. tracks
23875    /// where `parent_uuid` is specified to this track `uuid`). Note that this
23876    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
23877    /// this if it has a good reason not to do so.
23878    ///
23879    /// Note: for tracks where `thread` or `process` are set, this option is
23880    /// *ignored*. See `parent_uuid` for details.
23881    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23882    #[repr(i32)]
23883    pub enum ChildTracksOrdering {
23884        /// The default ordering, with no bearing on how the UI will visualise the
23885        /// tracks.
23886        Unknown = 0,
23887        /// Order tracks by `name` or `static_name` depending on which one has been
23888        /// specified.
23889        Lexicographic = 1,
23890        /// Order tracks by the first `ts` event in a track.
23891        Chronological = 2,
23892        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
23893        /// the lower values will be shown before tracks with higher values. Tracks
23894        /// with no value will be treated as having 0 rank.
23895        Explicit = 3,
23896    }
23897    impl ChildTracksOrdering {
23898        /// String value of the enum field names used in the ProtoBuf definition.
23899        ///
23900        /// The values are not transformed in any way and thus are considered stable
23901        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23902        pub fn as_str_name(&self) -> &'static str {
23903            match self {
23904                ChildTracksOrdering::Unknown => "UNKNOWN",
23905                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
23906                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
23907                ChildTracksOrdering::Explicit => "EXPLICIT",
23908            }
23909        }
23910    }
23911    /// Specifies how the analysis tools should "merge" different sibling
23912    /// TrackEvent tracks.
23913    ///
23914    /// For two or more tracks to be merged, they must be "eligible" siblings.
23915    /// Eligibility is determined by the following rules:
23916    /// 1. All tracks must have the same parent.
23917    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
23918    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
23919    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
23920    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
23921    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
23922    ///
23923    /// Specifically:
23924    ///    - in the UI, all tracks which are merged together will be
23925    ///      displayed as a single "visual" track.
23926    ///    - in the trace processor, all tracks which are merged together will be
23927    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
23928    ///      of tracks which have an active event at the same time.
23929    ///
23930    /// When tracks are merged togther, the properties for the merged track will be
23931    /// chosen from the source tracks based on the following rules:
23932    ///    - for `sibling_order_rank`: the rank of the merged track will be the
23933    ///      smallest rank among the source tracks.
23934    ///    - for all other properties: the property taken is unspecified and can
23935    ///      be any value provided by one of the source tracks. This can lead to
23936    ///      non-deterministic behavior.
23937    ///       - examples of other properties include `name`, `child_ordering` etc.
23938    ///       - because of this, it's strongly recommended to ensure that all source
23939    ///         tracks have the same value for these properties.
23940    ///       - the trace processor will also emit an error stat if it detects
23941    ///         that the properties are not the same across all source tracks.
23942    ///
23943    /// Note: merging is done *recursively* so entire trees of tracks can be merged
23944    /// together. To make this clearer, consider an example track hierarchy (in
23945    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
23946    /// track line, like "Updater", is its 'name' property):
23947    ///
23948    ///    Initial track hierarchy:
23949    ///      SystemActivity
23950    ///      ├── AuthService (smk: "auth_main_cluster")
23951    ///      │   └── LoginOp (smk: "login_v1")
23952    ///      ├── AuthService (smk: "auth_main_cluster")
23953    ///      │   └── LoginOp (smk: "login_v1")
23954    ///      ├── AuthService (smk: "auth_backup_cluster")
23955    ///      │   └── GuestOp (smk: "guest_v1")
23956    ///      └── UserProfileService (smk: "profile_cluster")
23957    ///          └── GetProfileOp (smk: "getprofile_v1")
23958    ///
23959    /// Merging outcomes:
23960    ///
23961    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
23962    ///    - The first two "AuthService" tracks merge because they share
23963    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
23964    ///      aligning with recommendations. The merged track is named "AuthService".
23965    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
23966    ///      remains separate, as its `sibling_merge_key` is different.
23967    ///    - "UserProfileService" also remains separate.
23968    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
23969    ///      "LoginOp" get merged as they have the same sibling merge key.
23970    ///
23971    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
23972    ///      SystemActivity
23973    ///      ├── AuthService (merged by smk: "auth_main_cluster")
23974    ///      │   ├── LoginOp (merged by smk: "login_v1")
23975    ///      ├── AuthService (smk: "auth_backup_cluster")
23976    ///      │   └── GuestOp (smk: "guest_v1")
23977    ///      └── UserProfileService (smk: "profile_cluster")
23978    ///          └── GetProfileOp (smk: "getprofile_v1")
23979    ///
23980    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
23981    ///    - All three tracks named "AuthService" merge because they share the same
23982    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
23983    ///      for this merged track would be taken from one of the source tracks
23984    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
23985    ///      relevant if its children had key-based merge behaviors.
23986    ///    - "UserProfileService" remains separate due to its different name.
23987    ///    - Within the single merged "AuthService" track:
23988    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
23989    ///      they have the same name.
23990    ///
23991    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
23992    ///      SystemActivity
23993    ///      ├── AuthService (merged from 3 "AuthService" tracks)
23994    ///      │   ├── LoginOp (smk: "login_v1")
23995    ///      │   └── GuestOp (smk: "guest_v1")
23996    ///      └── UserProfileService (smk: "profile_cluster")
23997    ///          └── GetProfileOp (smk: "getprofile_v1")
23998    ///
23999    /// Note: for tracks where `thread` or `process` are set, this option is
24000    /// *ignored*. See `parent_uuid` for details.
24001    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24002    #[repr(i32)]
24003    pub enum SiblingMergeBehavior {
24004        /// When unspecified or not set, defaults to
24005        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
24006        Unspecified = 0,
24007        /// Merge this track with eligible siblings which have the same `name`.
24008        ///
24009        /// This is the default behavior.option.
24010        ///
24011        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
24012        /// worked this way for years and inherited this behavior from
24013        /// chrome://tracing which has worked this way for even longer
24014        ByTrackName = 1,
24015        /// Never merge this track with any siblings. Useful if if this track has a
24016        /// specific meaning and you want to see separately from any others.
24017        None = 2,
24018        /// Merge this track with eligible siblings which have the same
24019        /// `sibling_merge_key`.
24020        BySiblingMergeKey = 3,
24021    }
24022    impl SiblingMergeBehavior {
24023        /// String value of the enum field names used in the ProtoBuf definition.
24024        ///
24025        /// The values are not transformed in any way and thus are considered stable
24026        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24027        pub fn as_str_name(&self) -> &'static str {
24028            match self {
24029                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
24030                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
24031                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
24032                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
24033            }
24034        }
24035    }
24036    /// Name of the track.
24037    ///
24038    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24039    /// emitted before any `TrackEvent`s on the same track.
24040    ///
24041    /// Note: any name specified here will be *ignored* for the root thread scoped
24042    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24043    /// case, the name of the track is shared by many different data sources and so
24044    /// is centrally controlled by trace processor.
24045    ///
24046    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24047    /// a descriptor *has* to be emitted multiple times (e.g. between different
24048    /// processes), it's recommended to ensure that the name is consistent across
24049    /// all TrackDescriptors with the same `uuid`.
24050    ///
24051    /// If the the above recommendation is not followed and the same uuid is
24052    /// emitted with different names, it is implementation defined how the final
24053    /// name will be chosen and may change at any time.
24054    ///
24055    /// The current implementation of trace processor chooses the name in the
24056    /// following way, depending on the value of the `sibling_merge_behavior`
24057    /// field:
24058    ///
24059    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24060    ///    * The *last* non-null name in the whole trace according to trace order
24061    ///      will be used.
24062    ///    * If no non-null name is present in the whole trace, the trace processor
24063    ///      may fall back to other sources to provide a name for the track (e.g.
24064    ///      the first event name for slice tracks, the counter name for counter
24065    ///      tracks). This is implementation defined and may change at any time.
24066    ///
24067    /// 2. If `sibling_merge_behavior` is set to any other value:
24068    ///    * The first non-null name before the first event on the track *or on any
24069    ///      descendant tracks* is processed will be used. For example, consider
24070    ///      the following sequence of events:
24071    ///        ts=100: TrackDescriptor(uuid=A)
24072    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
24073    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
24074    ///        ts=400: TrackEvent(track_uuid=B)
24075    ///      In this case, the name for track A will be "Track A" because the
24076    ///      descriptor with the name was emitted before the first event on a
24077    ///      descendant track (B).
24078    ///    * If no non-null name is present before the event is processed, the trace
24079    ///      processor may fall back to other sources to provide a name for the
24080    ///      track (e.g. the first event name for slice tracks, the counter name for
24081    ///      counter tracks). This is implementation defined and may change at any
24082    ///      time.
24083    ///    * Note on processing order: In the standard trace processor pipeline,
24084    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
24085    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
24086    ///      track, all its descriptors in the trace are processed before its
24087    ///      events. Consequently, the "first non-null name before the first event"
24088    ///      will be the name from the first `TrackDescriptor` for that track in the
24089    ///      trace file that has a non-null name. However, in a streaming parsing
24090    ///      scenario, the timestamp order of descriptors and events is significant,
24091    ///      and a descriptor arriving after an event has been processed will not be
24092    ///      used to name the track.
24093    #[derive(Clone, PartialEq, ::prost::Oneof)]
24094    pub enum StaticOrDynamicName {
24095        #[prost(string, tag="2")]
24096        Name(::prost::alloc::string::String),
24097        /// This field is only set by the SDK when perfetto::StaticString is
24098        /// provided.
24099        #[prost(string, tag="10")]
24100        StaticName(::prost::alloc::string::String),
24101        /// Equivalent to name, used just to mark that the data is coming from
24102        /// android.os.Trace.
24103        #[prost(string, tag="13")]
24104        AtraceName(::prost::alloc::string::String),
24105    }
24106    /// An opaque value which allows specifying which tracks should be merged
24107    /// together.
24108    ///
24109    /// Only meaningful when `sibling_merge_behavior` is set to
24110    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
24111    #[derive(Clone, PartialEq, ::prost::Oneof)]
24112    pub enum SiblingMergeKeyField {
24113        #[prost(string, tag="16")]
24114        SiblingMergeKey(::prost::alloc::string::String),
24115        #[prost(uint64, tag="17")]
24116        SiblingMergeKeyInt(u64),
24117    }
24118}
24119// End of protos/perfetto/trace/track_event/track_descriptor.proto
24120
24121// Begin of protos/perfetto/trace/translation/translation_table.proto
24122
24123/// Translation rules for the trace processor.
24124/// See the comments for each rule type for specific meaning.
24125#[derive(Clone, PartialEq, ::prost::Message)]
24126pub struct TranslationTable {
24127    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
24128    pub table: ::core::option::Option<translation_table::Table>,
24129}
24130/// Nested message and enum types in `TranslationTable`.
24131pub mod translation_table {
24132    #[derive(Clone, PartialEq, ::prost::Oneof)]
24133    pub enum Table {
24134        #[prost(message, tag="1")]
24135        ChromeHistogram(super::ChromeHistorgramTranslationTable),
24136        #[prost(message, tag="2")]
24137        ChromeUserEvent(super::ChromeUserEventTranslationTable),
24138        #[prost(message, tag="3")]
24139        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
24140        #[prost(message, tag="4")]
24141        SliceName(super::SliceNameTranslationTable),
24142        #[prost(message, tag="5")]
24143        ProcessTrackName(super::ProcessTrackNameTranslationTable),
24144        #[prost(message, tag="6")]
24145        ChromeStudy(super::ChromeStudyTranslationTable),
24146    }
24147}
24148/// Chrome histogram sample hash -> name translation rules.
24149#[derive(Clone, PartialEq, ::prost::Message)]
24150pub struct ChromeHistorgramTranslationTable {
24151    #[prost(map="uint64, string", tag="1")]
24152    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24153}
24154/// Chrome user event action hash -> name translation rules.
24155#[derive(Clone, PartialEq, ::prost::Message)]
24156pub struct ChromeUserEventTranslationTable {
24157    #[prost(map="uint64, string", tag="1")]
24158    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24159}
24160/// Chrome performance mark translation rules.
24161#[derive(Clone, PartialEq, ::prost::Message)]
24162pub struct ChromePerformanceMarkTranslationTable {
24163    #[prost(map="uint32, string", tag="1")]
24164    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24165    #[prost(map="uint32, string", tag="2")]
24166    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24167}
24168/// Raw -> deobfuscated slice name translation rules.
24169#[derive(Clone, PartialEq, ::prost::Message)]
24170pub struct SliceNameTranslationTable {
24171    #[prost(map="string, string", tag="1")]
24172    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24173}
24174/// Raw -> deobfuscated process track name translation rules.
24175#[derive(Clone, PartialEq, ::prost::Message)]
24176pub struct ProcessTrackNameTranslationTable {
24177    #[prost(map="string, string", tag="1")]
24178    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24179}
24180/// Chrome study hash -> name translation rules.
24181#[derive(Clone, PartialEq, ::prost::Message)]
24182pub struct ChromeStudyTranslationTable {
24183    #[prost(map="uint64, string", tag="1")]
24184    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24185}
24186// End of protos/perfetto/trace/translation/translation_table.proto
24187
24188// Begin of protos/perfetto/trace/trigger.proto
24189
24190/// When a TracingSession receives a trigger it records the boot time nanoseconds
24191/// in the TracePacket's timestamp field as well as the name of the producer that
24192/// triggered it. We emit this data so filtering can be done on triggers received
24193/// in the trace.
24194#[derive(Clone, PartialEq, ::prost::Message)]
24195pub struct Trigger {
24196    /// Name of the trigger which was received.
24197    #[prost(string, optional, tag="1")]
24198    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
24199    /// The actual producer that activated |trigger|.
24200    #[prost(string, optional, tag="2")]
24201    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
24202    /// The verified UID of the producer.
24203    #[prost(int32, optional, tag="3")]
24204    pub trusted_producer_uid: ::core::option::Option<i32>,
24205    /// The value of stop_delay_ms from the configuration.
24206    #[prost(uint64, optional, tag="4")]
24207    pub stop_delay_ms: ::core::option::Option<u64>,
24208}
24209// End of protos/perfetto/trace/trigger.proto
24210
24211// Begin of protos/perfetto/trace/ui_state.proto
24212
24213/// Common state for UIs visualizing Perfetto traces.
24214/// This message can be appended as a TracePacket by UIs to save the
24215/// visible state (e.g. scroll position/zoom state) for future opening
24216/// of the trace.
24217/// Design doc: go/trace-ui-state.
24218#[derive(Clone, PartialEq, ::prost::Message)]
24219pub struct UiState {
24220    /// The start and end bounds of the viewport of the UI in nanoseconds.
24221    ///
24222    /// This is the absolute time associated to slices and other events in
24223    /// trace processor tables (i.e. the |ts| column of most tables)
24224    #[prost(int64, optional, tag="1")]
24225    pub timeline_start_ts: ::core::option::Option<i64>,
24226    #[prost(int64, optional, tag="2")]
24227    pub timeline_end_ts: ::core::option::Option<i64>,
24228    #[prost(message, optional, tag="3")]
24229    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
24230}
24231/// Nested message and enum types in `UiState`.
24232pub mod ui_state {
24233    /// Indicates that the given process should be highlighted by the UI.
24234    #[derive(Clone, PartialEq, ::prost::Message)]
24235    pub struct HighlightProcess {
24236        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
24237        pub selector: ::core::option::Option<highlight_process::Selector>,
24238    }
24239    /// Nested message and enum types in `HighlightProcess`.
24240    pub mod highlight_process {
24241        #[derive(Clone, PartialEq, ::prost::Oneof)]
24242        pub enum Selector {
24243            /// The pid of the process to highlight. This is useful for UIs to focus
24244            /// on tracks of a particular process in the trace.
24245            ///
24246            /// If more than one process in a trace has the same pid, it is UI
24247            /// implementation specific how the process to be focused will be
24248            /// chosen.
24249            #[prost(uint32, tag="1")]
24250            Pid(u32),
24251            /// The command line of the process to highlight; for most Android apps,
24252            /// this is the package name of the app. This is useful for UIs to focus
24253            /// on a particular app in the trace.
24254            ///
24255            /// If more than one process hasthe same cmdline, it is UI implementation
24256            /// specific how the process to be focused will be chosen.
24257            #[prost(string, tag="2")]
24258            Cmdline(::prost::alloc::string::String),
24259        }
24260    }
24261}
24262// Begin of protos/perfetto/trace/trace_packet.proto
24263
24264/// TracePacket is the root object of a Perfetto trace.
24265/// A Perfetto trace is a linear sequence of TracePacket(s).
24266///
24267/// The tracing service guarantees that all TracePacket(s) written by a given
24268/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
24269/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
24270/// to the Consumer (or written into the trace file).
24271/// TracePacket(s) written by different TraceWriter(s), hence even different
24272/// data sources, can be seen in arbitrary order.
24273/// The consumer can re-establish a total order, if interested, using the packet
24274/// timestamps, after having synchronized the different clocks onto a global
24275/// clock.
24276///
24277/// The tracing service is agnostic of the content of TracePacket, with the
24278/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
24279/// the service itself.
24280///
24281/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
24282///
24283/// Next reserved id: 14 (up to 15).
24284/// Next id: 133.
24285#[derive(Clone, PartialEq, ::prost::Message)]
24286pub struct TracePacket {
24287    /// The timestamp of the TracePacket.
24288    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
24289    /// Android). It can be overridden using a different timestamp_clock_id.
24290    /// The clock domain definition in ClockSnapshot can also override:
24291    /// - The unit (default: 1ns).
24292    /// - The absolute vs delta encoding (default: absolute timestamp).
24293    #[prost(uint64, optional, tag="8")]
24294    pub timestamp: ::core::option::Option<u64>,
24295    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
24296    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
24297    /// producer-defined clock id.
24298    /// If unspecified and if no default per-sequence value has been provided via
24299    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
24300    #[prost(uint32, optional, tag="58")]
24301    pub timestamp_clock_id: ::core::option::Option<u32>,
24302    /// Trusted process id of the producer which generated this packet, written by
24303    /// the service.
24304    #[prost(int32, optional, tag="79")]
24305    pub trusted_pid: ::core::option::Option<i32>,
24306    /// Incrementally emitted interned data, valid only on the packet's sequence
24307    /// (packets with the same |trusted_packet_sequence_id|). The writer will
24308    /// usually emit new interned data in the same TracePacket that first refers to
24309    /// it (since the last reset of interning state). It may also be emitted
24310    /// proactively in advance of referring to them in later packets.
24311    #[prost(message, optional, tag="12")]
24312    pub interned_data: ::core::option::Option<InternedData>,
24313    #[prost(uint32, optional, tag="13")]
24314    pub sequence_flags: ::core::option::Option<u32>,
24315    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
24316    #[prost(bool, optional, tag="41")]
24317    pub incremental_state_cleared: ::core::option::Option<bool>,
24318    /// Default values for fields of later TracePackets emitted on this packet's
24319    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
24320    /// It must be reemitted when incremental state is cleared (see
24321    /// |incremental_state_cleared|).
24322    /// Requires that any future packet emitted on the same sequence specifies
24323    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
24324    /// TracePacketDefaults always override the global defaults for any future
24325    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
24326    #[prost(message, optional, tag="59")]
24327    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
24328    /// Flag set by the service if, for the current packet sequence (see
24329    /// |trusted_packet_sequence_id|), either:
24330    /// * this is the first packet, or
24331    /// * one or multiple packets were dropped since the last packet that the
24332    ///    consumer read from the sequence. This can happen if chunks in the trace
24333    ///    buffer are overridden before the consumer could read them when the trace
24334    ///    is configured in ring buffer mode.
24335    ///
24336    /// When packet loss occurs, incrementally emitted data (including interned
24337    /// data) on the sequence should be considered invalid up until the next packet
24338    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
24339    #[prost(bool, optional, tag="42")]
24340    pub previous_packet_dropped: ::core::option::Option<bool>,
24341    /// Flag set by a producer (starting from SDK v29) if, for the current packet
24342    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
24343    ///
24344    /// This flag can be used for distinguishing the two situations when
24345    /// processing the trace:
24346    /// 1. There are no prior events for the sequence because of data loss, e.g.
24347    ///     due to ring buffer wrapping.
24348    /// 2. There are no prior events for the sequence because it didn't start
24349    ///     before this packet (= there's definitely no preceding data loss).
24350    ///
24351    /// Given that older SDK versions do not support this flag, this flag not
24352    /// being present for a particular sequence does not necessarily imply data
24353    /// loss.
24354    #[prost(bool, optional, tag="87")]
24355    pub first_packet_on_sequence: ::core::option::Option<bool>,
24356    /// The machine ID for identifying trace packets in a multi-machine tracing
24357    /// session. Is emitted by the tracing service for producers running on a
24358    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
24359    #[prost(uint32, optional, tag="98")]
24360    pub machine_id: ::core::option::Option<u32>,
24361    #[prost(oneof="trace_packet::Data", tags="11, 60, 117, 118, 120, 122, 129, 2, 90, 9, 4, 5, 6, 7, 89, 33, 34, 35, 37, 74, 75, 38, 40, 39, 45, 46, 109, 47, 48, 49, 51, 52, 53, 54, 131, 57, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 80, 81, 82, 83, 84, 86, 91, 124, 125, 126, 127, 128, 130, 61, 64, 43, 44, 1, 36, 50, 72, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 115, 119, 121, 123, 132, 900")]
24362    pub data: ::core::option::Option<trace_packet::Data>,
24363    /// Trusted user id of the producer which generated this packet. Keep in sync
24364    /// with TrustedPacket.trusted_uid.
24365    ///
24366    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24367    /// instead.
24368    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
24369    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
24370    /// Service-assigned identifier of the packet sequence this packet belongs to.
24371    /// Uniquely identifies a producer + writer pair within the tracing session. A
24372    /// value of zero denotes an invalid ID. Keep in sync with
24373    /// TrustedPacket.trusted_packet_sequence_id.
24374    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
24375    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
24376}
24377/// Nested message and enum types in `TracePacket`.
24378pub mod trace_packet {
24379    /// Encapsulates the state and configuration of the ProtoVM instances running
24380    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
24381    /// and use them to inflate patches into full-state packets.
24382    /// Note: this message can't be defined in a dedicated file because it has a
24383    /// recursive dependency with TracePacket (see 'state' field below).
24384    #[derive(Clone, PartialEq, ::prost::Message)]
24385    pub struct ProtoVms {
24386        #[prost(message, repeated, tag="1")]
24387        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
24388    }
24389    /// Nested message and enum types in `ProtoVms`.
24390    pub mod proto_vms {
24391        #[derive(Clone, PartialEq, ::prost::Message)]
24392        pub struct Instance {
24393            #[prost(message, optional, tag="1")]
24394            pub program: ::core::option::Option<super::super::VmProgram>,
24395            #[prost(message, optional, tag="2")]
24396            pub state: ::core::option::Option<super::super::TracePacket>,
24397            #[prost(uint32, optional, tag="3")]
24398            pub memory_limit_kb: ::core::option::Option<u32>,
24399            #[prost(int32, repeated, packed="false", tag="4")]
24400            pub producer_id: ::prost::alloc::vec::Vec<i32>,
24401        }
24402    }
24403    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24404    #[repr(i32)]
24405    pub enum SequenceFlags {
24406        SeqUnspecified = 0,
24407        /// Set by the writer to indicate that it will re-emit any incremental data
24408        /// for the packet's sequence before referring to it again. This includes
24409        /// interned data as well as periodically emitted data like
24410        /// Process/ThreadDescriptors. This flag only affects the current packet
24411        /// sequence (see |trusted_packet_sequence_id|).
24412        ///
24413        /// When set, this TracePacket and subsequent TracePackets on the same
24414        /// sequence will not refer to any incremental data emitted before this
24415        /// TracePacket. For example, previously emitted interned data will be
24416        /// re-emitted if it is referred to again.
24417        ///
24418        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
24419        /// to skip packets in the sequence until the next one with this flag set, to
24420        /// ensure intact incremental data.
24421        SeqIncrementalStateCleared = 1,
24422        /// This packet requires incremental state, such as TracePacketDefaults or
24423        /// InternedData, to be parsed correctly. The trace reader should skip this
24424        /// packet if incremental state is not valid on this sequence, i.e. if no
24425        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
24426        /// current |trusted_packet_sequence_id|.
24427        SeqNeedsIncrementalState = 2,
24428    }
24429    impl SequenceFlags {
24430        /// String value of the enum field names used in the ProtoBuf definition.
24431        ///
24432        /// The values are not transformed in any way and thus are considered stable
24433        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24434        pub fn as_str_name(&self) -> &'static str {
24435            match self {
24436                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
24437                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
24438                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
24439            }
24440        }
24441    }
24442    #[derive(Clone, PartialEq, ::prost::Oneof)]
24443    pub enum Data {
24444        ///
24445        /// == STABLE PUBLIC API: TrackEvent ==
24446        ///
24447        /// TrackEvent is the stable, extensible API for recording trace events.
24448        /// See docs/instrumentation/track-events.md for details.
24449        #[prost(message, tag="11")]
24450        TrackEvent(super::TrackEvent),
24451        #[prost(message, tag="60")]
24452        TrackDescriptor(super::TrackDescriptor),
24453        ///
24454        /// == STABLE PUBLIC API: GENERIC KERNEL EVENTS ==
24455        ///
24456        /// Stable API for OS-level and hardware events from non-ftrace data
24457        /// sources.
24458        #[prost(message, tag="117")]
24459        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
24460        #[prost(message, tag="118")]
24461        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
24462        #[prost(message, tag="120")]
24463        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
24464        #[prost(message, tag="122")]
24465        GenericKernelProcessTree(super::GenericKernelProcessTree),
24466        #[prost(message, tag="129")]
24467        GenericGpuFrequencyEvent(super::GenericGpuFrequencyEvent),
24468        //
24469        // == UNSTABLE / CONTEXT-SPECIFIC FIELDS ==
24470        //
24471        // The fields below are NOT part of the stable public API. They are
24472        // emitted by specific Perfetto data sources and may change without
24473        // notice. Depend on them at your own risk.
24474
24475        /// IDs up to 15 are reserved. They take only one byte to encode their
24476        /// preamble so should be used for frequent events.
24477        #[prost(message, tag="2")]
24478        ProcessTree(super::ProcessTree),
24479        #[prost(message, tag="90")]
24480        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
24481        #[prost(message, tag="9")]
24482        ProcessStats(super::ProcessStats),
24483        #[prost(message, tag="4")]
24484        InodeFileMap(super::InodeFileMap),
24485        #[prost(message, tag="5")]
24486        ChromeEvents(super::ChromeEventBundle),
24487        #[prost(message, tag="6")]
24488        ClockSnapshot(super::ClockSnapshot),
24489        #[prost(message, tag="7")]
24490        SysStats(super::SysStats),
24491        #[prost(message, tag="89")]
24492        TraceUuid(super::TraceUuid),
24493        #[prost(message, tag="33")]
24494        TraceConfig(super::TraceConfig),
24495        #[prost(message, tag="34")]
24496        FtraceStats(super::FtraceStats),
24497        #[prost(message, tag="35")]
24498        TraceStats(super::TraceStats),
24499        #[prost(message, tag="37")]
24500        ProfilePacket(super::ProfilePacket),
24501        #[prost(message, tag="74")]
24502        StreamingAllocation(super::StreamingAllocation),
24503        #[prost(message, tag="75")]
24504        StreamingFree(super::StreamingFree),
24505        #[prost(message, tag="38")]
24506        Battery(super::BatteryCounters),
24507        #[prost(message, tag="40")]
24508        PowerRails(super::PowerRails),
24509        #[prost(message, tag="39")]
24510        AndroidLog(super::AndroidLogPacket),
24511        #[prost(message, tag="45")]
24512        SystemInfo(super::SystemInfo),
24513        #[prost(message, tag="46")]
24514        Trigger(super::Trigger),
24515        #[prost(message, tag="109")]
24516        ChromeTrigger(super::ChromeTrigger),
24517        #[prost(message, tag="47")]
24518        PackagesList(super::PackagesList),
24519        #[prost(message, tag="48")]
24520        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
24521        #[prost(message, tag="49")]
24522        PerfettoMetatrace(super::PerfettoMetatrace),
24523        #[prost(message, tag="51")]
24524        ChromeMetadata(super::ChromeMetadataPacket),
24525        #[prost(message, tag="52")]
24526        GpuCounterEvent(super::GpuCounterEvent),
24527        #[prost(message, tag="53")]
24528        GpuRenderStageEvent(super::GpuRenderStageEvent),
24529        #[prost(message, tag="54")]
24530        StreamingProfilePacket(super::StreamingProfilePacket),
24531        #[prost(message, tag="131")]
24532        ArtProcessMetadata(super::ArtProcessMetadata),
24533        #[prost(message, tag="57")]
24534        GraphicsFrameEvent(super::GraphicsFrameEvent),
24535        #[prost(message, tag="62")]
24536        VulkanMemoryEvent(super::VulkanMemoryEvent),
24537        #[prost(message, tag="63")]
24538        GpuLog(super::GpuLog),
24539        #[prost(message, tag="65")]
24540        VulkanApiEvent(super::VulkanApiEvent),
24541        #[prost(message, tag="66")]
24542        PerfSample(super::PerfSample),
24543        #[prost(message, tag="67")]
24544        CpuInfo(super::CpuInfo),
24545        #[prost(message, tag="68")]
24546        SmapsPacket(super::SmapsPacket),
24547        #[prost(message, tag="69")]
24548        ServiceEvent(super::TracingServiceEvent),
24549        #[prost(message, tag="70")]
24550        InitialDisplayState(super::InitialDisplayState),
24551        #[prost(message, tag="71")]
24552        GpuMemTotalEvent(super::GpuMemTotalEvent),
24553        #[prost(message, tag="73")]
24554        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
24555        #[prost(message, tag="76")]
24556        FrameTimelineEvent(super::FrameTimelineEvent),
24557        #[prost(message, tag="77")]
24558        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
24559        #[prost(message, tag="78")]
24560        UiState(super::UiState),
24561        #[prost(message, tag="80")]
24562        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
24563        #[prost(message, tag="81")]
24564        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
24565        #[prost(message, tag="82")]
24566        TranslationTable(super::TranslationTable),
24567        #[prost(message, tag="83")]
24568        AndroidGameInterventionList(super::AndroidGameInterventionList),
24569        #[prost(message, tag="84")]
24570        StatsdAtom(super::StatsdAtom),
24571        #[prost(message, tag="86")]
24572        AndroidSystemProperty(super::AndroidSystemProperty),
24573        #[prost(message, tag="91")]
24574        EntityStateResidency(super::EntityStateResidency),
24575        #[prost(message, tag="124")]
24576        TraceProvenance(super::TraceProvenance),
24577        #[prost(message, tag="125")]
24578        Protovms(ProtoVms),
24579        #[prost(message, tag="126")]
24580        TraceAttributes(super::TraceAttributes),
24581        #[prost(message, tag="127")]
24582        AndroidAflags(super::AndroidAflags),
24583        #[prost(message, tag="128")]
24584        GpuInfo(super::GpuInfo),
24585        #[prost(message, tag="130")]
24586        InterruptInfo(super::InterruptInfo),
24587        /// Only used in profile packets.
24588        #[prost(message, tag="61")]
24589        ModuleSymbols(super::ModuleSymbols),
24590        #[prost(message, tag="64")]
24591        DeobfuscationMapping(super::DeobfuscationMapping),
24592        /// Deprecated, use TrackDescriptor instead.
24593        #[prost(message, tag="43")]
24594        ProcessDescriptor(super::ProcessDescriptor),
24595        /// Deprecated, use TrackDescriptor instead.
24596        #[prost(message, tag="44")]
24597        ThreadDescriptor(super::ThreadDescriptor),
24598        /// Events from the Linux kernel ftrace infrastructure.
24599        #[prost(message, tag="1")]
24600        FtraceEvents(super::FtraceEventBundle),
24601        /// This field is emitted at periodic intervals (~10s) and
24602        /// contains always the binary representation of the UUID
24603        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
24604        /// efficiently partition long traces without having to fully parse them.
24605        #[prost(bytes, tag="36")]
24606        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
24607        /// Zero or more proto encoded trace packets compressed using deflate.
24608        /// Each compressed_packets TracePacket (including the two field ids and
24609        /// sizes) should be less than 512KB.
24610        #[prost(bytes, tag="50")]
24611        CompressedPackets(::prost::alloc::vec::Vec<u8>),
24612        /// Data sources can extend the trace proto with custom extension protos (see
24613        /// docs/instrumentation/extensions.md). When they do that, the descriptor of
24614        /// their extension proto descriptor is serialized in this packet. This
24615        /// allows trace_processor to deserialize extended messages using reflection
24616        /// even if the extension proto is not checked in the Perfetto repo.
24617        #[prost(message, tag="72")]
24618        ExtensionDescriptor(super::ExtensionDescriptor),
24619        /// Events from the Windows etw infrastructure.
24620        #[prost(message, tag="95")]
24621        EtwEvents(super::EtwTraceEventBundle),
24622        #[prost(message, tag="99")]
24623        V8JsCode(super::V8JsCode),
24624        #[prost(message, tag="100")]
24625        V8InternalCode(super::V8InternalCode),
24626        #[prost(message, tag="101")]
24627        V8WasmCode(super::V8WasmCode),
24628        #[prost(message, tag="102")]
24629        V8RegExpCode(super::V8RegExpCode),
24630        #[prost(message, tag="103")]
24631        V8CodeMove(super::V8CodeMove),
24632        /// Clock synchronization with remote machines.
24633        #[prost(message, tag="107")]
24634        RemoteClockSync(super::RemoteClockSync),
24635        #[prost(message, tag="110")]
24636        PixelModemEvents(super::PixelModemEvents),
24637        #[prost(message, tag="111")]
24638        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
24639        #[prost(message, tag="113")]
24640        CloneSnapshotTrigger(super::Trigger),
24641        #[prost(message, tag="115")]
24642        KernelWakelockData(super::KernelWakelockData),
24643        #[prost(message, tag="119")]
24644        CpuPerUidData(super::CpuPerUidData),
24645        #[prost(message, tag="121")]
24646        EvdevEvent(super::EvdevEvent),
24647        #[prost(message, tag="123")]
24648        UserList(super::AndroidUserList),
24649        #[prost(message, tag="132")]
24650        JournaldEvent(super::SystemdJournaldEvent),
24651        /// This field is only used for testing.
24652        /// In previous versions of this proto this field had the id 268435455
24653        /// This caused many problems:
24654        /// - protozero decoder does not handle field ids larger than 999.
24655        /// - old versions of protoc produce Java bindings with syntax errors when
24656        ///    the field id is large enough.
24657        #[prost(message, tag="900")]
24658        ForTesting(super::TestEvent),
24659    }
24660    /// Trusted user id of the producer which generated this packet. Keep in sync
24661    /// with TrustedPacket.trusted_uid.
24662    ///
24663    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24664    /// instead.
24665    #[derive(Clone, PartialEq, ::prost::Oneof)]
24666    pub enum OptionalTrustedUid {
24667        #[prost(int32, tag="3")]
24668        TrustedUid(i32),
24669    }
24670    /// Service-assigned identifier of the packet sequence this packet belongs to.
24671    /// Uniquely identifies a producer + writer pair within the tracing session. A
24672    /// value of zero denotes an invalid ID. Keep in sync with
24673    /// TrustedPacket.trusted_packet_sequence_id.
24674    #[derive(Clone, PartialEq, ::prost::Oneof)]
24675    pub enum OptionalTrustedPacketSequenceId {
24676        #[prost(uint32, tag="10")]
24677        TrustedPacketSequenceId(u32),
24678    }
24679}
24680// End of protos/perfetto/trace/trace_packet.proto
24681
24682// Begin of protos/perfetto/trace/trace.proto
24683
24684#[derive(Clone, PartialEq, ::prost::Message)]
24685pub struct Trace {
24686    #[prost(message, repeated, tag="1")]
24687    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
24688}
24689#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24690#[repr(i32)]
24691pub enum VmCursorEnum {
24692    VmCursorUnspecified = 0,
24693    VmCursorSrc = 1,
24694    VmCursorDst = 2,
24695    VmCursorBoth = 3,
24696}
24697impl VmCursorEnum {
24698    /// String value of the enum field names used in the ProtoBuf definition.
24699    ///
24700    /// The values are not transformed in any way and thus are considered stable
24701    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24702    pub fn as_str_name(&self) -> &'static str {
24703        match self {
24704            VmCursorEnum::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
24705            VmCursorEnum::VmCursorSrc => "VM_CURSOR_SRC",
24706            VmCursorEnum::VmCursorDst => "VM_CURSOR_DST",
24707            VmCursorEnum::VmCursorBoth => "VM_CURSOR_BOTH",
24708        }
24709    }
24710}
24711// End of protos/perfetto/common/tracing_service_state.proto
24712
24713// Begin of protos/perfetto/common/builtin_clock.proto
24714
24715/// Builtin clock domains used in Perfetto traces.
24716///
24717/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
24718/// representing the trace file's own timeline. Each trace file gets its own
24719/// instance (scoped by trace file index).
24720///
24721/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
24722/// fallback: if the first timestamp conversion uses a clock other than the
24723/// trace file clock and no explicit clock snapshot data exists, the trace time
24724/// is switched to BOOTTIME. This fallback does not fire for modern traces that
24725/// include ClockSnapshots or that only use the trace file clock directly.
24726///
24727/// The `primary_trace_clock` field in ClockSnapshot can definitively override
24728/// the trace time clock regardless of the above.
24729#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24730#[repr(i32)]
24731pub enum BuiltinClock {
24732    Unknown = 0,
24733    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
24734    Realtime = 1,
24735    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
24736    RealtimeCoarse = 2,
24737    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
24738    Monotonic = 3,
24739    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
24740    MonotonicCoarse = 4,
24741    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
24742    MonotonicRaw = 5,
24743    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
24744    /// For proto traces, this is used as a backwards-compatible fallback trace
24745    /// time clock when no explicit clock snapshots are present.
24746    Boottime = 6,
24747    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
24748    Tsc = 9,
24749    /// Corresponds to the perf event clock (PERF_CLOCK).
24750    Perf = 10,
24751    /// A synthetic clock representing the trace file's own timeline. Each trace
24752    /// file gets its own instance (scoped by trace file index). This is the
24753    /// default trace time clock before any clock snapshot or format-specific
24754    /// override takes effect.
24755    TraceFile = 11,
24756    MaxId = 63,
24757}
24758impl BuiltinClock {
24759    /// String value of the enum field names used in the ProtoBuf definition.
24760    ///
24761    /// The values are not transformed in any way and thus are considered stable
24762    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24763    pub fn as_str_name(&self) -> &'static str {
24764        match self {
24765            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
24766            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
24767            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
24768            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
24769            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
24770            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
24771            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
24772            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
24773            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
24774            BuiltinClock::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
24775            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
24776        }
24777    }
24778}
24779// End of protos/perfetto/common/builtin_clock.proto
24780
24781// Begin of protos/perfetto/common/semantic_type.proto
24782
24783/// Semantic types for string fields. This tells the filter what kind of
24784/// data the field contains, so it can apply the right filtering rules.
24785/// See /rfcs/0011-subset-string-filter-rules.md for design details.
24786/// Introduced in: Perfetto v54.
24787#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24788#[repr(i32)]
24789pub enum SemanticType {
24790    Unspecified = 0,
24791    Atrace = 1,
24792    Job = 2,
24793    Wakelock = 3,
24794}
24795impl SemanticType {
24796    /// String value of the enum field names used in the ProtoBuf definition.
24797    ///
24798    /// The values are not transformed in any way and thus are considered stable
24799    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24800    pub fn as_str_name(&self) -> &'static str {
24801        match self {
24802            SemanticType::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
24803            SemanticType::Atrace => "SEMANTIC_TYPE_ATRACE",
24804            SemanticType::Job => "SEMANTIC_TYPE_JOB",
24805            SemanticType::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
24806        }
24807    }
24808}
24809// End of protos/perfetto/config/android/android_input_event_config.proto
24810
24811// Begin of protos/perfetto/common/android_log_constants.proto
24812
24813/// Values from NDK's android/log.h.
24814#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24815#[repr(i32)]
24816pub enum AndroidLogId {
24817    /// MAIN.
24818    LidDefault = 0,
24819    LidRadio = 1,
24820    LidEvents = 2,
24821    LidSystem = 3,
24822    LidCrash = 4,
24823    LidStats = 5,
24824    LidSecurity = 6,
24825    LidKernel = 7,
24826}
24827impl AndroidLogId {
24828    /// String value of the enum field names used in the ProtoBuf definition.
24829    ///
24830    /// The values are not transformed in any way and thus are considered stable
24831    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24832    pub fn as_str_name(&self) -> &'static str {
24833        match self {
24834            AndroidLogId::LidDefault => "LID_DEFAULT",
24835            AndroidLogId::LidRadio => "LID_RADIO",
24836            AndroidLogId::LidEvents => "LID_EVENTS",
24837            AndroidLogId::LidSystem => "LID_SYSTEM",
24838            AndroidLogId::LidCrash => "LID_CRASH",
24839            AndroidLogId::LidStats => "LID_STATS",
24840            AndroidLogId::LidSecurity => "LID_SECURITY",
24841            AndroidLogId::LidKernel => "LID_KERNEL",
24842        }
24843    }
24844}
24845#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24846#[repr(i32)]
24847pub enum AndroidLogPriority {
24848    PrioUnspecified = 0,
24849    /// _DEFAULT, but should never be seen in logs.
24850    PrioUnused = 1,
24851    PrioVerbose = 2,
24852    PrioDebug = 3,
24853    PrioInfo = 4,
24854    PrioWarn = 5,
24855    PrioError = 6,
24856    PrioFatal = 7,
24857}
24858impl AndroidLogPriority {
24859    /// String value of the enum field names used in the ProtoBuf definition.
24860    ///
24861    /// The values are not transformed in any way and thus are considered stable
24862    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24863    pub fn as_str_name(&self) -> &'static str {
24864        match self {
24865            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
24866            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
24867            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
24868            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
24869            AndroidLogPriority::PrioInfo => "PRIO_INFO",
24870            AndroidLogPriority::PrioWarn => "PRIO_WARN",
24871            AndroidLogPriority::PrioError => "PRIO_ERROR",
24872            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
24873        }
24874    }
24875}
24876// End of protos/perfetto/config/android/pixel_modem_config.proto
24877
24878// Begin of protos/perfetto/config/android/protolog_config.proto
24879
24880#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24881#[repr(i32)]
24882pub enum ProtoLogLevel {
24883    ProtologLevelUndefined = 0,
24884    ProtologLevelDebug = 1,
24885    ProtologLevelVerbose = 2,
24886    ProtologLevelInfo = 3,
24887    ProtologLevelWarn = 4,
24888    ProtologLevelError = 5,
24889    ProtologLevelWtf = 6,
24890}
24891impl ProtoLogLevel {
24892    /// String value of the enum field names used in the ProtoBuf definition.
24893    ///
24894    /// The values are not transformed in any way and thus are considered stable
24895    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24896    pub fn as_str_name(&self) -> &'static str {
24897        match self {
24898            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
24899            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
24900            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
24901            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
24902            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
24903            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
24904            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
24905        }
24906    }
24907}
24908// End of protos/perfetto/config/qnx/qnx_config.proto
24909
24910// Begin of protos/perfetto/config/statsd/atom_ids.proto
24911
24912/// This enum is obtained by post-processing
24913/// AOSP/frameworks/proto_logging/stats/atoms.proto through
24914/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
24915/// enum value for each proto field defined in the upstream atoms.proto.
24916#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24917#[repr(i32)]
24918pub enum AtomId {
24919    AtomUnspecified = 0,
24920    AtomBleScanStateChanged = 2,
24921    AtomProcessStateChanged = 3,
24922    AtomBleScanResultReceived = 4,
24923    AtomSensorStateChanged = 5,
24924    AtomGpsScanStateChanged = 6,
24925    AtomSyncStateChanged = 7,
24926    AtomScheduledJobStateChanged = 8,
24927    AtomScreenBrightnessChanged = 9,
24928    AtomWakelockStateChanged = 10,
24929    AtomLongPartialWakelockStateChanged = 11,
24930    AtomMobileRadioPowerStateChanged = 12,
24931    AtomWifiRadioPowerStateChanged = 13,
24932    AtomActivityManagerSleepStateChanged = 14,
24933    AtomMemoryFactorStateChanged = 15,
24934    AtomExcessiveCpuUsageReported = 16,
24935    AtomCachedKillReported = 17,
24936    AtomProcessMemoryStatReported = 18,
24937    AtomLauncherEvent = 19,
24938    AtomBatterySaverModeStateChanged = 20,
24939    AtomDeviceIdleModeStateChanged = 21,
24940    AtomDeviceIdlingModeStateChanged = 22,
24941    AtomAudioStateChanged = 23,
24942    AtomMediaCodecStateChanged = 24,
24943    AtomCameraStateChanged = 25,
24944    AtomFlashlightStateChanged = 26,
24945    AtomUidProcessStateChanged = 27,
24946    AtomProcessLifeCycleStateChanged = 28,
24947    AtomScreenStateChanged = 29,
24948    AtomBatteryLevelChanged = 30,
24949    AtomChargingStateChanged = 31,
24950    AtomPluggedStateChanged = 32,
24951    AtomInteractiveStateChanged = 33,
24952    AtomTouchEventReported = 34,
24953    AtomWakeupAlarmOccurred = 35,
24954    AtomKernelWakeupReported = 36,
24955    AtomWifiLockStateChanged = 37,
24956    AtomWifiSignalStrengthChanged = 38,
24957    AtomWifiScanStateChanged = 39,
24958    AtomPhoneSignalStrengthChanged = 40,
24959    AtomSettingChanged = 41,
24960    AtomActivityForegroundStateChanged = 42,
24961    AtomIsolatedUidChanged = 43,
24962    AtomPacketWakeupOccurred = 44,
24963    AtomWallClockTimeShifted = 45,
24964    AtomAnomalyDetected = 46,
24965    AtomAppBreadcrumbReported = 47,
24966    AtomAppStartOccurred = 48,
24967    AtomAppStartCanceled = 49,
24968    AtomAppStartFullyDrawn = 50,
24969    AtomLmkKillOccurred = 51,
24970    AtomPictureInPictureStateChanged = 52,
24971    AtomWifiMulticastLockStateChanged = 53,
24972    AtomAppStartMemoryStateCaptured = 55,
24973    AtomShutdownSequenceReported = 56,
24974    AtomBootSequenceReported = 57,
24975    AtomOverlayStateChanged = 59,
24976    AtomForegroundServiceStateChanged = 60,
24977    AtomCallStateChanged = 61,
24978    AtomKeyguardStateChanged = 62,
24979    AtomKeyguardBouncerStateChanged = 63,
24980    AtomKeyguardBouncerPasswordEntered = 64,
24981    AtomAppDied = 65,
24982    AtomResourceConfigurationChanged = 66,
24983    AtomBluetoothEnabledStateChanged = 67,
24984    AtomBluetoothConnectionStateChanged = 68,
24985    AtomGpsSignalQualityChanged = 69,
24986    AtomUsbConnectorStateChanged = 70,
24987    AtomSpeakerImpedanceReported = 71,
24988    AtomHardwareFailed = 72,
24989    AtomPhysicalDropDetected = 73,
24990    AtomChargeCyclesReported = 74,
24991    AtomMobileConnectionStateChanged = 75,
24992    AtomMobileRadioTechnologyChanged = 76,
24993    AtomUsbDeviceAttached = 77,
24994    AtomAppCrashOccurred = 78,
24995    AtomAnrOccurred = 79,
24996    AtomWtfOccurred = 80,
24997    AtomLowMemReported = 81,
24998    AtomGenericAtom = 82,
24999    AtomVibratorStateChanged = 84,
25000    AtomDeferredJobStatsReported = 85,
25001    AtomThermalThrottling = 86,
25002    AtomBiometricAcquired = 87,
25003    AtomBiometricAuthenticated = 88,
25004    AtomBiometricErrorOccurred = 89,
25005    AtomUiEventReported = 90,
25006    AtomBatteryHealthSnapshot = 91,
25007    AtomSlowIo = 92,
25008    AtomBatteryCausedShutdown = 93,
25009    AtomPhoneServiceStateChanged = 94,
25010    AtomPhoneStateChanged = 95,
25011    AtomUserRestrictionChanged = 96,
25012    AtomSettingsUiChanged = 97,
25013    AtomConnectivityStateChanged = 98,
25014    AtomServiceStateChanged = 99,
25015    AtomServiceLaunchReported = 100,
25016    AtomFlagFlipUpdateOccurred = 101,
25017    AtomBinaryPushStateChanged = 102,
25018    AtomDevicePolicyEvent = 103,
25019    AtomDocsUiFileOpCanceled = 104,
25020    AtomDocsUiFileOpCopyMoveModeReported = 105,
25021    AtomDocsUiFileOpFailure = 106,
25022    AtomDocsUiProviderFileOp = 107,
25023    AtomDocsUiInvalidScopedAccessRequest = 108,
25024    AtomDocsUiLaunchReported = 109,
25025    AtomDocsUiRootVisited = 110,
25026    AtomDocsUiStartupMs = 111,
25027    AtomDocsUiUserActionReported = 112,
25028    AtomWifiEnabledStateChanged = 113,
25029    AtomWifiRunningStateChanged = 114,
25030    AtomAppCompacted = 115,
25031    AtomNetworkDnsEventReported = 116,
25032    AtomDocsUiPickerLaunchedFromReported = 117,
25033    AtomDocsUiPickResultReported = 118,
25034    AtomDocsUiSearchModeReported = 119,
25035    AtomDocsUiSearchTypeReported = 120,
25036    AtomDataStallEvent = 121,
25037    AtomRescuePartyResetReported = 122,
25038    AtomSignedConfigReported = 123,
25039    AtomGnssNiEventReported = 124,
25040    AtomBluetoothLinkLayerConnectionEvent = 125,
25041    AtomBluetoothAclConnectionStateChanged = 126,
25042    AtomBluetoothScoConnectionStateChanged = 127,
25043    AtomAppDowngraded = 128,
25044    AtomAppOptimizedAfterDowngraded = 129,
25045    AtomLowStorageStateChanged = 130,
25046    AtomGnssNfwNotificationReported = 131,
25047    AtomGnssConfigurationReported = 132,
25048    AtomUsbPortOverheatEventReported = 133,
25049    AtomNfcErrorOccurred = 134,
25050    AtomNfcStateChanged = 135,
25051    AtomNfcBeamOccurred = 136,
25052    AtomNfcCardemulationOccurred = 137,
25053    AtomNfcTagOccurred = 138,
25054    AtomNfcHceTransactionOccurred = 139,
25055    AtomSeStateChanged = 140,
25056    AtomSeOmapiReported = 141,
25057    AtomBroadcastDispatchLatencyReported = 142,
25058    AtomAttentionManagerServiceResultReported = 143,
25059    AtomAdbConnectionChanged = 144,
25060    AtomSpeechDspStatReported = 145,
25061    AtomUsbContaminantReported = 146,
25062    AtomWatchdogRollbackOccurred = 147,
25063    AtomBiometricSystemHealthIssueDetected = 148,
25064    AtomBubbleUiChanged = 149,
25065    AtomScheduledJobConstraintChanged = 150,
25066    AtomBluetoothActiveDeviceChanged = 151,
25067    AtomBluetoothA2dpPlaybackStateChanged = 152,
25068    AtomBluetoothA2dpCodecConfigChanged = 153,
25069    AtomBluetoothA2dpCodecCapabilityChanged = 154,
25070    AtomBluetoothA2dpAudioUnderrunReported = 155,
25071    AtomBluetoothA2dpAudioOverrunReported = 156,
25072    AtomBluetoothDeviceRssiReported = 157,
25073    AtomBluetoothDeviceFailedContactCounterReported = 158,
25074    AtomBluetoothDeviceTxPowerLevelReported = 159,
25075    AtomBluetoothHciTimeoutReported = 160,
25076    AtomBluetoothQualityReportReported = 161,
25077    AtomBluetoothDeviceInfoReported = 162,
25078    AtomBluetoothRemoteVersionInfoReported = 163,
25079    AtomBluetoothSdpAttributeReported = 164,
25080    AtomBluetoothBondStateChanged = 165,
25081    AtomBluetoothClassicPairingEventReported = 166,
25082    AtomBluetoothSmpPairingEventReported = 167,
25083    AtomScreenTimeoutExtensionReported = 168,
25084    AtomProcessStartTime = 169,
25085    AtomPermissionGrantRequestResultReported = 170,
25086    AtomBluetoothSocketConnectionStateChanged = 171,
25087    AtomDeviceIdentifierAccessDenied = 172,
25088    AtomBubbleDeveloperErrorReported = 173,
25089    AtomAssistGestureStageReported = 174,
25090    AtomAssistGestureFeedbackReported = 175,
25091    AtomAssistGestureProgressReported = 176,
25092    AtomTouchGestureClassified = 177,
25093    AtomHiddenApiUsed = 178,
25094    AtomStyleUiChanged = 179,
25095    AtomPrivacyIndicatorsInteracted = 180,
25096    AtomAppInstallOnExternalStorageReported = 181,
25097    AtomNetworkStackReported = 182,
25098    AtomAppMovedStorageReported = 183,
25099    AtomBiometricEnrolled = 184,
25100    AtomSystemServerWatchdogOccurred = 185,
25101    AtomTombStoneOccurred = 186,
25102    AtomBluetoothClassOfDeviceReported = 187,
25103    AtomIntelligenceEventReported = 188,
25104    AtomThermalThrottlingSeverityStateChanged = 189,
25105    AtomRoleRequestResultReported = 190,
25106    AtomMediametricsAudiopolicyReported = 191,
25107    AtomMediametricsAudiorecordReported = 192,
25108    AtomMediametricsAudiothreadReported = 193,
25109    AtomMediametricsAudiotrackReported = 194,
25110    AtomMediametricsCodecReported = 195,
25111    AtomMediametricsDrmWidevineReported = 196,
25112    AtomMediametricsExtractorReported = 197,
25113    AtomMediametricsMediadrmReported = 198,
25114    AtomMediametricsNuplayerReported = 199,
25115    AtomMediametricsRecorderReported = 200,
25116    AtomMediametricsDrmmanagerReported = 201,
25117    AtomCarPowerStateChanged = 203,
25118    AtomGarageModeInfo = 204,
25119    AtomTestAtomReported = 205,
25120    AtomContentCaptureCallerMismatchReported = 206,
25121    AtomContentCaptureServiceEvents = 207,
25122    AtomContentCaptureSessionEvents = 208,
25123    AtomContentCaptureFlushed = 209,
25124    AtomLocationManagerApiUsageReported = 210,
25125    AtomReviewPermissionsFragmentResultReported = 211,
25126    AtomRuntimePermissionsUpgradeResult = 212,
25127    AtomGrantPermissionsActivityButtonActions = 213,
25128    AtomLocationAccessCheckNotificationAction = 214,
25129    AtomAppPermissionFragmentActionReported = 215,
25130    AtomAppPermissionFragmentViewed = 216,
25131    AtomAppPermissionsFragmentViewed = 217,
25132    AtomPermissionAppsFragmentViewed = 218,
25133    AtomTextSelectionEvent = 219,
25134    AtomTextLinkifyEvent = 220,
25135    AtomConversationActionsEvent = 221,
25136    AtomLanguageDetectionEvent = 222,
25137    AtomExclusionRectStateChanged = 223,
25138    AtomBackGestureReportedReported = 224,
25139    AtomUpdateEngineUpdateAttemptReported = 225,
25140    AtomUpdateEngineSuccessfulUpdateReported = 226,
25141    AtomCameraActionEvent = 227,
25142    AtomAppCompatibilityChangeReported = 228,
25143    AtomPerfettoUploaded = 229,
25144    AtomVmsClientConnectionStateChanged = 230,
25145    AtomMediaProviderScanOccurred = 233,
25146    AtomMediaContentDeleted = 234,
25147    AtomMediaProviderPermissionRequested = 235,
25148    AtomMediaProviderSchemaChanged = 236,
25149    AtomMediaProviderIdleMaintenanceFinished = 237,
25150    AtomRebootEscrowRecoveryReported = 238,
25151    AtomBootTimeEventDurationReported = 239,
25152    AtomBootTimeEventElapsedTimeReported = 240,
25153    AtomBootTimeEventUtcTimeReported = 241,
25154    AtomBootTimeEventErrorCodeReported = 242,
25155    AtomUserspaceRebootReported = 243,
25156    AtomNotificationReported = 244,
25157    AtomNotificationPanelReported = 245,
25158    AtomNotificationChannelModified = 246,
25159    AtomIntegrityCheckResultReported = 247,
25160    AtomIntegrityRulesPushed = 248,
25161    AtomCbMessageReported = 249,
25162    AtomCbMessageError = 250,
25163    AtomWifiHealthStatReported = 251,
25164    AtomWifiFailureStatReported = 252,
25165    AtomWifiConnectionResultReported = 253,
25166    AtomAppFreezeChanged = 254,
25167    AtomSnapshotMergeReported = 255,
25168    AtomForegroundServiceAppOpSessionEnded = 256,
25169    AtomDisplayJankReported = 257,
25170    AtomAppStandbyBucketChanged = 258,
25171    AtomSharesheetStarted = 259,
25172    AtomRankingSelected = 260,
25173    AtomTvsettingsUiInteracted = 261,
25174    AtomLauncherSnapshot = 262,
25175    AtomPackageInstallerV2Reported = 263,
25176    AtomUserLifecycleJourneyReported = 264,
25177    AtomUserLifecycleEventOccurred = 265,
25178    AtomAccessibilityShortcutReported = 266,
25179    AtomAccessibilityServiceReported = 267,
25180    AtomDocsUiDragAndDropReported = 268,
25181    AtomAppUsageEventOccurred = 269,
25182    AtomAutoRevokeNotificationClicked = 270,
25183    AtomAutoRevokeFragmentAppViewed = 271,
25184    AtomAutoRevokedAppInteraction = 272,
25185    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
25186    AtomEvsUsageStatsReported = 274,
25187    AtomAudioPowerUsageDataReported = 275,
25188    AtomTvTunerStateChanged = 276,
25189    AtomMediaoutputOpSwitchReported = 277,
25190    AtomCbMessageFiltered = 278,
25191    AtomTvTunerDvrStatus = 279,
25192    AtomTvCasSessionOpenStatus = 280,
25193    AtomAssistantInvocationReported = 281,
25194    AtomDisplayWakeReported = 282,
25195    AtomCarUserHalModifyUserRequestReported = 283,
25196    AtomCarUserHalModifyUserResponseReported = 284,
25197    AtomCarUserHalPostSwitchResponseReported = 285,
25198    AtomCarUserHalInitialUserInfoRequestReported = 286,
25199    AtomCarUserHalInitialUserInfoResponseReported = 287,
25200    AtomCarUserHalUserAssociationRequestReported = 288,
25201    AtomCarUserHalSetUserAssociationResponseReported = 289,
25202    AtomNetworkIpProvisioningReported = 290,
25203    AtomNetworkDhcpRenewReported = 291,
25204    AtomNetworkValidationReported = 292,
25205    AtomNetworkStackQuirkReported = 293,
25206    AtomMediametricsAudiorecorddeviceusageReported = 294,
25207    AtomMediametricsAudiothreaddeviceusageReported = 295,
25208    AtomMediametricsAudiotrackdeviceusageReported = 296,
25209    AtomMediametricsAudiodeviceconnectionReported = 297,
25210    AtomBlobCommitted = 298,
25211    AtomBlobLeased = 299,
25212    AtomBlobOpened = 300,
25213    AtomContactsProviderStatusReported = 301,
25214    AtomKeystoreKeyEventReported = 302,
25215    AtomNetworkTetheringReported = 303,
25216    AtomImeTouchReported = 304,
25217    AtomUiInteractionFrameInfoReported = 305,
25218    AtomUiActionLatencyReported = 306,
25219    AtomWifiDisconnectReported = 307,
25220    AtomWifiConnectionStateChanged = 308,
25221    AtomHdmiCecActiveSourceChanged = 309,
25222    AtomHdmiCecMessageReported = 310,
25223    AtomAirplaneMode = 311,
25224    AtomModemRestart = 312,
25225    AtomCarrierIdMismatchReported = 313,
25226    AtomCarrierIdTableUpdated = 314,
25227    AtomDataStallRecoveryReported = 315,
25228    AtomMediametricsMediaparserReported = 316,
25229    AtomTlsHandshakeReported = 317,
25230    AtomTextClassifierApiUsageReported = 318,
25231    AtomCarWatchdogKillStatsReported = 319,
25232    AtomMediametricsPlaybackReported = 320,
25233    AtomMediaNetworkInfoChanged = 321,
25234    AtomMediaPlaybackStateChanged = 322,
25235    AtomMediaPlaybackErrorReported = 323,
25236    AtomMediaPlaybackTrackChanged = 324,
25237    AtomWifiScanReported = 325,
25238    AtomWifiPnoScanReported = 326,
25239    AtomTifTuneChanged = 327,
25240    AtomAutoRotateReported = 328,
25241    AtomPerfettoTrigger = 329,
25242    AtomTranscodingData = 330,
25243    AtomImsServiceEntitlementUpdated = 331,
25244    AtomDeviceRotated = 333,
25245    AtomSimSpecificSettingsRestored = 334,
25246    AtomTextClassifierDownloadReported = 335,
25247    AtomPinStorageEvent = 336,
25248    AtomFaceDownReported = 337,
25249    AtomBluetoothHalCrashReasonReported = 338,
25250    AtomRebootEscrowPreparationReported = 339,
25251    AtomRebootEscrowLskfCaptureReported = 340,
25252    AtomRebootEscrowRebootReported = 341,
25253    AtomBinderLatencyReported = 342,
25254    AtomMediametricsAaudiostreamReported = 343,
25255    AtomMediaTranscodingSessionEnded = 344,
25256    AtomMagnificationUsageReported = 345,
25257    AtomMagnificationModeWithImeOnReported = 346,
25258    AtomAppSearchCallStatsReported = 347,
25259    AtomAppSearchPutDocumentStatsReported = 348,
25260    AtomDeviceControlChanged = 349,
25261    AtomDeviceStateChanged = 350,
25262    AtomInputdeviceRegistered = 351,
25263    AtomSmartspaceCardReported = 352,
25264    AtomAuthPromptAuthenticateInvoked = 353,
25265    AtomAuthManagerCanAuthenticateInvoked = 354,
25266    AtomAuthEnrollActionInvoked = 355,
25267    AtomAuthDeprecatedApiUsed = 356,
25268    AtomUnattendedRebootOccurred = 357,
25269    AtomLongRebootBlockingReported = 358,
25270    AtomLocationTimeZoneProviderStateChanged = 359,
25271    AtomFdtrackEventOccurred = 364,
25272    AtomTimeoutAutoExtendedReported = 365,
25273    AtomAlarmBatchDelivered = 367,
25274    AtomAlarmScheduled = 368,
25275    AtomCarWatchdogIoOveruseStatsReported = 369,
25276    AtomUserLevelHibernationStateChanged = 370,
25277    AtomAppSearchInitializeStatsReported = 371,
25278    AtomAppSearchQueryStatsReported = 372,
25279    AtomAppProcessDied = 373,
25280    AtomNetworkIpReachabilityMonitorReported = 374,
25281    AtomSlowInputEventReported = 375,
25282    AtomAnrOccurredProcessingStarted = 376,
25283    AtomAppSearchRemoveStatsReported = 377,
25284    AtomMediaCodecReported = 378,
25285    AtomPermissionUsageFragmentInteraction = 379,
25286    AtomPermissionDetailsInteraction = 380,
25287    AtomPrivacySensorToggleInteraction = 381,
25288    AtomPrivacyToggleDialogInteraction = 382,
25289    AtomAppSearchOptimizeStatsReported = 383,
25290    AtomNonA11yToolServiceWarningReport = 384,
25291    AtomAppCompatStateChanged = 386,
25292    AtomSizeCompatRestartButtonEventReported = 387,
25293    AtomSplitscreenUiChanged = 388,
25294    AtomNetworkDnsHandshakeReported = 389,
25295    AtomBluetoothCodePathCounter = 390,
25296    AtomBluetoothLeBatchScanReportDelay = 392,
25297    AtomAccessibilityFloatingMenuUiChanged = 393,
25298    AtomNeuralnetworksCompilationCompleted = 394,
25299    AtomNeuralnetworksExecutionCompleted = 395,
25300    AtomNeuralnetworksCompilationFailed = 396,
25301    AtomNeuralnetworksExecutionFailed = 397,
25302    AtomContextHubBooted = 398,
25303    AtomContextHubRestarted = 399,
25304    AtomContextHubLoadedNanoappSnapshotReported = 400,
25305    AtomChreCodeDownloadTransacted = 401,
25306    AtomUwbSessionInited = 402,
25307    AtomUwbSessionClosed = 403,
25308    AtomUwbFirstRangingReceived = 404,
25309    AtomUwbRangingMeasurementReceived = 405,
25310    AtomTextClassifierDownloadWorkScheduled = 406,
25311    AtomTextClassifierDownloadWorkCompleted = 407,
25312    AtomClipboardCleared = 408,
25313    AtomVmCreationRequested = 409,
25314    AtomNearbyDeviceScanStateChanged = 410,
25315    AtomApplicationLocalesChanged = 412,
25316    AtomMediametricsAudiotrackstatusReported = 413,
25317    AtomFoldStateDurationReported = 414,
25318    AtomLocationTimeZoneProviderControllerStateChanged = 415,
25319    AtomDisplayHbmStateChanged = 416,
25320    AtomDisplayHbmBrightnessChanged = 417,
25321    AtomPersistentUriPermissionsFlushed = 418,
25322    AtomEarlyBootCompOsArtifactsCheckReported = 419,
25323    AtomVbmetaDigestReported = 420,
25324    AtomApexInfoGathered = 421,
25325    AtomPvmInfoGathered = 422,
25326    AtomWearSettingsUiInteracted = 423,
25327    AtomTracingServiceReportEvent = 424,
25328    AtomMediametricsAudiorecordstatusReported = 425,
25329    AtomLauncherLatency = 426,
25330    AtomDropboxEntryDropped = 427,
25331    AtomWifiP2pConnectionReported = 428,
25332    AtomGameStateChanged = 429,
25333    AtomHotwordDetectorCreateRequested = 430,
25334    AtomHotwordDetectionServiceInitResultReported = 431,
25335    AtomHotwordDetectionServiceRestarted = 432,
25336    AtomHotwordDetectorKeyphraseTriggered = 433,
25337    AtomHotwordDetectorEvents = 434,
25338    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
25339    AtomContactsIndexerUpdateStatsReported = 440,
25340    AtomAppBackgroundRestrictionsInfo = 441,
25341    AtomMmsSmsProviderGetThreadIdFailed = 442,
25342    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
25343    AtomPermissionReminderNotificationInteracted = 444,
25344    AtomRecentPermissionDecisionsInteracted = 445,
25345    AtomGnssPsdsDownloadReported = 446,
25346    AtomLeAudioConnectionSessionReported = 447,
25347    AtomLeAudioBroadcastSessionReported = 448,
25348    AtomDreamUiEventReported = 449,
25349    AtomTaskManagerEventReported = 450,
25350    AtomCdmAssociationAction = 451,
25351    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
25352    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
25353    AtomAccessibilityTextReadingOptionsChanged = 454,
25354    AtomWifiSetupFailureCrashReported = 455,
25355    AtomUwbDeviceErrorReported = 456,
25356    AtomIsolatedCompilationScheduled = 457,
25357    AtomIsolatedCompilationEnded = 458,
25358    AtomOnsOpportunisticEsimProvisioningComplete = 459,
25359    AtomSystemServerPreWatchdogOccurred = 460,
25360    AtomTelephonyAnomalyDetected = 461,
25361    AtomLetterboxPositionChanged = 462,
25362    AtomRemoteKeyProvisioningAttempt = 463,
25363    AtomRemoteKeyProvisioningNetworkInfo = 464,
25364    AtomRemoteKeyProvisioningTiming = 465,
25365    AtomMediaoutputOpInteractionReport = 466,
25366    AtomSyncExemptionOccurred = 468,
25367    AtomAutofillPresentationEventReported = 469,
25368    AtomDockStateChanged = 470,
25369    AtomSafetySourceStateCollected = 471,
25370    AtomSafetyCenterSystemEventReported = 472,
25371    AtomSafetyCenterInteractionReported = 473,
25372    AtomSettingsProviderSettingChanged = 474,
25373    AtomBroadcastDeliveryEventReported = 475,
25374    AtomServiceRequestEventReported = 476,
25375    AtomProviderAcquisitionEventReported = 477,
25376    AtomBluetoothDeviceNameReported = 478,
25377    AtomCbConfigUpdated = 479,
25378    AtomCbModuleErrorReported = 480,
25379    AtomCbServiceFeatureChanged = 481,
25380    AtomCbReceiverFeatureChanged = 482,
25381    AtomPrivacySignalNotificationInteraction = 484,
25382    AtomPrivacySignalIssueCardInteraction = 485,
25383    AtomPrivacySignalsJobFailure = 486,
25384    AtomVibrationReported = 487,
25385    AtomUwbRangingStart = 489,
25386    AtomAppCompactedV2 = 491,
25387    AtomDisplayBrightnessChanged = 494,
25388    AtomActivityActionBlocked = 495,
25389    AtomNetworkDnsServerSupportReported = 504,
25390    AtomVmBooted = 505,
25391    AtomVmExited = 506,
25392    AtomAmbientBrightnessStatsReported = 507,
25393    AtomMediametricsSpatializercapabilitiesReported = 508,
25394    AtomMediametricsSpatializerdeviceenabledReported = 509,
25395    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
25396    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
25397    AtomHearingAidInfoReported = 513,
25398    AtomDeviceWideJobConstraintChanged = 514,
25399    AtomAmbientModeChanged = 515,
25400    AtomAnrLatencyReported = 516,
25401    AtomResourceApiInfo = 517,
25402    AtomSystemDefaultNetworkChanged = 518,
25403    AtomIwlanSetupDataCallResultReported = 519,
25404    AtomIwlanPdnDisconnectedReasonReported = 520,
25405    AtomAirplaneModeSessionReported = 521,
25406    AtomVmCpuStatusReported = 522,
25407    AtomVmMemStatusReported = 523,
25408    AtomPackageInstallationSessionReported = 524,
25409    AtomDefaultNetworkRematchInfo = 525,
25410    AtomNetworkSelectionPerformance = 526,
25411    AtomNetworkNsdReported = 527,
25412    AtomBluetoothDisconnectionReasonReported = 529,
25413    AtomBluetoothLocalVersionsReported = 530,
25414    AtomBluetoothRemoteSupportedFeaturesReported = 531,
25415    AtomBluetoothLocalSupportedFeaturesReported = 532,
25416    AtomBluetoothGattAppInfo = 533,
25417    AtomBrightnessConfigurationUpdated = 534,
25418    AtomWearMediaOutputSwitcherLaunched = 538,
25419    AtomWearMediaOutputSwitcherFinished = 539,
25420    AtomWearMediaOutputSwitcherConnectionReported = 540,
25421    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
25422    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
25423    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
25424    AtomPackageManagerSnapshotReported = 544,
25425    AtomPackageManagerAppsFilterCacheBuildReported = 545,
25426    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
25427    AtomLauncherImpressionEvent = 547,
25428    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
25429    AtomWsWatchFaceEdited = 551,
25430    AtomWsWatchFaceFavoriteActionReported = 552,
25431    AtomWsWatchFaceSetActionReported = 553,
25432    AtomPackageUninstallationReported = 554,
25433    AtomGameModeChanged = 555,
25434    AtomGameModeConfigurationChanged = 556,
25435    AtomBedtimeModeStateChanged = 557,
25436    AtomNetworkSliceSessionEnded = 558,
25437    AtomNetworkSliceDailyDataUsageReported = 559,
25438    AtomNfcTagTypeOccurred = 560,
25439    AtomNfcAidConflictOccurred = 561,
25440    AtomNfcReaderConflictOccurred = 562,
25441    AtomWsTileListChanged = 563,
25442    AtomGetTypeAccessedWithoutPermission = 564,
25443    AtomMobileBundledAppInfoGathered = 566,
25444    AtomWsWatchFaceComplicationSetChanged = 567,
25445    AtomMediaDrmCreated = 568,
25446    AtomMediaDrmErrored = 569,
25447    AtomMediaDrmSessionOpened = 570,
25448    AtomMediaDrmSessionClosed = 571,
25449    AtomUserSelectedResolution = 572,
25450    AtomUnsafeIntentEventReported = 573,
25451    AtomPerformanceHintSessionReported = 574,
25452    AtomMediametricsMidiDeviceCloseReported = 576,
25453    AtomBiometricTouchReported = 577,
25454    AtomHotwordAudioEgressEventReported = 578,
25455    AtomLocationEnabledStateChanged = 580,
25456    AtomImeRequestFinished = 581,
25457    AtomUsbComplianceWarningsReported = 582,
25458    AtomAppSupportedLocalesChanged = 583,
25459    AtomMediaProviderVolumeRecoveryReported = 586,
25460    AtomBiometricPropertiesCollected = 587,
25461    AtomKernelWakeupAttributed = 588,
25462    AtomScreenStateChangedV2 = 589,
25463    AtomWsBackupActionReported = 590,
25464    AtomWsRestoreActionReported = 591,
25465    AtomDeviceLogAccessEventReported = 592,
25466    AtomMediaSessionUpdated = 594,
25467    AtomWearOobeStateChanged = 595,
25468    AtomWsNotificationUpdated = 596,
25469    AtomNetworkValidationFailureStatsDailyReported = 601,
25470    AtomWsComplicationTapped = 602,
25471    AtomWsNotificationBlocking = 780,
25472    AtomWsNotificationBridgemodeUpdated = 822,
25473    AtomWsNotificationDismissalActioned = 823,
25474    AtomWsNotificationActioned = 824,
25475    AtomWsNotificationLatency = 880,
25476    AtomWifiBytesTransfer = 10000,
25477    AtomWifiBytesTransferByFgBg = 10001,
25478    AtomMobileBytesTransfer = 10002,
25479    AtomMobileBytesTransferByFgBg = 10003,
25480    AtomBluetoothBytesTransfer = 10006,
25481    AtomKernelWakelock = 10004,
25482    AtomSubsystemSleepState = 10005,
25483    AtomCpuTimePerUid = 10009,
25484    AtomCpuTimePerUidFreq = 10010,
25485    AtomWifiActivityInfo = 10011,
25486    AtomModemActivityInfo = 10012,
25487    AtomBluetoothActivityInfo = 10007,
25488    AtomProcessMemoryState = 10013,
25489    AtomSystemElapsedRealtime = 10014,
25490    AtomSystemUptime = 10015,
25491    AtomCpuActiveTime = 10016,
25492    AtomCpuClusterTime = 10017,
25493    AtomDiskSpace = 10018,
25494    AtomRemainingBatteryCapacity = 10019,
25495    AtomFullBatteryCapacity = 10020,
25496    AtomTemperature = 10021,
25497    AtomBinderCalls = 10022,
25498    AtomBinderCallsExceptions = 10023,
25499    AtomLooperStats = 10024,
25500    AtomDiskStats = 10025,
25501    AtomDirectoryUsage = 10026,
25502    AtomAppSize = 10027,
25503    AtomCategorySize = 10028,
25504    AtomProcStats = 10029,
25505    AtomBatteryVoltage = 10030,
25506    AtomNumFingerprintsEnrolled = 10031,
25507    AtomDiskIo = 10032,
25508    AtomPowerProfile = 10033,
25509    AtomProcStatsPkgProc = 10034,
25510    AtomProcessCpuTime = 10035,
25511    AtomCpuTimePerThreadFreq = 10037,
25512    AtomOnDevicePowerMeasurement = 10038,
25513    AtomDeviceCalculatedPowerUse = 10039,
25514    AtomProcessMemoryHighWaterMark = 10042,
25515    AtomBatteryLevel = 10043,
25516    AtomBuildInformation = 10044,
25517    AtomBatteryCycleCount = 10045,
25518    AtomDebugElapsedClock = 10046,
25519    AtomDebugFailingElapsedClock = 10047,
25520    AtomNumFacesEnrolled = 10048,
25521    AtomRoleHolder = 10049,
25522    AtomDangerousPermissionState = 10050,
25523    AtomTrainInfo = 10051,
25524    AtomTimeZoneDataInfo = 10052,
25525    AtomExternalStorageInfo = 10053,
25526    AtomGpuStatsGlobalInfo = 10054,
25527    AtomGpuStatsAppInfo = 10055,
25528    AtomSystemIonHeapSize = 10056,
25529    AtomAppsOnExternalStorageInfo = 10057,
25530    AtomFaceSettings = 10058,
25531    AtomCoolingDevice = 10059,
25532    AtomAppOps = 10060,
25533    AtomProcessSystemIonHeapSize = 10061,
25534    AtomSurfaceflingerStatsGlobalInfo = 10062,
25535    AtomSurfaceflingerStatsLayerInfo = 10063,
25536    AtomProcessMemorySnapshot = 10064,
25537    AtomVmsClientStats = 10065,
25538    AtomNotificationRemoteViews = 10066,
25539    AtomDangerousPermissionStateSampled = 10067,
25540    AtomGraphicsStats = 10068,
25541    AtomRuntimeAppOpAccess = 10069,
25542    AtomIonHeapSize = 10070,
25543    AtomPackageNotificationPreferences = 10071,
25544    AtomPackageNotificationChannelPreferences = 10072,
25545    AtomPackageNotificationChannelGroupPreferences = 10073,
25546    AtomGnssStats = 10074,
25547    AtomAttributedAppOps = 10075,
25548    AtomVoiceCallSession = 10076,
25549    AtomVoiceCallRatUsage = 10077,
25550    AtomSimSlotState = 10078,
25551    AtomSupportedRadioAccessFamily = 10079,
25552    AtomSettingSnapshot = 10080,
25553    AtomBlobInfo = 10081,
25554    AtomDataUsageBytesTransfer = 10082,
25555    AtomBytesTransferByTagAndMetered = 10083,
25556    AtomDndModeRule = 10084,
25557    AtomGeneralExternalStorageAccessStats = 10085,
25558    AtomIncomingSms = 10086,
25559    AtomOutgoingSms = 10087,
25560    AtomCarrierIdTableVersion = 10088,
25561    AtomDataCallSession = 10089,
25562    AtomCellularServiceState = 10090,
25563    AtomCellularDataServiceSwitch = 10091,
25564    AtomSystemMemory = 10092,
25565    AtomImsRegistrationTermination = 10093,
25566    AtomImsRegistrationStats = 10094,
25567    AtomCpuTimePerClusterFreq = 10095,
25568    AtomCpuCyclesPerUidCluster = 10096,
25569    AtomDeviceRotatedData = 10097,
25570    AtomCpuCyclesPerThreadGroupCluster = 10098,
25571    AtomMediaDrmActivityInfo = 10099,
25572    AtomOemManagedBytesTransfer = 10100,
25573    AtomGnssPowerStats = 10101,
25574    AtomTimeZoneDetectorState = 10102,
25575    AtomKeystore2StorageStats = 10103,
25576    AtomRkpPoolStats = 10104,
25577    AtomProcessDmabufMemory = 10105,
25578    AtomPendingAlarmInfo = 10106,
25579    AtomUserLevelHibernatedApps = 10107,
25580    AtomLauncherLayoutSnapshot = 10108,
25581    AtomGlobalHibernatedApps = 10109,
25582    AtomInputEventLatencySketch = 10110,
25583    AtomBatteryUsageStatsBeforeReset = 10111,
25584    AtomBatteryUsageStatsSinceReset = 10112,
25585    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
25586    AtomInstalledIncrementalPackage = 10114,
25587    AtomTelephonyNetworkRequests = 10115,
25588    AtomAppSearchStorageInfo = 10116,
25589    AtomVmstat = 10117,
25590    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
25591    AtomKeystore2KeyCreationWithAuthInfo = 10119,
25592    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
25593    AtomKeystore2AtomWithOverflow = 10121,
25594    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
25595    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
25596    AtomRkpErrorStats = 10124,
25597    AtomKeystore2CrashStats = 10125,
25598    AtomVendorApexInfo = 10126,
25599    AtomAccessibilityShortcutStats = 10127,
25600    AtomAccessibilityFloatingMenuStats = 10128,
25601    AtomDataUsageBytesTransferV2 = 10129,
25602    AtomMediaCapabilities = 10130,
25603    AtomCarWatchdogSystemIoUsageSummary = 10131,
25604    AtomCarWatchdogUidIoUsageSummary = 10132,
25605    AtomImsRegistrationFeatureTagStats = 10133,
25606    AtomRcsClientProvisioningStats = 10134,
25607    AtomRcsAcsProvisioningStats = 10135,
25608    AtomSipDelegateStats = 10136,
25609    AtomSipTransportFeatureTagStats = 10137,
25610    AtomSipMessageResponse = 10138,
25611    AtomSipTransportSession = 10139,
25612    AtomImsDedicatedBearerListenerEvent = 10140,
25613    AtomImsDedicatedBearerEvent = 10141,
25614    AtomImsRegistrationServiceDescStats = 10142,
25615    AtomUceEventStats = 10143,
25616    AtomPresenceNotifyEvent = 10144,
25617    AtomGbaEvent = 10145,
25618    AtomPerSimStatus = 10146,
25619    AtomGpuWorkPerUid = 10147,
25620    AtomPersistentUriPermissionsAmountPerPackage = 10148,
25621    AtomSignedPartitionInfo = 10149,
25622    AtomPinnedFileSizesPerPackage = 10150,
25623    AtomPendingIntentsPerPackage = 10151,
25624    AtomUserInfo = 10152,
25625    AtomTelephonyNetworkRequestsV2 = 10153,
25626    AtomDeviceTelephonyProperties = 10154,
25627    AtomRemoteKeyProvisioningErrorCounts = 10155,
25628    AtomSafetyState = 10156,
25629    AtomIncomingMms = 10157,
25630    AtomOutgoingMms = 10158,
25631    AtomMultiUserInfo = 10160,
25632    AtomNetworkBpfMapInfo = 10161,
25633    AtomOutgoingShortCodeSms = 10162,
25634    AtomConnectivityStateSample = 10163,
25635    AtomNetworkSelectionRematchReasonsInfo = 10164,
25636    AtomGameModeInfo = 10165,
25637    AtomGameModeConfiguration = 10166,
25638    AtomGameModeListener = 10167,
25639    AtomNetworkSliceRequestCount = 10168,
25640    AtomWsTileSnapshot = 10169,
25641    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
25642    AtomProcessState = 10171,
25643    AtomProcessAssociation = 10172,
25644    AtomAdpfSystemComponentInfo = 10173,
25645    AtomNotificationMemoryUse = 10174,
25646    AtomHdrCapabilities = 10175,
25647    AtomWsFavouriteWatchFaceListSnapshot = 10176,
25648    AtomAccessibilityCheckResultReported = 910,
25649    AtomAdaptiveAuthUnlockAfterLockReported = 820,
25650    AtomThermalStatusCalled = 772,
25651    AtomThermalHeadroomCalled = 773,
25652    AtomThermalHeadroomThresholdsCalled = 774,
25653    AtomAdpfHintSessionTidCleanup = 839,
25654    AtomThermalHeadroomThresholds = 10201,
25655    AtomAdpfSessionSnapshot = 10218,
25656    AtomJsscriptengineLatencyReported = 483,
25657    AtomAdServicesApiCalled = 435,
25658    AtomAdServicesMesurementReportsUploaded = 436,
25659    AtomMobileDataDownloadFileGroupStatusReported = 490,
25660    AtomMobileDataDownloadDownloadResultReported = 502,
25661    AtomAdServicesSettingsUsageReported = 493,
25662    AtomBackgroundFetchProcessReported = 496,
25663    AtomUpdateCustomAudienceProcessReported = 497,
25664    AtomRunAdBiddingProcessReported = 498,
25665    AtomRunAdScoringProcessReported = 499,
25666    AtomRunAdSelectionProcessReported = 500,
25667    AtomRunAdBiddingPerCaProcessReported = 501,
25668    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
25669    AtomAdServicesMeasurementRegistrations = 512,
25670    AtomAdServicesGetTopicsReported = 535,
25671    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
25672    AtomAdServicesEpochComputationClassifierReported = 537,
25673    AtomAdServicesBackCompatGetTopicsReported = 598,
25674    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
25675    AtomAdServicesMeasurementDebugKeys = 640,
25676    AtomAdServicesErrorReported = 662,
25677    AtomAdServicesBackgroundJobsExecutionReported = 663,
25678    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
25679    AtomAdServicesMeasurementAttribution = 674,
25680    AtomAdServicesMeasurementJobs = 675,
25681    AtomAdServicesMeasurementWipeout = 676,
25682    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
25683    AtomAdServicesEnrollmentDataStored = 697,
25684    AtomAdServicesEnrollmentFileDownloaded = 698,
25685    AtomAdServicesEnrollmentMatched = 699,
25686    AtomAdServicesConsentMigrated = 702,
25687    AtomAdServicesEnrollmentFailed = 714,
25688    AtomAdServicesMeasurementClickVerification = 756,
25689    AtomAdServicesEncryptionKeyFetched = 765,
25690    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
25691    AtomDestinationRegisteredBeacons = 767,
25692    AtomReportInteractionApiCalled = 768,
25693    AtomInteractionReportingTableCleared = 769,
25694    AtomAppManifestConfigHelperCalled = 788,
25695    AtomAdFilteringProcessJoinCaReported = 793,
25696    AtomAdFilteringProcessAdSelectionReported = 794,
25697    AtomAdCounterHistogramUpdaterReported = 795,
25698    AtomSignatureVerification = 807,
25699    AtomKAnonImmediateSignJoinStatusReported = 808,
25700    AtomKAnonBackgroundJobStatusReported = 809,
25701    AtomKAnonInitializeStatusReported = 810,
25702    AtomKAnonSignStatusReported = 811,
25703    AtomKAnonJoinStatusReported = 812,
25704    AtomKAnonKeyAttestationStatusReported = 813,
25705    AtomGetAdSelectionDataApiCalled = 814,
25706    AtomGetAdSelectionDataBuyerInputGenerated = 815,
25707    AtomBackgroundJobSchedulingReported = 834,
25708    AtomTopicsEncryptionEpochComputationReported = 840,
25709    AtomTopicsEncryptionGetTopicsReported = 841,
25710    AtomAdservicesShellCommandCalled = 842,
25711    AtomUpdateSignalsApiCalled = 843,
25712    AtomEncodingJobRun = 844,
25713    AtomEncodingJsFetch = 845,
25714    AtomEncodingJsExecution = 846,
25715    AtomPersistAdSelectionResultCalled = 847,
25716    AtomServerAuctionKeyFetchCalled = 848,
25717    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
25718    AtomAdServicesMeasurementProcessOdpRegistration = 864,
25719    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
25720    AtomSelectAdsFromOutcomesApiCalled = 876,
25721    AtomReportImpressionApiCalled = 877,
25722    AtomAdServicesEnrollmentTransactionStats = 885,
25723    AtomAdServicesCobaltLoggerEventReported = 902,
25724    AtomAdServicesCobaltPeriodicJobEventReported = 903,
25725    AtomUpdateSignalsProcessReported = 905,
25726    AtomTopicsScheduleEpochJobSettingReported = 930,
25727    AtomAiWallpapersButtonPressed = 706,
25728    AtomAiWallpapersTemplateSelected = 707,
25729    AtomAiWallpapersTermSelected = 708,
25730    AtomAiWallpapersWallpaperSet = 709,
25731    AtomAiWallpapersSessionSummary = 710,
25732    AtomApexInstallationRequested = 732,
25733    AtomApexInstallationStaged = 733,
25734    AtomApexInstallationEnded = 734,
25735    AtomAppSearchSetSchemaStatsReported = 385,
25736    AtomAppSearchSchemaMigrationStatsReported = 579,
25737    AtomAppSearchUsageSearchIntentStatsReported = 825,
25738    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
25739    AtomAppSearchAppsIndexerStatsReported = 909,
25740    AtomArtDatumReported = 332,
25741    AtomArtDeviceDatumReported = 550,
25742    AtomArtDatumDeltaReported = 565,
25743    AtomArtDex2oatReported = 929,
25744    AtomArtDeviceStatus = 10205,
25745    AtomBackgroundDexoptJobEnded = 467,
25746    AtomPrerebootDexoptJobEnded = 883,
25747    AtomOdrefreshReported = 366,
25748    AtomOdsignReported = 548,
25749    AtomAutofillUiEventReported = 603,
25750    AtomAutofillFillRequestReported = 604,
25751    AtomAutofillFillResponseReported = 605,
25752    AtomAutofillSaveEventReported = 606,
25753    AtomAutofillSessionCommitted = 607,
25754    AtomAutofillFieldClassificationEventReported = 659,
25755    AtomCarRecentsEventReported = 770,
25756    AtomCarCalmModeEventReported = 797,
25757    AtomCarWakeupFromSuspendReported = 852,
25758    AtomPluginInitialized = 655,
25759    AtomBluetoothHashedDeviceNameReported = 613,
25760    AtomBluetoothL2capCocClientConnection = 614,
25761    AtomBluetoothL2capCocServerConnection = 615,
25762    AtomBluetoothLeSessionConnected = 656,
25763    AtomRestrictedBluetoothDeviceNameReported = 666,
25764    AtomBluetoothProfileConnectionAttempted = 696,
25765    AtomBluetoothContentProfileErrorReported = 781,
25766    AtomBluetoothRfcommConnectionAttempted = 782,
25767    AtomRemoteDeviceInformationWithMetricId = 862,
25768    AtomLeAppScanStateChanged = 870,
25769    AtomLeRadioScanStopped = 871,
25770    AtomLeScanResultReceived = 872,
25771    AtomLeScanAbused = 873,
25772    AtomLeAdvStateChanged = 874,
25773    AtomLeAdvErrorReported = 875,
25774    AtomA2dpSessionReported = 904,
25775    AtomBluetoothCrossLayerEventReported = 916,
25776    AtomBroadcastAudioSessionReported = 927,
25777    AtomBroadcastAudioSyncReported = 928,
25778    AtomBluetoothRfcommConnectionReportedAtClose = 982,
25779    AtomBluetoothLeConnection = 988,
25780    AtomBroadcastSent = 922,
25781    AtomCameraFeatureCombinationQueryEvent = 900,
25782    AtomCertificateTransparencyLogListStateChanged = 934,
25783    AtomCertificateTransparencyLogListUpdateFailed = 972,
25784    AtomDailyKeepaliveInfoReported = 650,
25785    AtomNetworkRequestStateChanged = 779,
25786    AtomTetheringActiveSessionsReported = 925,
25787    AtomNetworkStatsRecorderFileOperated = 783,
25788    AtomCoreNetworkingTerribleErrorOccurred = 979,
25789    AtomApfSessionInfoReported = 777,
25790    AtomIpClientRaInfoReported = 778,
25791    AtomVpnConnectionStateChanged = 850,
25792    AtomVpnConnectionReported = 851,
25793    AtomCpuPolicy = 10199,
25794    AtomCredentialManagerApiCalled = 585,
25795    AtomCredentialManagerInitPhaseReported = 651,
25796    AtomCredentialManagerCandidatePhaseReported = 652,
25797    AtomCredentialManagerFinalPhaseReported = 653,
25798    AtomCredentialManagerTotalReported = 667,
25799    AtomCredentialManagerFinalnouidReported = 668,
25800    AtomCredentialManagerGetReported = 669,
25801    AtomCredentialManagerAuthClickReported = 670,
25802    AtomCredentialManagerApiv2Called = 671,
25803    AtomCronetEngineCreated = 703,
25804    AtomCronetTrafficReported = 704,
25805    AtomCronetEngineBuilderInitialized = 762,
25806    AtomCronetHttpFlagsInitialized = 763,
25807    AtomCronetInitialized = 764,
25808    AtomDesktopModeUiChanged = 818,
25809    AtomDesktopModeSessionTaskUpdate = 819,
25810    AtomDesktopModeTaskSizeUpdated = 935,
25811    AtomDeviceLockCheckInRequestReported = 726,
25812    AtomDeviceLockProvisioningCompleteReported = 727,
25813    AtomDeviceLockKioskAppRequestReported = 728,
25814    AtomDeviceLockCheckInRetryReported = 789,
25815    AtomDeviceLockProvisionFailureReported = 790,
25816    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
25817    AtomDevicePolicyManagementMode = 10216,
25818    AtomDevicePolicyState = 10217,
25819    AtomDisplayModeDirectorVoteChanged = 792,
25820    AtomExternalDisplayStateChanged = 806,
25821    AtomDndStateChanged = 657,
25822    AtomDreamSettingChanged = 705,
25823    AtomDreamSettingSnapshot = 10192,
25824    AtomExpressEventReported = 528,
25825    AtomExpressHistogramSampleReported = 593,
25826    AtomExpressUidEventReported = 644,
25827    AtomExpressUidHistogramSampleReported = 658,
25828    AtomFederatedComputeApiCalled = 712,
25829    AtomFederatedComputeTrainingEventReported = 771,
25830    AtomExampleIteratorNextLatencyReported = 838,
25831    AtomFullScreenIntentLaunched = 631,
25832    AtomBalAllowed = 632,
25833    AtomInTaskActivityStarted = 685,
25834    AtomDeviceOrientationChanged = 906,
25835    AtomCachedAppsHighWatermark = 10189,
25836    AtomStylusPredictionMetricsReported = 718,
25837    AtomUserRiskEventReported = 725,
25838    AtomMediaProjectionStateChanged = 729,
25839    AtomMediaProjectionTargetChanged = 730,
25840    AtomExcessiveBinderProxyCountReported = 853,
25841    AtomProxyBytesTransferByFgBg = 10200,
25842    AtomMobileBytesTransferByProcState = 10204,
25843    AtomBiometricFrrNotification = 817,
25844    AtomSensitiveContentMediaProjectionSession = 830,
25845    AtomSensitiveNotificationAppProtectionSession = 831,
25846    AtomSensitiveNotificationAppProtectionApplied = 832,
25847    AtomSensitiveNotificationRedaction = 833,
25848    AtomSensitiveContentAppProtection = 835,
25849    AtomAppRestrictionStateChanged = 866,
25850    AtomBatteryUsageStatsPerUid = 10209,
25851    AtomPostgcMemorySnapshot = 924,
25852    AtomPowerSaveTempAllowlistChanged = 926,
25853    AtomAppOpAccessTracked = 931,
25854    AtomContentOrFileUriEventReported = 933,
25855    AtomApplicationGrammaticalInflectionChanged = 584,
25856    AtomSystemGrammaticalInflectionChanged = 816,
25857    AtomBatteryHealth = 10220,
25858    AtomHdmiEarcStatusReported = 701,
25859    AtomHdmiSoundbarModeStatusReported = 724,
25860    AtomHealthConnectApiCalled = 616,
25861    AtomHealthConnectUsageStats = 617,
25862    AtomHealthConnectStorageStats = 618,
25863    AtomHealthConnectApiInvoked = 643,
25864    AtomExerciseRouteApiCalled = 654,
25865    AtomHealthConnectExportInvoked = 907,
25866    AtomHealthConnectImportInvoked = 918,
25867    AtomHealthConnectExportImportStatsReported = 919,
25868    AtomHealthConnectUiImpression = 623,
25869    AtomHealthConnectUiInteraction = 624,
25870    AtomHealthConnectAppOpenedReported = 625,
25871    AtomHotwordEgressSizeAtomReported = 761,
25872    AtomIkeSessionTerminated = 678,
25873    AtomIkeLivenessCheckSessionValidated = 760,
25874    AtomNegotiatedSecurityAssociation = 821,
25875    AtomKeyboardConfigured = 682,
25876    AtomKeyboardSystemsEventReported = 683,
25877    AtomInputdeviceUsageReported = 686,
25878    AtomInputEventLatencyReported = 932,
25879    AtomTouchpadUsage = 10191,
25880    AtomKernelOomKillOccurred = 754,
25881    AtomEmergencyStateChanged = 633,
25882    AtomChreSignificantMotionStateChanged = 868,
25883    AtomPopulationDensityProviderLoadingReported = 1002,
25884    AtomDensityBasedCoarseLocationsUsageReported = 1003,
25885    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
25886    AtomMediaCodecReclaimRequestCompleted = 600,
25887    AtomMediaCodecStarted = 641,
25888    AtomMediaCodecStopped = 642,
25889    AtomMediaCodecRendered = 684,
25890    AtomMediaEditingEndedReported = 798,
25891    AtomMteState = 10181,
25892    AtomMicroxrDeviceBootCompleteReported = 901,
25893    AtomNfcObserveModeStateChanged = 855,
25894    AtomNfcFieldChanged = 856,
25895    AtomNfcPollingLoopNotificationReported = 857,
25896    AtomNfcProprietaryCapabilitiesReported = 858,
25897    AtomOndevicepersonalizationApiCalled = 711,
25898    AtomComponentStateChangedReported = 863,
25899    AtomPdfLoadReported = 859,
25900    AtomPdfApiUsageReported = 860,
25901    AtomPdfSearchReported = 861,
25902    AtomPressureStallInformation = 10229,
25903    AtomPermissionRationaleDialogViewed = 645,
25904    AtomPermissionRationaleDialogActionReported = 646,
25905    AtomAppDataSharingUpdatesNotificationInteraction = 647,
25906    AtomAppDataSharingUpdatesFragmentViewed = 648,
25907    AtomAppDataSharingUpdatesFragmentActionReported = 649,
25908    AtomEnhancedConfirmationDialogResultReported = 827,
25909    AtomEnhancedConfirmationRestrictionCleared = 828,
25910    AtomPhotopickerSessionInfoReported = 886,
25911    AtomPhotopickerApiInfoReported = 887,
25912    AtomPhotopickerUiEventLogged = 888,
25913    AtomPhotopickerMediaItemStatusReported = 889,
25914    AtomPhotopickerPreviewInfoLogged = 890,
25915    AtomPhotopickerMenuInteractionLogged = 891,
25916    AtomPhotopickerBannerInteractionLogged = 892,
25917    AtomPhotopickerMediaLibraryInfoLogged = 893,
25918    AtomPhotopickerPageInfoLogged = 894,
25919    AtomPhotopickerMediaGridSyncInfoReported = 895,
25920    AtomPhotopickerAlbumSyncInfoReported = 896,
25921    AtomPhotopickerSearchInfoReported = 897,
25922    AtomSearchDataExtractionDetailsReported = 898,
25923    AtomEmbeddedPhotopickerInfoReported = 899,
25924    AtomAtom9999 = 9999,
25925    AtomAtom99999 = 99999,
25926    AtomScreenOffReported = 776,
25927    AtomScreenTimeoutOverrideReported = 836,
25928    AtomScreenInteractiveSessionReported = 837,
25929    AtomScreenDimReported = 867,
25930    AtomMediaProviderDatabaseRollbackReported = 784,
25931    AtomBackupSetupStatusReported = 785,
25932    AtomRangingSessionConfigured = 993,
25933    AtomRangingSessionStarted = 994,
25934    AtomRangingSessionClosed = 995,
25935    AtomRangingTechnologyStarted = 996,
25936    AtomRangingTechnologyStopped = 997,
25937    AtomRkpdPoolStats = 664,
25938    AtomRkpdClientOperation = 665,
25939    AtomSandboxApiCalled = 488,
25940    AtomSandboxActivityEventOccurred = 735,
25941    AtomSdkSandboxRestrictedAccessInSession = 796,
25942    AtomSandboxSdkStorage = 10159,
25943    AtomSelinuxAuditLog = 799,
25944    AtomSettingsSpaReported = 622,
25945    AtomTestExtensionAtomReported = 660,
25946    AtomTestRestrictedAtomReported = 672,
25947    AtomStatsSocketLossReported = 752,
25948    AtomLockscreenShortcutSelected = 611,
25949    AtomLockscreenShortcutTriggered = 612,
25950    AtomLauncherImpressionEventV2 = 716,
25951    AtomDisplaySwitchLatencyTracked = 753,
25952    AtomNotificationListenerService = 829,
25953    AtomNavHandleTouchPoints = 869,
25954    AtomCommunalHubWidgetEventReported = 908,
25955    AtomCommunalHubSnapshot = 10226,
25956    AtomEmergencyNumberDialed = 637,
25957    AtomCallStats = 10221,
25958    AtomCallAudioRouteStats = 10222,
25959    AtomTelecomApiStats = 10223,
25960    AtomTelecomErrorStats = 10224,
25961    AtomCellularRadioPowerStateChanged = 713,
25962    AtomEmergencyNumbersInfo = 10180,
25963    AtomDataNetworkValidation = 10207,
25964    AtomDataRatStateChanged = 854,
25965    AtomConnectedChannelChanged = 882,
25966    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
25967    AtomQualifiedRatListChanged = 634,
25968    AtomQnsImsCallDropStats = 635,
25969    AtomQnsFallbackRestrictionChanged = 636,
25970    AtomQnsRatPreferenceMismatchInfo = 10177,
25971    AtomQnsHandoverTimeMillis = 10178,
25972    AtomQnsHandoverPingpong = 10179,
25973    AtomSatelliteController = 10182,
25974    AtomSatelliteSession = 10183,
25975    AtomSatelliteIncomingDatagram = 10184,
25976    AtomSatelliteOutgoingDatagram = 10185,
25977    AtomSatelliteProvision = 10186,
25978    AtomSatelliteSosMessageRecommender = 10187,
25979    AtomCarrierRoamingSatelliteSession = 10211,
25980    AtomCarrierRoamingSatelliteControllerStats = 10212,
25981    AtomControllerStatsPerPackage = 10213,
25982    AtomSatelliteEntitlement = 10214,
25983    AtomSatelliteConfigUpdater = 10215,
25984    AtomSatelliteAccessController = 10219,
25985    AtomCellularIdentifierDisclosed = 800,
25986    AtomThreadnetworkTelemetryDataReported = 738,
25987    AtomThreadnetworkTopoEntryRepeated = 739,
25988    AtomThreadnetworkDeviceInfoReported = 740,
25989    AtomBootIntegrityInfoReported = 775,
25990    AtomTvLowPowerStandbyPolicy = 679,
25991    AtomExternalTvInputEvent = 717,
25992    AtomTestUprobestatsAtomReported = 915,
25993    AtomUwbActivityInfo = 10188,
25994    AtomMediatorUpdated = 721,
25995    AtomSysproxyBluetoothBytesTransfer = 10196,
25996    AtomSysproxyConnectionUpdated = 786,
25997    AtomWearCompanionConnectionState = 921,
25998    AtomMediaActionReported = 608,
25999    AtomMediaControlsLaunched = 609,
26000    AtomMediaSessionStateChanged = 677,
26001    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
26002    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
26003    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
26004    AtomWearModeStateChanged = 715,
26005    AtomRendererInitialized = 736,
26006    AtomSchemaVersionReceived = 737,
26007    AtomLayoutInspected = 741,
26008    AtomLayoutExpressionInspected = 742,
26009    AtomLayoutAnimationsInspected = 743,
26010    AtomMaterialComponentsInspected = 744,
26011    AtomTileRequested = 745,
26012    AtomStateResponseReceived = 746,
26013    AtomTileResponseReceived = 747,
26014    AtomInflationFinished = 748,
26015    AtomInflationFailed = 749,
26016    AtomIgnoredInflationFailuresReported = 750,
26017    AtomDrawableRendered = 751,
26018    AtomWearTimeSyncRequested = 911,
26019    AtomWearTimeUpdateStarted = 912,
26020    AtomWearTimeSyncAttemptCompleted = 913,
26021    AtomWearTimeChanged = 914,
26022    AtomWearAdaptiveSuspendStatsReported = 619,
26023    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
26024    AtomWearPowerAnomalyServiceEventStatsReported = 621,
26025    AtomWsWearTimeSession = 610,
26026    AtomWsIncomingCallActionReported = 626,
26027    AtomWsCallDisconnectionReported = 627,
26028    AtomWsCallDurationReported = 628,
26029    AtomWsCallUserExperienceLatencyReported = 629,
26030    AtomWsCallInteractionReported = 630,
26031    AtomWsOnBodyStateChanged = 787,
26032    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
26033    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
26034    AtomWsComplicationsImpactedNotificationEventReported = 804,
26035    AtomWsRemoteEventUsageReported = 920,
26036    AtomWsBugreportRequested = 936,
26037    AtomWsBugreportTriggered = 937,
26038    AtomWsBugreportFinished = 938,
26039    AtomWsBugreportResultReceived = 939,
26040    AtomWsStandaloneModeSnapshot = 10197,
26041    AtomWsFavoriteWatchFaceSnapshot = 10206,
26042    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
26043    AtomWsWatchFaceCustomizationSnapshot = 10227,
26044    AtomWearPowerMenuOpened = 731,
26045    AtomWearAssistantOpened = 755,
26046    AtomFirstOverlayStateChanged = 917,
26047    AtomWifiAwareNdpReported = 638,
26048    AtomWifiAwareAttachReported = 639,
26049    AtomWifiSelfRecoveryTriggered = 661,
26050    AtomSoftApStarted = 680,
26051    AtomSoftApStopped = 681,
26052    AtomWifiLockReleased = 687,
26053    AtomWifiLockDeactivated = 688,
26054    AtomWifiConfigSaved = 689,
26055    AtomWifiAwareResourceUsingChanged = 690,
26056    AtomWifiAwareHalApiCalled = 691,
26057    AtomWifiLocalOnlyRequestReceived = 692,
26058    AtomWifiLocalOnlyRequestScanTriggered = 693,
26059    AtomWifiThreadTaskExecuted = 694,
26060    AtomWifiStateChanged = 700,
26061    AtomPnoScanStarted = 719,
26062    AtomPnoScanStopped = 720,
26063    AtomWifiIsUnusableReported = 722,
26064    AtomWifiApCapabilitiesReported = 723,
26065    AtomSoftApStateChanged = 805,
26066    AtomScorerPredictionResultReported = 884,
26067    AtomWifiAwareCapabilities = 10190,
26068    AtomWifiModuleInfo = 10193,
26069    AtomWifiSettingInfo = 10194,
26070    AtomWifiComplexSettingInfo = 10195,
26071    AtomWifiConfiguredNetworkInfo = 10198,
26072}
26073impl AtomId {
26074    /// String value of the enum field names used in the ProtoBuf definition.
26075    ///
26076    /// The values are not transformed in any way and thus are considered stable
26077    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26078    pub fn as_str_name(&self) -> &'static str {
26079        match self {
26080            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
26081            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
26082            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
26083            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
26084            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
26085            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
26086            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
26087            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
26088            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
26089            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
26090            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
26091            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
26092            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
26093            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
26094            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
26095            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
26096            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
26097            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
26098            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
26099            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
26100            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
26101            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
26102            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
26103            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
26104            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
26105            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
26106            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
26107            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
26108            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
26109            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
26110            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
26111            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
26112            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
26113            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
26114            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
26115            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
26116            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
26117            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
26118            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
26119            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
26120            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
26121            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
26122            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
26123            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
26124            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
26125            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
26126            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
26127            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
26128            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
26129            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
26130            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
26131            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
26132            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
26133            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
26134            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
26135            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
26136            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
26137            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
26138            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
26139            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
26140            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
26141            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
26142            AtomId::AtomAppDied => "ATOM_APP_DIED",
26143            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
26144            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
26145            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
26146            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
26147            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
26148            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
26149            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
26150            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
26151            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
26152            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
26153            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
26154            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
26155            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
26156            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
26157            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
26158            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
26159            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
26160            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
26161            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
26162            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
26163            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
26164            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
26165            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
26166            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
26167            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
26168            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
26169            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
26170            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
26171            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
26172            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
26173            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
26174            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
26175            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
26176            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
26177            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
26178            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
26179            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
26180            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
26181            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
26182            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
26183            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
26184            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
26185            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
26186            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
26187            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
26188            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
26189            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
26190            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
26191            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
26192            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
26193            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
26194            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
26195            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
26196            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
26197            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
26198            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
26199            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
26200            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
26201            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
26202            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
26203            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
26204            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
26205            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
26206            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
26207            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
26208            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
26209            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
26210            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
26211            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
26212            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
26213            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
26214            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
26215            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
26216            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
26217            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
26218            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
26219            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
26220            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
26221            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
26222            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
26223            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
26224            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
26225            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
26226            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
26227            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
26228            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
26229            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
26230            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
26231            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
26232            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
26233            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
26234            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
26235            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
26236            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
26237            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
26238            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
26239            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
26240            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
26241            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
26242            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
26243            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
26244            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
26245            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
26246            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
26247            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
26248            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
26249            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
26250            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
26251            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
26252            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
26253            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
26254            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
26255            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
26256            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
26257            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
26258            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
26259            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
26260            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
26261            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
26262            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
26263            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
26264            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
26265            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
26266            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
26267            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
26268            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
26269            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
26270            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
26271            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
26272            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
26273            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
26274            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
26275            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
26276            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
26277            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
26278            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
26279            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
26280            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
26281            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
26282            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
26283            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
26284            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
26285            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
26286            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
26287            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
26288            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
26289            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
26290            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
26291            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
26292            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
26293            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
26294            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
26295            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
26296            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
26297            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
26298            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
26299            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
26300            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
26301            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
26302            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
26303            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
26304            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
26305            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
26306            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
26307            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
26308            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
26309            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
26310            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
26311            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
26312            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
26313            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
26314            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
26315            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
26316            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
26317            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
26318            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
26319            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
26320            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
26321            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
26322            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
26323            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
26324            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
26325            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
26326            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
26327            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
26328            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
26329            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
26330            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
26331            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
26332            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
26333            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
26334            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
26335            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
26336            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
26337            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
26338            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
26339            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
26340            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
26341            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
26342            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
26343            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
26344            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
26345            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
26346            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
26347            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
26348            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
26349            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
26350            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
26351            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
26352            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
26353            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
26354            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
26355            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
26356            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
26357            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
26358            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
26359            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
26360            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
26361            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
26362            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
26363            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
26364            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
26365            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
26366            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
26367            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
26368            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
26369            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
26370            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
26371            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
26372            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
26373            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
26374            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
26375            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
26376            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
26377            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
26378            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
26379            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
26380            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
26381            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
26382            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
26383            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
26384            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
26385            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
26386            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
26387            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
26388            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
26389            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
26390            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
26391            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
26392            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
26393            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
26394            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
26395            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
26396            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
26397            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
26398            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
26399            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
26400            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
26401            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
26402            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
26403            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
26404            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
26405            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
26406            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
26407            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
26408            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
26409            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
26410            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
26411            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
26412            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
26413            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
26414            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
26415            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
26416            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
26417            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
26418            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
26419            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
26420            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
26421            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
26422            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
26423            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
26424            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
26425            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
26426            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
26427            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
26428            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
26429            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
26430            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
26431            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
26432            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
26433            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
26434            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
26435            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
26436            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
26437            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
26438            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
26439            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
26440            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
26441            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
26442            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
26443            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
26444            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
26445            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
26446            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
26447            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
26448            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
26449            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
26450            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
26451            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
26452            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
26453            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
26454            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
26455            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
26456            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
26457            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
26458            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
26459            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
26460            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
26461            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
26462            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
26463            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
26464            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
26465            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
26466            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
26467            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
26468            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
26469            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
26470            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
26471            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
26472            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
26473            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
26474            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
26475            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
26476            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
26477            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
26478            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
26479            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
26480            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
26481            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
26482            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
26483            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
26484            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
26485            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
26486            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
26487            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
26488            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
26489            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
26490            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
26491            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
26492            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
26493            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
26494            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
26495            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
26496            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
26497            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
26498            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
26499            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
26500            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
26501            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
26502            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
26503            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
26504            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
26505            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
26506            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
26507            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
26508            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
26509            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
26510            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
26511            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
26512            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
26513            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
26514            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
26515            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
26516            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
26517            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
26518            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
26519            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
26520            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
26521            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
26522            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
26523            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
26524            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
26525            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
26526            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
26527            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
26528            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
26529            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
26530            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
26531            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
26532            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
26533            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
26534            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
26535            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
26536            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
26537            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
26538            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
26539            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
26540            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
26541            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
26542            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
26543            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
26544            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
26545            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
26546            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
26547            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
26548            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
26549            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
26550            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
26551            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
26552            AtomId::AtomVmExited => "ATOM_VM_EXITED",
26553            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
26554            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
26555            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
26556            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
26557            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
26558            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
26559            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
26560            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
26561            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
26562            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
26563            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
26564            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
26565            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
26566            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
26567            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
26568            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
26569            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
26570            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
26571            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
26572            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
26573            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
26574            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
26575            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
26576            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
26577            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
26578            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
26579            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
26580            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
26581            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
26582            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
26583            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
26584            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
26585            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
26586            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
26587            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
26588            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
26589            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
26590            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
26591            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
26592            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
26593            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
26594            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
26595            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
26596            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
26597            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
26598            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
26599            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
26600            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
26601            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
26602            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
26603            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
26604            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
26605            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
26606            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
26607            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
26608            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
26609            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
26610            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
26611            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
26612            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
26613            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
26614            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
26615            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
26616            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
26617            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
26618            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
26619            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
26620            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
26621            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
26622            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
26623            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
26624            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
26625            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
26626            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
26627            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
26628            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
26629            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
26630            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
26631            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
26632            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
26633            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
26634            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
26635            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
26636            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
26637            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
26638            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
26639            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
26640            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
26641            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
26642            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
26643            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
26644            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
26645            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
26646            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
26647            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
26648            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
26649            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
26650            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
26651            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
26652            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
26653            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
26654            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
26655            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
26656            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
26657            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
26658            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
26659            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
26660            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
26661            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
26662            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
26663            AtomId::AtomAppSize => "ATOM_APP_SIZE",
26664            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
26665            AtomId::AtomProcStats => "ATOM_PROC_STATS",
26666            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
26667            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
26668            AtomId::AtomDiskIo => "ATOM_DISK_IO",
26669            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
26670            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
26671            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
26672            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
26673            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
26674            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
26675            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
26676            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
26677            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
26678            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
26679            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
26680            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
26681            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
26682            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
26683            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
26684            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
26685            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
26686            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
26687            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
26688            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
26689            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
26690            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
26691            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
26692            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
26693            AtomId::AtomAppOps => "ATOM_APP_OPS",
26694            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
26695            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
26696            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
26697            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
26698            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
26699            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
26700            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
26701            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
26702            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
26703            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
26704            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
26705            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
26706            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
26707            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
26708            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
26709            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
26710            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
26711            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
26712            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
26713            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
26714            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
26715            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
26716            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
26717            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
26718            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
26719            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
26720            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
26721            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
26722            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
26723            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
26724            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
26725            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
26726            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
26727            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
26728            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
26729            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
26730            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
26731            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
26732            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
26733            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
26734            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
26735            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
26736            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
26737            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
26738            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
26739            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
26740            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
26741            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
26742            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
26743            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
26744            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
26745            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
26746            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
26747            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
26748            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
26749            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
26750            AtomId::AtomVmstat => "ATOM_VMSTAT",
26751            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
26752            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
26753            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
26754            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
26755            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
26756            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
26757            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
26758            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
26759            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
26760            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
26761            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
26762            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
26763            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
26764            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
26765            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
26766            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
26767            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
26768            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
26769            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
26770            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
26771            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
26772            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
26773            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
26774            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
26775            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
26776            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
26777            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
26778            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
26779            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
26780            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
26781            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
26782            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
26783            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
26784            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
26785            AtomId::AtomUserInfo => "ATOM_USER_INFO",
26786            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
26787            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
26788            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
26789            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
26790            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
26791            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
26792            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
26793            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
26794            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
26795            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
26796            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
26797            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
26798            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
26799            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
26800            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
26801            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
26802            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
26803            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
26804            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
26805            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
26806            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
26807            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
26808            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
26809            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
26810            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
26811            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
26812            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
26813            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
26814            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
26815            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
26816            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
26817            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
26818            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
26819            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
26820            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
26821            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
26822            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
26823            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
26824            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
26825            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
26826            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
26827            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
26828            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
26829            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
26830            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
26831            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
26832            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
26833            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26834            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
26835            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26836            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
26837            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
26838            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
26839            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
26840            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
26841            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
26842            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
26843            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
26844            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
26845            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
26846            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
26847            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
26848            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
26849            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
26850            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
26851            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
26852            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
26853            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
26854            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
26855            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
26856            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
26857            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
26858            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
26859            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
26860            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
26861            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
26862            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
26863            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
26864            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
26865            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
26866            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
26867            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
26868            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
26869            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
26870            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
26871            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
26872            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
26873            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
26874            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
26875            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
26876            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
26877            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
26878            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
26879            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
26880            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
26881            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
26882            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
26883            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
26884            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
26885            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
26886            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
26887            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
26888            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
26889            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
26890            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
26891            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
26892            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
26893            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
26894            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
26895            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
26896            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
26897            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
26898            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
26899            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
26900            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
26901            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
26902            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
26903            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
26904            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
26905            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
26906            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
26907            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
26908            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
26909            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
26910            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
26911            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
26912            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
26913            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
26914            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
26915            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
26916            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
26917            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
26918            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
26919            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
26920            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
26921            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
26922            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
26923            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
26924            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
26925            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
26926            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
26927            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
26928            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
26929            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
26930            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
26931            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
26932            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
26933            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
26934            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
26935            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
26936            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
26937            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
26938            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
26939            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
26940            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
26941            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
26942            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
26943            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
26944            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
26945            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
26946            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
26947            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
26948            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
26949            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
26950            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
26951            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
26952            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
26953            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
26954            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
26955            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
26956            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
26957            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
26958            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
26959            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
26960            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
26961            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
26962            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
26963            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
26964            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
26965            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
26966            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
26967            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
26968            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
26969            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
26970            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
26971            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
26972            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
26973            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
26974            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
26975            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
26976            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
26977            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
26978            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
26979            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
26980            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
26981            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
26982            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
26983            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
26984            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
26985            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
26986            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
26987            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
26988            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
26989            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
26990            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
26991            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
26992            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
26993            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
26994            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
26995            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
26996            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
26997            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
26998            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
26999            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
27000            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
27001            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
27002            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
27003            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
27004            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
27005            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
27006            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
27007            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
27008            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
27009            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
27010            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
27011            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
27012            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
27013            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
27014            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
27015            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
27016            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
27017            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
27018            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
27019            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
27020            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
27021            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
27022            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
27023            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
27024            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
27025            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
27026            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
27027            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
27028            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
27029            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
27030            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
27031            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
27032            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
27033            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
27034            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
27035            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
27036            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
27037            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
27038            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
27039            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
27040            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
27041            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
27042            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
27043            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
27044            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
27045            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
27046            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
27047            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
27048            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
27049            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
27050            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
27051            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
27052            AtomId::AtomMteState => "ATOM_MTE_STATE",
27053            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
27054            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
27055            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
27056            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
27057            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
27058            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
27059            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
27060            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
27061            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
27062            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
27063            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
27064            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
27065            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
27066            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
27067            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
27068            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
27069            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
27070            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
27071            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
27072            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
27073            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
27074            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
27075            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
27076            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
27077            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
27078            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
27079            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
27080            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
27081            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
27082            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
27083            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
27084            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
27085            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
27086            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
27087            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
27088            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
27089            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
27090            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
27091            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
27092            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
27093            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
27094            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
27095            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
27096            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
27097            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
27098            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
27099            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
27100            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
27101            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
27102            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
27103            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
27104            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
27105            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
27106            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
27107            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
27108            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
27109            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
27110            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
27111            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
27112            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
27113            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
27114            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
27115            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
27116            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
27117            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
27118            AtomId::AtomCallStats => "ATOM_CALL_STATS",
27119            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
27120            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
27121            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
27122            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
27123            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
27124            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
27125            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
27126            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
27127            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
27128            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
27129            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
27130            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
27131            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
27132            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
27133            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
27134            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
27135            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
27136            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
27137            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
27138            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
27139            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
27140            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
27141            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
27142            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
27143            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
27144            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
27145            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
27146            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
27147            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
27148            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
27149            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
27150            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
27151            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
27152            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
27153            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
27154            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
27155            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
27156            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
27157            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
27158            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
27159            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
27160            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
27161            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
27162            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
27163            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
27164            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
27165            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
27166            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
27167            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
27168            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
27169            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
27170            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
27171            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
27172            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
27173            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
27174            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
27175            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
27176            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
27177            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
27178            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
27179            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
27180            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
27181            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
27182            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
27183            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
27184            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
27185            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
27186            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
27187            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
27188            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
27189            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
27190            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
27191            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
27192            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
27193            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
27194            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
27195            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
27196            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
27197            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
27198            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
27199            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
27200            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
27201            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
27202            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
27203            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
27204            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
27205            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
27206            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
27207            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
27208            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
27209            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
27210            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
27211            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
27212            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
27213            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
27214            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
27215            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
27216            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
27217            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
27218            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
27219            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
27220            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
27221            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
27222            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
27223            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
27224            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
27225            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
27226            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
27227            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
27228            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
27229            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
27230            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
27231            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
27232            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
27233        }
27234    }
27235}
27236// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
27237
27238// Begin of protos/perfetto/common/sys_stats_counters.proto
27239
27240// When editing entries here remember also to update "sys_stats_counters.h" with
27241// the corresponding string definitions for the actual /proc files parser.
27242
27243/// Counter definitions for Linux's /proc/meminfo.
27244#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27245#[repr(i32)]
27246pub enum MeminfoCounters {
27247    MeminfoUnspecified = 0,
27248    MeminfoMemTotal = 1,
27249    MeminfoMemFree = 2,
27250    MeminfoMemAvailable = 3,
27251    MeminfoBuffers = 4,
27252    MeminfoCached = 5,
27253    MeminfoSwapCached = 6,
27254    MeminfoActive = 7,
27255    MeminfoInactive = 8,
27256    MeminfoActiveAnon = 9,
27257    MeminfoInactiveAnon = 10,
27258    MeminfoActiveFile = 11,
27259    MeminfoInactiveFile = 12,
27260    MeminfoUnevictable = 13,
27261    MeminfoMlocked = 14,
27262    MeminfoSwapTotal = 15,
27263    MeminfoSwapFree = 16,
27264    MeminfoDirty = 17,
27265    MeminfoWriteback = 18,
27266    MeminfoAnonPages = 19,
27267    MeminfoMapped = 20,
27268    MeminfoShmem = 21,
27269    MeminfoSlab = 22,
27270    MeminfoSlabReclaimable = 23,
27271    MeminfoSlabUnreclaimable = 24,
27272    MeminfoKernelStack = 25,
27273    MeminfoPageTables = 26,
27274    MeminfoCommitLimit = 27,
27275    MeminfoCommitedAs = 28,
27276    MeminfoVmallocTotal = 29,
27277    MeminfoVmallocUsed = 30,
27278    MeminfoVmallocChunk = 31,
27279    MeminfoCmaTotal = 32,
27280    MeminfoCmaFree = 33,
27281    MeminfoGpu = 34,
27282    MeminfoZram = 35,
27283    MeminfoMisc = 36,
27284    MeminfoIonHeap = 37,
27285    MeminfoIonHeapPool = 38,
27286}
27287impl MeminfoCounters {
27288    /// String value of the enum field names used in the ProtoBuf definition.
27289    ///
27290    /// The values are not transformed in any way and thus are considered stable
27291    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27292    pub fn as_str_name(&self) -> &'static str {
27293        match self {
27294            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
27295            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
27296            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
27297            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
27298            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
27299            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
27300            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
27301            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
27302            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
27303            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
27304            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
27305            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
27306            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
27307            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
27308            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
27309            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
27310            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
27311            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
27312            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
27313            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
27314            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
27315            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
27316            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
27317            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
27318            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
27319            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
27320            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
27321            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
27322            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
27323            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
27324            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
27325            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
27326            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
27327            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
27328            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
27329            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
27330            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
27331            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
27332            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
27333        }
27334    }
27335}
27336/// Counter definitions for Linux's /proc/vmstat.
27337#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27338#[repr(i32)]
27339pub enum VmstatCounters {
27340    VmstatUnspecified = 0,
27341    VmstatNrFreePages = 1,
27342    VmstatNrAllocBatch = 2,
27343    VmstatNrInactiveAnon = 3,
27344    VmstatNrActiveAnon = 4,
27345    VmstatNrInactiveFile = 5,
27346    VmstatNrActiveFile = 6,
27347    VmstatNrUnevictable = 7,
27348    VmstatNrMlock = 8,
27349    VmstatNrAnonPages = 9,
27350    VmstatNrMapped = 10,
27351    VmstatNrFilePages = 11,
27352    VmstatNrDirty = 12,
27353    VmstatNrWriteback = 13,
27354    VmstatNrSlabReclaimable = 14,
27355    VmstatNrSlabUnreclaimable = 15,
27356    VmstatNrPageTablePages = 16,
27357    VmstatNrKernelStack = 17,
27358    VmstatNrOverhead = 18,
27359    VmstatNrUnstable = 19,
27360    VmstatNrBounce = 20,
27361    VmstatNrVmscanWrite = 21,
27362    VmstatNrVmscanImmediateReclaim = 22,
27363    VmstatNrWritebackTemp = 23,
27364    VmstatNrIsolatedAnon = 24,
27365    VmstatNrIsolatedFile = 25,
27366    VmstatNrShmem = 26,
27367    VmstatNrDirtied = 27,
27368    VmstatNrWritten = 28,
27369    VmstatNrPagesScanned = 29,
27370    VmstatWorkingsetRefault = 30,
27371    VmstatWorkingsetActivate = 31,
27372    VmstatWorkingsetNodereclaim = 32,
27373    VmstatNrAnonTransparentHugepages = 33,
27374    VmstatNrFreeCma = 34,
27375    VmstatNrSwapcache = 35,
27376    VmstatNrDirtyThreshold = 36,
27377    VmstatNrDirtyBackgroundThreshold = 37,
27378    VmstatPgpgin = 38,
27379    VmstatPgpgout = 39,
27380    VmstatPgpgoutclean = 40,
27381    VmstatPswpin = 41,
27382    VmstatPswpout = 42,
27383    VmstatPgallocDma = 43,
27384    VmstatPgallocNormal = 44,
27385    VmstatPgallocMovable = 45,
27386    VmstatPgfree = 46,
27387    VmstatPgactivate = 47,
27388    VmstatPgdeactivate = 48,
27389    VmstatPgfault = 49,
27390    VmstatPgmajfault = 50,
27391    VmstatPgrefillDma = 51,
27392    VmstatPgrefillNormal = 52,
27393    VmstatPgrefillMovable = 53,
27394    VmstatPgstealKswapdDma = 54,
27395    VmstatPgstealKswapdNormal = 55,
27396    VmstatPgstealKswapdMovable = 56,
27397    VmstatPgstealDirectDma = 57,
27398    VmstatPgstealDirectNormal = 58,
27399    VmstatPgstealDirectMovable = 59,
27400    VmstatPgscanKswapdDma = 60,
27401    VmstatPgscanKswapdNormal = 61,
27402    VmstatPgscanKswapdMovable = 62,
27403    VmstatPgscanDirectDma = 63,
27404    VmstatPgscanDirectNormal = 64,
27405    VmstatPgscanDirectMovable = 65,
27406    VmstatPgscanDirectThrottle = 66,
27407    VmstatPginodesteal = 67,
27408    VmstatSlabsScanned = 68,
27409    VmstatKswapdInodesteal = 69,
27410    VmstatKswapdLowWmarkHitQuickly = 70,
27411    VmstatKswapdHighWmarkHitQuickly = 71,
27412    VmstatPageoutrun = 72,
27413    VmstatAllocstall = 73,
27414    VmstatPgrotated = 74,
27415    VmstatDropPagecache = 75,
27416    VmstatDropSlab = 76,
27417    VmstatPgmigrateSuccess = 77,
27418    VmstatPgmigrateFail = 78,
27419    VmstatCompactMigrateScanned = 79,
27420    VmstatCompactFreeScanned = 80,
27421    VmstatCompactIsolated = 81,
27422    VmstatCompactStall = 82,
27423    VmstatCompactFail = 83,
27424    VmstatCompactSuccess = 84,
27425    VmstatCompactDaemonWake = 85,
27426    VmstatUnevictablePgsCulled = 86,
27427    VmstatUnevictablePgsScanned = 87,
27428    VmstatUnevictablePgsRescued = 88,
27429    VmstatUnevictablePgsMlocked = 89,
27430    VmstatUnevictablePgsMunlocked = 90,
27431    VmstatUnevictablePgsCleared = 91,
27432    VmstatUnevictablePgsStranded = 92,
27433    VmstatNrZspages = 93,
27434    VmstatNrIonHeap = 94,
27435    VmstatNrGpuHeap = 95,
27436    VmstatAllocstallDma = 96,
27437    VmstatAllocstallMovable = 97,
27438    VmstatAllocstallNormal = 98,
27439    VmstatCompactDaemonFreeScanned = 99,
27440    VmstatCompactDaemonMigrateScanned = 100,
27441    VmstatNrFastrpc = 101,
27442    VmstatNrIndirectlyReclaimable = 102,
27443    VmstatNrIonHeapPool = 103,
27444    VmstatNrKernelMiscReclaimable = 104,
27445    VmstatNrShadowCallStackBytes = 105,
27446    VmstatNrShmemHugepages = 106,
27447    VmstatNrShmemPmdmapped = 107,
27448    VmstatNrUnreclaimablePages = 108,
27449    VmstatNrZoneActiveAnon = 109,
27450    VmstatNrZoneActiveFile = 110,
27451    VmstatNrZoneInactiveAnon = 111,
27452    VmstatNrZoneInactiveFile = 112,
27453    VmstatNrZoneUnevictable = 113,
27454    VmstatNrZoneWritePending = 114,
27455    VmstatOomKill = 115,
27456    VmstatPglazyfree = 116,
27457    VmstatPglazyfreed = 117,
27458    VmstatPgrefill = 118,
27459    VmstatPgscanDirect = 119,
27460    VmstatPgscanKswapd = 120,
27461    VmstatPgskipDma = 121,
27462    VmstatPgskipMovable = 122,
27463    VmstatPgskipNormal = 123,
27464    VmstatPgstealDirect = 124,
27465    VmstatPgstealKswapd = 125,
27466    VmstatSwapRa = 126,
27467    VmstatSwapRaHit = 127,
27468    VmstatWorkingsetRestore = 128,
27469    VmstatAllocstallDevice = 129,
27470    VmstatAllocstallDma32 = 130,
27471    VmstatBalloonDeflate = 131,
27472    VmstatBalloonInflate = 132,
27473    VmstatBalloonMigrate = 133,
27474    VmstatCmaAllocFail = 134,
27475    VmstatCmaAllocSuccess = 135,
27476    VmstatNrFileHugepages = 136,
27477    VmstatNrFilePmdmapped = 137,
27478    VmstatNrFollPinAcquired = 138,
27479    VmstatNrFollPinReleased = 139,
27480    VmstatNrSecPageTablePages = 140,
27481    VmstatNrShadowCallStack = 141,
27482    VmstatNrSwapcached = 142,
27483    VmstatNrThrottledWritten = 143,
27484    VmstatPgallocDevice = 144,
27485    VmstatPgallocDma32 = 145,
27486    VmstatPgdemoteDirect = 146,
27487    VmstatPgdemoteKswapd = 147,
27488    VmstatPgreuse = 148,
27489    VmstatPgscanAnon = 149,
27490    VmstatPgscanFile = 150,
27491    VmstatPgskipDevice = 151,
27492    VmstatPgskipDma32 = 152,
27493    VmstatPgstealAnon = 153,
27494    VmstatPgstealFile = 154,
27495    VmstatThpCollapseAlloc = 155,
27496    VmstatThpCollapseAllocFailed = 156,
27497    VmstatThpDeferredSplitPage = 157,
27498    VmstatThpFaultAlloc = 158,
27499    VmstatThpFaultFallback = 159,
27500    VmstatThpFaultFallbackCharge = 160,
27501    VmstatThpFileAlloc = 161,
27502    VmstatThpFileFallback = 162,
27503    VmstatThpFileFallbackCharge = 163,
27504    VmstatThpFileMapped = 164,
27505    VmstatThpMigrationFail = 165,
27506    VmstatThpMigrationSplit = 166,
27507    VmstatThpMigrationSuccess = 167,
27508    VmstatThpScanExceedNonePte = 168,
27509    VmstatThpScanExceedSharePte = 169,
27510    VmstatThpScanExceedSwapPte = 170,
27511    VmstatThpSplitPage = 171,
27512    VmstatThpSplitPageFailed = 172,
27513    VmstatThpSplitPmd = 173,
27514    VmstatThpSwpout = 174,
27515    VmstatThpSwpoutFallback = 175,
27516    VmstatThpZeroPageAlloc = 176,
27517    VmstatThpZeroPageAllocFailed = 177,
27518    VmstatVmaLockAbort = 178,
27519    VmstatVmaLockMiss = 179,
27520    VmstatVmaLockRetry = 180,
27521    VmstatVmaLockSuccess = 181,
27522    VmstatWorkingsetActivateAnon = 182,
27523    VmstatWorkingsetActivateFile = 183,
27524    VmstatWorkingsetNodes = 184,
27525    VmstatWorkingsetRefaultAnon = 185,
27526    VmstatWorkingsetRefaultFile = 186,
27527    VmstatWorkingsetRestoreAnon = 187,
27528    VmstatWorkingsetRestoreFile = 188,
27529}
27530impl VmstatCounters {
27531    /// String value of the enum field names used in the ProtoBuf definition.
27532    ///
27533    /// The values are not transformed in any way and thus are considered stable
27534    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27535    pub fn as_str_name(&self) -> &'static str {
27536        match self {
27537            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
27538            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
27539            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
27540            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
27541            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
27542            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
27543            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
27544            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
27545            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
27546            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
27547            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
27548            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
27549            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
27550            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
27551            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
27552            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
27553            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
27554            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
27555            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
27556            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
27557            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
27558            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
27559            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
27560            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
27561            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
27562            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
27563            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
27564            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
27565            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
27566            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
27567            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
27568            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
27569            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
27570            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
27571            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
27572            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
27573            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
27574            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
27575            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
27576            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
27577            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
27578            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
27579            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
27580            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
27581            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
27582            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
27583            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
27584            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
27585            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
27586            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
27587            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
27588            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
27589            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
27590            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
27591            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
27592            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
27593            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
27594            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
27595            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
27596            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
27597            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
27598            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
27599            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
27600            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
27601            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
27602            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
27603            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
27604            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
27605            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
27606            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
27607            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
27608            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
27609            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
27610            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
27611            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
27612            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
27613            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
27614            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
27615            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
27616            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
27617            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
27618            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
27619            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
27620            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
27621            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
27622            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
27623            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
27624            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
27625            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
27626            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
27627            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
27628            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
27629            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
27630            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
27631            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
27632            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
27633            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
27634            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
27635            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
27636            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
27637            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
27638            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
27639            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
27640            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
27641            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
27642            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
27643            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
27644            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
27645            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
27646            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
27647            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
27648            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
27649            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
27650            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
27651            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
27652            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
27653            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
27654            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
27655            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
27656            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
27657            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
27658            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
27659            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
27660            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
27661            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
27662            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
27663            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
27664            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
27665            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
27666            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
27667            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
27668            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
27669            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
27670            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
27671            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
27672            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
27673            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
27674            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
27675            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
27676            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
27677            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
27678            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
27679            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
27680            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
27681            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
27682            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
27683            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
27684            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
27685            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
27686            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
27687            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
27688            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
27689            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
27690            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
27691            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
27692            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
27693            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
27694            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
27695            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
27696            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
27697            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
27698            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
27699            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
27700            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
27701            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
27702            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
27703            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
27704            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
27705            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
27706            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
27707            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
27708            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
27709            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
27710            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
27711            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
27712            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
27713            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
27714            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
27715            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
27716            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
27717            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
27718            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
27719            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
27720            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
27721            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
27722            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
27723            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
27724            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
27725            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
27726        }
27727    }
27728}
27729#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27730#[repr(i32)]
27731pub enum FtraceParseStatus {
27732    FtraceStatusUnspecified = 0,
27733    /// Not written, used for convenience of implementation:
27734    FtraceStatusOk = 1,
27735    /// Issues with reading data out of the ftrace ring buffer:
27736    FtraceStatusUnexpectedReadError = 2,
27737    FtraceStatusPartialPageRead = 3,
27738    /// Ring buffer binary data not matching our understanding of the layout:
27739    FtraceStatusAbiInvalidPageHeader = 4,
27740    FtraceStatusAbiShortEventHeader = 5,
27741    FtraceStatusAbiNullPadding = 6,
27742    FtraceStatusAbiShortPaddingLength = 7,
27743    FtraceStatusAbiInvalidPaddingLength = 8,
27744    FtraceStatusAbiShortTimeExtend = 9,
27745    FtraceStatusAbiShortTimeStamp = 10,
27746    FtraceStatusAbiShortDataLength = 11,
27747    FtraceStatusAbiZeroDataLength = 12,
27748    FtraceStatusAbiInvalidDataLength = 13,
27749    FtraceStatusAbiShortEventId = 14,
27750    FtraceStatusAbiEndOverflow = 15,
27751    /// Issues with parsing the event payload:
27752    FtraceStatusShortCompactEvent = 16,
27753    FtraceStatusInvalidEvent = 17,
27754}
27755impl FtraceParseStatus {
27756    /// String value of the enum field names used in the ProtoBuf definition.
27757    ///
27758    /// The values are not transformed in any way and thus are considered stable
27759    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27760    pub fn as_str_name(&self) -> &'static str {
27761        match self {
27762            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
27763            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
27764            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
27765            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
27766            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
27767            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
27768            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
27769            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
27770            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
27771            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
27772            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
27773            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
27774            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
27775            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
27776            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
27777            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
27778            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
27779            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
27780        }
27781    }
27782}
27783#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27784#[repr(i32)]
27785pub enum FtraceClock {
27786    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
27787    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
27788    Unspecified = 0,
27789    Unknown = 1,
27790    Global = 2,
27791    Local = 3,
27792    MonoRaw = 4,
27793}
27794impl FtraceClock {
27795    /// String value of the enum field names used in the ProtoBuf definition.
27796    ///
27797    /// The values are not transformed in any way and thus are considered stable
27798    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27799    pub fn as_str_name(&self) -> &'static str {
27800        match self {
27801            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
27802            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
27803            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
27804            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
27805            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
27806        }
27807    }
27808}
27809// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
27810
27811// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
27812
27813// Describes Chrome's Compositor scheduler's current state and associated
27814// variables.
27815//
27816// These protos and enums were adapted from the corresponding original JSON
27817// trace event for the scheduler state. In contrast to the JSON, we use strongly
27818// typed enum values instead of strings for many fields, and
27819// microsecond-granularity timestamps.
27820//
27821// The original format was generated in JSON by the code at
27822// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
27823//
27824// And is now generated as protozero:
27825// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
27826//
27827// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
27828
27829#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27830#[repr(i32)]
27831pub enum ChromeCompositorSchedulerAction {
27832    CcSchedulerActionUnspecified = 0,
27833    CcSchedulerActionNone = 1,
27834    CcSchedulerActionSendBeginMainFrame = 2,
27835    CcSchedulerActionCommit = 3,
27836    CcSchedulerActionActivateSyncTree = 4,
27837    CcSchedulerActionDrawIfPossible = 5,
27838    CcSchedulerActionDrawForced = 6,
27839    CcSchedulerActionDrawAbort = 7,
27840    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
27841    CcSchedulerActionPrepareTiles = 9,
27842    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
27843    CcSchedulerActionPerformImplSideInvalidation = 11,
27844    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
27845    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
27846}
27847impl ChromeCompositorSchedulerAction {
27848    /// String value of the enum field names used in the ProtoBuf definition.
27849    ///
27850    /// The values are not transformed in any way and thus are considered stable
27851    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27852    pub fn as_str_name(&self) -> &'static str {
27853        match self {
27854            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
27855            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
27856            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
27857            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
27858            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
27859            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
27860            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
27861            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
27862            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
27863            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
27864            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
27865            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
27866            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
27867            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
27868        }
27869    }
27870}
27871// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
27872
27873// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
27874
27875// Describes the state of the RendererScheduler for a given Renderer Process.
27876
27877/// RAIL Mode is an indication of the kind of work that a Renderer is currently
27878/// performing which is in turn used to prioritise work accordingly.
27879/// A fuller description of these modes can be found <https://web.dev/rail/>
27880#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27881#[repr(i32)]
27882pub enum ChromeRailMode {
27883    RailModeNone = 0,
27884    RailModeResponse = 1,
27885    RailModeAnimation = 2,
27886    RailModeIdle = 3,
27887    RailModeLoad = 4,
27888}
27889impl ChromeRailMode {
27890    /// String value of the enum field names used in the ProtoBuf definition.
27891    ///
27892    /// The values are not transformed in any way and thus are considered stable
27893    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27894    pub fn as_str_name(&self) -> &'static str {
27895        match self {
27896            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
27897            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
27898            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
27899            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
27900            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
27901        }
27902    }
27903}