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(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
77        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
78    }
79    /// Nested message and enum types in `GpuCounterSpec`.
80    pub mod gpu_counter_spec {
81        #[derive(Clone, PartialEq, ::prost::Oneof)]
82        pub enum PeakValue {
83            #[prost(int64, tag="5")]
84            IntPeakValue(i64),
85            #[prost(double, tag="6")]
86            DoublePeakValue(f64),
87        }
88    }
89    /// Allow producer to group counters into block to represent counter islands.
90    /// A capacity may be specified to indicate the number of counters that can be
91    /// enable simultaneously in that block.
92    #[derive(Clone, PartialEq, ::prost::Message)]
93    pub struct GpuCounterBlock {
94        /// required. Unique ID for the counter group.
95        #[prost(uint32, optional, tag="1")]
96        pub block_id: ::core::option::Option<u32>,
97        /// optional. Number of counters supported by the block. No limit if unset.
98        #[prost(uint32, optional, tag="2")]
99        pub block_capacity: ::core::option::Option<u32>,
100        /// optional. Name of block.
101        #[prost(string, optional, tag="3")]
102        pub name: ::core::option::Option<::prost::alloc::string::String>,
103        /// optional. Description for the block.
104        #[prost(string, optional, tag="4")]
105        pub description: ::core::option::Option<::prost::alloc::string::String>,
106        /// list of counters that are part of the block.
107        #[prost(uint32, repeated, packed="false", tag="5")]
108        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
109    }
110    /// Allow producer to define custom counter groups. Unlike the fixed
111    /// GpuCounterGroup enum (which provides broad categories), these groups
112    /// let the producer define hardware-specific groupings that the UI uses
113    /// to organize counter tracks. Can also be used to provide display names
114    /// and descriptions for the fixed GpuCounterGroup enum values by setting
115    /// group_id to the enum value.
116    #[derive(Clone, PartialEq, ::prost::Message)]
117    pub struct GpuCounterGroupSpec {
118        /// required. Unique ID for this group within the descriptor.
119        #[prost(uint32, optional, tag="1")]
120        pub group_id: ::core::option::Option<u32>,
121        /// optional. Display name for the group.
122        #[prost(string, optional, tag="2")]
123        pub name: ::core::option::Option<::prost::alloc::string::String>,
124        /// optional. Description of the group.
125        #[prost(string, optional, tag="3")]
126        pub description: ::core::option::Option<::prost::alloc::string::String>,
127        /// Counters that belong directly to this group (by counter_id).
128        #[prost(uint32, repeated, packed="false", tag="4")]
129        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
130    }
131    /// Logical groups for a counter.  This is used in the UI to present the
132    /// related counters together.
133    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
134    #[repr(i32)]
135    pub enum GpuCounterGroup {
136        Unclassified = 0,
137        System = 1,
138        Vertices = 2,
139        Fragments = 3,
140        Primitives = 4,
141        /// Includes counters relating to caching and bandwidth.
142        Memory = 5,
143        Compute = 6,
144        RayTracing = 7,
145    }
146    impl GpuCounterGroup {
147        /// String value of the enum field names used in the ProtoBuf definition.
148        ///
149        /// The values are not transformed in any way and thus are considered stable
150        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
151        pub fn as_str_name(&self) -> &'static str {
152            match self {
153                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
154                GpuCounterGroup::System => "SYSTEM",
155                GpuCounterGroup::Vertices => "VERTICES",
156                GpuCounterGroup::Fragments => "FRAGMENTS",
157                GpuCounterGroup::Primitives => "PRIMITIVES",
158                GpuCounterGroup::Memory => "MEMORY",
159                GpuCounterGroup::Compute => "COMPUTE",
160                GpuCounterGroup::RayTracing => "RAY_TRACING",
161            }
162        }
163    }
164    /// next id: 41
165    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
166    #[repr(i32)]
167    pub enum MeasureUnit {
168        None = 0,
169        Bit = 1,
170        Kilobit = 2,
171        Megabit = 3,
172        Gigabit = 4,
173        Terabit = 5,
174        Petabit = 6,
175        Byte = 7,
176        Kilobyte = 8,
177        Megabyte = 9,
178        Gigabyte = 10,
179        Terabyte = 11,
180        Petabyte = 12,
181        Hertz = 13,
182        Kilohertz = 14,
183        Megahertz = 15,
184        Gigahertz = 16,
185        Terahertz = 17,
186        Petahertz = 18,
187        Nanosecond = 19,
188        Microsecond = 20,
189        Millisecond = 21,
190        Second = 22,
191        Minute = 23,
192        Hour = 24,
193        Vertex = 25,
194        Pixel = 26,
195        Triangle = 27,
196        Primitive = 38,
197        Fragment = 39,
198        Milliwatt = 28,
199        Watt = 29,
200        Kilowatt = 30,
201        Joule = 31,
202        Volt = 32,
203        Ampere = 33,
204        Celsius = 34,
205        Fahrenheit = 35,
206        Kelvin = 36,
207        /// Values should be out of 100.
208        Percent = 37,
209        Instruction = 40,
210    }
211    impl MeasureUnit {
212        /// String value of the enum field names used in the ProtoBuf definition.
213        ///
214        /// The values are not transformed in any way and thus are considered stable
215        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
216        pub fn as_str_name(&self) -> &'static str {
217            match self {
218                MeasureUnit::None => "NONE",
219                MeasureUnit::Bit => "BIT",
220                MeasureUnit::Kilobit => "KILOBIT",
221                MeasureUnit::Megabit => "MEGABIT",
222                MeasureUnit::Gigabit => "GIGABIT",
223                MeasureUnit::Terabit => "TERABIT",
224                MeasureUnit::Petabit => "PETABIT",
225                MeasureUnit::Byte => "BYTE",
226                MeasureUnit::Kilobyte => "KILOBYTE",
227                MeasureUnit::Megabyte => "MEGABYTE",
228                MeasureUnit::Gigabyte => "GIGABYTE",
229                MeasureUnit::Terabyte => "TERABYTE",
230                MeasureUnit::Petabyte => "PETABYTE",
231                MeasureUnit::Hertz => "HERTZ",
232                MeasureUnit::Kilohertz => "KILOHERTZ",
233                MeasureUnit::Megahertz => "MEGAHERTZ",
234                MeasureUnit::Gigahertz => "GIGAHERTZ",
235                MeasureUnit::Terahertz => "TERAHERTZ",
236                MeasureUnit::Petahertz => "PETAHERTZ",
237                MeasureUnit::Nanosecond => "NANOSECOND",
238                MeasureUnit::Microsecond => "MICROSECOND",
239                MeasureUnit::Millisecond => "MILLISECOND",
240                MeasureUnit::Second => "SECOND",
241                MeasureUnit::Minute => "MINUTE",
242                MeasureUnit::Hour => "HOUR",
243                MeasureUnit::Vertex => "VERTEX",
244                MeasureUnit::Pixel => "PIXEL",
245                MeasureUnit::Triangle => "TRIANGLE",
246                MeasureUnit::Primitive => "PRIMITIVE",
247                MeasureUnit::Fragment => "FRAGMENT",
248                MeasureUnit::Milliwatt => "MILLIWATT",
249                MeasureUnit::Watt => "WATT",
250                MeasureUnit::Kilowatt => "KILOWATT",
251                MeasureUnit::Joule => "JOULE",
252                MeasureUnit::Volt => "VOLT",
253                MeasureUnit::Ampere => "AMPERE",
254                MeasureUnit::Celsius => "CELSIUS",
255                MeasureUnit::Fahrenheit => "FAHRENHEIT",
256                MeasureUnit::Kelvin => "KELVIN",
257                MeasureUnit::Percent => "PERCENT",
258                MeasureUnit::Instruction => "INSTRUCTION",
259            }
260        }
261    }
262}
263// End of protos/perfetto/common/gpu_counter_descriptor.proto
264
265// Begin of protos/perfetto/common/track_event_descriptor.proto
266
267#[derive(Clone, PartialEq, ::prost::Message)]
268pub struct TrackEventCategory {
269    #[prost(string, optional, tag="1")]
270    pub name: ::core::option::Option<::prost::alloc::string::String>,
271    #[prost(string, optional, tag="2")]
272    pub description: ::core::option::Option<::prost::alloc::string::String>,
273    #[prost(string, repeated, tag="3")]
274    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
275}
276#[derive(Clone, PartialEq, ::prost::Message)]
277pub struct TrackEventDescriptor {
278    #[prost(message, repeated, tag="1")]
279    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
280}
281// End of protos/perfetto/common/track_event_descriptor.proto
282
283// Begin of protos/perfetto/protovm/vm_program.proto
284
285#[derive(Clone, PartialEq, ::prost::Message)]
286pub struct VmProgram {
287    #[prost(uint32, optional, tag="1")]
288    pub version: ::core::option::Option<u32>,
289    #[prost(message, repeated, tag="2")]
290    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
291}
292#[derive(Clone, PartialEq, ::prost::Message)]
293pub struct VmInstruction {
294    #[prost(enumeration="vm_instruction::AbortLevel", optional, tag="6")]
295    pub abort_level: ::core::option::Option<i32>,
296    /// Sub-instructions executed if the current instruction succeeds
297    #[prost(message, repeated, tag="7")]
298    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
299    #[prost(oneof="vm_instruction::Operation", tags="1, 2, 3, 4, 5")]
300    pub operation: ::core::option::Option<vm_instruction::Operation>,
301}
302/// Nested message and enum types in `VmInstruction`.
303pub mod vm_instruction {
304    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
305    #[repr(i32)]
306    pub enum AbortLevel {
307        /// Skip current instruction but execute following ones
308        SkipCurrentInstruction = 1,
309        /// Skip current instruction as well as following ones (default)
310        SkipCurrentInstructionAndBreakOuter = 2,
311        /// Abort whole program
312        Abort = 3,
313    }
314    impl AbortLevel {
315        /// String value of the enum field names used in the ProtoBuf definition.
316        ///
317        /// The values are not transformed in any way and thus are considered stable
318        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
319        pub fn as_str_name(&self) -> &'static str {
320            match self {
321                AbortLevel::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
322                AbortLevel::SkipCurrentInstructionAndBreakOuter => "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER",
323                AbortLevel::Abort => "ABORT",
324            }
325        }
326    }
327    #[derive(Clone, PartialEq, ::prost::Oneof)]
328    pub enum Operation {
329        #[prost(message, tag="1")]
330        Select(super::VmOpSelect),
331        #[prost(message, tag="2")]
332        RegLoad(super::VmOpRegLoad),
333        #[prost(message, tag="3")]
334        Merge(super::VmOpMerge),
335        #[prost(message, tag="4")]
336        Set(super::VmOpSet),
337        #[prost(message, tag="5")]
338        Del(super::VmOpDel),
339    }
340}
341#[derive(Clone, PartialEq, ::prost::Message)]
342pub struct VmOpSelect {
343    /// Enum SRC|DST|BOTH. Default=SRC.
344    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
345    pub cursor: ::core::option::Option<i32>,
346    #[prost(message, repeated, tag="2")]
347    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
348    /// Creates the submessage if doesn't exist in the DST cursor
349    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
350    #[prost(bool, optional, tag="3")]
351    pub create_if_not_exist: ::core::option::Option<bool>,
352}
353/// Nested message and enum types in `VmOpSelect`.
354pub mod vm_op_select {
355    /// A path component is either: (1) a field id to descend into (common case);
356    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
357    /// repeated fields, where we snoop a sub-field as a map key)
358    #[derive(Clone, PartialEq, ::prost::Message)]
359    pub struct PathComponent {
360        // When we are selecting a leaf field, tell what's the field type
361        // to disambiguate integer types. Using uint64 by default will likely
362        // do the right thing in 99% cases (so probably we don't need to impl
363        // this until much later if somebody does a map with a fixed64 key)
364        // enum ProtoFieldType field_type = 4;  // bool | int32 | fixed32 | ...
365
366        /// Only valid when using field_id. This makes select have foreach
367        /// semantics. This means that the body of nested_instructions is
368        /// executed several times, once per each repeated submessage.
369        #[prost(bool, optional, tag="5")]
370        pub is_repeated: ::core::option::Option<bool>,
371        /// Only valid when using map_key_field_id. This defines which
372        /// register (R1..R32) should be used to match the key of the dict
373        /// in a map lookup operation.
374        /// In other words:
375        /// foreach msg in repeated message {
376        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
377        ///       break;  // Lookup succeeded, PathComponent resolves here.
378        ///    }
379        /// }
380        #[prost(uint32, optional, tag="6")]
381        pub register_to_match: ::core::option::Option<u32>,
382        /// Only valid when using field_id and is_repeated=true. When iterating
383        /// over repeated fields, stores the current iteration index into the
384        /// the register R1..R32 defined below. This can be used to do complex
385        /// operations like "find the entry in the array that has width==100,
386        /// remember its offset in the SRC array and overwrite the matching
387        /// i-th element in the DST array. We will probably never implement
388        /// this but it's here for completeness.
389        #[prost(uint32, optional, tag="7")]
390        pub store_foreach_index_into_register: ::core::option::Option<u32>,
391        #[prost(oneof="path_component::Field", tags="1, 2, 3")]
392        pub field: ::core::option::Option<path_component::Field>,
393    }
394    /// Nested message and enum types in `PathComponent`.
395    pub mod path_component {
396        #[derive(Clone, PartialEq, ::prost::Oneof)]
397        pub enum Field {
398            #[prost(uint32, tag="1")]
399            FieldId(u32),
400            #[prost(uint32, tag="2")]
401            ArrayIndex(u32),
402            /// The ID of the field in the repeated submessage that we
403            /// use as a key (e.g. LayerState.layer_id). When setting this
404            /// register_to_match must also be set, to tell what's the
405            /// expected value of the key we are looking up.
406            #[prost(uint32, tag="3")]
407            MapKeyFieldId(u32),
408        }
409    }
410}
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct VmOpRegLoad {
413    /// SRC(default) | DST.
414    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
415    pub cursor: ::core::option::Option<i32>,
416    /// 1=R1, 2=R2... 32=R32
417    #[prost(uint32, optional, tag="2")]
418    pub dst_register: ::core::option::Option<u32>,
419}
420/// Merges SRC into DST. Both need to point to a message (not a field).
421#[derive(Clone, PartialEq, ::prost::Message)]
422pub struct VmOpMerge {
423    /// When true, the merge operation will skip any field that is already
424    /// resolved as a message node in the destination tree.
425    ///
426    /// This is used to support merging of nested messages. Because ProtoVM
427    /// does not know the schema, a standard MERGE cannot distinguish
428    /// between a string and a message on the wire and it would overwrite
429    /// the entire blob, destroying granular updates.
430    ///
431    /// By setting this to true, a program can be implemented to do a
432    /// bottom-up, multi-step merge by traversing into and merging
433    /// the deepest submessages first, then moving up to the parent
434    /// message and merging it with skip_submessages = true.
435    #[prost(bool, optional, tag="1")]
436    pub skip_submessages: ::core::option::Option<bool>,
437}
438/// Copies SRC into DST. If a message, replaces the DST node, discarding any
439/// pre-existing field.
440#[derive(Clone, PartialEq, ::prost::Message)]
441pub struct VmOpSet {
442}
443/// Delete the field or message pointed by DST.
444#[derive(Clone, PartialEq, ::prost::Message)]
445pub struct VmOpDel {
446}
447// End of protos/perfetto/protovm/vm_program.proto
448
449// Begin of protos/perfetto/common/data_source_descriptor.proto
450
451/// This message is sent from Producer(s) to the tracing Service when registering
452/// to advertise their capabilities. It describes the structure of tracing
453/// protos that will be produced by the data source and the supported filters.
454#[derive(Clone, PartialEq, ::prost::Message)]
455pub struct DataSourceDescriptor {
456    /// e.g., "linux.ftrace", "chromium.tracing"
457    #[prost(string, optional, tag="1")]
458    pub name: ::core::option::Option<::prost::alloc::string::String>,
459    /// When non-zero, this is a unique ID within the scope of the Producer for
460    /// this data source (it is NOT globally unique). This is useful to
461    /// differentiate between data sources with matching names when calling
462    /// UpdateDataSource(). This field has been introduced in November 2021
463    /// (v22, Android T) and is not supported on older versions.
464    #[prost(uint64, optional, tag="7")]
465    pub id: ::core::option::Option<u64>,
466    /// When true the data source is expected to ack the stop request through the
467    /// NotifyDataSourceStopped() IPC. This field has been introduced after
468    /// Android P in Jul 2018 and is not supported on older versions.
469    #[prost(bool, optional, tag="2")]
470    pub will_notify_on_stop: ::core::option::Option<bool>,
471    /// When true the data source is expected to ack the start request through the
472    /// NotifyDataSourceStarted() IPC. This field has been introduced after
473    /// Android P in March 2019 and is not supported on older versions.
474    #[prost(bool, optional, tag="3")]
475    pub will_notify_on_start: ::core::option::Option<bool>,
476    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
477    /// set if the data source writes packets that refer to previous trace
478    /// contents, and knows how to stop referring to the already-emitted data.
479    #[prost(bool, optional, tag="4")]
480    pub handles_incremental_state_clear: ::core::option::Option<bool>,
481    /// If true, indicates that the data source does nothing upon Flush. This
482    /// allows the service to reduce the flush-related IPC traffic and better deal
483    /// with frozen producers (see go/perfetto-frozen). This is usually the case
484    /// for data sources like 'track_event' that don't have access to the various
485    /// thread task runners to post a flush task and rely purely on server-side
486    /// scraping.
487    /// Introduced in v39 / Android V.
488    #[prost(bool, optional, tag="9")]
489    pub no_flush: ::core::option::Option<bool>,
490    /// If present, the tracing service executes this program within a ProtoVM to
491    /// process overwritten packets (patches). The service computes a hash of the
492    /// program to detect and disambiguate between different versions; if multiple
493    /// versions (from different producers) are specified for the same data source,
494    /// the service instantiates a dedicated ProtoVM for each.
495    #[prost(message, optional, tag="10")]
496    pub protovm_program: ::core::option::Option<VmProgram>,
497    /// Optional specification about available GPU counters.
498    #[prost(message, optional, tag="5")]
499    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
500    #[prost(message, optional, tag="6")]
501    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
502    #[prost(message, optional, tag="8")]
503    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
504}
505// End of protos/perfetto/common/data_source_descriptor.proto
506
507// Begin of protos/perfetto/common/tracing_service_state.proto
508
509/// Reports the state of the tracing service. Used to gather details about the
510/// data sources connected.
511/// See ConsumerPort::QueryServiceState().
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct TracingServiceState {
514    /// Lists all the producers connected.
515    #[prost(message, repeated, tag="1")]
516    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
517    /// Lists the data sources available.
518    #[prost(message, repeated, tag="2")]
519    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
520    /// Lists the tracing sessions active AND owned by a consumer that has the same
521    /// UID of the caller (or all of them if the caller is root).
522    /// Introduced in v24 / Android T.
523    #[prost(message, repeated, tag="6")]
524    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
525    /// This is always set to true from v24 and beyond. This flag is only used to
526    /// tell the difference between: (1) talking to a recent service which happens
527    /// to have no tracing session active; (2) talking to an older version of the
528    /// service which will never report any tracing session.
529    #[prost(bool, optional, tag="7")]
530    pub supports_tracing_sessions: ::core::option::Option<bool>,
531    /// Total number of tracing sessions.
532    #[prost(int32, optional, tag="3")]
533    pub num_sessions: ::core::option::Option<i32>,
534    /// Number of tracing sessions in the started state. Always <= num_sessions.
535    #[prost(int32, optional, tag="4")]
536    pub num_sessions_started: ::core::option::Option<i32>,
537    /// The version of traced (the same returned by `traced --version`).
538    /// This is a human readable string with and its format varies depending on
539    /// the build system and the repo (standalone vs AOSP).
540    /// This is intended for human debugging only.
541    #[prost(string, optional, tag="5")]
542    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
543}
544/// Nested message and enum types in `TracingServiceState`.
545pub mod tracing_service_state {
546    /// Describes a producer process.
547    #[derive(Clone, PartialEq, ::prost::Message)]
548    pub struct Producer {
549        /// Unique ID of the producer (monotonic counter).
550        #[prost(int32, optional, tag="1")]
551        pub id: ::core::option::Option<i32>,
552        /// Typically matches the process name.
553        #[prost(string, optional, tag="2")]
554        pub name: ::core::option::Option<::prost::alloc::string::String>,
555        /// Unix pid of the remote process. Supported only on Linux-based systems.
556        /// Introduced in v24 / Android T.
557        #[prost(int32, optional, tag="5")]
558        pub pid: ::core::option::Option<i32>,
559        /// Unix uid of the remote process.
560        #[prost(int32, optional, tag="3")]
561        pub uid: ::core::option::Option<i32>,
562        /// The version of the client library used by the producer.
563        /// This is a human readable string with and its format varies depending on
564        /// the build system and the repo (standalone vs AOSP).
565        /// This is intended for human debugging only.
566        #[prost(string, optional, tag="4")]
567        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
568        /// Returns true if the process appears to be frozen (Android only).
569        /// Introduced in Perfetto V49 / Android 24Q4.
570        #[prost(bool, optional, tag="6")]
571        pub frozen: ::core::option::Option<bool>,
572    }
573    /// Describes a data source registered by a producer. Data sources are listed
574    /// regardless of the fact that they are being used or not.
575    #[derive(Clone, PartialEq, ::prost::Message)]
576    pub struct DataSource {
577        /// Descriptor passed by the data source when calling RegisterDataSource().
578        #[prost(message, optional, tag="1")]
579        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
580        /// ID of the producer, as per Producer.id.
581        #[prost(int32, optional, tag="2")]
582        pub producer_id: ::core::option::Option<i32>,
583    }
584    #[derive(Clone, PartialEq, ::prost::Message)]
585    pub struct TracingSession {
586        /// The TracingSessionID.
587        #[prost(uint64, optional, tag="1")]
588        pub id: ::core::option::Option<u64>,
589        /// The Unix uid of the consumer that started the session.
590        /// This is meaningful only if the caller is root. In all other cases only
591        /// tracing sessions that match the caller UID will be displayed.
592        #[prost(int32, optional, tag="2")]
593        pub consumer_uid: ::core::option::Option<i32>,
594        /// Internal state of the tracing session.
595        /// These strings are FYI only and subjected to change.
596        #[prost(string, optional, tag="3")]
597        pub state: ::core::option::Option<::prost::alloc::string::String>,
598        /// The unique_session_name as set in the trace config (might be empty).
599        #[prost(string, optional, tag="4")]
600        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
601        /// The number and size of each buffer.
602        #[prost(uint32, repeated, packed="false", tag="5")]
603        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
604        /// Duration, as specified in the TraceConfig.duration_ms.
605        #[prost(uint32, optional, tag="6")]
606        pub duration_ms: ::core::option::Option<u32>,
607        /// Number of data sources involved in the session.
608        #[prost(uint32, optional, tag="7")]
609        pub num_data_sources: ::core::option::Option<u32>,
610        /// Time when the session was started, in the CLOCK_REALTIME domain.
611        /// Available only on Linux-based systems.
612        #[prost(int64, optional, tag="8")]
613        pub start_realtime_ns: ::core::option::Option<i64>,
614        // The fields below have been introduced in v42.
615
616        /// The bugreport_score, as set in TraceConfig.bugreport_score.
617        #[prost(int32, optional, tag="9")]
618        pub bugreport_score: ::core::option::Option<i32>,
619        /// As per TraceConfig.bugreport_filename.
620        #[prost(string, optional, tag="10")]
621        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
622        /// If true, the session is in the STARTED state. If false the session is in
623        /// any other state (see `state` field).
624        #[prost(bool, optional, tag="11")]
625        pub is_started: ::core::option::Option<bool>,
626    }
627}
628// End of protos/perfetto/common/semantic_type.proto
629
630// Begin of protos/perfetto/config/android/android_aflags_config.proto
631
632/// Options for the android.aflags data source.
633/// This data source captures snapshots of Android aconfig flags.
634/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
635/// for more information on aconfig flags.
636#[derive(Clone, PartialEq, ::prost::Message)]
637pub struct AndroidAflagsConfig {
638    /// Frequency of polling. If absent or 0, the state will be recorded once,
639    /// at the start of the trace.
640    ///
641    /// It is recommended to either leave this absent or set it to a large
642    /// value as each invocation of the `aflags` tool can be time consuming
643    /// (approx. 350ms) and also triggers an expensive flush. This is required to
644    /// be > 1000ms if set, to avoid excessive CPU usage.
645    #[prost(uint32, optional, tag="1")]
646    pub poll_ms: ::core::option::Option<u32>,
647}
648// End of protos/perfetto/config/android/android_aflags_config.proto
649
650// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
651
652/// Data source that lists game modes and game interventions of games
653/// on an Android device.
654#[derive(Clone, PartialEq, ::prost::Message)]
655pub struct AndroidGameInterventionListConfig {
656    /// If not empty, emit info about only the following list of package names
657    /// (exact match, no regex). Otherwise, emit info about all packages.
658    #[prost(string, repeated, tag="1")]
659    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
660}
661// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
662
663// Begin of protos/perfetto/config/android/android_input_event_config.proto
664
665/// Custom configuration for the "android.input.inputevent" data source.
666///
667/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
668///
669/// Next ID: 5
670#[derive(Clone, PartialEq, ::prost::Message)]
671pub struct AndroidInputEventConfig {
672    /// The tracing mode to use. If unspecified, it will default to
673    /// TRACE_MODE_USE_RULES.
674    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
675    pub mode: ::core::option::Option<i32>,
676    /// The list of rules to use to determine the trace level of events.
677    /// Each event will be traced using the TraceLevel of the first rule that it
678    /// triggers from this list. The rules are evaluated in the order in which they
679    /// are specified. If an event does not match any of the rules,
680    /// TRACE_LEVEL_NONE will be used by default.
681    #[prost(message, repeated, tag="2")]
682    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
683    // --- Control flags ---
684
685    /// Trace input events processed by the system as they are being dispatched
686    /// to application windows. All trace rules will apply.
687    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
688    ///    it will
689    ///      trace InputDispatcher's inbound events (which does not include events
690    ///      synthesized within InputDispatcher) that match the rules.
691    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
692    ///    events
693    ///      matching the rules, including all events synthesized within
694    ///      InputDispatcher, will be traced.
695    #[prost(bool, optional, tag="3")]
696    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
697    /// Trace details about which windows the system is sending each input event
698    /// to. All trace rules will apply.
699    #[prost(bool, optional, tag="4")]
700    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
701}
702/// Nested message and enum types in `AndroidInputEventConfig`.
703pub mod android_input_event_config {
704    /// A rule that specifies the TraceLevel for an event based on matching
705    /// conditions. All matchers in the rule are optional. To trigger this rule, an
706    /// event must match all of its specified matchers (i.e. the matchers function
707    /// like a series of conditions connected by a logical 'AND' operator). A rule
708    /// with no specified matchers will match all events. Next ID: 6
709    #[derive(Clone, PartialEq, ::prost::Message)]
710    pub struct TraceRule {
711        /// The trace level to be used for events that trigger this rule.
712        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
713        #[prost(enumeration="TraceLevel", optional, tag="1")]
714        pub trace_level: ::core::option::Option<i32>,
715        // --- Optional Matchers ---
716
717        /// Package matchers
718        ///
719        /// Respectively matches if all or any of the target apps for this event are
720        /// contained in the specified list of package names.
721        ///
722        /// Intended usage:
723        ///    - Use match_all_packages to selectively allow tracing for the listed
724        ///    packages.
725        ///    - Use match_any_packages to selectively deny tracing for certain
726        ///    packages.
727        ///
728        /// WARNING: Great care must be taken when designing rules for field tracing!
729        ///           This is because each event is almost always sent to more than
730        ///           one app.
731        ///               For example, when allowing tracing for a package that has a
732        ///               spy window
733        ///           over the display (e.g. SystemUI) using match_any_packages,
734        ///           essentially all input will be recorded on that display. This is
735        ///           because the events will be sent to the spy as well as the
736        ///           foreground app, and regardless of what the foreground app is,
737        ///           the event will end up being traced.
738        ///               Alternatively, when attempting to block tracing for specific
739        ///               packages using
740        ///           match_all_packages, no events will likely be blocked. This is
741        ///           because the event will also be sent to other apps (such as, but
742        ///           not limited to, ones with spy windows), so the matcher will not
743        ///           match unless all other targets are also listed under the
744        ///           match_all_packages list.
745        #[prost(string, repeated, tag="2")]
746        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
747        #[prost(string, repeated, tag="3")]
748        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
749        /// Matches if the event is secure, which means that at least one of the
750        /// targets of this event is using the window flag FLAG_SECURE.
751        #[prost(bool, optional, tag="4")]
752        pub match_secure: ::core::option::Option<bool>,
753        /// Matches if there was an active IME connection while this event was being
754        /// processed.
755        #[prost(bool, optional, tag="5")]
756        pub match_ime_connection_active: ::core::option::Option<bool>,
757    }
758    /// Trace modes are tracing presets that are included in the system.
759    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
760    #[repr(i32)]
761    pub enum TraceMode {
762        /// Preset mode for maximal tracing.
763        /// WARNING: This will bypass all privacy measures on debuggable builds, and
764        /// will record all
765        ///           input events processed by the system, regardless of the context
766        ///           in which they were processed. It should only be used for tracing
767        ///           on a local device or for tests. It should NEVER be used for
768        ///           field tracing.
769        TraceAll = 0,
770        /// Use the tracing rules defined in this config to specify what events to
771        /// trace.
772        UseRules = 1,
773    }
774    impl TraceMode {
775        /// String value of the enum field names used in the ProtoBuf definition.
776        ///
777        /// The values are not transformed in any way and thus are considered stable
778        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
779        pub fn as_str_name(&self) -> &'static str {
780            match self {
781                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
782                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
783            }
784        }
785    }
786    /// The level of tracing that should be applied to an event.
787    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
788    #[repr(i32)]
789    pub enum TraceLevel {
790        /// Do not trace the input event.
791        None = 0,
792        /// Trace the event as a redacted event, where certain sensitive fields are
793        /// omitted from the trace, including the coordinates of pointer events and
794        /// the key/scan codes of key events.
795        Redacted = 1,
796        /// Trace the complete event.
797        Complete = 2,
798    }
799    impl TraceLevel {
800        /// String value of the enum field names used in the ProtoBuf definition.
801        ///
802        /// The values are not transformed in any way and thus are considered stable
803        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
804        pub fn as_str_name(&self) -> &'static str {
805            match self {
806                TraceLevel::None => "TRACE_LEVEL_NONE",
807                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
808                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
809            }
810        }
811    }
812}
813// End of protos/perfetto/common/android_log_constants.proto
814
815// Begin of protos/perfetto/config/android/android_log_config.proto
816
817#[derive(Clone, PartialEq, ::prost::Message)]
818pub struct AndroidLogConfig {
819    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
820    pub log_ids: ::prost::alloc::vec::Vec<i32>,
821    /// If set ignores all log messages whose prio is < the given value.
822    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
823    pub min_prio: ::core::option::Option<i32>,
824    /// If non-empty ignores all log messages whose tag doesn't match one of the
825    /// specified values.
826    #[prost(string, repeated, tag="4")]
827    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
828    /// If true, includes the contents of the logcat buffers that were already
829    /// present before the data source started. By default (false), only new
830    /// log entries produced after the data source starts are recorded.
831    /// Can be useful for boot traces or situations where logs from before
832    /// traced started are important.
833    #[prost(bool, optional, tag="5")]
834    pub preserve_log_buffer: ::core::option::Option<bool>,
835}
836// End of protos/perfetto/config/android/android_log_config.proto
837
838// Begin of protos/perfetto/config/android/android_polled_state_config.proto
839
840/// Data source that polls for display state. This should only be used for
841/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
842#[derive(Clone, PartialEq, ::prost::Message)]
843pub struct AndroidPolledStateConfig {
844    /// Frequency of polling. If absent the state will be recorded once, at the
845    /// start of the trace.
846    /// This is required to be > 100ms to avoid excessive CPU usage.
847    #[prost(uint32, optional, tag="1")]
848    pub poll_ms: ::core::option::Option<u32>,
849}
850// End of protos/perfetto/config/android/android_polled_state_config.proto
851
852// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
853
854/// Data source that controls the system properties used to guard initialization
855/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
856/// processes like SurfaceFlinger.
857///
858/// This data source only tells Skia to initialized the Perfetto SDK and start
859/// routing data to the Track Event system instead of ATrace. For those events
860/// to actually show up in a trace, the track_event data source must be used as
861/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
862/// processes may need to be restarted for Skia to revert to using ATrace if
863/// Track Events are no longer desired.
864///
865/// In addition to switching Skia to use Perfetto's track_event data source,
866/// this "guard" also controls Skia's "broad tracing", which removes Skia's
867/// internal tracing constraints and allows the track_event config to specify
868/// which categories should be traced. Filtering to the "skia.always" category
869/// *tag* in a track_event config can be used to re-enable the standard
870/// constraints typically used with ATrace.
871///
872/// Data source name: android.sdk_sysprop_guard
873/// Introduced in Android 14 (U) QPR1.
874/// Next id: 4
875#[derive(Clone, PartialEq, ::prost::Message)]
876pub struct AndroidSdkSyspropGuardConfig {
877    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
878    /// integration with the track_event data source in RenderEngine.
879    /// If false or omitted, the simpler ATrace fallback is used.
880    ///
881    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
882    /// restarted.
883    ///
884    /// Specifically this sets the following system properties:
885    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
886    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
887    ///
888    /// Does not affect actual track_event data *collection*, which must be
889    /// configured separately.
890    #[prost(bool, optional, tag="1")]
891    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
892    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
893    /// with the track_event data source. hwui_package_name_filter
894    /// can be used to control which apps are affected.
895    /// If false or omitted, the simpler ATrace fallback is used.
896    ///
897    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
898    /// restarted.
899    ///
900    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
901    /// If filtering is NOT set, this controls these GLOBAL system properties:
902    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
903    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
904    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
905    /// for each package listed in the filter:
906    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
907    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
908    ///
909    /// Does not affect actual track_event data *collection*, which must be
910    /// configured separately.
911    #[prost(bool, optional, tag="2")]
912    pub hwui_skia_track_events: ::core::option::Option<bool>,
913    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
914    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
915    #[prost(string, repeated, tag="3")]
916    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
917}
918// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
919
920// Begin of protos/perfetto/config/android/android_system_property_config.proto
921
922/// Data source that polls for system properties.
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct AndroidSystemPropertyConfig {
925    /// Frequency of polling. If absent the state will be recorded once, at the
926    /// start of the trace.
927    /// This is required to be > 100ms to avoid excessive CPU usage.
928    #[prost(uint32, optional, tag="1")]
929    pub poll_ms: ::core::option::Option<u32>,
930    /// Properties to poll. All property names must start with "debug.tracing.".
931    #[prost(string, repeated, tag="2")]
932    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
933}
934// End of protos/perfetto/config/android/android_system_property_config.proto
935
936// Begin of protos/perfetto/config/android/app_wakelock_config.proto
937
938/// Configuration for the android.app_wakelocks data source.
939#[derive(Clone, PartialEq, ::prost::Message)]
940pub struct AppWakelocksConfig {
941    /// Specifies the delay (in milliseconds) after which the data source will
942    /// attempt to write events. Writing less frequently reduces the trace size by
943    /// making better use of the packed arrays and reducing the total number of
944    /// TracePackets needed (which each have dozens of bytes of overhead). The
945    /// suggested delay is 5000ms.
946    #[prost(int32, optional, tag="1")]
947    pub write_delay_ms: ::core::option::Option<i32>,
948    /// When set, wakelocks held for less than this amount of time are filtered
949    /// from the resulting trace. Note: duration is computed by matching wakelocks
950    /// with identical attributes, not by tracking the underlying objects. The
951    /// threshold should be < the trace's flush_period_ms.
952    #[prost(int32, optional, tag="2")]
953    pub filter_duration_below_ms: ::core::option::Option<i32>,
954    /// When true, the owner_pid is dropped from the resulting output, reducing the
955    /// size of the interning tables.
956    #[prost(bool, optional, tag="3")]
957    pub drop_owner_pid: ::core::option::Option<bool>,
958}
959// End of protos/perfetto/config/android/app_wakelock_config.proto
960
961// Begin of protos/perfetto/config/android/cpu_per_uid_config.proto
962
963/// Data source that records CPU per UID data.
964#[derive(Clone, PartialEq, ::prost::Message)]
965pub struct CpuPerUidConfig {
966    /// Record at this frequency.
967    #[prost(uint32, optional, tag="1")]
968    pub poll_ms: ::core::option::Option<u32>,
969}
970// End of protos/perfetto/config/android/cpu_per_uid_config.proto
971
972// Begin of protos/perfetto/config/android/inputmethod_config.proto
973
974/// Custom configuration for the "android.inputmethod" data source.
975#[derive(Clone, PartialEq, ::prost::Message)]
976pub struct InputMethodConfig {
977    /// If true, enables tracing in the clients.
978    #[prost(bool, optional, tag="1")]
979    pub client: ::core::option::Option<bool>,
980    /// If true, enables tracing in InputMethodService.
981    #[prost(bool, optional, tag="2")]
982    pub service: ::core::option::Option<bool>,
983    /// If true, enables tracing in InputMethodManagerService.
984    #[prost(bool, optional, tag="3")]
985    pub manager_service: ::core::option::Option<bool>,
986}
987// End of protos/perfetto/config/android/inputmethod_config.proto
988
989// Begin of protos/perfetto/config/android/kernel_wakelocks_config.proto
990
991/// Data source that records kernel (and native) wakelock data.
992#[derive(Clone, PartialEq, ::prost::Message)]
993pub struct KernelWakelocksConfig {
994    /// Record at this frequency.
995    #[prost(uint32, optional, tag="1")]
996    pub poll_ms: ::core::option::Option<u32>,
997}
998// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
999
1000// Begin of protos/perfetto/config/android/network_trace_config.proto
1001
1002/// Network tracing data source that records details on all packets sent or
1003/// received by the network.
1004#[derive(Clone, PartialEq, ::prost::Message)]
1005pub struct NetworkPacketTraceConfig {
1006    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1007    /// ring buffer. The polling interval should be such that the ring buffer is
1008    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1009    /// The minimum polling rate is 100ms (values below this are ignored).
1010    /// Introduced in Android 14 (U).
1011    #[prost(uint32, optional, tag="1")]
1012    pub poll_ms: ::core::option::Option<u32>,
1013    /// The aggregation_threshold is the number of packets at which an event will
1014    /// switch from per-packet details to aggregate details. For example, a value
1015    /// of 50 means that if a particular event (grouped by the unique combinations
1016    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1017    /// packets, the exact timestamp and length are recorded for each packet. If
1018    /// there were 50 or more packets in an event, it would only record the total
1019    /// duration, packets, and length. A value of zero or unspecified will always
1020    /// / record per-packet details. A value of 1 always records aggregate details.
1021    #[prost(uint32, optional, tag="2")]
1022    pub aggregation_threshold: ::core::option::Option<u32>,
1023    /// Specifies the maximum number of packet contexts to intern at a time. This
1024    /// prevents the interning table from growing too large and controls whether
1025    /// interning is enabled or disabled (a value of zero disables interning and
1026    /// is the default). When a data sources interning table reaches this amount,
1027    /// packet contexts will be inlined into NetworkPacketEvents.
1028    #[prost(uint32, optional, tag="3")]
1029    pub intern_limit: ::core::option::Option<u32>,
1030    /// The following fields specify whether certain fields should be dropped from
1031    /// the output. Dropping fields improves normalization results, reduces the
1032    /// size of the interning table, and slightly reduces event size.
1033    #[prost(bool, optional, tag="4")]
1034    pub drop_local_port: ::core::option::Option<bool>,
1035    #[prost(bool, optional, tag="5")]
1036    pub drop_remote_port: ::core::option::Option<bool>,
1037    #[prost(bool, optional, tag="6")]
1038    pub drop_tcp_flags: ::core::option::Option<bool>,
1039}
1040// End of protos/perfetto/config/android/network_trace_config.proto
1041
1042// Begin of protos/perfetto/config/android/packages_list_config.proto
1043
1044/// Data source that lists details (such as version code) about packages on an
1045/// Android device.
1046#[derive(Clone, PartialEq, ::prost::Message)]
1047pub struct PackagesListConfig {
1048    /// If not empty, emit info about only the following list of package names
1049    /// (exact match, no regex). Can be combined with
1050    /// |package_name_regex_filter|: a package is included if it matches either
1051    /// filter. If both filters are empty, emit info about all packages.
1052    #[prost(string, repeated, tag="1")]
1053    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1054    /// If not empty, emit info about only the packages whose names match any of
1055    /// the following regexes (full match, not partial). Can be combined with
1056    /// |package_name_filter|: a package is included if it matches either filter.
1057    /// If both filters are empty, emit info about all packages.
1058    /// This field was introduced in Android 26Q2 (Perfetto v55).
1059    #[prost(string, repeated, tag="3")]
1060    pub package_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1061    /// If present and non-zero, the data source will periodically poll for CPU
1062    /// use by packages and only emit results for those that it sees. If absent,
1063    /// the data source will emit results for all packages at startup. The package
1064    /// name filters apply either way.
1065    #[prost(uint32, optional, tag="2")]
1066    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1067}
1068// End of protos/perfetto/config/android/packages_list_config.proto
1069
1070// Begin of protos/perfetto/config/android/pixel_modem_config.proto
1071
1072/// Data source that records events from the modem.
1073#[derive(Clone, PartialEq, ::prost::Message)]
1074pub struct PixelModemConfig {
1075    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
1076    pub event_group: ::core::option::Option<i32>,
1077    /// If set, record only events with these hashes.
1078    #[prost(int64, repeated, packed="false", tag="2")]
1079    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1080    /// If set and allow_list is not set, deny events with these hashes.
1081    #[prost(int64, repeated, packed="false", tag="3")]
1082    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1083}
1084/// Nested message and enum types in `PixelModemConfig`.
1085pub mod pixel_modem_config {
1086    /// Event group to record, as defined by the modem.
1087    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1088    #[repr(i32)]
1089    pub enum EventGroup {
1090        Unknown = 0,
1091        /// Events suitable for low bandwidth tracing only.
1092        LowBandwidth = 1,
1093        /// Events suitable for high and low bandwidth tracing.
1094        HighAndLowBandwidth = 2,
1095    }
1096    impl EventGroup {
1097        /// String value of the enum field names used in the ProtoBuf definition.
1098        ///
1099        /// The values are not transformed in any way and thus are considered stable
1100        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1101        pub fn as_str_name(&self) -> &'static str {
1102            match self {
1103                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
1104                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1105                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1106            }
1107        }
1108    }
1109}
1110// Begin of protos/perfetto/config/android/protolog_config.proto
1111
1112/// Custom configuration for the "android.protolog" data source.
1113/// ProtoLog is a logging mechanism that is intented to be more efficient than
1114/// logcat. This configures what logs to capture in the tracing instance.
1115#[derive(Clone, PartialEq, ::prost::Message)]
1116pub struct ProtoLogConfig {
1117    /// Specified the configurations for each of the logging groups. If none is
1118    /// specified for a group the defaults will be used.
1119    #[prost(message, repeated, tag="1")]
1120    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1121    /// Specified what tracing mode to use for the tracing instance.
1122    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
1123    pub tracing_mode: ::core::option::Option<i32>,
1124    /// If set, any message with log level higher than this level (inclusive) will
1125    /// be traced. Group overrides take precedence over this value.
1126    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
1127    pub default_log_from_level: ::core::option::Option<i32>,
1128}
1129/// Nested message and enum types in `ProtoLogConfig`.
1130pub mod proto_log_config {
1131    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1132    #[repr(i32)]
1133    pub enum TracingMode {
1134        /// When using the DEFAULT tracing mode, only log groups and levels specified
1135        /// in the group_overrides are traced.
1136        Default = 0,
1137        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1138        /// traced, unless specified in the group_overrides.
1139        EnableAll = 1,
1140    }
1141    impl TracingMode {
1142        /// String value of the enum field names used in the ProtoBuf definition.
1143        ///
1144        /// The values are not transformed in any way and thus are considered stable
1145        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1146        pub fn as_str_name(&self) -> &'static str {
1147            match self {
1148                TracingMode::Default => "DEFAULT",
1149                TracingMode::EnableAll => "ENABLE_ALL",
1150            }
1151        }
1152    }
1153}
1154#[derive(Clone, PartialEq, ::prost::Message)]
1155pub struct ProtoLogGroup {
1156    /// The ProtoLog group name this configuration entry applies to.
1157    #[prost(string, optional, tag="1")]
1158    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1159    /// Specify the level from which to start capturing protologs.
1160    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1161    /// message will be traced.
1162    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1163    pub log_from: ::core::option::Option<i32>,
1164    /// When set to true we will collect the stacktrace for each protolog message
1165    /// in this group that we are tracing.
1166    #[prost(bool, optional, tag="3")]
1167    pub collect_stacktrace: ::core::option::Option<bool>,
1168}
1169// End of protos/perfetto/config/android/protolog_config.proto
1170
1171// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1172
1173/// Custom configuration for the "android.surfaceflinger.layers" data source.
1174#[derive(Clone, PartialEq, ::prost::Message)]
1175pub struct SurfaceFlingerLayersConfig {
1176    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1177    pub mode: ::core::option::Option<i32>,
1178    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1179    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1180}
1181/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1182pub mod surface_flinger_layers_config {
1183    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1184    #[repr(i32)]
1185    pub enum Mode {
1186        Unspecified = 0,
1187        /// Trace layers snapshots. A snapshot is taken every time a layers change
1188        /// occurs.
1189        Active = 1,
1190        /// Generate layers snapshots from the transactions kept in the
1191        /// SurfaceFlinger's internal ring buffer.
1192        /// The layers snapshots generation occurs when this data source is flushed.
1193        Generated = 2,
1194        /// Trace a single layers snapshot.
1195        Dump = 3,
1196        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1197        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1198        /// when a bugreport is taken.
1199        GeneratedBugreportOnly = 4,
1200        /// Layer snapshots are generated by ProtoVM from layer patches
1201        Protovm = 5,
1202    }
1203    impl Mode {
1204        /// String value of the enum field names used in the ProtoBuf definition.
1205        ///
1206        /// The values are not transformed in any way and thus are considered stable
1207        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1208        pub fn as_str_name(&self) -> &'static str {
1209            match self {
1210                Mode::Unspecified => "MODE_UNSPECIFIED",
1211                Mode::Active => "MODE_ACTIVE",
1212                Mode::Generated => "MODE_GENERATED",
1213                Mode::Dump => "MODE_DUMP",
1214                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1215                Mode::Protovm => "MODE_PROTOVM",
1216            }
1217        }
1218    }
1219    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1220    #[repr(i32)]
1221    pub enum TraceFlag {
1222        Unspecified = 0,
1223        Input = 2,
1224        Composition = 4,
1225        Extra = 8,
1226        Hwc = 16,
1227        Buffers = 32,
1228        VirtualDisplays = 64,
1229        /// INPUT | COMPOSITION | EXTRA
1230        All = 14,
1231    }
1232    impl TraceFlag {
1233        /// String value of the enum field names used in the ProtoBuf definition.
1234        ///
1235        /// The values are not transformed in any way and thus are considered stable
1236        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1237        pub fn as_str_name(&self) -> &'static str {
1238            match self {
1239                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1240                TraceFlag::Input => "TRACE_FLAG_INPUT",
1241                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1242                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1243                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1244                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1245                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1246                TraceFlag::All => "TRACE_FLAG_ALL",
1247            }
1248        }
1249    }
1250}
1251// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1252
1253// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1254
1255/// Custom configuration for the "android.surfaceflinger.transactions" data
1256/// source.
1257#[derive(Clone, PartialEq, ::prost::Message)]
1258pub struct SurfaceFlingerTransactionsConfig {
1259    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1260    pub mode: ::core::option::Option<i32>,
1261}
1262/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1263pub mod surface_flinger_transactions_config {
1264    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1265    #[repr(i32)]
1266    pub enum Mode {
1267        Unspecified = 0,
1268        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1269        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1270        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1271        /// initial state and the latest transactions.
1272        Continuous = 1,
1273        /// SurfaceFlinger writes the initial state and then each incoming
1274        /// transaction until the data source is stopped.
1275        Active = 2,
1276    }
1277    impl Mode {
1278        /// String value of the enum field names used in the ProtoBuf definition.
1279        ///
1280        /// The values are not transformed in any way and thus are considered stable
1281        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1282        pub fn as_str_name(&self) -> &'static str {
1283            match self {
1284                Mode::Unspecified => "MODE_UNSPECIFIED",
1285                Mode::Continuous => "MODE_CONTINUOUS",
1286                Mode::Active => "MODE_ACTIVE",
1287            }
1288        }
1289    }
1290}
1291// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1292
1293// Begin of protos/perfetto/config/android/user_list_config.proto
1294
1295/// Data source that lists details (such as version code) about users on an
1296/// Android device.
1297#[derive(Clone, PartialEq, ::prost::Message)]
1298pub struct AndroidUserListConfig {
1299    /// An allowlist of user type strings, used to control the granularity of
1300    /// user type information emitted in the trace. Exact, case-sensitive string
1301    /// matching is used.
1302    ///
1303    /// Any user type read from the device that is NOT present in the
1304    /// effective allowlist will have its type reported as
1305    /// "android.os.usertype.FILTERED".
1306    ///
1307    /// The effective allowlist is determined as follows:
1308    ///
1309    /// 1. If this 'user_type_filter' field is provided and non-empty:
1310    ///     This list itself is the effective allowlist.
1311    ///     Example TraceConfig:
1312    ///     --------------------
1313    ///     data_sources {
1314    ///         config {
1315    ///             name: "android.user_list"
1316    ///             target_buffer: 0
1317    ///             user_list_config {
1318    ///               # Only report these specific types, others become FILTERED.
1319    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1320    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1321    ///             }
1322    ///         }
1323    ///     }
1324    ///
1325    ///
1326    /// Note: This field does not support regular expressions.
1327    #[prost(string, repeated, tag="1")]
1328    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1329}
1330// End of protos/perfetto/config/android/user_list_config.proto
1331
1332// Begin of protos/perfetto/config/android/windowmanager_config.proto
1333
1334/// Custom configuration for the "android.windowmanager" data source.
1335#[derive(Clone, PartialEq, ::prost::Message)]
1336pub struct WindowManagerConfig {
1337    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1338    pub log_frequency: ::core::option::Option<i32>,
1339    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1340    pub log_level: ::core::option::Option<i32>,
1341}
1342/// Nested message and enum types in `WindowManagerConfig`.
1343pub mod window_manager_config {
1344    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1345    #[repr(i32)]
1346    pub enum LogFrequency {
1347        Unspecified = 0,
1348        /// Trace state snapshots when a frame is committed.
1349        Frame = 1,
1350        /// Trace state snapshots every time a transaction is committed.
1351        Transaction = 2,
1352        /// Trace single state snapshots when the data source is started.
1353        SingleDump = 3,
1354    }
1355    impl LogFrequency {
1356        /// String value of the enum field names used in the ProtoBuf definition.
1357        ///
1358        /// The values are not transformed in any way and thus are considered stable
1359        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1360        pub fn as_str_name(&self) -> &'static str {
1361            match self {
1362                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1363                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1364                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1365                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1366            }
1367        }
1368    }
1369    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1370    #[repr(i32)]
1371    pub enum LogLevel {
1372        Unspecified = 0,
1373        /// Logs all elements with maximum amount of information.
1374        Verbose = 1,
1375        /// Logs all elements but doesn't write all configuration data.
1376        Debug = 2,
1377        /// Logs only visible elements, with the minimum amount of performance
1378        /// overhead
1379        Critical = 3,
1380    }
1381    impl LogLevel {
1382        /// String value of the enum field names used in the ProtoBuf definition.
1383        ///
1384        /// The values are not transformed in any way and thus are considered stable
1385        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1386        pub fn as_str_name(&self) -> &'static str {
1387            match self {
1388                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1389                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1390                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1391                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1392            }
1393        }
1394    }
1395}
1396// End of protos/perfetto/config/android/windowmanager_config.proto
1397
1398// Begin of protos/perfetto/config/chrome/chrome_config.proto
1399
1400#[derive(Clone, PartialEq, ::prost::Message)]
1401pub struct ChromeConfig {
1402    #[prost(string, optional, tag="1")]
1403    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1404    /// When enabled, the data source should only fill in fields in the output that
1405    /// are not potentially privacy sensitive.
1406    #[prost(bool, optional, tag="2")]
1407    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1408    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1409    /// JSON format. Note that the trace data will still be returned as a series of
1410    /// TracePackets, but the embedded data will be JSON instead of serialized
1411    /// protobuf.
1412    #[prost(bool, optional, tag="3")]
1413    pub convert_to_legacy_json: ::core::option::Option<bool>,
1414    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1415    pub client_priority: ::core::option::Option<i32>,
1416    /// Applicable only when using legacy JSON format.
1417    /// If |json_agent_label_filter| is not empty, only data pertaining to
1418    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1419    #[prost(string, optional, tag="5")]
1420    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1421    ///   When enabled, event names should not contain package names.
1422    #[prost(bool, optional, tag="6")]
1423    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1424}
1425/// Nested message and enum types in `ChromeConfig`.
1426pub mod chrome_config {
1427    /// Priority of the tracing session client. A higher priority session may
1428    /// preempt a lower priority one in configurations where concurrent sessions
1429    /// aren't supported.
1430    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1431    #[repr(i32)]
1432    pub enum ClientPriority {
1433        Unknown = 0,
1434        Background = 1,
1435        UserInitiated = 2,
1436    }
1437    impl ClientPriority {
1438        /// String value of the enum field names used in the ProtoBuf definition.
1439        ///
1440        /// The values are not transformed in any way and thus are considered stable
1441        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1442        pub fn as_str_name(&self) -> &'static str {
1443            match self {
1444                ClientPriority::Unknown => "UNKNOWN",
1445                ClientPriority::Background => "BACKGROUND",
1446                ClientPriority::UserInitiated => "USER_INITIATED",
1447            }
1448        }
1449    }
1450}
1451// End of protos/perfetto/config/chrome/chrome_config.proto
1452
1453// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1454
1455#[derive(Clone, PartialEq, ::prost::Message)]
1456pub struct ChromiumHistogramSamplesConfig {
1457    /// List of histograms to record. If no histogram is specified, all histograms
1458    /// are recorded.
1459    #[prost(message, repeated, tag="1")]
1460    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1461    /// Default: false (i.e. histogram names are NOT filtered out by default)
1462    /// When true, histogram_name will be filtered out.
1463    #[prost(bool, optional, tag="2")]
1464    pub filter_histogram_names: ::core::option::Option<bool>,
1465}
1466/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1467pub mod chromium_histogram_samples_config {
1468    /// Records when a value within the specified bounds [min_value, max_value] is
1469    /// emitted into a Chrome histogram.
1470    #[derive(Clone, PartialEq, ::prost::Message)]
1471    pub struct HistogramSample {
1472        #[prost(string, optional, tag="1")]
1473        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1474        #[prost(int64, optional, tag="2")]
1475        pub min_value: ::core::option::Option<i64>,
1476        #[prost(int64, optional, tag="3")]
1477        pub max_value: ::core::option::Option<i64>,
1478    }
1479}
1480// End of protos/perfetto/config/chrome/histogram_samples.proto
1481
1482// Begin of protos/perfetto/config/chrome/system_metrics.proto
1483
1484#[derive(Clone, PartialEq, ::prost::Message)]
1485pub struct ChromiumSystemMetricsConfig {
1486    /// Samples counters every X ms.
1487    #[prost(uint32, optional, tag="1")]
1488    pub sampling_interval_ms: ::core::option::Option<u32>,
1489}
1490// End of protos/perfetto/config/chrome/system_metrics.proto
1491
1492// Begin of protos/perfetto/config/chrome/v8_config.proto
1493
1494#[derive(Clone, PartialEq, ::prost::Message)]
1495pub struct V8Config {
1496    /// Whether to log the actual content of scripts (e.g. content of the JS file
1497    /// that was compiled to generate code).
1498    /// ATTENTION: This could considerably increase the size of the resuling trace
1499    ///             file.
1500    #[prost(bool, optional, tag="1")]
1501    pub log_script_sources: ::core::option::Option<bool>,
1502    /// Whether to log the generated code for jitted functions (machine code or
1503    /// bytecode).
1504    /// ATTENTION: This could considerably increase the size of the resuling trace
1505    ///             file.
1506    #[prost(bool, optional, tag="2")]
1507    pub log_instructions: ::core::option::Option<bool>,
1508}
1509// End of protos/perfetto/config/chrome/v8_config.proto
1510
1511// Begin of protos/perfetto/config/etw/etw_config.proto
1512
1513/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1514/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1515/// ns-evntrace-event_trace_properties
1516#[derive(Clone, PartialEq, ::prost::Message)]
1517pub struct EtwConfig {
1518    /// The kernel_flags determines the flags that will be used by the etw tracing
1519    /// session. These kernel flags have been built to expose the useful events
1520    /// captured from the kernel mode only.
1521    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1522    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1523    // See the list of keywords for for individual providers.
1524    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1525
1526    /// Provides events relating to the scheduler.
1527    #[prost(string, repeated, tag="2")]
1528    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1529    /// Provides events relating to the memory manager.
1530    #[prost(string, repeated, tag="3")]
1531    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1532    /// Provides events relating to file I/O.
1533    #[prost(string, repeated, tag="4")]
1534    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1535    /// Events for which stacks should be collected.
1536    #[prost(string, repeated, tag="5")]
1537    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1538}
1539/// Nested message and enum types in `EtwConfig`.
1540pub mod etw_config {
1541    /// The KernelFlag represent list of kernel flags that we are intrested in.
1542    /// To get a more extensive list run 'xperf -providers k'.
1543    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1544    #[repr(i32)]
1545    pub enum KernelFlag {
1546        Cswitch = 0,
1547        Dispatcher = 1,
1548    }
1549    impl KernelFlag {
1550        /// String value of the enum field names used in the ProtoBuf definition.
1551        ///
1552        /// The values are not transformed in any way and thus are considered stable
1553        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1554        pub fn as_str_name(&self) -> &'static str {
1555            match self {
1556                KernelFlag::Cswitch => "CSWITCH",
1557                KernelFlag::Dispatcher => "DISPATCHER",
1558            }
1559        }
1560    }
1561}
1562// End of protos/perfetto/config/etw/etw_config.proto
1563
1564// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1565
1566#[derive(Clone, PartialEq, ::prost::Message)]
1567pub struct FrozenFtraceConfig {
1568    /// The instance name which stores the previous boot ftrace data. Required.
1569    #[prost(string, optional, tag="1")]
1570    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1571}
1572// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1573
1574// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1575
1576/// Next id: 38
1577#[derive(Clone, PartialEq, ::prost::Message)]
1578pub struct FtraceConfig {
1579    /// Ftrace events to record, example: "sched/sched_switch".
1580    #[prost(string, repeated, tag="1")]
1581    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1582    /// Android-specific event categories:
1583    #[prost(string, repeated, tag="2")]
1584    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1585    #[prost(string, repeated, tag="3")]
1586    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1587    /// Some processes can emit data through atrace or through the perfetto SDK via
1588    /// the "track_event" data source. For these categories, the SDK will be
1589    /// preferred, if possible, for this config.
1590    #[prost(string, repeated, tag="28")]
1591    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1592    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1593    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1594    /// events for convenience (and the vendor-specific events on top).
1595    /// Introduced in: perfetto v52.
1596    #[prost(bool, optional, tag="34")]
1597    pub atrace_userspace_only: ::core::option::Option<bool>,
1598    /// Size of each per-cpu kernel ftrace ring buffer.
1599    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1600    /// buffers cannot be resized without pausing recording in the kernel.
1601    #[prost(uint32, optional, tag="10")]
1602    pub buffer_size_kb: ::core::option::Option<u32>,
1603    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1604    /// implementation to choose a bigger buffer size.
1605    ///
1606    /// Most configs for perfetto v43+ should simply leave both fields unset.
1607    ///
1608    /// If you need a config compatible with a range of perfetto builds and you
1609    /// used to set a non-default buffer_size_kb, consider setting both fields.
1610    /// Example:
1611    ///    buffer_size_kb: 4096
1612    ///    buffer_size_lower_bound: true
1613    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1614    /// On v43+, buffers will be at least 4 MB.
1615    /// In both cases, neither is guaranteed if there are other concurrent
1616    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1617    /// the recording in the kernel.
1618    /// Introduced in: perfetto v43.
1619    #[prost(bool, optional, tag="27")]
1620    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1621    /// If set, specifies how often the tracing daemon reads from the kernel ring
1622    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1623    /// Leave unset unless you're fine-tuning a local config.
1624    #[prost(uint32, optional, tag="11")]
1625    pub drain_period_ms: ::core::option::Option<u32>,
1626    /// If set, the tracing daemon will read kernel ring buffers as soon as
1627    /// they're filled past this percentage of occupancy. In other words, a value
1628    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1629    /// half-full. Not guaranteed if there are multiple concurrent tracing
1630    /// sessions.
1631    /// Currently does nothing on Linux kernels below v6.9.
1632    /// Introduced in: perfetto v48.
1633    #[prost(uint32, optional, tag="29")]
1634    pub drain_buffer_percent: ::core::option::Option<u32>,
1635    #[prost(message, optional, tag="12")]
1636    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1637    #[prost(message, optional, tag="22")]
1638    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1639    /// Enables symbol name resolution against /proc/kallsyms.
1640    /// It requires that either traced_probes is running as root or that
1641    /// kptr_restrict has been manually lowered.
1642    /// It does not disclose KASLR, symbol addresses are mangled.
1643    #[prost(bool, optional, tag="13")]
1644    pub symbolize_ksyms: ::core::option::Option<bool>,
1645    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1646    pub ksyms_mem_policy: ::core::option::Option<i32>,
1647    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1648    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1649    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1650    /// The historical context for this is the following:
1651    /// - Up to Android S (12), the rss_stat was internally throttled in its
1652    ///    kernel implementation.
1653    /// - A change introduced in the kernels after S has introduced a new
1654    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1655    ///    (hence very spammy).
1656    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1657    ///    need to deal with both cases.
1658    /// For more context: go/rss-stat-throttled.
1659    #[prost(bool, optional, tag="15")]
1660    pub throttle_rss_stat: ::core::option::Option<bool>,
1661    /// If true, use self-describing proto messages when writing events not known
1662    /// at compile time (aka generic events). Each event bundle will have a set of
1663    /// serialised proto descriptors for events within that bundle.
1664    ///
1665    /// Default if unset:
1666    /// * v53+: true
1667    /// * before v53: false
1668    ///
1669    /// Added in: perfetto v50.
1670    #[prost(bool, optional, tag="32")]
1671    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1672    /// If true, avoid enabling events that aren't statically known by
1673    /// traced_probes. Otherwise, the default is to emit such events as
1674    /// GenericFtraceEvent protos.
1675    /// Prefer to keep this flag at its default. This was added for Android
1676    /// tracing, where atrace categories and/or atrace HAL requested events can
1677    /// expand to events that aren't of interest to the tracing user.
1678    /// Introduced in: Android T.
1679    #[prost(bool, optional, tag="16")]
1680    pub disable_generic_events: ::core::option::Option<bool>,
1681    /// The subset of syscalls to record. To record all syscalls, leave this unset
1682    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1683    /// * before perfetto v43, requires the config to also enable
1684    ///    raw_syscalls/sys_{enter,exit}.
1685    /// * perfetto v43+ does the right thing if you set only this field.
1686    /// Example: ["sys_read", "sys_open"].
1687    /// Introduced in: Android U.
1688    #[prost(string, repeated, tag="18")]
1689    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1690    /// If true, enable the "function_graph" kernel tracer that emits events
1691    /// whenever a kernel function is entered and exited
1692    /// (funcgraph_entry/funcgraph_exit).
1693    /// Notes on use:
1694    /// * Requires |symbolize_ksyms| for function name resolution.
1695    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1696    ///    set of functions, otherwise the event bandwidth will be too high for
1697    ///    practical use.
1698    /// * The data source might be rejected if there is already a concurrent
1699    ///    ftrace data source that does not use function graph itself, as we do not
1700    ///    support switching kernel tracers mid-trace.
1701    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1702    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1703    ///    "function_graph".
1704    /// Android:
1705    /// * Available only on debuggable builds.
1706    /// * Introduced in: Android U.
1707    #[prost(bool, optional, tag="19")]
1708    pub enable_function_graph: ::core::option::Option<bool>,
1709    /// Constrains the set of functions traced when |enable_function_graph| is
1710    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1711    /// in which case all matching functions will be traced. See kernel
1712    /// documentation on ftrace "set_ftrace_filter" file for more details.
1713    /// Android:
1714    /// * Available only on debuggable builds.
1715    /// * Introduced in: Android U.
1716    #[prost(string, repeated, tag="20")]
1717    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1718    /// If |enable_function_graph| is true, trace this set of functions *and* all
1719    /// of its callees. Supports globs. Can be set together with
1720    /// |function_filters|, in which case only callees matching the filter will be
1721    /// traced. If setting both, you most likely want all roots to also be
1722    /// included in |function_filters|.
1723    /// Android:
1724    /// * Available only on debuggable builds.
1725    /// * Introduced in: Android U.
1726    #[prost(string, repeated, tag="21")]
1727    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1728    /// If |enable_function_graph| is true, only trace the specified
1729    /// number of calls down the stack. Sets the max_graph_depth value
1730    /// in sys/kernel/tracing/
1731    ///
1732    /// Only respected for the first tracing session that enables
1733    /// function_graph tracing.
1734    ///
1735    /// Introduced in: perfetto v51.
1736    /// Supported on: Android 25Q3+.
1737    #[prost(uint32, optional, tag="33")]
1738    pub function_graph_max_depth: ::core::option::Option<u32>,
1739    /// Ftrace events to record, specific for kprobes and kretprobes
1740    #[prost(message, repeated, tag="30")]
1741    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1742    /// If true, does not clear kernel ftrace buffers when starting the trace.
1743    /// This makes sense only if this is the first ftrace data source instance
1744    /// created after the daemon has been started. Can be useful for gathering boot
1745    /// traces, if ftrace has been separately configured (e.g. via kernel
1746    /// commandline).
1747    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1748    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1749    /// anything besides ftrace. Otherwise timestamps might be skewed.
1750    #[prost(bool, optional, tag="23")]
1751    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1752    /// If true, overrides the default timestamp clock and uses a raw hardware
1753    /// based monotonic clock for getting timestamps.
1754    /// * Introduced in: Android U.
1755    #[prost(bool, optional, tag="24")]
1756    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1757    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1758    /// for event recording. Normally, this means
1759    /// `/sys/kernel/tracing/instances/$instance_name`.
1760    ///
1761    /// Names "hyp" and "hypervisor" are reserved.
1762    ///
1763    /// The instance must already exist, the tracing daemon *will not* create it
1764    /// for you as it typically doesn't have such permissions.
1765    /// Only a subset of features is guaranteed to work with non-default instances,
1766    /// at the time of writing:
1767    ///   * ftrace_events
1768    ///   * buffer_size_kb
1769    #[prost(string, optional, tag="25")]
1770    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1771    /// For perfetto developer use. If true and on a debuggable android build,
1772    /// serialise raw tracing pages that the implementation cannot parse.
1773    #[prost(bool, optional, tag="31")]
1774    pub debug_ftrace_abi: ::core::option::Option<bool>,
1775    // =================================================
1776    // Exclusive single-tenant features: HERE BE DRAGONS
1777    // =================================================
1778    // The features below are considered "advanced" and require an exclusive
1779    // tracing session (as of Android 25Q3+ and Perfetto v52).
1780    //
1781    // These features directly manipulate the kernel's global ftrace state and
1782    // are incompatible with concurrent ftrace sessions. They are only enabled
1783    // if included in the *first* ftrace data source configured. Subsequent
1784    // ftrace data sources (even those not using advanced features) will be
1785    // rejected while a session with these features is active.
1786    //
1787    // To run the session in exclusive mode, see:
1788    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1789
1790    /// Filter ftrace events by Thread ID (TID).
1791    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
1792    ///
1793    /// Note: this is an exclusive feature, see:
1794    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1795    ///
1796    /// Introduced in: perfetto v52.
1797    /// Supported on: Android 25Q3+.
1798    #[prost(uint32, repeated, packed="false", tag="35")]
1799    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
1800    #[prost(message, repeated, tag="36")]
1801    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
1802    /// This mask restricts tracing to a specific set of CPUs using a
1803    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
1804    /// 32-bit chunk of the CPU mask.
1805    ///
1806    /// The chunks are ordered from high CPUs to low CPUs (left to right):
1807    ///    - Rightmost chunk: CPUs 0-31
1808    ///    - 2nd chunk from right: CPUs 32-63
1809    ///    - ...and so on.
1810    ///
1811    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
1812    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
1813    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
1814    /// chunk0 to 0-31.
1815    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
1816    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
1817    ///
1818    /// Note: This is an exclusive feature, see:
1819    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1820    ///
1821    /// Introduced in: perfetto v52.
1822    /// Supported on: Android 25Q3+.
1823    #[prost(string, optional, tag="37")]
1824    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
1825    /// No-op in perfetto v28+. Name preserved because of existing references in
1826    /// textproto configs.
1827    #[deprecated]
1828    #[prost(bool, optional, tag="14")]
1829    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1830}
1831/// Nested message and enum types in `FtraceConfig`.
1832pub mod ftrace_config {
1833    /// Configuration for compact encoding of scheduler events. When enabled (and
1834    /// recording the relevant ftrace events), specific high-volume events are
1835    /// encoded in a denser format than normal.
1836    #[derive(Clone, PartialEq, ::prost::Message)]
1837    pub struct CompactSchedConfig {
1838        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1839        /// record those events in the compact format.
1840        ///
1841        /// If the field is unset, the default is:
1842        /// * perfetto v42.0+: enabled
1843        /// * before: disabled
1844        #[prost(bool, optional, tag="1")]
1845        pub enabled: ::core::option::Option<bool>,
1846    }
1847    /// Optional filter for "ftrace/print" events.
1848    ///
1849    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1850    /// are processed in order), its `allow` field will be used as the outcome: if
1851    /// `allow` is true, the event will be included in the trace, otherwise it will
1852    /// be discarded. If an event does not match any rule, it will be allowed by
1853    /// default (a rule with an empty prefix and allow=false, disallows everything
1854    /// by default).
1855    #[derive(Clone, PartialEq, ::prost::Message)]
1856    pub struct PrintFilter {
1857        #[prost(message, repeated, tag="1")]
1858        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1859    }
1860    /// Nested message and enum types in `PrintFilter`.
1861    pub mod print_filter {
1862        #[derive(Clone, PartialEq, ::prost::Message)]
1863        pub struct Rule {
1864            #[prost(bool, optional, tag="2")]
1865            pub allow: ::core::option::Option<bool>,
1866            #[prost(oneof="rule::Match", tags="1, 3")]
1867            pub r#match: ::core::option::Option<rule::Match>,
1868        }
1869        /// Nested message and enum types in `Rule`.
1870        pub mod rule {
1871            /// Matches an atrace message of the form:
1872            /// <type>|pid|<prefix>...
1873            #[derive(Clone, PartialEq, ::prost::Message)]
1874            pub struct AtraceMessage {
1875                #[prost(string, optional, tag="1")]
1876                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1877                #[prost(string, optional, tag="2")]
1878                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1879            }
1880            #[derive(Clone, PartialEq, ::prost::Oneof)]
1881            pub enum Match {
1882                /// This rule matches if `prefix` matches exactly with the beginning of
1883                /// the "ftrace/print" "buf" field.
1884                #[prost(string, tag="1")]
1885                Prefix(::prost::alloc::string::String),
1886                /// This rule matches if the "buf" field contains an atrace-style print
1887                /// message as specified in `atrace_msg`.
1888                #[prost(message, tag="3")]
1889                AtraceMsg(AtraceMessage),
1890            }
1891        }
1892    }
1893    #[derive(Clone, PartialEq, ::prost::Message)]
1894    pub struct KprobeEvent {
1895        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1896        #[prost(string, optional, tag="1")]
1897        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1898        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1899        pub r#type: ::core::option::Option<i32>,
1900    }
1901    /// Nested message and enum types in `KprobeEvent`.
1902    pub mod kprobe_event {
1903        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1904        #[repr(i32)]
1905        pub enum KprobeType {
1906            Unknown = 0,
1907            Kprobe = 1,
1908            Kretprobe = 2,
1909            Both = 3,
1910        }
1911        impl KprobeType {
1912            /// String value of the enum field names used in the ProtoBuf definition.
1913            ///
1914            /// The values are not transformed in any way and thus are considered stable
1915            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1916            pub fn as_str_name(&self) -> &'static str {
1917                match self {
1918                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1919                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1920                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1921                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1922                }
1923            }
1924        }
1925    }
1926    /// Tracefs options to set directly in the tracefs instance. This is a very
1927    /// niche feature since almost all of the options deal with formatting textual
1928    /// output (the /trace file), which perfetto doesn't use.
1929    ///
1930    /// The options with a known use-case:
1931    /// * event-fork: when using `tids_to_trace` above, the kernel will
1932    ///    automatically add newly spawned descendant threads to the set of TIDs.
1933    ///
1934    /// Full list of options is available at
1935    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
1936    ///
1937    /// Note: this is an exclusive feature, see:
1938    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1939    ///
1940    /// Introduced in: perfetto v52.
1941    /// Supported on: Android 25Q3+.
1942    #[derive(Clone, PartialEq, ::prost::Message)]
1943    pub struct TracefsOption {
1944        /// The name of the tracefs option as found in tracefs/trace_options (without
1945        /// the "no" prefix).
1946        #[prost(string, optional, tag="1")]
1947        pub name: ::core::option::Option<::prost::alloc::string::String>,
1948        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
1949        pub state: ::core::option::Option<i32>,
1950    }
1951    /// Nested message and enum types in `TracefsOption`.
1952    pub mod tracefs_option {
1953        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1954        #[repr(i32)]
1955        pub enum State {
1956            Unknown = 0,
1957            Enabled = 1,
1958            Disabled = 2,
1959        }
1960        impl State {
1961            /// String value of the enum field names used in the ProtoBuf definition.
1962            ///
1963            /// The values are not transformed in any way and thus are considered stable
1964            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1965            pub fn as_str_name(&self) -> &'static str {
1966                match self {
1967                    State::Unknown => "STATE_UNKNOWN",
1968                    State::Enabled => "STATE_ENABLED",
1969                    State::Disabled => "STATE_DISABLED",
1970                }
1971            }
1972        }
1973    }
1974    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1975    /// should keep the symbol map in memory (and reuse it for future tracing
1976    /// sessions) or clear it (saving memory) and re-create it on each tracing
1977    /// session (wasting cpu and wall time).
1978    /// The tradeoff is roughly:
1979    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1980    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1981    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1982    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1983    #[repr(i32)]
1984    pub enum KsymsMemPolicy {
1985        KsymsUnspecified = 0,
1986        KsymsCleanupOnStop = 1,
1987        KsymsRetain = 2,
1988    }
1989    impl KsymsMemPolicy {
1990        /// String value of the enum field names used in the ProtoBuf definition.
1991        ///
1992        /// The values are not transformed in any way and thus are considered stable
1993        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1994        pub fn as_str_name(&self) -> &'static str {
1995            match self {
1996                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1997                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1998                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1999            }
2000        }
2001    }
2002}
2003// End of protos/perfetto/config/ftrace/ftrace_config.proto
2004
2005// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
2006
2007#[derive(Clone, PartialEq, ::prost::Message)]
2008pub struct GpuCounterConfig {
2009    /// Desired sampling interval for counters.
2010    #[prost(uint64, optional, tag="1")]
2011    pub counter_period_ns: ::core::option::Option<u64>,
2012    // Selects which counters to sample. Use either counter_ids or counter_names,
2013    // not both. Counter IDs and names correspond to the ones described in
2014    // GpuCounterSpec in the data source descriptor.
2015
2016    /// List of counter IDs to be sampled.
2017    #[prost(uint32, repeated, packed="false", tag="2")]
2018    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
2019    /// List of counter names to be sampled. Requires producer support; check
2020    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
2021    /// Glob patterns may be used to match multiple counters by name; check
2022    /// GpuCounterDescriptor.supports_counter_name_globs for support.
2023    #[prost(string, repeated, tag="6")]
2024    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2025    /// Fix gpu clock rate during trace session.
2026    #[prost(bool, optional, tag="4")]
2027    pub fix_gpu_clock: ::core::option::Option<bool>,
2028    /// Sample counters by instrumenting command buffers.
2029    #[prost(oneof="gpu_counter_config::InstrumentedSamplingMode", tags="3, 5")]
2030    pub instrumented_sampling_mode: ::core::option::Option<gpu_counter_config::InstrumentedSamplingMode>,
2031}
2032/// Nested message and enum types in `GpuCounterConfig`.
2033pub mod gpu_counter_config {
2034    /// Configuration for sampling counters by instrumenting command buffers.
2035    ///
2036    /// When instrumented_sampling_config is used (instead of the
2037    /// instrumented_sampling bool), the following steps determine whether
2038    /// instrumented counters are enabled for a given GPU activity:
2039    ///
2040    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
2041    ///     activity must match at least one filter. If empty, all activities
2042    ///     pass this step.
2043    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
2044    ///     activity must fall within a matching TX range. Activities in TX
2045    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
2046    ///     take precedence over includes). If both are empty, all activities
2047    ///     pass this step.
2048    /// 3. Range-based sampling: If activity_ranges is non-empty, only
2049    ///     activities within the specified skip/count ranges are instrumented.
2050    ///     If empty, all activities that passed the previous steps are
2051    ///     instrumented.
2052    #[derive(Clone, PartialEq, ::prost::Message)]
2053    pub struct InstrumentedSamplingConfig {
2054        /// GPU activity name filters. An activity matches if it matches any filter.
2055        #[prost(message, repeated, tag="3")]
2056        pub activity_name_filters: ::prost::alloc::vec::Vec<instrumented_sampling_config::ActivityNameFilter>,
2057        /// Glob patterns to use for including GPU activities in TX ranges. TX
2058        /// ranges are in-process annotations that mark different sections of GPU
2059        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
2060        /// activity is included if any range in its nesting hierarchy matches.
2061        /// Only activities that fall within a matching TX range will be
2062        /// instrumented.
2063        #[prost(string, repeated, tag="6")]
2064        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2065        /// Glob patterns to use for excluding GPU activities from TX ranges.
2066        /// TX ranges can be nested, and an activity is excluded if any range
2067        /// in its nesting hierarchy matches. Excludes take precedence over
2068        /// includes.
2069        #[prost(string, repeated, tag="7")]
2070        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2071        /// Ranges of GPU activities to instrument. Applied after activity name
2072        /// and TX range filters. If empty, all activities that passed the
2073        /// previous filters are instrumented.
2074        #[prost(message, repeated, tag="5")]
2075        pub activity_ranges: ::prost::alloc::vec::Vec<instrumented_sampling_config::ActivityRange>,
2076    }
2077    /// Nested message and enum types in `InstrumentedSamplingConfig`.
2078    pub mod instrumented_sampling_config {
2079        /// Filters GPU activities by name. Each filter specifies a glob pattern
2080        /// and the basis for matching (mangled or demangled kernel name).
2081        #[derive(Clone, PartialEq, ::prost::Message)]
2082        pub struct ActivityNameFilter {
2083            /// required. Glob pattern to use for GPU activity name filtering.
2084            #[prost(string, optional, tag="1")]
2085            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
2086            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
2087            /// specified.
2088            #[prost(enumeration="activity_name_filter::NameBase", optional, tag="2")]
2089            pub name_base: ::core::option::Option<i32>,
2090        }
2091        /// Nested message and enum types in `ActivityNameFilter`.
2092        pub mod activity_name_filter {
2093            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2094            #[repr(i32)]
2095            pub enum NameBase {
2096                /// Match against the mangled (compiler-encoded) kernel name.
2097                /// Example: for a kernel whose demangled name is
2098                /// "matmul(float*,int,int)", the mangled name might be
2099                /// "_Z6matmulPfii". The glob pattern is matched against this
2100                /// mangled form.
2101                MangledKernelName = 0,
2102                /// Match against the fully demangled kernel name, including
2103                /// parameters, templates, and qualifiers.
2104                /// Example: "matmul(float*,int,int)". The glob pattern is
2105                /// matched against this full demangled form.
2106                DemangledKernelName = 1,
2107                /// Match against only the function name portion of the
2108                /// demangled kernel name, without parameters, templates,
2109                /// return types, or namespaces.
2110                /// Example: "matmul". The glob pattern is matched against
2111                /// just the bare function name.
2112                FunctionName = 2,
2113            }
2114            impl NameBase {
2115                /// String value of the enum field names used in the ProtoBuf definition.
2116                ///
2117                /// The values are not transformed in any way and thus are considered stable
2118                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2119                pub fn as_str_name(&self) -> &'static str {
2120                    match self {
2121                        NameBase::MangledKernelName => "MANGLED_KERNEL_NAME",
2122                        NameBase::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
2123                        NameBase::FunctionName => "FUNCTION_NAME",
2124                    }
2125                }
2126            }
2127        }
2128        /// Defines a range of GPU activities to instrument.
2129        #[derive(Clone, PartialEq, ::prost::Message)]
2130        pub struct ActivityRange {
2131            /// Number of GPU activities to skip before starting to instrument
2132            /// command buffers. Defaults to 0 if not specified.
2133            #[prost(uint32, optional, tag="1")]
2134            pub skip: ::core::option::Option<u32>,
2135            /// Limit for the number of GPU activities to sample counters for by
2136            /// instrumenting command buffers. Defaults to UINT32_MAX (all
2137            /// remaining activities) if not specified.
2138            #[prost(uint32, optional, tag="2")]
2139            pub count: ::core::option::Option<u32>,
2140        }
2141    }
2142    /// Sample counters by instrumenting command buffers.
2143    #[derive(Clone, PartialEq, ::prost::Oneof)]
2144    pub enum InstrumentedSamplingMode {
2145        #[prost(bool, tag="3")]
2146        InstrumentedSampling(bool),
2147        #[prost(message, tag="5")]
2148        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
2149    }
2150}
2151// End of protos/perfetto/config/gpu/gpu_counter_config.proto
2152
2153// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
2154
2155#[derive(Clone, PartialEq, ::prost::Message)]
2156pub struct GpuRenderStagesConfig {
2157    /// Enable to separate the color and depth/stencil load and store stages
2158    /// into a separate stages. If disabled, the depth/stencil load and store
2159    /// stages will be combined.  Disabled by default. This option has no effect if
2160    /// Low Overhead mode is enabled.
2161    #[prost(bool, optional, tag="1")]
2162    pub full_loadstore: ::core::option::Option<bool>,
2163    /// Use the low overhead mode for traces. In this mode render stages are
2164    /// combined into a single workload stage. This provides less granular data but
2165    /// induces minimal GPU overhead. Disabled by default.
2166    #[prost(bool, optional, tag="2")]
2167    pub low_overhead: ::core::option::Option<bool>,
2168    /// Trace metrics to capture for each render stage
2169    #[prost(string, repeated, tag="3")]
2170    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2171}
2172// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
2173
2174// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
2175
2176#[derive(Clone, PartialEq, ::prost::Message)]
2177pub struct VulkanMemoryConfig {
2178    /// Tracking driver memory usage events
2179    #[prost(bool, optional, tag="1")]
2180    pub track_driver_memory_usage: ::core::option::Option<bool>,
2181    /// Tracking device memory usage events
2182    #[prost(bool, optional, tag="2")]
2183    pub track_device_memory_usage: ::core::option::Option<bool>,
2184}
2185// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
2186
2187// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
2188
2189/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2190/// systems.
2191#[derive(Clone, PartialEq, ::prost::Message)]
2192pub struct InodeFileConfig {
2193    /// How long to pause between batches.
2194    #[prost(uint32, optional, tag="1")]
2195    pub scan_interval_ms: ::core::option::Option<u32>,
2196    /// How long to wait before the first scan in order to accumulate inodes.
2197    #[prost(uint32, optional, tag="2")]
2198    pub scan_delay_ms: ::core::option::Option<u32>,
2199    /// How many inodes to scan in one batch.
2200    #[prost(uint32, optional, tag="3")]
2201    pub scan_batch_size: ::core::option::Option<u32>,
2202    /// Do not scan for inodes not found in the static map.
2203    #[prost(bool, optional, tag="4")]
2204    pub do_not_scan: ::core::option::Option<bool>,
2205    /// If non-empty, only scan inodes corresponding to block devices named in
2206    /// this list.
2207    #[prost(string, repeated, tag="5")]
2208    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2209    /// When encountering an inode belonging to a block device corresponding
2210    /// to one of the mount points in this map, scan its scan_roots instead.
2211    #[prost(message, repeated, tag="6")]
2212    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
2213}
2214/// Nested message and enum types in `InodeFileConfig`.
2215pub mod inode_file_config {
2216    #[derive(Clone, PartialEq, ::prost::Message)]
2217    pub struct MountPointMappingEntry {
2218        #[prost(string, optional, tag="1")]
2219        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2220        #[prost(string, repeated, tag="2")]
2221        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2222    }
2223}
2224// End of protos/perfetto/config/inode_file/inode_file_config.proto
2225
2226// Begin of protos/perfetto/config/interceptors/console_config.proto
2227
2228#[derive(Clone, PartialEq, ::prost::Message)]
2229pub struct ConsoleConfig {
2230    #[prost(enumeration="console_config::Output", optional, tag="1")]
2231    pub output: ::core::option::Option<i32>,
2232    #[prost(bool, optional, tag="2")]
2233    pub enable_colors: ::core::option::Option<bool>,
2234}
2235/// Nested message and enum types in `ConsoleConfig`.
2236pub mod console_config {
2237    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2238    #[repr(i32)]
2239    pub enum Output {
2240        Unspecified = 0,
2241        Stdout = 1,
2242        Stderr = 2,
2243    }
2244    impl Output {
2245        /// String value of the enum field names used in the ProtoBuf definition.
2246        ///
2247        /// The values are not transformed in any way and thus are considered stable
2248        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2249        pub fn as_str_name(&self) -> &'static str {
2250            match self {
2251                Output::Unspecified => "OUTPUT_UNSPECIFIED",
2252                Output::Stdout => "OUTPUT_STDOUT",
2253                Output::Stderr => "OUTPUT_STDERR",
2254            }
2255        }
2256    }
2257}
2258// End of protos/perfetto/config/interceptors/console_config.proto
2259
2260// Begin of protos/perfetto/config/interceptor_config.proto
2261
2262/// Configuration for trace packet interception. Used for diverting trace data to
2263/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2264/// Perfetto SDK.
2265#[derive(Clone, PartialEq, ::prost::Message)]
2266pub struct InterceptorConfig {
2267    /// Matches the name given to RegisterInterceptor().
2268    #[prost(string, optional, tag="1")]
2269    pub name: ::core::option::Option<::prost::alloc::string::String>,
2270    #[prost(message, optional, tag="100")]
2271    pub console_config: ::core::option::Option<ConsoleConfig>,
2272}
2273// End of protos/perfetto/config/interceptor_config.proto
2274
2275// Begin of protos/perfetto/config/power/android_power_config.proto
2276
2277#[derive(Clone, PartialEq, ::prost::Message)]
2278pub struct AndroidPowerConfig {
2279    #[prost(uint32, optional, tag="1")]
2280    pub battery_poll_ms: ::core::option::Option<u32>,
2281    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
2282    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2283    /// Where available enables per-power-rail measurements.
2284    #[prost(bool, optional, tag="3")]
2285    pub collect_power_rails: ::core::option::Option<bool>,
2286    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2287    /// Available from Android S.
2288    #[prost(bool, optional, tag="4")]
2289    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2290    /// Provides a breakdown of time in state for various subsystems.
2291    /// Available from Android U.
2292    #[prost(bool, optional, tag="5")]
2293    pub collect_entity_state_residency: ::core::option::Option<bool>,
2294}
2295/// Nested message and enum types in `AndroidPowerConfig`.
2296pub mod android_power_config {
2297    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2298    #[repr(i32)]
2299    pub enum BatteryCounters {
2300        BatteryCounterUnspecified = 0,
2301        /// Coulomb counter.
2302        BatteryCounterCharge = 1,
2303        /// Charge (%).
2304        BatteryCounterCapacityPercent = 2,
2305        /// Instantaneous current.
2306        BatteryCounterCurrent = 3,
2307        /// Avg current.
2308        BatteryCounterCurrentAvg = 4,
2309        /// Instantaneous voltage.
2310        BatteryCounterVoltage = 5,
2311    }
2312    impl BatteryCounters {
2313        /// String value of the enum field names used in the ProtoBuf definition.
2314        ///
2315        /// The values are not transformed in any way and thus are considered stable
2316        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2317        pub fn as_str_name(&self) -> &'static str {
2318            match self {
2319                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2320                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2321                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2322                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2323                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2324                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2325            }
2326        }
2327    }
2328}
2329// End of protos/perfetto/config/power/android_power_config.proto
2330
2331// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
2332
2333/// Configuration that allows to boost the priority of the 'traced' or
2334/// 'traced_probs' processes, by changing the scheduler configuration.
2335/// Only supported on Linux and Android the boosted process must have
2336/// 'CAP_SYS_NICE' capability.
2337#[derive(Clone, PartialEq, ::prost::Message)]
2338pub struct PriorityBoostConfig {
2339    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
2340    pub policy: ::core::option::Option<i32>,
2341    #[prost(uint32, optional, tag="2")]
2342    pub priority: ::core::option::Option<u32>,
2343}
2344/// Nested message and enum types in `PriorityBoostConfig`.
2345pub mod priority_boost_config {
2346    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2347    #[repr(i32)]
2348    pub enum BoostPolicy {
2349        PolicyUnspecified = 0,
2350        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
2351        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2352        /// than default 0, 20 is the highest priority.
2353        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2354        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2355        PolicySchedOther = 1,
2356        /// The Real-time policy, Priority range: [1; 99]
2357        PolicySchedFifo = 2,
2358    }
2359    impl BoostPolicy {
2360        /// String value of the enum field names used in the ProtoBuf definition.
2361        ///
2362        /// The values are not transformed in any way and thus are considered stable
2363        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2364        pub fn as_str_name(&self) -> &'static str {
2365            match self {
2366                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
2367                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
2368                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
2369            }
2370        }
2371    }
2372}
2373// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
2374
2375/// Config for polling process-related information from /proc/pid/status and
2376/// related files on Linux.
2377///
2378/// Data source name: "linux.process_stats".
2379#[derive(Clone, PartialEq, ::prost::Message)]
2380pub struct ProcessStatsConfig {
2381    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
2382    pub quirks: ::prost::alloc::vec::Vec<i32>,
2383    /// If enabled all processes will be scanned and dumped when the trace starts.
2384    #[prost(bool, optional, tag="2")]
2385    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2386    /// If enabled thread names are also recoded (this is redundant if sched_switch
2387    /// is enabled).
2388    #[prost(bool, optional, tag="3")]
2389    pub record_thread_names: ::core::option::Option<bool>,
2390    /// If > 0 samples counters (see process_stats.proto) from
2391    /// /proc/pid/status and oom_score_adj every X ms.
2392    /// This is required to be > 100ms to avoid excessive CPU usage.
2393    #[prost(uint32, optional, tag="4")]
2394    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2395    // id 5 never used
2396
2397    /// Explicit caching period during which the polling won't re-emit identical
2398    /// counter values. This is required to be either = 0 or a multiple of
2399    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2400    /// rounded down to the nearest multiple.
2401    #[prost(uint32, optional, tag="6")]
2402    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2403    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2404    /// /proc/pid/smaps_rollup.
2405    ///
2406    /// Android: does NOT work with the system daemons by default, as it requires
2407    /// running the recording process (traced_probes or tracebox) as root. It is
2408    /// possible to avoid the root requirement, but the exact steps depend on the
2409    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2410    /// check, and might be further covered by the procfs "hidepid" mount option.
2411    #[prost(bool, optional, tag="10")]
2412    pub scan_smaps_rollup: ::core::option::Option<bool>,
2413    /// If true: process descriptions will include process age (starttime in
2414    /// /proc/pid/stat).
2415    /// Introduced in: perfetto v44.
2416    #[prost(bool, optional, tag="11")]
2417    pub record_process_age: ::core::option::Option<bool>,
2418    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2419    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2420    /// Introduced in: perfetto v44.
2421    #[prost(bool, optional, tag="12")]
2422    pub record_process_runtime: ::core::option::Option<bool>,
2423    /// If true obtain per-process dmabuf resident set size from
2424    /// /proc/pid/dmabuf_rss.
2425    /// This feature is not in upstream linux, and is available only on some
2426    /// Android kernels.
2427    #[prost(bool, optional, tag="13")]
2428    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
2429    /// WARNING: unmaintained and deprecated. If true this will resolve file
2430    /// descriptors for each process so these can be mapped to their actual device
2431    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
2432    /// or new fds opened after initially scanning a process will not be
2433    /// recognized.
2434    #[prost(bool, optional, tag="9")]
2435    pub resolve_process_fds: ::core::option::Option<bool>,
2436}
2437/// Nested message and enum types in `ProcessStatsConfig`.
2438pub mod process_stats_config {
2439    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2440    #[repr(i32)]
2441    pub enum Quirks {
2442        Unspecified = 0,
2443        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
2444        /// startup is now disabled by default and can be re-enabled using the
2445        /// |scan_all_processes_on_start| arg.
2446        DisableInitialDump = 1,
2447        /// If set, disables the special interaction with "linux.ftrace" data source,
2448        /// where the process stats rescrapes any thread id seen in the ftrace
2449        /// stream.
2450        DisableOnDemand = 2,
2451    }
2452    impl Quirks {
2453        /// String value of the enum field names used in the ProtoBuf definition.
2454        ///
2455        /// The values are not transformed in any way and thus are considered stable
2456        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2457        pub fn as_str_name(&self) -> &'static str {
2458            match self {
2459                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
2460                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
2461                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
2462            }
2463        }
2464    }
2465}
2466// End of protos/perfetto/config/process_stats/process_stats_config.proto
2467
2468// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
2469
2470/// Configuration for go/heapprofd.
2471/// Next id: 28
2472#[derive(Clone, PartialEq, ::prost::Message)]
2473pub struct HeapprofdConfig {
2474    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
2475    ///
2476    /// These are:
2477    /// * All heaps if heap_sampling_intervals is empty.
2478    /// * Those profiled due to all_heaps and not named in heaps if
2479    ///    heap_sampling_intervals is not empty.
2480    /// * The implicit libc.malloc heap if heaps is empty.
2481    ///
2482    /// Set to 1 for perfect accuracy.
2483    /// Otherwise, sample every sample_interval_bytes on average.
2484    ///
2485    /// See
2486    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
2487    /// for more details.
2488    ///
2489    /// BUGS
2490    /// Before Android 12, setting this to 0 would crash the target process.
2491    ///
2492    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
2493    /// this field or with heap_sampling_intervals), otherwise the producer will
2494    /// not start.
2495    #[prost(uint64, optional, tag="1")]
2496    pub sampling_interval_bytes: ::core::option::Option<u64>,
2497    /// If less than the given numbers of bytes are left free in the shared
2498    /// memory buffer, increase sampling interval by a factor of two.
2499    /// Adaptive sampling is disabled when set to 0.
2500    #[prost(uint64, optional, tag="24")]
2501    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
2502    /// Stop doubling the sampling_interval once the sampling interval has reached
2503    /// this value.
2504    #[prost(uint64, optional, tag="25")]
2505    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
2506    /// E.g. surfaceflinger, com.android.phone
2507    /// This input is normalized in the following way: if it contains slashes,
2508    /// everything up to the last slash is discarded. If it contains "@",
2509    /// everything after the first @ is discared.
2510    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
2511    /// This transformation is also applied to the processes' command lines when
2512    /// matching.
2513    #[prost(string, repeated, tag="2")]
2514    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2515    /// For watermark based triggering or local debugging.
2516    #[prost(uint64, repeated, packed="false", tag="4")]
2517    pub pid: ::prost::alloc::vec::Vec<u64>,
2518    /// Only profile target if it was installed by one of the packages given.
2519    /// Special values are:
2520    /// * @system: installed on the system partition
2521    /// * @product: installed on the product partition
2522    /// * @null: sideloaded
2523    /// Supported on Android 12+.
2524    #[prost(string, repeated, tag="26")]
2525    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2526    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
2527    /// "malloc".
2528    ///
2529    /// Introduced in Android 12.
2530    #[prost(string, repeated, tag="20")]
2531    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2532    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
2533    /// combination with all_heaps;
2534    ///
2535    /// Introduced in Android 12.
2536    #[prost(string, repeated, tag="27")]
2537    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2538    #[prost(bool, optional, tag="23")]
2539    pub stream_allocations: ::core::option::Option<bool>,
2540    /// If given, needs to be the same length as heaps and gives the sampling
2541    /// interval for the respective entry in heaps.
2542    ///
2543    /// Otherwise, sampling_interval_bytes is used.
2544    ///
2545    /// It is recommended to set sampling_interval_bytes to a reasonable default
2546    /// value when using this, as a value of 0 for sampling_interval_bytes will
2547    /// crash the target process before Android 12.
2548    ///
2549    /// Introduced in Android 12.
2550    ///
2551    /// All values must be non-zero or the producer will not start.
2552    #[prost(uint64, repeated, packed="false", tag="22")]
2553    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2554    /// Sample all heaps registered by target process. Introduced in Android 12.
2555    #[prost(bool, optional, tag="21")]
2556    pub all_heaps: ::core::option::Option<bool>,
2557    /// Profile all processes eligible for profiling on the system.
2558    /// See
2559    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2560    /// for which processes are eligible.
2561    ///
2562    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2563    /// will crash when trying to launch a new process as it will have an
2564    /// unexpected open socket to heapprofd.
2565    ///
2566    /// heapprofd will likely be overloaded by the amount of data for low
2567    /// sampling intervals.
2568    #[prost(bool, optional, tag="5")]
2569    pub all: ::core::option::Option<bool>,
2570    /// Do not profile processes whose anon RSS + swap < given value.
2571    /// Introduced in Android 11.
2572    #[prost(uint32, optional, tag="15")]
2573    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2574    /// Stop profile if heapprofd memory usage goes beyond the given value.
2575    /// Introduced in Android 11.
2576    #[prost(uint32, optional, tag="16")]
2577    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2578    /// Stop profile if heapprofd CPU time since start of this data-source
2579    /// goes beyond given value.
2580    /// Introduced in Android 11.
2581    #[prost(uint64, optional, tag="17")]
2582    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2583    /// Do not emit function names for mappings starting with this prefix.
2584    /// E.g. /system to not emit symbols for any system libraries.
2585    #[prost(string, repeated, tag="7")]
2586    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2587    /// Dump at a predefined interval.
2588    #[prost(message, optional, tag="6")]
2589    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2590    /// Size of the shared memory buffer between the profiled processes and
2591    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2592    /// MiB.
2593    ///
2594    /// Needs to be:
2595    /// * at least 8192,
2596    /// * a power of two,
2597    /// * a multiple of 4096.
2598    #[prost(uint64, optional, tag="8")]
2599    pub shmem_size_bytes: ::core::option::Option<u64>,
2600    /// When the shmem buffer is full, block the client instead of ending the
2601    /// trace. Use with caution as this will significantly slow down the target
2602    /// process.
2603    #[prost(bool, optional, tag="9")]
2604    pub block_client: ::core::option::Option<bool>,
2605    /// If set, stop the trace session after blocking the client for this
2606    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2607    /// Introduced in Android 11.
2608    #[prost(uint32, optional, tag="14")]
2609    pub block_client_timeout_us: ::core::option::Option<u32>,
2610    /// Do not profile processes from startup, only match already running
2611    /// processes.
2612    ///
2613    /// Can not be set at the same time as no_running.
2614    /// Introduced in Android 11.
2615    #[prost(bool, optional, tag="10")]
2616    pub no_startup: ::core::option::Option<bool>,
2617    /// Do not profile running processes. Only match processes on startup.
2618    ///
2619    /// Can not be set at the same time as no_startup.
2620    /// Introduced in Android 11.
2621    #[prost(bool, optional, tag="11")]
2622    pub no_running: ::core::option::Option<bool>,
2623    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2624    /// at the point in time when the sampled heap usage of the process was at its
2625    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2626    /// self_allocated and self_freed to not be set.
2627    /// Introduced in Android 11.
2628    #[prost(bool, optional, tag="13")]
2629    pub dump_at_max: ::core::option::Option<bool>,
2630    // FEATURE FLAGS. THERE BE DRAGONS.
2631
2632    /// Escape hatch if the session is being torn down because of a forked child
2633    /// that shares memory space, but is not correctly identified as a vforked
2634    /// child.
2635    /// Introduced in Android 11.
2636    #[prost(bool, optional, tag="18")]
2637    pub disable_fork_teardown: ::core::option::Option<bool>,
2638    /// We try to automatically detect when a target applicatation vforks but then
2639    /// does a memory allocation (or free). This auto-detection can be disabled
2640    /// with this.
2641    /// Introduced in Android 11.
2642    #[prost(bool, optional, tag="19")]
2643    pub disable_vfork_detection: ::core::option::Option<bool>,
2644}
2645/// Nested message and enum types in `HeapprofdConfig`.
2646pub mod heapprofd_config {
2647    #[derive(Clone, PartialEq, ::prost::Message)]
2648    pub struct ContinuousDumpConfig {
2649        /// ms to wait before first dump.
2650        #[prost(uint32, optional, tag="5")]
2651        pub dump_phase_ms: ::core::option::Option<u32>,
2652        /// ms to wait between following dumps.
2653        #[prost(uint32, optional, tag="6")]
2654        pub dump_interval_ms: ::core::option::Option<u32>,
2655    }
2656}
2657// End of protos/perfetto/config/profiling/heapprofd_config.proto
2658
2659// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2660
2661/// Configuration for managed app heap graph snapshots.
2662#[derive(Clone, PartialEq, ::prost::Message)]
2663pub struct JavaHprofConfig {
2664    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2665    /// comm string). The semantics of this field were changed since its original
2666    /// introduction.
2667    ///
2668    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2669    /// the profiler will attempt to match it in two possible ways:
2670    /// * if the pattern starts with a '/', then it is matched against the first
2671    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2672    ///    "/bin/echo".
2673    /// * otherwise the pattern is matched against the part of argv0
2674    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2675    ///    For example "echo" would match "/bin/echo".
2676    ///
2677    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2678    /// normalized prior to an exact string comparison. Normalization is as
2679    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2680    /// the string contains forward slashes, trim everything up to and including
2681    /// the last one.
2682    ///
2683    /// Implementation note: in either case, at most 511 characters of cmdline
2684    /// are considered.
2685    #[prost(string, repeated, tag="1")]
2686    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2687    /// For watermark based triggering or local debugging.
2688    #[prost(uint64, repeated, packed="false", tag="2")]
2689    pub pid: ::prost::alloc::vec::Vec<u64>,
2690    /// Only profile target if it was installed by one of the packages given.
2691    /// Special values are:
2692    /// * @system: installed on the system partition
2693    /// * @product: installed on the product partition
2694    /// * @null: sideloaded
2695    /// Supported on Android 12+.
2696    #[prost(string, repeated, tag="7")]
2697    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2698    /// Dump at a predefined interval.
2699    #[prost(message, optional, tag="3")]
2700    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2701    /// Do not profile processes whose anon RSS + swap < given value.
2702    #[prost(uint32, optional, tag="4")]
2703    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2704    /// Include the process' /proc/self/smaps.
2705    /// This only shows maps that:
2706    /// * start with /system
2707    /// * start with /vendor
2708    /// * start with /data/app
2709    /// * contain "extracted in memory from Y", where Y matches any of the above
2710    #[prost(bool, optional, tag="5")]
2711    pub dump_smaps: ::core::option::Option<bool>,
2712    /// Exclude objects of the following types from the profile. This can be
2713    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2714    #[prost(string, repeated, tag="6")]
2715    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2716}
2717/// Nested message and enum types in `JavaHprofConfig`.
2718pub mod java_hprof_config {
2719    /// If dump_interval_ms != 0, the following configuration is used.
2720    #[derive(Clone, PartialEq, ::prost::Message)]
2721    pub struct ContinuousDumpConfig {
2722        /// ms to wait before first continuous dump.
2723        /// A dump is always created at the beginning of the trace.
2724        #[prost(uint32, optional, tag="1")]
2725        pub dump_phase_ms: ::core::option::Option<u32>,
2726        /// ms to wait between following dumps.
2727        #[prost(uint32, optional, tag="2")]
2728        pub dump_interval_ms: ::core::option::Option<u32>,
2729        /// If true, scans all the processes to find `process_cmdline` and filter by
2730        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2731        /// S-.
2732        ///
2733        /// If false, rescans all the processes to find on every dump. Default on
2734        /// Android T+.
2735        #[prost(bool, optional, tag="3")]
2736        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2737    }
2738}
2739// End of protos/perfetto/config/profiling/java_hprof_config.proto
2740
2741// Begin of protos/perfetto/common/perf_events.proto
2742
2743#[derive(Clone, PartialEq, ::prost::Message)]
2744pub struct PerfEvents {
2745}
2746/// Nested message and enum types in `PerfEvents`.
2747pub mod perf_events {
2748    /// The primary event to count. If recording multiple events, this
2749    /// counter is the "group leader".
2750    /// Commented from the perspective of its use in |PerfEventConfig|.
2751    /// Next id: 13
2752    #[derive(Clone, PartialEq, ::prost::Message)]
2753    pub struct Timebase {
2754        /// Optional modifiers for the event. Modelled after the perftool's
2755        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
2756        /// Currently supported: count scoping such as :u, :k, :uk, ...
2757        /// Modifiers can differ between the timebase and followers.
2758        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
2759        pub modifiers: ::prost::alloc::vec::Vec<i32>,
2760        /// If set, samples will be timestamped with the given clock.
2761        /// If unset, the clock is chosen by the implementation.
2762        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2763        /// used for hardware events (due to interrupt safety), for which the
2764        /// recommendation is to use one of the monotonic clocks.
2765        #[prost(enumeration="PerfClock", optional, tag="11")]
2766        pub timestamp_clock: ::core::option::Option<i32>,
2767        /// Optional arbitrary name for the event, to identify it in the parsed
2768        /// trace. Does *not* affect the profiling itself. If unset, the trace
2769        /// parser will choose a suitable name.
2770        #[prost(string, optional, tag="10")]
2771        pub name: ::core::option::Option<::prost::alloc::string::String>,
2772        /// How often to snapshot the counter, along with any follower events and
2773        /// any additional sampled data such as callstacks.
2774        ///
2775        /// This choice also controls how the readings are taken:
2776        /// * With |frequency| or |period|, samples are taken by the kernel
2777        ///    into a ring buffer. Analogous to `perf record`.
2778        /// * With |poll_period_ms|, the userspace periodically snapshots
2779        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2780        /// Prefer the sampling options unless you're recording PMUs whose
2781        /// perf drivers only support the reading mode.
2782        ///
2783        /// If unset, an implementation-defined sampling default is used.
2784        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2785        pub interval: ::core::option::Option<timebase::Interval>,
2786        /// Counting event to use as the timebase.
2787        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2788        /// which is what you usually want.
2789        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2790        pub event: ::core::option::Option<timebase::Event>,
2791    }
2792    /// Nested message and enum types in `Timebase`.
2793    pub mod timebase {
2794        /// How often to snapshot the counter, along with any follower events and
2795        /// any additional sampled data such as callstacks.
2796        ///
2797        /// This choice also controls how the readings are taken:
2798        /// * With |frequency| or |period|, samples are taken by the kernel
2799        ///    into a ring buffer. Analogous to `perf record`.
2800        /// * With |poll_period_ms|, the userspace periodically snapshots
2801        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2802        /// Prefer the sampling options unless you're recording PMUs whose
2803        /// perf drivers only support the reading mode.
2804        ///
2805        /// If unset, an implementation-defined sampling default is used.
2806        #[derive(Clone, PartialEq, ::prost::Oneof)]
2807        pub enum Interval {
2808            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2809            /// same as 1/period.
2810            /// Details: the actual sampling will still be based on a period, but the
2811            /// kernel will dynamically adjust it based on the observed event rate, to
2812            /// approximate this frequency. Works best with steady-rate events like
2813            /// timers.
2814            /// Not guaranteed to be honored as the kernel can throttle the sampling
2815            /// rate if it's too high.
2816            #[prost(uint64, tag="2")]
2817            Frequency(u64),
2818            /// Per-cpu sampling will occur every |period| counts of |event|.
2819            /// Prefer |frequency| by default, as it's easier to oversample with a
2820            /// fixed period.
2821            /// Not guaranteed to be honored as the kernel can throttle the sampling
2822            /// rate if it's too high.
2823            #[prost(uint64, tag="1")]
2824            Period(u64),
2825            /// Per-cpu values are read by the userspace every interval. If using this
2826            /// mode, only follower events are supported. Options such as
2827            /// |PerfEventConfig.CallstackSampling| are incompatible.
2828            /// The period can't be guaranteed to be exact since the readings are taken
2829            /// by userspace.
2830            #[prost(uint32, tag="6")]
2831            PollPeriodMs(u32),
2832        }
2833        /// Counting event to use as the timebase.
2834        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2835        /// which is what you usually want.
2836        #[derive(Clone, PartialEq, ::prost::Oneof)]
2837        pub enum Event {
2838            #[prost(enumeration="super::Counter", tag="4")]
2839            Counter(i32),
2840            #[prost(message, tag="3")]
2841            Tracepoint(super::Tracepoint),
2842            #[prost(message, tag="5")]
2843            RawEvent(super::RawEvent),
2844        }
2845    }
2846    #[derive(Clone, PartialEq, ::prost::Message)]
2847    pub struct Tracepoint {
2848        /// Group and name for the tracepoint, acceptable forms:
2849        /// * "sched/sched_switch"
2850        /// * "sched:sched_switch"
2851        #[prost(string, optional, tag="1")]
2852        pub name: ::core::option::Option<::prost::alloc::string::String>,
2853        /// Optional field-level filter for the tracepoint. Only events matching this
2854        /// filter will be counted (and therefore contribute to the sampling period).
2855        /// Example: "prev_pid >= 42 && next_pid == 0".
2856        /// For full syntax, see kernel documentation on "Event filtering":
2857        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2858        #[prost(string, optional, tag="2")]
2859        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2860    }
2861    /// Syscall-level description of the event, propagated to the perf_event_attr
2862    /// struct. Primarily for local use-cases, since the event availability and
2863    /// encoding is hardware-specific.
2864    #[derive(Clone, PartialEq, ::prost::Message)]
2865    pub struct RawEvent {
2866        /// Either |type| or |pmu_name| can be set.
2867        #[prost(uint32, optional, tag="1")]
2868        pub r#type: ::core::option::Option<u32>,
2869        #[prost(uint64, optional, tag="2")]
2870        pub config: ::core::option::Option<u64>,
2871        #[prost(uint64, optional, tag="3")]
2872        pub config1: ::core::option::Option<u64>,
2873        #[prost(uint64, optional, tag="4")]
2874        pub config2: ::core::option::Option<u64>,
2875        /// The name of a dynamic PMU under /sys/bus/event_source/devices
2876        /// (e.g. "armv8_pmuv3").
2877        /// If set, leave |type| unset.
2878        /// Android: the relevant sysfs paths are not allowlisted by default, so
2879        /// this option will require a rooted device with selinux disabled.
2880        #[prost(string, optional, tag="5")]
2881        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
2882    }
2883    /// Builtin counter names from the uapi header. Commented with their perf tool
2884    /// aliases.
2885    /// TODO(rsavitski): consider generating enums for cache events (should be
2886    /// finite), and generally make this list as extensive as possible. Excluding
2887    /// things like dynamic PMUs since those don't fit into a static enum.
2888    /// Next id: 21
2889    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2890    #[repr(i32)]
2891    pub enum Counter {
2892        UnknownCounter = 0,
2893        /// cpu-clock
2894        SwCpuClock = 1,
2895        /// page-faults, faults
2896        SwPageFaults = 2,
2897        /// task-clock
2898        SwTaskClock = 3,
2899        /// context-switches, cs
2900        SwContextSwitches = 4,
2901        /// cpu-migrations, migrations
2902        SwCpuMigrations = 5,
2903        /// minor-faults
2904        SwPageFaultsMin = 6,
2905        /// major-faults
2906        SwPageFaultsMaj = 7,
2907        /// alignment-faults
2908        SwAlignmentFaults = 8,
2909        /// emulation-faults
2910        SwEmulationFaults = 9,
2911        /// dummy
2912        SwDummy = 20,
2913        /// cpu-cycles, cycles
2914        HwCpuCycles = 10,
2915        /// instructions
2916        HwInstructions = 11,
2917        /// cache-references
2918        HwCacheReferences = 12,
2919        /// cache-misses
2920        HwCacheMisses = 13,
2921        /// branch-instructions, branches
2922        HwBranchInstructions = 14,
2923        /// branch-misses
2924        HwBranchMisses = 15,
2925        /// bus-cycles
2926        HwBusCycles = 16,
2927        /// stalled-cycles-frontend, idle-cycles-frontend
2928        HwStalledCyclesFrontend = 17,
2929        /// stalled-cycles-backend, idle-cycles-backend
2930        HwStalledCyclesBackend = 18,
2931        /// ref-cycles
2932        HwRefCpuCycles = 19,
2933    }
2934    impl Counter {
2935        /// String value of the enum field names used in the ProtoBuf definition.
2936        ///
2937        /// The values are not transformed in any way and thus are considered stable
2938        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2939        pub fn as_str_name(&self) -> &'static str {
2940            match self {
2941                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2942                Counter::SwCpuClock => "SW_CPU_CLOCK",
2943                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2944                Counter::SwTaskClock => "SW_TASK_CLOCK",
2945                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2946                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2947                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2948                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2949                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2950                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2951                Counter::SwDummy => "SW_DUMMY",
2952                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2953                Counter::HwInstructions => "HW_INSTRUCTIONS",
2954                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2955                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2956                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2957                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2958                Counter::HwBusCycles => "HW_BUS_CYCLES",
2959                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2960                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2961                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2962            }
2963        }
2964    }
2965    /// Subset of clocks that is supported by perf timestamping.
2966    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2967    /// would require additions to the trace clock synchronisation logic.
2968    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2969    #[repr(i32)]
2970    pub enum PerfClock {
2971        UnknownPerfClock = 0,
2972        Realtime = 1,
2973        Monotonic = 2,
2974        MonotonicRaw = 3,
2975        Boottime = 4,
2976    }
2977    impl PerfClock {
2978        /// String value of the enum field names used in the ProtoBuf definition.
2979        ///
2980        /// The values are not transformed in any way and thus are considered stable
2981        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2982        pub fn as_str_name(&self) -> &'static str {
2983            match self {
2984                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2985                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2986                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2987                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2988                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2989            }
2990        }
2991    }
2992    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2993    #[repr(i32)]
2994    pub enum EventModifier {
2995        UnknownEventModifier = 0,
2996        /// count only while in userspace
2997        CountUserspace = 1,
2998        /// count only while in kernel
2999        CountKernel = 2,
3000        /// count only while in hypervisor
3001        CountHypervisor = 3,
3002    }
3003    impl EventModifier {
3004        /// String value of the enum field names used in the ProtoBuf definition.
3005        ///
3006        /// The values are not transformed in any way and thus are considered stable
3007        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3008        pub fn as_str_name(&self) -> &'static str {
3009            match self {
3010                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
3011                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
3012                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
3013                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
3014            }
3015        }
3016    }
3017}
3018/// Additional events associated with a leader.
3019/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
3020#[derive(Clone, PartialEq, ::prost::Message)]
3021pub struct FollowerEvent {
3022    /// Modifiers can differ between the timebase and followers.
3023    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
3024    pub modifiers: ::prost::alloc::vec::Vec<i32>,
3025    /// Optional arbitrary name for the event, to identify it in the parsed
3026    /// trace. Does *not* affect the profiling itself. If unset, the trace
3027    /// parser will choose a suitable name.
3028    #[prost(string, optional, tag="4")]
3029    pub name: ::core::option::Option<::prost::alloc::string::String>,
3030    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
3031    pub event: ::core::option::Option<follower_event::Event>,
3032}
3033/// Nested message and enum types in `FollowerEvent`.
3034pub mod follower_event {
3035    #[derive(Clone, PartialEq, ::prost::Oneof)]
3036    pub enum Event {
3037        #[prost(enumeration="super::perf_events::Counter", tag="1")]
3038        Counter(i32),
3039        #[prost(message, tag="2")]
3040        Tracepoint(super::perf_events::Tracepoint),
3041        #[prost(message, tag="3")]
3042        RawEvent(super::perf_events::RawEvent),
3043    }
3044}
3045// End of protos/perfetto/common/perf_events.proto
3046
3047// Begin of protos/perfetto/config/profiling/perf_event_config.proto
3048
3049/// Configuration for the traced_perf profiler.
3050///
3051/// Example config for basic cpu profiling:
3052///    perf_event_config {
3053///      timebase {
3054///        frequency: 80
3055///      }
3056///      callstack_sampling {
3057///        scope {
3058///          target_cmdline: "surfaceflinger"
3059///          target_cmdline: "system_server"
3060///        }
3061///        kernel_frames: true
3062///      }
3063///    }
3064///
3065/// Next id: 23
3066#[derive(Clone, PartialEq, ::prost::Message)]
3067pub struct PerfEventConfig {
3068    /// What event to sample on, and how often.
3069    /// Defined in common/perf_events.proto.
3070    #[prost(message, optional, tag="15")]
3071    pub timebase: ::core::option::Option<perf_events::Timebase>,
3072    /// Other events associated with the leader described in the timebase.
3073    #[prost(message, repeated, tag="19")]
3074    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
3075    /// If set, the profiler will sample userspace processes' callstacks at the
3076    /// interval specified by the |timebase|.
3077    /// If unset, the profiler will record only the event counts.
3078    #[prost(message, optional, tag="16")]
3079    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
3080    /// List of cpu indices for counting. If empty, the default is all cpus.
3081    ///
3082    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
3083    /// counter-only traces. A future change will likely reorganise the options,
3084    /// but this field will continue to be supported.
3085    ///
3086    /// Available since: perfetto v50.
3087    #[prost(uint32, repeated, packed="false", tag="20")]
3088    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
3089    /// Allow failure of perf_event_open
3090    #[prost(bool, optional, tag="21")]
3091    pub ignore_open_failure: ::core::option::Option<bool>,
3092    /// If not empty, consider only CPUs whose CPUID matches one of these values.
3093    #[prost(string, repeated, tag="22")]
3094    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3095    //
3096    // Kernel <-> userspace ring buffer options:
3097    //
3098
3099    /// How often the per-cpu ring buffers are read by the producer.
3100    /// If unset, an implementation-defined default is used.
3101    #[prost(uint32, optional, tag="8")]
3102    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
3103    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
3104    /// kernel. If set, must be a power of two.
3105    /// If unset, an implementation-defined default is used.
3106    #[prost(uint32, optional, tag="3")]
3107    pub ring_buffer_pages: ::core::option::Option<u32>,
3108    //
3109    // Daemon's resource usage limits:
3110    //
3111
3112    /// Drop samples if the heap memory held by the samples in the unwinder queue
3113    /// is above the given limit. This counts the memory across all concurrent data
3114    /// sources (not just this one's), and there is no fairness guarantee - the
3115    /// whole quota might be used up by a concurrent source.
3116    #[prost(uint64, optional, tag="17")]
3117    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
3118    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
3119    /// footprint exceeds this value.
3120    #[prost(uint32, optional, tag="13")]
3121    pub max_daemon_memory_kb: ::core::option::Option<u32>,
3122    //
3123    // Niche options:
3124    //
3125
3126    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
3127    /// sampled process. This is primarily for Android, where this lookup is
3128    /// asynchronous. As long as the producer is waiting, the associated samples
3129    /// will be kept enqueued (putting pressure on the capacity of the shared
3130    /// unwinding queue). Once a lookup for a process expires, all associated
3131    /// samples are discarded. However, if the lookup still succeeds after the
3132    /// timeout, future samples will be handled normally.
3133    /// If unset, an implementation-defined default is used.
3134    #[prost(uint32, optional, tag="9")]
3135    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
3136    /// Optional period for clearing state cached by the userspace unwinder. This
3137    /// is a heavy operation that is only necessary for traces that target a wide
3138    /// set of processes, and require the memory footprint to be reset
3139    /// periodically. To effectively disable the cache clearing, set to a value
3140    /// greater than your trace duration.
3141    ///
3142    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
3143    ///
3144    /// If zero or unset:
3145    /// * before perfetto v52: no cache clearing.
3146    /// * perfetto v52+: implementation chooses an infrequent default.
3147    #[prost(uint32, optional, tag="10")]
3148    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
3149    /// If set, only profile target if it was installed by a package with one of
3150    /// these names. Special values:
3151    /// * "@system": installed on the system partition
3152    /// * "@product": installed on the product partition
3153    /// * "@null": sideloaded
3154    /// Supported on Android 12+.
3155    #[prost(string, repeated, tag="18")]
3156    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3157    //
3158    // Deprecated (superseded by options above):
3159    //
3160    // Do not set *any* of these fields in new configs.
3161    //
3162
3163    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
3164    /// We rely on this to detect such configs.
3165    #[prost(bool, optional, tag="1")]
3166    pub all_cpus: ::core::option::Option<bool>,
3167    #[prost(uint32, optional, tag="2")]
3168    pub sampling_frequency: ::core::option::Option<u32>,
3169    #[prost(bool, optional, tag="12")]
3170    pub kernel_frames: ::core::option::Option<bool>,
3171    #[prost(int32, repeated, packed="false", tag="4")]
3172    pub target_pid: ::prost::alloc::vec::Vec<i32>,
3173    #[prost(string, repeated, tag="5")]
3174    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3175    #[prost(int32, repeated, packed="false", tag="6")]
3176    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3177    #[prost(string, repeated, tag="7")]
3178    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3179    #[prost(uint32, optional, tag="11")]
3180    pub additional_cmdline_count: ::core::option::Option<u32>,
3181}
3182/// Nested message and enum types in `PerfEventConfig`.
3183pub mod perf_event_config {
3184    //
3185    // Sub-messages (nested for generated code namespacing).
3186    //
3187
3188    #[derive(Clone, PartialEq, ::prost::Message)]
3189    pub struct CallstackSampling {
3190        /// Defines a set of processes for which samples are retained/skipped. If
3191        /// unset, all samples are kept, but beware that it will be very heavy on the
3192        /// stack unwinder, which might start dropping samples due to overload.
3193        #[prost(message, optional, tag="1")]
3194        pub scope: ::core::option::Option<Scope>,
3195        /// If true, callstacks will include the kernel-space frames. Such frames can
3196        /// be identified by a magical "kernel" string as their mapping name.
3197        /// Requires traced_perf to be running as root, or kptr_restrict to have been
3198        /// manually unrestricted. On Android, the platform should do the right thing
3199        /// on debug builds.
3200        /// This does *not* disclose KASLR, as only the function names are emitted.
3201        #[prost(bool, optional, tag="2")]
3202        pub kernel_frames: ::core::option::Option<bool>,
3203        /// Whether to record and unwind userspace callstacks. If unset, defaults to
3204        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
3205        /// as the most common default (this defaulting is only applicable if the
3206        /// outer CallstackSampling message is explicitly set).
3207        #[prost(enumeration="UnwindMode", optional, tag="3")]
3208        pub user_frames: ::core::option::Option<i32>,
3209    }
3210    #[derive(Clone, PartialEq, ::prost::Message)]
3211    pub struct Scope {
3212        /// Process ID (TGID) allowlist. If this list is not empty, only matching
3213        /// samples will be retained. If multiple allow/deny-lists are
3214        /// specified by the config, then all of them are evaluated for each sampled
3215        /// process.
3216        #[prost(int32, repeated, packed="false", tag="1")]
3217        pub target_pid: ::prost::alloc::vec::Vec<i32>,
3218        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3219        /// comm string). The semantics of this field were changed since its original
3220        /// introduction.
3221        ///
3222        /// On Android T+ (13+), this field can specify a single wildcard (*), and
3223        /// the profiler will attempt to match it in two possible ways:
3224        /// * if the pattern starts with a '/', then it is matched against the first
3225        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3226        ///    "/bin/echo".
3227        /// * otherwise the pattern is matched against the part of argv0
3228        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3229        ///    For example "echo" would match "/bin/echo".
3230        ///
3231        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3232        /// normalized prior to an exact string comparison. Normalization is as
3233        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3234        /// the string contains forward slashes, trim everything up to and including
3235        /// the last one.
3236        ///
3237        /// Implementation note: in either case, at most 511 characters of cmdline
3238        /// are considered.
3239        #[prost(string, repeated, tag="2")]
3240        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3241        /// List of excluded pids.
3242        #[prost(int32, repeated, packed="false", tag="3")]
3243        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3244        /// List of excluded cmdlines. See description of |target_cmdline| for how
3245        /// this is handled.
3246        #[prost(string, repeated, tag="4")]
3247        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3248        // Niche features for systemwide callstacks:
3249
3250        /// Number of additional command lines to sample. Only those which are
3251        /// neither explicitly included nor excluded will be considered. Processes
3252        /// are accepted on a first come, first served basis.
3253        #[prost(uint32, optional, tag="5")]
3254        pub additional_cmdline_count: ::core::option::Option<u32>,
3255        /// If set to N, all encountered processes will be put into one of the N
3256        /// possible bins, and only one randomly-chosen bin will be selected for
3257        /// unwinding. The binning is simply "pid % N", under the assumption that
3258        /// low-order bits of pids are roughly uniformly distributed. Other explicit
3259        /// inclusions/exclusions in this |Scope| message are still respected.
3260        ///
3261        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
3262        /// values will be queryable in trace processor under the "stats" table as
3263        /// "perf_process_shard_count" and "perf_chosen_process_shard".
3264        ///
3265        /// NB: all data sources in a config that set |process_shard_count| must set
3266        /// it to the same value. The profiler will choose one bin for all those data
3267        /// sources.
3268        #[prost(uint32, optional, tag="6")]
3269        pub process_shard_count: ::core::option::Option<u32>,
3270    }
3271    /// Userspace unwinding mode. A possible future addition is kernel-unwound
3272    /// callchains for frame pointer based systems.
3273    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3274    #[repr(i32)]
3275    pub enum UnwindMode {
3276        UnwindUnknown = 0,
3277        /// Do not unwind userspace:
3278        UnwindSkip = 1,
3279        /// Use libunwindstack (default):
3280        UnwindDwarf = 2,
3281        /// Use userspace frame pointer unwinder:
3282        UnwindFramePointer = 3,
3283    }
3284    impl UnwindMode {
3285        /// String value of the enum field names used in the ProtoBuf definition.
3286        ///
3287        /// The values are not transformed in any way and thus are considered stable
3288        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3289        pub fn as_str_name(&self) -> &'static str {
3290            match self {
3291                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
3292                UnwindMode::UnwindSkip => "UNWIND_SKIP",
3293                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
3294                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
3295            }
3296        }
3297    }
3298}
3299// End of protos/perfetto/config/profiling/perf_event_config.proto
3300
3301// Begin of protos/perfetto/config/protovm/protovm_config.proto
3302
3303#[derive(Clone, PartialEq, ::prost::Message)]
3304pub struct ProtoVmConfig {
3305    #[prost(uint32, optional, tag="1")]
3306    pub memory_limit_kb: ::core::option::Option<u32>,
3307}
3308// End of protos/perfetto/config/protovm/protovm_config.proto
3309
3310// Begin of protos/perfetto/config/qnx/qnx_config.proto
3311
3312/// QnxConfig is used with trace_qnx_probes build from
3313/// <https://github.com/qnx-ports/perfetto>
3314#[derive(Clone, PartialEq, ::prost::Message)]
3315pub struct QnxConfig {
3316    /// The number of buffers that tracelog will init for the QNX trace.
3317    #[prost(uint32, optional, tag="1")]
3318    pub qnx_kernel_buffers: ::core::option::Option<u32>,
3319    /// The number of kernel buffers that tracelog will init for the QNX trace.
3320    #[prost(uint32, optional, tag="2")]
3321    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
3322    /// Flag indicating whether the QNX kernel tracing should produce wide
3323    /// events which contain additional data or fast events which are most
3324    /// concise. In fast mode we lose the priority information
3325    #[prost(bool, optional, tag="3")]
3326    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
3327    /// The number of pages initialized by default the parser's page cache.
3328    #[prost(uint32, optional, tag="4")]
3329    pub qnx_cache_pages: ::core::option::Option<u32>,
3330    /// The max pages the page cache should allocate (must be at least as big)
3331    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
3332    /// unbounded. The cache will prefer to re-use existing pages so growth will
3333    /// only happen when needed (when parser is not keeping up).
3334    #[prost(int32, optional, tag="5")]
3335    pub qnx_cache_max_pages: ::core::option::Option<i32>,
3336    /// The initial size of the the buffer used to hold the trace header values
3337    /// this dynamic buffer will grow as needed but reallocs can be avoided by
3338    /// selecting an initial size large enough to hold all the initial header
3339    /// data.
3340    #[prost(uint32, optional, tag="6")]
3341    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
3342}
3343// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
3344
3345/// This file is named 'statsd_tracing_config.proto' rather than
3346/// 'statsd_config.proto' (which would be more consistent with the other
3347/// config protos) so it doesn't show up and confuse folks looking for
3348/// the existing statsd_config.proto for configuring statsd itself.
3349/// Same for the config proto itself.
3350#[derive(Clone, PartialEq, ::prost::Message)]
3351pub struct StatsdTracingConfig {
3352    /// This is for the common case of the atom id being known in the enum AtomId.
3353    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3354    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
3355    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
3356    /// (e.g. non-upstream atoms that don't exist in AOSP).
3357    #[prost(int32, repeated, packed="false", tag="2")]
3358    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
3359    #[prost(message, repeated, tag="3")]
3360    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
3361}
3362#[derive(Clone, PartialEq, ::prost::Message)]
3363pub struct StatsdPullAtomConfig {
3364    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3365    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3366    #[prost(int32, repeated, packed="false", tag="2")]
3367    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3368    #[prost(int32, optional, tag="3")]
3369    pub pull_frequency_ms: ::core::option::Option<i32>,
3370    #[prost(string, repeated, tag="4")]
3371    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3372}
3373// End of protos/perfetto/common/sys_stats_counters.proto
3374
3375// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
3376
3377/// This file defines the configuration for the Linux /proc poller data source,
3378/// which injects counters in the trace.
3379/// Counters that are needed in the trace must be explicitly listed in the
3380/// *_counters fields. This is to avoid spamming the trace with all counters
3381/// at all times.
3382/// The sampling rate is configurable. All polling rates (*_period_ms) need
3383/// to be integer multiples of each other.
3384/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
3385/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
3386#[derive(Clone, PartialEq, ::prost::Message)]
3387pub struct SysStatsConfig {
3388    /// Polls /proc/meminfo every X ms, if non-zero.
3389    /// This is required to be > 10ms to avoid excessive CPU usage.
3390    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
3391    #[prost(uint32, optional, tag="1")]
3392    pub meminfo_period_ms: ::core::option::Option<u32>,
3393    /// If empty all known counters are reported. Otherwise, only the counters
3394    /// specified below are reported.
3395    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
3396    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
3397    /// Polls /proc/vmstat every X ms, if non-zero.
3398    /// This is required to be > 10ms to avoid excessive CPU usage.
3399    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
3400    #[prost(uint32, optional, tag="3")]
3401    pub vmstat_period_ms: ::core::option::Option<u32>,
3402    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
3403    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
3404    /// Pols /proc/stat every X ms, if non-zero.
3405    /// This is required to be > 10ms to avoid excessive CPU usage.
3406    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
3407    #[prost(uint32, optional, tag="5")]
3408    pub stat_period_ms: ::core::option::Option<u32>,
3409    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
3410    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
3411    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
3412    /// This is required to be > 10ms to avoid excessive CPU usage.
3413    /// This option can be used to record unchanging values.
3414    /// Updates from frequency changes can come from ftrace/set_clock_rate.
3415    #[prost(uint32, optional, tag="7")]
3416    pub devfreq_period_ms: ::core::option::Option<u32>,
3417    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
3418    /// This is required to be > 10ms to avoid excessive CPU usage.
3419    #[prost(uint32, optional, tag="8")]
3420    pub cpufreq_period_ms: ::core::option::Option<u32>,
3421    /// Polls /proc/buddyinfo every X ms, if non-zero.
3422    /// This is required to be > 10ms to avoid excessive CPU usage.
3423    #[prost(uint32, optional, tag="9")]
3424    pub buddyinfo_period_ms: ::core::option::Option<u32>,
3425    /// Polls /proc/diskstats every X ms, if non-zero.
3426    /// This is required to be > 10ms to avoid excessive CPU usage.
3427    #[prost(uint32, optional, tag="10")]
3428    pub diskstat_period_ms: ::core::option::Option<u32>,
3429    /// Polls /proc/pressure/* every X ms, if non-zero.
3430    /// This is required to be > 10ms to avoid excessive CPU usage.
3431    #[prost(uint32, optional, tag="11")]
3432    pub psi_period_ms: ::core::option::Option<u32>,
3433    /// Polls /sys/class/thermal/* every X ms, if non-zero.
3434    /// This is required to be > 10ms to avoid excessive CPU usage.
3435    #[prost(uint32, optional, tag="12")]
3436    pub thermal_period_ms: ::core::option::Option<u32>,
3437    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
3438    /// This is required to be > 10ms to avoid excessive CPU usage.
3439    #[prost(uint32, optional, tag="13")]
3440    pub cpuidle_period_ms: ::core::option::Option<u32>,
3441    /// Polls device-specific GPU frequency info every X ms, if non-zero.
3442    /// This is required to be > 10ms to avoid excessive CPU usage.
3443    #[prost(uint32, optional, tag="14")]
3444    pub gpufreq_period_ms: ::core::option::Option<u32>,
3445    /// Polls /proc/slabinfo every X ms, if non-zero.
3446    /// This is required to be > 10ms to avoid excessive CPU usage.
3447    #[prost(uint32, optional, tag="15")]
3448    pub slab_period_ms: ::core::option::Option<u32>,
3449}
3450/// Nested message and enum types in `SysStatsConfig`.
3451pub mod sys_stats_config {
3452    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3453    #[repr(i32)]
3454    pub enum StatCounters {
3455        StatUnspecified = 0,
3456        StatCpuTimes = 1,
3457        StatIrqCounts = 2,
3458        StatSoftirqCounts = 3,
3459        StatForkCount = 4,
3460    }
3461    impl StatCounters {
3462        /// String value of the enum field names used in the ProtoBuf definition.
3463        ///
3464        /// The values are not transformed in any way and thus are considered stable
3465        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3466        pub fn as_str_name(&self) -> &'static str {
3467            match self {
3468                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
3469                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
3470                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
3471                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
3472                StatCounters::StatForkCount => "STAT_FORK_COUNT",
3473            }
3474        }
3475    }
3476}
3477// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
3478
3479// Begin of protos/perfetto/config/system_info/system_info_config.proto
3480
3481/// This data-source does a one-off recording of system information when
3482/// the trace starts.
3483/// Currently this includes:
3484/// - Values of
3485/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
3486/// datasource has no configuration options at present.
3487#[derive(Clone, PartialEq, ::prost::Message)]
3488pub struct SystemInfoConfig {
3489}
3490// End of protos/perfetto/config/system_info/system_info_config.proto
3491
3492// Begin of protos/perfetto/config/test_config.proto
3493
3494/// The configuration for a fake producer used in tests.
3495#[derive(Clone, PartialEq, ::prost::Message)]
3496pub struct TestConfig {
3497    /// The number of messages the fake producer should send.
3498    #[prost(uint32, optional, tag="1")]
3499    pub message_count: ::core::option::Option<u32>,
3500    /// The maximum number of messages which should be sent each second.
3501    /// The actual obserced speed may be lower if the producer is unable to
3502    /// work fast enough.
3503    /// If this is zero or unset, the producer will send as fast as possible.
3504    #[prost(uint32, optional, tag="2")]
3505    pub max_messages_per_second: ::core::option::Option<u32>,
3506    /// The seed value for a simple multiplicative congruential pseudo-random
3507    /// number sequence.
3508    #[prost(uint32, optional, tag="3")]
3509    pub seed: ::core::option::Option<u32>,
3510    /// The size of each message in bytes. Should be greater than or equal 5 to
3511    /// account for the number of bytes needed to encode the random number and a
3512    /// null byte for the string.
3513    #[prost(uint32, optional, tag="4")]
3514    pub message_size: ::core::option::Option<u32>,
3515    /// Whether the producer should send a event batch when the data source is
3516    /// is initially registered.
3517    #[prost(bool, optional, tag="5")]
3518    pub send_batch_on_register: ::core::option::Option<bool>,
3519    #[prost(message, optional, tag="6")]
3520    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
3521}
3522/// Nested message and enum types in `TestConfig`.
3523pub mod test_config {
3524    #[derive(Clone, PartialEq, ::prost::Message)]
3525    pub struct DummyFields {
3526        #[prost(uint32, optional, tag="1")]
3527        pub field_uint32: ::core::option::Option<u32>,
3528        #[prost(int32, optional, tag="2")]
3529        pub field_int32: ::core::option::Option<i32>,
3530        #[prost(uint64, optional, tag="3")]
3531        pub field_uint64: ::core::option::Option<u64>,
3532        #[prost(int64, optional, tag="4")]
3533        pub field_int64: ::core::option::Option<i64>,
3534        #[prost(fixed64, optional, tag="5")]
3535        pub field_fixed64: ::core::option::Option<u64>,
3536        #[prost(sfixed64, optional, tag="6")]
3537        pub field_sfixed64: ::core::option::Option<i64>,
3538        #[prost(fixed32, optional, tag="7")]
3539        pub field_fixed32: ::core::option::Option<u32>,
3540        #[prost(sfixed32, optional, tag="8")]
3541        pub field_sfixed32: ::core::option::Option<i32>,
3542        #[prost(double, optional, tag="9")]
3543        pub field_double: ::core::option::Option<f64>,
3544        #[prost(float, optional, tag="10")]
3545        pub field_float: ::core::option::Option<f32>,
3546        #[prost(sint64, optional, tag="11")]
3547        pub field_sint64: ::core::option::Option<i64>,
3548        #[prost(sint32, optional, tag="12")]
3549        pub field_sint32: ::core::option::Option<i32>,
3550        #[prost(string, optional, tag="13")]
3551        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
3552        #[prost(bytes="vec", optional, tag="14")]
3553        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3554    }
3555}
3556// End of protos/perfetto/config/test_config.proto
3557
3558// Begin of protos/perfetto/config/track_event/track_event_config.proto
3559
3560/// The following fields define the set of enabled trace categories. Each list
3561/// item is a glob.
3562///
3563/// To determine if category is enabled, it is checked against the filters in
3564/// the following order:
3565///
3566///    1. Exact matches in enabled categories.
3567///    2. Exact matches in enabled tags.
3568///    3. Exact matches in disabled categories.
3569///    4. Exact matches in disabled tags.
3570///    5. Pattern matches in enabled categories.
3571///    6. Pattern matches in enabled tags.
3572///    7. Pattern matches in disabled categories.
3573///    8. Pattern matches in disabled tags.
3574///
3575/// If none of the steps produced a match:
3576///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
3577///   default.
3578///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
3579///
3580/// Examples:
3581///
3582///   - To enable all non-slow/debug categories:
3583///
3584///        enabled_categories: "*"
3585///
3586///   - To enable specific categories:
3587///
3588///        disabled_categories: "*"
3589///        enabled_categories: "my_category"
3590///        enabled_categories: "my_category2"
3591///
3592///   - To enable only categories with a specific tag:
3593///
3594///        disabled_tags: "*"
3595///        enabled_tags: "my_tag"
3596///
3597#[derive(Clone, PartialEq, ::prost::Message)]
3598pub struct TrackEventConfig {
3599    /// Default: []
3600    #[prost(string, repeated, tag="1")]
3601    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3602    /// Default: []
3603    #[prost(string, repeated, tag="2")]
3604    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3605    /// Default: ["slow", "debug"]
3606    #[prost(string, repeated, tag="3")]
3607    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3608    /// Default: []
3609    #[prost(string, repeated, tag="4")]
3610    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3611    /// Default: false (i.e. enabled by default)
3612    #[prost(bool, optional, tag="5")]
3613    pub disable_incremental_timestamps: ::core::option::Option<bool>,
3614    /// Allows to specify a custom unit different than the default (ns).
3615    /// Also affects thread timestamps if enable_thread_time_sampling = true.
3616    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
3617    /// 3000 ns = 3 us.
3618    /// Default: 1 (if unset, it should be read as 1).
3619    #[prost(uint64, optional, tag="6")]
3620    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
3621    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
3622    /// When true, any debug annotations provided as arguments to the
3623    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
3624    /// still be emitted even if set to true.
3625    #[prost(bool, optional, tag="7")]
3626    pub filter_debug_annotations: ::core::option::Option<bool>,
3627    /// Default: false (i.e. disabled)
3628    /// When true, the SDK samples and emits the current thread time counter value
3629    /// for each event on the current thread's track. This value represents the
3630    /// total CPU time consumed by that thread since its creation.
3631    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
3632    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
3633    #[prost(bool, optional, tag="8")]
3634    pub enable_thread_time_sampling: ::core::option::Option<bool>,
3635    /// When enable_thread_time_sampling is true, and this is specified, thread
3636    /// time is sampled only if the elapsed wall time >
3637    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
3638    /// Effectively, this means thread time will have a leeway of
3639    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
3640    #[prost(uint64, optional, tag="10")]
3641    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
3642    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
3643    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
3644    /// out.
3645    #[prost(bool, optional, tag="9")]
3646    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3647}
3648// End of protos/perfetto/config/track_event/track_event_config.proto
3649
3650// Begin of protos/perfetto/config/data_source_config.proto
3651
3652/// The configuration that is passed to each data source when starting tracing.
3653/// Next id: 141
3654#[derive(Clone, PartialEq, ::prost::Message)]
3655pub struct DataSourceConfig {
3656    /// Data source unique name, e.g., "linux.ftrace". This must match
3657    /// the name passed by the data source when it registers (see
3658    /// RegisterDataSource()).
3659    #[prost(string, optional, tag="1")]
3660    pub name: ::core::option::Option<::prost::alloc::string::String>,
3661    /// The index of the logging buffer where TracePacket(s) will be stored.
3662    /// This field is quite subtle as it has a double semantic:
3663    /// 1) When the config is passed, this field is a 0-based index relative to the
3664    ///     buffer array in the TraceConfig and defines the mapping between data
3665    ///     sources and config. From v54 this is optional because the user can
3666    ///     instead use target_buffer_name.
3667    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
3668    ///     producer, it overwrites this field with the global buffer index (which
3669    ///     depends on other tracing sessions active). This tells the producer which
3670    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
3671    ///     service always sets the resolved global id, even when using
3672    ///     `target_buffer_name`.
3673    /// In hindsight we should have used two different fields given even in v0 they
3674    /// had a different semantic. But now it's too late as this would be a major
3675    /// protocol breaking change.
3676    #[prost(uint32, optional, tag="2")]
3677    pub target_buffer: ::core::option::Option<u32>,
3678    /// Alternative to |target_buffer|. References a buffer by name (as specified
3679    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
3680    /// readable and less error-prone than using buffer indices.
3681    /// If both |target_buffer| and |target_buffer_name| are specified, they must
3682    /// refer to the same buffer, otherwise the service will reject the config.
3683    /// Using both fields allows configs to work with both old and new versions
3684    /// of the tracing service. Introduced in v54.
3685    #[prost(string, optional, tag="11")]
3686    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
3687    /// Set by the service to indicate the duration of the trace.
3688    /// DO NOT SET in consumer as this will be overridden by the service.
3689    #[prost(uint32, optional, tag="3")]
3690    pub trace_duration_ms: ::core::option::Option<u32>,
3691    /// If true, |trace_duration_ms| should count also time in suspend. This
3692    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3693    #[prost(bool, optional, tag="122")]
3694    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3695    /// Set by the service to indicate how long it waits after StopDataSource.
3696    /// DO NOT SET in consumer as this will be overridden by the service.
3697    #[prost(uint32, optional, tag="7")]
3698    pub stop_timeout_ms: ::core::option::Option<u32>,
3699    /// Set by the service to indicate whether this tracing session has extra
3700    /// guardrails.
3701    /// DO NOT SET in consumer as this will be overridden by the service.
3702    #[prost(bool, optional, tag="6")]
3703    pub enable_extra_guardrails: ::core::option::Option<bool>,
3704    /// Set by the service to indicate which user initiated this trace.
3705    /// DO NOT SET in consumer as this will be overridden by the service.
3706    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3707    pub session_initiator: ::core::option::Option<i32>,
3708    /// Set by the service to indicate which tracing session the data source
3709    /// belongs to. The intended use case for this is checking if two data sources,
3710    /// one of which produces metadata for the other one, belong to the same trace
3711    /// session and hence should be linked together.
3712    /// This field was introduced in Aug 2018 after Android P.
3713    /// DO NOT SET in consumer as this will be overridden by the service.
3714    #[prost(uint64, optional, tag="4")]
3715    pub tracing_session_id: ::core::option::Option<u64>,
3716    /// How to behave when the producer runs out of space in the shared memory
3717    /// buffer. This is only honored by some data sources (in the SDK, the data
3718    /// sources registered with a configurable buffer exhausted policy).
3719    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3720    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3721    #[prost(message, optional, tag="10")]
3722    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3723    // If specified, the data source requires the tracing service to process
3724    // overwritten packets (patches) using a ProtoVM instance with this config.
3725    // The ProtoVM program is specified at data source registration time through
3726    // the descriptor.
3727
3728    /// TODO(primiano): today when we enable a protovm_config, we actually accept
3729    /// that if N producers advertise M different versions of the same program we
3730    /// will create M instances of that program.
3731    /// To overcome this, we could move the program to the TraceConfig. But doing
3732    /// so would bloat the trace config size too big and create problems to statsd.
3733    /// Once the config store (b/482305876) exists we should move protovm programs
3734    /// onto that.
3735    #[prost(message, optional, tag="12")]
3736    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
3737    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3738    // data-sources and needs to be processed by the traced daemon.
3739
3740    // All data source config fields must be marked as \[lazy=true\]. This prevents
3741    // the proto-to-cpp generator from recursing into those when generating the
3742    // cpp classes and polluting tracing/core with data-source-specific classes.
3743    // Instead they are treated as opaque strings containing raw proto bytes.
3744
3745    /// Data source name: linux.ftrace
3746    #[prost(message, optional, tag="100")]
3747    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3748    /// Data source name: linux.inode_file_map
3749    #[prost(message, optional, tag="102")]
3750    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3751    /// Data source name: linux.process_stats
3752    #[prost(message, optional, tag="103")]
3753    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3754    /// Data source name: linux.sys_stats
3755    #[prost(message, optional, tag="104")]
3756    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3757    /// Data source name: android.heapprofd
3758    /// Introduced in Android 10.
3759    #[prost(message, optional, tag="105")]
3760    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3761    /// Data source name: android.java_hprof
3762    /// Introduced in Android 11.
3763    #[prost(message, optional, tag="110")]
3764    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3765    /// Data source name: android.power
3766    #[prost(message, optional, tag="106")]
3767    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3768    /// Data source name: android.log
3769    #[prost(message, optional, tag="107")]
3770    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3771    /// Data source name: gpu.counters
3772    #[prost(message, optional, tag="108")]
3773    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3774    /// Data source name: android.game_interventions
3775    #[prost(message, optional, tag="116")]
3776    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3777    /// Data source name: android.packages_list
3778    #[prost(message, optional, tag="109")]
3779    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3780    /// Data source name: linux.perf
3781    #[prost(message, optional, tag="111")]
3782    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3783    /// Data source name: vulkan.memory_tracker
3784    #[prost(message, optional, tag="112")]
3785    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3786    /// Data source name: track_event
3787    #[prost(message, optional, tag="113")]
3788    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3789    /// Data source name: android.polled_state
3790    #[prost(message, optional, tag="114")]
3791    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3792    /// Data source name: android.system_property
3793    #[prost(message, optional, tag="118")]
3794    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3795    /// Data source name: android.statsd
3796    #[prost(message, optional, tag="117")]
3797    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3798    /// Data source name: linux.system_info
3799    #[prost(message, optional, tag="119")]
3800    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3801    /// Data source name: linux.frozen_ftrace
3802    #[prost(message, optional, tag="136")]
3803    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3804    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3805    /// avoid proto serialization and de-serialization there because that would
3806    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3807    /// C++ class for it so it can pass around plain C++ objets.
3808    #[prost(message, optional, tag="101")]
3809    pub chrome_config: ::core::option::Option<ChromeConfig>,
3810    /// Data source name: code.v8.dev
3811    #[prost(message, optional, tag="127")]
3812    pub v8_config: ::core::option::Option<V8Config>,
3813    /// If an interceptor is specified here, packets for this data source will be
3814    /// rerouted to the interceptor instead of the main trace buffer. This can be
3815    /// used, for example, to write trace data into ETW or for logging trace points
3816    /// to the console.
3817    ///
3818    /// Note that interceptors are only supported by data sources registered
3819    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3820    /// traced_probes) may not support interception.
3821    #[prost(message, optional, tag="115")]
3822    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3823    /// Data source name: android.network_packets.
3824    /// Introduced in Android 14 (U).
3825    #[prost(message, optional, tag="120")]
3826    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3827    /// Data source name: android.surfaceflinger.layers
3828    #[prost(message, optional, tag="121")]
3829    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3830    /// Data source name: android.surfaceflinger.transactions
3831    #[prost(message, optional, tag="123")]
3832    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3833    /// Data source name: android.sdk_sysprop_guard
3834    /// Introduced in Android 14 (U) QPR1.
3835    #[prost(message, optional, tag="124")]
3836    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3837    /// Data source name: windows.etw
3838    #[prost(message, optional, tag="125")]
3839    pub etw_config: ::core::option::Option<EtwConfig>,
3840    /// Data source name: android.protolog
3841    #[prost(message, optional, tag="126")]
3842    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3843    /// Data source name: android.input.inputevent
3844    #[prost(message, optional, tag="128")]
3845    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3846    /// Data source name: android.pixel.modem
3847    #[prost(message, optional, tag="129")]
3848    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3849    /// Data source name: android.windowmanager
3850    #[prost(message, optional, tag="130")]
3851    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3852    /// Data source name: org.chromium.system_metrics
3853    #[prost(message, optional, tag="131")]
3854    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3855    /// Data source name: android.kernel_wakelocks
3856    #[prost(message, optional, tag="132")]
3857    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3858    /// Data source name: gpu.renderstages
3859    #[prost(message, optional, tag="133")]
3860    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3861    /// Data source name: org.chromium.histogram_samples
3862    #[prost(message, optional, tag="134")]
3863    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3864    /// Data source name: android.app_wakelocks
3865    #[prost(message, optional, tag="135")]
3866    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3867    /// Data source name: android.cpu_per_uid
3868    #[prost(message, optional, tag="137")]
3869    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3870    /// Data source name: android.user_list
3871    #[prost(message, optional, tag="138")]
3872    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
3873    /// Data source name: android.inputmethod
3874    #[prost(message, optional, tag="139")]
3875    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
3876    /// Data source name: android.aflags
3877    #[prost(message, optional, tag="140")]
3878    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
3879    /// Data source name: qnx.kernel
3880    #[prost(message, optional, tag="150")]
3881    pub qnx_config: ::core::option::Option<QnxConfig>,
3882    /// This is a fallback mechanism to send a free-form text config to the
3883    /// producer. In theory this should never be needed. All the code that
3884    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3885    /// the trace config proto and propagate unknown fields. However, if anything
3886    /// in the pipeline (client or backend) ends up breaking this forward compat
3887    /// plan, this field will become the escape hatch to allow future data sources
3888    /// to get some meaningful configuration.
3889    #[prost(string, optional, tag="1000")]
3890    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3891    /// This field is only used for testing.
3892    #[prost(message, optional, tag="1001")]
3893    pub for_testing: ::core::option::Option<TestConfig>,
3894}
3895/// Nested message and enum types in `DataSourceConfig`.
3896pub mod data_source_config {
3897    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3898    #[repr(i32)]
3899    pub enum SessionInitiator {
3900        Unspecified = 0,
3901        /// This trace was initiated from a trusted system app has DUMP and
3902        /// USAGE_STATS permission. This system app is expected to not expose the
3903        /// trace to the user of the device.
3904        /// This is determined by checking the UID initiating the trace.
3905        TrustedSystem = 1,
3906    }
3907    impl SessionInitiator {
3908        /// String value of the enum field names used in the ProtoBuf definition.
3909        ///
3910        /// The values are not transformed in any way and thus are considered stable
3911        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3912        pub fn as_str_name(&self) -> &'static str {
3913            match self {
3914                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3915                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3916            }
3917        }
3918    }
3919    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3920    #[repr(i32)]
3921    pub enum BufferExhaustedPolicy {
3922        /// The data source will use its default buffer exhausted policy, specified
3923        /// by the code when the data source is registered.
3924        BufferExhaustedUnspecified = 0,
3925        /// The data source will drop packets when there's no space in the shared
3926        /// memory buffer.
3927        BufferExhaustedDrop = 1,
3928        /// The data source will wait when there's no space in the shared memory
3929        /// buffer. If there's still not space, after a few seconds, the whole
3930        /// producer process will be aborted.
3931        BufferExhaustedStallThenAbort = 2,
3932        /// The data source will wait when there's no space in the shared memory
3933        /// buffer.  If there's still not space, after a few seconds, the data source
3934        /// will drop packets.
3935        BufferExhaustedStallThenDrop = 3,
3936    }
3937    impl BufferExhaustedPolicy {
3938        /// String value of the enum field names used in the ProtoBuf definition.
3939        ///
3940        /// The values are not transformed in any way and thus are considered stable
3941        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3942        pub fn as_str_name(&self) -> &'static str {
3943            match self {
3944                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3945                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3946                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3947                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3948            }
3949        }
3950    }
3951}
3952// End of protos/perfetto/config/data_source_config.proto
3953
3954// Begin of protos/perfetto/config/trace_config.proto
3955
3956/// The overall config that is used when starting a new tracing session through
3957/// ProducerPort::StartTracing().
3958/// It contains the general config for the logging buffer(s) and the configs for
3959/// all the data source being enabled.
3960///
3961/// Next id: 47.
3962#[derive(Clone, PartialEq, ::prost::Message)]
3963pub struct TraceConfig {
3964    #[prost(message, repeated, tag="1")]
3965    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3966    #[prost(message, repeated, tag="2")]
3967    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3968    #[prost(message, optional, tag="20")]
3969    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3970    /// If specified, the trace will be stopped |duration_ms| after starting.
3971    /// This does *not* count the time the system is suspended, so we will run
3972    /// for duration_ms of system activity, not wall time.
3973    ///
3974    /// However in case of traces with triggers, see
3975    /// TriggerConfig.trigger_timeout_ms instead.
3976    #[prost(uint32, optional, tag="3")]
3977    pub duration_ms: ::core::option::Option<u32>,
3978    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3979    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3980    /// Linux/Android, no-op on other platforms. This is used when dealing with
3981    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3982    /// wall-time, making them more likely to hit device reboots (and hence loss).
3983    /// This option also changes consistently the semantic of
3984    /// TriggerConfig.stop_delay_ms.
3985    #[prost(bool, optional, tag="36")]
3986    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3987    /// This is set when --dropbox is passed to the Perfetto command line client
3988    /// and enables guardrails that limit resource usage for traces requested
3989    /// by statsd.
3990    #[prost(bool, optional, tag="4")]
3991    pub enable_extra_guardrails: ::core::option::Option<bool>,
3992    /// Reject producers that are not running under the same UID as the tracing
3993    /// service.
3994    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3995    pub lockdown_mode: ::core::option::Option<i32>,
3996    #[prost(message, repeated, tag="6")]
3997    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3998    /// Statsd-specific metadata.
3999    #[prost(message, optional, tag="7")]
4000    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
4001    /// When true && |output_path| is empty, the EnableTracing() request must
4002    /// provide a file descriptor. The service will then periodically read packets
4003    /// out of the trace buffer and store it into the passed file.
4004    /// If |output_path| is not empty no fd should be passed, the service
4005    /// will create a new file and write into that (see comment below).
4006    #[prost(bool, optional, tag="8")]
4007    pub write_into_file: ::core::option::Option<bool>,
4008    /// This must point to a non-existing file. If the file exists the service
4009    /// will NOT overwrite and will fail instead as a security precaution.
4010    /// On Android, when this is used with the system traced, the path must be
4011    /// within /data/misc/perfetto-traces/ or the trace will fail.
4012    /// This option has been introduced in Android R. Before R write_into_file
4013    /// can be used only with the "pass a file descriptor over IPC" mode.
4014    #[prost(string, optional, tag="29")]
4015    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
4016    /// Optional. If non-zero tunes the write period. A min value of 100ms is
4017    /// enforced (i.e. smaller values are ignored).
4018    #[prost(uint32, optional, tag="9")]
4019    pub file_write_period_ms: ::core::option::Option<u32>,
4020    /// Optional. When non zero the periodic write stops once at most X bytes
4021    /// have been written into the file. Tracing is disabled when this limit is
4022    /// reached, even if |duration_ms| has not been reached yet.
4023    #[prost(uint64, optional, tag="10")]
4024    pub max_file_size_bytes: ::core::option::Option<u64>,
4025    #[prost(message, optional, tag="11")]
4026    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
4027    /// When true, data sources are not started until an explicit call to
4028    /// StartTracing() on the consumer port. This is to support early
4029    /// initialization and fast trace triggering. This can be used only when the
4030    /// Consumer explicitly triggers the StartTracing() method.
4031    /// This should not be used in a remote trace config via statsd, doing so will
4032    /// result in a hung trace session.
4033    #[prost(bool, optional, tag="12")]
4034    pub deferred_start: ::core::option::Option<bool>,
4035    /// When set, it periodically issues a Flush() to all data source, forcing them
4036    /// to commit their data into the tracing service. This can be used for
4037    /// quasi-real-time streaming mode and to guarantee some partial ordering of
4038    /// events in the trace in windows of X ms.
4039    ///
4040    /// Warning: Perfetto automatically handles periodic flushing so in most
4041    /// scenarios setting this field is not needed. High frequency flushing can
4042    /// significantly impact performance.
4043    #[prost(uint32, optional, tag="13")]
4044    pub flush_period_ms: ::core::option::Option<u32>,
4045    /// Wait for this long for producers to acknowledge flush requests.
4046    /// Default 5s.
4047    #[prost(uint32, optional, tag="14")]
4048    pub flush_timeout_ms: ::core::option::Option<u32>,
4049    /// Wait for this long for producers to acknowledge stop requests.
4050    /// Default 5s.
4051    #[prost(uint32, optional, tag="23")]
4052    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
4053    /// Android-only. If set, sends an intent to the Traceur system app when the
4054    /// trace ends to notify it about the trace readiness.
4055    #[prost(bool, optional, tag="16")]
4056    pub notify_traceur: ::core::option::Option<bool>,
4057    /// This field was introduced in Android S.
4058    /// Android-only. If set to a value > 0, marks the trace session as a candidate
4059    /// for being attached to a bugreport. This field effectively acts as a z-index
4060    /// for bugreports. When Android's dumpstate runs perfetto
4061    /// --save-for-bugreport, traced will pick the tracing session with the highest
4062    /// score (score <= 0 is ignored) and:
4063    /// On Android S, T:  will steal its contents, save the trace into
4064    ///      a known path and stop prematurely.
4065    /// On Android U+: will create a read-only snapshot and save that into a known
4066    ///      path, without stoppin the original tracing session.
4067    /// When this field is set the tracing session becomes eligible to be cloned
4068    /// by other UIDs.
4069    #[prost(int32, optional, tag="30")]
4070    pub bugreport_score: ::core::option::Option<i32>,
4071    /// When set, defines name of the file that will be saved under
4072    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
4073    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
4074    /// starting from the highest `bugreport_score`.
4075    /// Introduced in v42 / Android V.
4076    #[prost(string, optional, tag="38")]
4077    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
4078    #[prost(message, optional, tag="17")]
4079    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
4080    /// When this is non-empty the perfetto command line tool will ignore the rest
4081    /// of this TraceConfig and instead connect to the perfetto service as a
4082    /// producer and send these triggers, potentially stopping or starting traces
4083    /// that were previous configured to use a TriggerConfig.
4084    #[prost(string, repeated, tag="18")]
4085    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4086    #[prost(message, optional, tag="21")]
4087    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
4088    /// No longer needed as we unconditionally allow tracing on user builds.
4089    #[deprecated]
4090    #[prost(bool, optional, tag="19")]
4091    pub allow_user_build_tracing: ::core::option::Option<bool>,
4092    /// If set the tracing service will ensure there is at most one tracing session
4093    /// with this key.
4094    #[prost(string, optional, tag="22")]
4095    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
4096    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
4097    pub compression_type: ::core::option::Option<i32>,
4098    #[prost(message, optional, tag="25")]
4099    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
4100    /// Android-only. Not for general use. If specified, sets the logging to statsd
4101    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
4102    /// this to enabled (if not explicitly set in the config) when specifying
4103    /// --upload.
4104    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
4105    pub statsd_logging: ::core::option::Option<i32>,
4106    /// An identifier clients can use to tie this trace to other logging.
4107    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
4108    /// Trace UUID. If this field is set, the tracing service will respect the
4109    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
4110    /// gap-less snapshotting is not used.
4111    #[deprecated]
4112    #[prost(int64, optional, tag="27")]
4113    pub trace_uuid_msb: ::core::option::Option<i64>,
4114    #[deprecated]
4115    #[prost(int64, optional, tag="28")]
4116    pub trace_uuid_lsb: ::core::option::Option<i64>,
4117    #[prost(message, optional, tag="33")]
4118    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
4119    #[prost(message, optional, tag="34")]
4120    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
4121    #[prost(message, optional, tag="35")]
4122    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
4123    #[prost(message, repeated, tag="39")]
4124    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
4125    /// Priority boost to be applied to the traced process, when the session is
4126    /// running.
4127    #[prost(message, optional, tag="40")]
4128    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
4129    /// When set to a value > 0, this tracing session will be started in
4130    /// "exclusive mode". This has the following semantics:
4131    /// - It can only be set by shell or root users.
4132    /// - A new exclusive session will only be started if its priority is strictly
4133    ///    higher than any other active tracing session.
4134    /// - If a new exclusive session is started, all other existing tracing
4135    ///    sessions (exclusive or not) are aborted.
4136    /// - While an exclusive session is active, any new non-exclusive session (or
4137    ///    any exclusive session with a lower or equal priority) will be rejected.
4138    ///
4139    /// Introduced in: perfetto v52.
4140    /// Supported on: Android 25Q3+.
4141    #[prost(uint32, optional, tag="41")]
4142    pub exclusive_prio: ::core::option::Option<u32>,
4143    /// Configures how the service should handle flushing data from producers
4144    /// before periodically writing the trace into the output file.
4145    /// Only applicable when |write_into_file| is true.
4146    ///
4147    /// By default, if |write_into_file| is set, the service periodically issues
4148    /// a Flush() to all data sources before writing buffers into the file.
4149    /// This ensures the file always contains the latest available data.
4150    ///
4151    /// Introduced in: perfetto v54.
4152    /// Supported on: Android 26Q1+.
4153    #[prost(enumeration="trace_config::WriteFlushMode", optional, tag="44")]
4154    pub write_flush_mode: ::core::option::Option<i32>,
4155    /// Whether to sync the output file to storage after each periodic write pass.
4156    /// Only applicable when |write_into_file| is true.
4157    ///
4158    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
4159    /// sync to storage on every write.
4160    ///
4161    /// Introduced in: perfetto v54.
4162    /// Supported on: Android 26Q1+.
4163    #[prost(enumeration="trace_config::FFlushMode", optional, tag="45")]
4164    pub fflush_post_write: ::core::option::Option<i32>,
4165    /// When true, data sources in remote producers (machines connected via
4166    /// traced_relay) will be matched by default. When false (the default), data
4167    /// sources only match the host machine. In either case, an explicit
4168    /// |DataSource.machine_name_filter| takes priority.
4169    ///
4170    /// NB: perfetto versions before v54 do not have this option and match across
4171    /// machines by default. To be compatible across this version boundary, either
4172    /// set this field to true, or set an explicit machine_name_filter on all data
4173    /// sources.
4174    ///
4175    /// Introduced in: perfetto v54.
4176    #[prost(bool, optional, tag="43")]
4177    pub trace_all_machines: ::core::option::Option<bool>,
4178    #[prost(message, repeated, tag="46")]
4179    pub notes: ::prost::alloc::vec::Vec<trace_config::Note>,
4180}
4181/// Nested message and enum types in `TraceConfig`.
4182pub mod trace_config {
4183    #[derive(Clone, PartialEq, ::prost::Message)]
4184    pub struct BufferConfig {
4185        #[prost(uint32, optional, tag="1")]
4186        pub size_kb: ::core::option::Option<u32>,
4187        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
4188        pub fill_policy: ::core::option::Option<i32>,
4189        /// When true the buffer is moved (rather than copied) onto the cloned
4190        /// session, and an empty buffer of the same size is allocated in the source
4191        /// tracing session. This feature will likely get deprecated in the future.
4192        /// It been introduced mainly to support the surfaceflinger snapshot dump
4193        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
4194        /// that case we don't want to retain another in-memory copy of the buffer.
4195        #[prost(bool, optional, tag="5")]
4196        pub transfer_on_clone: ::core::option::Option<bool>,
4197        /// Used in conjunction with transfer_on_clone. When true the buffer is
4198        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
4199        /// that if the data source took too long to write the data in a previous
4200        /// clone-related flush, we don't end up with a mixture of leftovers from
4201        /// the previous write and new data.
4202        #[prost(bool, optional, tag="6")]
4203        pub clear_before_clone: ::core::option::Option<bool>,
4204        /// Optional name for this buffer. If set, data sources can reference this
4205        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
4206        /// using the buffer index. Buffer names must be unique within a tracing
4207        /// session. This provides a more human-readable and less error-prone way to
4208        /// configure which buffer a data source writes to.
4209        #[prost(string, optional, tag="7")]
4210        pub name: ::core::option::Option<::prost::alloc::string::String>,
4211        #[prost(enumeration="buffer_config::ExperimentalMode", optional, tag="8")]
4212        pub experimental_mode: ::core::option::Option<i32>,
4213    }
4214    /// Nested message and enum types in `BufferConfig`.
4215    pub mod buffer_config {
4216        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4217        #[repr(i32)]
4218        pub enum FillPolicy {
4219            Unspecified = 0,
4220            /// Default behavior. The buffer operates as a conventional ring buffer.
4221            /// If the writer is faster than the reader (or if the reader reads only
4222            /// after tracing is stopped) newly written packets will overwrite old
4223            /// packets.
4224            RingBuffer = 1,
4225            /// Behaves like RING_BUFFER as long as there is space in the buffer or
4226            /// the reader catches up with the writer. As soon as the writer hits
4227            /// an unread chunk, it stops accepting new data in the buffer.
4228            Discard = 2,
4229        }
4230        impl FillPolicy {
4231            /// String value of the enum field names used in the ProtoBuf definition.
4232            ///
4233            /// The values are not transformed in any way and thus are considered stable
4234            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4235            pub fn as_str_name(&self) -> &'static str {
4236                match self {
4237                    FillPolicy::Unspecified => "UNSPECIFIED",
4238                    FillPolicy::RingBuffer => "RING_BUFFER",
4239                    FillPolicy::Discard => "DISCARD",
4240                }
4241            }
4242        }
4243        /// When true, uses the experimental TraceBufferV2 implementation for this
4244        /// buffer. This is for testing purposes only and may be removed in future
4245        /// versions.
4246        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4247        #[repr(i32)]
4248        pub enum ExperimentalMode {
4249            /// Use the default V1 implementation.
4250            ModeUnspecified = 0,
4251            /// Use TraceBufferV2.
4252            TraceBufferV2 = 1,
4253            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
4254            /// but only V1 data is returned. Comparison stats are reported to
4255            /// validate V2 returns equivalent data.
4256            TraceBufferV2ShadowMode = 2,
4257        }
4258        impl ExperimentalMode {
4259            /// String value of the enum field names used in the ProtoBuf definition.
4260            ///
4261            /// The values are not transformed in any way and thus are considered stable
4262            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4263            pub fn as_str_name(&self) -> &'static str {
4264                match self {
4265                    ExperimentalMode::ModeUnspecified => "MODE_UNSPECIFIED",
4266                    ExperimentalMode::TraceBufferV2 => "TRACE_BUFFER_V2",
4267                    ExperimentalMode::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
4268                }
4269            }
4270        }
4271    }
4272    #[derive(Clone, PartialEq, ::prost::Message)]
4273    pub struct DataSource {
4274        /// Filters and data-source specific config. It contains also the unique name
4275        /// of the data source, the one passed in the  DataSourceDescriptor when they
4276        /// register on the service.
4277        #[prost(message, optional, tag="1")]
4278        pub config: ::core::option::Option<super::DataSourceConfig>,
4279        /// Optional. If multiple producers (~processes) expose the same data source
4280        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
4281        /// the data source is enabled only for producers whose names match any of
4282        /// the filters.
4283        /// |producer_name_filter| has to be an exact match, while
4284        /// |producer_name_regex_filter| is a regular expression.
4285        /// This allows to enable a data source only for specific processes.
4286        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
4287        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
4288        #[prost(string, repeated, tag="2")]
4289        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4290        #[prost(string, repeated, tag="3")]
4291        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4292        /// Filter by machine names. The name of a machine is determined by the
4293        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
4294        /// variable is not set then the
4295        /// persist.traced_relay.machine_name system property is used. If the
4296        /// sysprop isn't set or not in an Android system, then the machine name by
4297        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
4298        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
4299        /// to the host machine, which is the machine running traced.
4300        #[prost(string, repeated, tag="4")]
4301        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4302    }
4303    /// Config for disabling builtin data sources in the tracing service.
4304    #[derive(Clone, PartialEq, ::prost::Message)]
4305    pub struct BuiltinDataSource {
4306        /// Disable emitting clock timestamps into the trace.
4307        #[prost(bool, optional, tag="1")]
4308        pub disable_clock_snapshotting: ::core::option::Option<bool>,
4309        /// Disable echoing the original trace config in the trace.
4310        #[prost(bool, optional, tag="2")]
4311        pub disable_trace_config: ::core::option::Option<bool>,
4312        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
4313        #[prost(bool, optional, tag="3")]
4314        pub disable_system_info: ::core::option::Option<bool>,
4315        /// Disable emitting events for data-source state changes (e.g. the marker
4316        /// for all data sources having ACKed the start of the trace).
4317        #[prost(bool, optional, tag="4")]
4318        pub disable_service_events: ::core::option::Option<bool>,
4319        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
4320        /// also ClockSnapshot's primary_trace_clock. The configured value is written
4321        /// into the trace as part of the ClockSnapshots emitted by the service.
4322        /// Trace processor will attempt to translate packet/event timestamps from
4323        /// various data sources (and their chosen clock domains) to this domain
4324        /// during import. Added in Android R.
4325        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
4326        pub primary_trace_clock: ::core::option::Option<i32>,
4327        /// Time interval in between snapshotting of sync markers, clock snapshots,
4328        /// stats, and other periodic service-emitted events. Note that the service
4329        /// only keeps track of the first and the most recent snapshot until
4330        /// ReadBuffers() is called.
4331        #[prost(uint32, optional, tag="6")]
4332        pub snapshot_interval_ms: ::core::option::Option<u32>,
4333        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
4334        /// clock should be used for periodic snapshots of service-emitted events.
4335        /// This means, if a snapshot *should* have happened during suspend, it will
4336        /// happen immediately after the device resumes.
4337        ///
4338        /// Choosing a clock like this is done on best-effort basis; not all
4339        /// platforms (e.g. Windows) expose a clock which can be used for periodic
4340        /// tasks counting suspend. If such a clock is not available, the service
4341        /// falls back to the best-available alternative.
4342        ///
4343        /// Introduced in Android S.
4344        /// TODO(lalitm): deprecate this in T and make this the default if nothing
4345        /// crashes in S.
4346        #[prost(bool, optional, tag="7")]
4347        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
4348        /// Disables the reporting of per-trace-writer histograms in TraceStats.
4349        #[prost(bool, optional, tag="8")]
4350        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
4351        /// Disable emitting extension descriptors into the trace.
4352        #[prost(bool, optional, tag="9")]
4353        pub disable_extension_descriptors: ::core::option::Option<bool>,
4354    }
4355    #[derive(Clone, PartialEq, ::prost::Message)]
4356    pub struct ProducerConfig {
4357        /// Identifies the producer for which this config is for.
4358        #[prost(string, optional, tag="1")]
4359        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
4360        /// Specifies the preferred size of the shared memory buffer. If the size is
4361        /// larger than the max size, the max will be used. If it is smaller than
4362        /// the page size or doesn't fit pages evenly into it, it will fall back to
4363        /// the size specified by the producer or finally the default shared memory
4364        /// size.
4365        #[prost(uint32, optional, tag="2")]
4366        pub shm_size_kb: ::core::option::Option<u32>,
4367        /// Specifies the preferred size of each page in the shared memory buffer.
4368        /// Must be an integer multiple of 4K.
4369        #[prost(uint32, optional, tag="3")]
4370        pub page_size_kb: ::core::option::Option<u32>,
4371    }
4372    /// Contains statsd-specific metadata about an alert associated with the trace.
4373    #[derive(Clone, PartialEq, ::prost::Message)]
4374    pub struct StatsdMetadata {
4375        /// The identifier of the alert which triggered this trace.
4376        #[prost(int64, optional, tag="1")]
4377        pub triggering_alert_id: ::core::option::Option<i64>,
4378        /// The uid which registered the triggering configuration with statsd.
4379        #[prost(int32, optional, tag="2")]
4380        pub triggering_config_uid: ::core::option::Option<i32>,
4381        /// The identifier of the config which triggered the alert.
4382        #[prost(int64, optional, tag="3")]
4383        pub triggering_config_id: ::core::option::Option<i64>,
4384        /// The identifier of the subscription which triggered this trace.
4385        #[prost(int64, optional, tag="4")]
4386        pub triggering_subscription_id: ::core::option::Option<i64>,
4387    }
4388    /// Contains flags which override the default values of the guardrails inside
4389    /// Perfetto.
4390    #[derive(Clone, PartialEq, ::prost::Message)]
4391    pub struct GuardrailOverrides {
4392        /// Override the default limit (in bytes) for uploading data to server within
4393        /// a 24 hour period.
4394        /// On R-, this override only affected userdebug builds. Since S, it also
4395        /// affects user builds.
4396        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
4397        /// was removed from Perfetto.
4398        #[deprecated]
4399        #[prost(uint64, optional, tag="1")]
4400        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
4401        /// Overrides the guardrail for maximum trace buffer size.
4402        /// Available on U+
4403        #[prost(uint32, optional, tag="2")]
4404        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
4405    }
4406    /// Triggers allow producers to start or stop the tracing session when an event
4407    /// occurs.
4408    ///
4409    /// For example if we are tracing probabilistically, most traces will be
4410    /// uninteresting. Triggers allow us to keep only the interesting ones such as
4411    /// those traces during which the device temperature reached a certain
4412    /// threshold. In this case the producer can activate a trigger to keep
4413    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
4414    /// (START_TRACING) because it knows something is about to happen.
4415    #[derive(Clone, PartialEq, ::prost::Message)]
4416    pub struct TriggerConfig {
4417        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
4418        pub trigger_mode: ::core::option::Option<i32>,
4419        /// This flag is really a workaround for b/274931668. This is needed only
4420        /// when deploying configs to different versions of the tracing service.
4421        /// When this is set to true this has the same effect of setting trigger_mode
4422        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
4423        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
4424        /// versions of Android and fall back to STOP_TRACING on older versions where
4425        /// CLONE_SNAPSHOT did not exist.
4426        /// When using this flag, trigger_mode must be set to STOP_TRACING.
4427        #[prost(bool, optional, tag="5")]
4428        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
4429        /// A list of triggers which are related to this configuration. If ANY
4430        /// trigger is seen then an action will be performed based on |trigger_mode|.
4431        #[prost(message, repeated, tag="2")]
4432        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
4433        /// Required and must be positive if a TriggerConfig is specified. This is
4434        /// how long this TraceConfig should wait for a trigger to arrive. After this
4435        /// period of time if no trigger is seen the TracingSession will be cleaned
4436        /// up.
4437        #[prost(uint32, optional, tag="3")]
4438        pub trigger_timeout_ms: ::core::option::Option<u32>,
4439    }
4440    /// Nested message and enum types in `TriggerConfig`.
4441    pub mod trigger_config {
4442        #[derive(Clone, PartialEq, ::prost::Message)]
4443        pub struct Trigger {
4444            /// The producer must specify this name to activate the trigger.
4445            #[prost(string, optional, tag="1")]
4446            pub name: ::core::option::Option<::prost::alloc::string::String>,
4447            /// An std::regex that will match the producer that can activate this
4448            /// trigger. This is optional. If unset any producers can activate this
4449            /// trigger.
4450            #[prost(string, optional, tag="2")]
4451            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
4452            /// After a trigger is received either in START_TRACING or STOP_TRACING
4453            /// mode then the trace will end |stop_delay_ms| after triggering.
4454            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
4455            /// snapshot.
4456            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
4457            /// based on wall-clock, counting also time in suspend.
4458            #[prost(uint32, optional, tag="3")]
4459            pub stop_delay_ms: ::core::option::Option<u32>,
4460            /// Limits the number of traces this trigger can start/stop in a rolling
4461            /// 24 hour window. If this field is unset or zero, no limit is applied and
4462            /// activiation of this trigger *always* starts/stops the trace.
4463            #[prost(uint32, optional, tag="4")]
4464            pub max_per_24_h: ::core::option::Option<u32>,
4465            /// A value between 0 and 1 which encodes the probability of skipping a
4466            /// trigger with this name. This is useful for reducing the probability
4467            /// of high-frequency triggers from dominating trace finaization. If this
4468            /// field is unset or zero, the trigger will *never* be skipped. If this
4469            /// field is greater than or equal to 1, this trigger will *always* be
4470            /// skipped i.e. it will be as if this trigger was never included in the
4471            /// first place.
4472            /// This probability check is applied *before* any other limits. For
4473            /// example, if |max_per_24_h| is also set, first we will check if the
4474            /// probability bar is met and only then will we check the |max_per_24_h|
4475            /// limit.
4476            #[prost(double, optional, tag="5")]
4477            pub skip_probability: ::core::option::Option<f64>,
4478        }
4479        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4480        #[repr(i32)]
4481        pub enum TriggerMode {
4482            Unspecified = 0,
4483            /// When this mode is chosen, data sources are not started until one of the
4484            /// |triggers| are received. This supports early initialization and fast
4485            /// starting of the tracing system. On triggering, the session will then
4486            /// record for |stop_delay_ms|. However if no trigger is seen
4487            /// after |trigger_timeout_ms| the session will be stopped and no data will
4488            /// be returned.
4489            StartTracing = 1,
4490            /// When this mode is chosen, the session will be started via the normal
4491            /// EnableTracing() & StartTracing(). If no trigger is ever seen
4492            /// the session will be stopped after |trigger_timeout_ms| and no data will
4493            /// be returned. However if triggered the trace will stop after
4494            /// |stop_delay_ms| and any data in the buffer will be returned to the
4495            /// consumer.
4496            StopTracing = 2,
4497            /// When this mode is chosen, this causes a snapshot of the current tracing
4498            /// session to be created after |stop_delay_ms| while the current tracing
4499            /// session continues undisturbed (% an extra flush). This mode can be
4500            /// used only when the tracing session is handled by the "perfetto" cmdline
4501            /// client (which is true in 90% of cases). Part of the business logic
4502            /// necessary for this behavior, and ensuing file handling, lives in
4503            /// perfetto_cmd.cc . On other consumers, this causes only a notification
4504            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
4505            /// consumer is supposed to call CloneSession() itself after the event.
4506            /// Use use_clone_snapshot_if_available=true when targeting older versions
4507            /// of perfetto.
4508            CloneSnapshot = 4,
4509        }
4510        impl TriggerMode {
4511            /// String value of the enum field names used in the ProtoBuf definition.
4512            ///
4513            /// The values are not transformed in any way and thus are considered stable
4514            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4515            pub fn as_str_name(&self) -> &'static str {
4516                match self {
4517                    TriggerMode::Unspecified => "UNSPECIFIED",
4518                    TriggerMode::StartTracing => "START_TRACING",
4519                    TriggerMode::StopTracing => "STOP_TRACING",
4520                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
4521                }
4522            }
4523        }
4524    }
4525    /// Configuration for trace contents that reference earlier trace data. For
4526    /// example, a data source might intern strings, and emit packets containing
4527    /// {interned id : string} pairs. Future packets from that data source can then
4528    /// use the interned ids instead of duplicating the raw string contents. The
4529    /// trace parser will then need to use that interning table to fully interpret
4530    /// the rest of the trace.
4531    #[derive(Clone, PartialEq, ::prost::Message)]
4532    pub struct IncrementalStateConfig {
4533        /// If nonzero, notify eligible data sources to clear their incremental state
4534        /// periodically, with the given period. The notification is sent only to
4535        /// data sources that have |handles_incremental_state_clear| set in their
4536        /// DataSourceDescriptor. The notification requests that the data source
4537        /// stops referring to past trace contents. This is particularly useful when
4538        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
4539        /// trace data.
4540        ///
4541        /// Warning: this time-based global clearing is likely to be removed in the
4542        /// future, to be replaced with a smarter way of sending the notifications
4543        /// only when necessary.
4544        #[prost(uint32, optional, tag="1")]
4545        pub clear_period_ms: ::core::option::Option<u32>,
4546    }
4547    /// Android-only. Not for general use. If set, saves the trace into an
4548    /// incident. This field is read by perfetto_cmd, rather than the tracing
4549    /// service. This field must be set when passing the --upload flag to
4550    /// perfetto_cmd.
4551    ///
4552    /// In this message, either:
4553    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4554    ///     must be set.
4555    ///   * |skip_incidentd| must be explicitly set to true.
4556    #[derive(Clone, PartialEq, ::prost::Message)]
4557    pub struct IncidentReportConfig {
4558        #[prost(string, optional, tag="1")]
4559        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4560        #[prost(string, optional, tag="2")]
4561        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4562        /// Level of filtering in the requested incident. See |Destination| in
4563        /// frameworks/base/core/proto/android/privacy.proto.
4564        #[prost(int32, optional, tag="3")]
4565        pub privacy_level: ::core::option::Option<i32>,
4566        /// If true, then skips saving the trace to incidentd.
4567        ///
4568        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4569        /// or when we explicitly don't want traces to go to incidentd even when they
4570        /// usually would (e.g. configs deployed using statsd but only used for
4571        /// inclusion in bugreports using |bugreport_score|).
4572        ///
4573        /// The motivation for having this flag, instead of just not setting
4574        /// |incident_report_config|, is prevent accidents where
4575        /// |incident_report_config| is omitted by mistake.
4576        #[prost(bool, optional, tag="5")]
4577        pub skip_incidentd: ::core::option::Option<bool>,
4578        /// If true, do not write the trace into dropbox (i.e. incident only).
4579        /// Otherwise, write to both dropbox and incident.
4580        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4581        #[deprecated]
4582        #[prost(bool, optional, tag="4")]
4583        pub skip_dropbox: ::core::option::Option<bool>,
4584    }
4585    /// When set applies a post-filter to the trace contents using the filter
4586    /// provided. The filter is applied at ReadBuffers() time and works both in the
4587    /// case of IPC readback and write_into_file. This filter can be generated
4588    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4589    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4590    /// design.
4591    ///
4592    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4593    /// Android T with a different field number. Updated in Android U with a new
4594    /// bytecode version which supports string filtering.
4595    ///
4596    /// =========================
4597    /// Filter bytecode.
4598    /// =========================
4599    #[derive(Clone, PartialEq, ::prost::Message)]
4600    pub struct TraceFilter {
4601        /// The bytecode as implemented in Android T.
4602        #[prost(bytes="vec", optional, tag="1")]
4603        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4604        /// The bytecode as implemented in Android U. Adds support for string
4605        /// filtering.
4606        #[prost(bytes="vec", optional, tag="2")]
4607        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4608        #[prost(message, optional, tag="3")]
4609        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4610        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
4611        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
4612        /// versions ignore this field; new versions apply it.
4613        ///
4614        /// The motivation for this is that adding new opcodes in a backwards
4615        /// compatible way while also minimizing config size is hard. Instead, the
4616        /// overlay mechanism allows us to "patch" specific fields in the original
4617        /// bytecode_v2 with new semantics.
4618        ///
4619        /// See RFC 0011-subset-string-filter-rules.md for more info.
4620        ///
4621        /// Note:
4622        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
4623        /// markers), this overlay uses a triplet format with explicit indices:
4624        ///    [msg_index, field_id << 3 | opcode, argument] ... \[checksum\]
4625        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
4626        /// Entries must be sorted by (msg_index, field_id).
4627        ///
4628        /// The parser processes bytecode_v2 and this overlay simultaneously:
4629        ///   - any field not mentioned in the overlay is parsed as usual
4630        ///   - any field in the overlay but *not* in the bytecode_v2 is added
4631        ///     with its overlay value
4632        ///   - any field in both the overlay and bytecode_v2 takes the value in the
4633        ///     overlay, the bytecode_v2 value is ignored.
4634        ///
4635        /// Note: despite the name, this was broken in v54 (the overlay was not
4636        /// passed through to the bytecode parser). Only works in v55+.
4637        #[prost(bytes="vec", optional, tag="4")]
4638        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4639        /// String filter chain for Perfetto v54+. Rules in this chain either
4640        /// overwrite rules in string_filter_chain (if the name matches) or are
4641        /// appended (if the name doesn't match). This allows modifying existing
4642        /// rules (e.g., changing policy) without duplicating the entire chain.
4643        /// Rules without a name are always appended.
4644        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4645        /// Introduced in: Perfetto v54.
4646        #[prost(message, optional, tag="5")]
4647        pub string_filter_chain_v54: ::core::option::Option<trace_filter::StringFilterChain>,
4648    }
4649    /// Nested message and enum types in `TraceFilter`.
4650    pub mod trace_filter {
4651        /// A rule specifies how strings should be filtered.
4652        #[derive(Clone, PartialEq, ::prost::Message)]
4653        pub struct StringFilterRule {
4654            /// The policy (i.e. algorithm) dictating how strings matching this rule
4655            /// should be handled.
4656            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
4657            pub policy: ::core::option::Option<i32>,
4658            /// The regex pattern used to match against each string.
4659            #[prost(string, optional, tag="2")]
4660            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
4661            /// The string which should appear after the tgid in atrace tracepoint
4662            /// strings.
4663            #[prost(string, optional, tag="3")]
4664            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
4665            /// Optional name for the rule. When merging chains (e.g. via
4666            /// string_filter_chain_v54), rules with matching names in the newer chain
4667            /// will overwrite rules in the base chain. Rules without a name (empty or
4668            /// unset) are always treated as distinct and will be appended.
4669            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4670            /// Introduced in: Perfetto v54.
4671            #[prost(string, optional, tag="4")]
4672            pub name: ::core::option::Option<::prost::alloc::string::String>,
4673            /// The semantic types this rule applies to.
4674            ///
4675            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
4676            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
4677            /// - If non-empty, the rule applies only to fields whose semantic type
4678            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
4679            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
4680            ///
4681            /// Examples:
4682            ///    semantic_type: []           -> matches only UNSPECIFIED fields
4683            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
4684            ///    semantic_type: [UNSPECIFIED, ATRACE] -> matches both
4685            ///
4686            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4687            /// Introduced in: Perfetto v54.
4688            #[prost(enumeration="super::super::SemanticType", repeated, packed="false", tag="5")]
4689            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
4690        }
4691        /// A chain is a list of rules which string will be sequentially checked
4692        /// against.
4693        #[derive(Clone, PartialEq, ::prost::Message)]
4694        pub struct StringFilterChain {
4695            #[prost(message, repeated, tag="1")]
4696            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
4697        }
4698        // =========================
4699        // String filtering
4700        // =========================
4701
4702        // The principles and terminology of string filtering is heavily inspired by
4703        // iptables. A "rule" decide how strings should be filtered. Each rule
4704        // contains a "policy" which indicates the algorithm to use for filtering.
4705        // A "chain" is a list of rules which will be sequentially checked against
4706        // each string.
4707        //
4708        // The first rule which applies to the string terminates filtering for that
4709        // string. If no rules apply, the string is left unchanged.
4710
4711        /// A policy specifies which algorithm should be used for filtering the
4712        /// string.
4713        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4714        #[repr(i32)]
4715        pub enum StringFilterPolicy {
4716            SfpUnspecified = 0,
4717            /// Tries to match the string field against |regex_pattern|. If it
4718            /// matches, all matching groups are "redacted" (i.e. replaced with a
4719            /// constant string) and filtering is terminated (i.e. no further rules are
4720            /// checked). If it doesn't match, the string is left unchanged and the
4721            /// next rule in chain is considered.
4722            SfpMatchRedactGroups = 1,
4723            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
4724            /// checking the regex. Specifically, it tries to parse the string field as
4725            /// an atrace tracepoint and checks if the post-tgid field starts with
4726            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4727            /// this check succeeds.
4728            SfpAtraceMatchRedactGroups = 2,
4729            /// Tries to match the string field against |regex_pattern|. If it
4730            /// matches, filtering is terminated (i.e. no further rules are checked).
4731            /// If it doesn't match, the string is left unchanged and the next rule in
4732            /// chain is considered.
4733            SfpMatchBreak = 3,
4734            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
4735            /// the regex. Specifically, it tries to parse the string field as an
4736            /// atrace tracepoint and checks if the post-tgid field starts with
4737            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4738            /// this check succeeds.
4739            SfpAtraceMatchBreak = 4,
4740            /// Tries to repeatedly search (i.e. find substrings of) the string field
4741            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
4742            /// replaced with a constant string). Once there are no further matches,
4743            /// filtering is terminated (i.e. no further rules are checked).
4744            ///
4745            /// Note that this is policy is a "search" policy not a "match" policy
4746            /// unlike the above policies:
4747            ///   * Match policies require matching the full string i.e. there is an
4748            ///     implicit leading `^` and trailing `$`.
4749            ///   * Search policies perform repeated partial matching of the string
4750            ///     e.g.
4751            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
4752            ///       - Pattern: `foo=(\d+)`
4753            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
4754            ///     where P6O is the redaction string
4755            ///
4756            /// All of this is only performed after some pre-work where we try to parse
4757            /// the string field as an atrace tracepoint and check if the post-tgid
4758            /// field starts with |atrace_post_tgid_starts_with|.
4759            ///
4760            /// If there are no partial matches, the string is left unchanged and the
4761            /// next rule in chain is considered.
4762            SfpAtraceRepeatedSearchRedactGroups = 5,
4763        }
4764        impl StringFilterPolicy {
4765            /// String value of the enum field names used in the ProtoBuf definition.
4766            ///
4767            /// The values are not transformed in any way and thus are considered stable
4768            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4769            pub fn as_str_name(&self) -> &'static str {
4770                match self {
4771                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
4772                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
4773                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
4774                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
4775                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
4776                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
4777                }
4778            }
4779        }
4780    }
4781    /// Android-only. Not for general use. If set, reports the trace to the
4782    /// Android framework. This field is read by perfetto_cmd, rather than the
4783    /// tracing service. This field must be set when passing the --upload flag to
4784    /// perfetto_cmd.
4785    ///
4786    /// In this message, either:
4787    ///   * |reporter_service_package| and |reporter_service_class| must be set.
4788    ///   * |skip_reporting| must be explicitly set to true.
4789    #[derive(Clone, PartialEq, ::prost::Message)]
4790    pub struct AndroidReportConfig {
4791        #[prost(string, optional, tag="1")]
4792        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
4793        #[prost(string, optional, tag="2")]
4794        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
4795        /// If true, then skips reporting the trace to Android framework.
4796        ///
4797        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4798        /// or when we explicitly don't want to report traces to the framework even
4799        /// when they usually would (e.g. configs deployed using statsd but only
4800        /// used for inclusion in bugreports using |bugreport_score|).
4801        ///
4802        /// The motivation for having this flag, instead of just not setting
4803        /// |framework_report_config|, is prevent accidents where
4804        /// |framework_report_config| is omitted by mistake.
4805        #[prost(bool, optional, tag="3")]
4806        pub skip_report: ::core::option::Option<bool>,
4807        /// If true, will direct the Android framework to read the data in trace
4808        /// file and pass it to the reporter class over a pipe instead of passing
4809        /// the file descriptor directly.
4810        ///
4811        /// This flag is needed because the Android test framework does not
4812        /// currently support priv-app helper apps (in terms of SELinux) and we
4813        /// really don't want to add an allow rule for untrusted_app to receive
4814        /// trace fds.
4815        ///
4816        /// Because of this, we instead will direct the framework to create a new
4817        /// pipe and pass this to the reporter process instead. As the pipe is
4818        /// created by the framework, we won't have any problems with SELinux
4819        /// (system_server is already allowed to pass pipe fds, even
4820        /// to untrusted apps).
4821        ///
4822        /// As the name suggests this option *MUST* only be used for testing.
4823        /// Note that the framework will reject (and drop) files which are too
4824        /// large both for simplicity and to be minimize the amount of data we
4825        /// pass to a non-priv app (note that the framework will still check
4826        /// manifest permissions even though SELinux permissions are worked around).
4827        #[prost(bool, optional, tag="4")]
4828        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
4829    }
4830    /// If set, delays the start of tracing by a random duration. The duration is
4831    /// chosen from a uniform distribution between the specified minimum and
4832    /// maximum.
4833    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4834    /// not work if you communicate with traced directly over the consumer API.
4835    /// Introduced in Android T.
4836    #[derive(Clone, PartialEq, ::prost::Message)]
4837    pub struct CmdTraceStartDelay {
4838        #[prost(uint32, optional, tag="1")]
4839        pub min_delay_ms: ::core::option::Option<u32>,
4840        #[prost(uint32, optional, tag="2")]
4841        pub max_delay_ms: ::core::option::Option<u32>,
4842    }
4843    /// When non-empty, ensures that for a each semaphore named `name at most
4844    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4845    /// minimum of all values specified by this config or any already-running
4846    /// session) can be be running.
4847    ///
4848    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4849    /// and the tracing session will not be started (or elgible to start in
4850    /// the case of deferred sessions).
4851    ///
4852    /// This is easiest to explain with an example. Suppose the tracing service has
4853    /// the following active tracing sessions:
4854    ///    S1 = [{name=foo, max_other_session_count=2},
4855    ///          {name=bar, max_other_session_count=0}]
4856    ///    S2 = [{name=foo, max_other_session_count=1},
4857    ///          {name=baz, max_other_session_count=1}]
4858    ///
4859    /// Then, for a new session, the following would be the expected behaviour of
4860    /// EnableSession given the state of `session_semaphores`.
4861    ///    Q: session_semaphores = []
4862    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4863    ///       no matter the state of any other tracing session.
4864    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4865    ///    A: Allowed because both S2 and this config specify
4866    ///       max_other_session_count=1 for baz.
4867    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4868    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4869    ///       takes that slot.
4870    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4871    ///    A: Denied because S1 takes the the slot specified by both S1 and
4872    ///       this config.
4873    ///
4874    /// Introduced in 24Q3 (Android V).
4875    #[derive(Clone, PartialEq, ::prost::Message)]
4876    pub struct SessionSemaphore {
4877        /// The name of the semaphore. Acts as a unique identifier across all
4878        /// tracing sessions (including the one being started).
4879        #[prost(string, optional, tag="1")]
4880        pub name: ::core::option::Option<::prost::alloc::string::String>,
4881        /// The maximum number of *other* sesssions which specify the same semaphore
4882        /// which can be active. The minimum of this value across all tracing
4883        /// sessions and the value specified by the config is used when deciding
4884        /// whether the tracing session can be started.
4885        #[prost(uint64, optional, tag="2")]
4886        pub max_other_session_count: ::core::option::Option<u64>,
4887    }
4888    /// Allow key, value pairs to save arbitrary data about trace.
4889    #[derive(Clone, PartialEq, ::prost::Message)]
4890    pub struct Note {
4891        /// Required.
4892        #[prost(string, optional, tag="1")]
4893        pub key: ::core::option::Option<::prost::alloc::string::String>,
4894        /// Required.
4895        #[prost(string, optional, tag="2")]
4896        pub value: ::core::option::Option<::prost::alloc::string::String>,
4897    }
4898    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4899    #[repr(i32)]
4900    pub enum LockdownModeOperation {
4901        LockdownUnchanged = 0,
4902        LockdownClear = 1,
4903        LockdownSet = 2,
4904    }
4905    impl LockdownModeOperation {
4906        /// String value of the enum field names used in the ProtoBuf definition.
4907        ///
4908        /// The values are not transformed in any way and thus are considered stable
4909        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4910        pub fn as_str_name(&self) -> &'static str {
4911            match self {
4912                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4913                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4914                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4915            }
4916        }
4917    }
4918    /// Compress trace with the given method. Best effort.
4919    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4920    #[repr(i32)]
4921    pub enum CompressionType {
4922        Unspecified = 0,
4923        Deflate = 1,
4924    }
4925    impl CompressionType {
4926        /// String value of the enum field names used in the ProtoBuf definition.
4927        ///
4928        /// The values are not transformed in any way and thus are considered stable
4929        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4930        pub fn as_str_name(&self) -> &'static str {
4931            match self {
4932                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4933                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4934            }
4935        }
4936    }
4937    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4938    #[repr(i32)]
4939    pub enum StatsdLogging {
4940        Unspecified = 0,
4941        Enabled = 1,
4942        Disabled = 2,
4943    }
4944    impl StatsdLogging {
4945        /// String value of the enum field names used in the ProtoBuf definition.
4946        ///
4947        /// The values are not transformed in any way and thus are considered stable
4948        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4949        pub fn as_str_name(&self) -> &'static str {
4950            match self {
4951                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4952                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4953                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4954            }
4955        }
4956    }
4957    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4958    #[repr(i32)]
4959    pub enum WriteFlushMode {
4960        /// Same as WRITE_FLUSH_AUTO.
4961        WriteFlushUnspecified = 0,
4962        /// Default mode. The service automatically determines the flush frequency
4963        /// to balance performance and data freshness:
4964        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
4965        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
4966        ///     issued every 5s.
4967        /// 2) If file_write_period_ms > 5s:
4968        ///     A flush is issued before every periodic write into the file.
4969        WriteFlushAuto = 1,
4970        // The following modes are intended for advanced usage and not recommended
4971        // for general use.
4972
4973        /// Do not flush buffers before periodic writes into the file.
4974        /// Use this mode if you want to minimize the performance impact of flushes
4975        /// and can tolerate potentially missing the most recent data in the trace
4976        /// file until the end of the session or an explicit flush.
4977        /// When this mode is selected, |flush_period_ms| is respected.
4978        WriteFlushDisabled = 2,
4979        /// Issue a flush before every periodic write into the file.
4980        /// This ensures that each write into the file contains the most up-to-date
4981        /// data from all data sources, but may have a higher performance overhead.
4982        WriteFlushEnabled = 3,
4983    }
4984    impl WriteFlushMode {
4985        /// String value of the enum field names used in the ProtoBuf definition.
4986        ///
4987        /// The values are not transformed in any way and thus are considered stable
4988        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4989        pub fn as_str_name(&self) -> &'static str {
4990            match self {
4991                WriteFlushMode::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
4992                WriteFlushMode::WriteFlushAuto => "WRITE_FLUSH_AUTO",
4993                WriteFlushMode::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
4994                WriteFlushMode::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
4995            }
4996        }
4997    }
4998    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4999    #[repr(i32)]
5000    pub enum FFlushMode {
5001        /// Default: same as FFLUSH_DISABLED.
5002        FflushUnspecified = 0,
5003        /// Do not explicitly sync the file to storage after each write pass.
5004        FflushDisabled = 1,
5005        /// Explicitly sync the file to storage (via fdatasync) after each periodic
5006        /// write pass. Increases data durability at the cost of higher disk I/O
5007        /// overhead.
5008        FflushEnabled = 2,
5009    }
5010    impl FFlushMode {
5011        /// String value of the enum field names used in the ProtoBuf definition.
5012        ///
5013        /// The values are not transformed in any way and thus are considered stable
5014        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5015        pub fn as_str_name(&self) -> &'static str {
5016            match self {
5017                FFlushMode::FflushUnspecified => "FFLUSH_UNSPECIFIED",
5018                FFlushMode::FflushDisabled => "FFLUSH_DISABLED",
5019                FFlushMode::FflushEnabled => "FFLUSH_ENABLED",
5020            }
5021        }
5022    }
5023}
5024// End of protos/perfetto/config/trace_config.proto
5025
5026// Begin of protos/perfetto/common/system_info.proto
5027
5028#[derive(Clone, PartialEq, ::prost::Message)]
5029pub struct Utsname {
5030    #[prost(string, optional, tag="1")]
5031    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
5032    #[prost(string, optional, tag="2")]
5033    pub version: ::core::option::Option<::prost::alloc::string::String>,
5034    #[prost(string, optional, tag="3")]
5035    pub release: ::core::option::Option<::prost::alloc::string::String>,
5036    #[prost(string, optional, tag="4")]
5037    pub machine: ::core::option::Option<::prost::alloc::string::String>,
5038}
5039/// Next id: 17
5040#[derive(Clone, PartialEq, ::prost::Message)]
5041pub struct SystemInfo {
5042    #[prost(message, optional, tag="1")]
5043    pub utsname: ::core::option::Option<Utsname>,
5044    #[prost(string, optional, tag="2")]
5045    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
5046    /// The manufacturer of the product/hardware.
5047    /// Source : "ro.product.manufacturer"
5048    /// Introduced after Android W in Nov 2024 and is not supported on older
5049    /// versions.
5050    #[prost(string, optional, tag="14")]
5051    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
5052    /// The SoC model from which trace is collected
5053    #[prost(string, optional, tag="9")]
5054    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
5055    /// The guest SoC model from which trace is collected in case of VMs
5056    #[prost(string, optional, tag="13")]
5057    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
5058    /// The hardware reversion from android device
5059    #[prost(string, optional, tag="10")]
5060    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
5061    /// The storage component from android_device. This field has been introduced
5062    /// after Android W in Aug 2024 and is not supported on older versions.
5063    #[prost(string, optional, tag="11")]
5064    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
5065    /// The RAM component information from android device. This field has been
5066    /// introduced after Android W in Aug 2024 and is not supported on older
5067    /// versions.
5068    #[prost(string, optional, tag="12")]
5069    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
5070    /// The serial console information from android device.
5071    #[prost(string, optional, tag="15")]
5072    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
5073    /// The version of traced (the same returned by `traced --version`).
5074    /// This is a human readable string with and its format varies depending on
5075    /// the build system and the repo (standalone vs AOSP).
5076    /// This is intended for human debugging only.
5077    #[prost(string, optional, tag="4")]
5078    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
5079    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
5080    /// Introduced in Android T.
5081    #[prost(uint64, optional, tag="5")]
5082    pub android_sdk_version: ::core::option::Option<u64>,
5083    /// Kernel page size - sysconf(_SC_PAGESIZE).
5084    #[prost(uint32, optional, tag="6")]
5085    pub page_size: ::core::option::Option<u32>,
5086    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
5087    /// Might be different to the number of online cpus.
5088    /// Introduced in perfetto v44.
5089    #[prost(uint32, optional, tag="8")]
5090    pub num_cpus: ::core::option::Option<u32>,
5091    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
5092    /// Introduced in v38 / Android V.
5093    #[prost(int32, optional, tag="7")]
5094    pub timezone_off_mins: ::core::option::Option<i32>,
5095    /// Ticks per second - sysconf(_SC_CLK_TCK).
5096    /// Not serialised as of perfetto v44.
5097    #[prost(int64, optional, tag="3")]
5098    pub hz: ::core::option::Option<i64>,
5099    /// The size of the system RAM in bytes.
5100    ///
5101    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
5102    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
5103    ///
5104    /// Introduced in perfetto v54 / Android 26Q1+.
5105    #[prost(uint64, optional, tag="16")]
5106    pub system_ram_bytes: ::core::option::Option<u64>,
5107}
5108// End of protos/perfetto/common/system_info.proto
5109
5110// Begin of protos/perfetto/common/trace_attributes.proto
5111
5112// Arbitrary key value pairs which can attached to a trace to provide context
5113// about any facet of the trace. This can include, what data it contains,
5114// properties of the host / machine the trace was collected on, and other
5115// interesting information about a trace.
5116// /
5117// Examples include:
5118// gradle_version = "9.0.10-alpha01"
5119// java_major_version = 24
5120// /
5121// All keys get prefixed with `trace_attribute.` in the UI and in
5122// `traceprocessor`. If there are multiple trace attribute packets that use the
5123// same key, then the latest value wins.
5124// These key value pairs show up in the `Overview` section in
5125// Perfetto UI. Additionally, these key, value pairs can also be queried using
5126// Pefetto SQL by using the following query:
5127// /
5128// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
5129
5130#[derive(Clone, PartialEq, ::prost::Message)]
5131pub struct TraceAttributes {
5132    #[prost(message, repeated, tag="1")]
5133    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
5134}
5135/// Nested message and enum types in `TraceAttributes`.
5136pub mod trace_attributes {
5137    #[derive(Clone, PartialEq, ::prost::Message)]
5138    pub struct Attribute {
5139        /// The key
5140        #[prost(string, optional, tag="1")]
5141        pub key: ::core::option::Option<::prost::alloc::string::String>,
5142        /// The value
5143        #[prost(oneof="attribute::Value", tags="2, 3")]
5144        pub value: ::core::option::Option<attribute::Value>,
5145    }
5146    /// Nested message and enum types in `Attribute`.
5147    pub mod attribute {
5148        /// The value
5149        #[derive(Clone, PartialEq, ::prost::Oneof)]
5150        pub enum Value {
5151            #[prost(int64, tag="2")]
5152            LongValue(i64),
5153            #[prost(string, tag="3")]
5154            StringValue(::prost::alloc::string::String),
5155        }
5156    }
5157}
5158// End of protos/perfetto/common/trace_attributes.proto
5159
5160// Begin of protos/perfetto/common/trace_stats.proto
5161
5162/// Statistics for the internals of the tracing service.
5163///
5164/// Next id: 19.
5165#[derive(Clone, PartialEq, ::prost::Message)]
5166pub struct TraceStats {
5167    /// Stats for the TraceBuffer(s) of the current trace session.
5168    #[prost(message, repeated, tag="1")]
5169    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
5170    /// The thresholds of each the `writer_stats` histogram buckets. This is
5171    /// emitted only once as all WriterStats share the same bucket layout.
5172    /// This field has the same cardinality of the
5173    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
5174    /// (The -1 is because the last overflow bucket is not reported in the _def).
5175    /// An array of values [10, 100, 1000] in the _def array means that there are
5176    /// four buckets (3 + the implicit overflow bucket):
5177    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
5178    #[prost(int64, repeated, packed="false", tag="17")]
5179    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
5180    #[prost(message, repeated, tag="18")]
5181    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
5182    /// Num. producers connected (whether they are involved in the current tracing
5183    /// session or not).
5184    #[prost(uint32, optional, tag="2")]
5185    pub producers_connected: ::core::option::Option<u32>,
5186    /// Num. producers ever seen for all trace sessions since startup (it's a good
5187    /// proxy for inferring num. producers crashed / killed).
5188    #[prost(uint64, optional, tag="3")]
5189    pub producers_seen: ::core::option::Option<u64>,
5190    /// Num. data sources registered for all trace sessions.
5191    #[prost(uint32, optional, tag="4")]
5192    pub data_sources_registered: ::core::option::Option<u32>,
5193    /// Num. data sources ever seen for all trace sessions since startup.
5194    #[prost(uint64, optional, tag="5")]
5195    pub data_sources_seen: ::core::option::Option<u64>,
5196    /// Num. concurrently active tracing sessions.
5197    #[prost(uint32, optional, tag="6")]
5198    pub tracing_sessions: ::core::option::Option<u32>,
5199    /// Num. buffers for all tracing session (not just the current one). This will
5200    /// be >= buffer_stats.size(), because the latter is only about the current
5201    /// session.
5202    #[prost(uint32, optional, tag="7")]
5203    pub total_buffers: ::core::option::Option<u32>,
5204    // The fields below have been introduced in Android Q.
5205
5206    /// Num. chunks that were discarded by the service before attempting to commit
5207    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
5208    #[prost(uint64, optional, tag="8")]
5209    pub chunks_discarded: ::core::option::Option<u64>,
5210    /// Num. patches that were discarded by the service before attempting to apply
5211    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
5212    #[prost(uint64, optional, tag="9")]
5213    pub patches_discarded: ::core::option::Option<u64>,
5214    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
5215    /// is a bug in the producer.
5216    #[prost(uint64, optional, tag="10")]
5217    pub invalid_packets: ::core::option::Option<u64>,
5218    #[prost(message, optional, tag="11")]
5219    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
5220    /// Count of Flush() requests (either from the Consumer, or self-induced
5221    /// periodic flushes). The final Flush() is also included in the count.
5222    #[prost(uint64, optional, tag="12")]
5223    pub flushes_requested: ::core::option::Option<u64>,
5224    /// The count of the Flush() requests that were completed successfully.
5225    /// In a well behaving trace this should always be == `flush_requests`.
5226    #[prost(uint64, optional, tag="13")]
5227    pub flushes_succeeded: ::core::option::Option<u64>,
5228    /// The count of the Flush() requests that failed (in most timed out).
5229    /// In a well behaving trace this should always be == 0.
5230    #[prost(uint64, optional, tag="14")]
5231    pub flushes_failed: ::core::option::Option<u64>,
5232    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
5233    pub final_flush_outcome: ::core::option::Option<i32>,
5234}
5235/// Nested message and enum types in `TraceStats`.
5236pub mod trace_stats {
5237    /// From TraceBuffer::Stats.
5238    ///
5239    /// Next id: 22.
5240    #[derive(Clone, PartialEq, ::prost::Message)]
5241    pub struct BufferStats {
5242        /// Size of the circular buffer in bytes.
5243        #[prost(uint64, optional, tag="12")]
5244        pub buffer_size: ::core::option::Option<u64>,
5245        /// Num. bytes written into the circular buffer, including chunk headers.
5246        #[prost(uint64, optional, tag="1")]
5247        pub bytes_written: ::core::option::Option<u64>,
5248        /// Num. bytes overwritten before they have been read (i.e. loss of data).
5249        #[prost(uint64, optional, tag="13")]
5250        pub bytes_overwritten: ::core::option::Option<u64>,
5251        /// Total size of chunks that were fully read from the circular buffer by the
5252        /// consumer. This may not be equal to |bytes_written| either in the middle
5253        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
5254        /// size of the chunks read from the buffer, including chunk headers, which
5255        /// will be different from the total size of packets returned to the
5256        /// consumer.
5257        ///
5258        /// The current utilization of the trace buffer (mid-tracing) can be obtained
5259        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
5260        /// adding the difference of |padding_bytes_written| and
5261        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
5262        /// Note that this represents the total size of buffered data in the buffer,
5263        /// yet this data may be spread non-contiguously through the buffer and may
5264        /// be overridden before the utilization reaches 100%.
5265        #[prost(uint64, optional, tag="14")]
5266        pub bytes_read: ::core::option::Option<u64>,
5267        /// Num. bytes that were allocated as padding between chunks in the circular
5268        /// buffer.
5269        #[prost(uint64, optional, tag="15")]
5270        pub padding_bytes_written: ::core::option::Option<u64>,
5271        /// Num. of padding bytes that were removed from the circular buffer when
5272        /// they were overwritten.
5273        ///
5274        /// The difference between |padding_bytes_written| and
5275        /// |padding_bytes_cleared| denotes the total size of padding currently
5276        /// present in the buffer.
5277        #[prost(uint64, optional, tag="16")]
5278        pub padding_bytes_cleared: ::core::option::Option<u64>,
5279        /// Num. chunks (!= packets) written into the buffer.
5280        #[prost(uint64, optional, tag="2")]
5281        pub chunks_written: ::core::option::Option<u64>,
5282        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
5283        /// the same chunk with additional packets appended to the end.
5284        #[prost(uint64, optional, tag="10")]
5285        pub chunks_rewritten: ::core::option::Option<u64>,
5286        /// Num. chunks overwritten before they have been read (i.e. loss of data).
5287        #[prost(uint64, optional, tag="3")]
5288        pub chunks_overwritten: ::core::option::Option<u64>,
5289        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
5290        /// is configured with FillPolicy == DISCARD.
5291        #[prost(uint64, optional, tag="18")]
5292        pub chunks_discarded: ::core::option::Option<u64>,
5293        /// Num. chunks (!= packets) that were fully read from the circular buffer by
5294        /// the consumer. This may not be equal to |chunks_written| either in the
5295        /// middle of tracing, or if |chunks_overwritten| is non-zero.
5296        #[prost(uint64, optional, tag="17")]
5297        pub chunks_read: ::core::option::Option<u64>,
5298        /// Num. chunks that were committed out of order.
5299        #[prost(uint64, optional, tag="11")]
5300        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
5301        /// Num. times the ring buffer wrapped around.
5302        #[prost(uint64, optional, tag="4")]
5303        pub write_wrap_count: ::core::option::Option<u64>,
5304        /// Num. out-of-band (OOB) patches that succeeded.
5305        #[prost(uint64, optional, tag="5")]
5306        pub patches_succeeded: ::core::option::Option<u64>,
5307        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
5308        #[prost(uint64, optional, tag="6")]
5309        pub patches_failed: ::core::option::Option<u64>,
5310        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
5311        /// successful packet read.
5312        #[prost(uint64, optional, tag="7")]
5313        pub readaheads_succeeded: ::core::option::Option<u64>,
5314        /// Num. readaheads aborted because of missing chunks in the sequence stream.
5315        /// Note that a small number > 0 is totally expected: occasionally, when
5316        /// issuing a read, the very last packet in a sequence might be incomplete
5317        /// (because the producer is still writing it while we read). The read will
5318        /// stop at that point, for that sequence, increasing this counter.
5319        #[prost(uint64, optional, tag="8")]
5320        pub readaheads_failed: ::core::option::Option<u64>,
5321        /// Num. of violations of the SharedMemoryABI found while writing or reading
5322        /// the buffer. This is an indication of either a bug in the producer(s) or
5323        /// malicious producer(s).
5324        #[prost(uint64, optional, tag="9")]
5325        pub abi_violations: ::core::option::Option<u64>,
5326        // The fields below have been introduced in Android R.
5327
5328        /// Num. of times the service detected packet loss on a trace writer
5329        /// sequence. This is usually caused by exhaustion of available chunks in the
5330        /// writer process's SMB. Note that this relies on the client's TraceWriter
5331        /// indicating this loss to the service -- packets lost for other reasons are
5332        /// not reflected in this stat.
5333        #[prost(uint64, optional, tag="19")]
5334        pub trace_writer_packet_loss: ::core::option::Option<u64>,
5335        #[prost(message, optional, tag="21")]
5336        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
5337    }
5338    /// Nested message and enum types in `BufferStats`.
5339    pub mod buffer_stats {
5340        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
5341        /// Only populated when the buffer is configured with shadow mode.
5342        #[derive(Clone, PartialEq, ::prost::Message)]
5343        pub struct ShadowBufferStats {
5344            /// Total num. packets read. This is not affected by capping of the hasher
5345            /// to 32K elements.
5346            #[prost(uint64, optional, tag="1")]
5347            pub packets_seen: ::core::option::Option<u64>,
5348            // The stats below are keps only for 32k packets. After reading 32K
5349            // packets hashes are randomly evicted and that might lead to slightly
5350            // inconsistent results.
5351
5352            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
5353            #[prost(uint64, optional, tag="2")]
5354            pub packets_in_both: ::core::option::Option<u64>,
5355            /// Num. packets found only in V1 buffer but not in V2.
5356            #[prost(uint64, optional, tag="3")]
5357            pub packets_only_v1: ::core::option::Option<u64>,
5358            /// Num. packets found only in V2 buffer but not in V1.
5359            #[prost(uint64, optional, tag="4")]
5360            pub packets_only_v2: ::core::option::Option<u64>,
5361            /// Num. patch operations attempted.
5362            #[prost(uint64, optional, tag="5")]
5363            pub patches_attempted: ::core::option::Option<u64>,
5364            /// Num. patches that succeeded on V1 buffer.
5365            #[prost(uint64, optional, tag="6")]
5366            pub v1_patches_succeeded: ::core::option::Option<u64>,
5367            /// Num. patches that succeeded on V2 buffer.
5368            #[prost(uint64, optional, tag="7")]
5369            pub v2_patches_succeeded: ::core::option::Option<u64>,
5370            /// This is to distinguish the updated calculations after fixing the
5371            /// hashes. This field is either empty or "2"
5372            #[prost(uint32, optional, tag="8")]
5373            pub stats_version: ::core::option::Option<u32>,
5374        }
5375    }
5376    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
5377    /// visible as a unique sequence ID in the trace.
5378    #[derive(Clone, PartialEq, ::prost::Message)]
5379    pub struct WriterStats {
5380        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
5381        /// correlate the stats with the actual packet types.
5382        #[prost(uint64, optional, tag="1")]
5383        pub sequence_id: ::core::option::Option<u64>,
5384        /// The buffer index (0..N, as defined in the TraceConfig).
5385        #[prost(uint32, optional, tag="4")]
5386        pub buffer: ::core::option::Option<u32>,
5387        /// These two arrays have the same cardinality and match the cardinality of
5388        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
5389        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
5390        /// for each bucket.
5391        #[prost(uint64, repeated, tag="2")]
5392        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
5393        #[prost(int64, repeated, tag="3")]
5394        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
5395    }
5396    /// This is set only when the TraceConfig specifies a TraceFilter.
5397    #[derive(Clone, PartialEq, ::prost::Message)]
5398    pub struct FilterStats {
5399        #[prost(uint64, optional, tag="1")]
5400        pub input_packets: ::core::option::Option<u64>,
5401        #[prost(uint64, optional, tag="2")]
5402        pub input_bytes: ::core::option::Option<u64>,
5403        #[prost(uint64, optional, tag="3")]
5404        pub output_bytes: ::core::option::Option<u64>,
5405        #[prost(uint64, optional, tag="4")]
5406        pub errors: ::core::option::Option<u64>,
5407        #[prost(uint64, optional, tag="5")]
5408        pub time_taken_ns: ::core::option::Option<u64>,
5409        /// The number of bytes discarded by the filter (i.e. output - input).
5410        /// The array has one entry for each buffer defined in the config (unless no
5411        /// packets for that buffer were seen and hence filtered).
5412        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
5413        /// (output_bytes - input_bytes) because the filter might also discard
5414        /// server-generated synthetic packets, that have no buffer index.
5415        #[prost(uint64, repeated, packed="false", tag="20")]
5416        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
5417    }
5418    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5419    #[repr(i32)]
5420    pub enum FinalFlushOutcome {
5421        FinalFlushUnspecified = 0,
5422        FinalFlushSucceeded = 1,
5423        FinalFlushFailed = 2,
5424    }
5425    impl FinalFlushOutcome {
5426        /// String value of the enum field names used in the ProtoBuf definition.
5427        ///
5428        /// The values are not transformed in any way and thus are considered stable
5429        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5430        pub fn as_str_name(&self) -> &'static str {
5431            match self {
5432                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
5433                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
5434                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
5435            }
5436        }
5437    }
5438}
5439// End of protos/perfetto/common/trace_stats.proto
5440
5441// Begin of protos/perfetto/trace/android/android_aflags.proto
5442
5443/// Android aconfig flags (aflags).
5444/// This message captures a snapshot of the state of aconfig flags on the device.
5445/// Keep in sync with:
5446/// <http://ac/packages/modules/ConfigInfrastructure/aflags/proto/aflags.proto>
5447#[derive(Clone, PartialEq, ::prost::Message)]
5448pub struct AndroidAflags {
5449    /// A collection of flags.
5450    #[prost(message, repeated, tag="1")]
5451    pub flags: ::prost::alloc::vec::Vec<android_aflags::Flag>,
5452    /// A human-readable error logged if aflags processing fails.
5453    /// This is a perfetto specific field used to help debugging.
5454    #[prost(string, optional, tag="2")]
5455    pub error: ::core::option::Option<::prost::alloc::string::String>,
5456}
5457/// Nested message and enum types in `AndroidAflags`.
5458pub mod android_aflags {
5459    /// Representation of an aconfig flag and its metadata.
5460    #[derive(Clone, PartialEq, ::prost::Message)]
5461    pub struct Flag {
5462        #[prost(string, optional, tag="1")]
5463        pub flag_namespace: ::core::option::Option<::prost::alloc::string::String>,
5464        #[prost(string, optional, tag="2")]
5465        pub name: ::core::option::Option<::prost::alloc::string::String>,
5466        /// The aconfig package (e.g. "com.android.foo"). These are system-level
5467        /// identifiers and not privacy-impacting.
5468        #[prost(string, optional, tag="3")]
5469        pub pkg: ::core::option::Option<::prost::alloc::string::String>,
5470        /// The container where the flag lives (e.g. "system", "vendor", or mainline
5471        /// module name).
5472        #[prost(string, optional, tag="4")]
5473        pub container: ::core::option::Option<::prost::alloc::string::String>,
5474        /// The flag value as a string to support different future data types.
5475        #[prost(string, optional, tag="5")]
5476        pub value: ::core::option::Option<::prost::alloc::string::String>,
5477        /// The value that will be applied after the next reboot, if different from
5478        /// the current value.
5479        #[prost(string, optional, tag="6")]
5480        pub staged_value: ::core::option::Option<::prost::alloc::string::String>,
5481        #[prost(enumeration="FlagPermission", optional, tag="7")]
5482        pub permission: ::core::option::Option<i32>,
5483        #[prost(enumeration="ValuePickedFrom", optional, tag="8")]
5484        pub value_picked_from: ::core::option::Option<i32>,
5485        #[prost(enumeration="FlagStorageBackend", optional, tag="9")]
5486        pub storage_backend: ::core::option::Option<i32>,
5487        #[prost(enumeration="FlagType", optional, tag="10")]
5488        pub r#type: ::core::option::Option<i32>,
5489    }
5490    /// Whether a flag can be modified at runtime.
5491    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5492    #[repr(i32)]
5493    pub enum FlagPermission {
5494        Unspecified = 0,
5495        ReadOnly = 1,
5496        ReadWrite = 2,
5497    }
5498    impl FlagPermission {
5499        /// String value of the enum field names used in the ProtoBuf definition.
5500        ///
5501        /// The values are not transformed in any way and thus are considered stable
5502        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5503        pub fn as_str_name(&self) -> &'static str {
5504            match self {
5505                FlagPermission::Unspecified => "FLAG_PERMISSION_UNSPECIFIED",
5506                FlagPermission::ReadOnly => "FLAG_PERMISSION_READ_ONLY",
5507                FlagPermission::ReadWrite => "FLAG_PERMISSION_READ_WRITE",
5508            }
5509        }
5510    }
5511    /// The source of the current flag value.
5512    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5513    #[repr(i32)]
5514    pub enum ValuePickedFrom {
5515        Unspecified = 0,
5516        /// The value is the build-time default.
5517        Default = 1,
5518        /// The value comes from a server-side override.
5519        Server = 2,
5520        /// The value comes from a local override on the device.
5521        Local = 3,
5522    }
5523    impl ValuePickedFrom {
5524        /// String value of the enum field names used in the ProtoBuf definition.
5525        ///
5526        /// The values are not transformed in any way and thus are considered stable
5527        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5528        pub fn as_str_name(&self) -> &'static str {
5529            match self {
5530                ValuePickedFrom::Unspecified => "VALUE_PICKED_FROM_UNSPECIFIED",
5531                ValuePickedFrom::Default => "VALUE_PICKED_FROM_DEFAULT",
5532                ValuePickedFrom::Server => "VALUE_PICKED_FROM_SERVER",
5533                ValuePickedFrom::Local => "VALUE_PICKED_FROM_LOCAL",
5534            }
5535        }
5536    }
5537    /// The underlying storage mechanism for the flag.
5538    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5539    #[repr(i32)]
5540    pub enum FlagStorageBackend {
5541        Unspecified = 0,
5542        None = 1,
5543        Aconfigd = 2,
5544        DeviceConfig = 3,
5545    }
5546    impl FlagStorageBackend {
5547        /// String value of the enum field names used in the ProtoBuf definition.
5548        ///
5549        /// The values are not transformed in any way and thus are considered stable
5550        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5551        pub fn as_str_name(&self) -> &'static str {
5552            match self {
5553                FlagStorageBackend::Unspecified => "FLAG_STORAGE_BACKEND_UNSPECIFIED",
5554                FlagStorageBackend::None => "FLAG_STORAGE_BACKEND_NONE",
5555                FlagStorageBackend::Aconfigd => "FLAG_STORAGE_BACKEND_ACONFIGD",
5556                FlagStorageBackend::DeviceConfig => "FLAG_STORAGE_BACKEND_DEVICE_CONFIG",
5557            }
5558        }
5559    }
5560    /// The value type of the flag.
5561    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5562    #[repr(i32)]
5563    pub enum FlagType {
5564        /// Flag type unspecified. This flag type means the flag is an old version
5565        /// boolean flag or unknown newer type.
5566        Unspecified = 0,
5567        Boolean = 1,
5568        Integer = 2,
5569    }
5570    impl FlagType {
5571        /// String value of the enum field names used in the ProtoBuf definition.
5572        ///
5573        /// The values are not transformed in any way and thus are considered stable
5574        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5575        pub fn as_str_name(&self) -> &'static str {
5576            match self {
5577                FlagType::Unspecified => "FLAG_TYPE_UNSPECIFIED",
5578                FlagType::Boolean => "FLAG_TYPE_BOOLEAN",
5579                FlagType::Integer => "FLAG_TYPE_INTEGER",
5580            }
5581        }
5582    }
5583}
5584// End of protos/perfetto/trace/android/android_aflags.proto
5585
5586// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
5587
5588#[derive(Clone, PartialEq, ::prost::Message)]
5589pub struct AndroidGameInterventionList {
5590    #[prost(message, repeated, tag="1")]
5591    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
5592    /// True when at least one error occurred when parsing
5593    /// game_mode_intervention.list
5594    #[prost(bool, optional, tag="2")]
5595    pub parse_error: ::core::option::Option<bool>,
5596    /// Failed to open / read game_mode_intervention.list
5597    #[prost(bool, optional, tag="3")]
5598    pub read_error: ::core::option::Option<bool>,
5599}
5600/// Nested message and enum types in `AndroidGameInterventionList`.
5601pub mod android_game_intervention_list {
5602    #[derive(Clone, PartialEq, ::prost::Message)]
5603    pub struct GameModeInfo {
5604        #[prost(uint32, optional, tag="1")]
5605        pub mode: ::core::option::Option<u32>,
5606        #[prost(bool, optional, tag="2")]
5607        pub use_angle: ::core::option::Option<bool>,
5608        #[prost(float, optional, tag="3")]
5609        pub resolution_downscale: ::core::option::Option<f32>,
5610        #[prost(float, optional, tag="4")]
5611        pub fps: ::core::option::Option<f32>,
5612    }
5613    #[derive(Clone, PartialEq, ::prost::Message)]
5614    pub struct GamePackageInfo {
5615        #[prost(string, optional, tag="1")]
5616        pub name: ::core::option::Option<::prost::alloc::string::String>,
5617        #[prost(uint64, optional, tag="2")]
5618        pub uid: ::core::option::Option<u64>,
5619        #[prost(uint32, optional, tag="3")]
5620        pub current_mode: ::core::option::Option<u32>,
5621        #[prost(message, repeated, tag="4")]
5622        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
5623    }
5624}
5625// End of protos/perfetto/trace/android/android_game_intervention_list.proto
5626
5627// Begin of protos/perfetto/trace/android/android_log.proto
5628
5629#[derive(Clone, PartialEq, ::prost::Message)]
5630pub struct AndroidLogPacket {
5631    #[prost(message, repeated, tag="1")]
5632    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
5633    #[prost(message, optional, tag="2")]
5634    pub stats: ::core::option::Option<android_log_packet::Stats>,
5635}
5636/// Nested message and enum types in `AndroidLogPacket`.
5637pub mod android_log_packet {
5638    #[derive(Clone, PartialEq, ::prost::Message)]
5639    pub struct LogEvent {
5640        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
5641        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
5642        pub log_id: ::core::option::Option<i32>,
5643        /// PID (TGID), TID and UID of the task that emitted the event.
5644        #[prost(int32, optional, tag="2")]
5645        pub pid: ::core::option::Option<i32>,
5646        #[prost(int32, optional, tag="3")]
5647        pub tid: ::core::option::Option<i32>,
5648        #[prost(int32, optional, tag="4")]
5649        pub uid: ::core::option::Option<i32>,
5650        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
5651        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
5652        /// processor will take care of realigning clocks using the ClockSnapshot(s).
5653        #[prost(uint64, optional, tag="5")]
5654        pub timestamp: ::core::option::Option<u64>,
5655        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
5656        /// the second column of /system/etc/event-log-tags. For all other events,
5657        /// |tag| is the app-specified argument passed to __android_log_write().
5658        #[prost(string, optional, tag="6")]
5659        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5660        /// Empty when log_id == LID_EVENTS.
5661        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
5662        pub prio: ::core::option::Option<i32>,
5663        /// Empty when log_id == LID_EVENTS.
5664        #[prost(string, optional, tag="8")]
5665        pub message: ::core::option::Option<::prost::alloc::string::String>,
5666        /// Only populated when log_id == LID_EVENTS.
5667        #[prost(message, repeated, tag="9")]
5668        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
5669    }
5670    /// Nested message and enum types in `LogEvent`.
5671    pub mod log_event {
5672        #[derive(Clone, PartialEq, ::prost::Message)]
5673        pub struct Arg {
5674            #[prost(string, optional, tag="1")]
5675            pub name: ::core::option::Option<::prost::alloc::string::String>,
5676            #[prost(oneof="arg::Value", tags="2, 3, 4")]
5677            pub value: ::core::option::Option<arg::Value>,
5678        }
5679        /// Nested message and enum types in `Arg`.
5680        pub mod arg {
5681            #[derive(Clone, PartialEq, ::prost::Oneof)]
5682            pub enum Value {
5683                #[prost(int64, tag="2")]
5684                IntValue(i64),
5685                #[prost(float, tag="3")]
5686                FloatValue(f32),
5687                #[prost(string, tag="4")]
5688                StringValue(::prost::alloc::string::String),
5689            }
5690        }
5691    }
5692    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
5693    /// absolute counters since the beginning of the lifetime of the tracing
5694    /// session and NOT relative to the previous Stats snapshot).
5695    #[derive(Clone, PartialEq, ::prost::Message)]
5696    pub struct Stats {
5697        /// Total number of log events seen, including errors and skipped entries
5698        /// (num of events stored in the trace = total - failed - skipped).
5699        #[prost(uint64, optional, tag="1")]
5700        pub num_total: ::core::option::Option<u64>,
5701        /// Parser failures.
5702        #[prost(uint64, optional, tag="2")]
5703        pub num_failed: ::core::option::Option<u64>,
5704        /// Messages skipped due to filters.
5705        #[prost(uint64, optional, tag="3")]
5706        pub num_skipped: ::core::option::Option<u64>,
5707    }
5708}
5709// End of protos/perfetto/trace/android/android_log.proto
5710
5711// Begin of protos/perfetto/trace/android/android_system_property.proto
5712
5713#[derive(Clone, PartialEq, ::prost::Message)]
5714pub struct AndroidSystemProperty {
5715    #[prost(message, repeated, tag="1")]
5716    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
5717}
5718/// Nested message and enum types in `AndroidSystemProperty`.
5719pub mod android_system_property {
5720    #[derive(Clone, PartialEq, ::prost::Message)]
5721    pub struct PropertyValue {
5722        #[prost(string, optional, tag="1")]
5723        pub name: ::core::option::Option<::prost::alloc::string::String>,
5724        #[prost(string, optional, tag="2")]
5725        pub value: ::core::option::Option<::prost::alloc::string::String>,
5726    }
5727}
5728// End of protos/perfetto/trace/android/android_system_property.proto
5729
5730// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
5731
5732/// AppWakelockInfo describes the time-independent properties of a wakelock, such
5733/// as the owning package or wakelock tag. This is interned to reduce trace size.
5734/// Event bundles refer to interned wakelock info by the iid.
5735#[derive(Clone, PartialEq, ::prost::Message)]
5736pub struct AppWakelockInfo {
5737    /// The interned id of this wakelock.
5738    #[prost(int32, optional, tag="1")]
5739    pub iid: ::core::option::Option<i32>,
5740    /// The app-provided tag of the wakelock.
5741    #[prost(string, optional, tag="2")]
5742    pub tag: ::core::option::Option<::prost::alloc::string::String>,
5743    /// The wakelock flags (such as partial vs full).
5744    #[prost(int32, optional, tag="3")]
5745    pub flags: ::core::option::Option<i32>,
5746    /// The pid that created the wakelock.
5747    #[prost(int32, optional, tag="4")]
5748    pub owner_pid: ::core::option::Option<i32>,
5749    /// The uid that created the wakelock.
5750    #[prost(int32, optional, tag="5")]
5751    pub owner_uid: ::core::option::Option<i32>,
5752    /// The uid of the work source root (if present).
5753    #[prost(int32, optional, tag="6")]
5754    pub work_uid: ::core::option::Option<i32>,
5755}
5756/// AppWakelockBundle describes one or more wakelock events. Events are written
5757/// in two paired array, such that the details for event i are in intern_id\[i\]
5758/// and encoded_ts\[i\].
5759#[derive(Clone, PartialEq, ::prost::Message)]
5760pub struct AppWakelockBundle {
5761    /// The interned id for the WakelockInfo of the event.
5762    #[prost(uint32, repeated, tag="1")]
5763    pub intern_id: ::prost::alloc::vec::Vec<u32>,
5764    /// The timestamp and event type, encoded as:
5765    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
5766    #[prost(uint64, repeated, tag="2")]
5767    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
5768    /// For writing single packets (mainly by tokenization).
5769    #[prost(message, optional, tag="3")]
5770    pub info: ::core::option::Option<AppWakelockInfo>,
5771    #[prost(bool, optional, tag="4")]
5772    pub acquired: ::core::option::Option<bool>,
5773}
5774/// Trace event for bluetooth
5775#[derive(Clone, PartialEq, ::prost::Message)]
5776pub struct BluetoothTraceEvent {
5777    /// Packet type and direction
5778    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
5779    pub packet_type: ::core::option::Option<i32>,
5780    /// Total count of the packets collected during the collection interval
5781    #[prost(uint32, optional, tag="2")]
5782    pub count: ::core::option::Option<u32>,
5783    /// Total cumulative length of the packets collected during the collection
5784    /// interval
5785    #[prost(uint32, optional, tag="3")]
5786    pub length: ::core::option::Option<u32>,
5787    /// The collection interval in nanoseconds. This is the duration between the
5788    /// first and last packets collected.
5789    #[prost(uint32, optional, tag="4")]
5790    pub duration: ::core::option::Option<u32>,
5791    /// In case of CMD type, further breakdown of the type of command
5792    #[prost(uint32, optional, tag="5")]
5793    pub op_code: ::core::option::Option<u32>,
5794    /// In the case of EVT type, further breakdown of the type of event
5795    #[prost(uint32, optional, tag="6")]
5796    pub event_code: ::core::option::Option<u32>,
5797    /// When applicable for EVT type, further breakdown of event type into specific
5798    /// subevent
5799    #[prost(uint32, optional, tag="7")]
5800    pub subevent_code: ::core::option::Option<u32>,
5801    /// Associated handle for the bluetooth packet
5802    #[prost(uint32, optional, tag="8")]
5803    pub connection_handle: ::core::option::Option<u32>,
5804}
5805// End of protos/perfetto/trace/android/bluetooth_trace.proto
5806
5807// Begin of protos/perfetto/trace/android/camera_event.proto
5808
5809/// A profiling event corresponding to a single camera frame. This message
5810/// collects important details and timestamps involved in producing a single
5811/// camera frame.
5812/// Next ID: 17
5813#[derive(Clone, PartialEq, ::prost::Message)]
5814pub struct AndroidCameraFrameEvent {
5815    /// Identifier for the CameraCaptureSession this frame originates from. See:
5816    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5817    #[prost(uint64, optional, tag="1")]
5818    pub session_id: ::core::option::Option<u64>,
5819    /// Identifier for the camera sensor that is the source of this frame. This may
5820    /// be either a physical or logical camera (up to vendor interpretation).
5821    #[prost(uint32, optional, tag="2")]
5822    pub camera_id: ::core::option::Option<u32>,
5823    /// The frame number identifying this frame on this camera.
5824    #[prost(int64, optional, tag="3")]
5825    pub frame_number: ::core::option::Option<i64>,
5826    /// Identifier for the CaptureRequest. See:
5827    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
5828    ///
5829    /// If multiple cameras are streaming simultaneously, the request_id may be
5830    /// used to identify which frames were captured in service of the same request.
5831    #[prost(int64, optional, tag="4")]
5832    pub request_id: ::core::option::Option<i64>,
5833    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
5834    /// received by the camera HAL pipeline. Note that this request may wait for
5835    /// some time before processing actually begins. See also
5836    /// request_processing_started_ns.
5837    #[prost(int64, optional, tag="5")]
5838    pub request_received_ns: ::core::option::Option<i64>,
5839    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
5840    /// processing by the camera HAL pipeline. This is the time at which the
5841    /// pipeline actually begins to work on the request.
5842    #[prost(int64, optional, tag="6")]
5843    pub request_processing_started_ns: ::core::option::Option<i64>,
5844    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
5845    #[prost(int64, optional, tag="7")]
5846    pub start_of_exposure_ns: ::core::option::Option<i64>,
5847    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
5848    /// event.
5849    #[prost(int64, optional, tag="8")]
5850    pub start_of_frame_ns: ::core::option::Option<i64>,
5851    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
5852    /// for the frame.
5853    #[prost(int64, optional, tag="9")]
5854    pub responses_all_sent_ns: ::core::option::Option<i64>,
5855    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
5856    pub capture_result_status: ::core::option::Option<i32>,
5857    /// The number of sensor frames that were skipped between this frame and the
5858    /// previous frame. Under normal operation, this should be zero. Any number
5859    /// greater than zero indicates dropped sensor frames.
5860    #[prost(int32, optional, tag="11")]
5861    pub skipped_sensor_frames: ::core::option::Option<i32>,
5862    /// The value of CONTROL_CAPTURE_INTENT. See:
5863    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
5864    #[prost(int32, optional, tag="12")]
5865    pub capture_intent: ::core::option::Option<i32>,
5866    /// The number of streams in the capture request.
5867    #[prost(int32, optional, tag="13")]
5868    pub num_streams: ::core::option::Option<i32>,
5869    #[prost(message, repeated, tag="14")]
5870    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
5871    /// These fields capture vendor-specific additions to this proto message. In
5872    /// practice `vendor_data` typically contains a serialized message of the
5873    /// vendor's design, and `vendor_data_version` is incremented each time there
5874    /// is a backwards incompatible change made to the message.
5875    #[prost(int32, optional, tag="15")]
5876    pub vendor_data_version: ::core::option::Option<i32>,
5877    #[prost(bytes="vec", optional, tag="16")]
5878    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5879}
5880/// Nested message and enum types in `AndroidCameraFrameEvent`.
5881pub mod android_camera_frame_event {
5882    /// A profiling event corresponding to a single node processing within the
5883    /// camera pipeline. Intuitively this corresponds to a single stage of
5884    /// processing to produce a camera frame. Next ID: 6
5885    #[derive(Clone, PartialEq, ::prost::Message)]
5886    pub struct CameraNodeProcessingDetails {
5887        #[prost(int64, optional, tag="1")]
5888        pub node_id: ::core::option::Option<i64>,
5889        /// The timestamp at which node processing begins to run.
5890        #[prost(int64, optional, tag="2")]
5891        pub start_processing_ns: ::core::option::Option<i64>,
5892        /// The timestamp at which node processing finishes running.
5893        #[prost(int64, optional, tag="3")]
5894        pub end_processing_ns: ::core::option::Option<i64>,
5895        /// The delay between inputs becoming ready and the node actually beginning
5896        /// to run.
5897        #[prost(int64, optional, tag="4")]
5898        pub scheduling_latency_ns: ::core::option::Option<i64>,
5899    }
5900    /// The error status, if any, reported to the camera framework. Any status
5901    /// other than STATUS_OK indicates a dropped frame.
5902    /// Next Enum: 6
5903    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5904    #[repr(i32)]
5905    pub enum CaptureResultStatus {
5906        StatusUnspecified = 0,
5907        StatusOk = 1,
5908        /// Early metadata was returned to the camera framework with an error.
5909        StatusEarlyMetadataError = 2,
5910        /// Final metadata was returned to the camera framework with an error.
5911        StatusFinalMetadataError = 3,
5912        /// One or more buffers were returned to the camera framework with an error.
5913        StatusBufferError = 4,
5914        /// The frame was dropped as a result of a flush operation.
5915        StatusFlushError = 5,
5916    }
5917    impl CaptureResultStatus {
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                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
5925                CaptureResultStatus::StatusOk => "STATUS_OK",
5926                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
5927                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
5928                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
5929                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
5930            }
5931        }
5932    }
5933}
5934/// A profiling event that may be emitted periodically (i.e., at a slower rate
5935/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
5936/// session-specific values.
5937#[derive(Clone, PartialEq, ::prost::Message)]
5938pub struct AndroidCameraSessionStats {
5939    /// Identifier for the CameraCaptureSession this frame originates from. See:
5940    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5941    #[prost(uint64, optional, tag="1")]
5942    pub session_id: ::core::option::Option<u64>,
5943    #[prost(message, optional, tag="2")]
5944    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
5945}
5946/// Nested message and enum types in `AndroidCameraSessionStats`.
5947pub mod android_camera_session_stats {
5948    /// Although vendor implementations may vary, camera pipeline processing is
5949    /// typically arranged into a directed graph-like structure. This message is
5950    /// used to record that graph.
5951    #[derive(Clone, PartialEq, ::prost::Message)]
5952    pub struct CameraGraph {
5953        #[prost(message, repeated, tag="1")]
5954        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
5955        #[prost(message, repeated, tag="2")]
5956        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
5957    }
5958    /// Nested message and enum types in `CameraGraph`.
5959    pub mod camera_graph {
5960        #[derive(Clone, PartialEq, ::prost::Message)]
5961        pub struct CameraNode {
5962            #[prost(int64, optional, tag="1")]
5963            pub node_id: ::core::option::Option<i64>,
5964            /// A list of inputs consumed by this node.
5965            #[prost(int64, repeated, packed="false", tag="2")]
5966            pub input_ids: ::prost::alloc::vec::Vec<i64>,
5967            /// A list of outputs produced by this node.
5968            #[prost(int64, repeated, packed="false", tag="3")]
5969            pub output_ids: ::prost::alloc::vec::Vec<i64>,
5970            /// These fields capture vendor-specific additions to this proto message.
5971            /// In practice `vendor_data` typically contains a serialized message of
5972            /// the vendor's design, and `vendor_data_version` is incremented each time
5973            /// there is a backwards incompatible change made to the message.
5974            #[prost(int32, optional, tag="4")]
5975            pub vendor_data_version: ::core::option::Option<i32>,
5976            #[prost(bytes="vec", optional, tag="5")]
5977            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5978        }
5979        /// An adjacency list describing connections between CameraNodes, mapping
5980        /// nodes and their outputs to other nodes that consume them as inputs.
5981        #[derive(Clone, PartialEq, ::prost::Message)]
5982        pub struct CameraEdge {
5983            /// The pair of IDs identifying the node and output connected by this edge.
5984            #[prost(int64, optional, tag="1")]
5985            pub output_node_id: ::core::option::Option<i64>,
5986            #[prost(int64, optional, tag="2")]
5987            pub output_id: ::core::option::Option<i64>,
5988            /// The pair of IDs identifying the node and input connected by this edge.
5989            #[prost(int64, optional, tag="3")]
5990            pub input_node_id: ::core::option::Option<i64>,
5991            #[prost(int64, optional, tag="4")]
5992            pub input_id: ::core::option::Option<i64>,
5993            /// These fields capture vendor-specific additions to this proto message.
5994            /// In practice `vendor_data` typically contains a serialized message of
5995            /// the vendor's design, and `vendor_data_version` is incremented each time
5996            /// there is a backwards incompatible change made to the message.
5997            #[prost(int32, optional, tag="5")]
5998            pub vendor_data_version: ::core::option::Option<i32>,
5999            #[prost(bytes="vec", optional, tag="6")]
6000            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6001        }
6002    }
6003}
6004// End of protos/perfetto/trace/android/camera_event.proto
6005
6006// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
6007
6008#[derive(Clone, PartialEq, ::prost::Message)]
6009pub struct CpuPerUidData {
6010    /// Number of clusters in the device. This will only be filled in the first
6011    /// packet in a sequence.
6012    #[prost(uint32, optional, tag="1")]
6013    pub cluster_count: ::core::option::Option<u32>,
6014    /// The UIDs for which we have data in this packet.
6015    #[prost(uint32, repeated, tag="2")]
6016    pub uid: ::prost::alloc::vec::Vec<u32>,
6017    /// List of times for {UID, cluster} tuples. This will be cluster_count
6018    /// times as long as the UID list.
6019    ///
6020    /// Ordered like:
6021    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
6022    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
6023    ///
6024    /// Each value is an absolute count for the first packet in a sequence, and a
6025    /// delta thereafter. UIDs for which all clusters have a zero delta are
6026    /// omitted; a single non-zero value for any cluster for a UID will cause
6027    /// values for all clusters to be recorded.
6028    #[prost(uint64, repeated, tag="3")]
6029    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
6030}
6031// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
6032
6033// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
6034
6035/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
6036/// Used in comparing the expected timeline of a frame to the actual timeline.
6037/// Key terms:
6038///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
6039///     2) SurfaceFrame - represents App's work on its frame
6040///     3) Timeline = start to end of a component's(app/SF) work on a frame.
6041/// SurfaceFlinger composites frames from many apps together, so
6042///     One DisplayFrame can map to N SurfaceFrame(s)
6043/// This relationship can be reconstructed by using
6044///     DisplayFrame.token = SurfaceFrame.display_frame_token
6045#[derive(Clone, PartialEq, ::prost::Message)]
6046pub struct FrameTimelineEvent {
6047    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
6048    pub event: ::core::option::Option<frame_timeline_event::Event>,
6049}
6050/// Nested message and enum types in `FrameTimelineEvent`.
6051pub mod frame_timeline_event {
6052    /// Indicates the start of expected timeline slice for SurfaceFrames.
6053    #[derive(Clone, PartialEq, ::prost::Message)]
6054    pub struct ExpectedSurfaceFrameStart {
6055        /// Cookie used to correlate between the start and end messages of the same
6056        /// frame. Since all values except the ts are same for start and end, cookie
6057        /// helps in preventing redundant data transmission.
6058        /// The same cookie is used only by start and end messages of a single frame
6059        /// and is otherwise unique.
6060        #[prost(int64, optional, tag="1")]
6061        pub cookie: ::core::option::Option<i64>,
6062        /// Token received by the app for its work. Can be shared between multiple
6063        /// layers of the same app (example: pip mode).
6064        #[prost(int64, optional, tag="2")]
6065        pub token: ::core::option::Option<i64>,
6066        /// The corresponding DisplayFrame token is required to link the App's work
6067        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
6068        /// DisplayFrame.
6069        /// this.display_frame_token = DisplayFrame.token
6070        #[prost(int64, optional, tag="3")]
6071        pub display_frame_token: ::core::option::Option<i64>,
6072        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
6073        /// the respective process track group.
6074        #[prost(int32, optional, tag="4")]
6075        pub pid: ::core::option::Option<i32>,
6076        #[prost(string, optional, tag="5")]
6077        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6078    }
6079    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
6080    /// includes the jank information.
6081    #[derive(Clone, PartialEq, ::prost::Message)]
6082    pub struct ActualSurfaceFrameStart {
6083        /// Cookie used to correlate between the start and end messages of the same
6084        /// frame. Since all values except the ts are same for start and end, cookie
6085        /// helps in preventing redundant data transmission.
6086        /// The same cookie is used only by start and end messages of a single frame
6087        /// and is otherwise unique.
6088        #[prost(int64, optional, tag="1")]
6089        pub cookie: ::core::option::Option<i64>,
6090        /// Token received by the app for its work. Can be shared between multiple
6091        /// layers of the same app (example: pip mode).
6092        #[prost(int64, optional, tag="2")]
6093        pub token: ::core::option::Option<i64>,
6094        /// The corresponding DisplayFrame token is required to link the App's work
6095        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
6096        /// DisplayFrame.
6097        /// this.display_frame_token = DisplayFrame.token
6098        #[prost(int64, optional, tag="3")]
6099        pub display_frame_token: ::core::option::Option<i64>,
6100        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
6101        /// the respective process track group.
6102        #[prost(int32, optional, tag="4")]
6103        pub pid: ::core::option::Option<i32>,
6104        #[prost(string, optional, tag="5")]
6105        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6106        #[prost(enumeration="PresentType", optional, tag="6")]
6107        pub present_type: ::core::option::Option<i32>,
6108        #[prost(bool, optional, tag="7")]
6109        pub on_time_finish: ::core::option::Option<bool>,
6110        #[prost(bool, optional, tag="8")]
6111        pub gpu_composition: ::core::option::Option<bool>,
6112        /// A bitmask of JankType. More than one reason can be attributed to a janky
6113        /// frame.
6114        #[prost(int32, optional, tag="9")]
6115        pub jank_type: ::core::option::Option<i32>,
6116        #[prost(enumeration="PredictionType", optional, tag="10")]
6117        pub prediction_type: ::core::option::Option<i32>,
6118        #[prost(bool, optional, tag="11")]
6119        pub is_buffer: ::core::option::Option<bool>,
6120        #[prost(enumeration="JankSeverityType", optional, tag="12")]
6121        pub jank_severity_type: ::core::option::Option<i32>,
6122        #[prost(float, optional, tag="13")]
6123        pub present_delay_millis: ::core::option::Option<f32>,
6124        #[prost(float, optional, tag="14")]
6125        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
6126        #[prost(float, optional, tag="15")]
6127        pub jank_severity_score: ::core::option::Option<f32>,
6128        /// experimental value for jank_type. Do not consider in jank analysis.
6129        #[prost(int32, optional, tag="16")]
6130        pub jank_type_experimental: ::core::option::Option<i32>,
6131        /// experimental value for present_type. Do not consider in jank analysis.
6132        #[prost(enumeration="PresentType", optional, tag="17")]
6133        pub present_type_experimental: ::core::option::Option<i32>,
6134        /// jank metadata information (for debug).
6135        #[prost(float, optional, tag="18")]
6136        pub jank_debug_metadata: ::core::option::Option<f32>,
6137        #[prost(enumeration="actual_surface_frame_start::LatchedFenceState", optional, tag="19")]
6138        pub latched_fence_state: ::core::option::Option<i32>,
6139    }
6140    /// Nested message and enum types in `ActualSurfaceFrameStart`.
6141    pub mod actual_surface_frame_start {
6142        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6143        #[repr(i32)]
6144        pub enum LatchedFenceState {
6145            LatchedUnknown = 0,
6146            LatchedSignaled = 1,
6147            LatchedUnsignaled = 2,
6148            LatchedDelayedLatchUnsignaled = 3,
6149        }
6150        impl LatchedFenceState {
6151            /// String value of the enum field names used in the ProtoBuf definition.
6152            ///
6153            /// The values are not transformed in any way and thus are considered stable
6154            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6155            pub fn as_str_name(&self) -> &'static str {
6156                match self {
6157                    LatchedFenceState::LatchedUnknown => "LATCHED_UNKNOWN",
6158                    LatchedFenceState::LatchedSignaled => "LATCHED_SIGNALED",
6159                    LatchedFenceState::LatchedUnsignaled => "LATCHED_UNSIGNALED",
6160                    LatchedFenceState::LatchedDelayedLatchUnsignaled => "LATCHED_DELAYED_LATCH_UNSIGNALED",
6161                }
6162            }
6163        }
6164    }
6165    /// Indicates the start of expected timeline slice for DisplayFrames.
6166    #[derive(Clone, PartialEq, ::prost::Message)]
6167    pub struct ExpectedDisplayFrameStart {
6168        /// Cookie used to correlate between the start and end messages of the same
6169        /// frame. Since all values except the ts are same for start and end, cookie
6170        /// helps in preventing redundant data transmission.
6171        /// The same cookie is used only by start and end messages of a single frame
6172        /// and is otherwise unique.
6173        #[prost(int64, optional, tag="1")]
6174        pub cookie: ::core::option::Option<i64>,
6175        /// Token received by SurfaceFlinger for its work
6176        /// this.token = SurfaceFrame.display_frame_token
6177        #[prost(int64, optional, tag="2")]
6178        pub token: ::core::option::Option<i64>,
6179        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
6180        /// inside the SurfaceFlinger process group.
6181        #[prost(int32, optional, tag="3")]
6182        pub pid: ::core::option::Option<i32>,
6183    }
6184    /// Indicates the start of actual timeline slice for DisplayFrames. Also
6185    /// includes the jank information.
6186    #[derive(Clone, PartialEq, ::prost::Message)]
6187    pub struct ActualDisplayFrameStart {
6188        /// Cookie used to correlate between the start and end messages of the same
6189        /// frame. Since all values except the ts are same for start and end, cookie
6190        /// helps in preventing redundant data transmission.
6191        /// The same cookie is used only by start and end messages of a single frame
6192        /// and is otherwise unique.
6193        #[prost(int64, optional, tag="1")]
6194        pub cookie: ::core::option::Option<i64>,
6195        /// Token received by SurfaceFlinger for its work
6196        /// this.token = SurfaceFrame.display_frame_token
6197        #[prost(int64, optional, tag="2")]
6198        pub token: ::core::option::Option<i64>,
6199        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
6200        /// inside the SurfaceFlinger process group.
6201        #[prost(int32, optional, tag="3")]
6202        pub pid: ::core::option::Option<i32>,
6203        #[prost(enumeration="PresentType", optional, tag="4")]
6204        pub present_type: ::core::option::Option<i32>,
6205        #[prost(bool, optional, tag="5")]
6206        pub on_time_finish: ::core::option::Option<bool>,
6207        #[prost(bool, optional, tag="6")]
6208        pub gpu_composition: ::core::option::Option<bool>,
6209        /// A bitmask of JankType. More than one reason can be attributed to a janky
6210        /// frame.
6211        #[prost(int32, optional, tag="7")]
6212        pub jank_type: ::core::option::Option<i32>,
6213        #[prost(enumeration="PredictionType", optional, tag="8")]
6214        pub prediction_type: ::core::option::Option<i32>,
6215        #[prost(enumeration="JankSeverityType", optional, tag="9")]
6216        pub jank_severity_type: ::core::option::Option<i32>,
6217        #[prost(float, optional, tag="10")]
6218        pub present_delay_millis: ::core::option::Option<f32>,
6219        #[prost(float, optional, tag="11")]
6220        pub jank_severity_score: ::core::option::Option<f32>,
6221        /// experimental value for jank_type. Do not consider in jank analysis.
6222        #[prost(int32, optional, tag="12")]
6223        pub jank_type_experimental: ::core::option::Option<i32>,
6224        /// experimental value for present_type. Do not consider in jank analysis.
6225        #[prost(enumeration="PresentType", optional, tag="13")]
6226        pub present_type_experimental: ::core::option::Option<i32>,
6227        /// jank metadata information (for debug).
6228        #[prost(float, optional, tag="14")]
6229        pub jank_debug_metadata: ::core::option::Option<f32>,
6230        #[prost(int64, optional, tag="15")]
6231        pub latched_unsignaled_count: ::core::option::Option<i64>,
6232        #[prost(int64, optional, tag="16")]
6233        pub addressable_unsignaled_latch_count: ::core::option::Option<i64>,
6234    }
6235    /// FrameEnd just sends the cookie to indicate that the corresponding
6236    /// <display/surface>frame slice's end.
6237    #[derive(Clone, PartialEq, ::prost::Message)]
6238    pub struct FrameEnd {
6239        #[prost(int64, optional, tag="1")]
6240        pub cookie: ::core::option::Option<i64>,
6241    }
6242    /// Specifies the reason(s) most likely to have caused the jank.
6243    /// Used as a bitmask.
6244    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6245    #[repr(i32)]
6246    pub enum JankType {
6247        JankUnspecified = 0,
6248        JankNone = 1,
6249        JankSfScheduling = 2,
6250        JankPredictionError = 4,
6251        JankDisplayHal = 8,
6252        JankSfCpuDeadlineMissed = 16,
6253        JankSfGpuDeadlineMissed = 32,
6254        JankAppDeadlineMissed = 64,
6255        JankBufferStuffing = 128,
6256        JankUnknown = 256,
6257        JankSfStuffing = 512,
6258        JankDropped = 1024,
6259        JankNonAnimating = 2048,
6260        JankAppResyncedJitter = 4096,
6261        JankDisplayNotOn = 8192,
6262        JankDisplayModeChangeInProgress = 16384,
6263        JankDisplayPowerModeChangeInProgress = 32768,
6264    }
6265    impl JankType {
6266        /// String value of the enum field names used in the ProtoBuf definition.
6267        ///
6268        /// The values are not transformed in any way and thus are considered stable
6269        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6270        pub fn as_str_name(&self) -> &'static str {
6271            match self {
6272                JankType::JankUnspecified => "JANK_UNSPECIFIED",
6273                JankType::JankNone => "JANK_NONE",
6274                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
6275                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
6276                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
6277                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
6278                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
6279                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
6280                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
6281                JankType::JankUnknown => "JANK_UNKNOWN",
6282                JankType::JankSfStuffing => "JANK_SF_STUFFING",
6283                JankType::JankDropped => "JANK_DROPPED",
6284                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
6285                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
6286                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
6287                JankType::JankDisplayModeChangeInProgress => "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS",
6288                JankType::JankDisplayPowerModeChangeInProgress => "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS",
6289            }
6290        }
6291    }
6292    /// Specifies the severity of a jank.
6293    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6294    #[repr(i32)]
6295    pub enum JankSeverityType {
6296        SeverityUnknown = 0,
6297        SeverityNone = 1,
6298        SeverityPartial = 2,
6299        SeverityFull = 3,
6300    }
6301    impl JankSeverityType {
6302        /// String value of the enum field names used in the ProtoBuf definition.
6303        ///
6304        /// The values are not transformed in any way and thus are considered stable
6305        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6306        pub fn as_str_name(&self) -> &'static str {
6307            match self {
6308                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
6309                JankSeverityType::SeverityNone => "SEVERITY_NONE",
6310                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
6311                JankSeverityType::SeverityFull => "SEVERITY_FULL",
6312            }
6313        }
6314    }
6315    /// Specifies how a frame was presented on screen w.r.t. timing.
6316    /// Can be different for SurfaceFrame and DisplayFrame.
6317    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6318    #[repr(i32)]
6319    pub enum PresentType {
6320        PresentUnspecified = 0,
6321        PresentOnTime = 1,
6322        PresentLate = 2,
6323        PresentEarly = 3,
6324        PresentDropped = 4,
6325        PresentUnknown = 5,
6326    }
6327    impl PresentType {
6328        /// String value of the enum field names used in the ProtoBuf definition.
6329        ///
6330        /// The values are not transformed in any way and thus are considered stable
6331        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6332        pub fn as_str_name(&self) -> &'static str {
6333            match self {
6334                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
6335                PresentType::PresentOnTime => "PRESENT_ON_TIME",
6336                PresentType::PresentLate => "PRESENT_LATE",
6337                PresentType::PresentEarly => "PRESENT_EARLY",
6338                PresentType::PresentDropped => "PRESENT_DROPPED",
6339                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
6340            }
6341        }
6342    }
6343    /// Specifies if the predictions for the frame are still valid, expired or
6344    /// unknown.
6345    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6346    #[repr(i32)]
6347    pub enum PredictionType {
6348        PredictionUnspecified = 0,
6349        PredictionValid = 1,
6350        PredictionExpired = 2,
6351        PredictionUnknown = 3,
6352    }
6353    impl PredictionType {
6354        /// String value of the enum field names used in the ProtoBuf definition.
6355        ///
6356        /// The values are not transformed in any way and thus are considered stable
6357        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6358        pub fn as_str_name(&self) -> &'static str {
6359            match self {
6360                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
6361                PredictionType::PredictionValid => "PREDICTION_VALID",
6362                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
6363                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
6364            }
6365        }
6366    }
6367    #[derive(Clone, PartialEq, ::prost::Oneof)]
6368    pub enum Event {
6369        #[prost(message, tag="1")]
6370        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
6371        #[prost(message, tag="2")]
6372        ActualDisplayFrameStart(ActualDisplayFrameStart),
6373        #[prost(message, tag="3")]
6374        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
6375        #[prost(message, tag="4")]
6376        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
6377        #[prost(message, tag="5")]
6378        FrameEnd(FrameEnd),
6379    }
6380}
6381// End of protos/perfetto/trace/android/frame_timeline_event.proto
6382
6383// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
6384
6385/// Generated by Android's SurfaceFlinger.
6386#[derive(Clone, PartialEq, ::prost::Message)]
6387pub struct GraphicsFrameEvent {
6388    #[prost(message, optional, tag="1")]
6389    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
6390}
6391/// Nested message and enum types in `GraphicsFrameEvent`.
6392pub mod graphics_frame_event {
6393    #[derive(Clone, PartialEq, ::prost::Message)]
6394    pub struct BufferEvent {
6395        #[prost(uint32, optional, tag="1")]
6396        pub frame_number: ::core::option::Option<u32>,
6397        #[prost(enumeration="BufferEventType", optional, tag="2")]
6398        pub r#type: ::core::option::Option<i32>,
6399        #[prost(string, optional, tag="3")]
6400        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6401        /// If no duration is set, the event is an instant event.
6402        #[prost(uint64, optional, tag="4")]
6403        pub duration_ns: ::core::option::Option<u64>,
6404        /// Unique buffer identifier.
6405        #[prost(uint32, optional, tag="5")]
6406        pub buffer_id: ::core::option::Option<u32>,
6407    }
6408    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6409    #[repr(i32)]
6410    pub enum BufferEventType {
6411        Unspecified = 0,
6412        Dequeue = 1,
6413        Queue = 2,
6414        Post = 3,
6415        AcquireFence = 4,
6416        Latch = 5,
6417        /// HWC will compose this buffer
6418        HwcCompositionQueued = 6,
6419        /// renderEngine composition
6420        FallbackComposition = 7,
6421        PresentFence = 8,
6422        ReleaseFence = 9,
6423        Modify = 10,
6424        Detach = 11,
6425        Attach = 12,
6426        Cancel = 13,
6427    }
6428    impl BufferEventType {
6429        /// String value of the enum field names used in the ProtoBuf definition.
6430        ///
6431        /// The values are not transformed in any way and thus are considered stable
6432        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6433        pub fn as_str_name(&self) -> &'static str {
6434            match self {
6435                BufferEventType::Unspecified => "UNSPECIFIED",
6436                BufferEventType::Dequeue => "DEQUEUE",
6437                BufferEventType::Queue => "QUEUE",
6438                BufferEventType::Post => "POST",
6439                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
6440                BufferEventType::Latch => "LATCH",
6441                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
6442                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
6443                BufferEventType::PresentFence => "PRESENT_FENCE",
6444                BufferEventType::ReleaseFence => "RELEASE_FENCE",
6445                BufferEventType::Modify => "MODIFY",
6446                BufferEventType::Detach => "DETACH",
6447                BufferEventType::Attach => "ATTACH",
6448                BufferEventType::Cancel => "CANCEL",
6449            }
6450        }
6451    }
6452}
6453// End of protos/perfetto/trace/android/graphics_frame_event.proto
6454
6455// Begin of protos/perfetto/trace/android/initial_display_state.proto
6456
6457#[derive(Clone, PartialEq, ::prost::Message)]
6458pub struct InitialDisplayState {
6459    /// Same values as android.view.Display.STATE_*
6460    #[prost(int32, optional, tag="1")]
6461    pub display_state: ::core::option::Option<i32>,
6462    #[prost(double, optional, tag="2")]
6463    pub brightness: ::core::option::Option<f64>,
6464}
6465// End of protos/perfetto/trace/android/initial_display_state.proto
6466
6467// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
6468
6469#[derive(Clone, PartialEq, ::prost::Message)]
6470pub struct KernelWakelockData {
6471    /// This is only emitted when we encounter new wakelocks.
6472    #[prost(message, repeated, tag="1")]
6473    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
6474    /// Interning id.
6475    #[prost(uint32, repeated, tag="2")]
6476    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
6477    /// If we interned the wakelock name in this packet, this is the total time
6478    /// the wakelock has been held.
6479    /// If not, it's a delta from the last time we saw it.
6480    #[prost(uint64, repeated, tag="3")]
6481    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
6482    #[prost(uint64, optional, tag="4")]
6483    pub error_flags: ::core::option::Option<u64>,
6484}
6485/// Nested message and enum types in `KernelWakelockData`.
6486pub mod kernel_wakelock_data {
6487    #[derive(Clone, PartialEq, ::prost::Message)]
6488    pub struct Wakelock {
6489        /// Interning id.
6490        #[prost(uint32, optional, tag="1")]
6491        pub wakelock_id: ::core::option::Option<u32>,
6492        /// Name of the wakelock.
6493        #[prost(string, optional, tag="2")]
6494        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
6495        /// Type of the wakelock. We record data about both true kernel wakelocks
6496        /// and "native" wakelocks which are taken in userspace but are more
6497        /// conceptually similar to kernel wakelocks than normal userspace ones.
6498        #[prost(enumeration="wakelock::Type", optional, tag="3")]
6499        pub wakelock_type: ::core::option::Option<i32>,
6500    }
6501    /// Nested message and enum types in `Wakelock`.
6502    pub mod wakelock {
6503        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6504        #[repr(i32)]
6505        pub enum Type {
6506            WakelockTypeUnknown = 0,
6507            WakelockTypeKernel = 1,
6508            WakelockTypeNative = 2,
6509        }
6510        impl Type {
6511            /// String value of the enum field names used in the ProtoBuf definition.
6512            ///
6513            /// The values are not transformed in any way and thus are considered stable
6514            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6515            pub fn as_str_name(&self) -> &'static str {
6516                match self {
6517                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
6518                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
6519                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
6520                }
6521            }
6522        }
6523    }
6524}
6525/// NetworkPacketEvent records the details of a single packet sent or received
6526/// on the network (in Linux kernel terminology, one sk_buff struct).
6527#[derive(Clone, PartialEq, ::prost::Message)]
6528pub struct NetworkPacketEvent {
6529    /// The direction traffic is flowing for this event.
6530    #[prost(enumeration="TrafficDirection", optional, tag="1")]
6531    pub direction: ::core::option::Option<i32>,
6532    /// The name of the network interface if available (e.g. 'rmnet0').
6533    #[prost(string, optional, tag="2")]
6534    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
6535    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
6536    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
6537    /// NetworkPacketContext.
6538    #[prost(uint32, optional, tag="3")]
6539    pub length: ::core::option::Option<u32>,
6540    /// The Linux user id associated with the packet's socket.
6541    #[prost(uint32, optional, tag="4")]
6542    pub uid: ::core::option::Option<u32>,
6543    /// The Android network tag associated with the packet's socket.
6544    #[prost(uint32, optional, tag="5")]
6545    pub tag: ::core::option::Option<u32>,
6546    /// The packet's IP protocol (TCP=6, UDP=17, etc).
6547    #[prost(uint32, optional, tag="6")]
6548    pub ip_proto: ::core::option::Option<u32>,
6549    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
6550    #[prost(uint32, optional, tag="7")]
6551    pub tcp_flags: ::core::option::Option<u32>,
6552    /// The local udp/tcp port of the packet.
6553    #[prost(uint32, optional, tag="8")]
6554    pub local_port: ::core::option::Option<u32>,
6555    /// The remote udp/tcp port of the packet.
6556    #[prost(uint32, optional, tag="9")]
6557    pub remote_port: ::core::option::Option<u32>,
6558    /// The 1-byte ICMP type identifier.
6559    #[prost(uint32, optional, tag="10")]
6560    pub icmp_type: ::core::option::Option<u32>,
6561    /// The 1-byte ICMP code identifier.
6562    #[prost(uint32, optional, tag="11")]
6563    pub icmp_code: ::core::option::Option<u32>,
6564}
6565/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
6566#[derive(Clone, PartialEq, ::prost::Message)]
6567pub struct NetworkPacketBundle {
6568    /// The timestamp of the i-th packet encoded as the nanoseconds since the
6569    /// enclosing TracePacket's timestamp.
6570    #[prost(uint64, repeated, tag="3")]
6571    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
6572    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
6573    #[prost(uint32, repeated, tag="4")]
6574    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
6575    /// Total number of packets in the bundle (when above aggregation_threshold).
6576    #[prost(uint32, optional, tag="5")]
6577    pub total_packets: ::core::option::Option<u32>,
6578    /// Duration between first and last packet (when above aggregation_threshold).
6579    #[prost(uint64, optional, tag="6")]
6580    pub total_duration: ::core::option::Option<u64>,
6581    /// Total packet length in bytes (when above aggregation_threshold).
6582    #[prost(uint64, optional, tag="7")]
6583    pub total_length: ::core::option::Option<u64>,
6584    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
6585    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
6586}
6587/// Nested message and enum types in `NetworkPacketBundle`.
6588pub mod network_packet_bundle {
6589    #[derive(Clone, PartialEq, ::prost::Oneof)]
6590    pub enum PacketContext {
6591        /// The intern id for looking up the associated packet context.
6592        #[prost(uint64, tag="1")]
6593        Iid(u64),
6594        /// The inlined context for events in this bundle.
6595        #[prost(message, tag="2")]
6596        Ctx(super::NetworkPacketEvent),
6597    }
6598}
6599/// An internable packet context.
6600#[derive(Clone, PartialEq, ::prost::Message)]
6601pub struct NetworkPacketContext {
6602    #[prost(uint64, optional, tag="1")]
6603    pub iid: ::core::option::Option<u64>,
6604    #[prost(message, optional, tag="2")]
6605    pub ctx: ::core::option::Option<NetworkPacketEvent>,
6606}
6607// End of protos/perfetto/trace/android/network_trace.proto
6608
6609// Begin of protos/perfetto/trace/android/packages_list.proto
6610
6611#[derive(Clone, PartialEq, ::prost::Message)]
6612pub struct PackagesList {
6613    #[prost(message, repeated, tag="1")]
6614    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
6615    /// At least one error occurred parsing the packages.list.
6616    #[prost(bool, optional, tag="2")]
6617    pub parse_error: ::core::option::Option<bool>,
6618    /// Failed to open / read packages.list.
6619    #[prost(bool, optional, tag="3")]
6620    pub read_error: ::core::option::Option<bool>,
6621}
6622/// Nested message and enum types in `PackagesList`.
6623pub mod packages_list {
6624    #[derive(Clone, PartialEq, ::prost::Message)]
6625    pub struct PackageInfo {
6626        #[prost(string, optional, tag="1")]
6627        pub name: ::core::option::Option<::prost::alloc::string::String>,
6628        #[prost(uint64, optional, tag="2")]
6629        pub uid: ::core::option::Option<u64>,
6630        #[prost(bool, optional, tag="3")]
6631        pub debuggable: ::core::option::Option<bool>,
6632        #[prost(bool, optional, tag="4")]
6633        pub profileable_from_shell: ::core::option::Option<bool>,
6634        #[prost(int64, optional, tag="5")]
6635        pub version_code: ::core::option::Option<i64>,
6636    }
6637}
6638// End of protos/perfetto/trace/android/packages_list.proto
6639
6640// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
6641
6642#[derive(Clone, PartialEq, ::prost::Message)]
6643pub struct PixelModemEvents {
6644    /// Pigweed-format dehydrated events.
6645    #[prost(bytes="vec", repeated, tag="1")]
6646    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
6647    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
6648    /// timestamp is the absolute timestamp of the first event. Subsequent
6649    /// timestamps are deltas from the previous timestamp.
6650    /// The nth entry from `events` gets the nth entry here.
6651    #[prost(uint64, repeated, packed="false", tag="2")]
6652    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
6653}
6654/// NB: this is not emitted in the trace but can be prepended later.
6655#[derive(Clone, PartialEq, ::prost::Message)]
6656pub struct PixelModemTokenDatabase {
6657    /// Pigweed-format database to allow event rehydration.
6658    #[prost(bytes="vec", optional, tag="1")]
6659    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6660}
6661// End of protos/perfetto/trace/android/pixel_modem_events.proto
6662
6663// Begin of protos/perfetto/trace/android/protolog.proto
6664
6665/// represents a single log entry 
6666#[derive(Clone, PartialEq, ::prost::Message)]
6667pub struct ProtoLogMessage {
6668    /// log statement identifier, created from message string and log level. 
6669    #[prost(fixed64, optional, tag="1")]
6670    pub message_id: ::core::option::Option<u64>,
6671    /// string parameters passed to the log call that have been interned. 
6672    #[prost(uint32, repeated, packed="false", tag="2")]
6673    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
6674    /// integer parameters passed to the log call. 
6675    #[prost(sint64, repeated, packed="false", tag="3")]
6676    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
6677    /// floating point parameters passed to the log call. 
6678    #[prost(double, repeated, packed="false", tag="4")]
6679    pub double_params: ::prost::alloc::vec::Vec<f64>,
6680    /// boolean parameters passed to the log call. 
6681    #[prost(int32, repeated, packed="false", tag="5")]
6682    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
6683    /// id of the interned stacktrace string
6684    /// (only dumped if explicitly confuigured to do so)
6685    #[prost(uint32, optional, tag="6")]
6686    pub stacktrace_iid: ::core::option::Option<u32>,
6687}
6688/// contains all the data required to fully decode the protolog messages 
6689#[derive(Clone, PartialEq, ::prost::Message)]
6690pub struct ProtoLogViewerConfig {
6691    #[prost(message, repeated, tag="1")]
6692    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
6693    #[prost(message, repeated, tag="2")]
6694    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
6695}
6696/// Nested message and enum types in `ProtoLogViewerConfig`.
6697pub mod proto_log_viewer_config {
6698    #[derive(Clone, PartialEq, ::prost::Message)]
6699    pub struct MessageData {
6700        /// the id of the message that is logged in a ProtoLogMessage
6701        #[prost(fixed64, optional, tag="1")]
6702        pub message_id: ::core::option::Option<u64>,
6703        /// the string representation of the message
6704        #[prost(string, optional, tag="2")]
6705        pub message: ::core::option::Option<::prost::alloc::string::String>,
6706        /// the level of the message
6707        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
6708        pub level: ::core::option::Option<i32>,
6709        /// the id of the log group this message belongs to
6710        #[prost(uint32, optional, tag="4")]
6711        pub group_id: ::core::option::Option<u32>,
6712        /// path to the file where the message was logged
6713        #[prost(string, optional, tag="5")]
6714        pub location: ::core::option::Option<::prost::alloc::string::String>,
6715    }
6716    /// information about a ProtoLog log group 
6717    #[derive(Clone, PartialEq, ::prost::Message)]
6718    pub struct Group {
6719        #[prost(uint32, optional, tag="1")]
6720        pub id: ::core::option::Option<u32>,
6721        #[prost(string, optional, tag="2")]
6722        pub name: ::core::option::Option<::prost::alloc::string::String>,
6723        #[prost(string, optional, tag="3")]
6724        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6725    }
6726}
6727// End of protos/perfetto/trace/android/protolog.proto
6728
6729// Begin of protos/perfetto/trace/android/graphics/rect.proto
6730
6731#[derive(Clone, PartialEq, ::prost::Message)]
6732pub struct RectProto {
6733    #[prost(int32, optional, tag="1")]
6734    pub left: ::core::option::Option<i32>,
6735    #[prost(int32, optional, tag="2")]
6736    pub top: ::core::option::Option<i32>,
6737    #[prost(int32, optional, tag="3")]
6738    pub right: ::core::option::Option<i32>,
6739    #[prost(int32, optional, tag="4")]
6740    pub bottom: ::core::option::Option<i32>,
6741}
6742// End of protos/perfetto/trace/android/graphics/rect.proto
6743
6744// Begin of protos/perfetto/trace/android/shell_transition.proto
6745
6746/// ShellTransition messages record information about the shell transitions in
6747/// the system. This is used to track the animations that are created and execute
6748/// through the shell transition system.
6749#[derive(Clone, PartialEq, ::prost::Message)]
6750pub struct ShellTransition {
6751    /// The unique identifier of the transition.
6752    #[prost(int32, optional, tag="1")]
6753    pub id: ::core::option::Option<i32>,
6754    /// The time the transition was created on the WM side
6755    /// (using SystemClock.elapsedRealtimeNanos())
6756    #[prost(int64, optional, tag="2")]
6757    pub create_time_ns: ::core::option::Option<i64>,
6758    /// The time the transition was sent from the WM side to shell
6759    /// (using SystemClock.elapsedRealtimeNanos())
6760    #[prost(int64, optional, tag="3")]
6761    pub send_time_ns: ::core::option::Option<i64>,
6762    /// The time the transition was dispatched by shell to execute
6763    /// (using SystemClock.elapsedRealtimeNanos())
6764    #[prost(int64, optional, tag="4")]
6765    pub dispatch_time_ns: ::core::option::Option<i64>,
6766    /// If the transition merge was accepted by the transition handler, this
6767    /// contains the time the transition was merged into transition with id
6768    /// `merge_target`.
6769    /// (using SystemClock.elapsedRealtimeNanos())
6770    #[prost(int64, optional, tag="5")]
6771    pub merge_time_ns: ::core::option::Option<i64>,
6772    /// The time shell proposed the transition should be merged to the transition
6773    /// handler into transition with id `merge_target`.
6774    /// (using SystemClock.elapsedRealtimeNanos()).
6775    #[prost(int64, optional, tag="6")]
6776    pub merge_request_time_ns: ::core::option::Option<i64>,
6777    /// If the transition was aborted on the shell side, this is the time that
6778    /// occurred.
6779    /// (using SystemClock.elapsedRealtimeNanos())
6780    #[prost(int64, optional, tag="7")]
6781    pub shell_abort_time_ns: ::core::option::Option<i64>,
6782    /// If the transition was aborted on the wm side, this is the time that
6783    /// occurred.
6784    /// (using SystemClock.elapsedRealtimeNanos())
6785    #[prost(int64, optional, tag="8")]
6786    pub wm_abort_time_ns: ::core::option::Option<i64>,
6787    /// The time WM considers the transition to be complete.
6788    /// (using SystemClock.elapsedRealtimeNanos())
6789    #[prost(int64, optional, tag="9")]
6790    pub finish_time_ns: ::core::option::Option<i64>,
6791    /// The id of the transaction that WM proposed to use as the starting
6792    /// transaction. It contains all the layer changes required to setup the
6793    /// transition and should be executed right at the start of the transition
6794    /// by the transition handler.
6795    #[prost(uint64, optional, tag="10")]
6796    pub start_transaction_id: ::core::option::Option<u64>,
6797    /// The if of the transaction that WM proposed to use as the finish
6798    /// transaction. It contains all the layer changes required to set the final
6799    /// state of the transition.
6800    #[prost(uint64, optional, tag="11")]
6801    pub finish_transaction_id: ::core::option::Option<u64>,
6802    /// The id of the handler that executed the transition. A HandlerMappings
6803    /// message in the trace will contain the mapping of id to a string
6804    /// representation of the handler.
6805    #[prost(int32, optional, tag="12")]
6806    pub handler: ::core::option::Option<i32>,
6807    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
6808    #[prost(int32, optional, tag="13")]
6809    pub r#type: ::core::option::Option<i32>,
6810    /// The list of changes that are part of this transition.
6811    #[prost(message, repeated, tag="14")]
6812    pub changes: ::prost::alloc::vec::Vec<shell_transition::Change>,
6813    /// The id of the transition we have requested to merge or have merged this
6814    /// transition into.
6815    #[prost(int32, optional, tag="15")]
6816    pub merge_target: ::core::option::Option<i32>,
6817    /// The flags set on this transition.
6818    #[prost(int32, optional, tag="16")]
6819    pub flags: ::core::option::Option<i32>,
6820    /// The time the starting window was removed. Tracked because this can
6821    /// happen after the transition finishes, but the app may not yet be visible
6822    /// until the starting window is removed. So in a sense the transition is not
6823    /// finished until the starting window is removed. (b/284302118)
6824    /// (using SystemClock.elapsedRealtimeNanos())
6825    #[prost(int64, optional, tag="17")]
6826    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
6827}
6828/// Nested message and enum types in `ShellTransition`.
6829pub mod shell_transition {
6830    /// Contains the information about the windows changed in a transition.
6831    #[derive(Clone, PartialEq, ::prost::Message)]
6832    pub struct Change {
6833        /// The transition mode of this change (e.g. TO_FRONT, CLOSE...)
6834        #[prost(int32, optional, tag="1")]
6835        pub mode: ::core::option::Option<i32>,
6836        /// The layer id of this change.
6837        #[prost(int32, optional, tag="2")]
6838        pub layer_id: ::core::option::Option<i32>,
6839        /// The window id of this change.
6840        #[prost(int32, optional, tag="3")]
6841        pub window_id: ::core::option::Option<i32>,
6842        /// The flags set on this change.
6843        #[prost(int32, optional, tag="4")]
6844        pub flags: ::core::option::Option<i32>,
6845        /// The display id the change is transitioning on before the transition.
6846        #[prost(int32, optional, tag="5")]
6847        pub start_display_id: ::core::option::Option<i32>,
6848        /// The display id the change is transitioning on after the transition.
6849        #[prost(int32, optional, tag="6")]
6850        pub end_display_id: ::core::option::Option<i32>,
6851        /// The rotation of the change before the transition.
6852        #[prost(int32, optional, tag="7")]
6853        pub start_rotation: ::core::option::Option<i32>,
6854        /// The rotation of the change after the transition.
6855        #[prost(int32, optional, tag="8")]
6856        pub end_rotation: ::core::option::Option<i32>,
6857        /// The absolute screen bounds of the change before the transition.
6858        #[prost(message, optional, tag="9")]
6859        pub start_absolute_bounds: ::core::option::Option<super::RectProto>,
6860        /// The absolute screen bounds of the change after the transition.
6861        #[prost(message, optional, tag="10")]
6862        pub end_absolute_bounds: ::core::option::Option<super::RectProto>,
6863    }
6864}
6865/// Contains mappings from handler ids to string representation of the handlers.
6866#[derive(Clone, PartialEq, ::prost::Message)]
6867pub struct ShellHandlerMappings {
6868    #[prost(message, repeated, tag="1")]
6869    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
6870}
6871#[derive(Clone, PartialEq, ::prost::Message)]
6872pub struct ShellHandlerMapping {
6873    /// The id of the handler used in the ShellTransition message.
6874    #[prost(int32, optional, tag="1")]
6875    pub id: ::core::option::Option<i32>,
6876    /// A human readable and meaningful string representation of the handler.
6877    #[prost(string, optional, tag="2")]
6878    pub name: ::core::option::Option<::prost::alloc::string::String>,
6879}
6880// End of protos/perfetto/trace/android/shell_transition.proto
6881
6882// Begin of protos/perfetto/trace/android/graphics/corner_radii.proto
6883
6884#[derive(Clone, PartialEq, ::prost::Message)]
6885pub struct CornerRadiiProto {
6886    #[prost(float, optional, tag="1")]
6887    pub tl: ::core::option::Option<f32>,
6888    #[prost(float, optional, tag="2")]
6889    pub tr: ::core::option::Option<f32>,
6890    #[prost(float, optional, tag="3")]
6891    pub bl: ::core::option::Option<f32>,
6892    #[prost(float, optional, tag="4")]
6893    pub br: ::core::option::Option<f32>,
6894}
6895// End of protos/perfetto/trace/android/graphics/corner_radii.proto
6896
6897// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
6898
6899#[derive(Clone, PartialEq, ::prost::Message)]
6900pub struct RegionProto {
6901    #[prost(message, repeated, tag="2")]
6902    pub rect: ::prost::alloc::vec::Vec<RectProto>,
6903}
6904#[derive(Clone, PartialEq, ::prost::Message)]
6905pub struct SizeProto {
6906    #[prost(int32, optional, tag="1")]
6907    pub w: ::core::option::Option<i32>,
6908    #[prost(int32, optional, tag="2")]
6909    pub h: ::core::option::Option<i32>,
6910}
6911#[derive(Clone, PartialEq, ::prost::Message)]
6912pub struct TransformProto {
6913    #[prost(float, optional, tag="1")]
6914    pub dsdx: ::core::option::Option<f32>,
6915    #[prost(float, optional, tag="2")]
6916    pub dtdx: ::core::option::Option<f32>,
6917    #[prost(float, optional, tag="3")]
6918    pub dsdy: ::core::option::Option<f32>,
6919    #[prost(float, optional, tag="4")]
6920    pub dtdy: ::core::option::Option<f32>,
6921    #[prost(int32, optional, tag="5")]
6922    pub r#type: ::core::option::Option<i32>,
6923}
6924#[derive(Clone, PartialEq, ::prost::Message)]
6925pub struct ColorProto {
6926    #[prost(float, optional, tag="1")]
6927    pub r: ::core::option::Option<f32>,
6928    #[prost(float, optional, tag="2")]
6929    pub g: ::core::option::Option<f32>,
6930    #[prost(float, optional, tag="3")]
6931    pub b: ::core::option::Option<f32>,
6932    #[prost(float, optional, tag="4")]
6933    pub a: ::core::option::Option<f32>,
6934}
6935#[derive(Clone, PartialEq, ::prost::Message)]
6936pub struct InputWindowInfoProto {
6937    #[prost(uint32, optional, tag="1")]
6938    pub layout_params_flags: ::core::option::Option<u32>,
6939    #[prost(int32, optional, tag="2")]
6940    pub layout_params_type: ::core::option::Option<i32>,
6941    #[prost(message, optional, tag="3")]
6942    pub frame: ::core::option::Option<RectProto>,
6943    #[prost(message, optional, tag="4")]
6944    pub touchable_region: ::core::option::Option<RegionProto>,
6945    #[prost(int32, optional, tag="5")]
6946    pub surface_inset: ::core::option::Option<i32>,
6947    #[prost(bool, optional, tag="6")]
6948    pub visible: ::core::option::Option<bool>,
6949    #[deprecated]
6950    #[prost(bool, optional, tag="7")]
6951    pub can_receive_keys: ::core::option::Option<bool>,
6952    #[prost(bool, optional, tag="8")]
6953    pub focusable: ::core::option::Option<bool>,
6954    #[prost(bool, optional, tag="9")]
6955    pub has_wallpaper: ::core::option::Option<bool>,
6956    #[prost(float, optional, tag="10")]
6957    pub global_scale_factor: ::core::option::Option<f32>,
6958    #[deprecated]
6959    #[prost(float, optional, tag="11")]
6960    pub window_x_scale: ::core::option::Option<f32>,
6961    #[deprecated]
6962    #[prost(float, optional, tag="12")]
6963    pub window_y_scale: ::core::option::Option<f32>,
6964    #[prost(int32, optional, tag="13")]
6965    pub crop_layer_id: ::core::option::Option<i32>,
6966    #[prost(bool, optional, tag="14")]
6967    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6968    #[prost(message, optional, tag="15")]
6969    pub touchable_region_crop: ::core::option::Option<RectProto>,
6970    #[prost(message, optional, tag="16")]
6971    pub transform: ::core::option::Option<TransformProto>,
6972    #[prost(uint32, optional, tag="17")]
6973    pub input_config: ::core::option::Option<u32>,
6974}
6975#[derive(Clone, PartialEq, ::prost::Message)]
6976pub struct BlurRegion {
6977    #[prost(uint32, optional, tag="1")]
6978    pub blur_radius: ::core::option::Option<u32>,
6979    #[deprecated]
6980    #[prost(uint32, optional, tag="2")]
6981    pub corner_radius_tl: ::core::option::Option<u32>,
6982    #[deprecated]
6983    #[prost(uint32, optional, tag="3")]
6984    pub corner_radius_tr: ::core::option::Option<u32>,
6985    #[deprecated]
6986    #[prost(uint32, optional, tag="4")]
6987    pub corner_radius_bl: ::core::option::Option<u32>,
6988    #[deprecated]
6989    #[prost(float, optional, tag="5")]
6990    pub corner_radius_br: ::core::option::Option<f32>,
6991    #[prost(float, optional, tag="11")]
6992    pub corner_radius_tlx: ::core::option::Option<f32>,
6993    #[prost(float, optional, tag="12")]
6994    pub corner_radius_tly: ::core::option::Option<f32>,
6995    #[prost(float, optional, tag="13")]
6996    pub corner_radius_trx: ::core::option::Option<f32>,
6997    #[prost(float, optional, tag="14")]
6998    pub corner_radius_try: ::core::option::Option<f32>,
6999    #[prost(float, optional, tag="15")]
7000    pub corner_radius_blx: ::core::option::Option<f32>,
7001    #[prost(float, optional, tag="16")]
7002    pub corner_radius_bly: ::core::option::Option<f32>,
7003    #[prost(float, optional, tag="17")]
7004    pub corner_radius_brx: ::core::option::Option<f32>,
7005    #[prost(float, optional, tag="18")]
7006    pub corner_radius_bry: ::core::option::Option<f32>,
7007    #[prost(float, optional, tag="6")]
7008    pub alpha: ::core::option::Option<f32>,
7009    #[prost(int32, optional, tag="7")]
7010    pub left: ::core::option::Option<i32>,
7011    #[prost(int32, optional, tag="8")]
7012    pub top: ::core::option::Option<i32>,
7013    #[prost(int32, optional, tag="9")]
7014    pub right: ::core::option::Option<i32>,
7015    #[prost(int32, optional, tag="10")]
7016    pub bottom: ::core::option::Option<i32>,
7017}
7018#[derive(Clone, PartialEq, ::prost::Message)]
7019pub struct ColorTransformProto {
7020    /// This will be a 4x4 matrix of float values
7021    #[prost(float, repeated, tag="1")]
7022    pub val: ::prost::alloc::vec::Vec<f32>,
7023}
7024#[derive(Clone, PartialEq, ::prost::Message)]
7025pub struct BoxShadowSettings {
7026    #[prost(message, repeated, tag="1")]
7027    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
7028}
7029/// Nested message and enum types in `BoxShadowSettings`.
7030pub mod box_shadow_settings {
7031    #[derive(Clone, PartialEq, ::prost::Message)]
7032    pub struct BoxShadowParams {
7033        #[prost(float, optional, tag="1")]
7034        pub blur_radius: ::core::option::Option<f32>,
7035        #[prost(float, optional, tag="2")]
7036        pub spread_radius: ::core::option::Option<f32>,
7037        #[prost(int32, optional, tag="3")]
7038        pub color: ::core::option::Option<i32>,
7039        #[prost(float, optional, tag="4")]
7040        pub offset_x: ::core::option::Option<f32>,
7041        #[prost(float, optional, tag="5")]
7042        pub offset_y: ::core::option::Option<f32>,
7043    }
7044}
7045#[derive(Clone, PartialEq, ::prost::Message)]
7046pub struct BorderSettings {
7047    #[prost(float, optional, tag="1")]
7048    pub stroke_width: ::core::option::Option<f32>,
7049    #[prost(int32, optional, tag="2")]
7050    pub color: ::core::option::Option<i32>,
7051}
7052// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
7053
7054/// Message used by Winscope to process legacy trace files.
7055/// Represents a file full of surface flinger trace entries.
7056/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
7057/// (.LYRTRACE), such that they can be easily identified.
7058#[derive(Clone, PartialEq, ::prost::Message)]
7059pub struct LayersTraceFileProto {
7060    /// Must be the first field, set to value in MagicNumber
7061    #[prost(fixed64, optional, tag="1")]
7062    pub magic_number: ::core::option::Option<u64>,
7063    #[prost(message, repeated, tag="2")]
7064    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
7065    /// Offset between real-time clock and elapsed time clock in nanoseconds.
7066    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
7067    /// systemTime(SYSTEM_TIME_MONOTONIC)
7068    #[prost(fixed64, optional, tag="3")]
7069    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
7070}
7071/// Nested message and enum types in `LayersTraceFileProto`.
7072pub mod layers_trace_file_proto {
7073    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
7074    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
7075    /// and there's no nice way to put 64bit constants into .proto files.
7076    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7077    #[repr(i32)]
7078    pub enum MagicNumber {
7079        Invalid = 0,
7080        /// LYRT (little-endian ASCII)
7081        L = 1414682956,
7082        /// RACE (little-endian ASCII)
7083        H = 1162035538,
7084    }
7085    impl MagicNumber {
7086        /// String value of the enum field names used in the ProtoBuf definition.
7087        ///
7088        /// The values are not transformed in any way and thus are considered stable
7089        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7090        pub fn as_str_name(&self) -> &'static str {
7091            match self {
7092                MagicNumber::Invalid => "INVALID",
7093                MagicNumber::L => "MAGIC_NUMBER_L",
7094                MagicNumber::H => "MAGIC_NUMBER_H",
7095            }
7096        }
7097    }
7098}
7099#[derive(Clone, PartialEq, ::prost::Message)]
7100pub struct LayersSnapshotProto {
7101    /// elapsed realtime in nanos since boot of when this entry was logged
7102    #[prost(sfixed64, optional, tag="1")]
7103    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
7104    /// SurfaceFlinger's stage where the snapshot was triggered.
7105    /// Currently either "visibleRegionsDirty" or "bufferLatched".
7106    #[prost(string, optional, tag="2")]
7107    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
7108    #[prost(message, optional, tag="3")]
7109    pub layers: ::core::option::Option<LayersProto>,
7110    /// Blob for the current HWC information for all layers, reported by dumpsys.
7111    /// Example:
7112    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
7113    #[prost(string, optional, tag="4")]
7114    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
7115    /// Excludes state sent during composition like visible region and composition
7116    /// type.
7117    #[prost(bool, optional, tag="5")]
7118    pub excludes_composition_state: ::core::option::Option<bool>,
7119    /// Number of missed entries since the last entry was recorded.
7120    #[prost(uint32, optional, tag="6")]
7121    pub missed_entries: ::core::option::Option<u32>,
7122    #[prost(message, repeated, tag="7")]
7123    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
7124    #[prost(int64, optional, tag="8")]
7125    pub vsync_id: ::core::option::Option<i64>,
7126}
7127/// ProtoVM Patch Proto
7128/// Merged by ProtoVM into LayersSnapshotProto
7129#[derive(Clone, PartialEq, ::prost::Message)]
7130pub struct LayersPatchProto {
7131    /// Layers that have been modified or added in this patch.
7132    #[prost(message, repeated, tag="1")]
7133    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
7134    /// Displays that have been modified or added in this patch.
7135    #[prost(message, repeated, tag="2")]
7136    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
7137    /// IDs of layers that have been deleted.
7138    #[prost(int32, repeated, packed="false", tag="3")]
7139    pub deleted_layer_ids: ::prost::alloc::vec::Vec<i32>,
7140    /// IDs of displays that have been deleted.
7141    #[prost(uint64, repeated, packed="false", tag="4")]
7142    pub deleted_display_ids: ::prost::alloc::vec::Vec<u64>,
7143    /// elapsed realtime in nanos since boot of when this entry was logged
7144    #[prost(sfixed64, optional, tag="5")]
7145    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
7146    /// SurfaceFlinger's stage where the snapshot was triggered.
7147    /// Currently either "visibleRegionsDirty" or "bufferLatched".
7148    #[prost(string, optional, tag="6")]
7149    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
7150    /// Blob for the current HWC information for all layers, reported by dumpsys.
7151    #[prost(string, optional, tag="7")]
7152    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
7153    /// Excludes state sent during composition like visible region and composition
7154    /// type.
7155    #[prost(bool, optional, tag="8")]
7156    pub excludes_composition_state: ::core::option::Option<bool>,
7157    /// Number of missed entries since the last entry was recorded.
7158    #[prost(uint32, optional, tag="9")]
7159    pub missed_entries: ::core::option::Option<u32>,
7160    /// VSync ID associated with this patch.
7161    #[prost(int64, optional, tag="10")]
7162    pub vsync_id: ::core::option::Option<i64>,
7163}
7164/// Contains a list of all layers.
7165#[derive(Clone, PartialEq, ::prost::Message)]
7166pub struct LayersProto {
7167    #[prost(message, repeated, tag="1")]
7168    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
7169}
7170#[derive(Clone, PartialEq, ::prost::Message)]
7171pub struct DisplayProto {
7172    #[prost(uint64, optional, tag="1")]
7173    pub id: ::core::option::Option<u64>,
7174    /// Display descriptor, e.g. "Built-In Screen"
7175    #[prost(string, optional, tag="2")]
7176    pub name: ::core::option::Option<::prost::alloc::string::String>,
7177    #[prost(uint32, optional, tag="3")]
7178    pub layer_stack: ::core::option::Option<u32>,
7179    #[prost(message, optional, tag="4")]
7180    pub size: ::core::option::Option<SizeProto>,
7181    #[prost(message, optional, tag="5")]
7182    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
7183    #[prost(message, optional, tag="6")]
7184    pub transform: ::core::option::Option<TransformProto>,
7185    #[prost(bool, optional, tag="7")]
7186    pub is_virtual: ::core::option::Option<bool>,
7187    #[prost(double, optional, tag="8")]
7188    pub dpi_x: ::core::option::Option<f64>,
7189    #[prost(double, optional, tag="9")]
7190    pub dpi_y: ::core::option::Option<f64>,
7191}
7192/// Information about each layer.
7193#[derive(Clone, PartialEq, ::prost::Message)]
7194pub struct LayerProto {
7195    /// unique id per layer.
7196    #[prost(int32, optional, tag="1")]
7197    pub id: ::core::option::Option<i32>,
7198    /// unique name per layer.
7199    /// Example: "Wallpaper".
7200    #[prost(string, optional, tag="2")]
7201    pub name: ::core::option::Option<::prost::alloc::string::String>,
7202    /// list of children this layer may have. May be empty.
7203    #[prost(int32, repeated, tag="3")]
7204    pub children: ::prost::alloc::vec::Vec<i32>,
7205    /// list of layers that are z order relative to this layer.
7206    #[prost(int32, repeated, tag="4")]
7207    pub relatives: ::prost::alloc::vec::Vec<i32>,
7208    /// The type of layer.
7209    /// Examples: "ContainerLayer", "BufferStateLayer".
7210    #[prost(string, optional, tag="5")]
7211    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7212    #[prost(message, optional, tag="6")]
7213    pub transparent_region: ::core::option::Option<RegionProto>,
7214    #[prost(message, optional, tag="7")]
7215    pub visible_region: ::core::option::Option<RegionProto>,
7216    #[prost(message, optional, tag="8")]
7217    pub damage_region: ::core::option::Option<RegionProto>,
7218    #[prost(uint32, optional, tag="9")]
7219    pub layer_stack: ::core::option::Option<u32>,
7220    /// The layer's z order. Can be z order in layer stack, relative to parent,
7221    /// or relative to another layer specified in zOrderRelative.
7222    #[prost(int32, optional, tag="10")]
7223    pub z: ::core::option::Option<i32>,
7224    /// The layer's position on the display.
7225    #[prost(message, optional, tag="11")]
7226    pub position: ::core::option::Option<PositionProto>,
7227    /// The layer's requested position.
7228    #[prost(message, optional, tag="12")]
7229    pub requested_position: ::core::option::Option<PositionProto>,
7230    /// The layer's size.
7231    #[prost(message, optional, tag="13")]
7232    pub size: ::core::option::Option<SizeProto>,
7233    /// The layer's crop in its own bounds.
7234    #[prost(message, optional, tag="14")]
7235    pub crop: ::core::option::Option<RectProto>,
7236    /// The layer's crop in its parent's bounds.
7237    #[deprecated]
7238    #[prost(message, optional, tag="15")]
7239    pub final_crop: ::core::option::Option<RectProto>,
7240    #[prost(bool, optional, tag="16")]
7241    pub is_opaque: ::core::option::Option<bool>,
7242    #[prost(bool, optional, tag="17")]
7243    pub invalidate: ::core::option::Option<bool>,
7244    /// Composition states's dataspace.
7245    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
7246    /// See full enum in
7247    /// frameworks/native/libs/nativewindow/include/android/data_space.h
7248    #[prost(string, optional, tag="18")]
7249    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
7250    /// Buffer's pixel format
7251    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
7252    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
7253    #[prost(string, optional, tag="19")]
7254    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
7255    /// The layer's actual color.
7256    #[prost(message, optional, tag="20")]
7257    pub color: ::core::option::Option<ColorProto>,
7258    /// The layer's requested color.
7259    #[prost(message, optional, tag="21")]
7260    pub requested_color: ::core::option::Option<ColorProto>,
7261    /// Can be any combination of
7262    ///     hidden = 0x01
7263    ///     opaque = 0x02,
7264    ///     secure = 0x80,
7265    #[prost(uint32, optional, tag="22")]
7266    pub flags: ::core::option::Option<u32>,
7267    /// The layer's actual transform
7268    #[prost(message, optional, tag="23")]
7269    pub transform: ::core::option::Option<TransformProto>,
7270    /// The layer's requested transform.
7271    #[prost(message, optional, tag="24")]
7272    pub requested_transform: ::core::option::Option<TransformProto>,
7273    /// The parent layer. This value can be null if there is no parent.
7274    #[prost(int32, optional, tag="25")]
7275    pub parent: ::core::option::Option<i32>,
7276    /// The layer that this layer has a z order relative to. This value can be
7277    /// null.
7278    #[prost(int32, optional, tag="26")]
7279    pub z_order_relative_of: ::core::option::Option<i32>,
7280    /// This value can be null if there's nothing to draw.
7281    #[prost(message, optional, tag="27")]
7282    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
7283    /// The number of frames available.
7284    #[prost(int32, optional, tag="28")]
7285    pub queued_frames: ::core::option::Option<i32>,
7286    #[prost(bool, optional, tag="29")]
7287    pub refresh_pending: ::core::option::Option<bool>,
7288    /// The layer's composer backend destination frame
7289    #[prost(message, optional, tag="30")]
7290    pub hwc_frame: ::core::option::Option<RectProto>,
7291    /// The layer's composer backend source crop
7292    #[prost(message, optional, tag="31")]
7293    pub hwc_crop: ::core::option::Option<FloatRectProto>,
7294    /// The layer's composer backend transform
7295    #[prost(int32, optional, tag="32")]
7296    pub hwc_transform: ::core::option::Option<i32>,
7297    #[deprecated]
7298    #[prost(int32, optional, tag="33")]
7299    pub window_type: ::core::option::Option<i32>,
7300    #[deprecated]
7301    #[prost(int32, optional, tag="34")]
7302    pub app_id: ::core::option::Option<i32>,
7303    /// The layer's composition type
7304    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
7305    pub hwc_composition_type: ::core::option::Option<i32>,
7306    /// If it's a buffer layer, indicate if the content is protected
7307    #[prost(bool, optional, tag="36")]
7308    pub is_protected: ::core::option::Option<bool>,
7309    /// Current frame number being rendered.
7310    #[prost(uint64, optional, tag="37")]
7311    pub curr_frame: ::core::option::Option<u64>,
7312    /// A list of barriers that the layer is waiting to update state.
7313    #[prost(message, repeated, tag="38")]
7314    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
7315    /// If active_buffer is not null, record its transform.
7316    #[prost(message, optional, tag="39")]
7317    pub buffer_transform: ::core::option::Option<TransformProto>,
7318    #[prost(int32, optional, tag="40")]
7319    pub effective_scaling_mode: ::core::option::Option<i32>,
7320    /// Layer's corner radius
7321    #[deprecated]
7322    #[prost(float, optional, tag="41")]
7323    pub corner_radius: ::core::option::Option<f32>,
7324    /// Metadata map. May be empty.
7325    #[prost(map="int32, bytes", tag="42")]
7326    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::vec::Vec<u8>>,
7327    #[prost(message, optional, tag="43")]
7328    pub effective_transform: ::core::option::Option<TransformProto>,
7329    #[prost(message, optional, tag="44")]
7330    pub source_bounds: ::core::option::Option<FloatRectProto>,
7331    #[prost(message, optional, tag="45")]
7332    pub bounds: ::core::option::Option<FloatRectProto>,
7333    #[prost(message, optional, tag="46")]
7334    pub screen_bounds: ::core::option::Option<FloatRectProto>,
7335    #[prost(message, optional, tag="47")]
7336    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
7337    /// Crop used to draw the rounded corner.
7338    #[prost(message, optional, tag="48")]
7339    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
7340    /// length of the shadow to draw around the layer, it may be set on the
7341    /// layer or set by a parent layer.
7342    #[prost(float, optional, tag="49")]
7343    pub shadow_radius: ::core::option::Option<f32>,
7344    #[prost(message, optional, tag="50")]
7345    pub color_transform: ::core::option::Option<ColorTransformProto>,
7346    #[prost(bool, optional, tag="51")]
7347    pub is_relative_of: ::core::option::Option<bool>,
7348    /// Layer's background blur radius in pixels.
7349    #[prost(int32, optional, tag="52")]
7350    pub background_blur_radius: ::core::option::Option<i32>,
7351    #[prost(uint32, optional, tag="53")]
7352    pub owner_uid: ::core::option::Option<u32>,
7353    /// Regions of a layer, where blur should be applied.
7354    #[prost(message, repeated, tag="54")]
7355    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
7356    #[prost(bool, optional, tag="55")]
7357    pub is_trusted_overlay: ::core::option::Option<bool>,
7358    /// Corner radius explicitly set on layer rather than inherited
7359    #[deprecated]
7360    #[prost(float, optional, tag="56")]
7361    pub requested_corner_radius: ::core::option::Option<f32>,
7362    #[prost(message, optional, tag="57")]
7363    pub destination_frame: ::core::option::Option<RectProto>,
7364    #[prost(uint32, optional, tag="58")]
7365    pub original_id: ::core::option::Option<u32>,
7366    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
7367    pub trusted_overlay: ::core::option::Option<i32>,
7368    /// Layer's scale during background blur, relative to 1.0f=100%
7369    #[prost(float, optional, tag="60")]
7370    pub background_blur_scale: ::core::option::Option<f32>,
7371    /// Layer's corner radius.
7372    #[prost(message, optional, tag="61")]
7373    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
7374    /// Corner radius explicitly set on layer rather than inherited
7375    #[prost(message, optional, tag="62")]
7376    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
7377    /// Corner radius explicity set as drawn by client
7378    #[prost(message, optional, tag="63")]
7379    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
7380    /// Priority value of the layer set by the system.
7381    #[prost(int32, optional, tag="64")]
7382    pub system_content_priority: ::core::option::Option<i32>,
7383    /// Settings which specify how shadows should be drawn for a layer.
7384    #[prost(message, optional, tag="65")]
7385    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
7386    /// Settings which specify how an outline should be drawn for a layer.
7387    #[prost(message, optional, tag="66")]
7388    pub border_settings: ::core::option::Option<BorderSettings>,
7389    /// "True" corner radii of the layer computed by SurfaceFlinger.
7390    #[prost(message, optional, tag="67")]
7391    pub effective_radii: ::core::option::Option<CornerRadiiProto>,
7392    /// Reported corner radii of the layer.
7393    #[prost(message, optional, tag="68")]
7394    pub reported_radii: ::core::option::Option<CornerRadiiProto>,
7395    /// Flag indicating if client-drawn radii are disabled.
7396    #[prost(bool, optional, tag="69")]
7397    pub disable_client_drawn_radii: ::core::option::Option<bool>,
7398}
7399#[derive(Clone, PartialEq, ::prost::Message)]
7400pub struct PositionProto {
7401    #[prost(float, optional, tag="1")]
7402    pub x: ::core::option::Option<f32>,
7403    #[prost(float, optional, tag="2")]
7404    pub y: ::core::option::Option<f32>,
7405}
7406#[derive(Clone, PartialEq, ::prost::Message)]
7407pub struct FloatRectProto {
7408    #[prost(float, optional, tag="1")]
7409    pub left: ::core::option::Option<f32>,
7410    #[prost(float, optional, tag="2")]
7411    pub top: ::core::option::Option<f32>,
7412    #[prost(float, optional, tag="3")]
7413    pub right: ::core::option::Option<f32>,
7414    #[prost(float, optional, tag="4")]
7415    pub bottom: ::core::option::Option<f32>,
7416}
7417#[derive(Clone, PartialEq, ::prost::Message)]
7418pub struct ActiveBufferProto {
7419    #[prost(uint32, optional, tag="1")]
7420    pub width: ::core::option::Option<u32>,
7421    #[prost(uint32, optional, tag="2")]
7422    pub height: ::core::option::Option<u32>,
7423    #[prost(uint32, optional, tag="3")]
7424    pub stride: ::core::option::Option<u32>,
7425    #[prost(int32, optional, tag="4")]
7426    pub format: ::core::option::Option<i32>,
7427    #[prost(uint64, optional, tag="5")]
7428    pub usage: ::core::option::Option<u64>,
7429}
7430#[derive(Clone, PartialEq, ::prost::Message)]
7431pub struct BarrierLayerProto {
7432    /// layer id the barrier is waiting on.
7433    #[prost(int32, optional, tag="1")]
7434    pub id: ::core::option::Option<i32>,
7435    /// frame number the barrier is waiting on.
7436    #[prost(uint64, optional, tag="2")]
7437    pub frame_number: ::core::option::Option<u64>,
7438}
7439// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
7440
7441// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7442
7443/// Message used by Winscope to process legacy trace files.
7444/// Represents a file full of surface flinger transactions.
7445/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
7446/// (.TNXTRACE), such that they can be easily identified.
7447#[derive(Clone, PartialEq, ::prost::Message)]
7448pub struct TransactionTraceFile {
7449    /// Must be the first field, set to value in MagicNumber
7450    #[prost(fixed64, optional, tag="1")]
7451    pub magic_number: ::core::option::Option<u64>,
7452    #[prost(message, repeated, tag="2")]
7453    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
7454    /// offset between real-time clock and elapsed time clock in nanoseconds.
7455    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
7456    /// systemTime(SYSTEM_TIME_MONOTONIC)
7457    #[prost(fixed64, optional, tag="3")]
7458    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
7459    #[prost(uint32, optional, tag="4")]
7460    pub version: ::core::option::Option<u32>,
7461}
7462/// Nested message and enum types in `TransactionTraceFile`.
7463pub mod transaction_trace_file {
7464    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
7465    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
7466    /// and there's no nice way to put 64bit constants into .proto files.
7467    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7468    #[repr(i32)]
7469    pub enum MagicNumber {
7470        Invalid = 0,
7471        /// TNXT (little-endian ASCII)
7472        L = 1415073364,
7473        /// RACE (little-endian ASCII)
7474        H = 1162035538,
7475    }
7476    impl MagicNumber {
7477        /// String value of the enum field names used in the ProtoBuf definition.
7478        ///
7479        /// The values are not transformed in any way and thus are considered stable
7480        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7481        pub fn as_str_name(&self) -> &'static str {
7482            match self {
7483                MagicNumber::Invalid => "INVALID",
7484                MagicNumber::L => "MAGIC_NUMBER_L",
7485                MagicNumber::H => "MAGIC_NUMBER_H",
7486            }
7487        }
7488    }
7489}
7490#[derive(Clone, PartialEq, ::prost::Message)]
7491pub struct TransactionTraceEntry {
7492    #[prost(int64, optional, tag="1")]
7493    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
7494    #[prost(int64, optional, tag="2")]
7495    pub vsync_id: ::core::option::Option<i64>,
7496    #[prost(message, repeated, tag="3")]
7497    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
7498    #[prost(message, repeated, tag="4")]
7499    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
7500    #[prost(uint32, repeated, packed="false", tag="5")]
7501    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
7502    #[prost(message, repeated, tag="6")]
7503    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
7504    #[prost(int32, repeated, packed="false", tag="7")]
7505    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
7506    #[prost(uint32, repeated, packed="false", tag="8")]
7507    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
7508    #[prost(bool, optional, tag="9")]
7509    pub displays_changed: ::core::option::Option<bool>,
7510    #[prost(message, repeated, tag="10")]
7511    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
7512}
7513#[derive(Clone, PartialEq, ::prost::Message)]
7514pub struct DisplayInfo {
7515    #[prost(uint32, optional, tag="1")]
7516    pub layer_stack: ::core::option::Option<u32>,
7517    #[prost(int32, optional, tag="2")]
7518    pub display_id: ::core::option::Option<i32>,
7519    #[prost(int32, optional, tag="3")]
7520    pub logical_width: ::core::option::Option<i32>,
7521    #[prost(int32, optional, tag="4")]
7522    pub logical_height: ::core::option::Option<i32>,
7523    #[prost(message, optional, tag="5")]
7524    pub transform_inverse: ::core::option::Option<Transform>,
7525    #[prost(message, optional, tag="6")]
7526    pub transform: ::core::option::Option<Transform>,
7527    #[prost(bool, optional, tag="7")]
7528    pub receives_input: ::core::option::Option<bool>,
7529    #[prost(bool, optional, tag="8")]
7530    pub is_secure: ::core::option::Option<bool>,
7531    #[prost(bool, optional, tag="9")]
7532    pub is_primary: ::core::option::Option<bool>,
7533    #[prost(bool, optional, tag="10")]
7534    pub is_virtual: ::core::option::Option<bool>,
7535    #[prost(int32, optional, tag="11")]
7536    pub rotation_flags: ::core::option::Option<i32>,
7537    #[prost(int32, optional, tag="12")]
7538    pub transform_hint: ::core::option::Option<i32>,
7539}
7540#[derive(Clone, PartialEq, ::prost::Message)]
7541pub struct LayerCreationArgs {
7542    #[prost(uint32, optional, tag="1")]
7543    pub layer_id: ::core::option::Option<u32>,
7544    #[prost(string, optional, tag="2")]
7545    pub name: ::core::option::Option<::prost::alloc::string::String>,
7546    #[prost(uint32, optional, tag="3")]
7547    pub flags: ::core::option::Option<u32>,
7548    #[prost(uint32, optional, tag="4")]
7549    pub parent_id: ::core::option::Option<u32>,
7550    #[prost(uint32, optional, tag="5")]
7551    pub mirror_from_id: ::core::option::Option<u32>,
7552    #[prost(bool, optional, tag="6")]
7553    pub add_to_root: ::core::option::Option<bool>,
7554    #[prost(uint32, optional, tag="7")]
7555    pub layer_stack_to_mirror: ::core::option::Option<u32>,
7556}
7557#[derive(Clone, PartialEq, ::prost::Message)]
7558pub struct Transform {
7559    #[prost(float, optional, tag="1")]
7560    pub dsdx: ::core::option::Option<f32>,
7561    #[prost(float, optional, tag="2")]
7562    pub dtdx: ::core::option::Option<f32>,
7563    #[prost(float, optional, tag="3")]
7564    pub dtdy: ::core::option::Option<f32>,
7565    #[prost(float, optional, tag="4")]
7566    pub dsdy: ::core::option::Option<f32>,
7567    #[prost(float, optional, tag="5")]
7568    pub tx: ::core::option::Option<f32>,
7569    #[prost(float, optional, tag="6")]
7570    pub ty: ::core::option::Option<f32>,
7571}
7572#[derive(Clone, PartialEq, ::prost::Message)]
7573pub struct TransactionBarrier {
7574    #[prost(string, optional, tag="1")]
7575    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
7576    #[prost(uint32, optional, tag="2")]
7577    pub kind: ::core::option::Option<u32>,
7578}
7579#[derive(Clone, PartialEq, ::prost::Message)]
7580pub struct TransactionState {
7581    #[prost(int32, optional, tag="1")]
7582    pub pid: ::core::option::Option<i32>,
7583    #[prost(int32, optional, tag="2")]
7584    pub uid: ::core::option::Option<i32>,
7585    #[prost(int64, optional, tag="3")]
7586    pub vsync_id: ::core::option::Option<i64>,
7587    #[prost(int32, optional, tag="4")]
7588    pub input_event_id: ::core::option::Option<i32>,
7589    #[prost(int64, optional, tag="5")]
7590    pub post_time: ::core::option::Option<i64>,
7591    #[prost(uint64, optional, tag="6")]
7592    pub transaction_id: ::core::option::Option<u64>,
7593    #[prost(message, repeated, tag="7")]
7594    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
7595    #[prost(message, repeated, tag="8")]
7596    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
7597    #[prost(uint64, repeated, packed="false", tag="9")]
7598    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
7599    #[prost(uint64, optional, tag="10")]
7600    pub apply_token: ::core::option::Option<u64>,
7601    #[prost(message, repeated, tag="11")]
7602    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
7603}
7604/// Keep insync with layer_state_t
7605#[derive(Clone, PartialEq, ::prost::Message)]
7606pub struct LayerState {
7607    #[prost(uint32, optional, tag="1")]
7608    pub layer_id: ::core::option::Option<u32>,
7609    #[prost(uint64, optional, tag="2")]
7610    pub what: ::core::option::Option<u64>,
7611    #[prost(float, optional, tag="3")]
7612    pub x: ::core::option::Option<f32>,
7613    #[prost(float, optional, tag="4")]
7614    pub y: ::core::option::Option<f32>,
7615    #[prost(int32, optional, tag="5")]
7616    pub z: ::core::option::Option<i32>,
7617    #[prost(uint32, optional, tag="6")]
7618    pub w: ::core::option::Option<u32>,
7619    #[prost(uint32, optional, tag="7")]
7620    pub h: ::core::option::Option<u32>,
7621    #[prost(uint32, optional, tag="8")]
7622    pub layer_stack: ::core::option::Option<u32>,
7623    #[prost(uint32, optional, tag="9")]
7624    pub flags: ::core::option::Option<u32>,
7625    #[prost(uint32, optional, tag="10")]
7626    pub mask: ::core::option::Option<u32>,
7627    #[prost(message, optional, tag="11")]
7628    pub matrix: ::core::option::Option<layer_state::Matrix22>,
7629    #[deprecated]
7630    #[prost(float, optional, tag="12")]
7631    pub corner_radius: ::core::option::Option<f32>,
7632    #[prost(uint32, optional, tag="13")]
7633    pub background_blur_radius: ::core::option::Option<u32>,
7634    #[prost(uint32, optional, tag="14")]
7635    pub parent_id: ::core::option::Option<u32>,
7636    #[prost(uint32, optional, tag="15")]
7637    pub relative_parent_id: ::core::option::Option<u32>,
7638    #[prost(float, optional, tag="16")]
7639    pub alpha: ::core::option::Option<f32>,
7640    #[prost(message, optional, tag="17")]
7641    pub color: ::core::option::Option<layer_state::Color3>,
7642    #[prost(message, optional, tag="18")]
7643    pub transparent_region: ::core::option::Option<RegionProto>,
7644    #[prost(uint32, optional, tag="19")]
7645    pub transform: ::core::option::Option<u32>,
7646    #[prost(bool, optional, tag="20")]
7647    pub transform_to_display_inverse: ::core::option::Option<bool>,
7648    #[prost(message, optional, tag="21")]
7649    pub crop: ::core::option::Option<RectProto>,
7650    #[prost(message, optional, tag="22")]
7651    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
7652    #[prost(int32, optional, tag="23")]
7653    pub api: ::core::option::Option<i32>,
7654    #[prost(bool, optional, tag="24")]
7655    pub has_sideband_stream: ::core::option::Option<bool>,
7656    #[prost(message, optional, tag="25")]
7657    pub color_transform: ::core::option::Option<ColorTransformProto>,
7658    #[prost(message, repeated, tag="26")]
7659    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
7660    #[prost(message, optional, tag="27")]
7661    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
7662    #[prost(float, optional, tag="28")]
7663    pub bg_color_alpha: ::core::option::Option<f32>,
7664    #[prost(int32, optional, tag="29")]
7665    pub bg_color_dataspace: ::core::option::Option<i32>,
7666    #[prost(bool, optional, tag="30")]
7667    pub color_space_agnostic: ::core::option::Option<bool>,
7668    #[prost(float, optional, tag="31")]
7669    pub shadow_radius: ::core::option::Option<f32>,
7670    #[prost(int32, optional, tag="32")]
7671    pub frame_rate_selection_priority: ::core::option::Option<i32>,
7672    #[prost(float, optional, tag="33")]
7673    pub frame_rate: ::core::option::Option<f32>,
7674    #[prost(int32, optional, tag="34")]
7675    pub frame_rate_compatibility: ::core::option::Option<i32>,
7676    #[prost(int32, optional, tag="35")]
7677    pub change_frame_rate_strategy: ::core::option::Option<i32>,
7678    #[prost(uint32, optional, tag="36")]
7679    pub fixed_transform_hint: ::core::option::Option<u32>,
7680    #[prost(uint64, optional, tag="37")]
7681    pub frame_number: ::core::option::Option<u64>,
7682    #[prost(bool, optional, tag="38")]
7683    pub auto_refresh: ::core::option::Option<bool>,
7684    /// unused
7685    #[prost(bool, optional, tag="39")]
7686    pub is_trusted_overlay: ::core::option::Option<bool>,
7687    #[prost(message, optional, tag="40")]
7688    pub buffer_crop: ::core::option::Option<RectProto>,
7689    #[prost(message, optional, tag="41")]
7690    pub destination_frame: ::core::option::Option<RectProto>,
7691    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
7692    pub drop_input_mode: ::core::option::Option<i32>,
7693    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
7694    pub trusted_overlay: ::core::option::Option<i32>,
7695    #[prost(float, optional, tag="44")]
7696    pub background_blur_scale: ::core::option::Option<f32>,
7697    #[prost(message, optional, tag="45")]
7698    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7699    #[prost(message, optional, tag="46")]
7700    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7701    #[prost(int32, optional, tag="47")]
7702    pub system_content_priority: ::core::option::Option<i32>,
7703    #[prost(message, optional, tag="48")]
7704    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
7705    #[prost(message, optional, tag="49")]
7706    pub border_settings: ::core::option::Option<BorderSettings>,
7707}
7708/// Nested message and enum types in `LayerState`.
7709pub mod layer_state {
7710    #[derive(Clone, PartialEq, ::prost::Message)]
7711    pub struct Matrix22 {
7712        #[prost(float, optional, tag="1")]
7713        pub dsdx: ::core::option::Option<f32>,
7714        #[prost(float, optional, tag="2")]
7715        pub dtdx: ::core::option::Option<f32>,
7716        #[prost(float, optional, tag="3")]
7717        pub dtdy: ::core::option::Option<f32>,
7718        #[prost(float, optional, tag="4")]
7719        pub dsdy: ::core::option::Option<f32>,
7720    }
7721    #[derive(Clone, PartialEq, ::prost::Message)]
7722    pub struct CornerRadii {
7723        #[prost(float, optional, tag="1")]
7724        pub tl: ::core::option::Option<f32>,
7725        #[prost(float, optional, tag="2")]
7726        pub tr: ::core::option::Option<f32>,
7727        #[prost(float, optional, tag="3")]
7728        pub bl: ::core::option::Option<f32>,
7729        #[prost(float, optional, tag="4")]
7730        pub br: ::core::option::Option<f32>,
7731    }
7732    #[derive(Clone, PartialEq, ::prost::Message)]
7733    pub struct Color3 {
7734        #[prost(float, optional, tag="1")]
7735        pub r: ::core::option::Option<f32>,
7736        #[prost(float, optional, tag="2")]
7737        pub g: ::core::option::Option<f32>,
7738        #[prost(float, optional, tag="3")]
7739        pub b: ::core::option::Option<f32>,
7740    }
7741    #[derive(Clone, PartialEq, ::prost::Message)]
7742    pub struct BufferData {
7743        #[prost(uint64, optional, tag="1")]
7744        pub buffer_id: ::core::option::Option<u64>,
7745        #[prost(uint32, optional, tag="2")]
7746        pub width: ::core::option::Option<u32>,
7747        #[prost(uint32, optional, tag="3")]
7748        pub height: ::core::option::Option<u32>,
7749        #[prost(uint64, optional, tag="4")]
7750        pub frame_number: ::core::option::Option<u64>,
7751        #[prost(uint32, optional, tag="5")]
7752        pub flags: ::core::option::Option<u32>,
7753        #[prost(uint64, optional, tag="6")]
7754        pub cached_buffer_id: ::core::option::Option<u64>,
7755        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
7756        pub pixel_format: ::core::option::Option<i32>,
7757        #[prost(uint64, optional, tag="8")]
7758        pub usage: ::core::option::Option<u64>,
7759    }
7760    /// Nested message and enum types in `BufferData`.
7761    pub mod buffer_data {
7762        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7763        #[repr(i32)]
7764        pub enum BufferDataChange {
7765            None = 0,
7766            FenceChanged = 1,
7767            FrameNumberChanged = 2,
7768            CachedBufferChanged = 4,
7769        }
7770        impl BufferDataChange {
7771            /// String value of the enum field names used in the ProtoBuf definition.
7772            ///
7773            /// The values are not transformed in any way and thus are considered stable
7774            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7775            pub fn as_str_name(&self) -> &'static str {
7776                match self {
7777                    BufferDataChange::None => "BufferDataChangeNone",
7778                    BufferDataChange::FenceChanged => "fenceChanged",
7779                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
7780                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
7781                }
7782            }
7783        }
7784        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7785        #[repr(i32)]
7786        pub enum PixelFormat {
7787            Unknown = 0,
7788            Custom = -4,
7789            Translucent = -3,
7790            Transparent = -2,
7791            Opaque = -1,
7792            Rgba8888 = 1,
7793            Rgbx8888 = 2,
7794            Rgb888 = 3,
7795            Rgb565 = 4,
7796            Bgra8888 = 5,
7797            Rgba5551 = 6,
7798            Rgba4444 = 7,
7799            RgbaFp16 = 22,
7800            Rgba1010102 = 43,
7801            R8 = 56,
7802        }
7803        impl PixelFormat {
7804            /// String value of the enum field names used in the ProtoBuf definition.
7805            ///
7806            /// The values are not transformed in any way and thus are considered stable
7807            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7808            pub fn as_str_name(&self) -> &'static str {
7809                match self {
7810                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
7811                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
7812                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
7813                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
7814                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
7815                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
7816                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
7817                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
7818                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
7819                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
7820                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
7821                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
7822                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
7823                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
7824                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
7825                }
7826            }
7827        }
7828    }
7829    #[derive(Clone, PartialEq, ::prost::Message)]
7830    pub struct WindowInfo {
7831        #[prost(uint32, optional, tag="1")]
7832        pub layout_params_flags: ::core::option::Option<u32>,
7833        #[prost(int32, optional, tag="2")]
7834        pub layout_params_type: ::core::option::Option<i32>,
7835        #[prost(message, optional, tag="3")]
7836        pub touchable_region: ::core::option::Option<super::RegionProto>,
7837        #[prost(int32, optional, tag="4")]
7838        pub surface_inset: ::core::option::Option<i32>,
7839        /// unused
7840        #[prost(bool, optional, tag="5")]
7841        pub focusable: ::core::option::Option<bool>,
7842        /// unused
7843        #[prost(bool, optional, tag="6")]
7844        pub has_wallpaper: ::core::option::Option<bool>,
7845        #[prost(float, optional, tag="7")]
7846        pub global_scale_factor: ::core::option::Option<f32>,
7847        #[prost(uint32, optional, tag="8")]
7848        pub crop_layer_id: ::core::option::Option<u32>,
7849        #[prost(bool, optional, tag="9")]
7850        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
7851        #[prost(message, optional, tag="10")]
7852        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
7853        #[prost(message, optional, tag="11")]
7854        pub transform: ::core::option::Option<super::Transform>,
7855        #[prost(uint32, optional, tag="12")]
7856        pub input_config: ::core::option::Option<u32>,
7857    }
7858    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
7859    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
7860    /// enums have to be 32 bits and there's no nice way to put 64bit constants
7861    /// into .proto files.
7862    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7863    #[repr(i32)]
7864    pub enum ChangesLsb {
7865        EChangesLsbNone = 0,
7866        EPositionChanged = 1,
7867        ELayerChanged = 2,
7868        /// unused = 0x00000004;
7869        EAlphaChanged = 8,
7870        EMatrixChanged = 16,
7871        ETransparentRegionChanged = 32,
7872        EFlagsChanged = 64,
7873        ELayerStackChanged = 128,
7874        EReleaseBufferListenerChanged = 1024,
7875        EShadowRadiusChanged = 2048,
7876        EBufferCropChanged = 8192,
7877        ERelativeLayerChanged = 16384,
7878        EReparent = 32768,
7879        EColorChanged = 65536,
7880        EBufferTransformChanged = 262144,
7881        ETransformToDisplayInverseChanged = 524288,
7882        ECropChanged = 1048576,
7883        EBufferChanged = 2097152,
7884        EAcquireFenceChanged = 4194304,
7885        EDataspaceChanged = 8388608,
7886        EHdrMetadataChanged = 16777216,
7887        ESurfaceDamageRegionChanged = 33554432,
7888        EApiChanged = 67108864,
7889        ESidebandStreamChanged = 134217728,
7890        EColorTransformChanged = 268435456,
7891        EHasListenerCallbacksChanged = 536870912,
7892        EInputInfoChanged = 1073741824,
7893        /// 0x80000000; (proto stores enums as signed int)
7894        ECornerRadiusChanged = -2147483648,
7895    }
7896    impl ChangesLsb {
7897        /// String value of the enum field names used in the ProtoBuf definition.
7898        ///
7899        /// The values are not transformed in any way and thus are considered stable
7900        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7901        pub fn as_str_name(&self) -> &'static str {
7902            match self {
7903                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
7904                ChangesLsb::EPositionChanged => "ePositionChanged",
7905                ChangesLsb::ELayerChanged => "eLayerChanged",
7906                ChangesLsb::EAlphaChanged => "eAlphaChanged",
7907                ChangesLsb::EMatrixChanged => "eMatrixChanged",
7908                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
7909                ChangesLsb::EFlagsChanged => "eFlagsChanged",
7910                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
7911                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
7912                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
7913                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
7914                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
7915                ChangesLsb::EReparent => "eReparent",
7916                ChangesLsb::EColorChanged => "eColorChanged",
7917                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
7918                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
7919                ChangesLsb::ECropChanged => "eCropChanged",
7920                ChangesLsb::EBufferChanged => "eBufferChanged",
7921                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
7922                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
7923                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
7924                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
7925                ChangesLsb::EApiChanged => "eApiChanged",
7926                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
7927                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
7928                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
7929                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
7930                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
7931            }
7932        }
7933    }
7934    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7935    #[repr(i32)]
7936    pub enum ChangesMsb {
7937        EChangesMsbNone = 0,
7938        EDestinationFrameChanged = 1,
7939        ECachedBufferChanged = 2,
7940        EBackgroundColorChanged = 4,
7941        EMetadataChanged = 8,
7942        EColorSpaceAgnosticChanged = 16,
7943        EFrameRateSelectionPriority = 32,
7944        EFrameRateChanged = 64,
7945        EBackgroundBlurRadiusChanged = 128,
7946        EProducerDisconnect = 256,
7947        EFixedTransformHintChanged = 512,
7948        EFrameNumberChanged = 1024,
7949        EBlurRegionsChanged = 2048,
7950        EAutoRefreshChanged = 4096,
7951        EStretchChanged = 8192,
7952        ETrustedOverlayChanged = 16384,
7953        EDropInputModeChanged = 32768,
7954        EClientDrawnCornerRadiusChanged = 65536,
7955        ESystemContentPriorityChanged = 131072,
7956        EBoxShadowSettingsChanged = 262144,
7957        EBorderSettingsChanged = 524288,
7958    }
7959    impl ChangesMsb {
7960        /// String value of the enum field names used in the ProtoBuf definition.
7961        ///
7962        /// The values are not transformed in any way and thus are considered stable
7963        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7964        pub fn as_str_name(&self) -> &'static str {
7965            match self {
7966                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
7967                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
7968                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
7969                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
7970                ChangesMsb::EMetadataChanged => "eMetadataChanged",
7971                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
7972                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
7973                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
7974                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
7975                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
7976                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
7977                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
7978                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
7979                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
7980                ChangesMsb::EStretchChanged => "eStretchChanged",
7981                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
7982                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
7983                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
7984                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
7985                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
7986                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
7987            }
7988        }
7989    }
7990    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7991    #[repr(i32)]
7992    pub enum Flags {
7993        EFlagsNone = 0,
7994        ELayerHidden = 1,
7995        ELayerOpaque = 2,
7996        ELayerSkipScreenshot = 64,
7997        ELayerSecure = 128,
7998        EEnableBackpressure = 256,
7999        ELayerIsDisplayDecoration = 512,
8000    }
8001    impl Flags {
8002        /// String value of the enum field names used in the ProtoBuf definition.
8003        ///
8004        /// The values are not transformed in any way and thus are considered stable
8005        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8006        pub fn as_str_name(&self) -> &'static str {
8007            match self {
8008                Flags::EFlagsNone => "eFlagsNone",
8009                Flags::ELayerHidden => "eLayerHidden",
8010                Flags::ELayerOpaque => "eLayerOpaque",
8011                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
8012                Flags::ELayerSecure => "eLayerSecure",
8013                Flags::EEnableBackpressure => "eEnableBackpressure",
8014                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
8015            }
8016        }
8017    }
8018    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8019    #[repr(i32)]
8020    pub enum DropInputMode {
8021        None = 0,
8022        All = 1,
8023        Obscured = 2,
8024    }
8025    impl DropInputMode {
8026        /// String value of the enum field names used in the ProtoBuf definition.
8027        ///
8028        /// The values are not transformed in any way and thus are considered stable
8029        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8030        pub fn as_str_name(&self) -> &'static str {
8031            match self {
8032                DropInputMode::None => "NONE",
8033                DropInputMode::All => "ALL",
8034                DropInputMode::Obscured => "OBSCURED",
8035            }
8036        }
8037    }
8038}
8039#[derive(Clone, PartialEq, ::prost::Message)]
8040pub struct DisplayState {
8041    #[prost(int32, optional, tag="1")]
8042    pub id: ::core::option::Option<i32>,
8043    #[prost(uint32, optional, tag="2")]
8044    pub what: ::core::option::Option<u32>,
8045    #[prost(uint32, optional, tag="3")]
8046    pub flags: ::core::option::Option<u32>,
8047    #[prost(uint32, optional, tag="4")]
8048    pub layer_stack: ::core::option::Option<u32>,
8049    #[prost(uint32, optional, tag="5")]
8050    pub orientation: ::core::option::Option<u32>,
8051    #[prost(message, optional, tag="6")]
8052    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
8053    #[prost(message, optional, tag="7")]
8054    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
8055    #[prost(uint32, optional, tag="8")]
8056    pub width: ::core::option::Option<u32>,
8057    #[prost(uint32, optional, tag="9")]
8058    pub height: ::core::option::Option<u32>,
8059}
8060/// Nested message and enum types in `DisplayState`.
8061pub mod display_state {
8062    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8063    #[repr(i32)]
8064    pub enum Changes {
8065        EChangesNone = 0,
8066        ESurfaceChanged = 1,
8067        ELayerStackChanged = 2,
8068        EDisplayProjectionChanged = 4,
8069        EDisplaySizeChanged = 8,
8070        EFlagsChanged = 16,
8071    }
8072    impl Changes {
8073        /// String value of the enum field names used in the ProtoBuf definition.
8074        ///
8075        /// The values are not transformed in any way and thus are considered stable
8076        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8077        pub fn as_str_name(&self) -> &'static str {
8078            match self {
8079                Changes::EChangesNone => "eChangesNone",
8080                Changes::ESurfaceChanged => "eSurfaceChanged",
8081                Changes::ELayerStackChanged => "eLayerStackChanged",
8082                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
8083                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
8084                Changes::EFlagsChanged => "eFlagsChanged",
8085            }
8086        }
8087    }
8088}
8089// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
8090
8091// Begin of protos/perfetto/trace/android/user_list.proto
8092
8093#[derive(Clone, PartialEq, ::prost::Message)]
8094pub struct AndroidUserList {
8095    #[prost(message, repeated, tag="1")]
8096    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
8097    /// Error number
8098    #[prost(int32, optional, tag="2")]
8099    pub error: ::core::option::Option<i32>,
8100}
8101/// Nested message and enum types in `AndroidUserList`.
8102pub mod android_user_list {
8103    #[derive(Clone, PartialEq, ::prost::Message)]
8104    pub struct UserInfo {
8105        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
8106        #[prost(string, optional, tag="1")]
8107        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
8108        #[prost(int32, optional, tag="2")]
8109        pub uid: ::core::option::Option<i32>,
8110    }
8111}
8112// End of protos/perfetto/trace/android/user_list.proto
8113
8114// Begin of protos/perfetto/trace/android/winscope_extensions.proto
8115
8116#[derive(Clone, PartialEq, ::prost::Message)]
8117pub struct WinscopeExtensions {
8118}
8119// End of protos/perfetto/trace/android/winscope_extensions.proto
8120
8121// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
8122
8123/// This message is not intended to be written by the chrome on the device.
8124/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
8125/// part of the trace that's written by the telemetry tracing agent).
8126#[derive(Clone, PartialEq, ::prost::Message)]
8127pub struct ChromeBenchmarkMetadata {
8128    /// Time when the benchmark execution started (host unixtime in microseconds).
8129    #[prost(int64, optional, tag="1")]
8130    pub benchmark_start_time_us: ::core::option::Option<i64>,
8131    /// Time when this particular story was run (host unixtime in microseconds).
8132    #[prost(int64, optional, tag="2")]
8133    pub story_run_time_us: ::core::option::Option<i64>,
8134    /// Name of benchmark.
8135    #[prost(string, optional, tag="3")]
8136    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
8137    /// Description of benchmark.
8138    #[prost(string, optional, tag="4")]
8139    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
8140    /// Optional label.
8141    #[prost(string, optional, tag="5")]
8142    pub label: ::core::option::Option<::prost::alloc::string::String>,
8143    /// Name of story.
8144    #[prost(string, optional, tag="6")]
8145    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
8146    /// List of story tags.
8147    #[prost(string, repeated, tag="7")]
8148    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8149    /// Index of the story run (>0 if the same story was run several times).
8150    #[prost(int32, optional, tag="8")]
8151    pub story_run_index: ::core::option::Option<i32>,
8152    /// Whether this run failed.
8153    #[prost(bool, optional, tag="9")]
8154    pub had_failures: ::core::option::Option<bool>,
8155}
8156// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
8157
8158// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
8159
8160/// Metadata for chrome traces.
8161#[derive(Clone, PartialEq, ::prost::Message)]
8162pub struct ChromeMetadataPacket {
8163    #[prost(message, optional, tag="1")]
8164    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
8165    /// Version code of Chrome used by Android's Play Store. This field is only set
8166    /// on Android.
8167    #[prost(int32, optional, tag="2")]
8168    pub chrome_version_code: ::core::option::Option<i32>,
8169    /// Comma separated list of enabled categories for tracing. The list of
8170    /// possible category strings are listed in code
8171    /// base/trace_event/builtin_categories.h.
8172    #[prost(string, optional, tag="3")]
8173    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
8174    /// List of Finch study/groups that apply to this trace.
8175    #[prost(message, repeated, tag="4")]
8176    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
8177    /// The package name of the app which is being traced. This field is only set
8178    /// on Android.
8179    #[prost(string, optional, tag="5")]
8180    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
8181    /// A version number string for Chrome. This matches
8182    /// SystemProfileProto::app_version.
8183    #[prost(string, optional, tag="6")]
8184    pub app_version: ::core::option::Option<::prost::alloc::string::String>,
8185    /// This matches SystemProfileProto::channel.
8186    #[prost(uint32, optional, tag="7")]
8187    pub channel: ::core::option::Option<u32>,
8188    /// The user's operating system. This matches SystemProfileProto::OS::name.
8189    #[prost(string, optional, tag="8")]
8190    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
8191}
8192/// Nested message and enum types in `ChromeMetadataPacket`.
8193pub mod chrome_metadata_packet {
8194    /// Finch name and group based on the ActiveGroupId.
8195    #[derive(Clone, PartialEq, ::prost::Message)]
8196    pub struct FinchHash {
8197        #[prost(uint32, optional, tag="1")]
8198        pub name: ::core::option::Option<u32>,
8199        #[prost(uint32, optional, tag="2")]
8200        pub group: ::core::option::Option<u32>,
8201    }
8202}
8203/// Metadata related to background tracing scenarios, states and triggers.
8204#[derive(Clone, PartialEq, ::prost::Message)]
8205pub struct BackgroundTracingMetadata {
8206    /// Specifies the rule that caused the trace to be uploaded.
8207    #[prost(message, optional, tag="1")]
8208    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
8209    /// List of all active triggers in current session, when trace was triggered.
8210    #[prost(message, repeated, tag="2")]
8211    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
8212    /// Hash of the scenario name.
8213    #[prost(fixed32, optional, tag="3")]
8214    pub scenario_name_hash: ::core::option::Option<u32>,
8215}
8216/// Nested message and enum types in `BackgroundTracingMetadata`.
8217pub mod background_tracing_metadata {
8218    /// Information about a trigger rule defined in the experiment config.
8219    #[derive(Clone, PartialEq, ::prost::Message)]
8220    pub struct TriggerRule {
8221        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
8222        pub trigger_type: ::core::option::Option<i32>,
8223        #[prost(message, optional, tag="2")]
8224        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
8225        #[prost(message, optional, tag="3")]
8226        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
8227        /// Hash of the rule name.
8228        #[prost(fixed32, optional, tag="4")]
8229        pub name_hash: ::core::option::Option<u32>,
8230    }
8231    /// Nested message and enum types in `TriggerRule`.
8232    pub mod trigger_rule {
8233        /// Configuration of histogram trigger.
8234        #[derive(Clone, PartialEq, ::prost::Message)]
8235        pub struct HistogramRule {
8236            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
8237            #[prost(fixed64, optional, tag="1")]
8238            pub histogram_name_hash: ::core::option::Option<u64>,
8239            /// Range of values of the histogram that activates trigger.
8240            #[prost(int64, optional, tag="2")]
8241            pub histogram_min_trigger: ::core::option::Option<i64>,
8242            #[prost(int64, optional, tag="3")]
8243            pub histogram_max_trigger: ::core::option::Option<i64>,
8244        }
8245        /// Configuration of named trigger.
8246        #[derive(Clone, PartialEq, ::prost::Message)]
8247        pub struct NamedRule {
8248            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
8249            pub event_type: ::core::option::Option<i32>,
8250            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
8251            /// content-trigger that actually fired.
8252            #[prost(fixed64, optional, tag="2")]
8253            pub content_trigger_name_hash: ::core::option::Option<u64>,
8254        }
8255        /// Nested message and enum types in `NamedRule`.
8256        pub mod named_rule {
8257            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8258            #[repr(i32)]
8259            pub enum EventType {
8260                Unspecified = 0,
8261                SessionRestore = 1,
8262                Navigation = 2,
8263                Startup = 3,
8264                ReachedCode = 4,
8265                ContentTrigger = 5,
8266                TestRule = 1000,
8267            }
8268            impl EventType {
8269                /// String value of the enum field names used in the ProtoBuf definition.
8270                ///
8271                /// The values are not transformed in any way and thus are considered stable
8272                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8273                pub fn as_str_name(&self) -> &'static str {
8274                    match self {
8275                        EventType::Unspecified => "UNSPECIFIED",
8276                        EventType::SessionRestore => "SESSION_RESTORE",
8277                        EventType::Navigation => "NAVIGATION",
8278                        EventType::Startup => "STARTUP",
8279                        EventType::ReachedCode => "REACHED_CODE",
8280                        EventType::ContentTrigger => "CONTENT_TRIGGER",
8281                        EventType::TestRule => "TEST_RULE",
8282                    }
8283                }
8284            }
8285        }
8286        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8287        #[repr(i32)]
8288        pub enum TriggerType {
8289            TriggerUnspecified = 0,
8290            /// Traces are triggered by specific range of values of an UMA histogram.
8291            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
8292            /// Traces are triggered by specific named events in chromium codebase,
8293            /// like "second-update-failure".
8294            MonitorAndDumpWhenTriggerNamed = 2,
8295        }
8296        impl TriggerType {
8297            /// String value of the enum field names used in the ProtoBuf definition.
8298            ///
8299            /// The values are not transformed in any way and thus are considered stable
8300            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8301            pub fn as_str_name(&self) -> &'static str {
8302                match self {
8303                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
8304                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
8305                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
8306                }
8307            }
8308        }
8309    }
8310}
8311// End of protos/perfetto/trace/chrome/chrome_metadata.proto
8312
8313// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
8314
8315#[derive(Clone, PartialEq, ::prost::Message)]
8316pub struct ChromeTracedValue {
8317    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
8318    pub nested_type: ::core::option::Option<i32>,
8319    #[prost(string, repeated, tag="2")]
8320    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8321    #[prost(message, repeated, tag="3")]
8322    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
8323    #[prost(message, repeated, tag="4")]
8324    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
8325    #[prost(int32, optional, tag="5")]
8326    pub int_value: ::core::option::Option<i32>,
8327    #[prost(double, optional, tag="6")]
8328    pub double_value: ::core::option::Option<f64>,
8329    #[prost(bool, optional, tag="7")]
8330    pub bool_value: ::core::option::Option<bool>,
8331    #[prost(string, optional, tag="8")]
8332    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
8333}
8334/// Nested message and enum types in `ChromeTracedValue`.
8335pub mod chrome_traced_value {
8336    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8337    #[repr(i32)]
8338    pub enum NestedType {
8339        Dict = 0,
8340        Array = 1,
8341    }
8342    impl NestedType {
8343        /// String value of the enum field names used in the ProtoBuf definition.
8344        ///
8345        /// The values are not transformed in any way and thus are considered stable
8346        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8347        pub fn as_str_name(&self) -> &'static str {
8348            match self {
8349                NestedType::Dict => "DICT",
8350                NestedType::Array => "ARRAY",
8351            }
8352        }
8353    }
8354}
8355#[derive(Clone, PartialEq, ::prost::Message)]
8356pub struct ChromeStringTableEntry {
8357    #[prost(string, optional, tag="1")]
8358    pub value: ::core::option::Option<::prost::alloc::string::String>,
8359    #[prost(int32, optional, tag="2")]
8360    pub index: ::core::option::Option<i32>,
8361}
8362/// Deprecated, use TrackEvent protos instead.
8363#[derive(Clone, PartialEq, ::prost::Message)]
8364pub struct ChromeTraceEvent {
8365    #[prost(string, optional, tag="1")]
8366    pub name: ::core::option::Option<::prost::alloc::string::String>,
8367    #[prost(int64, optional, tag="2")]
8368    pub timestamp: ::core::option::Option<i64>,
8369    #[prost(int32, optional, tag="3")]
8370    pub phase: ::core::option::Option<i32>,
8371    #[prost(int32, optional, tag="4")]
8372    pub thread_id: ::core::option::Option<i32>,
8373    #[prost(int64, optional, tag="5")]
8374    pub duration: ::core::option::Option<i64>,
8375    #[prost(int64, optional, tag="6")]
8376    pub thread_duration: ::core::option::Option<i64>,
8377    #[prost(string, optional, tag="7")]
8378    pub scope: ::core::option::Option<::prost::alloc::string::String>,
8379    #[prost(uint64, optional, tag="8")]
8380    pub id: ::core::option::Option<u64>,
8381    #[prost(uint32, optional, tag="9")]
8382    pub flags: ::core::option::Option<u32>,
8383    #[prost(string, optional, tag="10")]
8384    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
8385    #[prost(int32, optional, tag="11")]
8386    pub process_id: ::core::option::Option<i32>,
8387    #[prost(int64, optional, tag="12")]
8388    pub thread_timestamp: ::core::option::Option<i64>,
8389    #[prost(uint64, optional, tag="13")]
8390    pub bind_id: ::core::option::Option<u64>,
8391    #[prost(message, repeated, tag="14")]
8392    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
8393    /// Takes precedence over respectively |name| and
8394    /// |category_group_name_index| if set,
8395    /// and are indices into |string_table|.
8396    #[prost(uint32, optional, tag="15")]
8397    pub name_index: ::core::option::Option<u32>,
8398    #[prost(uint32, optional, tag="16")]
8399    pub category_group_name_index: ::core::option::Option<u32>,
8400}
8401/// Nested message and enum types in `ChromeTraceEvent`.
8402pub mod chrome_trace_event {
8403    #[derive(Clone, PartialEq, ::prost::Message)]
8404    pub struct Arg {
8405        #[prost(string, optional, tag="1")]
8406        pub name: ::core::option::Option<::prost::alloc::string::String>,
8407        /// Takes precedence over |name| if set,
8408        /// and is an index into |string_table|.
8409        #[prost(uint32, optional, tag="9")]
8410        pub name_index: ::core::option::Option<u32>,
8411        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
8412        pub value: ::core::option::Option<arg::Value>,
8413    }
8414    /// Nested message and enum types in `Arg`.
8415    pub mod arg {
8416        #[derive(Clone, PartialEq, ::prost::Oneof)]
8417        pub enum Value {
8418            #[prost(bool, tag="2")]
8419            BoolValue(bool),
8420            #[prost(uint64, tag="3")]
8421            UintValue(u64),
8422            #[prost(int64, tag="4")]
8423            IntValue(i64),
8424            #[prost(double, tag="5")]
8425            DoubleValue(f64),
8426            #[prost(string, tag="6")]
8427            StringValue(::prost::alloc::string::String),
8428            /// Pointers are stored in a separate type as the JSON output treats them
8429            /// differently from other uint64 values.
8430            #[prost(uint64, tag="7")]
8431            PointerValue(u64),
8432            #[prost(string, tag="8")]
8433            JsonValue(::prost::alloc::string::String),
8434            #[prost(message, tag="10")]
8435            TracedValue(super::super::ChromeTracedValue),
8436        }
8437    }
8438}
8439#[derive(Clone, PartialEq, ::prost::Message)]
8440pub struct ChromeMetadata {
8441    #[prost(string, optional, tag="1")]
8442    pub name: ::core::option::Option<::prost::alloc::string::String>,
8443    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
8444    pub value: ::core::option::Option<chrome_metadata::Value>,
8445}
8446/// Nested message and enum types in `ChromeMetadata`.
8447pub mod chrome_metadata {
8448    #[derive(Clone, PartialEq, ::prost::Oneof)]
8449    pub enum Value {
8450        #[prost(string, tag="2")]
8451        StringValue(::prost::alloc::string::String),
8452        #[prost(bool, tag="3")]
8453        BoolValue(bool),
8454        #[prost(int64, tag="4")]
8455        IntValue(i64),
8456        #[prost(string, tag="5")]
8457        JsonValue(::prost::alloc::string::String),
8458    }
8459}
8460/// Subtraces produced in legacy json format by Chrome tracing agents not yet
8461/// updated to support the new binary format, e.g. ETW and CrOS ARC.
8462/// TODO(eseckler): Update these agents to become perfetto producers.
8463#[derive(Clone, PartialEq, ::prost::Message)]
8464pub struct ChromeLegacyJsonTrace {
8465    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
8466    pub r#type: ::core::option::Option<i32>,
8467    #[prost(string, optional, tag="2")]
8468    pub data: ::core::option::Option<::prost::alloc::string::String>,
8469}
8470/// Nested message and enum types in `ChromeLegacyJsonTrace`.
8471pub mod chrome_legacy_json_trace {
8472    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8473    #[repr(i32)]
8474    pub enum TraceType {
8475        UserTrace = 0,
8476        /// Deprecated.
8477        SystemTrace = 1,
8478    }
8479    impl TraceType {
8480        /// String value of the enum field names used in the ProtoBuf definition.
8481        ///
8482        /// The values are not transformed in any way and thus are considered stable
8483        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8484        pub fn as_str_name(&self) -> &'static str {
8485            match self {
8486                TraceType::UserTrace => "USER_TRACE",
8487                TraceType::SystemTrace => "SYSTEM_TRACE",
8488            }
8489        }
8490    }
8491}
8492#[derive(Clone, PartialEq, ::prost::Message)]
8493pub struct ChromeEventBundle {
8494    /// Deprecated, use TrackEvent protos instead.
8495    #[deprecated]
8496    #[prost(message, repeated, tag="1")]
8497    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
8498    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
8499    /// which contains typed fields.
8500    #[prost(message, repeated, tag="2")]
8501    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
8502    /// ftrace output from CrOS and Cast system tracing agents.
8503    /// TODO(eseckler): Replace system traces with native perfetto service.
8504    #[prost(string, repeated, tag="4")]
8505    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8506    #[prost(message, repeated, tag="5")]
8507    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
8508    /// Contents of a string table that's valid for
8509    /// the whole ChromeEventBundle entry.
8510    #[deprecated]
8511    #[prost(message, repeated, tag="3")]
8512    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
8513}
8514// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
8515
8516// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
8517
8518/// Information about a specific trigger during a background tracing scenario
8519/// Associated packet timestamps are useful to delimitate a scenario range in a
8520/// trace. Triggers are also useful for filtering traces.
8521#[derive(Clone, PartialEq, ::prost::Message)]
8522pub struct ChromeTrigger {
8523    /// Name of the trigger which was received.
8524    #[prost(string, optional, tag="1")]
8525    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
8526    /// SHA1 hash of the trigger name.
8527    #[prost(fixed32, optional, tag="2")]
8528    pub trigger_name_hash: ::core::option::Option<u32>,
8529    /// Flow id which should terminate on this trigger.
8530    #[prost(fixed64, optional, tag="3")]
8531    pub flow_id: ::core::option::Option<u64>,
8532}
8533// End of protos/perfetto/trace/chrome/chrome_trigger.proto
8534
8535// Begin of protos/perfetto/trace/chrome/v8.proto
8536
8537// These are the protos for the V8 data source.
8538//
8539// All events are associated to a V8 isolate instance. There can be multiple
8540// instances associated to a given thread, although this is rare.
8541//
8542// Generated code in V8 is allocated in the V8 heap (in a special executeable
8543// section), this means that code can be garbage collected (when no longer used)
8544// or can be moved around (e.g. during heap compactation). This means that a
8545// given callsite might correspond to function `A` at one point in time and to
8546// function `B` later on.
8547// In addition V8 code has various levels of optimization, so a function might
8548// have multiple associated code snippets.
8549//
8550// V8 does not track code deletion, so we have to indirectly infer it by
8551// detecting code overlaps, if a newer code creation event overlaps with older
8552// code we need to asume that the old code was deleted. Code moves are logged,
8553// and there is an event to track those.
8554
8555/// Strings used by V8 can have different encodings, instead of coverting to a
8556/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
8557/// "raw" string and do the convestion at trace ingestion time.
8558///
8559/// ATTENTION: There is some overhead in using a message (as opossed to having
8560/// the `oneof encoded_string`` direcly embedded in the message), so use this
8561/// message in places were these extra bytes don't matter that much.
8562/// Next id: 5
8563#[derive(Clone, PartialEq, ::prost::Message)]
8564pub struct V8String {
8565    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
8566    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
8567}
8568/// Nested message and enum types in `V8String`.
8569pub mod v8_string {
8570    #[derive(Clone, PartialEq, ::prost::Oneof)]
8571    pub enum EncodedString {
8572        /// ISO/IEC 8859-1:1998 encoding aka latin1
8573        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8574        #[prost(bytes, tag="1")]
8575        Latin1(::prost::alloc::vec::Vec<u8>),
8576        /// UTF-16 Little Endian Encoding
8577        #[prost(bytes, tag="2")]
8578        Utf16Le(::prost::alloc::vec::Vec<u8>),
8579        /// UTF-16 Big Endian Encoding
8580        #[prost(bytes, tag="3")]
8581        Utf16Be(::prost::alloc::vec::Vec<u8>),
8582    }
8583}
8584/// Interned version of V8String
8585#[derive(Clone, PartialEq, ::prost::Message)]
8586pub struct InternedV8String {
8587    #[prost(uint64, optional, tag="1")]
8588    pub iid: ::core::option::Option<u64>,
8589    /// We inline the fields in V8String here to save some bytes in the serialized
8590    /// proto format. Interning is about saving bytes so this makes sense here.
8591    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
8592    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
8593}
8594/// Nested message and enum types in `InternedV8String`.
8595pub mod interned_v8_string {
8596    /// We inline the fields in V8String here to save some bytes in the serialized
8597    /// proto format. Interning is about saving bytes so this makes sense here.
8598    #[derive(Clone, PartialEq, ::prost::Oneof)]
8599    pub enum EncodedString {
8600        /// ISO/IEC 8859-1:1998 encoding aka latin1
8601        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8602        #[prost(bytes, tag="2")]
8603        Latin1(::prost::alloc::vec::Vec<u8>),
8604        /// UTF-16 Little Endian Encoding
8605        #[prost(bytes, tag="3")]
8606        Utf16Le(::prost::alloc::vec::Vec<u8>),
8607        /// UTF-16 Big Endian Encoding
8608        #[prost(bytes, tag="4")]
8609        Utf16Be(::prost::alloc::vec::Vec<u8>),
8610    }
8611}
8612/// Represents a script that was compiled to generate code. Some V8 code is
8613/// generated out of scripts and will reference a V8Script other types of code
8614/// will not (e.g. builtins).
8615#[derive(Clone, PartialEq, ::prost::Message)]
8616pub struct InternedV8JsScript {
8617    #[prost(uint64, optional, tag="1")]
8618    pub iid: ::core::option::Option<u64>,
8619    /// Unique in a given isolate
8620    #[prost(int32, optional, tag="2")]
8621    pub script_id: ::core::option::Option<i32>,
8622    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
8623    pub r#type: ::core::option::Option<i32>,
8624    #[prost(message, optional, tag="4")]
8625    pub name: ::core::option::Option<V8String>,
8626    /// Actual source of the script
8627    #[prost(message, optional, tag="5")]
8628    pub source: ::core::option::Option<V8String>,
8629}
8630/// Nested message and enum types in `InternedV8JsScript`.
8631pub mod interned_v8_js_script {
8632    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8633    #[repr(i32)]
8634    pub enum Type {
8635        Unknown = 0,
8636        Normal = 1,
8637        Eval = 2,
8638        Module = 3,
8639        Native = 4,
8640        Extension = 5,
8641        Inspector = 6,
8642    }
8643    impl Type {
8644        /// String value of the enum field names used in the ProtoBuf definition.
8645        ///
8646        /// The values are not transformed in any way and thus are considered stable
8647        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8648        pub fn as_str_name(&self) -> &'static str {
8649            match self {
8650                Type::Unknown => "TYPE_UNKNOWN",
8651                Type::Normal => "TYPE_NORMAL",
8652                Type::Eval => "TYPE_EVAL",
8653                Type::Module => "TYPE_MODULE",
8654                Type::Native => "TYPE_NATIVE",
8655                Type::Extension => "TYPE_EXTENSION",
8656                Type::Inspector => "TYPE_INSPECTOR",
8657            }
8658        }
8659    }
8660}
8661#[derive(Clone, PartialEq, ::prost::Message)]
8662pub struct InternedV8WasmScript {
8663    #[prost(uint64, optional, tag="1")]
8664    pub iid: ::core::option::Option<u64>,
8665    /// Unique in a given isolate
8666    #[prost(int32, optional, tag="2")]
8667    pub script_id: ::core::option::Option<i32>,
8668    #[prost(string, optional, tag="3")]
8669    pub url: ::core::option::Option<::prost::alloc::string::String>,
8670    /// Raw transferred wasm native module wire bytes.
8671    #[prost(bytes="vec", optional, tag="4")]
8672    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8673}
8674#[derive(Clone, PartialEq, ::prost::Message)]
8675pub struct InternedV8JsFunction {
8676    #[prost(uint64, optional, tag="1")]
8677    pub iid: ::core::option::Option<u64>,
8678    #[prost(uint64, optional, tag="2")]
8679    pub v8_js_function_name_iid: ::core::option::Option<u64>,
8680    #[prost(uint64, optional, tag="3")]
8681    pub v8_js_script_iid: ::core::option::Option<u64>,
8682    #[prost(bool, optional, tag="4")]
8683    pub is_toplevel: ::core::option::Option<bool>,
8684    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
8685    pub kind: ::core::option::Option<i32>,
8686    /// Where in the script source this function is defined. This is counted in
8687    /// bytes not characters.
8688    #[prost(uint32, optional, tag="6")]
8689    pub byte_offset: ::core::option::Option<u32>,
8690    #[prost(uint32, optional, tag="7")]
8691    pub line: ::core::option::Option<u32>,
8692    #[prost(uint32, optional, tag="8")]
8693    pub column: ::core::option::Option<u32>,
8694}
8695/// Nested message and enum types in `InternedV8JsFunction`.
8696pub mod interned_v8_js_function {
8697    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8698    #[repr(i32)]
8699    pub enum Kind {
8700        Unknown = 0,
8701        NormalFunction = 1,
8702        Module = 2,
8703        AsyncModule = 3,
8704        BaseConstructor = 4,
8705        DefaultBaseConstructor = 5,
8706        DefaultDerivedConstructor = 6,
8707        DerivedConstructor = 7,
8708        GetterFunction = 8,
8709        StaticGetterFunction = 9,
8710        SetterFunction = 10,
8711        StaticSetterFunction = 11,
8712        ArrowFunction = 12,
8713        AsyncArrowFunction = 13,
8714        AsyncFunction = 14,
8715        AsyncConciseMethod = 15,
8716        StaticAsyncConciseMethod = 16,
8717        AsyncConciseGeneratorMethod = 17,
8718        StaticAsyncConciseGeneratorMethod = 18,
8719        AsyncGeneratorFunction = 19,
8720        GeneratorFunction = 20,
8721        ConciseGeneratorMethod = 21,
8722        StaticConciseGeneratorMethod = 22,
8723        ConciseMethod = 23,
8724        StaticConciseMethod = 24,
8725        ClassMembersInitializerFunction = 25,
8726        ClassStaticInitializerFunction = 26,
8727        Invalid = 27,
8728    }
8729    impl Kind {
8730        /// String value of the enum field names used in the ProtoBuf definition.
8731        ///
8732        /// The values are not transformed in any way and thus are considered stable
8733        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8734        pub fn as_str_name(&self) -> &'static str {
8735            match self {
8736                Kind::Unknown => "KIND_UNKNOWN",
8737                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
8738                Kind::Module => "KIND_MODULE",
8739                Kind::AsyncModule => "KIND_ASYNC_MODULE",
8740                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
8741                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
8742                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
8743                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
8744                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
8745                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
8746                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
8747                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
8748                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
8749                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
8750                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
8751                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
8752                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
8753                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
8754                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
8755                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
8756                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
8757                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
8758                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
8759                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
8760                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
8761                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
8762                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
8763                Kind::Invalid => "KIND_INVALID",
8764            }
8765        }
8766    }
8767}
8768/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
8769/// engine.
8770#[derive(Clone, PartialEq, ::prost::Message)]
8771pub struct InternedV8Isolate {
8772    #[prost(uint64, optional, tag="1")]
8773    pub iid: ::core::option::Option<u64>,
8774    #[prost(uint32, optional, tag="2")]
8775    pub pid: ::core::option::Option<u32>,
8776    /// Process unique isolate id.
8777    #[prost(int32, optional, tag="3")]
8778    pub isolate_id: ::core::option::Option<i32>,
8779    #[prost(message, optional, tag="4")]
8780    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8781    /// The embedded blob holds code for built in functions that are precompiled in
8782    /// the V8 library.
8783    #[prost(uint64, optional, tag="5")]
8784    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8785    #[prost(uint64, optional, tag="6")]
8786    pub embedded_blob_code_size: ::core::option::Option<u64>,
8787}
8788/// Nested message and enum types in `InternedV8Isolate`.
8789pub mod interned_v8_isolate {
8790    /// A code range is a virtual memory cage that may contain executable code.
8791    /// Depending on the Isolate settings the Isolate might have one or not.
8792    /// See:
8793    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
8794    /// If the isolate defines code range this will be tracked here.
8795    #[derive(Clone, PartialEq, ::prost::Message)]
8796    pub struct CodeRange {
8797        #[prost(uint64, optional, tag="1")]
8798        pub base_address: ::core::option::Option<u64>,
8799        #[prost(uint64, optional, tag="2")]
8800        pub size: ::core::option::Option<u64>,
8801        /// Used when short builtin calls are enabled, where embedded builtins are
8802        /// copied into the CodeRange so calls can be nearer.
8803        #[prost(uint64, optional, tag="3")]
8804        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
8805        /// Whether this code range is shared with other Isolates in the same process
8806        #[prost(bool, optional, tag="4")]
8807        pub is_process_wide: ::core::option::Option<bool>,
8808    }
8809}
8810#[derive(Clone, PartialEq, ::prost::Message)]
8811pub struct V8JsCode {
8812    #[prost(uint64, optional, tag="1")]
8813    pub v8_isolate_iid: ::core::option::Option<u64>,
8814    #[prost(uint32, optional, tag="2")]
8815    pub tid: ::core::option::Option<u32>,
8816    #[prost(uint64, optional, tag="3")]
8817    pub v8_js_function_iid: ::core::option::Option<u64>,
8818    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
8819    pub tier: ::core::option::Option<i32>,
8820    #[prost(uint64, optional, tag="5")]
8821    pub instruction_start: ::core::option::Option<u64>,
8822    #[prost(uint64, optional, tag="6")]
8823    pub instruction_size_bytes: ::core::option::Option<u64>,
8824    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
8825    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8826    #[prost(oneof="v8_js_code::SourceMap", tags="9, 10, 11")]
8827    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
8828}
8829/// Nested message and enum types in `V8JsCode`.
8830pub mod v8_js_code {
8831    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8832    #[repr(i32)]
8833    pub enum Tier {
8834        Unknown = 0,
8835        Ignition = 1,
8836        Sparkplug = 2,
8837        Maglev = 3,
8838        Turboshaft = 4,
8839        Turbofan = 5,
8840    }
8841    impl Tier {
8842        /// String value of the enum field names used in the ProtoBuf definition.
8843        ///
8844        /// The values are not transformed in any way and thus are considered stable
8845        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8846        pub fn as_str_name(&self) -> &'static str {
8847            match self {
8848                Tier::Unknown => "TIER_UNKNOWN",
8849                Tier::Ignition => "TIER_IGNITION",
8850                Tier::Sparkplug => "TIER_SPARKPLUG",
8851                Tier::Maglev => "TIER_MAGLEV",
8852                Tier::Turboshaft => "TIER_TURBOSHAFT",
8853                Tier::Turbofan => "TIER_TURBOFAN",
8854            }
8855        }
8856    }
8857    #[derive(Clone, PartialEq, ::prost::Oneof)]
8858    pub enum Instructions {
8859        #[prost(bytes, tag="7")]
8860        MachineCode(::prost::alloc::vec::Vec<u8>),
8861        #[prost(bytes, tag="8")]
8862        Bytecode(::prost::alloc::vec::Vec<u8>),
8863    }
8864    #[derive(Clone, PartialEq, ::prost::Oneof)]
8865    pub enum SourceMap {
8866        /// For Ignition / bytecode:
8867        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
8868        ///     related js function)
8869        #[prost(bytes, tag="9")]
8870        SourcePositions(::prost::alloc::vec::Vec<u8>),
8871        /// For Sparkplug code:
8872        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
8873        ///     ignition code object for the same js-function.
8874        #[prost(bytes, tag="10")]
8875        BytecodePositions(::prost::alloc::vec::Vec<u8>),
8876        /// For optimized code:
8877        /// - Maps machine-code-ranges to bytecode ranges in various
8878        ///    ignition code objects (inlining might happen from multiple functions)
8879        #[prost(bytes, tag="11")]
8880        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
8881    }
8882}
8883#[derive(Clone, PartialEq, ::prost::Message)]
8884pub struct V8InternalCode {
8885    #[prost(uint64, optional, tag="1")]
8886    pub v8_isolate_iid: ::core::option::Option<u64>,
8887    #[prost(uint32, optional, tag="2")]
8888    pub tid: ::core::option::Option<u32>,
8889    #[prost(string, optional, tag="3")]
8890    pub name: ::core::option::Option<::prost::alloc::string::String>,
8891    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
8892    pub r#type: ::core::option::Option<i32>,
8893    #[prost(int32, optional, tag="5")]
8894    pub builtin_id: ::core::option::Option<i32>,
8895    #[prost(uint64, optional, tag="6")]
8896    pub instruction_start: ::core::option::Option<u64>,
8897    #[prost(uint64, optional, tag="7")]
8898    pub instruction_size_bytes: ::core::option::Option<u64>,
8899    #[prost(bytes="vec", optional, tag="8")]
8900    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8901}
8902/// Nested message and enum types in `V8InternalCode`.
8903pub mod v8_internal_code {
8904    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8905    #[repr(i32)]
8906    pub enum Type {
8907        Unknown = 0,
8908        BytecodeHandler = 1,
8909        ForTesting = 2,
8910        Builtin = 3,
8911        WasmFunction = 4,
8912        WasmToCapiFunction = 5,
8913        WasmToJsFunction = 6,
8914        JsToWasmFunction = 7,
8915        JsToJsFunction = 8,
8916        CWasmEntry = 9,
8917    }
8918    impl Type {
8919        /// String value of the enum field names used in the ProtoBuf definition.
8920        ///
8921        /// The values are not transformed in any way and thus are considered stable
8922        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8923        pub fn as_str_name(&self) -> &'static str {
8924            match self {
8925                Type::Unknown => "TYPE_UNKNOWN",
8926                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8927                Type::ForTesting => "TYPE_FOR_TESTING",
8928                Type::Builtin => "TYPE_BUILTIN",
8929                Type::WasmFunction => "TYPE_WASM_FUNCTION",
8930                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8931                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8932                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8933                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8934                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
8935            }
8936        }
8937    }
8938}
8939#[derive(Clone, PartialEq, ::prost::Message)]
8940pub struct V8WasmCode {
8941    #[prost(uint64, optional, tag="1")]
8942    pub v8_isolate_iid: ::core::option::Option<u64>,
8943    #[prost(uint32, optional, tag="2")]
8944    pub tid: ::core::option::Option<u32>,
8945    #[prost(uint64, optional, tag="3")]
8946    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8947    #[prost(string, optional, tag="4")]
8948    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8949    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
8950    pub tier: ::core::option::Option<i32>,
8951    #[prost(int32, optional, tag="6")]
8952    pub code_offset_in_module: ::core::option::Option<i32>,
8953    #[prost(uint64, optional, tag="7")]
8954    pub instruction_start: ::core::option::Option<u64>,
8955    #[prost(uint64, optional, tag="8")]
8956    pub instruction_size_bytes: ::core::option::Option<u64>,
8957    #[prost(bytes="vec", optional, tag="9")]
8958    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8959}
8960/// Nested message and enum types in `V8WasmCode`.
8961pub mod v8_wasm_code {
8962    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8963    #[repr(i32)]
8964    pub enum Tier {
8965        Unknown = 0,
8966        Liftoff = 1,
8967        Turbofan = 2,
8968    }
8969    impl Tier {
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                Tier::Unknown => "TIER_UNKNOWN",
8977                Tier::Liftoff => "TIER_LIFTOFF",
8978                Tier::Turbofan => "TIER_TURBOFAN",
8979            }
8980        }
8981    }
8982}
8983#[derive(Clone, PartialEq, ::prost::Message)]
8984pub struct V8RegExpCode {
8985    #[prost(uint64, optional, tag="1")]
8986    pub v8_isolate_iid: ::core::option::Option<u64>,
8987    #[prost(uint32, optional, tag="2")]
8988    pub tid: ::core::option::Option<u32>,
8989    #[prost(message, optional, tag="3")]
8990    pub pattern: ::core::option::Option<V8String>,
8991    #[prost(uint64, optional, tag="4")]
8992    pub instruction_start: ::core::option::Option<u64>,
8993    #[prost(uint64, optional, tag="5")]
8994    pub instruction_size_bytes: ::core::option::Option<u64>,
8995    #[prost(bytes="vec", optional, tag="6")]
8996    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8997}
8998/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8999/// memory by V8's GC.
9000#[derive(Clone, PartialEq, ::prost::Message)]
9001pub struct V8CodeMove {
9002    #[prost(uint64, optional, tag="1")]
9003    pub isolate_iid: ::core::option::Option<u64>,
9004    #[prost(uint32, optional, tag="2")]
9005    pub tid: ::core::option::Option<u32>,
9006    #[prost(uint64, optional, tag="3")]
9007    pub from_instruction_start_address: ::core::option::Option<u64>,
9008    #[prost(uint64, optional, tag="4")]
9009    pub to_instruction_start_address: ::core::option::Option<u64>,
9010    #[prost(uint64, optional, tag="5")]
9011    pub instruction_size_bytes: ::core::option::Option<u64>,
9012    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
9013    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
9014}
9015/// Nested message and enum types in `V8CodeMove`.
9016pub mod v8_code_move {
9017    #[derive(Clone, PartialEq, ::prost::Oneof)]
9018    pub enum ToInstructions {
9019        #[prost(bytes, tag="6")]
9020        ToMachineCode(::prost::alloc::vec::Vec<u8>),
9021        #[prost(bytes, tag="7")]
9022        ToBytecode(::prost::alloc::vec::Vec<u8>),
9023    }
9024}
9025#[derive(Clone, PartialEq, ::prost::Message)]
9026pub struct V8CodeDefaults {
9027    #[prost(uint32, optional, tag="1")]
9028    pub tid: ::core::option::Option<u32>,
9029}
9030// End of protos/perfetto/trace/chrome/v8.proto
9031
9032// Begin of protos/perfetto/trace/clock_snapshot.proto
9033
9034/// A snapshot of clock readings to allow for trace alignment.
9035#[derive(Clone, PartialEq, ::prost::Message)]
9036pub struct ClockSnapshot {
9037    #[prost(message, repeated, tag="1")]
9038    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
9039    /// The authoritative clock domain for the trace. When set, this definitively
9040    /// overrides the trace time clock. If not set, the trace time clock remains
9041    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
9042    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
9043    /// snapshots). Trace processor will attempt to translate packet/event
9044    /// timestamps from various data sources (and their chosen clock domains) to
9045    /// this domain during import.
9046    #[prost(enumeration="BuiltinClock", optional, tag="2")]
9047    pub primary_trace_clock: ::core::option::Option<i32>,
9048}
9049/// Nested message and enum types in `ClockSnapshot`.
9050pub mod clock_snapshot {
9051    #[derive(Clone, PartialEq, ::prost::Message)]
9052    pub struct Clock {
9053        /// Clock IDs have the following semantic:
9054        /// [1, 63]:    Builtin types, see BuiltinClock from
9055        ///              ../common/builtin_clock.proto.
9056        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
9057        ///              are only valid within the same |trusted_packet_sequence_id|
9058        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
9059        ///              that emitted the clock snapshot).
9060        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
9061        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
9062        #[prost(uint32, optional, tag="1")]
9063        pub clock_id: ::core::option::Option<u32>,
9064        /// Absolute timestamp. Unit is ns unless specified otherwise by the
9065        /// unit_multiplier_ns field below.
9066        #[prost(uint64, optional, tag="2")]
9067        pub timestamp: ::core::option::Option<u64>,
9068        /// When true each TracePacket's timestamp should be interpreted as a delta
9069        /// from the last TracePacket's timestamp (referencing this clock) emitted by
9070        /// the same packet_sequence_id. Should only be used for user-defined
9071        /// sequence-local clocks. The first packet timestamp after each
9072        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
9073        /// the ClockSnapshot.
9074        #[prost(bool, optional, tag="3")]
9075        pub is_incremental: ::core::option::Option<bool>,
9076        /// Allows to specify a custom unit different than the default (ns) for this
9077        /// clock domain.
9078        ///
9079        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
9080        ///    as 3000 ns = 3 us.
9081        /// * All snapshots for the same clock within a trace need to use the same
9082        ///    unit.
9083        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
9084        #[prost(uint64, optional, tag="4")]
9085        pub unit_multiplier_ns: ::core::option::Option<u64>,
9086    }
9087    /// Nested message and enum types in `Clock`.
9088    pub mod clock {
9089        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
9090        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9091        #[repr(i32)]
9092        pub enum BuiltinClocks {
9093            Unknown = 0,
9094            Realtime = 1,
9095            RealtimeCoarse = 2,
9096            Monotonic = 3,
9097            MonotonicCoarse = 4,
9098            MonotonicRaw = 5,
9099            Boottime = 6,
9100            BuiltinClockMaxId = 63,
9101        }
9102        impl BuiltinClocks {
9103            /// String value of the enum field names used in the ProtoBuf definition.
9104            ///
9105            /// The values are not transformed in any way and thus are considered stable
9106            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9107            pub fn as_str_name(&self) -> &'static str {
9108                match self {
9109                    BuiltinClocks::Unknown => "UNKNOWN",
9110                    BuiltinClocks::Realtime => "REALTIME",
9111                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
9112                    BuiltinClocks::Monotonic => "MONOTONIC",
9113                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
9114                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
9115                    BuiltinClocks::Boottime => "BOOTTIME",
9116                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
9117                }
9118            }
9119        }
9120    }
9121}
9122// End of protos/perfetto/trace/clock_snapshot.proto
9123
9124// Begin of protos/perfetto/trace/etw/etw.proto
9125
9126/// Proto definition based on the Thread_v2 CSwitch class definition
9127/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
9128#[derive(Clone, PartialEq, ::prost::Message)]
9129pub struct CSwitchEtwEvent {
9130    /// New thread ID after the switch.
9131    #[prost(uint32, optional, tag="1")]
9132    pub new_thread_id: ::core::option::Option<u32>,
9133    /// Previous thread ID.
9134    #[prost(uint32, optional, tag="2")]
9135    pub old_thread_id: ::core::option::Option<u32>,
9136    /// Thread priority of the new thread.
9137    #[prost(sint32, optional, tag="3")]
9138    pub new_thread_priority: ::core::option::Option<i32>,
9139    /// Thread priority of the previous thread.
9140    #[prost(sint32, optional, tag="4")]
9141    pub old_thread_priority: ::core::option::Option<i32>,
9142    /// The index of the C-state that was last used by the processor. A value of 0
9143    /// represents the lightest idle state with higher values representing deeper
9144    /// C-states.
9145    #[prost(uint32, optional, tag="5")]
9146    pub previous_c_state: ::core::option::Option<u32>,
9147    /// Ideal wait time of the previous thread.
9148    #[prost(sint32, optional, tag="9")]
9149    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
9150    /// Wait time for the new thread.
9151    #[prost(uint32, optional, tag="10")]
9152    pub new_thread_wait_time: ::core::option::Option<u32>,
9153    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
9154    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
9155    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
9156    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
9157    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
9158    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
9159}
9160/// Nested message and enum types in `CSwitchEtwEvent`.
9161pub mod c_switch_etw_event {
9162    /// Wait reason for the previous thread. The ordering is important as based on
9163    /// the OldThreadWaitReason definition from the link above. The following are
9164    /// the possible values:
9165    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9166    #[repr(i32)]
9167    pub enum OldThreadWaitReason {
9168        Executive = 0,
9169        FreePage = 1,
9170        PageIn = 2,
9171        PoolAllocation = 3,
9172        DelayExecution = 4,
9173        Suspend = 5,
9174        UserRequest = 6,
9175        WrExecutive = 7,
9176        WrFreePage = 8,
9177        WrPageIn = 9,
9178        WrPoolAllocation = 10,
9179        WrDelayExecution = 11,
9180        WrSuspended = 12,
9181        WrUserRequest = 13,
9182        WrEventPair = 14,
9183        WrQueue = 15,
9184        WrLpcReceiver = 16,
9185        WrLpcReply = 17,
9186        WrVirtualMemory = 18,
9187        WrPageOut = 19,
9188        WrRendezVous = 20,
9189        WrKeyedEvent = 21,
9190        WrTerminated = 22,
9191        WrProcessInSwap = 23,
9192        WrCpuRateControl = 24,
9193        WrCalloutStack = 25,
9194        WrKernel = 26,
9195        WrResource = 27,
9196        WrPushLock = 28,
9197        WrMutex = 29,
9198        WrQuantumEnd = 30,
9199        WrDispatchInt = 31,
9200        WrPreempted = 32,
9201        WrYieldExecution = 33,
9202        WrFastMutex = 34,
9203        WrGuardMutex = 35,
9204        WrRundown = 36,
9205        MaximumWaitReason = 37,
9206    }
9207    impl OldThreadWaitReason {
9208        /// String value of the enum field names used in the ProtoBuf definition.
9209        ///
9210        /// The values are not transformed in any way and thus are considered stable
9211        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9212        pub fn as_str_name(&self) -> &'static str {
9213            match self {
9214                OldThreadWaitReason::Executive => "EXECUTIVE",
9215                OldThreadWaitReason::FreePage => "FREE_PAGE",
9216                OldThreadWaitReason::PageIn => "PAGE_IN",
9217                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
9218                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
9219                OldThreadWaitReason::Suspend => "SUSPEND",
9220                OldThreadWaitReason::UserRequest => "USER_REQUEST",
9221                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
9222                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
9223                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
9224                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
9225                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
9226                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
9227                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
9228                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
9229                OldThreadWaitReason::WrQueue => "WR_QUEUE",
9230                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
9231                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
9232                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
9233                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
9234                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
9235                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
9236                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
9237                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
9238                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
9239                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
9240                OldThreadWaitReason::WrKernel => "WR_KERNEL",
9241                OldThreadWaitReason::WrResource => "WR_RESOURCE",
9242                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
9243                OldThreadWaitReason::WrMutex => "WR_MUTEX",
9244                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
9245                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
9246                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
9247                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
9248                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
9249                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
9250                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
9251                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
9252            }
9253        }
9254    }
9255    /// Wait mode for the previous thread. The ordering is important as based on
9256    /// the OldThreadWaitMode definition from the link above. The following are the
9257    /// possible values:
9258    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9259    #[repr(i32)]
9260    pub enum OldThreadWaitMode {
9261        KernelMode = 0,
9262        UserMode = 1,
9263    }
9264    impl OldThreadWaitMode {
9265        /// String value of the enum field names used in the ProtoBuf definition.
9266        ///
9267        /// The values are not transformed in any way and thus are considered stable
9268        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9269        pub fn as_str_name(&self) -> &'static str {
9270            match self {
9271                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
9272                OldThreadWaitMode::UserMode => "USER_MODE",
9273            }
9274        }
9275    }
9276    /// State of the previous thread. The ordering is important as based on the
9277    /// OldThreadState definition from the link above. The following are the
9278    /// possible state values:
9279    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9280    #[repr(i32)]
9281    pub enum OldThreadState {
9282        Initialized = 0,
9283        Ready = 1,
9284        Running = 2,
9285        Standby = 3,
9286        Terminated = 4,
9287        Waiting = 5,
9288        Transition = 6,
9289        DeferredReady = 7,
9290    }
9291    impl OldThreadState {
9292        /// String value of the enum field names used in the ProtoBuf definition.
9293        ///
9294        /// The values are not transformed in any way and thus are considered stable
9295        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9296        pub fn as_str_name(&self) -> &'static str {
9297            match self {
9298                OldThreadState::Initialized => "INITIALIZED",
9299                OldThreadState::Ready => "READY",
9300                OldThreadState::Running => "RUNNING",
9301                OldThreadState::Standby => "STANDBY",
9302                OldThreadState::Terminated => "TERMINATED",
9303                OldThreadState::Waiting => "WAITING",
9304                OldThreadState::Transition => "TRANSITION",
9305                OldThreadState::DeferredReady => "DEFERRED_READY",
9306            }
9307        }
9308    }
9309    #[derive(Clone, PartialEq, ::prost::Oneof)]
9310    pub enum OldThreadWaitReasonEnumOrInt {
9311        #[prost(enumeration="OldThreadWaitReason", tag="6")]
9312        OldThreadWaitReason(i32),
9313        #[prost(int32, tag="11")]
9314        OldThreadWaitReasonInt(i32),
9315    }
9316    #[derive(Clone, PartialEq, ::prost::Oneof)]
9317    pub enum OldThreadWaitModeEnumOrInt {
9318        #[prost(enumeration="OldThreadWaitMode", tag="7")]
9319        OldThreadWaitMode(i32),
9320        #[prost(int32, tag="12")]
9321        OldThreadWaitModeInt(i32),
9322    }
9323    #[derive(Clone, PartialEq, ::prost::Oneof)]
9324    pub enum OldThreadStateEnumOrInt {
9325        #[prost(enumeration="OldThreadState", tag="8")]
9326        OldThreadState(i32),
9327        #[prost(sint32, tag="13")]
9328        OldThreadStateInt(i32),
9329    }
9330}
9331/// Proto definition based on the Thread_v2 CSwitch class definition
9332/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
9333#[derive(Clone, PartialEq, ::prost::Message)]
9334pub struct ReadyThreadEtwEvent {
9335    /// The thread identifier of the thread being readied for execution.
9336    #[prost(uint32, optional, tag="1")]
9337    pub t_thread_id: ::core::option::Option<u32>,
9338    ///   The value by which the priority is being adjusted.
9339    #[prost(sint32, optional, tag="3")]
9340    pub adjust_increment: ::core::option::Option<i32>,
9341    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
9342    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
9343    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
9344    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
9345}
9346/// Nested message and enum types in `ReadyThreadEtwEvent`.
9347pub mod ready_thread_etw_event {
9348    /// The reason for the priority boost. The ordering is important as based on
9349    /// the AdjustReason definition from the link above.
9350    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9351    #[repr(i32)]
9352    pub enum AdjustReason {
9353        IgnoreTheIncrement = 0,
9354        /// Apply the increment, which will decay incrementally at the end of each
9355        /// quantum.
9356        ApplyIncrement = 1,
9357        /// Apply the increment as a boost that will decay in its entirety at quantum
9358        /// (typically for priority donation).
9359        ApplyIncrementBoost = 2,
9360    }
9361    impl AdjustReason {
9362        /// String value of the enum field names used in the ProtoBuf definition.
9363        ///
9364        /// The values are not transformed in any way and thus are considered stable
9365        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9366        pub fn as_str_name(&self) -> &'static str {
9367            match self {
9368                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
9369                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
9370                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
9371            }
9372        }
9373    }
9374    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9375    #[repr(i32)]
9376    pub enum TraceFlag {
9377        Unspecified = 0,
9378        /// The thread has been readied from DPC (deferred procedure call).
9379        ThreadReadied = 1,
9380        /// The kernel stack is currently swapped out.
9381        KernelStackSwappedOut = 2,
9382        /// The process address space is swapped out.
9383        ProcessAddressSwappedOut = 4,
9384    }
9385    impl TraceFlag {
9386        /// String value of the enum field names used in the ProtoBuf definition.
9387        ///
9388        /// The values are not transformed in any way and thus are considered stable
9389        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9390        pub fn as_str_name(&self) -> &'static str {
9391            match self {
9392                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
9393                TraceFlag::ThreadReadied => "THREAD_READIED",
9394                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
9395                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
9396            }
9397        }
9398    }
9399    #[derive(Clone, PartialEq, ::prost::Oneof)]
9400    pub enum AdjustReasonEnumOrInt {
9401        #[prost(enumeration="AdjustReason", tag="2")]
9402        AdjustReason(i32),
9403        #[prost(int32, tag="5")]
9404        AdjustReasonInt(i32),
9405    }
9406    #[derive(Clone, PartialEq, ::prost::Oneof)]
9407    pub enum FlagEnumOrInt {
9408        #[prost(enumeration="TraceFlag", tag="4")]
9409        Flag(i32),
9410        #[prost(int32, tag="6")]
9411        FlagInt(i32),
9412    }
9413}
9414/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
9415/// on local traces using tracerpt:
9416/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
9417#[derive(Clone, PartialEq, ::prost::Message)]
9418pub struct MemInfoEtwEvent {
9419    /// Number of memory priorities on the system.
9420    #[prost(uint32, optional, tag="1")]
9421    pub priority_levels: ::core::option::Option<u32>,
9422    /// Number of pages in the zero list.
9423    #[prost(uint64, optional, tag="2")]
9424    pub zero_page_count: ::core::option::Option<u64>,
9425    /// Number of pages in the free list.
9426    #[prost(uint64, optional, tag="3")]
9427    pub free_page_count: ::core::option::Option<u64>,
9428    /// Number of pages in the modified list.
9429    #[prost(uint64, optional, tag="4")]
9430    pub modified_page_count: ::core::option::Option<u64>,
9431    /// Number of modified non-paged pool pages.
9432    #[prost(uint64, optional, tag="5")]
9433    pub modified_no_write_page_count: ::core::option::Option<u64>,
9434    /// Number of bad pages.
9435    #[prost(uint64, optional, tag="6")]
9436    pub bad_page_count: ::core::option::Option<u64>,
9437    /// Number of standby pages by memory priority.
9438    #[prost(uint64, repeated, packed="false", tag="7")]
9439    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
9440    /// Number of repurposed pages by memory priority.
9441    #[prost(uint64, repeated, packed="false", tag="8")]
9442    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
9443    /// Modified paged pages.
9444    #[prost(uint64, optional, tag="9")]
9445    pub modified_page_count_page_file: ::core::option::Option<u64>,
9446    /// Pool page counts.
9447    #[prost(uint64, optional, tag="10")]
9448    pub paged_pool_page_count: ::core::option::Option<u64>,
9449    #[prost(uint64, optional, tag="11")]
9450    pub non_paged_pool_page_count: ::core::option::Option<u64>,
9451    /// Memory Descriptor List page count.
9452    #[prost(uint64, optional, tag="12")]
9453    pub mdl_page_count: ::core::option::Option<u64>,
9454    /// Commit weight.
9455    #[prost(uint64, optional, tag="13")]
9456    pub commit_page_count: ::core::option::Option<u64>,
9457}
9458/// Proto definition based on the `FileIo_Create` class definition.
9459#[derive(Clone, PartialEq, ::prost::Message)]
9460pub struct FileIoCreateEtwEvent {
9461    #[prost(uint64, optional, tag="1")]
9462    pub irp_ptr: ::core::option::Option<u64>,
9463    #[prost(uint64, optional, tag="2")]
9464    pub file_object: ::core::option::Option<u64>,
9465    #[prost(uint32, optional, tag="3")]
9466    pub ttid: ::core::option::Option<u32>,
9467    #[prost(uint32, optional, tag="4")]
9468    pub create_options: ::core::option::Option<u32>,
9469    #[prost(uint32, optional, tag="5")]
9470    pub file_attributes: ::core::option::Option<u32>,
9471    #[prost(uint32, optional, tag="6")]
9472    pub share_access: ::core::option::Option<u32>,
9473    #[prost(string, optional, tag="7")]
9474    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
9475}
9476/// Proto definition based on the `FileIo_DirEnum` class definition.
9477#[derive(Clone, PartialEq, ::prost::Message)]
9478pub struct FileIoDirEnumEtwEvent {
9479    #[prost(uint64, optional, tag="1")]
9480    pub irp_ptr: ::core::option::Option<u64>,
9481    #[prost(uint64, optional, tag="2")]
9482    pub file_object: ::core::option::Option<u64>,
9483    #[prost(uint64, optional, tag="3")]
9484    pub file_key: ::core::option::Option<u64>,
9485    #[prost(uint32, optional, tag="4")]
9486    pub ttid: ::core::option::Option<u32>,
9487    #[prost(uint32, optional, tag="5")]
9488    pub length: ::core::option::Option<u32>,
9489    #[prost(uint32, optional, tag="6")]
9490    pub info_class: ::core::option::Option<u32>,
9491    #[prost(uint32, optional, tag="7")]
9492    pub file_index: ::core::option::Option<u32>,
9493    #[prost(string, optional, tag="8")]
9494    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9495    #[prost(uint32, optional, tag="9")]
9496    pub opcode: ::core::option::Option<u32>,
9497}
9498/// Proto definition based on the `FileIo_Info` class definition.
9499#[derive(Clone, PartialEq, ::prost::Message)]
9500pub struct FileIoInfoEtwEvent {
9501    #[prost(uint64, optional, tag="1")]
9502    pub irp_ptr: ::core::option::Option<u64>,
9503    #[prost(uint64, optional, tag="2")]
9504    pub file_object: ::core::option::Option<u64>,
9505    #[prost(uint64, optional, tag="3")]
9506    pub file_key: ::core::option::Option<u64>,
9507    #[prost(uint64, optional, tag="4")]
9508    pub extra_info: ::core::option::Option<u64>,
9509    #[prost(uint32, optional, tag="5")]
9510    pub ttid: ::core::option::Option<u32>,
9511    #[prost(uint32, optional, tag="6")]
9512    pub info_class: ::core::option::Option<u32>,
9513    #[prost(uint32, optional, tag="7")]
9514    pub opcode: ::core::option::Option<u32>,
9515}
9516/// Proto definition based on the `FileIo_ReadWrite` class definition.
9517#[derive(Clone, PartialEq, ::prost::Message)]
9518pub struct FileIoReadWriteEtwEvent {
9519    #[prost(uint64, optional, tag="1")]
9520    pub offset: ::core::option::Option<u64>,
9521    #[prost(uint64, optional, tag="2")]
9522    pub irp_ptr: ::core::option::Option<u64>,
9523    #[prost(uint64, optional, tag="3")]
9524    pub file_object: ::core::option::Option<u64>,
9525    #[prost(uint64, optional, tag="4")]
9526    pub file_key: ::core::option::Option<u64>,
9527    #[prost(uint32, optional, tag="5")]
9528    pub ttid: ::core::option::Option<u32>,
9529    #[prost(uint32, optional, tag="6")]
9530    pub io_size: ::core::option::Option<u32>,
9531    #[prost(uint32, optional, tag="7")]
9532    pub io_flags: ::core::option::Option<u32>,
9533    #[prost(uint32, optional, tag="8")]
9534    pub opcode: ::core::option::Option<u32>,
9535}
9536/// Proto definition based on the `FileIo_SimpleOp` class definition.
9537#[derive(Clone, PartialEq, ::prost::Message)]
9538pub struct FileIoSimpleOpEtwEvent {
9539    #[prost(uint64, optional, tag="1")]
9540    pub irp_ptr: ::core::option::Option<u64>,
9541    #[prost(uint64, optional, tag="2")]
9542    pub file_object: ::core::option::Option<u64>,
9543    #[prost(uint64, optional, tag="3")]
9544    pub file_key: ::core::option::Option<u64>,
9545    #[prost(uint32, optional, tag="4")]
9546    pub ttid: ::core::option::Option<u32>,
9547    #[prost(uint32, optional, tag="5")]
9548    pub opcode: ::core::option::Option<u32>,
9549}
9550/// Proto definition based on the `FileIo_OpEnd` class definition.
9551#[derive(Clone, PartialEq, ::prost::Message)]
9552pub struct FileIoOpEndEtwEvent {
9553    #[prost(uint64, optional, tag="1")]
9554    pub irp_ptr: ::core::option::Option<u64>,
9555    #[prost(uint64, optional, tag="2")]
9556    pub extra_info: ::core::option::Option<u64>,
9557    #[prost(uint32, optional, tag="3")]
9558    pub nt_status: ::core::option::Option<u32>,
9559}
9560/// Proto definition based on the `StackWalk_Event` class definition. See
9561/// `Callstack` in `perfetto/protos/perfetto/trace/track_event/track_event.proto`
9562/// for context on what is contained in it.
9563#[derive(Clone, PartialEq, ::prost::Message)]
9564pub struct StackWalkEtwEvent {
9565    #[prost(string, optional, tag="1")]
9566    pub trigger: ::core::option::Option<::prost::alloc::string::String>,
9567    #[prost(uint64, optional, tag="2")]
9568    pub callstack_iid: ::core::option::Option<u64>,
9569}
9570// End of protos/perfetto/trace/etw/etw.proto
9571
9572// Begin of protos/perfetto/trace/etw/etw_event.proto
9573
9574#[derive(Clone, PartialEq, ::prost::Message)]
9575pub struct EtwTraceEvent {
9576    #[prost(uint64, optional, tag="1")]
9577    pub timestamp: ::core::option::Option<u64>,
9578    #[prost(uint32, optional, tag="4")]
9579    pub cpu: ::core::option::Option<u32>,
9580    #[prost(uint32, optional, tag="5")]
9581    pub thread_id: ::core::option::Option<u32>,
9582    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12, 13")]
9583    pub event: ::core::option::Option<etw_trace_event::Event>,
9584}
9585/// Nested message and enum types in `EtwTraceEvent`.
9586pub mod etw_trace_event {
9587    #[derive(Clone, PartialEq, ::prost::Oneof)]
9588    pub enum Event {
9589        #[prost(message, tag="2")]
9590        CSwitch(super::CSwitchEtwEvent),
9591        #[prost(message, tag="3")]
9592        ReadyThread(super::ReadyThreadEtwEvent),
9593        #[prost(message, tag="6")]
9594        MemInfo(super::MemInfoEtwEvent),
9595        #[prost(message, tag="7")]
9596        FileIoCreate(super::FileIoCreateEtwEvent),
9597        #[prost(message, tag="8")]
9598        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
9599        #[prost(message, tag="9")]
9600        FileIoInfo(super::FileIoInfoEtwEvent),
9601        #[prost(message, tag="10")]
9602        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
9603        #[prost(message, tag="11")]
9604        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
9605        #[prost(message, tag="12")]
9606        FileIoOpEnd(super::FileIoOpEndEtwEvent),
9607        #[prost(message, tag="13")]
9608        StackWalk(super::StackWalkEtwEvent),
9609    }
9610}
9611// End of protos/perfetto/trace/etw/etw_event.proto
9612
9613// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
9614
9615/// The result of tracing one or more etw event uses per-processor buffers where
9616/// an in-use buffer is assigned to each processor at all times. Therefore,
9617/// collecting multiple events they should already be synchronized.
9618#[derive(Clone, PartialEq, ::prost::Message)]
9619pub struct EtwTraceEventBundle {
9620    #[prost(uint32, optional, tag="1")]
9621    pub cpu: ::core::option::Option<u32>,
9622    #[prost(message, repeated, tag="2")]
9623    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
9624}
9625// Begin of protos/perfetto/trace/evdev.proto
9626
9627/// Records an event in the evdev protocol, as used by Linux and some other *nix
9628/// kernels to report events from human interface devices.
9629///
9630/// Next ID: 5
9631#[derive(Clone, PartialEq, ::prost::Message)]
9632pub struct EvdevEvent {
9633    /// The device's unique ID number. This need not be the number of its
9634    /// /dev/input/event node.
9635    #[prost(uint32, optional, tag="1")]
9636    pub device_id: ::core::option::Option<u32>,
9637    #[prost(oneof="evdev_event::Event", tags="2, 3, 4")]
9638    pub event: ::core::option::Option<evdev_event::Event>,
9639}
9640/// Nested message and enum types in `EvdevEvent`.
9641pub mod evdev_event {
9642    /// Proto version of Linux's struct input_event. The meaning of types and codes
9643    /// are described in the Linux kernel documentation at
9644    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
9645    ///
9646    /// Next ID: 5
9647    #[derive(Clone, PartialEq, ::prost::Message)]
9648    pub struct InputEvent {
9649        /// The monotonic timestamp at which the event occurred, as reported by the
9650        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
9651        /// since the previous event.
9652        #[prost(uint64, optional, tag="1")]
9653        pub kernel_timestamp: ::core::option::Option<u64>,
9654        /// The code grouping for this event, used to distinguish signals, absolute
9655        /// and relative axis changes, and other types of event.
9656        #[prost(uint32, optional, tag="2")]
9657        pub r#type: ::core::option::Option<u32>,
9658        /// The precise type of the event, such as the axis code for absolute and
9659        /// relative events.
9660        #[prost(uint32, optional, tag="3")]
9661        pub code: ::core::option::Option<u32>,
9662        /// The new value of the axis described by type and code.
9663        #[prost(sint32, optional, tag="4")]
9664        pub value: ::core::option::Option<i32>,
9665    }
9666    /// Describes an evdev device being added to the system.
9667    ///
9668    /// Next ID: 2
9669    #[derive(Clone, PartialEq, ::prost::Message)]
9670    pub struct DeviceAddition {
9671        #[prost(message, optional, tag="1")]
9672        pub device: ::core::option::Option<super::EvdevDevice>,
9673    }
9674    /// Describes an evdev device being removed from the system.
9675    ///
9676    /// Next ID: 1
9677    ///
9678    /// Empty — we don't need to record any data other than the device ID for
9679    /// this event type.
9680    #[derive(Clone, PartialEq, ::prost::Message)]
9681    pub struct DeviceRemoval {
9682    }
9683    #[derive(Clone, PartialEq, ::prost::Oneof)]
9684    pub enum Event {
9685        #[prost(message, tag="2")]
9686        InputEvent(InputEvent),
9687        #[prost(message, tag="3")]
9688        AddEvent(DeviceAddition),
9689        #[prost(message, tag="4")]
9690        RemoveEvent(DeviceRemoval),
9691    }
9692}
9693/// The properties of an input device that don't change during the time that it's
9694/// connected, as well as the current values for all of its axes.
9695///
9696/// Next ID: 13
9697#[derive(Clone, PartialEq, ::prost::Message)]
9698pub struct EvdevDevice {
9699    /// The device's unique ID number. This need not be the number of its
9700    /// /dev/input/event node.
9701    #[prost(uint32, optional, tag="1")]
9702    pub device_id: ::core::option::Option<u32>,
9703    /// The number of the evdev device (i.e. from its /dev/input/eventX node path).
9704    #[prost(uint32, optional, tag="2")]
9705    pub device_num: ::core::option::Option<u32>,
9706    /// The device's name.
9707    #[prost(string, optional, tag="3")]
9708    pub name: ::core::option::Option<::prost::alloc::string::String>,
9709    /// The physical path to the device in the system hierarchy.
9710    #[prost(string, optional, tag="4")]
9711    pub phys: ::core::option::Option<::prost::alloc::string::String>,
9712    /// The unique identification code for the device (if it has one).
9713    #[prost(string, optional, tag="5")]
9714    pub uniq: ::core::option::Option<::prost::alloc::string::String>,
9715    /// The device's ID numbers.
9716    #[prost(message, optional, tag="6")]
9717    pub id: ::core::option::Option<evdev_device::Identifier>,
9718    /// A map of information for each of the device's absolute axes. Keys are the
9719    /// Linux ABS_* constants.
9720    #[prost(map="uint32, message", tag="7")]
9721    pub absolute_axis_infos: ::std::collections::HashMap<u32, evdev_device::AbsInfo>,
9722    /// Bitmask specifying which types of events the device declares.
9723    #[prost(bytes="vec", optional, tag="8")]
9724    pub ev_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9725    /// A map of bitmasks specifying which axes of each type the device declares.
9726    /// Keys are the Linux EV_* constants.
9727    #[prost(map="uint32, bytes", tag="9")]
9728    pub event_type_bitmasks: ::std::collections::HashMap<u32, ::prost::alloc::vec::Vec<u8>>,
9729    /// Bitmask of properties declared by the device.
9730    #[prost(bytes="vec", optional, tag="10")]
9731    pub prop_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9732    /// Current states of device axes.
9733    ///
9734    /// The keys are the Linux event type constants (e.g. EV_KEY, EV_ABS, etc.). We
9735    /// don't need to keep track of states for all axis types, only KEY, SW, LED,
9736    /// and ABS, so only those will have entries in this map. States for ABS_MT_*
9737    /// axes (which have multiple slots) will be kept in abs_mt_states instead.
9738    #[prost(map="uint32, message", tag="11")]
9739    pub axis_states: ::std::collections::HashMap<u32, evdev_device::AxisMap>,
9740    /// Current states of ABS_MT_* axes other than ABS_MT_SLOT. The keys are the
9741    /// ABS axis codes.
9742    #[prost(map="uint32, message", tag="12")]
9743    pub abs_mt_states: ::std::collections::HashMap<u32, evdev_device::SlotValuesMap>,
9744}
9745/// Nested message and enum types in `EvdevDevice`.
9746pub mod evdev_device {
9747    /// Proto version of Linux's struct input_id. Although uint32s are used for the
9748    /// fields, the kernel uses 16-bit ints so values will be less than 2^16.
9749    ///
9750    /// Next ID: 5
9751    #[derive(Clone, PartialEq, ::prost::Message)]
9752    pub struct Identifier {
9753        /// The bus that the device is connected to. Values will be one of Linux's
9754        /// BUS_* constants.
9755        #[prost(uint32, optional, tag="1")]
9756        pub bustype: ::core::option::Option<u32>,
9757        /// A number identifying the vendor of the device. Often a USB or Bluetooth
9758        /// vendor ID, but not always.
9759        #[prost(uint32, optional, tag="2")]
9760        pub vendor: ::core::option::Option<u32>,
9761        #[prost(uint32, optional, tag="3")]
9762        pub product: ::core::option::Option<u32>,
9763        #[prost(uint32, optional, tag="4")]
9764        pub version: ::core::option::Option<u32>,
9765    }
9766    /// Proto version of Linux's struct input_absinfo, excluding the value field
9767    /// (which is tracked elsewhere).
9768    ///
9769    /// Next ID: 6
9770    #[derive(Clone, PartialEq, ::prost::Message)]
9771    pub struct AbsInfo {
9772        #[prost(sint32, optional, tag="1")]
9773        pub minimum: ::core::option::Option<i32>,
9774        #[prost(sint32, optional, tag="2")]
9775        pub maximum: ::core::option::Option<i32>,
9776        #[prost(int32, optional, tag="3")]
9777        pub fuzz: ::core::option::Option<i32>,
9778        #[prost(int32, optional, tag="4")]
9779        pub flat: ::core::option::Option<i32>,
9780        #[prost(int32, optional, tag="5")]
9781        pub resolution: ::core::option::Option<i32>,
9782    }
9783    /// Contains the current values of all axes of a particular type (e.g. EV_ABS,
9784    /// EV_KEY, etc.).
9785    ///
9786    /// Next ID: 2
9787    #[derive(Clone, PartialEq, ::prost::Message)]
9788    pub struct AxisMap {
9789        /// Current values of all axes, other than ABS_MT_* axes (which have multiple
9790        /// slots), which are kept in abs_mt_states instead.
9791        ///
9792        /// The keys are the Linux axis codes, e.g. ABS_* for absolute axes. If there
9793        /// is no entry for a particular axis, assume that its value is 0.
9794        #[prost(map="uint32, sint32", tag="1")]
9795        pub axis_states: ::std::collections::HashMap<u32, i32>,
9796    }
9797    /// Contains the current values of a single ABS_MT_* axis across all of its
9798    /// slots.
9799    ///
9800    /// Next ID: 2
9801    #[derive(Clone, PartialEq, ::prost::Message)]
9802    pub struct SlotValuesMap {
9803        /// Current values for all slots.
9804        ///
9805        /// The keys are the slot numbers. If there is no entry for a particular
9806        /// slot, assume that its value is 0.
9807        #[prost(map="uint32, sint32", tag="1")]
9808        pub slot_values: ::std::collections::HashMap<u32, i32>,
9809    }
9810}
9811// End of protos/perfetto/trace/evdev.proto
9812
9813// Begin of protos/perfetto/common/descriptor.proto
9814
9815/// The protocol compiler can output a FileDescriptorSet containing the .proto
9816/// files it parses.
9817#[derive(Clone, PartialEq, ::prost::Message)]
9818pub struct FileDescriptorSet {
9819    #[prost(message, repeated, tag="1")]
9820    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
9821}
9822/// Describes a complete .proto file.
9823#[derive(Clone, PartialEq, ::prost::Message)]
9824pub struct FileDescriptorProto {
9825    /// file name, relative to root of source tree
9826    #[prost(string, optional, tag="1")]
9827    pub name: ::core::option::Option<::prost::alloc::string::String>,
9828    /// e.g. "foo", "foo.bar", etc.
9829    #[prost(string, optional, tag="2")]
9830    pub package: ::core::option::Option<::prost::alloc::string::String>,
9831    /// Names of files imported by this file.
9832    #[prost(string, repeated, tag="3")]
9833    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9834    /// Indexes of the public imported files in the dependency list above.
9835    #[prost(int32, repeated, packed="false", tag="10")]
9836    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
9837    /// Indexes of the weak imported files in the dependency list.
9838    /// For Google-internal migration only. Do not use.
9839    #[prost(int32, repeated, packed="false", tag="11")]
9840    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
9841    /// All top-level definitions in this file.
9842    #[prost(message, repeated, tag="4")]
9843    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9844    #[prost(message, repeated, tag="5")]
9845    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9846    #[prost(message, repeated, tag="7")]
9847    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9848}
9849/// Describes a message type.
9850#[derive(Clone, PartialEq, ::prost::Message)]
9851pub struct DescriptorProto {
9852    #[prost(string, optional, tag="1")]
9853    pub name: ::core::option::Option<::prost::alloc::string::String>,
9854    #[prost(message, repeated, tag="2")]
9855    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9856    #[prost(message, repeated, tag="6")]
9857    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9858    #[prost(message, repeated, tag="3")]
9859    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9860    #[prost(message, repeated, tag="4")]
9861    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9862    #[prost(message, repeated, tag="8")]
9863    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
9864    #[prost(message, repeated, tag="9")]
9865    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
9866    /// Reserved field names, which may not be used by fields in the same message.
9867    /// A given name may only be reserved once.
9868    #[prost(string, repeated, tag="10")]
9869    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9870}
9871/// Nested message and enum types in `DescriptorProto`.
9872pub mod descriptor_proto {
9873    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
9874    /// fields or extension ranges in the same message. Reserved ranges may
9875    /// not overlap.
9876    #[derive(Clone, PartialEq, ::prost::Message)]
9877    pub struct ReservedRange {
9878        /// Inclusive.
9879        #[prost(int32, optional, tag="1")]
9880        pub start: ::core::option::Option<i32>,
9881        /// Exclusive.
9882        #[prost(int32, optional, tag="2")]
9883        pub end: ::core::option::Option<i32>,
9884    }
9885}
9886/// A message representing a option the parser does not recognize. This only
9887/// appears in options protos created by the compiler::Parser class.
9888/// DescriptorPool resolves these when building Descriptor objects. Therefore,
9889/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
9890/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
9891/// in them.
9892#[derive(Clone, PartialEq, ::prost::Message)]
9893pub struct UninterpretedOption {
9894    #[prost(message, repeated, tag="2")]
9895    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
9896    /// The value of the uninterpreted option, in whatever type the tokenizer
9897    /// identified it as during parsing. Exactly one of these should be set.
9898    #[prost(string, optional, tag="3")]
9899    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
9900    #[prost(uint64, optional, tag="4")]
9901    pub positive_int_value: ::core::option::Option<u64>,
9902    #[prost(int64, optional, tag="5")]
9903    pub negative_int_value: ::core::option::Option<i64>,
9904    #[prost(double, optional, tag="6")]
9905    pub double_value: ::core::option::Option<f64>,
9906    #[prost(bytes="vec", optional, tag="7")]
9907    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9908    #[prost(string, optional, tag="8")]
9909    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
9910}
9911/// Nested message and enum types in `UninterpretedOption`.
9912pub mod uninterpreted_option {
9913    /// The name of the uninterpreted option.  Each string represents a segment in
9914    /// a dot-separated name.  is_extension is true iff a segment represents an
9915    /// extension (denoted with parentheses in options specs in .proto files).
9916    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
9917    /// "foo.(bar.baz).moo".
9918    #[derive(Clone, PartialEq, ::prost::Message)]
9919    pub struct NamePart {
9920        #[prost(string, optional, tag="1")]
9921        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
9922        #[prost(bool, optional, tag="2")]
9923        pub is_extension: ::core::option::Option<bool>,
9924    }
9925}
9926#[derive(Clone, PartialEq, ::prost::Message)]
9927pub struct FieldOptions {
9928    /// The packed option can be enabled for repeated primitive fields to enable
9929    /// a more efficient representation on the wire. Rather than repeatedly
9930    /// writing the tag and type for each element, the entire array is encoded as
9931    /// a single length-delimited blob. In proto3, only explicit setting it to
9932    /// false will avoid using packed encoding.
9933    #[prost(bool, optional, tag="2")]
9934    pub packed: ::core::option::Option<bool>,
9935    /// The parser stores options it doesn't recognize here. See above.
9936    #[prost(message, repeated, tag="999")]
9937    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
9938}
9939/// Describes a field within a message.
9940#[derive(Clone, PartialEq, ::prost::Message)]
9941pub struct FieldDescriptorProto {
9942    #[prost(string, optional, tag="1")]
9943    pub name: ::core::option::Option<::prost::alloc::string::String>,
9944    #[prost(int32, optional, tag="3")]
9945    pub number: ::core::option::Option<i32>,
9946    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
9947    pub label: ::core::option::Option<i32>,
9948    /// If type_name is set, this need not be set.  If both this and type_name
9949    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9950    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
9951    pub r#type: ::core::option::Option<i32>,
9952    /// For message and enum types, this is the name of the type.  If the name
9953    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9954    /// rules are used to find the type (i.e. first the nested types within this
9955    /// message are searched, then within the parent, on up to the root
9956    /// namespace).
9957    #[prost(string, optional, tag="6")]
9958    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9959    /// For extensions, this is the name of the type being extended.  It is
9960    /// resolved in the same manner as type_name.
9961    #[prost(string, optional, tag="2")]
9962    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9963    /// For numeric types, contains the original text representation of the value.
9964    /// For booleans, "true" or "false".
9965    /// For strings, contains the default text contents (not escaped in any way).
9966    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9967    /// TODO(kenton):  Base-64 encode?
9968    #[prost(string, optional, tag="7")]
9969    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9970    #[prost(message, optional, tag="8")]
9971    pub options: ::core::option::Option<FieldOptions>,
9972    /// If set, gives the index of a oneof in the containing type's oneof_decl
9973    /// list.  This field is a member of that oneof.
9974    #[prost(int32, optional, tag="9")]
9975    pub oneof_index: ::core::option::Option<i32>,
9976}
9977/// Nested message and enum types in `FieldDescriptorProto`.
9978pub mod field_descriptor_proto {
9979    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9980    #[repr(i32)]
9981    pub enum Type {
9982        /// 0 is reserved for errors.
9983        /// Order is weird for historical reasons.
9984        Double = 1,
9985        Float = 2,
9986        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9987        /// negative values are likely.
9988        Int64 = 3,
9989        Uint64 = 4,
9990        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9991        /// negative values are likely.
9992        Int32 = 5,
9993        Fixed64 = 6,
9994        Fixed32 = 7,
9995        Bool = 8,
9996        String = 9,
9997        /// Tag-delimited aggregate.
9998        /// Group type is deprecated and not supported in proto3. However, Proto3
9999        /// implementations should still be able to parse the group wire format and
10000        /// treat group fields as unknown fields.
10001        Group = 10,
10002        /// Length-delimited aggregate.
10003        Message = 11,
10004        /// New in version 2.
10005        Bytes = 12,
10006        Uint32 = 13,
10007        Enum = 14,
10008        Sfixed32 = 15,
10009        Sfixed64 = 16,
10010        /// Uses ZigZag encoding.
10011        Sint32 = 17,
10012        /// Uses ZigZag encoding.
10013        Sint64 = 18,
10014    }
10015    impl Type {
10016        /// String value of the enum field names used in the ProtoBuf definition.
10017        ///
10018        /// The values are not transformed in any way and thus are considered stable
10019        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10020        pub fn as_str_name(&self) -> &'static str {
10021            match self {
10022                Type::Double => "TYPE_DOUBLE",
10023                Type::Float => "TYPE_FLOAT",
10024                Type::Int64 => "TYPE_INT64",
10025                Type::Uint64 => "TYPE_UINT64",
10026                Type::Int32 => "TYPE_INT32",
10027                Type::Fixed64 => "TYPE_FIXED64",
10028                Type::Fixed32 => "TYPE_FIXED32",
10029                Type::Bool => "TYPE_BOOL",
10030                Type::String => "TYPE_STRING",
10031                Type::Group => "TYPE_GROUP",
10032                Type::Message => "TYPE_MESSAGE",
10033                Type::Bytes => "TYPE_BYTES",
10034                Type::Uint32 => "TYPE_UINT32",
10035                Type::Enum => "TYPE_ENUM",
10036                Type::Sfixed32 => "TYPE_SFIXED32",
10037                Type::Sfixed64 => "TYPE_SFIXED64",
10038                Type::Sint32 => "TYPE_SINT32",
10039                Type::Sint64 => "TYPE_SINT64",
10040            }
10041        }
10042    }
10043    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10044    #[repr(i32)]
10045    pub enum Label {
10046        /// 0 is reserved for errors
10047        Optional = 1,
10048        Required = 2,
10049        Repeated = 3,
10050    }
10051    impl Label {
10052        /// String value of the enum field names used in the ProtoBuf definition.
10053        ///
10054        /// The values are not transformed in any way and thus are considered stable
10055        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10056        pub fn as_str_name(&self) -> &'static str {
10057            match self {
10058                Label::Optional => "LABEL_OPTIONAL",
10059                Label::Required => "LABEL_REQUIRED",
10060                Label::Repeated => "LABEL_REPEATED",
10061            }
10062        }
10063    }
10064}
10065/// Describes a oneof.
10066#[derive(Clone, PartialEq, ::prost::Message)]
10067pub struct OneofDescriptorProto {
10068    #[prost(string, optional, tag="1")]
10069    pub name: ::core::option::Option<::prost::alloc::string::String>,
10070    #[prost(message, optional, tag="2")]
10071    pub options: ::core::option::Option<OneofOptions>,
10072}
10073/// Describes an enum type.
10074#[derive(Clone, PartialEq, ::prost::Message)]
10075pub struct EnumDescriptorProto {
10076    #[prost(string, optional, tag="1")]
10077    pub name: ::core::option::Option<::prost::alloc::string::String>,
10078    #[prost(message, repeated, tag="2")]
10079    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
10080    /// Reserved enum value names, which may not be reused. A given name may only
10081    /// be reserved once.
10082    #[prost(string, repeated, tag="5")]
10083    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10084}
10085/// Describes a value within an enum.
10086#[derive(Clone, PartialEq, ::prost::Message)]
10087pub struct EnumValueDescriptorProto {
10088    #[prost(string, optional, tag="1")]
10089    pub name: ::core::option::Option<::prost::alloc::string::String>,
10090    #[prost(int32, optional, tag="2")]
10091    pub number: ::core::option::Option<i32>,
10092}
10093#[derive(Clone, PartialEq, ::prost::Message)]
10094pub struct OneofOptions {
10095}
10096// End of protos/perfetto/common/descriptor.proto
10097
10098// Begin of protos/perfetto/trace/extension_descriptor.proto
10099
10100/// This message contains descriptors used to parse extension fields of
10101/// TrackEvent.
10102///
10103/// See docs/instrumentation/extensions.md for more details.
10104#[derive(Clone, PartialEq, ::prost::Message)]
10105pub struct ExtensionDescriptor {
10106    /// Optional, for debugging only. The file name or path of the descriptor
10107    /// source. Can be omitted without affecting functionality.
10108    #[prost(string, optional, tag="3")]
10109    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
10110    #[prost(oneof="extension_descriptor::Descriptor", tags="1, 2")]
10111    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
10112}
10113/// Nested message and enum types in `ExtensionDescriptor`.
10114pub mod extension_descriptor {
10115    #[derive(Clone, PartialEq, ::prost::Oneof)]
10116    pub enum Descriptor {
10117        #[prost(message, tag="1")]
10118        ExtensionSet(super::FileDescriptorSet),
10119        /// Same as extension_set, but gzip-compressed. This is used by the tracing
10120        /// service on Android to emit pre-compressed descriptor files from
10121        /// /etc/tracing_descriptors.gz without decompressing them first.
10122        #[prost(bytes, tag="2")]
10123        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
10124    }
10125}
10126// End of protos/perfetto/trace/extension_descriptor.proto
10127
10128// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
10129
10130/// Represents the mapping between inode numbers in a block device and their path
10131/// on the filesystem
10132#[derive(Clone, PartialEq, ::prost::Message)]
10133pub struct InodeFileMap {
10134    #[prost(uint64, optional, tag="1")]
10135    pub block_device_id: ::core::option::Option<u64>,
10136    /// The mount points of the block device, e.g. \["system"\].
10137    #[prost(string, repeated, tag="2")]
10138    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10139    /// The list of all the entries from the block device
10140    #[prost(message, repeated, tag="3")]
10141    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
10142}
10143/// Nested message and enum types in `InodeFileMap`.
10144pub mod inode_file_map {
10145    /// Representation of Entry
10146    #[derive(Clone, PartialEq, ::prost::Message)]
10147    pub struct Entry {
10148        #[prost(uint64, optional, tag="1")]
10149        pub inode_number: ::core::option::Option<u64>,
10150        /// The path to the file, e.g. "etc/file.xml"
10151        /// List of strings for multiple hardlinks
10152        #[prost(string, repeated, tag="2")]
10153        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10154        #[prost(enumeration="entry::Type", optional, tag="3")]
10155        pub r#type: ::core::option::Option<i32>,
10156    }
10157    /// Nested message and enum types in `Entry`.
10158    pub mod entry {
10159        /// The file type
10160        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10161        #[repr(i32)]
10162        pub enum Type {
10163            Unknown = 0,
10164            File = 1,
10165            Directory = 2,
10166        }
10167        impl Type {
10168            /// String value of the enum field names used in the ProtoBuf definition.
10169            ///
10170            /// The values are not transformed in any way and thus are considered stable
10171            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10172            pub fn as_str_name(&self) -> &'static str {
10173                match self {
10174                    Type::Unknown => "UNKNOWN",
10175                    Type::File => "FILE",
10176                    Type::Directory => "DIRECTORY",
10177                }
10178            }
10179        }
10180    }
10181}
10182// End of protos/perfetto/trace/filesystem/inode_file_map.proto
10183
10184// Begin of protos/perfetto/trace/ftrace/android_fs.proto
10185
10186#[derive(Clone, PartialEq, ::prost::Message)]
10187pub struct AndroidFsDatareadEndFtraceEvent {
10188    #[prost(int32, optional, tag="1")]
10189    pub bytes: ::core::option::Option<i32>,
10190    #[prost(uint64, optional, tag="2")]
10191    pub ino: ::core::option::Option<u64>,
10192    #[prost(int64, optional, tag="3")]
10193    pub offset: ::core::option::Option<i64>,
10194}
10195#[derive(Clone, PartialEq, ::prost::Message)]
10196pub struct AndroidFsDatareadStartFtraceEvent {
10197    #[prost(int32, optional, tag="1")]
10198    pub bytes: ::core::option::Option<i32>,
10199    #[prost(string, optional, tag="2")]
10200    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10201    #[prost(int64, optional, tag="3")]
10202    pub i_size: ::core::option::Option<i64>,
10203    #[prost(uint64, optional, tag="4")]
10204    pub ino: ::core::option::Option<u64>,
10205    #[prost(int64, optional, tag="5")]
10206    pub offset: ::core::option::Option<i64>,
10207    #[prost(string, optional, tag="6")]
10208    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10209    #[prost(int32, optional, tag="7")]
10210    pub pid: ::core::option::Option<i32>,
10211}
10212#[derive(Clone, PartialEq, ::prost::Message)]
10213pub struct AndroidFsDatawriteEndFtraceEvent {
10214    #[prost(int32, optional, tag="1")]
10215    pub bytes: ::core::option::Option<i32>,
10216    #[prost(uint64, optional, tag="2")]
10217    pub ino: ::core::option::Option<u64>,
10218    #[prost(int64, optional, tag="3")]
10219    pub offset: ::core::option::Option<i64>,
10220}
10221#[derive(Clone, PartialEq, ::prost::Message)]
10222pub struct AndroidFsDatawriteStartFtraceEvent {
10223    #[prost(int32, optional, tag="1")]
10224    pub bytes: ::core::option::Option<i32>,
10225    #[prost(string, optional, tag="2")]
10226    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10227    #[prost(int64, optional, tag="3")]
10228    pub i_size: ::core::option::Option<i64>,
10229    #[prost(uint64, optional, tag="4")]
10230    pub ino: ::core::option::Option<u64>,
10231    #[prost(int64, optional, tag="5")]
10232    pub offset: ::core::option::Option<i64>,
10233    #[prost(string, optional, tag="6")]
10234    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10235    #[prost(int32, optional, tag="7")]
10236    pub pid: ::core::option::Option<i32>,
10237}
10238#[derive(Clone, PartialEq, ::prost::Message)]
10239pub struct AndroidFsFsyncEndFtraceEvent {
10240    #[prost(int32, optional, tag="1")]
10241    pub bytes: ::core::option::Option<i32>,
10242    #[prost(uint64, optional, tag="2")]
10243    pub ino: ::core::option::Option<u64>,
10244    #[prost(int64, optional, tag="3")]
10245    pub offset: ::core::option::Option<i64>,
10246}
10247#[derive(Clone, PartialEq, ::prost::Message)]
10248pub struct AndroidFsFsyncStartFtraceEvent {
10249    #[prost(string, optional, tag="1")]
10250    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10251    #[prost(int64, optional, tag="2")]
10252    pub i_size: ::core::option::Option<i64>,
10253    #[prost(uint64, optional, tag="3")]
10254    pub ino: ::core::option::Option<u64>,
10255    #[prost(string, optional, tag="4")]
10256    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10257    #[prost(int32, optional, tag="5")]
10258    pub pid: ::core::option::Option<i32>,
10259}
10260// End of protos/perfetto/trace/ftrace/android_fs.proto
10261
10262// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
10263
10264#[derive(Clone, PartialEq, ::prost::Message)]
10265pub struct BclIrqTriggerFtraceEvent {
10266    #[prost(int32, optional, tag="1")]
10267    pub id: ::core::option::Option<i32>,
10268    #[prost(int32, optional, tag="2")]
10269    pub throttle: ::core::option::Option<i32>,
10270    #[prost(int32, optional, tag="3")]
10271    pub cpu0_limit: ::core::option::Option<i32>,
10272    #[prost(int32, optional, tag="4")]
10273    pub cpu1_limit: ::core::option::Option<i32>,
10274    #[prost(int32, optional, tag="5")]
10275    pub cpu2_limit: ::core::option::Option<i32>,
10276    #[prost(int32, optional, tag="6")]
10277    pub tpu_limit: ::core::option::Option<i32>,
10278    #[prost(int32, optional, tag="7")]
10279    pub gpu_limit: ::core::option::Option<i32>,
10280    #[prost(int32, optional, tag="8")]
10281    pub voltage: ::core::option::Option<i32>,
10282    #[prost(int32, optional, tag="9")]
10283    pub capacity: ::core::option::Option<i32>,
10284}
10285// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
10286
10287// Begin of protos/perfetto/trace/ftrace/binder.proto
10288
10289#[derive(Clone, PartialEq, ::prost::Message)]
10290pub struct BinderTransactionFtraceEvent {
10291    #[prost(int32, optional, tag="1")]
10292    pub debug_id: ::core::option::Option<i32>,
10293    #[prost(int32, optional, tag="2")]
10294    pub target_node: ::core::option::Option<i32>,
10295    #[prost(int32, optional, tag="3")]
10296    pub to_proc: ::core::option::Option<i32>,
10297    #[prost(int32, optional, tag="4")]
10298    pub to_thread: ::core::option::Option<i32>,
10299    #[prost(int32, optional, tag="5")]
10300    pub reply: ::core::option::Option<i32>,
10301    #[prost(uint32, optional, tag="6")]
10302    pub code: ::core::option::Option<u32>,
10303    #[prost(uint32, optional, tag="7")]
10304    pub flags: ::core::option::Option<u32>,
10305}
10306#[derive(Clone, PartialEq, ::prost::Message)]
10307pub struct BinderTransactionReceivedFtraceEvent {
10308    #[prost(int32, optional, tag="1")]
10309    pub debug_id: ::core::option::Option<i32>,
10310}
10311#[derive(Clone, PartialEq, ::prost::Message)]
10312pub struct BinderSetPriorityFtraceEvent {
10313    #[prost(int32, optional, tag="1")]
10314    pub proc: ::core::option::Option<i32>,
10315    #[prost(int32, optional, tag="2")]
10316    pub thread: ::core::option::Option<i32>,
10317    #[prost(uint32, optional, tag="3")]
10318    pub old_prio: ::core::option::Option<u32>,
10319    #[prost(uint32, optional, tag="4")]
10320    pub new_prio: ::core::option::Option<u32>,
10321    #[prost(uint32, optional, tag="5")]
10322    pub desired_prio: ::core::option::Option<u32>,
10323}
10324#[derive(Clone, PartialEq, ::prost::Message)]
10325pub struct BinderLockFtraceEvent {
10326    #[prost(string, optional, tag="1")]
10327    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10328}
10329#[derive(Clone, PartialEq, ::prost::Message)]
10330pub struct BinderLockedFtraceEvent {
10331    #[prost(string, optional, tag="1")]
10332    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10333}
10334#[derive(Clone, PartialEq, ::prost::Message)]
10335pub struct BinderUnlockFtraceEvent {
10336    #[prost(string, optional, tag="1")]
10337    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10338}
10339#[derive(Clone, PartialEq, ::prost::Message)]
10340pub struct BinderTransactionAllocBufFtraceEvent {
10341    #[prost(uint64, optional, tag="1")]
10342    pub data_size: ::core::option::Option<u64>,
10343    #[prost(int32, optional, tag="2")]
10344    pub debug_id: ::core::option::Option<i32>,
10345    #[prost(uint64, optional, tag="3")]
10346    pub offsets_size: ::core::option::Option<u64>,
10347    #[prost(uint64, optional, tag="4")]
10348    pub extra_buffers_size: ::core::option::Option<u64>,
10349}
10350#[derive(Clone, PartialEq, ::prost::Message)]
10351pub struct BinderCommandFtraceEvent {
10352    #[prost(uint32, optional, tag="1")]
10353    pub cmd: ::core::option::Option<u32>,
10354}
10355#[derive(Clone, PartialEq, ::prost::Message)]
10356pub struct BinderReturnFtraceEvent {
10357    #[prost(uint32, optional, tag="1")]
10358    pub cmd: ::core::option::Option<u32>,
10359}
10360// End of protos/perfetto/trace/ftrace/binder.proto
10361
10362// Begin of protos/perfetto/trace/ftrace/block.proto
10363
10364#[derive(Clone, PartialEq, ::prost::Message)]
10365pub struct BlockRqIssueFtraceEvent {
10366    #[prost(uint64, optional, tag="1")]
10367    pub dev: ::core::option::Option<u64>,
10368    #[prost(uint64, optional, tag="2")]
10369    pub sector: ::core::option::Option<u64>,
10370    #[prost(uint32, optional, tag="3")]
10371    pub nr_sector: ::core::option::Option<u32>,
10372    #[prost(uint32, optional, tag="4")]
10373    pub bytes: ::core::option::Option<u32>,
10374    #[prost(string, optional, tag="5")]
10375    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10376    #[prost(string, optional, tag="6")]
10377    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10378    #[prost(string, optional, tag="7")]
10379    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10380}
10381#[derive(Clone, PartialEq, ::prost::Message)]
10382pub struct BlockBioBackmergeFtraceEvent {
10383    #[prost(uint64, optional, tag="1")]
10384    pub dev: ::core::option::Option<u64>,
10385    #[prost(uint64, optional, tag="2")]
10386    pub sector: ::core::option::Option<u64>,
10387    #[prost(uint32, optional, tag="3")]
10388    pub nr_sector: ::core::option::Option<u32>,
10389    #[prost(string, optional, tag="4")]
10390    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10391    #[prost(string, optional, tag="5")]
10392    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10393}
10394#[derive(Clone, PartialEq, ::prost::Message)]
10395pub struct BlockBioBounceFtraceEvent {
10396    #[prost(uint64, optional, tag="1")]
10397    pub dev: ::core::option::Option<u64>,
10398    #[prost(uint64, optional, tag="2")]
10399    pub sector: ::core::option::Option<u64>,
10400    #[prost(uint32, optional, tag="3")]
10401    pub nr_sector: ::core::option::Option<u32>,
10402    #[prost(string, optional, tag="4")]
10403    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10404    #[prost(string, optional, tag="5")]
10405    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10406}
10407#[derive(Clone, PartialEq, ::prost::Message)]
10408pub struct BlockBioCompleteFtraceEvent {
10409    #[prost(uint64, optional, tag="1")]
10410    pub dev: ::core::option::Option<u64>,
10411    #[prost(uint64, optional, tag="2")]
10412    pub sector: ::core::option::Option<u64>,
10413    #[prost(uint32, optional, tag="3")]
10414    pub nr_sector: ::core::option::Option<u32>,
10415    #[prost(int32, optional, tag="4")]
10416    pub error: ::core::option::Option<i32>,
10417    #[prost(string, optional, tag="5")]
10418    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10419}
10420#[derive(Clone, PartialEq, ::prost::Message)]
10421pub struct BlockBioFrontmergeFtraceEvent {
10422    #[prost(uint64, optional, tag="1")]
10423    pub dev: ::core::option::Option<u64>,
10424    #[prost(uint64, optional, tag="2")]
10425    pub sector: ::core::option::Option<u64>,
10426    #[prost(uint32, optional, tag="3")]
10427    pub nr_sector: ::core::option::Option<u32>,
10428    #[prost(string, optional, tag="4")]
10429    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10430    #[prost(string, optional, tag="5")]
10431    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10432}
10433#[derive(Clone, PartialEq, ::prost::Message)]
10434pub struct BlockBioQueueFtraceEvent {
10435    #[prost(uint64, optional, tag="1")]
10436    pub dev: ::core::option::Option<u64>,
10437    #[prost(uint64, optional, tag="2")]
10438    pub sector: ::core::option::Option<u64>,
10439    #[prost(uint32, optional, tag="3")]
10440    pub nr_sector: ::core::option::Option<u32>,
10441    #[prost(string, optional, tag="4")]
10442    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10443    #[prost(string, optional, tag="5")]
10444    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10445}
10446#[derive(Clone, PartialEq, ::prost::Message)]
10447pub struct BlockBioRemapFtraceEvent {
10448    #[prost(uint64, optional, tag="1")]
10449    pub dev: ::core::option::Option<u64>,
10450    #[prost(uint64, optional, tag="2")]
10451    pub sector: ::core::option::Option<u64>,
10452    #[prost(uint32, optional, tag="3")]
10453    pub nr_sector: ::core::option::Option<u32>,
10454    #[prost(uint64, optional, tag="4")]
10455    pub old_dev: ::core::option::Option<u64>,
10456    #[prost(uint64, optional, tag="5")]
10457    pub old_sector: ::core::option::Option<u64>,
10458    #[prost(string, optional, tag="6")]
10459    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10460}
10461#[derive(Clone, PartialEq, ::prost::Message)]
10462pub struct BlockDirtyBufferFtraceEvent {
10463    #[prost(uint64, optional, tag="1")]
10464    pub dev: ::core::option::Option<u64>,
10465    #[prost(uint64, optional, tag="2")]
10466    pub sector: ::core::option::Option<u64>,
10467    #[prost(uint64, optional, tag="3")]
10468    pub size: ::core::option::Option<u64>,
10469}
10470#[derive(Clone, PartialEq, ::prost::Message)]
10471pub struct BlockGetrqFtraceEvent {
10472    #[prost(uint64, optional, tag="1")]
10473    pub dev: ::core::option::Option<u64>,
10474    #[prost(uint64, optional, tag="2")]
10475    pub sector: ::core::option::Option<u64>,
10476    #[prost(uint32, optional, tag="3")]
10477    pub nr_sector: ::core::option::Option<u32>,
10478    #[prost(string, optional, tag="4")]
10479    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10480    #[prost(string, optional, tag="5")]
10481    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10482}
10483#[derive(Clone, PartialEq, ::prost::Message)]
10484pub struct BlockPlugFtraceEvent {
10485    #[prost(string, optional, tag="1")]
10486    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10487}
10488#[derive(Clone, PartialEq, ::prost::Message)]
10489pub struct BlockRqAbortFtraceEvent {
10490    #[prost(uint64, optional, tag="1")]
10491    pub dev: ::core::option::Option<u64>,
10492    #[prost(uint64, optional, tag="2")]
10493    pub sector: ::core::option::Option<u64>,
10494    #[prost(uint32, optional, tag="3")]
10495    pub nr_sector: ::core::option::Option<u32>,
10496    #[prost(int32, optional, tag="4")]
10497    pub errors: ::core::option::Option<i32>,
10498    #[prost(string, optional, tag="5")]
10499    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10500    #[prost(string, optional, tag="6")]
10501    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10502}
10503#[derive(Clone, PartialEq, ::prost::Message)]
10504pub struct BlockRqCompleteFtraceEvent {
10505    #[prost(uint64, optional, tag="1")]
10506    pub dev: ::core::option::Option<u64>,
10507    #[prost(uint64, optional, tag="2")]
10508    pub sector: ::core::option::Option<u64>,
10509    #[prost(uint32, optional, tag="3")]
10510    pub nr_sector: ::core::option::Option<u32>,
10511    #[prost(int32, optional, tag="4")]
10512    pub errors: ::core::option::Option<i32>,
10513    #[prost(string, optional, tag="5")]
10514    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10515    #[prost(string, optional, tag="6")]
10516    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10517    #[prost(int32, optional, tag="7")]
10518    pub error: ::core::option::Option<i32>,
10519}
10520#[derive(Clone, PartialEq, ::prost::Message)]
10521pub struct BlockRqInsertFtraceEvent {
10522    #[prost(uint64, optional, tag="1")]
10523    pub dev: ::core::option::Option<u64>,
10524    #[prost(uint64, optional, tag="2")]
10525    pub sector: ::core::option::Option<u64>,
10526    #[prost(uint32, optional, tag="3")]
10527    pub nr_sector: ::core::option::Option<u32>,
10528    #[prost(uint32, optional, tag="4")]
10529    pub bytes: ::core::option::Option<u32>,
10530    #[prost(string, optional, tag="5")]
10531    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10532    #[prost(string, optional, tag="6")]
10533    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10534    #[prost(string, optional, tag="7")]
10535    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10536}
10537#[derive(Clone, PartialEq, ::prost::Message)]
10538pub struct BlockRqRemapFtraceEvent {
10539    #[prost(uint64, optional, tag="1")]
10540    pub dev: ::core::option::Option<u64>,
10541    #[prost(uint64, optional, tag="2")]
10542    pub sector: ::core::option::Option<u64>,
10543    #[prost(uint32, optional, tag="3")]
10544    pub nr_sector: ::core::option::Option<u32>,
10545    #[prost(uint64, optional, tag="4")]
10546    pub old_dev: ::core::option::Option<u64>,
10547    #[prost(uint64, optional, tag="5")]
10548    pub old_sector: ::core::option::Option<u64>,
10549    #[prost(uint32, optional, tag="6")]
10550    pub nr_bios: ::core::option::Option<u32>,
10551    #[prost(string, optional, tag="7")]
10552    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10553}
10554#[derive(Clone, PartialEq, ::prost::Message)]
10555pub struct BlockRqRequeueFtraceEvent {
10556    #[prost(uint64, optional, tag="1")]
10557    pub dev: ::core::option::Option<u64>,
10558    #[prost(uint64, optional, tag="2")]
10559    pub sector: ::core::option::Option<u64>,
10560    #[prost(uint32, optional, tag="3")]
10561    pub nr_sector: ::core::option::Option<u32>,
10562    #[prost(int32, optional, tag="4")]
10563    pub errors: ::core::option::Option<i32>,
10564    #[prost(string, optional, tag="5")]
10565    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10566    #[prost(string, optional, tag="6")]
10567    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10568}
10569#[derive(Clone, PartialEq, ::prost::Message)]
10570pub struct BlockSleeprqFtraceEvent {
10571    #[prost(uint64, optional, tag="1")]
10572    pub dev: ::core::option::Option<u64>,
10573    #[prost(uint64, optional, tag="2")]
10574    pub sector: ::core::option::Option<u64>,
10575    #[prost(uint32, optional, tag="3")]
10576    pub nr_sector: ::core::option::Option<u32>,
10577    #[prost(string, optional, tag="4")]
10578    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10579    #[prost(string, optional, tag="5")]
10580    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10581}
10582#[derive(Clone, PartialEq, ::prost::Message)]
10583pub struct BlockSplitFtraceEvent {
10584    #[prost(uint64, optional, tag="1")]
10585    pub dev: ::core::option::Option<u64>,
10586    #[prost(uint64, optional, tag="2")]
10587    pub sector: ::core::option::Option<u64>,
10588    #[prost(uint64, optional, tag="3")]
10589    pub new_sector: ::core::option::Option<u64>,
10590    #[prost(string, optional, tag="4")]
10591    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10592    #[prost(string, optional, tag="5")]
10593    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10594}
10595#[derive(Clone, PartialEq, ::prost::Message)]
10596pub struct BlockTouchBufferFtraceEvent {
10597    #[prost(uint64, optional, tag="1")]
10598    pub dev: ::core::option::Option<u64>,
10599    #[prost(uint64, optional, tag="2")]
10600    pub sector: ::core::option::Option<u64>,
10601    #[prost(uint64, optional, tag="3")]
10602    pub size: ::core::option::Option<u64>,
10603}
10604#[derive(Clone, PartialEq, ::prost::Message)]
10605pub struct BlockUnplugFtraceEvent {
10606    #[prost(int32, optional, tag="1")]
10607    pub nr_rq: ::core::option::Option<i32>,
10608    #[prost(string, optional, tag="2")]
10609    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10610}
10611#[derive(Clone, PartialEq, ::prost::Message)]
10612pub struct BlockIoStartFtraceEvent {
10613    #[prost(uint64, optional, tag="1")]
10614    pub dev: ::core::option::Option<u64>,
10615    #[prost(uint64, optional, tag="2")]
10616    pub sector: ::core::option::Option<u64>,
10617    #[prost(uint32, optional, tag="3")]
10618    pub nr_sector: ::core::option::Option<u32>,
10619    #[prost(uint32, optional, tag="4")]
10620    pub bytes: ::core::option::Option<u32>,
10621    #[prost(uint32, optional, tag="5")]
10622    pub ioprio: ::core::option::Option<u32>,
10623    #[prost(string, optional, tag="6")]
10624    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10625    #[prost(string, optional, tag="7")]
10626    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10627    #[prost(string, optional, tag="8")]
10628    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10629}
10630#[derive(Clone, PartialEq, ::prost::Message)]
10631pub struct BlockIoDoneFtraceEvent {
10632    #[prost(uint64, optional, tag="1")]
10633    pub dev: ::core::option::Option<u64>,
10634    #[prost(uint64, optional, tag="2")]
10635    pub sector: ::core::option::Option<u64>,
10636    #[prost(uint32, optional, tag="3")]
10637    pub nr_sector: ::core::option::Option<u32>,
10638    #[prost(uint32, optional, tag="4")]
10639    pub bytes: ::core::option::Option<u32>,
10640    #[prost(uint32, optional, tag="5")]
10641    pub ioprio: ::core::option::Option<u32>,
10642    #[prost(string, optional, tag="6")]
10643    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10644    #[prost(string, optional, tag="7")]
10645    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10646    #[prost(string, optional, tag="8")]
10647    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10648}
10649// End of protos/perfetto/trace/ftrace/block.proto
10650
10651// Begin of protos/perfetto/trace/ftrace/cgroup.proto
10652
10653#[derive(Clone, PartialEq, ::prost::Message)]
10654pub struct CgroupAttachTaskFtraceEvent {
10655    #[prost(int32, optional, tag="1")]
10656    pub dst_root: ::core::option::Option<i32>,
10657    #[prost(int32, optional, tag="2")]
10658    pub dst_id: ::core::option::Option<i32>,
10659    #[prost(int32, optional, tag="3")]
10660    pub pid: ::core::option::Option<i32>,
10661    #[prost(string, optional, tag="4")]
10662    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10663    #[prost(string, optional, tag="5")]
10664    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10665    #[prost(int32, optional, tag="6")]
10666    pub dst_level: ::core::option::Option<i32>,
10667    #[prost(string, optional, tag="7")]
10668    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10669}
10670#[derive(Clone, PartialEq, ::prost::Message)]
10671pub struct CgroupMkdirFtraceEvent {
10672    #[prost(int32, optional, tag="1")]
10673    pub root: ::core::option::Option<i32>,
10674    #[prost(int32, optional, tag="2")]
10675    pub id: ::core::option::Option<i32>,
10676    #[prost(string, optional, tag="3")]
10677    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10678    #[prost(int32, optional, tag="4")]
10679    pub level: ::core::option::Option<i32>,
10680    #[prost(string, optional, tag="5")]
10681    pub path: ::core::option::Option<::prost::alloc::string::String>,
10682}
10683#[derive(Clone, PartialEq, ::prost::Message)]
10684pub struct CgroupRemountFtraceEvent {
10685    #[prost(int32, optional, tag="1")]
10686    pub root: ::core::option::Option<i32>,
10687    #[prost(uint32, optional, tag="2")]
10688    pub ss_mask: ::core::option::Option<u32>,
10689    #[prost(string, optional, tag="3")]
10690    pub name: ::core::option::Option<::prost::alloc::string::String>,
10691}
10692#[derive(Clone, PartialEq, ::prost::Message)]
10693pub struct CgroupRmdirFtraceEvent {
10694    #[prost(int32, optional, tag="1")]
10695    pub root: ::core::option::Option<i32>,
10696    #[prost(int32, optional, tag="2")]
10697    pub id: ::core::option::Option<i32>,
10698    #[prost(string, optional, tag="3")]
10699    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10700    #[prost(int32, optional, tag="4")]
10701    pub level: ::core::option::Option<i32>,
10702    #[prost(string, optional, tag="5")]
10703    pub path: ::core::option::Option<::prost::alloc::string::String>,
10704}
10705#[derive(Clone, PartialEq, ::prost::Message)]
10706pub struct CgroupTransferTasksFtraceEvent {
10707    #[prost(int32, optional, tag="1")]
10708    pub dst_root: ::core::option::Option<i32>,
10709    #[prost(int32, optional, tag="2")]
10710    pub dst_id: ::core::option::Option<i32>,
10711    #[prost(int32, optional, tag="3")]
10712    pub pid: ::core::option::Option<i32>,
10713    #[prost(string, optional, tag="4")]
10714    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10715    #[prost(string, optional, tag="5")]
10716    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10717    #[prost(int32, optional, tag="6")]
10718    pub dst_level: ::core::option::Option<i32>,
10719    #[prost(string, optional, tag="7")]
10720    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10721}
10722#[derive(Clone, PartialEq, ::prost::Message)]
10723pub struct CgroupDestroyRootFtraceEvent {
10724    #[prost(int32, optional, tag="1")]
10725    pub root: ::core::option::Option<i32>,
10726    #[prost(uint32, optional, tag="2")]
10727    pub ss_mask: ::core::option::Option<u32>,
10728    #[prost(string, optional, tag="3")]
10729    pub name: ::core::option::Option<::prost::alloc::string::String>,
10730}
10731#[derive(Clone, PartialEq, ::prost::Message)]
10732pub struct CgroupReleaseFtraceEvent {
10733    #[prost(int32, optional, tag="1")]
10734    pub root: ::core::option::Option<i32>,
10735    #[prost(int32, optional, tag="2")]
10736    pub id: ::core::option::Option<i32>,
10737    #[prost(string, optional, tag="3")]
10738    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10739    #[prost(int32, optional, tag="4")]
10740    pub level: ::core::option::Option<i32>,
10741    #[prost(string, optional, tag="5")]
10742    pub path: ::core::option::Option<::prost::alloc::string::String>,
10743}
10744#[derive(Clone, PartialEq, ::prost::Message)]
10745pub struct CgroupRenameFtraceEvent {
10746    #[prost(int32, optional, tag="1")]
10747    pub root: ::core::option::Option<i32>,
10748    #[prost(int32, optional, tag="2")]
10749    pub id: ::core::option::Option<i32>,
10750    #[prost(string, optional, tag="3")]
10751    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10752    #[prost(int32, optional, tag="4")]
10753    pub level: ::core::option::Option<i32>,
10754    #[prost(string, optional, tag="5")]
10755    pub path: ::core::option::Option<::prost::alloc::string::String>,
10756}
10757#[derive(Clone, PartialEq, ::prost::Message)]
10758pub struct CgroupSetupRootFtraceEvent {
10759    #[prost(int32, optional, tag="1")]
10760    pub root: ::core::option::Option<i32>,
10761    #[prost(uint32, optional, tag="2")]
10762    pub ss_mask: ::core::option::Option<u32>,
10763    #[prost(string, optional, tag="3")]
10764    pub name: ::core::option::Option<::prost::alloc::string::String>,
10765}
10766// End of protos/perfetto/trace/ftrace/cgroup.proto
10767
10768// Begin of protos/perfetto/trace/ftrace/clk.proto
10769
10770#[derive(Clone, PartialEq, ::prost::Message)]
10771pub struct ClkEnableFtraceEvent {
10772    #[prost(string, optional, tag="1")]
10773    pub name: ::core::option::Option<::prost::alloc::string::String>,
10774}
10775#[derive(Clone, PartialEq, ::prost::Message)]
10776pub struct ClkDisableFtraceEvent {
10777    #[prost(string, optional, tag="1")]
10778    pub name: ::core::option::Option<::prost::alloc::string::String>,
10779}
10780#[derive(Clone, PartialEq, ::prost::Message)]
10781pub struct ClkSetRateFtraceEvent {
10782    #[prost(string, optional, tag="1")]
10783    pub name: ::core::option::Option<::prost::alloc::string::String>,
10784    #[prost(uint64, optional, tag="2")]
10785    pub rate: ::core::option::Option<u64>,
10786}
10787// End of protos/perfetto/trace/ftrace/clk.proto
10788
10789// Begin of protos/perfetto/trace/ftrace/cma.proto
10790
10791#[derive(Clone, PartialEq, ::prost::Message)]
10792pub struct CmaAllocStartFtraceEvent {
10793    #[prost(uint32, optional, tag="1")]
10794    pub align: ::core::option::Option<u32>,
10795    #[prost(uint32, optional, tag="2")]
10796    pub count: ::core::option::Option<u32>,
10797    #[prost(string, optional, tag="3")]
10798    pub name: ::core::option::Option<::prost::alloc::string::String>,
10799}
10800#[derive(Clone, PartialEq, ::prost::Message)]
10801pub struct CmaAllocInfoFtraceEvent {
10802    #[prost(uint32, optional, tag="1")]
10803    pub align: ::core::option::Option<u32>,
10804    #[prost(uint32, optional, tag="2")]
10805    pub count: ::core::option::Option<u32>,
10806    #[prost(uint32, optional, tag="3")]
10807    pub err_iso: ::core::option::Option<u32>,
10808    #[prost(uint32, optional, tag="4")]
10809    pub err_mig: ::core::option::Option<u32>,
10810    #[prost(uint32, optional, tag="5")]
10811    pub err_test: ::core::option::Option<u32>,
10812    #[prost(string, optional, tag="6")]
10813    pub name: ::core::option::Option<::prost::alloc::string::String>,
10814    #[prost(uint64, optional, tag="7")]
10815    pub nr_mapped: ::core::option::Option<u64>,
10816    #[prost(uint64, optional, tag="8")]
10817    pub nr_migrated: ::core::option::Option<u64>,
10818    #[prost(uint64, optional, tag="9")]
10819    pub nr_reclaimed: ::core::option::Option<u64>,
10820    #[prost(uint64, optional, tag="10")]
10821    pub pfn: ::core::option::Option<u64>,
10822}
10823#[derive(Clone, PartialEq, ::prost::Message)]
10824pub struct CmaAllocFinishFtraceEvent {
10825    #[prost(string, optional, tag="1")]
10826    pub name: ::core::option::Option<::prost::alloc::string::String>,
10827    #[prost(uint64, optional, tag="2")]
10828    pub pfn: ::core::option::Option<u64>,
10829    #[prost(uint64, optional, tag="3")]
10830    pub page: ::core::option::Option<u64>,
10831    #[prost(uint64, optional, tag="4")]
10832    pub count: ::core::option::Option<u64>,
10833    #[prost(uint32, optional, tag="5")]
10834    pub align: ::core::option::Option<u32>,
10835    #[prost(int32, optional, tag="6")]
10836    pub errorno: ::core::option::Option<i32>,
10837}
10838// End of protos/perfetto/trace/ftrace/cma.proto
10839
10840// Begin of protos/perfetto/trace/ftrace/compaction.proto
10841
10842#[derive(Clone, PartialEq, ::prost::Message)]
10843pub struct MmCompactionBeginFtraceEvent {
10844    #[prost(uint64, optional, tag="1")]
10845    pub zone_start: ::core::option::Option<u64>,
10846    #[prost(uint64, optional, tag="2")]
10847    pub migrate_pfn: ::core::option::Option<u64>,
10848    #[prost(uint64, optional, tag="3")]
10849    pub free_pfn: ::core::option::Option<u64>,
10850    #[prost(uint64, optional, tag="4")]
10851    pub zone_end: ::core::option::Option<u64>,
10852    #[prost(uint32, optional, tag="5")]
10853    pub sync: ::core::option::Option<u32>,
10854}
10855#[derive(Clone, PartialEq, ::prost::Message)]
10856pub struct MmCompactionDeferCompactionFtraceEvent {
10857    #[prost(int32, optional, tag="1")]
10858    pub nid: ::core::option::Option<i32>,
10859    #[prost(uint32, optional, tag="2")]
10860    pub idx: ::core::option::Option<u32>,
10861    #[prost(int32, optional, tag="3")]
10862    pub order: ::core::option::Option<i32>,
10863    #[prost(uint32, optional, tag="4")]
10864    pub considered: ::core::option::Option<u32>,
10865    #[prost(uint32, optional, tag="5")]
10866    pub defer_shift: ::core::option::Option<u32>,
10867    #[prost(int32, optional, tag="6")]
10868    pub order_failed: ::core::option::Option<i32>,
10869}
10870#[derive(Clone, PartialEq, ::prost::Message)]
10871pub struct MmCompactionDeferredFtraceEvent {
10872    #[prost(int32, optional, tag="1")]
10873    pub nid: ::core::option::Option<i32>,
10874    #[prost(uint32, optional, tag="2")]
10875    pub idx: ::core::option::Option<u32>,
10876    #[prost(int32, optional, tag="3")]
10877    pub order: ::core::option::Option<i32>,
10878    #[prost(uint32, optional, tag="4")]
10879    pub considered: ::core::option::Option<u32>,
10880    #[prost(uint32, optional, tag="5")]
10881    pub defer_shift: ::core::option::Option<u32>,
10882    #[prost(int32, optional, tag="6")]
10883    pub order_failed: ::core::option::Option<i32>,
10884}
10885#[derive(Clone, PartialEq, ::prost::Message)]
10886pub struct MmCompactionDeferResetFtraceEvent {
10887    #[prost(int32, optional, tag="1")]
10888    pub nid: ::core::option::Option<i32>,
10889    #[prost(uint32, optional, tag="2")]
10890    pub idx: ::core::option::Option<u32>,
10891    #[prost(int32, optional, tag="3")]
10892    pub order: ::core::option::Option<i32>,
10893    #[prost(uint32, optional, tag="4")]
10894    pub considered: ::core::option::Option<u32>,
10895    #[prost(uint32, optional, tag="5")]
10896    pub defer_shift: ::core::option::Option<u32>,
10897    #[prost(int32, optional, tag="6")]
10898    pub order_failed: ::core::option::Option<i32>,
10899}
10900#[derive(Clone, PartialEq, ::prost::Message)]
10901pub struct MmCompactionEndFtraceEvent {
10902    #[prost(uint64, optional, tag="1")]
10903    pub zone_start: ::core::option::Option<u64>,
10904    #[prost(uint64, optional, tag="2")]
10905    pub migrate_pfn: ::core::option::Option<u64>,
10906    #[prost(uint64, optional, tag="3")]
10907    pub free_pfn: ::core::option::Option<u64>,
10908    #[prost(uint64, optional, tag="4")]
10909    pub zone_end: ::core::option::Option<u64>,
10910    #[prost(uint32, optional, tag="5")]
10911    pub sync: ::core::option::Option<u32>,
10912    #[prost(int32, optional, tag="6")]
10913    pub status: ::core::option::Option<i32>,
10914}
10915#[derive(Clone, PartialEq, ::prost::Message)]
10916pub struct MmCompactionFinishedFtraceEvent {
10917    #[prost(int32, optional, tag="1")]
10918    pub nid: ::core::option::Option<i32>,
10919    #[prost(uint32, optional, tag="2")]
10920    pub idx: ::core::option::Option<u32>,
10921    #[prost(int32, optional, tag="3")]
10922    pub order: ::core::option::Option<i32>,
10923    #[prost(int32, optional, tag="4")]
10924    pub ret: ::core::option::Option<i32>,
10925}
10926#[derive(Clone, PartialEq, ::prost::Message)]
10927pub struct MmCompactionIsolateFreepagesFtraceEvent {
10928    #[prost(uint64, optional, tag="1")]
10929    pub start_pfn: ::core::option::Option<u64>,
10930    #[prost(uint64, optional, tag="2")]
10931    pub end_pfn: ::core::option::Option<u64>,
10932    #[prost(uint64, optional, tag="3")]
10933    pub nr_scanned: ::core::option::Option<u64>,
10934    #[prost(uint64, optional, tag="4")]
10935    pub nr_taken: ::core::option::Option<u64>,
10936}
10937#[derive(Clone, PartialEq, ::prost::Message)]
10938pub struct MmCompactionIsolateMigratepagesFtraceEvent {
10939    #[prost(uint64, optional, tag="1")]
10940    pub start_pfn: ::core::option::Option<u64>,
10941    #[prost(uint64, optional, tag="2")]
10942    pub end_pfn: ::core::option::Option<u64>,
10943    #[prost(uint64, optional, tag="3")]
10944    pub nr_scanned: ::core::option::Option<u64>,
10945    #[prost(uint64, optional, tag="4")]
10946    pub nr_taken: ::core::option::Option<u64>,
10947}
10948#[derive(Clone, PartialEq, ::prost::Message)]
10949pub struct MmCompactionKcompactdSleepFtraceEvent {
10950    #[prost(int32, optional, tag="1")]
10951    pub nid: ::core::option::Option<i32>,
10952}
10953#[derive(Clone, PartialEq, ::prost::Message)]
10954pub struct MmCompactionKcompactdWakeFtraceEvent {
10955    #[prost(int32, optional, tag="1")]
10956    pub nid: ::core::option::Option<i32>,
10957    #[prost(int32, optional, tag="2")]
10958    pub order: ::core::option::Option<i32>,
10959    #[prost(uint32, optional, tag="3")]
10960    pub classzone_idx: ::core::option::Option<u32>,
10961    #[prost(uint32, optional, tag="4")]
10962    pub highest_zoneidx: ::core::option::Option<u32>,
10963}
10964#[derive(Clone, PartialEq, ::prost::Message)]
10965pub struct MmCompactionMigratepagesFtraceEvent {
10966    #[prost(uint64, optional, tag="1")]
10967    pub nr_migrated: ::core::option::Option<u64>,
10968    #[prost(uint64, optional, tag="2")]
10969    pub nr_failed: ::core::option::Option<u64>,
10970}
10971#[derive(Clone, PartialEq, ::prost::Message)]
10972pub struct MmCompactionSuitableFtraceEvent {
10973    #[prost(int32, optional, tag="1")]
10974    pub nid: ::core::option::Option<i32>,
10975    #[prost(uint32, optional, tag="2")]
10976    pub idx: ::core::option::Option<u32>,
10977    #[prost(int32, optional, tag="3")]
10978    pub order: ::core::option::Option<i32>,
10979    #[prost(int32, optional, tag="4")]
10980    pub ret: ::core::option::Option<i32>,
10981}
10982#[derive(Clone, PartialEq, ::prost::Message)]
10983pub struct MmCompactionTryToCompactPagesFtraceEvent {
10984    #[prost(int32, optional, tag="1")]
10985    pub order: ::core::option::Option<i32>,
10986    #[prost(uint32, optional, tag="2")]
10987    pub gfp_mask: ::core::option::Option<u32>,
10988    #[prost(uint32, optional, tag="3")]
10989    pub mode: ::core::option::Option<u32>,
10990    #[prost(int32, optional, tag="4")]
10991    pub prio: ::core::option::Option<i32>,
10992}
10993#[derive(Clone, PartialEq, ::prost::Message)]
10994pub struct MmCompactionWakeupKcompactdFtraceEvent {
10995    #[prost(int32, optional, tag="1")]
10996    pub nid: ::core::option::Option<i32>,
10997    #[prost(int32, optional, tag="2")]
10998    pub order: ::core::option::Option<i32>,
10999    #[prost(uint32, optional, tag="3")]
11000    pub classzone_idx: ::core::option::Option<u32>,
11001    #[prost(uint32, optional, tag="4")]
11002    pub highest_zoneidx: ::core::option::Option<u32>,
11003}
11004// End of protos/perfetto/trace/ftrace/compaction.proto
11005
11006// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
11007
11008#[derive(Clone, PartialEq, ::prost::Message)]
11009pub struct ParamSetValueCpmFtraceEvent {
11010    #[prost(string, optional, tag="1")]
11011    pub body: ::core::option::Option<::prost::alloc::string::String>,
11012    #[prost(uint32, optional, tag="2")]
11013    pub value: ::core::option::Option<u32>,
11014    #[prost(int64, optional, tag="3")]
11015    pub timestamp: ::core::option::Option<i64>,
11016}
11017// End of protos/perfetto/trace/ftrace/cpm_trace.proto
11018
11019// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
11020
11021#[derive(Clone, PartialEq, ::prost::Message)]
11022pub struct CpuhpExitFtraceEvent {
11023    #[prost(uint32, optional, tag="1")]
11024    pub cpu: ::core::option::Option<u32>,
11025    #[prost(int32, optional, tag="2")]
11026    pub idx: ::core::option::Option<i32>,
11027    #[prost(int32, optional, tag="3")]
11028    pub ret: ::core::option::Option<i32>,
11029    #[prost(int32, optional, tag="4")]
11030    pub state: ::core::option::Option<i32>,
11031}
11032#[derive(Clone, PartialEq, ::prost::Message)]
11033pub struct CpuhpMultiEnterFtraceEvent {
11034    #[prost(uint32, optional, tag="1")]
11035    pub cpu: ::core::option::Option<u32>,
11036    #[prost(uint64, optional, tag="2")]
11037    pub fun: ::core::option::Option<u64>,
11038    #[prost(int32, optional, tag="3")]
11039    pub idx: ::core::option::Option<i32>,
11040    #[prost(int32, optional, tag="4")]
11041    pub target: ::core::option::Option<i32>,
11042}
11043#[derive(Clone, PartialEq, ::prost::Message)]
11044pub struct CpuhpEnterFtraceEvent {
11045    #[prost(uint32, optional, tag="1")]
11046    pub cpu: ::core::option::Option<u32>,
11047    #[prost(uint64, optional, tag="2")]
11048    pub fun: ::core::option::Option<u64>,
11049    #[prost(int32, optional, tag="3")]
11050    pub idx: ::core::option::Option<i32>,
11051    #[prost(int32, optional, tag="4")]
11052    pub target: ::core::option::Option<i32>,
11053}
11054#[derive(Clone, PartialEq, ::prost::Message)]
11055pub struct CpuhpLatencyFtraceEvent {
11056    #[prost(uint32, optional, tag="1")]
11057    pub cpu: ::core::option::Option<u32>,
11058    #[prost(int32, optional, tag="2")]
11059    pub ret: ::core::option::Option<i32>,
11060    #[prost(uint32, optional, tag="3")]
11061    pub state: ::core::option::Option<u32>,
11062    #[prost(uint64, optional, tag="4")]
11063    pub time: ::core::option::Option<u64>,
11064}
11065#[derive(Clone, PartialEq, ::prost::Message)]
11066pub struct CpuhpPauseFtraceEvent {
11067    #[prost(uint32, optional, tag="1")]
11068    pub active_cpus: ::core::option::Option<u32>,
11069    #[prost(uint32, optional, tag="2")]
11070    pub cpus: ::core::option::Option<u32>,
11071    #[prost(uint32, optional, tag="3")]
11072    pub pause: ::core::option::Option<u32>,
11073    #[prost(uint32, optional, tag="4")]
11074    pub time: ::core::option::Option<u32>,
11075}
11076// End of protos/perfetto/trace/ftrace/cpuhp.proto
11077
11078// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
11079
11080#[derive(Clone, PartialEq, ::prost::Message)]
11081pub struct CrosEcSensorhubDataFtraceEvent {
11082    #[prost(int64, optional, tag="1")]
11083    pub current_time: ::core::option::Option<i64>,
11084    #[prost(int64, optional, tag="2")]
11085    pub current_timestamp: ::core::option::Option<i64>,
11086    #[prost(int64, optional, tag="3")]
11087    pub delta: ::core::option::Option<i64>,
11088    #[prost(uint32, optional, tag="4")]
11089    pub ec_fifo_timestamp: ::core::option::Option<u32>,
11090    #[prost(uint32, optional, tag="5")]
11091    pub ec_sensor_num: ::core::option::Option<u32>,
11092    #[prost(int64, optional, tag="6")]
11093    pub fifo_timestamp: ::core::option::Option<i64>,
11094}
11095// End of protos/perfetto/trace/ftrace/cros_ec.proto
11096
11097// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
11098
11099#[derive(Clone, PartialEq, ::prost::Message)]
11100pub struct DcvshFreqFtraceEvent {
11101    #[prost(uint64, optional, tag="1")]
11102    pub cpu: ::core::option::Option<u64>,
11103    #[prost(uint64, optional, tag="2")]
11104    pub freq: ::core::option::Option<u64>,
11105}
11106// End of protos/perfetto/trace/ftrace/dcvsh.proto
11107
11108// Begin of protos/perfetto/trace/ftrace/devfreq.proto
11109
11110#[derive(Clone, PartialEq, ::prost::Message)]
11111pub struct DevfreqFrequencyFtraceEvent {
11112    #[prost(string, optional, tag="1")]
11113    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
11114    #[prost(uint64, optional, tag="2")]
11115    pub freq: ::core::option::Option<u64>,
11116    #[prost(uint64, optional, tag="3")]
11117    pub prev_freq: ::core::option::Option<u64>,
11118    #[prost(uint64, optional, tag="4")]
11119    pub busy_time: ::core::option::Option<u64>,
11120    #[prost(uint64, optional, tag="5")]
11121    pub total_time: ::core::option::Option<u64>,
11122}
11123// End of protos/perfetto/trace/ftrace/devfreq.proto
11124
11125// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
11126
11127#[derive(Clone, PartialEq, ::prost::Message)]
11128pub struct DmaFenceInitFtraceEvent {
11129    #[prost(uint32, optional, tag="1")]
11130    pub context: ::core::option::Option<u32>,
11131    #[prost(string, optional, tag="2")]
11132    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11133    #[prost(uint32, optional, tag="3")]
11134    pub seqno: ::core::option::Option<u32>,
11135    #[prost(string, optional, tag="4")]
11136    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11137}
11138#[derive(Clone, PartialEq, ::prost::Message)]
11139pub struct DmaFenceEmitFtraceEvent {
11140    #[prost(uint32, optional, tag="1")]
11141    pub context: ::core::option::Option<u32>,
11142    #[prost(string, optional, tag="2")]
11143    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11144    #[prost(uint32, optional, tag="3")]
11145    pub seqno: ::core::option::Option<u32>,
11146    #[prost(string, optional, tag="4")]
11147    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11148}
11149#[derive(Clone, PartialEq, ::prost::Message)]
11150pub struct DmaFenceSignaledFtraceEvent {
11151    #[prost(uint32, optional, tag="1")]
11152    pub context: ::core::option::Option<u32>,
11153    #[prost(string, optional, tag="2")]
11154    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11155    #[prost(uint32, optional, tag="3")]
11156    pub seqno: ::core::option::Option<u32>,
11157    #[prost(string, optional, tag="4")]
11158    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11159}
11160#[derive(Clone, PartialEq, ::prost::Message)]
11161pub struct DmaFenceWaitStartFtraceEvent {
11162    #[prost(uint32, optional, tag="1")]
11163    pub context: ::core::option::Option<u32>,
11164    #[prost(string, optional, tag="2")]
11165    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11166    #[prost(uint32, optional, tag="3")]
11167    pub seqno: ::core::option::Option<u32>,
11168    #[prost(string, optional, tag="4")]
11169    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11170}
11171#[derive(Clone, PartialEq, ::prost::Message)]
11172pub struct DmaFenceWaitEndFtraceEvent {
11173    #[prost(uint32, optional, tag="1")]
11174    pub context: ::core::option::Option<u32>,
11175    #[prost(string, optional, tag="2")]
11176    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11177    #[prost(uint32, optional, tag="3")]
11178    pub seqno: ::core::option::Option<u32>,
11179    #[prost(string, optional, tag="4")]
11180    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11181}
11182// End of protos/perfetto/trace/ftrace/dma_fence.proto
11183
11184// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
11185
11186#[derive(Clone, PartialEq, ::prost::Message)]
11187pub struct DmaHeapStatFtraceEvent {
11188    #[prost(uint64, optional, tag="1")]
11189    pub inode: ::core::option::Option<u64>,
11190    #[prost(int64, optional, tag="2")]
11191    pub len: ::core::option::Option<i64>,
11192    #[prost(uint64, optional, tag="3")]
11193    pub total_allocated: ::core::option::Option<u64>,
11194}
11195// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
11196
11197// Begin of protos/perfetto/trace/ftrace/dpu.proto
11198
11199#[derive(Clone, PartialEq, ::prost::Message)]
11200pub struct DpuTracingMarkWriteFtraceEvent {
11201    #[prost(int32, optional, tag="1")]
11202    pub pid: ::core::option::Option<i32>,
11203    #[prost(string, optional, tag="2")]
11204    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
11205    #[prost(uint32, optional, tag="3")]
11206    pub trace_begin: ::core::option::Option<u32>,
11207    #[prost(string, optional, tag="4")]
11208    pub name: ::core::option::Option<::prost::alloc::string::String>,
11209    #[prost(uint32, optional, tag="5")]
11210    pub r#type: ::core::option::Option<u32>,
11211    #[prost(int32, optional, tag="6")]
11212    pub value: ::core::option::Option<i32>,
11213}
11214#[derive(Clone, PartialEq, ::prost::Message)]
11215pub struct DpuDsiCmdFifoStatusFtraceEvent {
11216    #[prost(uint32, optional, tag="1")]
11217    pub header: ::core::option::Option<u32>,
11218    #[prost(uint32, optional, tag="2")]
11219    pub payload: ::core::option::Option<u32>,
11220}
11221#[derive(Clone, PartialEq, ::prost::Message)]
11222pub struct DpuDsiRxFtraceEvent {
11223    #[prost(uint32, optional, tag="1")]
11224    pub cmd: ::core::option::Option<u32>,
11225    #[prost(bytes="vec", optional, tag="3")]
11226    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11227}
11228#[derive(Clone, PartialEq, ::prost::Message)]
11229pub struct DpuDsiTxFtraceEvent {
11230    #[prost(uint32, optional, tag="1")]
11231    pub r#type: ::core::option::Option<u32>,
11232    #[prost(uint32, optional, tag="3")]
11233    pub last: ::core::option::Option<u32>,
11234    #[prost(uint32, optional, tag="4")]
11235    pub delay_ms: ::core::option::Option<u32>,
11236    #[prost(bytes="vec", optional, tag="5")]
11237    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11238}
11239#[derive(Clone, PartialEq, ::prost::Message)]
11240pub struct DpuDispDpuUnderrunFtraceEvent {
11241    #[prost(int32, optional, tag="1")]
11242    pub id: ::core::option::Option<i32>,
11243    #[prost(int32, optional, tag="2")]
11244    pub frames_pending: ::core::option::Option<i32>,
11245    #[prost(int32, optional, tag="3")]
11246    pub vsync_count: ::core::option::Option<i32>,
11247}
11248#[derive(Clone, PartialEq, ::prost::Message)]
11249pub struct DpuDispVblankIrqEnableFtraceEvent {
11250    #[prost(int32, optional, tag="1")]
11251    pub id: ::core::option::Option<i32>,
11252    #[prost(int32, optional, tag="2")]
11253    pub output_id: ::core::option::Option<i32>,
11254    #[prost(int32, optional, tag="3")]
11255    pub enable: ::core::option::Option<i32>,
11256}
11257#[derive(Clone, PartialEq, ::prost::Message)]
11258pub struct DpuDispFrameDoneTimeoutFtraceEvent {
11259    #[prost(int32, optional, tag="1")]
11260    pub display_id: ::core::option::Option<i32>,
11261    #[prost(uint32, optional, tag="2")]
11262    pub output_id: ::core::option::Option<u32>,
11263    #[prost(int32, optional, tag="3")]
11264    pub frames_pending: ::core::option::Option<i32>,
11265    #[prost(int32, optional, tag="4")]
11266    pub te_count: ::core::option::Option<i32>,
11267    #[prost(uint32, optional, tag="5")]
11268    pub during_disable: ::core::option::Option<u32>,
11269}
11270#[derive(Clone, PartialEq, ::prost::Message)]
11271pub struct DpuDispFrameStartTimeoutFtraceEvent {
11272    #[prost(int32, optional, tag="1")]
11273    pub display_id: ::core::option::Option<i32>,
11274    #[prost(uint32, optional, tag="2")]
11275    pub output_id: ::core::option::Option<u32>,
11276    #[prost(int32, optional, tag="3")]
11277    pub frames_pending: ::core::option::Option<i32>,
11278    #[prost(int32, optional, tag="4")]
11279    pub te_count: ::core::option::Option<i32>,
11280}
11281#[derive(Clone, PartialEq, ::prost::Message)]
11282pub struct DpuDispFrameDoneMissingFtraceEvent {
11283    #[prost(int32, optional, tag="1")]
11284    pub display_id: ::core::option::Option<i32>,
11285    #[prost(uint32, optional, tag="2")]
11286    pub output_id: ::core::option::Option<u32>,
11287    #[prost(int32, optional, tag="3")]
11288    pub frames_pending: ::core::option::Option<i32>,
11289    #[prost(int32, optional, tag="4")]
11290    pub te_count: ::core::option::Option<i32>,
11291}
11292#[derive(Clone, PartialEq, ::prost::Message)]
11293pub struct DpuDispFrameStartMissingFtraceEvent {
11294    #[prost(int32, optional, tag="1")]
11295    pub display_id: ::core::option::Option<i32>,
11296    #[prost(uint32, optional, tag="2")]
11297    pub output_id: ::core::option::Option<u32>,
11298    #[prost(int32, optional, tag="3")]
11299    pub frames_pending: ::core::option::Option<i32>,
11300    #[prost(int32, optional, tag="4")]
11301    pub te_count: ::core::option::Option<i32>,
11302}
11303// End of protos/perfetto/trace/ftrace/dpu.proto
11304
11305// Begin of protos/perfetto/trace/ftrace/drm.proto
11306
11307#[derive(Clone, PartialEq, ::prost::Message)]
11308pub struct DrmVblankEventFtraceEvent {
11309    #[prost(int32, optional, tag="1")]
11310    pub crtc: ::core::option::Option<i32>,
11311    #[prost(uint32, optional, tag="2")]
11312    pub high_prec: ::core::option::Option<u32>,
11313    #[prost(uint32, optional, tag="3")]
11314    pub seq: ::core::option::Option<u32>,
11315    #[prost(int64, optional, tag="4")]
11316    pub time: ::core::option::Option<i64>,
11317}
11318#[derive(Clone, PartialEq, ::prost::Message)]
11319pub struct DrmVblankEventDeliveredFtraceEvent {
11320    #[prost(int32, optional, tag="1")]
11321    pub crtc: ::core::option::Option<i32>,
11322    #[prost(uint64, optional, tag="2")]
11323    pub file: ::core::option::Option<u64>,
11324    #[prost(uint32, optional, tag="3")]
11325    pub seq: ::core::option::Option<u32>,
11326}
11327// End of protos/perfetto/trace/ftrace/drm.proto
11328
11329// Begin of protos/perfetto/trace/ftrace/dwc3.proto
11330
11331#[derive(Clone, PartialEq, ::prost::Message)]
11332pub struct Dwc3AllocRequestFtraceEvent {
11333    #[prost(string, optional, tag="1")]
11334    pub name: ::core::option::Option<::prost::alloc::string::String>,
11335    #[prost(uint64, optional, tag="2")]
11336    pub req: ::core::option::Option<u64>,
11337    #[prost(uint32, optional, tag="3")]
11338    pub actual: ::core::option::Option<u32>,
11339    #[prost(uint32, optional, tag="4")]
11340    pub length: ::core::option::Option<u32>,
11341    #[prost(int32, optional, tag="5")]
11342    pub status: ::core::option::Option<i32>,
11343    #[prost(int32, optional, tag="6")]
11344    pub zero: ::core::option::Option<i32>,
11345    #[prost(int32, optional, tag="7")]
11346    pub short_not_ok: ::core::option::Option<i32>,
11347    #[prost(int32, optional, tag="8")]
11348    pub no_interrupt: ::core::option::Option<i32>,
11349}
11350#[derive(Clone, PartialEq, ::prost::Message)]
11351pub struct Dwc3CompleteTrbFtraceEvent {
11352    #[prost(string, optional, tag="1")]
11353    pub name: ::core::option::Option<::prost::alloc::string::String>,
11354    #[prost(uint64, optional, tag="2")]
11355    pub trb: ::core::option::Option<u64>,
11356    #[prost(uint32, optional, tag="3")]
11357    pub allocated: ::core::option::Option<u32>,
11358    #[prost(uint32, optional, tag="4")]
11359    pub queued: ::core::option::Option<u32>,
11360    #[prost(uint32, optional, tag="5")]
11361    pub bpl: ::core::option::Option<u32>,
11362    #[prost(uint32, optional, tag="6")]
11363    pub bph: ::core::option::Option<u32>,
11364    #[prost(uint32, optional, tag="7")]
11365    pub size: ::core::option::Option<u32>,
11366    #[prost(uint32, optional, tag="8")]
11367    pub ctrl: ::core::option::Option<u32>,
11368    #[prost(uint32, optional, tag="9")]
11369    pub r#type: ::core::option::Option<u32>,
11370    #[prost(uint32, optional, tag="10")]
11371    pub enqueue: ::core::option::Option<u32>,
11372    #[prost(uint32, optional, tag="11")]
11373    pub dequeue: ::core::option::Option<u32>,
11374}
11375#[derive(Clone, PartialEq, ::prost::Message)]
11376pub struct Dwc3CtrlReqFtraceEvent {
11377    #[prost(uint32, optional, tag="1")]
11378    pub b_request_type: ::core::option::Option<u32>,
11379    #[prost(uint32, optional, tag="2")]
11380    pub b_request: ::core::option::Option<u32>,
11381    #[prost(uint32, optional, tag="3")]
11382    pub w_value: ::core::option::Option<u32>,
11383    #[prost(uint32, optional, tag="4")]
11384    pub w_index: ::core::option::Option<u32>,
11385    #[prost(uint32, optional, tag="5")]
11386    pub w_length: ::core::option::Option<u32>,
11387    #[prost(string, optional, tag="6")]
11388    pub str: ::core::option::Option<::prost::alloc::string::String>,
11389}
11390#[derive(Clone, PartialEq, ::prost::Message)]
11391pub struct Dwc3EpDequeueFtraceEvent {
11392    #[prost(string, optional, tag="1")]
11393    pub name: ::core::option::Option<::prost::alloc::string::String>,
11394    #[prost(uint64, optional, tag="2")]
11395    pub req: ::core::option::Option<u64>,
11396    #[prost(uint32, optional, tag="3")]
11397    pub actual: ::core::option::Option<u32>,
11398    #[prost(uint32, optional, tag="4")]
11399    pub length: ::core::option::Option<u32>,
11400    #[prost(int32, optional, tag="5")]
11401    pub status: ::core::option::Option<i32>,
11402    #[prost(int32, optional, tag="6")]
11403    pub zero: ::core::option::Option<i32>,
11404    #[prost(int32, optional, tag="7")]
11405    pub short_not_ok: ::core::option::Option<i32>,
11406    #[prost(int32, optional, tag="8")]
11407    pub no_interrupt: ::core::option::Option<i32>,
11408}
11409#[derive(Clone, PartialEq, ::prost::Message)]
11410pub struct Dwc3EpQueueFtraceEvent {
11411    #[prost(string, optional, tag="1")]
11412    pub name: ::core::option::Option<::prost::alloc::string::String>,
11413    #[prost(uint64, optional, tag="2")]
11414    pub req: ::core::option::Option<u64>,
11415    #[prost(uint32, optional, tag="3")]
11416    pub actual: ::core::option::Option<u32>,
11417    #[prost(uint32, optional, tag="4")]
11418    pub length: ::core::option::Option<u32>,
11419    #[prost(int32, optional, tag="5")]
11420    pub status: ::core::option::Option<i32>,
11421    #[prost(int32, optional, tag="6")]
11422    pub zero: ::core::option::Option<i32>,
11423    #[prost(int32, optional, tag="7")]
11424    pub short_not_ok: ::core::option::Option<i32>,
11425    #[prost(int32, optional, tag="8")]
11426    pub no_interrupt: ::core::option::Option<i32>,
11427}
11428#[derive(Clone, PartialEq, ::prost::Message)]
11429pub struct Dwc3EventFtraceEvent {
11430    #[prost(uint32, optional, tag="1")]
11431    pub event: ::core::option::Option<u32>,
11432    #[prost(uint32, optional, tag="2")]
11433    pub ep0state: ::core::option::Option<u32>,
11434    #[prost(string, optional, tag="3")]
11435    pub str: ::core::option::Option<::prost::alloc::string::String>,
11436}
11437#[derive(Clone, PartialEq, ::prost::Message)]
11438pub struct Dwc3FreeRequestFtraceEvent {
11439    #[prost(string, optional, tag="1")]
11440    pub name: ::core::option::Option<::prost::alloc::string::String>,
11441    #[prost(uint64, optional, tag="2")]
11442    pub req: ::core::option::Option<u64>,
11443    #[prost(uint32, optional, tag="3")]
11444    pub actual: ::core::option::Option<u32>,
11445    #[prost(uint32, optional, tag="4")]
11446    pub length: ::core::option::Option<u32>,
11447    #[prost(int32, optional, tag="5")]
11448    pub status: ::core::option::Option<i32>,
11449    #[prost(int32, optional, tag="6")]
11450    pub zero: ::core::option::Option<i32>,
11451    #[prost(int32, optional, tag="7")]
11452    pub short_not_ok: ::core::option::Option<i32>,
11453    #[prost(int32, optional, tag="8")]
11454    pub no_interrupt: ::core::option::Option<i32>,
11455}
11456#[derive(Clone, PartialEq, ::prost::Message)]
11457pub struct Dwc3GadgetEpCmdFtraceEvent {
11458    #[prost(string, optional, tag="1")]
11459    pub name: ::core::option::Option<::prost::alloc::string::String>,
11460    #[prost(uint32, optional, tag="2")]
11461    pub cmd: ::core::option::Option<u32>,
11462    #[prost(uint32, optional, tag="3")]
11463    pub param0: ::core::option::Option<u32>,
11464    #[prost(uint32, optional, tag="4")]
11465    pub param1: ::core::option::Option<u32>,
11466    #[prost(uint32, optional, tag="5")]
11467    pub param2: ::core::option::Option<u32>,
11468    #[prost(int32, optional, tag="6")]
11469    pub cmd_status: ::core::option::Option<i32>,
11470}
11471#[derive(Clone, PartialEq, ::prost::Message)]
11472pub struct Dwc3GadgetEpDisableFtraceEvent {
11473    #[prost(string, optional, tag="1")]
11474    pub name: ::core::option::Option<::prost::alloc::string::String>,
11475    #[prost(uint32, optional, tag="2")]
11476    pub maxpacket: ::core::option::Option<u32>,
11477    #[prost(uint32, optional, tag="3")]
11478    pub maxpacket_limit: ::core::option::Option<u32>,
11479    #[prost(uint32, optional, tag="4")]
11480    pub max_streams: ::core::option::Option<u32>,
11481    #[prost(uint32, optional, tag="5")]
11482    pub maxburst: ::core::option::Option<u32>,
11483    #[prost(uint32, optional, tag="6")]
11484    pub flags: ::core::option::Option<u32>,
11485    #[prost(uint32, optional, tag="7")]
11486    pub direction: ::core::option::Option<u32>,
11487    #[prost(uint32, optional, tag="8")]
11488    pub trb_enqueue: ::core::option::Option<u32>,
11489    #[prost(uint32, optional, tag="9")]
11490    pub trb_dequeue: ::core::option::Option<u32>,
11491}
11492#[derive(Clone, PartialEq, ::prost::Message)]
11493pub struct Dwc3GadgetEpEnableFtraceEvent {
11494    #[prost(string, optional, tag="1")]
11495    pub name: ::core::option::Option<::prost::alloc::string::String>,
11496    #[prost(uint32, optional, tag="2")]
11497    pub maxpacket: ::core::option::Option<u32>,
11498    #[prost(uint32, optional, tag="3")]
11499    pub maxpacket_limit: ::core::option::Option<u32>,
11500    #[prost(uint32, optional, tag="4")]
11501    pub max_streams: ::core::option::Option<u32>,
11502    #[prost(uint32, optional, tag="5")]
11503    pub maxburst: ::core::option::Option<u32>,
11504    #[prost(uint32, optional, tag="6")]
11505    pub flags: ::core::option::Option<u32>,
11506    #[prost(uint32, optional, tag="7")]
11507    pub direction: ::core::option::Option<u32>,
11508    #[prost(uint32, optional, tag="8")]
11509    pub trb_enqueue: ::core::option::Option<u32>,
11510    #[prost(uint32, optional, tag="9")]
11511    pub trb_dequeue: ::core::option::Option<u32>,
11512}
11513#[derive(Clone, PartialEq, ::prost::Message)]
11514pub struct Dwc3GadgetGenericCmdFtraceEvent {
11515    #[prost(uint32, optional, tag="1")]
11516    pub cmd: ::core::option::Option<u32>,
11517    #[prost(uint32, optional, tag="2")]
11518    pub param: ::core::option::Option<u32>,
11519    #[prost(int32, optional, tag="3")]
11520    pub status: ::core::option::Option<i32>,
11521}
11522#[derive(Clone, PartialEq, ::prost::Message)]
11523pub struct Dwc3GadgetGivebackFtraceEvent {
11524    #[prost(string, optional, tag="1")]
11525    pub name: ::core::option::Option<::prost::alloc::string::String>,
11526    #[prost(uint64, optional, tag="2")]
11527    pub req: ::core::option::Option<u64>,
11528    #[prost(uint32, optional, tag="3")]
11529    pub actual: ::core::option::Option<u32>,
11530    #[prost(uint32, optional, tag="4")]
11531    pub length: ::core::option::Option<u32>,
11532    #[prost(int32, optional, tag="5")]
11533    pub status: ::core::option::Option<i32>,
11534    #[prost(int32, optional, tag="6")]
11535    pub zero: ::core::option::Option<i32>,
11536    #[prost(int32, optional, tag="7")]
11537    pub short_not_ok: ::core::option::Option<i32>,
11538    #[prost(int32, optional, tag="8")]
11539    pub no_interrupt: ::core::option::Option<i32>,
11540}
11541#[derive(Clone, PartialEq, ::prost::Message)]
11542pub struct Dwc3PrepareTrbFtraceEvent {
11543    #[prost(string, optional, tag="1")]
11544    pub name: ::core::option::Option<::prost::alloc::string::String>,
11545    #[prost(uint64, optional, tag="2")]
11546    pub trb: ::core::option::Option<u64>,
11547    #[prost(uint32, optional, tag="3")]
11548    pub allocated: ::core::option::Option<u32>,
11549    #[prost(uint32, optional, tag="4")]
11550    pub queued: ::core::option::Option<u32>,
11551    #[prost(uint32, optional, tag="5")]
11552    pub bpl: ::core::option::Option<u32>,
11553    #[prost(uint32, optional, tag="6")]
11554    pub bph: ::core::option::Option<u32>,
11555    #[prost(uint32, optional, tag="7")]
11556    pub size: ::core::option::Option<u32>,
11557    #[prost(uint32, optional, tag="8")]
11558    pub ctrl: ::core::option::Option<u32>,
11559    #[prost(uint32, optional, tag="9")]
11560    pub r#type: ::core::option::Option<u32>,
11561    #[prost(uint32, optional, tag="10")]
11562    pub enqueue: ::core::option::Option<u32>,
11563    #[prost(uint32, optional, tag="11")]
11564    pub dequeue: ::core::option::Option<u32>,
11565}
11566#[derive(Clone, PartialEq, ::prost::Message)]
11567pub struct Dwc3ReadlFtraceEvent {
11568    #[prost(uint64, optional, tag="1")]
11569    pub base: ::core::option::Option<u64>,
11570    #[prost(uint32, optional, tag="2")]
11571    pub offset: ::core::option::Option<u32>,
11572    #[prost(uint32, optional, tag="3")]
11573    pub value: ::core::option::Option<u32>,
11574    #[prost(string, optional, tag="4")]
11575    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11576}
11577#[derive(Clone, PartialEq, ::prost::Message)]
11578pub struct Dwc3WritelFtraceEvent {
11579    #[prost(uint64, optional, tag="1")]
11580    pub base: ::core::option::Option<u64>,
11581    #[prost(uint32, optional, tag="2")]
11582    pub offset: ::core::option::Option<u32>,
11583    #[prost(uint32, optional, tag="3")]
11584    pub value: ::core::option::Option<u32>,
11585    #[prost(string, optional, tag="4")]
11586    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11587}
11588// End of protos/perfetto/trace/ftrace/dwc3.proto
11589
11590// Begin of protos/perfetto/trace/ftrace/ext4.proto
11591
11592#[derive(Clone, PartialEq, ::prost::Message)]
11593pub struct Ext4DaWriteBeginFtraceEvent {
11594    #[prost(uint64, optional, tag="1")]
11595    pub dev: ::core::option::Option<u64>,
11596    #[prost(uint64, optional, tag="2")]
11597    pub ino: ::core::option::Option<u64>,
11598    #[prost(int64, optional, tag="3")]
11599    pub pos: ::core::option::Option<i64>,
11600    #[prost(uint32, optional, tag="4")]
11601    pub len: ::core::option::Option<u32>,
11602    #[prost(uint32, optional, tag="5")]
11603    pub flags: ::core::option::Option<u32>,
11604}
11605#[derive(Clone, PartialEq, ::prost::Message)]
11606pub struct Ext4DaWriteEndFtraceEvent {
11607    #[prost(uint64, optional, tag="1")]
11608    pub dev: ::core::option::Option<u64>,
11609    #[prost(uint64, optional, tag="2")]
11610    pub ino: ::core::option::Option<u64>,
11611    #[prost(int64, optional, tag="3")]
11612    pub pos: ::core::option::Option<i64>,
11613    #[prost(uint32, optional, tag="4")]
11614    pub len: ::core::option::Option<u32>,
11615    #[prost(uint32, optional, tag="5")]
11616    pub copied: ::core::option::Option<u32>,
11617}
11618#[derive(Clone, PartialEq, ::prost::Message)]
11619pub struct Ext4SyncFileEnterFtraceEvent {
11620    #[prost(uint64, optional, tag="1")]
11621    pub dev: ::core::option::Option<u64>,
11622    #[prost(uint64, optional, tag="2")]
11623    pub ino: ::core::option::Option<u64>,
11624    #[prost(uint64, optional, tag="3")]
11625    pub parent: ::core::option::Option<u64>,
11626    #[prost(int32, optional, tag="4")]
11627    pub datasync: ::core::option::Option<i32>,
11628}
11629#[derive(Clone, PartialEq, ::prost::Message)]
11630pub struct Ext4SyncFileExitFtraceEvent {
11631    #[prost(uint64, optional, tag="1")]
11632    pub dev: ::core::option::Option<u64>,
11633    #[prost(uint64, optional, tag="2")]
11634    pub ino: ::core::option::Option<u64>,
11635    #[prost(int32, optional, tag="3")]
11636    pub ret: ::core::option::Option<i32>,
11637}
11638#[derive(Clone, PartialEq, ::prost::Message)]
11639pub struct Ext4AllocDaBlocksFtraceEvent {
11640    #[prost(uint64, optional, tag="1")]
11641    pub dev: ::core::option::Option<u64>,
11642    #[prost(uint64, optional, tag="2")]
11643    pub ino: ::core::option::Option<u64>,
11644    #[prost(uint32, optional, tag="3")]
11645    pub data_blocks: ::core::option::Option<u32>,
11646    #[prost(uint32, optional, tag="4")]
11647    pub meta_blocks: ::core::option::Option<u32>,
11648}
11649#[derive(Clone, PartialEq, ::prost::Message)]
11650pub struct Ext4AllocateBlocksFtraceEvent {
11651    #[prost(uint64, optional, tag="1")]
11652    pub dev: ::core::option::Option<u64>,
11653    #[prost(uint64, optional, tag="2")]
11654    pub ino: ::core::option::Option<u64>,
11655    #[prost(uint64, optional, tag="3")]
11656    pub block: ::core::option::Option<u64>,
11657    #[prost(uint32, optional, tag="4")]
11658    pub len: ::core::option::Option<u32>,
11659    #[prost(uint32, optional, tag="5")]
11660    pub logical: ::core::option::Option<u32>,
11661    #[prost(uint32, optional, tag="6")]
11662    pub lleft: ::core::option::Option<u32>,
11663    #[prost(uint32, optional, tag="7")]
11664    pub lright: ::core::option::Option<u32>,
11665    #[prost(uint64, optional, tag="8")]
11666    pub goal: ::core::option::Option<u64>,
11667    #[prost(uint64, optional, tag="9")]
11668    pub pleft: ::core::option::Option<u64>,
11669    #[prost(uint64, optional, tag="10")]
11670    pub pright: ::core::option::Option<u64>,
11671    #[prost(uint32, optional, tag="11")]
11672    pub flags: ::core::option::Option<u32>,
11673}
11674#[derive(Clone, PartialEq, ::prost::Message)]
11675pub struct Ext4AllocateInodeFtraceEvent {
11676    #[prost(uint64, optional, tag="1")]
11677    pub dev: ::core::option::Option<u64>,
11678    #[prost(uint64, optional, tag="2")]
11679    pub ino: ::core::option::Option<u64>,
11680    #[prost(uint64, optional, tag="3")]
11681    pub dir: ::core::option::Option<u64>,
11682    #[prost(uint32, optional, tag="4")]
11683    pub mode: ::core::option::Option<u32>,
11684}
11685#[derive(Clone, PartialEq, ::prost::Message)]
11686pub struct Ext4BeginOrderedTruncateFtraceEvent {
11687    #[prost(uint64, optional, tag="1")]
11688    pub dev: ::core::option::Option<u64>,
11689    #[prost(uint64, optional, tag="2")]
11690    pub ino: ::core::option::Option<u64>,
11691    #[prost(int64, optional, tag="3")]
11692    pub new_size: ::core::option::Option<i64>,
11693}
11694#[derive(Clone, PartialEq, ::prost::Message)]
11695pub struct Ext4CollapseRangeFtraceEvent {
11696    #[prost(uint64, optional, tag="1")]
11697    pub dev: ::core::option::Option<u64>,
11698    #[prost(uint64, optional, tag="2")]
11699    pub ino: ::core::option::Option<u64>,
11700    #[prost(int64, optional, tag="3")]
11701    pub offset: ::core::option::Option<i64>,
11702    #[prost(int64, optional, tag="4")]
11703    pub len: ::core::option::Option<i64>,
11704}
11705#[derive(Clone, PartialEq, ::prost::Message)]
11706pub struct Ext4DaReleaseSpaceFtraceEvent {
11707    #[prost(uint64, optional, tag="1")]
11708    pub dev: ::core::option::Option<u64>,
11709    #[prost(uint64, optional, tag="2")]
11710    pub ino: ::core::option::Option<u64>,
11711    #[prost(uint64, optional, tag="3")]
11712    pub i_blocks: ::core::option::Option<u64>,
11713    #[prost(int32, optional, tag="4")]
11714    pub freed_blocks: ::core::option::Option<i32>,
11715    #[prost(int32, optional, tag="5")]
11716    pub reserved_data_blocks: ::core::option::Option<i32>,
11717    #[prost(int32, optional, tag="6")]
11718    pub reserved_meta_blocks: ::core::option::Option<i32>,
11719    #[prost(int32, optional, tag="7")]
11720    pub allocated_meta_blocks: ::core::option::Option<i32>,
11721    #[prost(uint32, optional, tag="8")]
11722    pub mode: ::core::option::Option<u32>,
11723}
11724#[derive(Clone, PartialEq, ::prost::Message)]
11725pub struct Ext4DaReserveSpaceFtraceEvent {
11726    #[prost(uint64, optional, tag="1")]
11727    pub dev: ::core::option::Option<u64>,
11728    #[prost(uint64, optional, tag="2")]
11729    pub ino: ::core::option::Option<u64>,
11730    #[prost(uint64, optional, tag="3")]
11731    pub i_blocks: ::core::option::Option<u64>,
11732    #[prost(int32, optional, tag="4")]
11733    pub reserved_data_blocks: ::core::option::Option<i32>,
11734    #[prost(int32, optional, tag="5")]
11735    pub reserved_meta_blocks: ::core::option::Option<i32>,
11736    #[prost(uint32, optional, tag="6")]
11737    pub mode: ::core::option::Option<u32>,
11738    #[prost(int32, optional, tag="7")]
11739    pub md_needed: ::core::option::Option<i32>,
11740}
11741#[derive(Clone, PartialEq, ::prost::Message)]
11742pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
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 i_blocks: ::core::option::Option<u64>,
11749    #[prost(int32, optional, tag="4")]
11750    pub used_blocks: ::core::option::Option<i32>,
11751    #[prost(int32, optional, tag="5")]
11752    pub reserved_data_blocks: ::core::option::Option<i32>,
11753    #[prost(int32, optional, tag="6")]
11754    pub reserved_meta_blocks: ::core::option::Option<i32>,
11755    #[prost(int32, optional, tag="7")]
11756    pub allocated_meta_blocks: ::core::option::Option<i32>,
11757    #[prost(int32, optional, tag="8")]
11758    pub quota_claim: ::core::option::Option<i32>,
11759    #[prost(uint32, optional, tag="9")]
11760    pub mode: ::core::option::Option<u32>,
11761}
11762#[derive(Clone, PartialEq, ::prost::Message)]
11763pub struct Ext4DaWritePagesFtraceEvent {
11764    #[prost(uint64, optional, tag="1")]
11765    pub dev: ::core::option::Option<u64>,
11766    #[prost(uint64, optional, tag="2")]
11767    pub ino: ::core::option::Option<u64>,
11768    #[prost(uint64, optional, tag="3")]
11769    pub first_page: ::core::option::Option<u64>,
11770    #[prost(int64, optional, tag="4")]
11771    pub nr_to_write: ::core::option::Option<i64>,
11772    #[prost(int32, optional, tag="5")]
11773    pub sync_mode: ::core::option::Option<i32>,
11774    #[prost(uint64, optional, tag="6")]
11775    pub b_blocknr: ::core::option::Option<u64>,
11776    #[prost(uint32, optional, tag="7")]
11777    pub b_size: ::core::option::Option<u32>,
11778    #[prost(uint32, optional, tag="8")]
11779    pub b_state: ::core::option::Option<u32>,
11780    #[prost(int32, optional, tag="9")]
11781    pub io_done: ::core::option::Option<i32>,
11782    #[prost(int32, optional, tag="10")]
11783    pub pages_written: ::core::option::Option<i32>,
11784}
11785#[derive(Clone, PartialEq, ::prost::Message)]
11786pub struct Ext4DaWritePagesExtentFtraceEvent {
11787    #[prost(uint64, optional, tag="1")]
11788    pub dev: ::core::option::Option<u64>,
11789    #[prost(uint64, optional, tag="2")]
11790    pub ino: ::core::option::Option<u64>,
11791    #[prost(uint64, optional, tag="3")]
11792    pub lblk: ::core::option::Option<u64>,
11793    #[prost(uint32, optional, tag="4")]
11794    pub len: ::core::option::Option<u32>,
11795    #[prost(uint32, optional, tag="5")]
11796    pub flags: ::core::option::Option<u32>,
11797}
11798#[derive(Clone, PartialEq, ::prost::Message)]
11799pub struct Ext4DirectIoEnterFtraceEvent {
11800    #[prost(uint64, optional, tag="1")]
11801    pub dev: ::core::option::Option<u64>,
11802    #[prost(uint64, optional, tag="2")]
11803    pub ino: ::core::option::Option<u64>,
11804    #[prost(int64, optional, tag="3")]
11805    pub pos: ::core::option::Option<i64>,
11806    #[prost(uint64, optional, tag="4")]
11807    pub len: ::core::option::Option<u64>,
11808    #[prost(int32, optional, tag="5")]
11809    pub rw: ::core::option::Option<i32>,
11810}
11811#[derive(Clone, PartialEq, ::prost::Message)]
11812pub struct Ext4DirectIoExitFtraceEvent {
11813    #[prost(uint64, optional, tag="1")]
11814    pub dev: ::core::option::Option<u64>,
11815    #[prost(uint64, optional, tag="2")]
11816    pub ino: ::core::option::Option<u64>,
11817    #[prost(int64, optional, tag="3")]
11818    pub pos: ::core::option::Option<i64>,
11819    #[prost(uint64, optional, tag="4")]
11820    pub len: ::core::option::Option<u64>,
11821    #[prost(int32, optional, tag="5")]
11822    pub rw: ::core::option::Option<i32>,
11823    #[prost(int32, optional, tag="6")]
11824    pub ret: ::core::option::Option<i32>,
11825}
11826#[derive(Clone, PartialEq, ::prost::Message)]
11827pub struct Ext4DiscardBlocksFtraceEvent {
11828    #[prost(uint64, optional, tag="1")]
11829    pub dev: ::core::option::Option<u64>,
11830    #[prost(uint64, optional, tag="2")]
11831    pub blk: ::core::option::Option<u64>,
11832    #[prost(uint64, optional, tag="3")]
11833    pub count: ::core::option::Option<u64>,
11834}
11835#[derive(Clone, PartialEq, ::prost::Message)]
11836pub struct Ext4DiscardPreallocationsFtraceEvent {
11837    #[prost(uint64, optional, tag="1")]
11838    pub dev: ::core::option::Option<u64>,
11839    #[prost(uint64, optional, tag="2")]
11840    pub ino: ::core::option::Option<u64>,
11841    #[prost(uint32, optional, tag="3")]
11842    pub len: ::core::option::Option<u32>,
11843    #[prost(uint32, optional, tag="4")]
11844    pub needed: ::core::option::Option<u32>,
11845}
11846#[derive(Clone, PartialEq, ::prost::Message)]
11847pub struct Ext4DropInodeFtraceEvent {
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 drop: ::core::option::Option<i32>,
11854}
11855#[derive(Clone, PartialEq, ::prost::Message)]
11856pub struct Ext4EsCacheExtentFtraceEvent {
11857    #[prost(uint64, optional, tag="1")]
11858    pub dev: ::core::option::Option<u64>,
11859    #[prost(uint64, optional, tag="2")]
11860    pub ino: ::core::option::Option<u64>,
11861    #[prost(uint32, optional, tag="3")]
11862    pub lblk: ::core::option::Option<u32>,
11863    #[prost(uint32, optional, tag="4")]
11864    pub len: ::core::option::Option<u32>,
11865    #[prost(uint64, optional, tag="5")]
11866    pub pblk: ::core::option::Option<u64>,
11867    #[prost(uint32, optional, tag="6")]
11868    pub status: ::core::option::Option<u32>,
11869}
11870#[derive(Clone, PartialEq, ::prost::Message)]
11871pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
11872    #[prost(uint64, optional, tag="1")]
11873    pub dev: ::core::option::Option<u64>,
11874    #[prost(uint64, optional, tag="2")]
11875    pub ino: ::core::option::Option<u64>,
11876    #[prost(uint32, optional, tag="3")]
11877    pub lblk: ::core::option::Option<u32>,
11878}
11879#[derive(Clone, PartialEq, ::prost::Message)]
11880pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
11881    #[prost(uint64, optional, tag="1")]
11882    pub dev: ::core::option::Option<u64>,
11883    #[prost(uint64, optional, tag="2")]
11884    pub ino: ::core::option::Option<u64>,
11885    #[prost(uint32, optional, tag="3")]
11886    pub lblk: ::core::option::Option<u32>,
11887    #[prost(uint32, optional, tag="4")]
11888    pub len: ::core::option::Option<u32>,
11889    #[prost(uint64, optional, tag="5")]
11890    pub pblk: ::core::option::Option<u64>,
11891    #[prost(uint64, optional, tag="6")]
11892    pub status: ::core::option::Option<u64>,
11893}
11894#[derive(Clone, PartialEq, ::prost::Message)]
11895pub struct Ext4EsInsertExtentFtraceEvent {
11896    #[prost(uint64, optional, tag="1")]
11897    pub dev: ::core::option::Option<u64>,
11898    #[prost(uint64, optional, tag="2")]
11899    pub ino: ::core::option::Option<u64>,
11900    #[prost(uint32, optional, tag="3")]
11901    pub lblk: ::core::option::Option<u32>,
11902    #[prost(uint32, optional, tag="4")]
11903    pub len: ::core::option::Option<u32>,
11904    #[prost(uint64, optional, tag="5")]
11905    pub pblk: ::core::option::Option<u64>,
11906    #[prost(uint64, optional, tag="6")]
11907    pub status: ::core::option::Option<u64>,
11908}
11909#[derive(Clone, PartialEq, ::prost::Message)]
11910pub struct Ext4EsLookupExtentEnterFtraceEvent {
11911    #[prost(uint64, optional, tag="1")]
11912    pub dev: ::core::option::Option<u64>,
11913    #[prost(uint64, optional, tag="2")]
11914    pub ino: ::core::option::Option<u64>,
11915    #[prost(uint32, optional, tag="3")]
11916    pub lblk: ::core::option::Option<u32>,
11917}
11918#[derive(Clone, PartialEq, ::prost::Message)]
11919pub struct Ext4EsLookupExtentExitFtraceEvent {
11920    #[prost(uint64, optional, tag="1")]
11921    pub dev: ::core::option::Option<u64>,
11922    #[prost(uint64, optional, tag="2")]
11923    pub ino: ::core::option::Option<u64>,
11924    #[prost(uint32, optional, tag="3")]
11925    pub lblk: ::core::option::Option<u32>,
11926    #[prost(uint32, optional, tag="4")]
11927    pub len: ::core::option::Option<u32>,
11928    #[prost(uint64, optional, tag="5")]
11929    pub pblk: ::core::option::Option<u64>,
11930    #[prost(uint64, optional, tag="6")]
11931    pub status: ::core::option::Option<u64>,
11932    #[prost(int32, optional, tag="7")]
11933    pub found: ::core::option::Option<i32>,
11934}
11935#[derive(Clone, PartialEq, ::prost::Message)]
11936pub struct Ext4EsRemoveExtentFtraceEvent {
11937    #[prost(uint64, optional, tag="1")]
11938    pub dev: ::core::option::Option<u64>,
11939    #[prost(uint64, optional, tag="2")]
11940    pub ino: ::core::option::Option<u64>,
11941    #[prost(int64, optional, tag="3")]
11942    pub lblk: ::core::option::Option<i64>,
11943    #[prost(int64, optional, tag="4")]
11944    pub len: ::core::option::Option<i64>,
11945}
11946#[derive(Clone, PartialEq, ::prost::Message)]
11947pub struct Ext4EsShrinkFtraceEvent {
11948    #[prost(uint64, optional, tag="1")]
11949    pub dev: ::core::option::Option<u64>,
11950    #[prost(int32, optional, tag="2")]
11951    pub nr_shrunk: ::core::option::Option<i32>,
11952    #[prost(uint64, optional, tag="3")]
11953    pub scan_time: ::core::option::Option<u64>,
11954    #[prost(int32, optional, tag="4")]
11955    pub nr_skipped: ::core::option::Option<i32>,
11956    #[prost(int32, optional, tag="5")]
11957    pub retried: ::core::option::Option<i32>,
11958}
11959#[derive(Clone, PartialEq, ::prost::Message)]
11960pub struct Ext4EsShrinkCountFtraceEvent {
11961    #[prost(uint64, optional, tag="1")]
11962    pub dev: ::core::option::Option<u64>,
11963    #[prost(int32, optional, tag="2")]
11964    pub nr_to_scan: ::core::option::Option<i32>,
11965    #[prost(int32, optional, tag="3")]
11966    pub cache_cnt: ::core::option::Option<i32>,
11967}
11968#[derive(Clone, PartialEq, ::prost::Message)]
11969pub struct Ext4EsShrinkScanEnterFtraceEvent {
11970    #[prost(uint64, optional, tag="1")]
11971    pub dev: ::core::option::Option<u64>,
11972    #[prost(int32, optional, tag="2")]
11973    pub nr_to_scan: ::core::option::Option<i32>,
11974    #[prost(int32, optional, tag="3")]
11975    pub cache_cnt: ::core::option::Option<i32>,
11976}
11977#[derive(Clone, PartialEq, ::prost::Message)]
11978pub struct Ext4EsShrinkScanExitFtraceEvent {
11979    #[prost(uint64, optional, tag="1")]
11980    pub dev: ::core::option::Option<u64>,
11981    #[prost(int32, optional, tag="2")]
11982    pub nr_shrunk: ::core::option::Option<i32>,
11983    #[prost(int32, optional, tag="3")]
11984    pub cache_cnt: ::core::option::Option<i32>,
11985}
11986#[derive(Clone, PartialEq, ::prost::Message)]
11987pub struct Ext4EvictInodeFtraceEvent {
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 nlink: ::core::option::Option<i32>,
11994}
11995#[derive(Clone, PartialEq, ::prost::Message)]
11996pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
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 m_lblk: ::core::option::Option<u32>,
12003    #[prost(uint32, optional, tag="4")]
12004    pub m_len: ::core::option::Option<u32>,
12005    #[prost(uint32, optional, tag="5")]
12006    pub u_lblk: ::core::option::Option<u32>,
12007    #[prost(uint32, optional, tag="6")]
12008    pub u_len: ::core::option::Option<u32>,
12009    #[prost(uint64, optional, tag="7")]
12010    pub u_pblk: ::core::option::Option<u64>,
12011}
12012#[derive(Clone, PartialEq, ::prost::Message)]
12013pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
12014    #[prost(uint64, optional, tag="1")]
12015    pub dev: ::core::option::Option<u64>,
12016    #[prost(uint64, optional, tag="2")]
12017    pub ino: ::core::option::Option<u64>,
12018    #[prost(uint32, optional, tag="3")]
12019    pub m_lblk: ::core::option::Option<u32>,
12020    #[prost(uint32, optional, tag="4")]
12021    pub m_len: ::core::option::Option<u32>,
12022    #[prost(uint32, optional, tag="5")]
12023    pub u_lblk: ::core::option::Option<u32>,
12024    #[prost(uint32, optional, tag="6")]
12025    pub u_len: ::core::option::Option<u32>,
12026    #[prost(uint64, optional, tag="7")]
12027    pub u_pblk: ::core::option::Option<u64>,
12028    #[prost(uint32, optional, tag="8")]
12029    pub i_lblk: ::core::option::Option<u32>,
12030    #[prost(uint32, optional, tag="9")]
12031    pub i_len: ::core::option::Option<u32>,
12032    #[prost(uint64, optional, tag="10")]
12033    pub i_pblk: ::core::option::Option<u64>,
12034}
12035#[derive(Clone, PartialEq, ::prost::Message)]
12036pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
12037    #[prost(uint64, optional, tag="1")]
12038    pub dev: ::core::option::Option<u64>,
12039    #[prost(uint64, optional, tag="2")]
12040    pub ino: ::core::option::Option<u64>,
12041    #[prost(int32, optional, tag="3")]
12042    pub flags: ::core::option::Option<i32>,
12043    #[prost(uint32, optional, tag="4")]
12044    pub lblk: ::core::option::Option<u32>,
12045    #[prost(uint64, optional, tag="5")]
12046    pub pblk: ::core::option::Option<u64>,
12047    #[prost(uint32, optional, tag="6")]
12048    pub len: ::core::option::Option<u32>,
12049    #[prost(uint32, optional, tag="7")]
12050    pub allocated: ::core::option::Option<u32>,
12051    #[prost(uint64, optional, tag="8")]
12052    pub newblk: ::core::option::Option<u64>,
12053}
12054#[derive(Clone, PartialEq, ::prost::Message)]
12055pub struct Ext4ExtInCacheFtraceEvent {
12056    #[prost(uint64, optional, tag="1")]
12057    pub dev: ::core::option::Option<u64>,
12058    #[prost(uint64, optional, tag="2")]
12059    pub ino: ::core::option::Option<u64>,
12060    #[prost(uint32, optional, tag="3")]
12061    pub lblk: ::core::option::Option<u32>,
12062    #[prost(int32, optional, tag="4")]
12063    pub ret: ::core::option::Option<i32>,
12064}
12065#[derive(Clone, PartialEq, ::prost::Message)]
12066pub struct Ext4ExtLoadExtentFtraceEvent {
12067    #[prost(uint64, optional, tag="1")]
12068    pub dev: ::core::option::Option<u64>,
12069    #[prost(uint64, optional, tag="2")]
12070    pub ino: ::core::option::Option<u64>,
12071    #[prost(uint64, optional, tag="3")]
12072    pub pblk: ::core::option::Option<u64>,
12073    #[prost(uint32, optional, tag="4")]
12074    pub lblk: ::core::option::Option<u32>,
12075}
12076#[derive(Clone, PartialEq, ::prost::Message)]
12077pub struct Ext4ExtMapBlocksEnterFtraceEvent {
12078    #[prost(uint64, optional, tag="1")]
12079    pub dev: ::core::option::Option<u64>,
12080    #[prost(uint64, optional, tag="2")]
12081    pub ino: ::core::option::Option<u64>,
12082    #[prost(uint32, optional, tag="3")]
12083    pub lblk: ::core::option::Option<u32>,
12084    #[prost(uint32, optional, tag="4")]
12085    pub len: ::core::option::Option<u32>,
12086    #[prost(uint32, optional, tag="5")]
12087    pub flags: ::core::option::Option<u32>,
12088}
12089#[derive(Clone, PartialEq, ::prost::Message)]
12090pub struct Ext4ExtMapBlocksExitFtraceEvent {
12091    #[prost(uint64, optional, tag="1")]
12092    pub dev: ::core::option::Option<u64>,
12093    #[prost(uint64, optional, tag="2")]
12094    pub ino: ::core::option::Option<u64>,
12095    #[prost(uint32, optional, tag="3")]
12096    pub flags: ::core::option::Option<u32>,
12097    #[prost(uint64, optional, tag="4")]
12098    pub pblk: ::core::option::Option<u64>,
12099    #[prost(uint32, optional, tag="5")]
12100    pub lblk: ::core::option::Option<u32>,
12101    #[prost(uint32, optional, tag="6")]
12102    pub len: ::core::option::Option<u32>,
12103    #[prost(uint32, optional, tag="7")]
12104    pub mflags: ::core::option::Option<u32>,
12105    #[prost(int32, optional, tag="8")]
12106    pub ret: ::core::option::Option<i32>,
12107}
12108#[derive(Clone, PartialEq, ::prost::Message)]
12109pub struct Ext4ExtPutInCacheFtraceEvent {
12110    #[prost(uint64, optional, tag="1")]
12111    pub dev: ::core::option::Option<u64>,
12112    #[prost(uint64, optional, tag="2")]
12113    pub ino: ::core::option::Option<u64>,
12114    #[prost(uint32, optional, tag="3")]
12115    pub lblk: ::core::option::Option<u32>,
12116    #[prost(uint32, optional, tag="4")]
12117    pub len: ::core::option::Option<u32>,
12118    #[prost(uint64, optional, tag="5")]
12119    pub start: ::core::option::Option<u64>,
12120}
12121#[derive(Clone, PartialEq, ::prost::Message)]
12122pub struct Ext4ExtRemoveSpaceFtraceEvent {
12123    #[prost(uint64, optional, tag="1")]
12124    pub dev: ::core::option::Option<u64>,
12125    #[prost(uint64, optional, tag="2")]
12126    pub ino: ::core::option::Option<u64>,
12127    #[prost(uint32, optional, tag="3")]
12128    pub start: ::core::option::Option<u32>,
12129    #[prost(uint32, optional, tag="4")]
12130    pub end: ::core::option::Option<u32>,
12131    #[prost(int32, optional, tag="5")]
12132    pub depth: ::core::option::Option<i32>,
12133}
12134#[derive(Clone, PartialEq, ::prost::Message)]
12135pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
12136    #[prost(uint64, optional, tag="1")]
12137    pub dev: ::core::option::Option<u64>,
12138    #[prost(uint64, optional, tag="2")]
12139    pub ino: ::core::option::Option<u64>,
12140    #[prost(uint32, optional, tag="3")]
12141    pub start: ::core::option::Option<u32>,
12142    #[prost(uint32, optional, tag="4")]
12143    pub end: ::core::option::Option<u32>,
12144    #[prost(int32, optional, tag="5")]
12145    pub depth: ::core::option::Option<i32>,
12146    #[prost(int64, optional, tag="6")]
12147    pub partial: ::core::option::Option<i64>,
12148    #[prost(uint32, optional, tag="7")]
12149    pub eh_entries: ::core::option::Option<u32>,
12150    #[prost(uint32, optional, tag="8")]
12151    pub pc_lblk: ::core::option::Option<u32>,
12152    #[prost(uint64, optional, tag="9")]
12153    pub pc_pclu: ::core::option::Option<u64>,
12154    #[prost(int32, optional, tag="10")]
12155    pub pc_state: ::core::option::Option<i32>,
12156}
12157#[derive(Clone, PartialEq, ::prost::Message)]
12158pub struct Ext4ExtRmIdxFtraceEvent {
12159    #[prost(uint64, optional, tag="1")]
12160    pub dev: ::core::option::Option<u64>,
12161    #[prost(uint64, optional, tag="2")]
12162    pub ino: ::core::option::Option<u64>,
12163    #[prost(uint64, optional, tag="3")]
12164    pub pblk: ::core::option::Option<u64>,
12165}
12166#[derive(Clone, PartialEq, ::prost::Message)]
12167pub struct Ext4ExtRmLeafFtraceEvent {
12168    #[prost(uint64, optional, tag="1")]
12169    pub dev: ::core::option::Option<u64>,
12170    #[prost(uint64, optional, tag="2")]
12171    pub ino: ::core::option::Option<u64>,
12172    #[prost(int64, optional, tag="3")]
12173    pub partial: ::core::option::Option<i64>,
12174    #[prost(uint32, optional, tag="4")]
12175    pub start: ::core::option::Option<u32>,
12176    #[prost(uint32, optional, tag="5")]
12177    pub ee_lblk: ::core::option::Option<u32>,
12178    #[prost(uint64, optional, tag="6")]
12179    pub ee_pblk: ::core::option::Option<u64>,
12180    #[prost(int32, optional, tag="7")]
12181    pub ee_len: ::core::option::Option<i32>,
12182    #[prost(uint32, optional, tag="8")]
12183    pub pc_lblk: ::core::option::Option<u32>,
12184    #[prost(uint64, optional, tag="9")]
12185    pub pc_pclu: ::core::option::Option<u64>,
12186    #[prost(int32, optional, tag="10")]
12187    pub pc_state: ::core::option::Option<i32>,
12188}
12189#[derive(Clone, PartialEq, ::prost::Message)]
12190pub struct Ext4ExtShowExtentFtraceEvent {
12191    #[prost(uint64, optional, tag="1")]
12192    pub dev: ::core::option::Option<u64>,
12193    #[prost(uint64, optional, tag="2")]
12194    pub ino: ::core::option::Option<u64>,
12195    #[prost(uint64, optional, tag="3")]
12196    pub pblk: ::core::option::Option<u64>,
12197    #[prost(uint32, optional, tag="4")]
12198    pub lblk: ::core::option::Option<u32>,
12199    #[prost(uint32, optional, tag="5")]
12200    pub len: ::core::option::Option<u32>,
12201}
12202#[derive(Clone, PartialEq, ::prost::Message)]
12203pub struct Ext4FallocateEnterFtraceEvent {
12204    #[prost(uint64, optional, tag="1")]
12205    pub dev: ::core::option::Option<u64>,
12206    #[prost(uint64, optional, tag="2")]
12207    pub ino: ::core::option::Option<u64>,
12208    #[prost(int64, optional, tag="3")]
12209    pub offset: ::core::option::Option<i64>,
12210    #[prost(int64, optional, tag="4")]
12211    pub len: ::core::option::Option<i64>,
12212    #[prost(int32, optional, tag="5")]
12213    pub mode: ::core::option::Option<i32>,
12214    #[prost(int64, optional, tag="6")]
12215    pub pos: ::core::option::Option<i64>,
12216}
12217#[derive(Clone, PartialEq, ::prost::Message)]
12218pub struct Ext4FallocateExitFtraceEvent {
12219    #[prost(uint64, optional, tag="1")]
12220    pub dev: ::core::option::Option<u64>,
12221    #[prost(uint64, optional, tag="2")]
12222    pub ino: ::core::option::Option<u64>,
12223    #[prost(int64, optional, tag="3")]
12224    pub pos: ::core::option::Option<i64>,
12225    #[prost(uint32, optional, tag="4")]
12226    pub blocks: ::core::option::Option<u32>,
12227    #[prost(int32, optional, tag="5")]
12228    pub ret: ::core::option::Option<i32>,
12229}
12230#[derive(Clone, PartialEq, ::prost::Message)]
12231pub struct Ext4FindDelallocRangeFtraceEvent {
12232    #[prost(uint64, optional, tag="1")]
12233    pub dev: ::core::option::Option<u64>,
12234    #[prost(uint64, optional, tag="2")]
12235    pub ino: ::core::option::Option<u64>,
12236    #[prost(uint32, optional, tag="3")]
12237    pub from: ::core::option::Option<u32>,
12238    #[prost(uint32, optional, tag="4")]
12239    pub to: ::core::option::Option<u32>,
12240    #[prost(int32, optional, tag="5")]
12241    pub reverse: ::core::option::Option<i32>,
12242    #[prost(int32, optional, tag="6")]
12243    pub found: ::core::option::Option<i32>,
12244    #[prost(uint32, optional, tag="7")]
12245    pub found_blk: ::core::option::Option<u32>,
12246}
12247#[derive(Clone, PartialEq, ::prost::Message)]
12248pub struct Ext4ForgetFtraceEvent {
12249    #[prost(uint64, optional, tag="1")]
12250    pub dev: ::core::option::Option<u64>,
12251    #[prost(uint64, optional, tag="2")]
12252    pub ino: ::core::option::Option<u64>,
12253    #[prost(uint64, optional, tag="3")]
12254    pub block: ::core::option::Option<u64>,
12255    #[prost(int32, optional, tag="4")]
12256    pub is_metadata: ::core::option::Option<i32>,
12257    #[prost(uint32, optional, tag="5")]
12258    pub mode: ::core::option::Option<u32>,
12259}
12260#[derive(Clone, PartialEq, ::prost::Message)]
12261pub struct Ext4FreeBlocksFtraceEvent {
12262    #[prost(uint64, optional, tag="1")]
12263    pub dev: ::core::option::Option<u64>,
12264    #[prost(uint64, optional, tag="2")]
12265    pub ino: ::core::option::Option<u64>,
12266    #[prost(uint64, optional, tag="3")]
12267    pub block: ::core::option::Option<u64>,
12268    #[prost(uint64, optional, tag="4")]
12269    pub count: ::core::option::Option<u64>,
12270    #[prost(int32, optional, tag="5")]
12271    pub flags: ::core::option::Option<i32>,
12272    #[prost(uint32, optional, tag="6")]
12273    pub mode: ::core::option::Option<u32>,
12274}
12275#[derive(Clone, PartialEq, ::prost::Message)]
12276pub struct Ext4FreeInodeFtraceEvent {
12277    #[prost(uint64, optional, tag="1")]
12278    pub dev: ::core::option::Option<u64>,
12279    #[prost(uint64, optional, tag="2")]
12280    pub ino: ::core::option::Option<u64>,
12281    #[prost(uint32, optional, tag="3")]
12282    pub uid: ::core::option::Option<u32>,
12283    #[prost(uint32, optional, tag="4")]
12284    pub gid: ::core::option::Option<u32>,
12285    #[prost(uint64, optional, tag="5")]
12286    pub blocks: ::core::option::Option<u64>,
12287    #[prost(uint32, optional, tag="6")]
12288    pub mode: ::core::option::Option<u32>,
12289}
12290#[derive(Clone, PartialEq, ::prost::Message)]
12291pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
12292    #[prost(uint64, optional, tag="1")]
12293    pub dev: ::core::option::Option<u64>,
12294    #[prost(uint32, optional, tag="2")]
12295    pub flags: ::core::option::Option<u32>,
12296    #[prost(uint32, optional, tag="3")]
12297    pub lblk: ::core::option::Option<u32>,
12298    #[prost(uint64, optional, tag="4")]
12299    pub pblk: ::core::option::Option<u64>,
12300    #[prost(uint32, optional, tag="5")]
12301    pub len: ::core::option::Option<u32>,
12302    #[prost(int32, optional, tag="6")]
12303    pub ret: ::core::option::Option<i32>,
12304}
12305#[derive(Clone, PartialEq, ::prost::Message)]
12306pub struct Ext4GetReservedClusterAllocFtraceEvent {
12307    #[prost(uint64, optional, tag="1")]
12308    pub dev: ::core::option::Option<u64>,
12309    #[prost(uint64, optional, tag="2")]
12310    pub ino: ::core::option::Option<u64>,
12311    #[prost(uint32, optional, tag="3")]
12312    pub lblk: ::core::option::Option<u32>,
12313    #[prost(uint32, optional, tag="4")]
12314    pub len: ::core::option::Option<u32>,
12315}
12316#[derive(Clone, PartialEq, ::prost::Message)]
12317pub struct Ext4IndMapBlocksEnterFtraceEvent {
12318    #[prost(uint64, optional, tag="1")]
12319    pub dev: ::core::option::Option<u64>,
12320    #[prost(uint64, optional, tag="2")]
12321    pub ino: ::core::option::Option<u64>,
12322    #[prost(uint32, optional, tag="3")]
12323    pub lblk: ::core::option::Option<u32>,
12324    #[prost(uint32, optional, tag="4")]
12325    pub len: ::core::option::Option<u32>,
12326    #[prost(uint32, optional, tag="5")]
12327    pub flags: ::core::option::Option<u32>,
12328}
12329#[derive(Clone, PartialEq, ::prost::Message)]
12330pub struct Ext4IndMapBlocksExitFtraceEvent {
12331    #[prost(uint64, optional, tag="1")]
12332    pub dev: ::core::option::Option<u64>,
12333    #[prost(uint64, optional, tag="2")]
12334    pub ino: ::core::option::Option<u64>,
12335    #[prost(uint32, optional, tag="3")]
12336    pub flags: ::core::option::Option<u32>,
12337    #[prost(uint64, optional, tag="4")]
12338    pub pblk: ::core::option::Option<u64>,
12339    #[prost(uint32, optional, tag="5")]
12340    pub lblk: ::core::option::Option<u32>,
12341    #[prost(uint32, optional, tag="6")]
12342    pub len: ::core::option::Option<u32>,
12343    #[prost(uint32, optional, tag="7")]
12344    pub mflags: ::core::option::Option<u32>,
12345    #[prost(int32, optional, tag="8")]
12346    pub ret: ::core::option::Option<i32>,
12347}
12348#[derive(Clone, PartialEq, ::prost::Message)]
12349pub struct Ext4InsertRangeFtraceEvent {
12350    #[prost(uint64, optional, tag="1")]
12351    pub dev: ::core::option::Option<u64>,
12352    #[prost(uint64, optional, tag="2")]
12353    pub ino: ::core::option::Option<u64>,
12354    #[prost(int64, optional, tag="3")]
12355    pub offset: ::core::option::Option<i64>,
12356    #[prost(int64, optional, tag="4")]
12357    pub len: ::core::option::Option<i64>,
12358}
12359#[derive(Clone, PartialEq, ::prost::Message)]
12360pub struct Ext4InvalidatepageFtraceEvent {
12361    #[prost(uint64, optional, tag="1")]
12362    pub dev: ::core::option::Option<u64>,
12363    #[prost(uint64, optional, tag="2")]
12364    pub ino: ::core::option::Option<u64>,
12365    #[prost(uint64, optional, tag="3")]
12366    pub index: ::core::option::Option<u64>,
12367    #[prost(uint64, optional, tag="4")]
12368    pub offset: ::core::option::Option<u64>,
12369    #[prost(uint32, optional, tag="5")]
12370    pub length: ::core::option::Option<u32>,
12371}
12372#[derive(Clone, PartialEq, ::prost::Message)]
12373pub struct Ext4JournalStartFtraceEvent {
12374    #[prost(uint64, optional, tag="1")]
12375    pub dev: ::core::option::Option<u64>,
12376    #[prost(uint64, optional, tag="2")]
12377    pub ip: ::core::option::Option<u64>,
12378    #[prost(int32, optional, tag="3")]
12379    pub blocks: ::core::option::Option<i32>,
12380    #[prost(int32, optional, tag="4")]
12381    pub rsv_blocks: ::core::option::Option<i32>,
12382    #[prost(int32, optional, tag="5")]
12383    pub nblocks: ::core::option::Option<i32>,
12384    #[prost(int32, optional, tag="6")]
12385    pub revoke_creds: ::core::option::Option<i32>,
12386}
12387#[derive(Clone, PartialEq, ::prost::Message)]
12388pub struct Ext4JournalStartReservedFtraceEvent {
12389    #[prost(uint64, optional, tag="1")]
12390    pub dev: ::core::option::Option<u64>,
12391    #[prost(uint64, optional, tag="2")]
12392    pub ip: ::core::option::Option<u64>,
12393    #[prost(int32, optional, tag="3")]
12394    pub blocks: ::core::option::Option<i32>,
12395}
12396#[derive(Clone, PartialEq, ::prost::Message)]
12397pub struct Ext4JournalledInvalidatepageFtraceEvent {
12398    #[prost(uint64, optional, tag="1")]
12399    pub dev: ::core::option::Option<u64>,
12400    #[prost(uint64, optional, tag="2")]
12401    pub ino: ::core::option::Option<u64>,
12402    #[prost(uint64, optional, tag="3")]
12403    pub index: ::core::option::Option<u64>,
12404    #[prost(uint64, optional, tag="4")]
12405    pub offset: ::core::option::Option<u64>,
12406    #[prost(uint32, optional, tag="5")]
12407    pub length: ::core::option::Option<u32>,
12408}
12409#[derive(Clone, PartialEq, ::prost::Message)]
12410pub struct Ext4JournalledWriteEndFtraceEvent {
12411    #[prost(uint64, optional, tag="1")]
12412    pub dev: ::core::option::Option<u64>,
12413    #[prost(uint64, optional, tag="2")]
12414    pub ino: ::core::option::Option<u64>,
12415    #[prost(int64, optional, tag="3")]
12416    pub pos: ::core::option::Option<i64>,
12417    #[prost(uint32, optional, tag="4")]
12418    pub len: ::core::option::Option<u32>,
12419    #[prost(uint32, optional, tag="5")]
12420    pub copied: ::core::option::Option<u32>,
12421}
12422#[derive(Clone, PartialEq, ::prost::Message)]
12423pub struct Ext4LoadInodeFtraceEvent {
12424    #[prost(uint64, optional, tag="1")]
12425    pub dev: ::core::option::Option<u64>,
12426    #[prost(uint64, optional, tag="2")]
12427    pub ino: ::core::option::Option<u64>,
12428}
12429#[derive(Clone, PartialEq, ::prost::Message)]
12430pub struct Ext4LoadInodeBitmapFtraceEvent {
12431    #[prost(uint64, optional, tag="1")]
12432    pub dev: ::core::option::Option<u64>,
12433    #[prost(uint32, optional, tag="2")]
12434    pub group: ::core::option::Option<u32>,
12435}
12436#[derive(Clone, PartialEq, ::prost::Message)]
12437pub struct Ext4MarkInodeDirtyFtraceEvent {
12438    #[prost(uint64, optional, tag="1")]
12439    pub dev: ::core::option::Option<u64>,
12440    #[prost(uint64, optional, tag="2")]
12441    pub ino: ::core::option::Option<u64>,
12442    #[prost(uint64, optional, tag="3")]
12443    pub ip: ::core::option::Option<u64>,
12444}
12445#[derive(Clone, PartialEq, ::prost::Message)]
12446pub struct Ext4MbBitmapLoadFtraceEvent {
12447    #[prost(uint64, optional, tag="1")]
12448    pub dev: ::core::option::Option<u64>,
12449    #[prost(uint32, optional, tag="2")]
12450    pub group: ::core::option::Option<u32>,
12451}
12452#[derive(Clone, PartialEq, ::prost::Message)]
12453pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
12454    #[prost(uint64, optional, tag="1")]
12455    pub dev: ::core::option::Option<u64>,
12456    #[prost(uint32, optional, tag="2")]
12457    pub group: ::core::option::Option<u32>,
12458}
12459#[derive(Clone, PartialEq, ::prost::Message)]
12460pub struct Ext4MbDiscardPreallocationsFtraceEvent {
12461    #[prost(uint64, optional, tag="1")]
12462    pub dev: ::core::option::Option<u64>,
12463    #[prost(int32, optional, tag="2")]
12464    pub needed: ::core::option::Option<i32>,
12465}
12466#[derive(Clone, PartialEq, ::prost::Message)]
12467pub struct Ext4MbNewGroupPaFtraceEvent {
12468    #[prost(uint64, optional, tag="1")]
12469    pub dev: ::core::option::Option<u64>,
12470    #[prost(uint64, optional, tag="2")]
12471    pub ino: ::core::option::Option<u64>,
12472    #[prost(uint64, optional, tag="3")]
12473    pub pa_pstart: ::core::option::Option<u64>,
12474    #[prost(uint64, optional, tag="4")]
12475    pub pa_lstart: ::core::option::Option<u64>,
12476    #[prost(uint32, optional, tag="5")]
12477    pub pa_len: ::core::option::Option<u32>,
12478}
12479#[derive(Clone, PartialEq, ::prost::Message)]
12480pub struct Ext4MbNewInodePaFtraceEvent {
12481    #[prost(uint64, optional, tag="1")]
12482    pub dev: ::core::option::Option<u64>,
12483    #[prost(uint64, optional, tag="2")]
12484    pub ino: ::core::option::Option<u64>,
12485    #[prost(uint64, optional, tag="3")]
12486    pub pa_pstart: ::core::option::Option<u64>,
12487    #[prost(uint64, optional, tag="4")]
12488    pub pa_lstart: ::core::option::Option<u64>,
12489    #[prost(uint32, optional, tag="5")]
12490    pub pa_len: ::core::option::Option<u32>,
12491}
12492#[derive(Clone, PartialEq, ::prost::Message)]
12493pub struct Ext4MbReleaseGroupPaFtraceEvent {
12494    #[prost(uint64, optional, tag="1")]
12495    pub dev: ::core::option::Option<u64>,
12496    #[prost(uint64, optional, tag="2")]
12497    pub pa_pstart: ::core::option::Option<u64>,
12498    #[prost(uint32, optional, tag="3")]
12499    pub pa_len: ::core::option::Option<u32>,
12500}
12501#[derive(Clone, PartialEq, ::prost::Message)]
12502pub struct Ext4MbReleaseInodePaFtraceEvent {
12503    #[prost(uint64, optional, tag="1")]
12504    pub dev: ::core::option::Option<u64>,
12505    #[prost(uint64, optional, tag="2")]
12506    pub ino: ::core::option::Option<u64>,
12507    #[prost(uint64, optional, tag="3")]
12508    pub block: ::core::option::Option<u64>,
12509    #[prost(uint32, optional, tag="4")]
12510    pub count: ::core::option::Option<u32>,
12511}
12512#[derive(Clone, PartialEq, ::prost::Message)]
12513pub struct Ext4MballocAllocFtraceEvent {
12514    #[prost(uint64, optional, tag="1")]
12515    pub dev: ::core::option::Option<u64>,
12516    #[prost(uint64, optional, tag="2")]
12517    pub ino: ::core::option::Option<u64>,
12518    #[prost(uint32, optional, tag="3")]
12519    pub orig_logical: ::core::option::Option<u32>,
12520    #[prost(int32, optional, tag="4")]
12521    pub orig_start: ::core::option::Option<i32>,
12522    #[prost(uint32, optional, tag="5")]
12523    pub orig_group: ::core::option::Option<u32>,
12524    #[prost(int32, optional, tag="6")]
12525    pub orig_len: ::core::option::Option<i32>,
12526    #[prost(uint32, optional, tag="7")]
12527    pub goal_logical: ::core::option::Option<u32>,
12528    #[prost(int32, optional, tag="8")]
12529    pub goal_start: ::core::option::Option<i32>,
12530    #[prost(uint32, optional, tag="9")]
12531    pub goal_group: ::core::option::Option<u32>,
12532    #[prost(int32, optional, tag="10")]
12533    pub goal_len: ::core::option::Option<i32>,
12534    #[prost(uint32, optional, tag="11")]
12535    pub result_logical: ::core::option::Option<u32>,
12536    #[prost(int32, optional, tag="12")]
12537    pub result_start: ::core::option::Option<i32>,
12538    #[prost(uint32, optional, tag="13")]
12539    pub result_group: ::core::option::Option<u32>,
12540    #[prost(int32, optional, tag="14")]
12541    pub result_len: ::core::option::Option<i32>,
12542    #[prost(uint32, optional, tag="15")]
12543    pub found: ::core::option::Option<u32>,
12544    #[prost(uint32, optional, tag="16")]
12545    pub groups: ::core::option::Option<u32>,
12546    #[prost(uint32, optional, tag="17")]
12547    pub buddy: ::core::option::Option<u32>,
12548    #[prost(uint32, optional, tag="18")]
12549    pub flags: ::core::option::Option<u32>,
12550    #[prost(uint32, optional, tag="19")]
12551    pub tail: ::core::option::Option<u32>,
12552    #[prost(uint32, optional, tag="20")]
12553    pub cr: ::core::option::Option<u32>,
12554}
12555#[derive(Clone, PartialEq, ::prost::Message)]
12556pub struct Ext4MballocDiscardFtraceEvent {
12557    #[prost(uint64, optional, tag="1")]
12558    pub dev: ::core::option::Option<u64>,
12559    #[prost(uint64, optional, tag="2")]
12560    pub ino: ::core::option::Option<u64>,
12561    #[prost(int32, optional, tag="3")]
12562    pub result_start: ::core::option::Option<i32>,
12563    #[prost(uint32, optional, tag="4")]
12564    pub result_group: ::core::option::Option<u32>,
12565    #[prost(int32, optional, tag="5")]
12566    pub result_len: ::core::option::Option<i32>,
12567}
12568#[derive(Clone, PartialEq, ::prost::Message)]
12569pub struct Ext4MballocFreeFtraceEvent {
12570    #[prost(uint64, optional, tag="1")]
12571    pub dev: ::core::option::Option<u64>,
12572    #[prost(uint64, optional, tag="2")]
12573    pub ino: ::core::option::Option<u64>,
12574    #[prost(int32, optional, tag="3")]
12575    pub result_start: ::core::option::Option<i32>,
12576    #[prost(uint32, optional, tag="4")]
12577    pub result_group: ::core::option::Option<u32>,
12578    #[prost(int32, optional, tag="5")]
12579    pub result_len: ::core::option::Option<i32>,
12580}
12581#[derive(Clone, PartialEq, ::prost::Message)]
12582pub struct Ext4MballocPreallocFtraceEvent {
12583    #[prost(uint64, optional, tag="1")]
12584    pub dev: ::core::option::Option<u64>,
12585    #[prost(uint64, optional, tag="2")]
12586    pub ino: ::core::option::Option<u64>,
12587    #[prost(uint32, optional, tag="3")]
12588    pub orig_logical: ::core::option::Option<u32>,
12589    #[prost(int32, optional, tag="4")]
12590    pub orig_start: ::core::option::Option<i32>,
12591    #[prost(uint32, optional, tag="5")]
12592    pub orig_group: ::core::option::Option<u32>,
12593    #[prost(int32, optional, tag="6")]
12594    pub orig_len: ::core::option::Option<i32>,
12595    #[prost(uint32, optional, tag="7")]
12596    pub result_logical: ::core::option::Option<u32>,
12597    #[prost(int32, optional, tag="8")]
12598    pub result_start: ::core::option::Option<i32>,
12599    #[prost(uint32, optional, tag="9")]
12600    pub result_group: ::core::option::Option<u32>,
12601    #[prost(int32, optional, tag="10")]
12602    pub result_len: ::core::option::Option<i32>,
12603}
12604#[derive(Clone, PartialEq, ::prost::Message)]
12605pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
12606    #[prost(uint64, optional, tag="1")]
12607    pub dev: ::core::option::Option<u64>,
12608    #[prost(uint64, optional, tag="2")]
12609    pub ino: ::core::option::Option<u64>,
12610    #[prost(uint64, optional, tag="3")]
12611    pub orig_ino: ::core::option::Option<u64>,
12612    #[prost(uint32, optional, tag="4")]
12613    pub uid: ::core::option::Option<u32>,
12614    #[prost(uint32, optional, tag="5")]
12615    pub gid: ::core::option::Option<u32>,
12616    #[prost(uint32, optional, tag="6")]
12617    pub mode: ::core::option::Option<u32>,
12618}
12619#[derive(Clone, PartialEq, ::prost::Message)]
12620pub struct Ext4PunchHoleFtraceEvent {
12621    #[prost(uint64, optional, tag="1")]
12622    pub dev: ::core::option::Option<u64>,
12623    #[prost(uint64, optional, tag="2")]
12624    pub ino: ::core::option::Option<u64>,
12625    #[prost(int64, optional, tag="3")]
12626    pub offset: ::core::option::Option<i64>,
12627    #[prost(int64, optional, tag="4")]
12628    pub len: ::core::option::Option<i64>,
12629    #[prost(int32, optional, tag="5")]
12630    pub mode: ::core::option::Option<i32>,
12631}
12632#[derive(Clone, PartialEq, ::prost::Message)]
12633pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
12634    #[prost(uint64, optional, tag="1")]
12635    pub dev: ::core::option::Option<u64>,
12636    #[prost(uint32, optional, tag="2")]
12637    pub group: ::core::option::Option<u32>,
12638    #[prost(uint32, optional, tag="3")]
12639    pub prefetch: ::core::option::Option<u32>,
12640}
12641#[derive(Clone, PartialEq, ::prost::Message)]
12642pub struct Ext4ReadpageFtraceEvent {
12643    #[prost(uint64, optional, tag="1")]
12644    pub dev: ::core::option::Option<u64>,
12645    #[prost(uint64, optional, tag="2")]
12646    pub ino: ::core::option::Option<u64>,
12647    #[prost(uint64, optional, tag="3")]
12648    pub index: ::core::option::Option<u64>,
12649}
12650#[derive(Clone, PartialEq, ::prost::Message)]
12651pub struct Ext4ReleasepageFtraceEvent {
12652    #[prost(uint64, optional, tag="1")]
12653    pub dev: ::core::option::Option<u64>,
12654    #[prost(uint64, optional, tag="2")]
12655    pub ino: ::core::option::Option<u64>,
12656    #[prost(uint64, optional, tag="3")]
12657    pub index: ::core::option::Option<u64>,
12658}
12659#[derive(Clone, PartialEq, ::prost::Message)]
12660pub struct Ext4RemoveBlocksFtraceEvent {
12661    #[prost(uint64, optional, tag="1")]
12662    pub dev: ::core::option::Option<u64>,
12663    #[prost(uint64, optional, tag="2")]
12664    pub ino: ::core::option::Option<u64>,
12665    #[prost(uint32, optional, tag="3")]
12666    pub from: ::core::option::Option<u32>,
12667    #[prost(uint32, optional, tag="4")]
12668    pub to: ::core::option::Option<u32>,
12669    #[prost(int64, optional, tag="5")]
12670    pub partial: ::core::option::Option<i64>,
12671    #[prost(uint64, optional, tag="6")]
12672    pub ee_pblk: ::core::option::Option<u64>,
12673    #[prost(uint32, optional, tag="7")]
12674    pub ee_lblk: ::core::option::Option<u32>,
12675    #[prost(uint32, optional, tag="8")]
12676    pub ee_len: ::core::option::Option<u32>,
12677    #[prost(uint32, optional, tag="9")]
12678    pub pc_lblk: ::core::option::Option<u32>,
12679    #[prost(uint64, optional, tag="10")]
12680    pub pc_pclu: ::core::option::Option<u64>,
12681    #[prost(int32, optional, tag="11")]
12682    pub pc_state: ::core::option::Option<i32>,
12683}
12684#[derive(Clone, PartialEq, ::prost::Message)]
12685pub struct Ext4RequestBlocksFtraceEvent {
12686    #[prost(uint64, optional, tag="1")]
12687    pub dev: ::core::option::Option<u64>,
12688    #[prost(uint64, optional, tag="2")]
12689    pub ino: ::core::option::Option<u64>,
12690    #[prost(uint32, optional, tag="3")]
12691    pub len: ::core::option::Option<u32>,
12692    #[prost(uint32, optional, tag="4")]
12693    pub logical: ::core::option::Option<u32>,
12694    #[prost(uint32, optional, tag="5")]
12695    pub lleft: ::core::option::Option<u32>,
12696    #[prost(uint32, optional, tag="6")]
12697    pub lright: ::core::option::Option<u32>,
12698    #[prost(uint64, optional, tag="7")]
12699    pub goal: ::core::option::Option<u64>,
12700    #[prost(uint64, optional, tag="8")]
12701    pub pleft: ::core::option::Option<u64>,
12702    #[prost(uint64, optional, tag="9")]
12703    pub pright: ::core::option::Option<u64>,
12704    #[prost(uint32, optional, tag="10")]
12705    pub flags: ::core::option::Option<u32>,
12706}
12707#[derive(Clone, PartialEq, ::prost::Message)]
12708pub struct Ext4RequestInodeFtraceEvent {
12709    #[prost(uint64, optional, tag="1")]
12710    pub dev: ::core::option::Option<u64>,
12711    #[prost(uint64, optional, tag="2")]
12712    pub dir: ::core::option::Option<u64>,
12713    #[prost(uint32, optional, tag="3")]
12714    pub mode: ::core::option::Option<u32>,
12715}
12716#[derive(Clone, PartialEq, ::prost::Message)]
12717pub struct Ext4SyncFsFtraceEvent {
12718    #[prost(uint64, optional, tag="1")]
12719    pub dev: ::core::option::Option<u64>,
12720    #[prost(int32, optional, tag="2")]
12721    pub wait: ::core::option::Option<i32>,
12722}
12723#[derive(Clone, PartialEq, ::prost::Message)]
12724pub struct Ext4TrimAllFreeFtraceEvent {
12725    #[prost(int32, optional, tag="1")]
12726    pub dev_major: ::core::option::Option<i32>,
12727    #[prost(int32, optional, tag="2")]
12728    pub dev_minor: ::core::option::Option<i32>,
12729    #[prost(uint32, optional, tag="3")]
12730    pub group: ::core::option::Option<u32>,
12731    #[prost(int32, optional, tag="4")]
12732    pub start: ::core::option::Option<i32>,
12733    #[prost(int32, optional, tag="5")]
12734    pub len: ::core::option::Option<i32>,
12735}
12736#[derive(Clone, PartialEq, ::prost::Message)]
12737pub struct Ext4TrimExtentFtraceEvent {
12738    #[prost(int32, optional, tag="1")]
12739    pub dev_major: ::core::option::Option<i32>,
12740    #[prost(int32, optional, tag="2")]
12741    pub dev_minor: ::core::option::Option<i32>,
12742    #[prost(uint32, optional, tag="3")]
12743    pub group: ::core::option::Option<u32>,
12744    #[prost(int32, optional, tag="4")]
12745    pub start: ::core::option::Option<i32>,
12746    #[prost(int32, optional, tag="5")]
12747    pub len: ::core::option::Option<i32>,
12748}
12749#[derive(Clone, PartialEq, ::prost::Message)]
12750pub struct Ext4TruncateEnterFtraceEvent {
12751    #[prost(uint64, optional, tag="1")]
12752    pub dev: ::core::option::Option<u64>,
12753    #[prost(uint64, optional, tag="2")]
12754    pub ino: ::core::option::Option<u64>,
12755    #[prost(uint64, optional, tag="3")]
12756    pub blocks: ::core::option::Option<u64>,
12757}
12758#[derive(Clone, PartialEq, ::prost::Message)]
12759pub struct Ext4TruncateExitFtraceEvent {
12760    #[prost(uint64, optional, tag="1")]
12761    pub dev: ::core::option::Option<u64>,
12762    #[prost(uint64, optional, tag="2")]
12763    pub ino: ::core::option::Option<u64>,
12764    #[prost(uint64, optional, tag="3")]
12765    pub blocks: ::core::option::Option<u64>,
12766}
12767#[derive(Clone, PartialEq, ::prost::Message)]
12768pub struct Ext4UnlinkEnterFtraceEvent {
12769    #[prost(uint64, optional, tag="1")]
12770    pub dev: ::core::option::Option<u64>,
12771    #[prost(uint64, optional, tag="2")]
12772    pub ino: ::core::option::Option<u64>,
12773    #[prost(uint64, optional, tag="3")]
12774    pub parent: ::core::option::Option<u64>,
12775    #[prost(int64, optional, tag="4")]
12776    pub size: ::core::option::Option<i64>,
12777}
12778#[derive(Clone, PartialEq, ::prost::Message)]
12779pub struct Ext4UnlinkExitFtraceEvent {
12780    #[prost(uint64, optional, tag="1")]
12781    pub dev: ::core::option::Option<u64>,
12782    #[prost(uint64, optional, tag="2")]
12783    pub ino: ::core::option::Option<u64>,
12784    #[prost(int32, optional, tag="3")]
12785    pub ret: ::core::option::Option<i32>,
12786}
12787#[derive(Clone, PartialEq, ::prost::Message)]
12788pub struct Ext4WriteBeginFtraceEvent {
12789    #[prost(uint64, optional, tag="1")]
12790    pub dev: ::core::option::Option<u64>,
12791    #[prost(uint64, optional, tag="2")]
12792    pub ino: ::core::option::Option<u64>,
12793    #[prost(int64, optional, tag="3")]
12794    pub pos: ::core::option::Option<i64>,
12795    #[prost(uint32, optional, tag="4")]
12796    pub len: ::core::option::Option<u32>,
12797    #[prost(uint32, optional, tag="5")]
12798    pub flags: ::core::option::Option<u32>,
12799}
12800#[derive(Clone, PartialEq, ::prost::Message)]
12801pub struct Ext4WriteEndFtraceEvent {
12802    #[prost(uint64, optional, tag="1")]
12803    pub dev: ::core::option::Option<u64>,
12804    #[prost(uint64, optional, tag="2")]
12805    pub ino: ::core::option::Option<u64>,
12806    #[prost(int64, optional, tag="3")]
12807    pub pos: ::core::option::Option<i64>,
12808    #[prost(uint32, optional, tag="4")]
12809    pub len: ::core::option::Option<u32>,
12810    #[prost(uint32, optional, tag="5")]
12811    pub copied: ::core::option::Option<u32>,
12812}
12813#[derive(Clone, PartialEq, ::prost::Message)]
12814pub struct Ext4WritepageFtraceEvent {
12815    #[prost(uint64, optional, tag="1")]
12816    pub dev: ::core::option::Option<u64>,
12817    #[prost(uint64, optional, tag="2")]
12818    pub ino: ::core::option::Option<u64>,
12819    #[prost(uint64, optional, tag="3")]
12820    pub index: ::core::option::Option<u64>,
12821}
12822#[derive(Clone, PartialEq, ::prost::Message)]
12823pub struct Ext4WritepagesFtraceEvent {
12824    #[prost(uint64, optional, tag="1")]
12825    pub dev: ::core::option::Option<u64>,
12826    #[prost(uint64, optional, tag="2")]
12827    pub ino: ::core::option::Option<u64>,
12828    #[prost(int64, optional, tag="3")]
12829    pub nr_to_write: ::core::option::Option<i64>,
12830    #[prost(int64, optional, tag="4")]
12831    pub pages_skipped: ::core::option::Option<i64>,
12832    #[prost(int64, optional, tag="5")]
12833    pub range_start: ::core::option::Option<i64>,
12834    #[prost(int64, optional, tag="6")]
12835    pub range_end: ::core::option::Option<i64>,
12836    #[prost(uint64, optional, tag="7")]
12837    pub writeback_index: ::core::option::Option<u64>,
12838    #[prost(int32, optional, tag="8")]
12839    pub sync_mode: ::core::option::Option<i32>,
12840    #[prost(uint32, optional, tag="9")]
12841    pub for_kupdate: ::core::option::Option<u32>,
12842    #[prost(uint32, optional, tag="10")]
12843    pub range_cyclic: ::core::option::Option<u32>,
12844}
12845#[derive(Clone, PartialEq, ::prost::Message)]
12846pub struct Ext4WritepagesResultFtraceEvent {
12847    #[prost(uint64, optional, tag="1")]
12848    pub dev: ::core::option::Option<u64>,
12849    #[prost(uint64, optional, tag="2")]
12850    pub ino: ::core::option::Option<u64>,
12851    #[prost(int32, optional, tag="3")]
12852    pub ret: ::core::option::Option<i32>,
12853    #[prost(int32, optional, tag="4")]
12854    pub pages_written: ::core::option::Option<i32>,
12855    #[prost(int64, optional, tag="5")]
12856    pub pages_skipped: ::core::option::Option<i64>,
12857    #[prost(uint64, optional, tag="6")]
12858    pub writeback_index: ::core::option::Option<u64>,
12859    #[prost(int32, optional, tag="7")]
12860    pub sync_mode: ::core::option::Option<i32>,
12861}
12862#[derive(Clone, PartialEq, ::prost::Message)]
12863pub struct Ext4ZeroRangeFtraceEvent {
12864    #[prost(uint64, optional, tag="1")]
12865    pub dev: ::core::option::Option<u64>,
12866    #[prost(uint64, optional, tag="2")]
12867    pub ino: ::core::option::Option<u64>,
12868    #[prost(int64, optional, tag="3")]
12869    pub offset: ::core::option::Option<i64>,
12870    #[prost(int64, optional, tag="4")]
12871    pub len: ::core::option::Option<i64>,
12872    #[prost(int32, optional, tag="5")]
12873    pub mode: ::core::option::Option<i32>,
12874}
12875// End of protos/perfetto/trace/ftrace/ext4.proto
12876
12877// Begin of protos/perfetto/trace/ftrace/f2fs.proto
12878
12879#[derive(Clone, PartialEq, ::prost::Message)]
12880pub struct F2fsDoSubmitBioFtraceEvent {
12881    #[prost(uint64, optional, tag="1")]
12882    pub dev: ::core::option::Option<u64>,
12883    #[prost(int32, optional, tag="2")]
12884    pub btype: ::core::option::Option<i32>,
12885    #[prost(uint32, optional, tag="3")]
12886    pub sync: ::core::option::Option<u32>,
12887    #[prost(uint64, optional, tag="4")]
12888    pub sector: ::core::option::Option<u64>,
12889    #[prost(uint32, optional, tag="5")]
12890    pub size: ::core::option::Option<u32>,
12891}
12892#[derive(Clone, PartialEq, ::prost::Message)]
12893pub struct F2fsEvictInodeFtraceEvent {
12894    #[prost(uint64, optional, tag="1")]
12895    pub dev: ::core::option::Option<u64>,
12896    #[prost(uint64, optional, tag="2")]
12897    pub ino: ::core::option::Option<u64>,
12898    #[prost(uint64, optional, tag="3")]
12899    pub pino: ::core::option::Option<u64>,
12900    #[prost(uint32, optional, tag="4")]
12901    pub mode: ::core::option::Option<u32>,
12902    #[prost(int64, optional, tag="5")]
12903    pub size: ::core::option::Option<i64>,
12904    #[prost(uint32, optional, tag="6")]
12905    pub nlink: ::core::option::Option<u32>,
12906    #[prost(uint64, optional, tag="7")]
12907    pub blocks: ::core::option::Option<u64>,
12908    #[prost(uint32, optional, tag="8")]
12909    pub advise: ::core::option::Option<u32>,
12910}
12911#[derive(Clone, PartialEq, ::prost::Message)]
12912pub struct F2fsFallocateFtraceEvent {
12913    #[prost(uint64, optional, tag="1")]
12914    pub dev: ::core::option::Option<u64>,
12915    #[prost(uint64, optional, tag="2")]
12916    pub ino: ::core::option::Option<u64>,
12917    #[prost(int32, optional, tag="3")]
12918    pub mode: ::core::option::Option<i32>,
12919    #[prost(int64, optional, tag="4")]
12920    pub offset: ::core::option::Option<i64>,
12921    #[prost(int64, optional, tag="5")]
12922    pub len: ::core::option::Option<i64>,
12923    #[prost(int64, optional, tag="6")]
12924    pub size: ::core::option::Option<i64>,
12925    #[prost(uint64, optional, tag="7")]
12926    pub blocks: ::core::option::Option<u64>,
12927    #[prost(int32, optional, tag="8")]
12928    pub ret: ::core::option::Option<i32>,
12929}
12930#[derive(Clone, PartialEq, ::prost::Message)]
12931pub struct F2fsGetDataBlockFtraceEvent {
12932    #[prost(uint64, optional, tag="1")]
12933    pub dev: ::core::option::Option<u64>,
12934    #[prost(uint64, optional, tag="2")]
12935    pub ino: ::core::option::Option<u64>,
12936    #[prost(uint64, optional, tag="3")]
12937    pub iblock: ::core::option::Option<u64>,
12938    #[prost(uint64, optional, tag="4")]
12939    pub bh_start: ::core::option::Option<u64>,
12940    #[prost(uint64, optional, tag="5")]
12941    pub bh_size: ::core::option::Option<u64>,
12942    #[prost(int32, optional, tag="6")]
12943    pub ret: ::core::option::Option<i32>,
12944}
12945#[derive(Clone, PartialEq, ::prost::Message)]
12946pub struct F2fsGetVictimFtraceEvent {
12947    #[prost(uint64, optional, tag="1")]
12948    pub dev: ::core::option::Option<u64>,
12949    #[prost(int32, optional, tag="2")]
12950    pub r#type: ::core::option::Option<i32>,
12951    #[prost(int32, optional, tag="3")]
12952    pub gc_type: ::core::option::Option<i32>,
12953    #[prost(int32, optional, tag="4")]
12954    pub alloc_mode: ::core::option::Option<i32>,
12955    #[prost(int32, optional, tag="5")]
12956    pub gc_mode: ::core::option::Option<i32>,
12957    #[prost(uint32, optional, tag="6")]
12958    pub victim: ::core::option::Option<u32>,
12959    #[prost(uint32, optional, tag="7")]
12960    pub ofs_unit: ::core::option::Option<u32>,
12961    #[prost(uint32, optional, tag="8")]
12962    pub pre_victim: ::core::option::Option<u32>,
12963    #[prost(uint32, optional, tag="9")]
12964    pub prefree: ::core::option::Option<u32>,
12965    #[prost(uint32, optional, tag="10")]
12966    pub free: ::core::option::Option<u32>,
12967    #[prost(uint32, optional, tag="11")]
12968    pub cost: ::core::option::Option<u32>,
12969}
12970#[derive(Clone, PartialEq, ::prost::Message)]
12971pub struct F2fsIgetFtraceEvent {
12972    #[prost(uint64, optional, tag="1")]
12973    pub dev: ::core::option::Option<u64>,
12974    #[prost(uint64, optional, tag="2")]
12975    pub ino: ::core::option::Option<u64>,
12976    #[prost(uint64, optional, tag="3")]
12977    pub pino: ::core::option::Option<u64>,
12978    #[prost(uint32, optional, tag="4")]
12979    pub mode: ::core::option::Option<u32>,
12980    #[prost(int64, optional, tag="5")]
12981    pub size: ::core::option::Option<i64>,
12982    #[prost(uint32, optional, tag="6")]
12983    pub nlink: ::core::option::Option<u32>,
12984    #[prost(uint64, optional, tag="7")]
12985    pub blocks: ::core::option::Option<u64>,
12986    #[prost(uint32, optional, tag="8")]
12987    pub advise: ::core::option::Option<u32>,
12988}
12989#[derive(Clone, PartialEq, ::prost::Message)]
12990pub struct F2fsIgetExitFtraceEvent {
12991    #[prost(uint64, optional, tag="1")]
12992    pub dev: ::core::option::Option<u64>,
12993    #[prost(uint64, optional, tag="2")]
12994    pub ino: ::core::option::Option<u64>,
12995    #[prost(int32, optional, tag="3")]
12996    pub ret: ::core::option::Option<i32>,
12997}
12998#[derive(Clone, PartialEq, ::prost::Message)]
12999pub struct F2fsNewInodeFtraceEvent {
13000    #[prost(uint64, optional, tag="1")]
13001    pub dev: ::core::option::Option<u64>,
13002    #[prost(uint64, optional, tag="2")]
13003    pub ino: ::core::option::Option<u64>,
13004    #[prost(int32, optional, tag="3")]
13005    pub ret: ::core::option::Option<i32>,
13006}
13007#[derive(Clone, PartialEq, ::prost::Message)]
13008pub struct F2fsReadpageFtraceEvent {
13009    #[prost(uint64, optional, tag="1")]
13010    pub dev: ::core::option::Option<u64>,
13011    #[prost(uint64, optional, tag="2")]
13012    pub ino: ::core::option::Option<u64>,
13013    #[prost(uint64, optional, tag="3")]
13014    pub index: ::core::option::Option<u64>,
13015    #[prost(uint64, optional, tag="4")]
13016    pub blkaddr: ::core::option::Option<u64>,
13017    #[prost(int32, optional, tag="5")]
13018    pub r#type: ::core::option::Option<i32>,
13019    #[prost(int32, optional, tag="6")]
13020    pub dir: ::core::option::Option<i32>,
13021    #[prost(int32, optional, tag="7")]
13022    pub dirty: ::core::option::Option<i32>,
13023    #[prost(int32, optional, tag="8")]
13024    pub uptodate: ::core::option::Option<i32>,
13025}
13026#[derive(Clone, PartialEq, ::prost::Message)]
13027pub struct F2fsReserveNewBlockFtraceEvent {
13028    #[prost(uint64, optional, tag="1")]
13029    pub dev: ::core::option::Option<u64>,
13030    #[prost(uint32, optional, tag="2")]
13031    pub nid: ::core::option::Option<u32>,
13032    #[prost(uint32, optional, tag="3")]
13033    pub ofs_in_node: ::core::option::Option<u32>,
13034}
13035#[derive(Clone, PartialEq, ::prost::Message)]
13036pub struct F2fsSetPageDirtyFtraceEvent {
13037    #[prost(uint64, optional, tag="1")]
13038    pub dev: ::core::option::Option<u64>,
13039    #[prost(uint64, optional, tag="2")]
13040    pub ino: ::core::option::Option<u64>,
13041    #[prost(int32, optional, tag="3")]
13042    pub r#type: ::core::option::Option<i32>,
13043    #[prost(int32, optional, tag="4")]
13044    pub dir: ::core::option::Option<i32>,
13045    #[prost(uint64, optional, tag="5")]
13046    pub index: ::core::option::Option<u64>,
13047    #[prost(int32, optional, tag="6")]
13048    pub dirty: ::core::option::Option<i32>,
13049    #[prost(int32, optional, tag="7")]
13050    pub uptodate: ::core::option::Option<i32>,
13051}
13052#[derive(Clone, PartialEq, ::prost::Message)]
13053pub struct F2fsSubmitWritePageFtraceEvent {
13054    #[prost(uint64, optional, tag="1")]
13055    pub dev: ::core::option::Option<u64>,
13056    #[prost(uint64, optional, tag="2")]
13057    pub ino: ::core::option::Option<u64>,
13058    #[prost(int32, optional, tag="3")]
13059    pub r#type: ::core::option::Option<i32>,
13060    #[prost(uint64, optional, tag="4")]
13061    pub index: ::core::option::Option<u64>,
13062    #[prost(uint32, optional, tag="5")]
13063    pub block: ::core::option::Option<u32>,
13064}
13065#[derive(Clone, PartialEq, ::prost::Message)]
13066pub struct F2fsSyncFileEnterFtraceEvent {
13067    #[prost(uint64, optional, tag="1")]
13068    pub dev: ::core::option::Option<u64>,
13069    #[prost(uint64, optional, tag="2")]
13070    pub ino: ::core::option::Option<u64>,
13071    #[prost(uint64, optional, tag="3")]
13072    pub pino: ::core::option::Option<u64>,
13073    #[prost(uint32, optional, tag="4")]
13074    pub mode: ::core::option::Option<u32>,
13075    #[prost(int64, optional, tag="5")]
13076    pub size: ::core::option::Option<i64>,
13077    #[prost(uint32, optional, tag="6")]
13078    pub nlink: ::core::option::Option<u32>,
13079    #[prost(uint64, optional, tag="7")]
13080    pub blocks: ::core::option::Option<u64>,
13081    #[prost(uint32, optional, tag="8")]
13082    pub advise: ::core::option::Option<u32>,
13083}
13084#[derive(Clone, PartialEq, ::prost::Message)]
13085pub struct F2fsSyncFileExitFtraceEvent {
13086    #[prost(uint64, optional, tag="1")]
13087    pub dev: ::core::option::Option<u64>,
13088    #[prost(uint64, optional, tag="2")]
13089    pub ino: ::core::option::Option<u64>,
13090    #[prost(uint32, optional, tag="3")]
13091    pub need_cp: ::core::option::Option<u32>,
13092    #[prost(int32, optional, tag="4")]
13093    pub datasync: ::core::option::Option<i32>,
13094    #[prost(int32, optional, tag="5")]
13095    pub ret: ::core::option::Option<i32>,
13096    #[prost(int32, optional, tag="6")]
13097    pub cp_reason: ::core::option::Option<i32>,
13098}
13099#[derive(Clone, PartialEq, ::prost::Message)]
13100pub struct F2fsSyncFsFtraceEvent {
13101    #[prost(uint64, optional, tag="1")]
13102    pub dev: ::core::option::Option<u64>,
13103    #[prost(int32, optional, tag="2")]
13104    pub dirty: ::core::option::Option<i32>,
13105    #[prost(int32, optional, tag="3")]
13106    pub wait: ::core::option::Option<i32>,
13107}
13108#[derive(Clone, PartialEq, ::prost::Message)]
13109pub struct F2fsTruncateFtraceEvent {
13110    #[prost(uint64, optional, tag="1")]
13111    pub dev: ::core::option::Option<u64>,
13112    #[prost(uint64, optional, tag="2")]
13113    pub ino: ::core::option::Option<u64>,
13114    #[prost(uint64, optional, tag="3")]
13115    pub pino: ::core::option::Option<u64>,
13116    #[prost(uint32, optional, tag="4")]
13117    pub mode: ::core::option::Option<u32>,
13118    #[prost(int64, optional, tag="5")]
13119    pub size: ::core::option::Option<i64>,
13120    #[prost(uint32, optional, tag="6")]
13121    pub nlink: ::core::option::Option<u32>,
13122    #[prost(uint64, optional, tag="7")]
13123    pub blocks: ::core::option::Option<u64>,
13124    #[prost(uint32, optional, tag="8")]
13125    pub advise: ::core::option::Option<u32>,
13126}
13127#[derive(Clone, PartialEq, ::prost::Message)]
13128pub struct F2fsTruncateBlocksEnterFtraceEvent {
13129    #[prost(uint64, optional, tag="1")]
13130    pub dev: ::core::option::Option<u64>,
13131    #[prost(uint64, optional, tag="2")]
13132    pub ino: ::core::option::Option<u64>,
13133    #[prost(int64, optional, tag="3")]
13134    pub size: ::core::option::Option<i64>,
13135    #[prost(uint64, optional, tag="4")]
13136    pub blocks: ::core::option::Option<u64>,
13137    #[prost(uint64, optional, tag="5")]
13138    pub from: ::core::option::Option<u64>,
13139}
13140#[derive(Clone, PartialEq, ::prost::Message)]
13141pub struct F2fsTruncateBlocksExitFtraceEvent {
13142    #[prost(uint64, optional, tag="1")]
13143    pub dev: ::core::option::Option<u64>,
13144    #[prost(uint64, optional, tag="2")]
13145    pub ino: ::core::option::Option<u64>,
13146    #[prost(int32, optional, tag="3")]
13147    pub ret: ::core::option::Option<i32>,
13148}
13149#[derive(Clone, PartialEq, ::prost::Message)]
13150pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
13151    #[prost(uint64, optional, tag="1")]
13152    pub dev: ::core::option::Option<u64>,
13153    #[prost(uint64, optional, tag="2")]
13154    pub ino: ::core::option::Option<u64>,
13155    #[prost(uint32, optional, tag="3")]
13156    pub nid: ::core::option::Option<u32>,
13157    #[prost(uint32, optional, tag="4")]
13158    pub ofs: ::core::option::Option<u32>,
13159    #[prost(int32, optional, tag="5")]
13160    pub free: ::core::option::Option<i32>,
13161}
13162#[derive(Clone, PartialEq, ::prost::Message)]
13163pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
13164    #[prost(uint64, optional, tag="1")]
13165    pub dev: ::core::option::Option<u64>,
13166    #[prost(uint64, optional, tag="2")]
13167    pub ino: ::core::option::Option<u64>,
13168    #[prost(int64, optional, tag="3")]
13169    pub size: ::core::option::Option<i64>,
13170    #[prost(uint64, optional, tag="4")]
13171    pub blocks: ::core::option::Option<u64>,
13172    #[prost(uint64, optional, tag="5")]
13173    pub from: ::core::option::Option<u64>,
13174}
13175#[derive(Clone, PartialEq, ::prost::Message)]
13176pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
13177    #[prost(uint64, optional, tag="1")]
13178    pub dev: ::core::option::Option<u64>,
13179    #[prost(uint64, optional, tag="2")]
13180    pub ino: ::core::option::Option<u64>,
13181    #[prost(int32, optional, tag="3")]
13182    pub ret: ::core::option::Option<i32>,
13183}
13184#[derive(Clone, PartialEq, ::prost::Message)]
13185pub struct F2fsTruncateNodeFtraceEvent {
13186    #[prost(uint64, optional, tag="1")]
13187    pub dev: ::core::option::Option<u64>,
13188    #[prost(uint64, optional, tag="2")]
13189    pub ino: ::core::option::Option<u64>,
13190    #[prost(uint32, optional, tag="3")]
13191    pub nid: ::core::option::Option<u32>,
13192    #[prost(uint32, optional, tag="4")]
13193    pub blk_addr: ::core::option::Option<u32>,
13194}
13195#[derive(Clone, PartialEq, ::prost::Message)]
13196pub struct F2fsTruncateNodesEnterFtraceEvent {
13197    #[prost(uint64, optional, tag="1")]
13198    pub dev: ::core::option::Option<u64>,
13199    #[prost(uint64, optional, tag="2")]
13200    pub ino: ::core::option::Option<u64>,
13201    #[prost(uint32, optional, tag="3")]
13202    pub nid: ::core::option::Option<u32>,
13203    #[prost(uint32, optional, tag="4")]
13204    pub blk_addr: ::core::option::Option<u32>,
13205}
13206#[derive(Clone, PartialEq, ::prost::Message)]
13207pub struct F2fsTruncateNodesExitFtraceEvent {
13208    #[prost(uint64, optional, tag="1")]
13209    pub dev: ::core::option::Option<u64>,
13210    #[prost(uint64, optional, tag="2")]
13211    pub ino: ::core::option::Option<u64>,
13212    #[prost(int32, optional, tag="3")]
13213    pub ret: ::core::option::Option<i32>,
13214}
13215#[derive(Clone, PartialEq, ::prost::Message)]
13216pub struct F2fsTruncatePartialNodesFtraceEvent {
13217    #[prost(uint64, optional, tag="1")]
13218    pub dev: ::core::option::Option<u64>,
13219    #[prost(uint64, optional, tag="2")]
13220    pub ino: ::core::option::Option<u64>,
13221    #[prost(uint32, optional, tag="3")]
13222    pub nid: ::core::option::Option<u32>,
13223    #[prost(int32, optional, tag="4")]
13224    pub depth: ::core::option::Option<i32>,
13225    #[prost(int32, optional, tag="5")]
13226    pub err: ::core::option::Option<i32>,
13227}
13228#[derive(Clone, PartialEq, ::prost::Message)]
13229pub struct F2fsUnlinkEnterFtraceEvent {
13230    #[prost(uint64, optional, tag="1")]
13231    pub dev: ::core::option::Option<u64>,
13232    #[prost(uint64, optional, tag="2")]
13233    pub ino: ::core::option::Option<u64>,
13234    #[prost(int64, optional, tag="3")]
13235    pub size: ::core::option::Option<i64>,
13236    #[prost(uint64, optional, tag="4")]
13237    pub blocks: ::core::option::Option<u64>,
13238    #[prost(string, optional, tag="5")]
13239    pub name: ::core::option::Option<::prost::alloc::string::String>,
13240}
13241#[derive(Clone, PartialEq, ::prost::Message)]
13242pub struct F2fsUnlinkExitFtraceEvent {
13243    #[prost(uint64, optional, tag="1")]
13244    pub dev: ::core::option::Option<u64>,
13245    #[prost(uint64, optional, tag="2")]
13246    pub ino: ::core::option::Option<u64>,
13247    #[prost(int32, optional, tag="3")]
13248    pub ret: ::core::option::Option<i32>,
13249}
13250#[derive(Clone, PartialEq, ::prost::Message)]
13251pub struct F2fsVmPageMkwriteFtraceEvent {
13252    #[prost(uint64, optional, tag="1")]
13253    pub dev: ::core::option::Option<u64>,
13254    #[prost(uint64, optional, tag="2")]
13255    pub ino: ::core::option::Option<u64>,
13256    #[prost(int32, optional, tag="3")]
13257    pub r#type: ::core::option::Option<i32>,
13258    #[prost(int32, optional, tag="4")]
13259    pub dir: ::core::option::Option<i32>,
13260    #[prost(uint64, optional, tag="5")]
13261    pub index: ::core::option::Option<u64>,
13262    #[prost(int32, optional, tag="6")]
13263    pub dirty: ::core::option::Option<i32>,
13264    #[prost(int32, optional, tag="7")]
13265    pub uptodate: ::core::option::Option<i32>,
13266}
13267#[derive(Clone, PartialEq, ::prost::Message)]
13268pub struct F2fsWriteBeginFtraceEvent {
13269    #[prost(uint64, optional, tag="1")]
13270    pub dev: ::core::option::Option<u64>,
13271    #[prost(uint64, optional, tag="2")]
13272    pub ino: ::core::option::Option<u64>,
13273    #[prost(int64, optional, tag="3")]
13274    pub pos: ::core::option::Option<i64>,
13275    #[prost(uint32, optional, tag="4")]
13276    pub len: ::core::option::Option<u32>,
13277    #[prost(uint32, optional, tag="5")]
13278    pub flags: ::core::option::Option<u32>,
13279}
13280#[derive(Clone, PartialEq, ::prost::Message)]
13281pub struct F2fsWriteCheckpointFtraceEvent {
13282    #[prost(uint64, optional, tag="1")]
13283    pub dev: ::core::option::Option<u64>,
13284    #[prost(uint32, optional, tag="2")]
13285    pub is_umount: ::core::option::Option<u32>,
13286    #[prost(string, optional, tag="3")]
13287    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13288    #[prost(int32, optional, tag="4")]
13289    pub reason: ::core::option::Option<i32>,
13290    #[prost(uint32, optional, tag="5")]
13291    pub phase: ::core::option::Option<u32>,
13292}
13293#[derive(Clone, PartialEq, ::prost::Message)]
13294pub struct F2fsWriteEndFtraceEvent {
13295    #[prost(uint64, optional, tag="1")]
13296    pub dev: ::core::option::Option<u64>,
13297    #[prost(uint64, optional, tag="2")]
13298    pub ino: ::core::option::Option<u64>,
13299    #[prost(int64, optional, tag="3")]
13300    pub pos: ::core::option::Option<i64>,
13301    #[prost(uint32, optional, tag="4")]
13302    pub len: ::core::option::Option<u32>,
13303    #[prost(uint32, optional, tag="5")]
13304    pub copied: ::core::option::Option<u32>,
13305}
13306#[derive(Clone, PartialEq, ::prost::Message)]
13307pub struct F2fsIostatFtraceEvent {
13308    #[prost(uint64, optional, tag="1")]
13309    pub app_bio: ::core::option::Option<u64>,
13310    #[prost(uint64, optional, tag="2")]
13311    pub app_brio: ::core::option::Option<u64>,
13312    #[prost(uint64, optional, tag="3")]
13313    pub app_dio: ::core::option::Option<u64>,
13314    #[prost(uint64, optional, tag="4")]
13315    pub app_drio: ::core::option::Option<u64>,
13316    #[prost(uint64, optional, tag="5")]
13317    pub app_mio: ::core::option::Option<u64>,
13318    #[prost(uint64, optional, tag="6")]
13319    pub app_mrio: ::core::option::Option<u64>,
13320    #[prost(uint64, optional, tag="7")]
13321    pub app_rio: ::core::option::Option<u64>,
13322    #[prost(uint64, optional, tag="8")]
13323    pub app_wio: ::core::option::Option<u64>,
13324    #[prost(uint64, optional, tag="9")]
13325    pub dev: ::core::option::Option<u64>,
13326    #[prost(uint64, optional, tag="10")]
13327    pub fs_cdrio: ::core::option::Option<u64>,
13328    #[prost(uint64, optional, tag="11")]
13329    pub fs_cp_dio: ::core::option::Option<u64>,
13330    #[prost(uint64, optional, tag="12")]
13331    pub fs_cp_mio: ::core::option::Option<u64>,
13332    #[prost(uint64, optional, tag="13")]
13333    pub fs_cp_nio: ::core::option::Option<u64>,
13334    #[prost(uint64, optional, tag="14")]
13335    pub fs_dio: ::core::option::Option<u64>,
13336    #[prost(uint64, optional, tag="15")]
13337    pub fs_discard: ::core::option::Option<u64>,
13338    #[prost(uint64, optional, tag="16")]
13339    pub fs_drio: ::core::option::Option<u64>,
13340    #[prost(uint64, optional, tag="17")]
13341    pub fs_gc_dio: ::core::option::Option<u64>,
13342    #[prost(uint64, optional, tag="18")]
13343    pub fs_gc_nio: ::core::option::Option<u64>,
13344    #[prost(uint64, optional, tag="19")]
13345    pub fs_gdrio: ::core::option::Option<u64>,
13346    #[prost(uint64, optional, tag="20")]
13347    pub fs_mio: ::core::option::Option<u64>,
13348    #[prost(uint64, optional, tag="21")]
13349    pub fs_mrio: ::core::option::Option<u64>,
13350    #[prost(uint64, optional, tag="22")]
13351    pub fs_nio: ::core::option::Option<u64>,
13352    #[prost(uint64, optional, tag="23")]
13353    pub fs_nrio: ::core::option::Option<u64>,
13354}
13355#[derive(Clone, PartialEq, ::prost::Message)]
13356pub struct F2fsIostatLatencyFtraceEvent {
13357    #[prost(uint32, optional, tag="1")]
13358    pub d_rd_avg: ::core::option::Option<u32>,
13359    #[prost(uint32, optional, tag="2")]
13360    pub d_rd_cnt: ::core::option::Option<u32>,
13361    #[prost(uint32, optional, tag="3")]
13362    pub d_rd_peak: ::core::option::Option<u32>,
13363    #[prost(uint32, optional, tag="4")]
13364    pub d_wr_as_avg: ::core::option::Option<u32>,
13365    #[prost(uint32, optional, tag="5")]
13366    pub d_wr_as_cnt: ::core::option::Option<u32>,
13367    #[prost(uint32, optional, tag="6")]
13368    pub d_wr_as_peak: ::core::option::Option<u32>,
13369    #[prost(uint32, optional, tag="7")]
13370    pub d_wr_s_avg: ::core::option::Option<u32>,
13371    #[prost(uint32, optional, tag="8")]
13372    pub d_wr_s_cnt: ::core::option::Option<u32>,
13373    #[prost(uint32, optional, tag="9")]
13374    pub d_wr_s_peak: ::core::option::Option<u32>,
13375    #[prost(uint64, optional, tag="10")]
13376    pub dev: ::core::option::Option<u64>,
13377    #[prost(uint32, optional, tag="11")]
13378    pub m_rd_avg: ::core::option::Option<u32>,
13379    #[prost(uint32, optional, tag="12")]
13380    pub m_rd_cnt: ::core::option::Option<u32>,
13381    #[prost(uint32, optional, tag="13")]
13382    pub m_rd_peak: ::core::option::Option<u32>,
13383    #[prost(uint32, optional, tag="14")]
13384    pub m_wr_as_avg: ::core::option::Option<u32>,
13385    #[prost(uint32, optional, tag="15")]
13386    pub m_wr_as_cnt: ::core::option::Option<u32>,
13387    #[prost(uint32, optional, tag="16")]
13388    pub m_wr_as_peak: ::core::option::Option<u32>,
13389    #[prost(uint32, optional, tag="17")]
13390    pub m_wr_s_avg: ::core::option::Option<u32>,
13391    #[prost(uint32, optional, tag="18")]
13392    pub m_wr_s_cnt: ::core::option::Option<u32>,
13393    #[prost(uint32, optional, tag="19")]
13394    pub m_wr_s_peak: ::core::option::Option<u32>,
13395    #[prost(uint32, optional, tag="20")]
13396    pub n_rd_avg: ::core::option::Option<u32>,
13397    #[prost(uint32, optional, tag="21")]
13398    pub n_rd_cnt: ::core::option::Option<u32>,
13399    #[prost(uint32, optional, tag="22")]
13400    pub n_rd_peak: ::core::option::Option<u32>,
13401    #[prost(uint32, optional, tag="23")]
13402    pub n_wr_as_avg: ::core::option::Option<u32>,
13403    #[prost(uint32, optional, tag="24")]
13404    pub n_wr_as_cnt: ::core::option::Option<u32>,
13405    #[prost(uint32, optional, tag="25")]
13406    pub n_wr_as_peak: ::core::option::Option<u32>,
13407    #[prost(uint32, optional, tag="26")]
13408    pub n_wr_s_avg: ::core::option::Option<u32>,
13409    #[prost(uint32, optional, tag="27")]
13410    pub n_wr_s_cnt: ::core::option::Option<u32>,
13411    #[prost(uint32, optional, tag="28")]
13412    pub n_wr_s_peak: ::core::option::Option<u32>,
13413}
13414#[derive(Clone, PartialEq, ::prost::Message)]
13415pub struct F2fsBackgroundGcFtraceEvent {
13416    #[prost(uint64, optional, tag="1")]
13417    pub dev: ::core::option::Option<u64>,
13418    #[prost(uint32, optional, tag="2")]
13419    pub wait_ms: ::core::option::Option<u32>,
13420    #[prost(uint32, optional, tag="3")]
13421    pub prefree: ::core::option::Option<u32>,
13422    #[prost(uint32, optional, tag="4")]
13423    pub free: ::core::option::Option<u32>,
13424}
13425#[derive(Clone, PartialEq, ::prost::Message)]
13426pub struct F2fsGcBeginFtraceEvent {
13427    #[prost(uint64, optional, tag="1")]
13428    pub dev: ::core::option::Option<u64>,
13429    #[prost(uint32, optional, tag="2")]
13430    pub sync: ::core::option::Option<u32>,
13431    #[prost(uint32, optional, tag="3")]
13432    pub background: ::core::option::Option<u32>,
13433    #[prost(int64, optional, tag="4")]
13434    pub dirty_nodes: ::core::option::Option<i64>,
13435    #[prost(int64, optional, tag="5")]
13436    pub dirty_dents: ::core::option::Option<i64>,
13437    #[prost(int64, optional, tag="6")]
13438    pub dirty_imeta: ::core::option::Option<i64>,
13439    #[prost(uint32, optional, tag="7")]
13440    pub free_sec: ::core::option::Option<u32>,
13441    #[prost(uint32, optional, tag="8")]
13442    pub free_seg: ::core::option::Option<u32>,
13443    #[prost(int32, optional, tag="9")]
13444    pub reserved_seg: ::core::option::Option<i32>,
13445    #[prost(uint32, optional, tag="10")]
13446    pub prefree_seg: ::core::option::Option<u32>,
13447    #[prost(int32, optional, tag="11")]
13448    pub gc_type: ::core::option::Option<i32>,
13449    #[prost(uint32, optional, tag="12")]
13450    pub no_bg_gc: ::core::option::Option<u32>,
13451    #[prost(uint32, optional, tag="13")]
13452    pub nr_free_secs: ::core::option::Option<u32>,
13453}
13454#[derive(Clone, PartialEq, ::prost::Message)]
13455pub struct F2fsGcEndFtraceEvent {
13456    #[prost(uint64, optional, tag="1")]
13457    pub dev: ::core::option::Option<u64>,
13458    #[prost(int32, optional, tag="2")]
13459    pub ret: ::core::option::Option<i32>,
13460    #[prost(int32, optional, tag="3")]
13461    pub seg_freed: ::core::option::Option<i32>,
13462    #[prost(int32, optional, tag="4")]
13463    pub sec_freed: ::core::option::Option<i32>,
13464    #[prost(int64, optional, tag="5")]
13465    pub dirty_nodes: ::core::option::Option<i64>,
13466    #[prost(int64, optional, tag="6")]
13467    pub dirty_dents: ::core::option::Option<i64>,
13468    #[prost(int64, optional, tag="7")]
13469    pub dirty_imeta: ::core::option::Option<i64>,
13470    #[prost(uint32, optional, tag="8")]
13471    pub free_sec: ::core::option::Option<u32>,
13472    #[prost(uint32, optional, tag="9")]
13473    pub free_seg: ::core::option::Option<u32>,
13474    #[prost(int32, optional, tag="10")]
13475    pub reserved_seg: ::core::option::Option<i32>,
13476    #[prost(uint32, optional, tag="11")]
13477    pub prefree_seg: ::core::option::Option<u32>,
13478}
13479#[derive(Clone, PartialEq, ::prost::Message)]
13480pub struct F2fsLockElapsedTimeFtraceEvent {
13481    #[prost(uint64, optional, tag="1")]
13482    pub dev: ::core::option::Option<u64>,
13483    #[prost(string, optional, tag="2")]
13484    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13485    #[prost(int32, optional, tag="3")]
13486    pub pid: ::core::option::Option<i32>,
13487    #[prost(int32, optional, tag="4")]
13488    pub prio: ::core::option::Option<i32>,
13489    #[prost(int32, optional, tag="5")]
13490    pub ioprio_class: ::core::option::Option<i32>,
13491    #[prost(int32, optional, tag="6")]
13492    pub ioprio_data: ::core::option::Option<i32>,
13493    #[prost(uint32, optional, tag="7")]
13494    pub lock_name: ::core::option::Option<u32>,
13495    #[prost(uint32, optional, tag="8")]
13496    pub is_write: ::core::option::Option<u32>,
13497    #[prost(uint64, optional, tag="9")]
13498    pub total_time: ::core::option::Option<u64>,
13499    #[prost(uint64, optional, tag="10")]
13500    pub running_time: ::core::option::Option<u64>,
13501    #[prost(uint64, optional, tag="11")]
13502    pub runnable_time: ::core::option::Option<u64>,
13503    #[prost(uint64, optional, tag="12")]
13504    pub io_sleep_time: ::core::option::Option<u64>,
13505    #[prost(uint64, optional, tag="13")]
13506    pub other_time: ::core::option::Option<u64>,
13507}
13508// End of protos/perfetto/trace/ftrace/f2fs.proto
13509
13510// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
13511
13512#[derive(Clone, PartialEq, ::prost::Message)]
13513pub struct FastrpcDmaStatFtraceEvent {
13514    #[prost(int32, optional, tag="1")]
13515    pub cid: ::core::option::Option<i32>,
13516    #[prost(int64, optional, tag="2")]
13517    pub len: ::core::option::Option<i64>,
13518    #[prost(uint64, optional, tag="3")]
13519    pub total_allocated: ::core::option::Option<u64>,
13520}
13521#[derive(Clone, PartialEq, ::prost::Message)]
13522pub struct FastrpcDmaFreeFtraceEvent {
13523    #[prost(int32, optional, tag="1")]
13524    pub cid: ::core::option::Option<i32>,
13525    #[prost(uint64, optional, tag="2")]
13526    pub phys: ::core::option::Option<u64>,
13527    #[prost(uint64, optional, tag="3")]
13528    pub size: ::core::option::Option<u64>,
13529}
13530#[derive(Clone, PartialEq, ::prost::Message)]
13531pub struct FastrpcDmaAllocFtraceEvent {
13532    #[prost(int32, optional, tag="1")]
13533    pub cid: ::core::option::Option<i32>,
13534    #[prost(uint64, optional, tag="2")]
13535    pub phys: ::core::option::Option<u64>,
13536    #[prost(uint64, optional, tag="3")]
13537    pub size: ::core::option::Option<u64>,
13538    #[prost(uint64, optional, tag="4")]
13539    pub attr: ::core::option::Option<u64>,
13540    #[prost(int32, optional, tag="5")]
13541    pub mflags: ::core::option::Option<i32>,
13542}
13543#[derive(Clone, PartialEq, ::prost::Message)]
13544pub struct FastrpcDmaUnmapFtraceEvent {
13545    #[prost(int32, optional, tag="1")]
13546    pub cid: ::core::option::Option<i32>,
13547    #[prost(uint64, optional, tag="2")]
13548    pub phys: ::core::option::Option<u64>,
13549    #[prost(uint64, optional, tag="3")]
13550    pub size: ::core::option::Option<u64>,
13551}
13552#[derive(Clone, PartialEq, ::prost::Message)]
13553pub struct FastrpcDmaMapFtraceEvent {
13554    #[prost(int32, optional, tag="1")]
13555    pub cid: ::core::option::Option<i32>,
13556    #[prost(int32, optional, tag="2")]
13557    pub fd: ::core::option::Option<i32>,
13558    #[prost(uint64, optional, tag="3")]
13559    pub phys: ::core::option::Option<u64>,
13560    #[prost(uint64, optional, tag="4")]
13561    pub size: ::core::option::Option<u64>,
13562    #[prost(uint64, optional, tag="5")]
13563    pub len: ::core::option::Option<u64>,
13564    #[prost(uint32, optional, tag="6")]
13565    pub attr: ::core::option::Option<u32>,
13566    #[prost(int32, optional, tag="7")]
13567    pub mflags: ::core::option::Option<i32>,
13568}
13569// End of protos/perfetto/trace/ftrace/fastrpc.proto
13570
13571// Begin of protos/perfetto/trace/ftrace/fence.proto
13572
13573#[derive(Clone, PartialEq, ::prost::Message)]
13574pub struct FenceInitFtraceEvent {
13575    #[prost(uint32, optional, tag="1")]
13576    pub context: ::core::option::Option<u32>,
13577    #[prost(string, optional, tag="2")]
13578    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13579    #[prost(uint32, optional, tag="3")]
13580    pub seqno: ::core::option::Option<u32>,
13581    #[prost(string, optional, tag="4")]
13582    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13583}
13584#[derive(Clone, PartialEq, ::prost::Message)]
13585pub struct FenceDestroyFtraceEvent {
13586    #[prost(uint32, optional, tag="1")]
13587    pub context: ::core::option::Option<u32>,
13588    #[prost(string, optional, tag="2")]
13589    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13590    #[prost(uint32, optional, tag="3")]
13591    pub seqno: ::core::option::Option<u32>,
13592    #[prost(string, optional, tag="4")]
13593    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13594}
13595#[derive(Clone, PartialEq, ::prost::Message)]
13596pub struct FenceEnableSignalFtraceEvent {
13597    #[prost(uint32, optional, tag="1")]
13598    pub context: ::core::option::Option<u32>,
13599    #[prost(string, optional, tag="2")]
13600    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13601    #[prost(uint32, optional, tag="3")]
13602    pub seqno: ::core::option::Option<u32>,
13603    #[prost(string, optional, tag="4")]
13604    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13605}
13606#[derive(Clone, PartialEq, ::prost::Message)]
13607pub struct FenceSignaledFtraceEvent {
13608    #[prost(uint32, optional, tag="1")]
13609    pub context: ::core::option::Option<u32>,
13610    #[prost(string, optional, tag="2")]
13611    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13612    #[prost(uint32, optional, tag="3")]
13613    pub seqno: ::core::option::Option<u32>,
13614    #[prost(string, optional, tag="4")]
13615    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13616}
13617// End of protos/perfetto/trace/ftrace/fence.proto
13618
13619// Begin of protos/perfetto/trace/ftrace/filemap.proto
13620
13621#[derive(Clone, PartialEq, ::prost::Message)]
13622pub struct MmFilemapAddToPageCacheFtraceEvent {
13623    #[prost(uint64, optional, tag="1")]
13624    pub pfn: ::core::option::Option<u64>,
13625    #[prost(uint64, optional, tag="2")]
13626    pub i_ino: ::core::option::Option<u64>,
13627    #[prost(uint64, optional, tag="3")]
13628    pub index: ::core::option::Option<u64>,
13629    #[prost(uint64, optional, tag="4")]
13630    pub s_dev: ::core::option::Option<u64>,
13631    #[prost(uint64, optional, tag="5")]
13632    pub page: ::core::option::Option<u64>,
13633}
13634#[derive(Clone, PartialEq, ::prost::Message)]
13635pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
13636    #[prost(uint64, optional, tag="1")]
13637    pub pfn: ::core::option::Option<u64>,
13638    #[prost(uint64, optional, tag="2")]
13639    pub i_ino: ::core::option::Option<u64>,
13640    #[prost(uint64, optional, tag="3")]
13641    pub index: ::core::option::Option<u64>,
13642    #[prost(uint64, optional, tag="4")]
13643    pub s_dev: ::core::option::Option<u64>,
13644    #[prost(uint64, optional, tag="5")]
13645    pub page: ::core::option::Option<u64>,
13646}
13647// End of protos/perfetto/trace/ftrace/filemap.proto
13648
13649// Begin of protos/perfetto/trace/ftrace/fs.proto
13650
13651#[derive(Clone, PartialEq, ::prost::Message)]
13652pub struct DoSysOpenFtraceEvent {
13653    #[prost(string, optional, tag="1")]
13654    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13655    #[prost(int32, optional, tag="2")]
13656    pub flags: ::core::option::Option<i32>,
13657    #[prost(int32, optional, tag="3")]
13658    pub mode: ::core::option::Option<i32>,
13659}
13660#[derive(Clone, PartialEq, ::prost::Message)]
13661pub struct OpenExecFtraceEvent {
13662    #[prost(string, optional, tag="1")]
13663    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13664}
13665// End of protos/perfetto/trace/ftrace/fs.proto
13666
13667// Begin of protos/perfetto/trace/ftrace/ftrace.proto
13668
13669#[derive(Clone, PartialEq, ::prost::Message)]
13670pub struct PrintFtraceEvent {
13671    #[prost(uint64, optional, tag="1")]
13672    pub ip: ::core::option::Option<u64>,
13673    #[prost(string, optional, tag="2")]
13674    pub buf: ::core::option::Option<::prost::alloc::string::String>,
13675}
13676#[derive(Clone, PartialEq, ::prost::Message)]
13677pub struct FuncgraphEntryFtraceEvent {
13678    #[prost(int32, optional, tag="1")]
13679    pub depth: ::core::option::Option<i32>,
13680    #[prost(uint64, optional, tag="2")]
13681    pub func: ::core::option::Option<u64>,
13682}
13683#[derive(Clone, PartialEq, ::prost::Message)]
13684pub struct FuncgraphExitFtraceEvent {
13685    #[prost(uint64, optional, tag="1")]
13686    pub calltime: ::core::option::Option<u64>,
13687    #[prost(int32, optional, tag="2")]
13688    pub depth: ::core::option::Option<i32>,
13689    #[prost(uint64, optional, tag="3")]
13690    pub func: ::core::option::Option<u64>,
13691    #[prost(uint64, optional, tag="4")]
13692    pub overrun: ::core::option::Option<u64>,
13693    #[prost(uint64, optional, tag="5")]
13694    pub rettime: ::core::option::Option<u64>,
13695}
13696// End of protos/perfetto/trace/ftrace/ftrace.proto
13697
13698// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13699
13700#[derive(Clone, PartialEq, ::prost::Message)]
13701pub struct FwtpPerfettoCounterFtraceEvent {
13702    #[prost(uint64, optional, tag="1")]
13703    pub timestamp: ::core::option::Option<u64>,
13704    #[prost(uint32, optional, tag="2")]
13705    pub track_id: ::core::option::Option<u32>,
13706    #[prost(string, optional, tag="3")]
13707    pub category: ::core::option::Option<::prost::alloc::string::String>,
13708    #[prost(string, optional, tag="4")]
13709    pub name: ::core::option::Option<::prost::alloc::string::String>,
13710    #[prost(uint32, optional, tag="5")]
13711    pub value: ::core::option::Option<u32>,
13712}
13713#[derive(Clone, PartialEq, ::prost::Message)]
13714pub struct FwtpPerfettoSliceFtraceEvent {
13715    #[prost(uint64, optional, tag="1")]
13716    pub timestamp: ::core::option::Option<u64>,
13717    #[prost(uint32, optional, tag="2")]
13718    pub track_id: ::core::option::Option<u32>,
13719    #[prost(string, optional, tag="3")]
13720    pub category: ::core::option::Option<::prost::alloc::string::String>,
13721    #[prost(string, optional, tag="4")]
13722    pub name: ::core::option::Option<::prost::alloc::string::String>,
13723    #[prost(uint32, optional, tag="5")]
13724    pub begin: ::core::option::Option<u32>,
13725}
13726// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13727
13728// Begin of protos/perfetto/trace/ftrace/g2d.proto
13729
13730#[derive(Clone, PartialEq, ::prost::Message)]
13731pub struct G2dTracingMarkWriteFtraceEvent {
13732    #[prost(int32, optional, tag="1")]
13733    pub pid: ::core::option::Option<i32>,
13734    #[prost(string, optional, tag="4")]
13735    pub name: ::core::option::Option<::prost::alloc::string::String>,
13736    #[prost(uint32, optional, tag="5")]
13737    pub r#type: ::core::option::Option<u32>,
13738    #[prost(int32, optional, tag="6")]
13739    pub value: ::core::option::Option<i32>,
13740}
13741// End of protos/perfetto/trace/ftrace/g2d.proto
13742
13743// Begin of protos/perfetto/trace/ftrace/generic.proto
13744
13745/// This generic proto is used to output events in the trace
13746/// when a specific proto for that event does not exist.
13747#[derive(Clone, PartialEq, ::prost::Message)]
13748pub struct GenericFtraceEvent {
13749    #[prost(string, optional, tag="1")]
13750    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
13751    #[prost(message, repeated, tag="2")]
13752    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
13753}
13754/// Nested message and enum types in `GenericFtraceEvent`.
13755pub mod generic_ftrace_event {
13756    #[derive(Clone, PartialEq, ::prost::Message)]
13757    pub struct Field {
13758        #[prost(string, optional, tag="1")]
13759        pub name: ::core::option::Option<::prost::alloc::string::String>,
13760        #[prost(oneof="field::Value", tags="3, 4, 5")]
13761        pub value: ::core::option::Option<field::Value>,
13762    }
13763    /// Nested message and enum types in `Field`.
13764    pub mod field {
13765        #[derive(Clone, PartialEq, ::prost::Oneof)]
13766        pub enum Value {
13767            #[prost(string, tag="3")]
13768            StrValue(::prost::alloc::string::String),
13769            #[prost(int64, tag="4")]
13770            IntValue(i64),
13771            #[prost(uint64, tag="5")]
13772            UintValue(u64),
13773        }
13774    }
13775}
13776#[derive(Clone, PartialEq, ::prost::Message)]
13777pub struct KprobeEvent {
13778    #[prost(string, optional, tag="1")]
13779    pub name: ::core::option::Option<::prost::alloc::string::String>,
13780    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
13781    pub r#type: ::core::option::Option<i32>,
13782}
13783/// Nested message and enum types in `KprobeEvent`.
13784pub mod kprobe_event {
13785    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
13786    #[repr(i32)]
13787    pub enum KprobeType {
13788        Unknown = 0,
13789        Begin = 1,
13790        End = 2,
13791        Instant = 3,
13792    }
13793    impl KprobeType {
13794        /// String value of the enum field names used in the ProtoBuf definition.
13795        ///
13796        /// The values are not transformed in any way and thus are considered stable
13797        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13798        pub fn as_str_name(&self) -> &'static str {
13799            match self {
13800                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
13801                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
13802                KprobeType::End => "KPROBE_TYPE_END",
13803                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
13804            }
13805        }
13806    }
13807}
13808// End of protos/perfetto/trace/ftrace/generic.proto
13809
13810// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
13811
13812#[derive(Clone, PartialEq, ::prost::Message)]
13813pub struct GoogleIccEventFtraceEvent {
13814    #[prost(string, optional, tag="1")]
13815    pub event: ::core::option::Option<::prost::alloc::string::String>,
13816    #[prost(uint64, optional, tag="2")]
13817    pub timestamp: ::core::option::Option<u64>,
13818}
13819// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
13820
13821// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
13822
13823#[derive(Clone, PartialEq, ::prost::Message)]
13824pub struct GoogleIrmEventFtraceEvent {
13825    #[prost(string, optional, tag="1")]
13826    pub event: ::core::option::Option<::prost::alloc::string::String>,
13827    #[prost(uint64, optional, tag="2")]
13828    pub timestamp: ::core::option::Option<u64>,
13829}
13830// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
13831
13832// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
13833
13834#[derive(Clone, PartialEq, ::prost::Message)]
13835pub struct GpuMemTotalFtraceEvent {
13836    #[prost(uint32, optional, tag="1")]
13837    pub gpu_id: ::core::option::Option<u32>,
13838    #[prost(uint32, optional, tag="2")]
13839    pub pid: ::core::option::Option<u32>,
13840    #[prost(uint64, optional, tag="3")]
13841    pub size: ::core::option::Option<u64>,
13842}
13843// End of protos/perfetto/trace/ftrace/gpu_mem.proto
13844
13845// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13846
13847#[derive(Clone, PartialEq, ::prost::Message)]
13848pub struct DrmSchedJobFtraceEvent {
13849    #[prost(uint64, optional, tag="1")]
13850    pub entity: ::core::option::Option<u64>,
13851    #[prost(uint64, optional, tag="2")]
13852    pub fence: ::core::option::Option<u64>,
13853    #[prost(int32, optional, tag="3")]
13854    pub hw_job_count: ::core::option::Option<i32>,
13855    #[prost(uint64, optional, tag="4")]
13856    pub id: ::core::option::Option<u64>,
13857    #[prost(uint32, optional, tag="5")]
13858    pub job_count: ::core::option::Option<u32>,
13859    #[prost(string, optional, tag="6")]
13860    pub name: ::core::option::Option<::prost::alloc::string::String>,
13861}
13862#[derive(Clone, PartialEq, ::prost::Message)]
13863pub struct DrmRunJobFtraceEvent {
13864    #[prost(uint64, optional, tag="1")]
13865    pub entity: ::core::option::Option<u64>,
13866    #[prost(uint64, optional, tag="2")]
13867    pub fence: ::core::option::Option<u64>,
13868    #[prost(int32, optional, tag="3")]
13869    pub hw_job_count: ::core::option::Option<i32>,
13870    #[prost(uint64, optional, tag="4")]
13871    pub id: ::core::option::Option<u64>,
13872    #[prost(uint32, optional, tag="5")]
13873    pub job_count: ::core::option::Option<u32>,
13874    #[prost(string, optional, tag="6")]
13875    pub name: ::core::option::Option<::prost::alloc::string::String>,
13876}
13877#[derive(Clone, PartialEq, ::prost::Message)]
13878pub struct DrmSchedProcessJobFtraceEvent {
13879    #[prost(uint64, optional, tag="1")]
13880    pub fence: ::core::option::Option<u64>,
13881}
13882#[derive(Clone, PartialEq, ::prost::Message)]
13883pub struct DrmSchedJobAddDepFtraceEvent {
13884    #[prost(uint64, optional, tag="1")]
13885    pub fence_context: ::core::option::Option<u64>,
13886    #[prost(uint64, optional, tag="2")]
13887    pub fence_seqno: ::core::option::Option<u64>,
13888    #[prost(uint64, optional, tag="3")]
13889    pub ctx: ::core::option::Option<u64>,
13890    #[prost(uint64, optional, tag="4")]
13891    pub seqno: ::core::option::Option<u64>,
13892}
13893#[derive(Clone, PartialEq, ::prost::Message)]
13894pub struct DrmSchedJobDoneFtraceEvent {
13895    #[prost(uint64, optional, tag="1")]
13896    pub fence_context: ::core::option::Option<u64>,
13897    #[prost(uint64, optional, tag="2")]
13898    pub fence_seqno: ::core::option::Option<u64>,
13899}
13900#[derive(Clone, PartialEq, ::prost::Message)]
13901pub struct DrmSchedJobQueueFtraceEvent {
13902    #[prost(string, optional, tag="1")]
13903    pub name: ::core::option::Option<::prost::alloc::string::String>,
13904    #[prost(uint32, optional, tag="2")]
13905    pub job_count: ::core::option::Option<u32>,
13906    #[prost(int32, optional, tag="3")]
13907    pub hw_job_count: ::core::option::Option<i32>,
13908    #[prost(string, optional, tag="4")]
13909    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13910    #[prost(uint64, optional, tag="5")]
13911    pub fence_context: ::core::option::Option<u64>,
13912    #[prost(uint64, optional, tag="6")]
13913    pub fence_seqno: ::core::option::Option<u64>,
13914    #[prost(uint64, optional, tag="7")]
13915    pub client_id: ::core::option::Option<u64>,
13916}
13917#[derive(Clone, PartialEq, ::prost::Message)]
13918pub struct DrmSchedJobRunFtraceEvent {
13919    #[prost(string, optional, tag="1")]
13920    pub name: ::core::option::Option<::prost::alloc::string::String>,
13921    #[prost(uint32, optional, tag="2")]
13922    pub job_count: ::core::option::Option<u32>,
13923    #[prost(int32, optional, tag="3")]
13924    pub hw_job_count: ::core::option::Option<i32>,
13925    #[prost(string, optional, tag="4")]
13926    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13927    #[prost(uint64, optional, tag="5")]
13928    pub fence_context: ::core::option::Option<u64>,
13929    #[prost(uint64, optional, tag="6")]
13930    pub fence_seqno: ::core::option::Option<u64>,
13931    #[prost(uint64, optional, tag="7")]
13932    pub client_id: ::core::option::Option<u64>,
13933}
13934#[derive(Clone, PartialEq, ::prost::Message)]
13935pub struct DrmSchedJobUnschedulableFtraceEvent {
13936    #[prost(uint64, optional, tag="1")]
13937    pub fence_context: ::core::option::Option<u64>,
13938    #[prost(uint64, optional, tag="2")]
13939    pub fence_seqno: ::core::option::Option<u64>,
13940    #[prost(uint64, optional, tag="3")]
13941    pub ctx: ::core::option::Option<u64>,
13942    #[prost(uint64, optional, tag="4")]
13943    pub seqno: ::core::option::Option<u64>,
13944}
13945// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13946
13947// Begin of protos/perfetto/trace/ftrace/hyp.proto
13948
13949#[derive(Clone, PartialEq, ::prost::Message)]
13950pub struct HypEnterFtraceEvent {
13951}
13952#[derive(Clone, PartialEq, ::prost::Message)]
13953pub struct HypExitFtraceEvent {
13954}
13955#[derive(Clone, PartialEq, ::prost::Message)]
13956pub struct HostHcallFtraceEvent {
13957    #[prost(uint32, optional, tag="1")]
13958    pub id: ::core::option::Option<u32>,
13959    #[prost(uint32, optional, tag="2")]
13960    pub invalid: ::core::option::Option<u32>,
13961}
13962#[derive(Clone, PartialEq, ::prost::Message)]
13963pub struct HostSmcFtraceEvent {
13964    #[prost(uint64, optional, tag="1")]
13965    pub id: ::core::option::Option<u64>,
13966    #[prost(uint32, optional, tag="2")]
13967    pub forwarded: ::core::option::Option<u32>,
13968}
13969#[derive(Clone, PartialEq, ::prost::Message)]
13970pub struct HostMemAbortFtraceEvent {
13971    #[prost(uint64, optional, tag="1")]
13972    pub esr: ::core::option::Option<u64>,
13973    #[prost(uint64, optional, tag="2")]
13974    pub addr: ::core::option::Option<u64>,
13975}
13976#[derive(Clone, PartialEq, ::prost::Message)]
13977pub struct HostFfaCallFtraceEvent {
13978    #[prost(uint64, optional, tag="1")]
13979    pub func_id: ::core::option::Option<u64>,
13980    #[prost(uint64, optional, tag="2")]
13981    pub res_a1: ::core::option::Option<u64>,
13982    #[prost(uint64, optional, tag="3")]
13983    pub res_a2: ::core::option::Option<u64>,
13984    #[prost(uint64, optional, tag="4")]
13985    pub res_a3: ::core::option::Option<u64>,
13986    #[prost(uint64, optional, tag="5")]
13987    pub res_a4: ::core::option::Option<u64>,
13988    #[prost(int32, optional, tag="6")]
13989    pub handled: ::core::option::Option<i32>,
13990    #[prost(int32, optional, tag="7")]
13991    pub err: ::core::option::Option<i32>,
13992}
13993#[derive(Clone, PartialEq, ::prost::Message)]
13994pub struct IommuIdmapFtraceEvent {
13995    #[prost(uint64, optional, tag="1")]
13996    pub from: ::core::option::Option<u64>,
13997    #[prost(uint64, optional, tag="2")]
13998    pub to: ::core::option::Option<u64>,
13999    #[prost(int32, optional, tag="3")]
14000    pub prot: ::core::option::Option<i32>,
14001}
14002#[derive(Clone, PartialEq, ::prost::Message)]
14003pub struct PsciMemProtectFtraceEvent {
14004    #[prost(uint64, optional, tag="1")]
14005    pub count: ::core::option::Option<u64>,
14006    #[prost(uint64, optional, tag="2")]
14007    pub was: ::core::option::Option<u64>,
14008}
14009// End of protos/perfetto/trace/ftrace/hyp.proto
14010
14011// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
14012
14013#[derive(Clone, PartialEq, ::prost::Message)]
14014pub struct HypervisorHostHcallFtraceEvent {
14015    #[prost(uint32, optional, tag="1")]
14016    pub id: ::core::option::Option<u32>,
14017    #[prost(uint32, optional, tag="2")]
14018    pub invalid: ::core::option::Option<u32>,
14019}
14020#[derive(Clone, PartialEq, ::prost::Message)]
14021pub struct HypervisorHostSmcFtraceEvent {
14022    #[prost(uint64, optional, tag="1")]
14023    pub id: ::core::option::Option<u64>,
14024    #[prost(uint32, optional, tag="2")]
14025    pub forwarded: ::core::option::Option<u32>,
14026}
14027#[derive(Clone, PartialEq, ::prost::Message)]
14028pub struct HypervisorHypExitFtraceEvent {
14029}
14030#[derive(Clone, PartialEq, ::prost::Message)]
14031pub struct HypervisorIommuIdmapFtraceEvent {
14032    #[prost(uint64, optional, tag="1")]
14033    pub from: ::core::option::Option<u64>,
14034    #[prost(uint64, optional, tag="2")]
14035    pub to: ::core::option::Option<u64>,
14036    #[prost(int32, optional, tag="3")]
14037    pub prot: ::core::option::Option<i32>,
14038}
14039#[derive(Clone, PartialEq, ::prost::Message)]
14040pub struct HypervisorPsciMemProtectFtraceEvent {
14041    #[prost(uint64, optional, tag="1")]
14042    pub count: ::core::option::Option<u64>,
14043    #[prost(uint64, optional, tag="2")]
14044    pub was: ::core::option::Option<u64>,
14045}
14046#[derive(Clone, PartialEq, ::prost::Message)]
14047pub struct HypervisorHostMemAbortFtraceEvent {
14048    #[prost(uint64, optional, tag="1")]
14049    pub esr: ::core::option::Option<u64>,
14050    #[prost(uint64, optional, tag="2")]
14051    pub addr: ::core::option::Option<u64>,
14052}
14053#[derive(Clone, PartialEq, ::prost::Message)]
14054pub struct HypervisorHypEnterFtraceEvent {
14055}
14056#[derive(Clone, PartialEq, ::prost::Message)]
14057pub struct HypervisorIommuIdmapCompleteFtraceEvent {
14058    #[prost(uint32, optional, tag="1")]
14059    pub map: ::core::option::Option<u32>,
14060}
14061#[derive(Clone, PartialEq, ::prost::Message)]
14062pub struct HypervisorVcpuIllegalTrapFtraceEvent {
14063    #[prost(uint64, optional, tag="1")]
14064    pub esr: ::core::option::Option<u64>,
14065}
14066// End of protos/perfetto/trace/ftrace/hypervisor.proto
14067
14068// Begin of protos/perfetto/trace/ftrace/i2c.proto
14069
14070#[derive(Clone, PartialEq, ::prost::Message)]
14071pub struct I2cReadFtraceEvent {
14072    #[prost(int32, optional, tag="1")]
14073    pub adapter_nr: ::core::option::Option<i32>,
14074    #[prost(uint32, optional, tag="2")]
14075    pub msg_nr: ::core::option::Option<u32>,
14076    #[prost(uint32, optional, tag="3")]
14077    pub addr: ::core::option::Option<u32>,
14078    #[prost(uint32, optional, tag="4")]
14079    pub flags: ::core::option::Option<u32>,
14080    #[prost(uint32, optional, tag="5")]
14081    pub len: ::core::option::Option<u32>,
14082}
14083#[derive(Clone, PartialEq, ::prost::Message)]
14084pub struct I2cWriteFtraceEvent {
14085    #[prost(int32, optional, tag="1")]
14086    pub adapter_nr: ::core::option::Option<i32>,
14087    #[prost(uint32, optional, tag="2")]
14088    pub msg_nr: ::core::option::Option<u32>,
14089    #[prost(uint32, optional, tag="3")]
14090    pub addr: ::core::option::Option<u32>,
14091    #[prost(uint32, optional, tag="4")]
14092    pub flags: ::core::option::Option<u32>,
14093    #[prost(uint32, optional, tag="5")]
14094    pub len: ::core::option::Option<u32>,
14095    #[prost(bytes="vec", optional, tag="7")]
14096    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14097}
14098#[derive(Clone, PartialEq, ::prost::Message)]
14099pub struct I2cResultFtraceEvent {
14100    #[prost(int32, optional, tag="1")]
14101    pub adapter_nr: ::core::option::Option<i32>,
14102    #[prost(uint32, optional, tag="2")]
14103    pub nr_msgs: ::core::option::Option<u32>,
14104    #[prost(int32, optional, tag="3")]
14105    pub ret: ::core::option::Option<i32>,
14106}
14107#[derive(Clone, PartialEq, ::prost::Message)]
14108pub struct I2cReplyFtraceEvent {
14109    #[prost(int32, optional, tag="1")]
14110    pub adapter_nr: ::core::option::Option<i32>,
14111    #[prost(uint32, optional, tag="2")]
14112    pub msg_nr: ::core::option::Option<u32>,
14113    #[prost(uint32, optional, tag="3")]
14114    pub addr: ::core::option::Option<u32>,
14115    #[prost(uint32, optional, tag="4")]
14116    pub flags: ::core::option::Option<u32>,
14117    #[prost(uint32, optional, tag="5")]
14118    pub len: ::core::option::Option<u32>,
14119    #[prost(bytes="vec", optional, tag="7")]
14120    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14121}
14122#[derive(Clone, PartialEq, ::prost::Message)]
14123pub struct SmbusReadFtraceEvent {
14124    #[prost(int32, optional, tag="1")]
14125    pub adapter_nr: ::core::option::Option<i32>,
14126    #[prost(uint32, optional, tag="2")]
14127    pub flags: ::core::option::Option<u32>,
14128    #[prost(uint32, optional, tag="3")]
14129    pub addr: ::core::option::Option<u32>,
14130    #[prost(uint32, optional, tag="4")]
14131    pub command: ::core::option::Option<u32>,
14132    #[prost(uint32, optional, tag="5")]
14133    pub protocol: ::core::option::Option<u32>,
14134}
14135#[derive(Clone, PartialEq, ::prost::Message)]
14136pub struct SmbusWriteFtraceEvent {
14137    #[prost(int32, optional, tag="1")]
14138    pub adapter_nr: ::core::option::Option<i32>,
14139    #[prost(uint32, optional, tag="2")]
14140    pub addr: ::core::option::Option<u32>,
14141    #[prost(uint32, optional, tag="3")]
14142    pub flags: ::core::option::Option<u32>,
14143    #[prost(uint32, optional, tag="4")]
14144    pub command: ::core::option::Option<u32>,
14145    #[prost(uint32, optional, tag="5")]
14146    pub len: ::core::option::Option<u32>,
14147    #[prost(uint32, optional, tag="6")]
14148    pub protocol: ::core::option::Option<u32>,
14149}
14150#[derive(Clone, PartialEq, ::prost::Message)]
14151pub struct SmbusResultFtraceEvent {
14152    #[prost(int32, optional, tag="1")]
14153    pub adapter_nr: ::core::option::Option<i32>,
14154    #[prost(uint32, optional, tag="2")]
14155    pub addr: ::core::option::Option<u32>,
14156    #[prost(uint32, optional, tag="3")]
14157    pub flags: ::core::option::Option<u32>,
14158    #[prost(uint32, optional, tag="4")]
14159    pub read_write: ::core::option::Option<u32>,
14160    #[prost(uint32, optional, tag="5")]
14161    pub command: ::core::option::Option<u32>,
14162    #[prost(int32, optional, tag="6")]
14163    pub res: ::core::option::Option<i32>,
14164    #[prost(uint32, optional, tag="7")]
14165    pub protocol: ::core::option::Option<u32>,
14166}
14167#[derive(Clone, PartialEq, ::prost::Message)]
14168pub struct SmbusReplyFtraceEvent {
14169    #[prost(int32, optional, tag="1")]
14170    pub adapter_nr: ::core::option::Option<i32>,
14171    #[prost(uint32, optional, tag="2")]
14172    pub addr: ::core::option::Option<u32>,
14173    #[prost(uint32, optional, tag="3")]
14174    pub flags: ::core::option::Option<u32>,
14175    #[prost(uint32, optional, tag="4")]
14176    pub command: ::core::option::Option<u32>,
14177    #[prost(uint32, optional, tag="5")]
14178    pub len: ::core::option::Option<u32>,
14179    #[prost(uint32, optional, tag="6")]
14180    pub protocol: ::core::option::Option<u32>,
14181}
14182// End of protos/perfetto/trace/ftrace/i2c.proto
14183
14184// Begin of protos/perfetto/trace/ftrace/ion.proto
14185
14186#[derive(Clone, PartialEq, ::prost::Message)]
14187pub struct IonStatFtraceEvent {
14188    #[prost(uint32, optional, tag="1")]
14189    pub buffer_id: ::core::option::Option<u32>,
14190    #[prost(int64, optional, tag="2")]
14191    pub len: ::core::option::Option<i64>,
14192    #[prost(uint64, optional, tag="3")]
14193    pub total_allocated: ::core::option::Option<u64>,
14194}
14195// End of protos/perfetto/trace/ftrace/ion.proto
14196
14197// Begin of protos/perfetto/trace/ftrace/ipi.proto
14198
14199#[derive(Clone, PartialEq, ::prost::Message)]
14200pub struct IpiEntryFtraceEvent {
14201    #[prost(string, optional, tag="1")]
14202    pub reason: ::core::option::Option<::prost::alloc::string::String>,
14203}
14204#[derive(Clone, PartialEq, ::prost::Message)]
14205pub struct IpiExitFtraceEvent {
14206    #[prost(string, optional, tag="1")]
14207    pub reason: ::core::option::Option<::prost::alloc::string::String>,
14208}
14209#[derive(Clone, PartialEq, ::prost::Message)]
14210pub struct IpiRaiseFtraceEvent {
14211    #[prost(uint32, optional, tag="1")]
14212    pub target_cpus: ::core::option::Option<u32>,
14213    #[prost(string, optional, tag="2")]
14214    pub reason: ::core::option::Option<::prost::alloc::string::String>,
14215}
14216// End of protos/perfetto/trace/ftrace/ipi.proto
14217
14218// Begin of protos/perfetto/trace/ftrace/irq.proto
14219
14220#[derive(Clone, PartialEq, ::prost::Message)]
14221pub struct SoftirqEntryFtraceEvent {
14222    #[prost(uint32, optional, tag="1")]
14223    pub vec: ::core::option::Option<u32>,
14224}
14225#[derive(Clone, PartialEq, ::prost::Message)]
14226pub struct SoftirqExitFtraceEvent {
14227    #[prost(uint32, optional, tag="1")]
14228    pub vec: ::core::option::Option<u32>,
14229}
14230#[derive(Clone, PartialEq, ::prost::Message)]
14231pub struct SoftirqRaiseFtraceEvent {
14232    #[prost(uint32, optional, tag="1")]
14233    pub vec: ::core::option::Option<u32>,
14234}
14235#[derive(Clone, PartialEq, ::prost::Message)]
14236pub struct IrqHandlerEntryFtraceEvent {
14237    #[prost(int32, optional, tag="1")]
14238    pub irq: ::core::option::Option<i32>,
14239    #[prost(string, optional, tag="2")]
14240    pub name: ::core::option::Option<::prost::alloc::string::String>,
14241    #[prost(uint32, optional, tag="3")]
14242    pub handler: ::core::option::Option<u32>,
14243}
14244#[derive(Clone, PartialEq, ::prost::Message)]
14245pub struct IrqHandlerExitFtraceEvent {
14246    #[prost(int32, optional, tag="1")]
14247    pub irq: ::core::option::Option<i32>,
14248    #[prost(int32, optional, tag="2")]
14249    pub ret: ::core::option::Option<i32>,
14250}
14251// End of protos/perfetto/trace/ftrace/irq.proto
14252
14253// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
14254
14255#[derive(Clone, PartialEq, ::prost::Message)]
14256pub struct LocalTimerEntryFtraceEvent {
14257    #[prost(int32, optional, tag="1")]
14258    pub vector: ::core::option::Option<i32>,
14259}
14260#[derive(Clone, PartialEq, ::prost::Message)]
14261pub struct LocalTimerExitFtraceEvent {
14262    #[prost(int32, optional, tag="1")]
14263    pub vector: ::core::option::Option<i32>,
14264}
14265// End of protos/perfetto/trace/ftrace/irq_vectors.proto
14266
14267// Begin of protos/perfetto/trace/ftrace/kgsl.proto
14268
14269#[derive(Clone, PartialEq, ::prost::Message)]
14270pub struct KgslGpuFrequencyFtraceEvent {
14271    #[prost(uint32, optional, tag="1")]
14272    pub gpu_freq: ::core::option::Option<u32>,
14273    #[prost(uint32, optional, tag="2")]
14274    pub gpu_id: ::core::option::Option<u32>,
14275}
14276#[derive(Clone, PartialEq, ::prost::Message)]
14277pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
14278    #[prost(uint32, optional, tag="1")]
14279    pub id: ::core::option::Option<u32>,
14280    #[prost(uint32, optional, tag="2")]
14281    pub timestamp: ::core::option::Option<u32>,
14282    #[prost(uint32, optional, tag="3")]
14283    pub queued: ::core::option::Option<u32>,
14284    #[prost(uint32, optional, tag="4")]
14285    pub flags: ::core::option::Option<u32>,
14286    #[prost(uint32, optional, tag="5")]
14287    pub prio: ::core::option::Option<u32>,
14288}
14289#[derive(Clone, PartialEq, ::prost::Message)]
14290pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
14291    #[prost(uint32, optional, tag="1")]
14292    pub id: ::core::option::Option<u32>,
14293    #[prost(uint32, optional, tag="2")]
14294    pub timestamp: ::core::option::Option<u32>,
14295    #[prost(int64, optional, tag="3")]
14296    pub inflight: ::core::option::Option<i64>,
14297    #[prost(uint32, optional, tag="4")]
14298    pub flags: ::core::option::Option<u32>,
14299    #[prost(uint64, optional, tag="5")]
14300    pub ticks: ::core::option::Option<u64>,
14301    #[prost(uint64, optional, tag="6")]
14302    pub secs: ::core::option::Option<u64>,
14303    #[prost(uint64, optional, tag="7")]
14304    pub usecs: ::core::option::Option<u64>,
14305    #[prost(int32, optional, tag="8")]
14306    pub prio: ::core::option::Option<i32>,
14307    #[prost(int32, optional, tag="9")]
14308    pub rb_id: ::core::option::Option<i32>,
14309    #[prost(uint32, optional, tag="10")]
14310    pub rptr: ::core::option::Option<u32>,
14311    #[prost(uint32, optional, tag="11")]
14312    pub wptr: ::core::option::Option<u32>,
14313    #[prost(int32, optional, tag="12")]
14314    pub q_inflight: ::core::option::Option<i32>,
14315    #[prost(int32, optional, tag="13")]
14316    pub dispatch_queue: ::core::option::Option<i32>,
14317}
14318#[derive(Clone, PartialEq, ::prost::Message)]
14319pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
14320    #[prost(uint32, optional, tag="1")]
14321    pub id: ::core::option::Option<u32>,
14322    #[prost(uint32, optional, tag="2")]
14323    pub timestamp: ::core::option::Option<u32>,
14324    #[prost(uint64, optional, tag="3")]
14325    pub ticks: ::core::option::Option<u64>,
14326    #[prost(int32, optional, tag="4")]
14327    pub prio: ::core::option::Option<i32>,
14328}
14329#[derive(Clone, PartialEq, ::prost::Message)]
14330pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
14331    #[prost(uint32, optional, tag="1")]
14332    pub id: ::core::option::Option<u32>,
14333    #[prost(uint32, optional, tag="2")]
14334    pub timestamp: ::core::option::Option<u32>,
14335    #[prost(int64, optional, tag="3")]
14336    pub inflight: ::core::option::Option<i64>,
14337    #[prost(uint32, optional, tag="4")]
14338    pub recovery: ::core::option::Option<u32>,
14339    #[prost(uint32, optional, tag="5")]
14340    pub flags: ::core::option::Option<u32>,
14341    #[prost(uint64, optional, tag="6")]
14342    pub start: ::core::option::Option<u64>,
14343    #[prost(uint64, optional, tag="7")]
14344    pub retire: ::core::option::Option<u64>,
14345    #[prost(int32, optional, tag="8")]
14346    pub prio: ::core::option::Option<i32>,
14347    #[prost(int32, optional, tag="9")]
14348    pub rb_id: ::core::option::Option<i32>,
14349    #[prost(uint32, optional, tag="10")]
14350    pub rptr: ::core::option::Option<u32>,
14351    #[prost(uint32, optional, tag="11")]
14352    pub wptr: ::core::option::Option<u32>,
14353    #[prost(int32, optional, tag="12")]
14354    pub q_inflight: ::core::option::Option<i32>,
14355    #[prost(uint64, optional, tag="13")]
14356    pub fault_recovery: ::core::option::Option<u64>,
14357    #[prost(uint32, optional, tag="14")]
14358    pub dispatch_queue: ::core::option::Option<u32>,
14359    #[prost(uint64, optional, tag="15")]
14360    pub submitted_to_rb: ::core::option::Option<u64>,
14361    #[prost(uint64, optional, tag="16")]
14362    pub retired_on_gmu: ::core::option::Option<u64>,
14363    #[prost(uint64, optional, tag="17")]
14364    pub active: ::core::option::Option<u64>,
14365}
14366// End of protos/perfetto/trace/ftrace/kgsl.proto
14367
14368// Begin of protos/perfetto/trace/ftrace/kmem.proto
14369
14370#[derive(Clone, PartialEq, ::prost::Message)]
14371pub struct AllocPagesIommuEndFtraceEvent {
14372    #[prost(uint32, optional, tag="1")]
14373    pub gfp_flags: ::core::option::Option<u32>,
14374    #[prost(uint32, optional, tag="2")]
14375    pub order: ::core::option::Option<u32>,
14376}
14377#[derive(Clone, PartialEq, ::prost::Message)]
14378pub struct AllocPagesIommuFailFtraceEvent {
14379    #[prost(uint32, optional, tag="1")]
14380    pub gfp_flags: ::core::option::Option<u32>,
14381    #[prost(uint32, optional, tag="2")]
14382    pub order: ::core::option::Option<u32>,
14383}
14384#[derive(Clone, PartialEq, ::prost::Message)]
14385pub struct AllocPagesIommuStartFtraceEvent {
14386    #[prost(uint32, optional, tag="1")]
14387    pub gfp_flags: ::core::option::Option<u32>,
14388    #[prost(uint32, optional, tag="2")]
14389    pub order: ::core::option::Option<u32>,
14390}
14391#[derive(Clone, PartialEq, ::prost::Message)]
14392pub struct AllocPagesSysEndFtraceEvent {
14393    #[prost(uint32, optional, tag="1")]
14394    pub gfp_flags: ::core::option::Option<u32>,
14395    #[prost(uint32, optional, tag="2")]
14396    pub order: ::core::option::Option<u32>,
14397}
14398#[derive(Clone, PartialEq, ::prost::Message)]
14399pub struct AllocPagesSysFailFtraceEvent {
14400    #[prost(uint32, optional, tag="1")]
14401    pub gfp_flags: ::core::option::Option<u32>,
14402    #[prost(uint32, optional, tag="2")]
14403    pub order: ::core::option::Option<u32>,
14404}
14405#[derive(Clone, PartialEq, ::prost::Message)]
14406pub struct AllocPagesSysStartFtraceEvent {
14407    #[prost(uint32, optional, tag="1")]
14408    pub gfp_flags: ::core::option::Option<u32>,
14409    #[prost(uint32, optional, tag="2")]
14410    pub order: ::core::option::Option<u32>,
14411}
14412#[derive(Clone, PartialEq, ::prost::Message)]
14413pub struct DmaAllocContiguousRetryFtraceEvent {
14414    #[prost(int32, optional, tag="1")]
14415    pub tries: ::core::option::Option<i32>,
14416}
14417#[derive(Clone, PartialEq, ::prost::Message)]
14418pub struct IommuMapRangeFtraceEvent {
14419    #[prost(uint64, optional, tag="1")]
14420    pub chunk_size: ::core::option::Option<u64>,
14421    #[prost(uint64, optional, tag="2")]
14422    pub len: ::core::option::Option<u64>,
14423    #[prost(uint64, optional, tag="3")]
14424    pub pa: ::core::option::Option<u64>,
14425    #[prost(uint64, optional, tag="4")]
14426    pub va: ::core::option::Option<u64>,
14427}
14428#[derive(Clone, PartialEq, ::prost::Message)]
14429pub struct IommuSecPtblMapRangeEndFtraceEvent {
14430    #[prost(uint64, optional, tag="1")]
14431    pub len: ::core::option::Option<u64>,
14432    #[prost(int32, optional, tag="2")]
14433    pub num: ::core::option::Option<i32>,
14434    #[prost(uint32, optional, tag="3")]
14435    pub pa: ::core::option::Option<u32>,
14436    #[prost(int32, optional, tag="4")]
14437    pub sec_id: ::core::option::Option<i32>,
14438    #[prost(uint64, optional, tag="5")]
14439    pub va: ::core::option::Option<u64>,
14440}
14441#[derive(Clone, PartialEq, ::prost::Message)]
14442pub struct IommuSecPtblMapRangeStartFtraceEvent {
14443    #[prost(uint64, optional, tag="1")]
14444    pub len: ::core::option::Option<u64>,
14445    #[prost(int32, optional, tag="2")]
14446    pub num: ::core::option::Option<i32>,
14447    #[prost(uint32, optional, tag="3")]
14448    pub pa: ::core::option::Option<u32>,
14449    #[prost(int32, optional, tag="4")]
14450    pub sec_id: ::core::option::Option<i32>,
14451    #[prost(uint64, optional, tag="5")]
14452    pub va: ::core::option::Option<u64>,
14453}
14454#[derive(Clone, PartialEq, ::prost::Message)]
14455pub struct IonAllocBufferEndFtraceEvent {
14456    #[prost(string, optional, tag="1")]
14457    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14458    #[prost(uint32, optional, tag="2")]
14459    pub flags: ::core::option::Option<u32>,
14460    #[prost(string, optional, tag="3")]
14461    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14462    #[prost(uint64, optional, tag="4")]
14463    pub len: ::core::option::Option<u64>,
14464    #[prost(uint32, optional, tag="5")]
14465    pub mask: ::core::option::Option<u32>,
14466}
14467#[derive(Clone, PartialEq, ::prost::Message)]
14468pub struct IonAllocBufferFailFtraceEvent {
14469    #[prost(string, optional, tag="1")]
14470    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14471    #[prost(int64, optional, tag="2")]
14472    pub error: ::core::option::Option<i64>,
14473    #[prost(uint32, optional, tag="3")]
14474    pub flags: ::core::option::Option<u32>,
14475    #[prost(string, optional, tag="4")]
14476    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14477    #[prost(uint64, optional, tag="5")]
14478    pub len: ::core::option::Option<u64>,
14479    #[prost(uint32, optional, tag="6")]
14480    pub mask: ::core::option::Option<u32>,
14481}
14482#[derive(Clone, PartialEq, ::prost::Message)]
14483pub struct IonAllocBufferFallbackFtraceEvent {
14484    #[prost(string, optional, tag="1")]
14485    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14486    #[prost(int64, optional, tag="2")]
14487    pub error: ::core::option::Option<i64>,
14488    #[prost(uint32, optional, tag="3")]
14489    pub flags: ::core::option::Option<u32>,
14490    #[prost(string, optional, tag="4")]
14491    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14492    #[prost(uint64, optional, tag="5")]
14493    pub len: ::core::option::Option<u64>,
14494    #[prost(uint32, optional, tag="6")]
14495    pub mask: ::core::option::Option<u32>,
14496}
14497#[derive(Clone, PartialEq, ::prost::Message)]
14498pub struct IonAllocBufferStartFtraceEvent {
14499    #[prost(string, optional, tag="1")]
14500    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14501    #[prost(uint32, optional, tag="2")]
14502    pub flags: ::core::option::Option<u32>,
14503    #[prost(string, optional, tag="3")]
14504    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14505    #[prost(uint64, optional, tag="4")]
14506    pub len: ::core::option::Option<u64>,
14507    #[prost(uint32, optional, tag="5")]
14508    pub mask: ::core::option::Option<u32>,
14509}
14510#[derive(Clone, PartialEq, ::prost::Message)]
14511pub struct IonCpAllocRetryFtraceEvent {
14512    #[prost(int32, optional, tag="1")]
14513    pub tries: ::core::option::Option<i32>,
14514}
14515#[derive(Clone, PartialEq, ::prost::Message)]
14516pub struct IonCpSecureBufferEndFtraceEvent {
14517    #[prost(uint64, optional, tag="1")]
14518    pub align: ::core::option::Option<u64>,
14519    #[prost(uint64, optional, tag="2")]
14520    pub flags: ::core::option::Option<u64>,
14521    #[prost(string, optional, tag="3")]
14522    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14523    #[prost(uint64, optional, tag="4")]
14524    pub len: ::core::option::Option<u64>,
14525}
14526#[derive(Clone, PartialEq, ::prost::Message)]
14527pub struct IonCpSecureBufferStartFtraceEvent {
14528    #[prost(uint64, optional, tag="1")]
14529    pub align: ::core::option::Option<u64>,
14530    #[prost(uint64, optional, tag="2")]
14531    pub flags: ::core::option::Option<u64>,
14532    #[prost(string, optional, tag="3")]
14533    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14534    #[prost(uint64, optional, tag="4")]
14535    pub len: ::core::option::Option<u64>,
14536}
14537#[derive(Clone, PartialEq, ::prost::Message)]
14538pub struct IonPrefetchingFtraceEvent {
14539    #[prost(uint64, optional, tag="1")]
14540    pub len: ::core::option::Option<u64>,
14541}
14542#[derive(Clone, PartialEq, ::prost::Message)]
14543pub struct IonSecureCmaAddToPoolEndFtraceEvent {
14544    #[prost(uint32, optional, tag="1")]
14545    pub is_prefetch: ::core::option::Option<u32>,
14546    #[prost(uint64, optional, tag="2")]
14547    pub len: ::core::option::Option<u64>,
14548    #[prost(int32, optional, tag="3")]
14549    pub pool_total: ::core::option::Option<i32>,
14550}
14551#[derive(Clone, PartialEq, ::prost::Message)]
14552pub struct IonSecureCmaAddToPoolStartFtraceEvent {
14553    #[prost(uint32, optional, tag="1")]
14554    pub is_prefetch: ::core::option::Option<u32>,
14555    #[prost(uint64, optional, tag="2")]
14556    pub len: ::core::option::Option<u64>,
14557    #[prost(int32, optional, tag="3")]
14558    pub pool_total: ::core::option::Option<i32>,
14559}
14560#[derive(Clone, PartialEq, ::prost::Message)]
14561pub struct IonSecureCmaAllocateEndFtraceEvent {
14562    #[prost(uint64, optional, tag="1")]
14563    pub align: ::core::option::Option<u64>,
14564    #[prost(uint64, optional, tag="2")]
14565    pub flags: ::core::option::Option<u64>,
14566    #[prost(string, optional, tag="3")]
14567    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14568    #[prost(uint64, optional, tag="4")]
14569    pub len: ::core::option::Option<u64>,
14570}
14571#[derive(Clone, PartialEq, ::prost::Message)]
14572pub struct IonSecureCmaAllocateStartFtraceEvent {
14573    #[prost(uint64, optional, tag="1")]
14574    pub align: ::core::option::Option<u64>,
14575    #[prost(uint64, optional, tag="2")]
14576    pub flags: ::core::option::Option<u64>,
14577    #[prost(string, optional, tag="3")]
14578    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14579    #[prost(uint64, optional, tag="4")]
14580    pub len: ::core::option::Option<u64>,
14581}
14582#[derive(Clone, PartialEq, ::prost::Message)]
14583pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
14584    #[prost(uint64, optional, tag="1")]
14585    pub drained_size: ::core::option::Option<u64>,
14586    #[prost(uint64, optional, tag="2")]
14587    pub skipped_size: ::core::option::Option<u64>,
14588}
14589#[derive(Clone, PartialEq, ::prost::Message)]
14590pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
14591    #[prost(uint64, optional, tag="1")]
14592    pub drained_size: ::core::option::Option<u64>,
14593    #[prost(uint64, optional, tag="2")]
14594    pub skipped_size: ::core::option::Option<u64>,
14595}
14596#[derive(Clone, PartialEq, ::prost::Message)]
14597pub struct KfreeFtraceEvent {
14598    #[prost(uint64, optional, tag="1")]
14599    pub call_site: ::core::option::Option<u64>,
14600    #[prost(uint64, optional, tag="2")]
14601    pub ptr: ::core::option::Option<u64>,
14602}
14603#[derive(Clone, PartialEq, ::prost::Message)]
14604pub struct KmallocFtraceEvent {
14605    #[prost(uint64, optional, tag="1")]
14606    pub bytes_alloc: ::core::option::Option<u64>,
14607    #[prost(uint64, optional, tag="2")]
14608    pub bytes_req: ::core::option::Option<u64>,
14609    #[prost(uint64, optional, tag="3")]
14610    pub call_site: ::core::option::Option<u64>,
14611    #[prost(uint32, optional, tag="4")]
14612    pub gfp_flags: ::core::option::Option<u32>,
14613    #[prost(uint64, optional, tag="5")]
14614    pub ptr: ::core::option::Option<u64>,
14615}
14616#[derive(Clone, PartialEq, ::prost::Message)]
14617pub struct KmallocNodeFtraceEvent {
14618    #[prost(uint64, optional, tag="1")]
14619    pub bytes_alloc: ::core::option::Option<u64>,
14620    #[prost(uint64, optional, tag="2")]
14621    pub bytes_req: ::core::option::Option<u64>,
14622    #[prost(uint64, optional, tag="3")]
14623    pub call_site: ::core::option::Option<u64>,
14624    #[prost(uint32, optional, tag="4")]
14625    pub gfp_flags: ::core::option::Option<u32>,
14626    #[prost(int32, optional, tag="5")]
14627    pub node: ::core::option::Option<i32>,
14628    #[prost(uint64, optional, tag="6")]
14629    pub ptr: ::core::option::Option<u64>,
14630}
14631#[derive(Clone, PartialEq, ::prost::Message)]
14632pub struct KmemCacheAllocFtraceEvent {
14633    #[prost(uint64, optional, tag="1")]
14634    pub bytes_alloc: ::core::option::Option<u64>,
14635    #[prost(uint64, optional, tag="2")]
14636    pub bytes_req: ::core::option::Option<u64>,
14637    #[prost(uint64, optional, tag="3")]
14638    pub call_site: ::core::option::Option<u64>,
14639    #[prost(uint32, optional, tag="4")]
14640    pub gfp_flags: ::core::option::Option<u32>,
14641    #[prost(uint64, optional, tag="5")]
14642    pub ptr: ::core::option::Option<u64>,
14643}
14644#[derive(Clone, PartialEq, ::prost::Message)]
14645pub struct KmemCacheAllocNodeFtraceEvent {
14646    #[prost(uint64, optional, tag="1")]
14647    pub bytes_alloc: ::core::option::Option<u64>,
14648    #[prost(uint64, optional, tag="2")]
14649    pub bytes_req: ::core::option::Option<u64>,
14650    #[prost(uint64, optional, tag="3")]
14651    pub call_site: ::core::option::Option<u64>,
14652    #[prost(uint32, optional, tag="4")]
14653    pub gfp_flags: ::core::option::Option<u32>,
14654    #[prost(int32, optional, tag="5")]
14655    pub node: ::core::option::Option<i32>,
14656    #[prost(uint64, optional, tag="6")]
14657    pub ptr: ::core::option::Option<u64>,
14658}
14659#[derive(Clone, PartialEq, ::prost::Message)]
14660pub struct KmemCacheFreeFtraceEvent {
14661    #[prost(uint64, optional, tag="1")]
14662    pub call_site: ::core::option::Option<u64>,
14663    #[prost(uint64, optional, tag="2")]
14664    pub ptr: ::core::option::Option<u64>,
14665}
14666#[derive(Clone, PartialEq, ::prost::Message)]
14667pub struct MigratePagesEndFtraceEvent {
14668    #[prost(int32, optional, tag="1")]
14669    pub mode: ::core::option::Option<i32>,
14670}
14671#[derive(Clone, PartialEq, ::prost::Message)]
14672pub struct MigratePagesStartFtraceEvent {
14673    #[prost(int32, optional, tag="1")]
14674    pub mode: ::core::option::Option<i32>,
14675}
14676#[derive(Clone, PartialEq, ::prost::Message)]
14677pub struct MigrateRetryFtraceEvent {
14678    #[prost(int32, optional, tag="1")]
14679    pub tries: ::core::option::Option<i32>,
14680}
14681#[derive(Clone, PartialEq, ::prost::Message)]
14682pub struct MmPageAllocFtraceEvent {
14683    #[prost(uint32, optional, tag="1")]
14684    pub gfp_flags: ::core::option::Option<u32>,
14685    #[prost(int32, optional, tag="2")]
14686    pub migratetype: ::core::option::Option<i32>,
14687    #[prost(uint32, optional, tag="3")]
14688    pub order: ::core::option::Option<u32>,
14689    #[prost(uint64, optional, tag="4")]
14690    pub page: ::core::option::Option<u64>,
14691    #[prost(uint64, optional, tag="5")]
14692    pub pfn: ::core::option::Option<u64>,
14693}
14694#[derive(Clone, PartialEq, ::prost::Message)]
14695pub struct MmPageAllocExtfragFtraceEvent {
14696    #[prost(int32, optional, tag="1")]
14697    pub alloc_migratetype: ::core::option::Option<i32>,
14698    #[prost(int32, optional, tag="2")]
14699    pub alloc_order: ::core::option::Option<i32>,
14700    #[prost(int32, optional, tag="3")]
14701    pub fallback_migratetype: ::core::option::Option<i32>,
14702    #[prost(int32, optional, tag="4")]
14703    pub fallback_order: ::core::option::Option<i32>,
14704    #[prost(uint64, optional, tag="5")]
14705    pub page: ::core::option::Option<u64>,
14706    #[prost(int32, optional, tag="6")]
14707    pub change_ownership: ::core::option::Option<i32>,
14708    #[prost(uint64, optional, tag="7")]
14709    pub pfn: ::core::option::Option<u64>,
14710}
14711#[derive(Clone, PartialEq, ::prost::Message)]
14712pub struct MmPageAllocZoneLockedFtraceEvent {
14713    #[prost(int32, optional, tag="1")]
14714    pub migratetype: ::core::option::Option<i32>,
14715    #[prost(uint32, optional, tag="2")]
14716    pub order: ::core::option::Option<u32>,
14717    #[prost(uint64, optional, tag="3")]
14718    pub page: ::core::option::Option<u64>,
14719    #[prost(uint64, optional, tag="4")]
14720    pub pfn: ::core::option::Option<u64>,
14721}
14722#[derive(Clone, PartialEq, ::prost::Message)]
14723pub struct MmPageFreeFtraceEvent {
14724    #[prost(uint32, optional, tag="1")]
14725    pub order: ::core::option::Option<u32>,
14726    #[prost(uint64, optional, tag="2")]
14727    pub page: ::core::option::Option<u64>,
14728    #[prost(uint64, optional, tag="3")]
14729    pub pfn: ::core::option::Option<u64>,
14730}
14731#[derive(Clone, PartialEq, ::prost::Message)]
14732pub struct MmPageFreeBatchedFtraceEvent {
14733    #[prost(int32, optional, tag="1")]
14734    pub cold: ::core::option::Option<i32>,
14735    #[prost(uint64, optional, tag="2")]
14736    pub page: ::core::option::Option<u64>,
14737    #[prost(uint64, optional, tag="3")]
14738    pub pfn: ::core::option::Option<u64>,
14739}
14740#[derive(Clone, PartialEq, ::prost::Message)]
14741pub struct MmPagePcpuDrainFtraceEvent {
14742    #[prost(int32, optional, tag="1")]
14743    pub migratetype: ::core::option::Option<i32>,
14744    #[prost(uint32, optional, tag="2")]
14745    pub order: ::core::option::Option<u32>,
14746    #[prost(uint64, optional, tag="3")]
14747    pub page: ::core::option::Option<u64>,
14748    #[prost(uint64, optional, tag="4")]
14749    pub pfn: ::core::option::Option<u64>,
14750}
14751#[derive(Clone, PartialEq, ::prost::Message)]
14752pub struct RssStatFtraceEvent {
14753    #[prost(int32, optional, tag="1")]
14754    pub member: ::core::option::Option<i32>,
14755    #[prost(int64, optional, tag="2")]
14756    pub size: ::core::option::Option<i64>,
14757    #[prost(uint32, optional, tag="3")]
14758    pub curr: ::core::option::Option<u32>,
14759    #[prost(uint32, optional, tag="4")]
14760    pub mm_id: ::core::option::Option<u32>,
14761}
14762#[derive(Clone, PartialEq, ::prost::Message)]
14763pub struct IonHeapShrinkFtraceEvent {
14764    #[prost(string, optional, tag="1")]
14765    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14766    #[prost(uint64, optional, tag="2")]
14767    pub len: ::core::option::Option<u64>,
14768    #[prost(int64, optional, tag="3")]
14769    pub total_allocated: ::core::option::Option<i64>,
14770}
14771#[derive(Clone, PartialEq, ::prost::Message)]
14772pub struct IonHeapGrowFtraceEvent {
14773    #[prost(string, optional, tag="1")]
14774    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14775    #[prost(uint64, optional, tag="2")]
14776    pub len: ::core::option::Option<u64>,
14777    #[prost(int64, optional, tag="3")]
14778    pub total_allocated: ::core::option::Option<i64>,
14779}
14780#[derive(Clone, PartialEq, ::prost::Message)]
14781pub struct IonBufferCreateFtraceEvent {
14782    #[prost(uint64, optional, tag="1")]
14783    pub addr: ::core::option::Option<u64>,
14784    #[prost(uint64, optional, tag="2")]
14785    pub len: ::core::option::Option<u64>,
14786}
14787#[derive(Clone, PartialEq, ::prost::Message)]
14788pub struct IonBufferDestroyFtraceEvent {
14789    #[prost(uint64, optional, tag="1")]
14790    pub addr: ::core::option::Option<u64>,
14791    #[prost(uint64, optional, tag="2")]
14792    pub len: ::core::option::Option<u64>,
14793}
14794#[derive(Clone, PartialEq, ::prost::Message)]
14795pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
14796    #[prost(uint64, optional, tag="1")]
14797    pub start: ::core::option::Option<u64>,
14798    #[prost(uint64, optional, tag="2")]
14799    pub end: ::core::option::Option<u64>,
14800    #[prost(uint64, optional, tag="3")]
14801    pub nr_migrated: ::core::option::Option<u64>,
14802    #[prost(uint64, optional, tag="4")]
14803    pub nr_reclaimed: ::core::option::Option<u64>,
14804    #[prost(uint64, optional, tag="5")]
14805    pub nr_mapped: ::core::option::Option<u64>,
14806    #[prost(int32, optional, tag="6")]
14807    pub migratetype: ::core::option::Option<i32>,
14808}
14809#[derive(Clone, PartialEq, ::prost::Message)]
14810pub struct DmabufRssStatFtraceEvent {
14811    #[prost(uint64, optional, tag="1")]
14812    pub rss: ::core::option::Option<u64>,
14813    #[prost(int64, optional, tag="2")]
14814    pub rss_delta: ::core::option::Option<i64>,
14815    #[prost(uint64, optional, tag="3")]
14816    pub i_ino: ::core::option::Option<u64>,
14817}
14818// End of protos/perfetto/trace/ftrace/kmem.proto
14819
14820// Begin of protos/perfetto/trace/ftrace/kvm.proto
14821
14822#[derive(Clone, PartialEq, ::prost::Message)]
14823pub struct KvmAccessFaultFtraceEvent {
14824    #[prost(uint64, optional, tag="1")]
14825    pub ipa: ::core::option::Option<u64>,
14826}
14827#[derive(Clone, PartialEq, ::prost::Message)]
14828pub struct KvmAckIrqFtraceEvent {
14829    #[prost(uint32, optional, tag="1")]
14830    pub irqchip: ::core::option::Option<u32>,
14831    #[prost(uint32, optional, tag="2")]
14832    pub pin: ::core::option::Option<u32>,
14833}
14834#[derive(Clone, PartialEq, ::prost::Message)]
14835pub struct KvmAgeHvaFtraceEvent {
14836    #[prost(uint64, optional, tag="1")]
14837    pub end: ::core::option::Option<u64>,
14838    #[prost(uint64, optional, tag="2")]
14839    pub start: ::core::option::Option<u64>,
14840}
14841#[derive(Clone, PartialEq, ::prost::Message)]
14842pub struct KvmAgePageFtraceEvent {
14843    #[prost(uint64, optional, tag="1")]
14844    pub gfn: ::core::option::Option<u64>,
14845    #[prost(uint64, optional, tag="2")]
14846    pub hva: ::core::option::Option<u64>,
14847    #[prost(uint32, optional, tag="3")]
14848    pub level: ::core::option::Option<u32>,
14849    #[prost(uint32, optional, tag="4")]
14850    pub referenced: ::core::option::Option<u32>,
14851}
14852#[derive(Clone, PartialEq, ::prost::Message)]
14853pub struct KvmArmClearDebugFtraceEvent {
14854    #[prost(uint32, optional, tag="1")]
14855    pub guest_debug: ::core::option::Option<u32>,
14856}
14857#[derive(Clone, PartialEq, ::prost::Message)]
14858pub struct KvmArmSetDreg32FtraceEvent {
14859    #[prost(string, optional, tag="1")]
14860    pub name: ::core::option::Option<::prost::alloc::string::String>,
14861    #[prost(uint32, optional, tag="2")]
14862    pub value: ::core::option::Option<u32>,
14863}
14864#[derive(Clone, PartialEq, ::prost::Message)]
14865pub struct KvmArmSetRegsetFtraceEvent {
14866    #[prost(int32, optional, tag="1")]
14867    pub len: ::core::option::Option<i32>,
14868    #[prost(string, optional, tag="2")]
14869    pub name: ::core::option::Option<::prost::alloc::string::String>,
14870}
14871#[derive(Clone, PartialEq, ::prost::Message)]
14872pub struct KvmArmSetupDebugFtraceEvent {
14873    #[prost(uint32, optional, tag="1")]
14874    pub guest_debug: ::core::option::Option<u32>,
14875    #[prost(uint64, optional, tag="2")]
14876    pub vcpu: ::core::option::Option<u64>,
14877}
14878#[derive(Clone, PartialEq, ::prost::Message)]
14879pub struct KvmEntryFtraceEvent {
14880    #[prost(uint64, optional, tag="1")]
14881    pub vcpu_pc: ::core::option::Option<u64>,
14882}
14883#[derive(Clone, PartialEq, ::prost::Message)]
14884pub struct KvmExitFtraceEvent {
14885    #[prost(uint32, optional, tag="1")]
14886    pub esr_ec: ::core::option::Option<u32>,
14887    #[prost(int32, optional, tag="2")]
14888    pub ret: ::core::option::Option<i32>,
14889    #[prost(uint64, optional, tag="3")]
14890    pub vcpu_pc: ::core::option::Option<u64>,
14891}
14892#[derive(Clone, PartialEq, ::prost::Message)]
14893pub struct KvmFpuFtraceEvent {
14894    #[prost(uint32, optional, tag="1")]
14895    pub load: ::core::option::Option<u32>,
14896}
14897#[derive(Clone, PartialEq, ::prost::Message)]
14898pub struct KvmGetTimerMapFtraceEvent {
14899    #[prost(int32, optional, tag="1")]
14900    pub direct_ptimer: ::core::option::Option<i32>,
14901    #[prost(int32, optional, tag="2")]
14902    pub direct_vtimer: ::core::option::Option<i32>,
14903    #[prost(int32, optional, tag="3")]
14904    pub emul_ptimer: ::core::option::Option<i32>,
14905    #[prost(uint64, optional, tag="4")]
14906    pub vcpu_id: ::core::option::Option<u64>,
14907}
14908#[derive(Clone, PartialEq, ::prost::Message)]
14909pub struct KvmGuestFaultFtraceEvent {
14910    #[prost(uint64, optional, tag="1")]
14911    pub hsr: ::core::option::Option<u64>,
14912    #[prost(uint64, optional, tag="2")]
14913    pub hxfar: ::core::option::Option<u64>,
14914    #[prost(uint64, optional, tag="3")]
14915    pub ipa: ::core::option::Option<u64>,
14916    #[prost(uint64, optional, tag="4")]
14917    pub vcpu_pc: ::core::option::Option<u64>,
14918}
14919#[derive(Clone, PartialEq, ::prost::Message)]
14920pub struct KvmHandleSysRegFtraceEvent {
14921    #[prost(uint64, optional, tag="1")]
14922    pub hsr: ::core::option::Option<u64>,
14923}
14924#[derive(Clone, PartialEq, ::prost::Message)]
14925pub struct KvmHvcArm64FtraceEvent {
14926    #[prost(uint64, optional, tag="1")]
14927    pub imm: ::core::option::Option<u64>,
14928    #[prost(uint64, optional, tag="2")]
14929    pub r0: ::core::option::Option<u64>,
14930    #[prost(uint64, optional, tag="3")]
14931    pub vcpu_pc: ::core::option::Option<u64>,
14932}
14933#[derive(Clone, PartialEq, ::prost::Message)]
14934pub struct KvmIrqLineFtraceEvent {
14935    #[prost(int32, optional, tag="1")]
14936    pub irq_num: ::core::option::Option<i32>,
14937    #[prost(int32, optional, tag="2")]
14938    pub level: ::core::option::Option<i32>,
14939    #[prost(uint32, optional, tag="3")]
14940    pub r#type: ::core::option::Option<u32>,
14941    #[prost(int32, optional, tag="4")]
14942    pub vcpu_idx: ::core::option::Option<i32>,
14943}
14944#[derive(Clone, PartialEq, ::prost::Message)]
14945pub struct KvmMmioFtraceEvent {
14946    #[prost(uint64, optional, tag="1")]
14947    pub gpa: ::core::option::Option<u64>,
14948    #[prost(uint32, optional, tag="2")]
14949    pub len: ::core::option::Option<u32>,
14950    #[prost(uint32, optional, tag="3")]
14951    pub r#type: ::core::option::Option<u32>,
14952    #[prost(uint64, optional, tag="4")]
14953    pub val: ::core::option::Option<u64>,
14954}
14955#[derive(Clone, PartialEq, ::prost::Message)]
14956pub struct KvmMmioEmulateFtraceEvent {
14957    #[prost(uint64, optional, tag="1")]
14958    pub cpsr: ::core::option::Option<u64>,
14959    #[prost(uint64, optional, tag="2")]
14960    pub instr: ::core::option::Option<u64>,
14961    #[prost(uint64, optional, tag="3")]
14962    pub vcpu_pc: ::core::option::Option<u64>,
14963}
14964#[derive(Clone, PartialEq, ::prost::Message)]
14965pub struct KvmSetGuestDebugFtraceEvent {
14966    #[prost(uint32, optional, tag="1")]
14967    pub guest_debug: ::core::option::Option<u32>,
14968    #[prost(uint64, optional, tag="2")]
14969    pub vcpu: ::core::option::Option<u64>,
14970}
14971#[derive(Clone, PartialEq, ::prost::Message)]
14972pub struct KvmSetIrqFtraceEvent {
14973    #[prost(uint32, optional, tag="1")]
14974    pub gsi: ::core::option::Option<u32>,
14975    #[prost(int32, optional, tag="2")]
14976    pub irq_source_id: ::core::option::Option<i32>,
14977    #[prost(int32, optional, tag="3")]
14978    pub level: ::core::option::Option<i32>,
14979}
14980#[derive(Clone, PartialEq, ::prost::Message)]
14981pub struct KvmSetSpteHvaFtraceEvent {
14982    #[prost(uint64, optional, tag="1")]
14983    pub hva: ::core::option::Option<u64>,
14984}
14985#[derive(Clone, PartialEq, ::prost::Message)]
14986pub struct KvmSetWayFlushFtraceEvent {
14987    #[prost(uint32, optional, tag="1")]
14988    pub cache: ::core::option::Option<u32>,
14989    #[prost(uint64, optional, tag="2")]
14990    pub vcpu_pc: ::core::option::Option<u64>,
14991}
14992#[derive(Clone, PartialEq, ::prost::Message)]
14993pub struct KvmSysAccessFtraceEvent {
14994    #[prost(uint32, optional, tag="1")]
14995    pub c_rm: ::core::option::Option<u32>,
14996    #[prost(uint32, optional, tag="2")]
14997    pub c_rn: ::core::option::Option<u32>,
14998    #[prost(uint32, optional, tag="3")]
14999    pub op0: ::core::option::Option<u32>,
15000    #[prost(uint32, optional, tag="4")]
15001    pub op1: ::core::option::Option<u32>,
15002    #[prost(uint32, optional, tag="5")]
15003    pub op2: ::core::option::Option<u32>,
15004    #[prost(uint32, optional, tag="6")]
15005    pub is_write: ::core::option::Option<u32>,
15006    #[prost(string, optional, tag="7")]
15007    pub name: ::core::option::Option<::prost::alloc::string::String>,
15008    #[prost(uint64, optional, tag="8")]
15009    pub vcpu_pc: ::core::option::Option<u64>,
15010}
15011#[derive(Clone, PartialEq, ::prost::Message)]
15012pub struct KvmTestAgeHvaFtraceEvent {
15013    #[prost(uint64, optional, tag="1")]
15014    pub hva: ::core::option::Option<u64>,
15015}
15016#[derive(Clone, PartialEq, ::prost::Message)]
15017pub struct KvmTimerEmulateFtraceEvent {
15018    #[prost(uint32, optional, tag="1")]
15019    pub should_fire: ::core::option::Option<u32>,
15020    #[prost(int32, optional, tag="2")]
15021    pub timer_idx: ::core::option::Option<i32>,
15022}
15023#[derive(Clone, PartialEq, ::prost::Message)]
15024pub struct KvmTimerHrtimerExpireFtraceEvent {
15025    #[prost(int32, optional, tag="1")]
15026    pub timer_idx: ::core::option::Option<i32>,
15027}
15028#[derive(Clone, PartialEq, ::prost::Message)]
15029pub struct KvmTimerRestoreStateFtraceEvent {
15030    #[prost(uint64, optional, tag="1")]
15031    pub ctl: ::core::option::Option<u64>,
15032    #[prost(uint64, optional, tag="2")]
15033    pub cval: ::core::option::Option<u64>,
15034    #[prost(int32, optional, tag="3")]
15035    pub timer_idx: ::core::option::Option<i32>,
15036}
15037#[derive(Clone, PartialEq, ::prost::Message)]
15038pub struct KvmTimerSaveStateFtraceEvent {
15039    #[prost(uint64, optional, tag="1")]
15040    pub ctl: ::core::option::Option<u64>,
15041    #[prost(uint64, optional, tag="2")]
15042    pub cval: ::core::option::Option<u64>,
15043    #[prost(int32, optional, tag="3")]
15044    pub timer_idx: ::core::option::Option<i32>,
15045}
15046#[derive(Clone, PartialEq, ::prost::Message)]
15047pub struct KvmTimerUpdateIrqFtraceEvent {
15048    #[prost(uint32, optional, tag="1")]
15049    pub irq: ::core::option::Option<u32>,
15050    #[prost(int32, optional, tag="2")]
15051    pub level: ::core::option::Option<i32>,
15052    #[prost(uint64, optional, tag="3")]
15053    pub vcpu_id: ::core::option::Option<u64>,
15054}
15055#[derive(Clone, PartialEq, ::prost::Message)]
15056pub struct KvmToggleCacheFtraceEvent {
15057    #[prost(uint32, optional, tag="1")]
15058    pub now: ::core::option::Option<u32>,
15059    #[prost(uint64, optional, tag="2")]
15060    pub vcpu_pc: ::core::option::Option<u64>,
15061    #[prost(uint32, optional, tag="3")]
15062    pub was: ::core::option::Option<u32>,
15063}
15064#[derive(Clone, PartialEq, ::prost::Message)]
15065pub struct KvmUnmapHvaRangeFtraceEvent {
15066    #[prost(uint64, optional, tag="1")]
15067    pub end: ::core::option::Option<u64>,
15068    #[prost(uint64, optional, tag="2")]
15069    pub start: ::core::option::Option<u64>,
15070}
15071#[derive(Clone, PartialEq, ::prost::Message)]
15072pub struct KvmUserspaceExitFtraceEvent {
15073    #[prost(uint32, optional, tag="1")]
15074    pub reason: ::core::option::Option<u32>,
15075}
15076#[derive(Clone, PartialEq, ::prost::Message)]
15077pub struct KvmVcpuWakeupFtraceEvent {
15078    #[prost(uint64, optional, tag="1")]
15079    pub ns: ::core::option::Option<u64>,
15080    #[prost(uint32, optional, tag="2")]
15081    pub valid: ::core::option::Option<u32>,
15082    #[prost(uint32, optional, tag="3")]
15083    pub waited: ::core::option::Option<u32>,
15084}
15085#[derive(Clone, PartialEq, ::prost::Message)]
15086pub struct KvmWfxArm64FtraceEvent {
15087    #[prost(uint32, optional, tag="1")]
15088    pub is_wfe: ::core::option::Option<u32>,
15089    #[prost(uint64, optional, tag="2")]
15090    pub vcpu_pc: ::core::option::Option<u64>,
15091}
15092#[derive(Clone, PartialEq, ::prost::Message)]
15093pub struct TrapRegFtraceEvent {
15094    #[prost(string, optional, tag="1")]
15095    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
15096    #[prost(uint32, optional, tag="2")]
15097    pub is_write: ::core::option::Option<u32>,
15098    #[prost(int32, optional, tag="3")]
15099    pub reg: ::core::option::Option<i32>,
15100    #[prost(uint64, optional, tag="4")]
15101    pub write_value: ::core::option::Option<u64>,
15102}
15103#[derive(Clone, PartialEq, ::prost::Message)]
15104pub struct VgicUpdateIrqPendingFtraceEvent {
15105    #[prost(uint32, optional, tag="1")]
15106    pub irq: ::core::option::Option<u32>,
15107    #[prost(uint32, optional, tag="2")]
15108    pub level: ::core::option::Option<u32>,
15109    #[prost(uint64, optional, tag="3")]
15110    pub vcpu_id: ::core::option::Option<u64>,
15111}
15112// End of protos/perfetto/trace/ftrace/kvm.proto
15113
15114// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
15115
15116#[derive(Clone, PartialEq, ::prost::Message)]
15117pub struct LowmemoryKillFtraceEvent {
15118    #[prost(string, optional, tag="1")]
15119    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15120    #[prost(int32, optional, tag="2")]
15121    pub pid: ::core::option::Option<i32>,
15122    #[prost(int64, optional, tag="3")]
15123    pub pagecache_size: ::core::option::Option<i64>,
15124    #[prost(int64, optional, tag="4")]
15125    pub pagecache_limit: ::core::option::Option<i64>,
15126    #[prost(int64, optional, tag="5")]
15127    pub free: ::core::option::Option<i64>,
15128}
15129// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
15130
15131// Begin of protos/perfetto/trace/ftrace/lwis.proto
15132
15133#[derive(Clone, PartialEq, ::prost::Message)]
15134pub struct LwisTracingMarkWriteFtraceEvent {
15135    #[prost(string, optional, tag="1")]
15136    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
15137    #[prost(uint32, optional, tag="2")]
15138    pub r#type: ::core::option::Option<u32>,
15139    #[prost(int32, optional, tag="3")]
15140    pub pid: ::core::option::Option<i32>,
15141    #[prost(string, optional, tag="4")]
15142    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
15143    #[prost(int64, optional, tag="5")]
15144    pub value: ::core::option::Option<i64>,
15145}
15146// End of protos/perfetto/trace/ftrace/lwis.proto
15147
15148// Begin of protos/perfetto/trace/ftrace/mali.proto
15149
15150#[derive(Clone, PartialEq, ::prost::Message)]
15151pub struct MaliTracingMarkWriteFtraceEvent {
15152    #[prost(string, optional, tag="1")]
15153    pub name: ::core::option::Option<::prost::alloc::string::String>,
15154    #[prost(int32, optional, tag="2")]
15155    pub pid: ::core::option::Option<i32>,
15156    #[prost(uint32, optional, tag="3")]
15157    pub r#type: ::core::option::Option<u32>,
15158    #[prost(int32, optional, tag="4")]
15159    pub value: ::core::option::Option<i32>,
15160}
15161#[derive(Clone, PartialEq, ::prost::Message)]
15162pub struct MaliMaliKcpucqssetFtraceEvent {
15163    #[prost(uint32, optional, tag="1")]
15164    pub id: ::core::option::Option<u32>,
15165    #[prost(uint64, optional, tag="2")]
15166    pub info_val1: ::core::option::Option<u64>,
15167    #[prost(uint64, optional, tag="3")]
15168    pub info_val2: ::core::option::Option<u64>,
15169    #[prost(uint32, optional, tag="4")]
15170    pub kctx_id: ::core::option::Option<u32>,
15171    #[prost(int32, optional, tag="5")]
15172    pub kctx_tgid: ::core::option::Option<i32>,
15173}
15174#[derive(Clone, PartialEq, ::prost::Message)]
15175pub struct MaliMaliKcpucqswaitstartFtraceEvent {
15176    #[prost(uint32, optional, tag="1")]
15177    pub id: ::core::option::Option<u32>,
15178    #[prost(uint64, optional, tag="2")]
15179    pub info_val1: ::core::option::Option<u64>,
15180    #[prost(uint64, optional, tag="3")]
15181    pub info_val2: ::core::option::Option<u64>,
15182    #[prost(uint32, optional, tag="4")]
15183    pub kctx_id: ::core::option::Option<u32>,
15184    #[prost(int32, optional, tag="5")]
15185    pub kctx_tgid: ::core::option::Option<i32>,
15186}
15187#[derive(Clone, PartialEq, ::prost::Message)]
15188pub struct MaliMaliKcpucqswaitendFtraceEvent {
15189    #[prost(uint32, optional, tag="1")]
15190    pub id: ::core::option::Option<u32>,
15191    #[prost(uint64, optional, tag="2")]
15192    pub info_val1: ::core::option::Option<u64>,
15193    #[prost(uint64, optional, tag="3")]
15194    pub info_val2: ::core::option::Option<u64>,
15195    #[prost(uint32, optional, tag="4")]
15196    pub kctx_id: ::core::option::Option<u32>,
15197    #[prost(int32, optional, tag="5")]
15198    pub kctx_tgid: ::core::option::Option<i32>,
15199}
15200#[derive(Clone, PartialEq, ::prost::Message)]
15201pub struct MaliMaliKcpufencesignalFtraceEvent {
15202    #[prost(uint64, optional, tag="1")]
15203    pub info_val1: ::core::option::Option<u64>,
15204    #[prost(uint64, optional, tag="2")]
15205    pub info_val2: ::core::option::Option<u64>,
15206    #[prost(int32, optional, tag="3")]
15207    pub kctx_tgid: ::core::option::Option<i32>,
15208    #[prost(uint32, optional, tag="4")]
15209    pub kctx_id: ::core::option::Option<u32>,
15210    #[prost(uint32, optional, tag="5")]
15211    pub id: ::core::option::Option<u32>,
15212}
15213#[derive(Clone, PartialEq, ::prost::Message)]
15214pub struct MaliMaliKcpufencewaitstartFtraceEvent {
15215    #[prost(uint64, optional, tag="1")]
15216    pub info_val1: ::core::option::Option<u64>,
15217    #[prost(uint64, optional, tag="2")]
15218    pub info_val2: ::core::option::Option<u64>,
15219    #[prost(int32, optional, tag="3")]
15220    pub kctx_tgid: ::core::option::Option<i32>,
15221    #[prost(uint32, optional, tag="4")]
15222    pub kctx_id: ::core::option::Option<u32>,
15223    #[prost(uint32, optional, tag="5")]
15224    pub id: ::core::option::Option<u32>,
15225}
15226#[derive(Clone, PartialEq, ::prost::Message)]
15227pub struct MaliMaliKcpufencewaitendFtraceEvent {
15228    #[prost(uint64, optional, tag="1")]
15229    pub info_val1: ::core::option::Option<u64>,
15230    #[prost(uint64, optional, tag="2")]
15231    pub info_val2: ::core::option::Option<u64>,
15232    #[prost(int32, optional, tag="3")]
15233    pub kctx_tgid: ::core::option::Option<i32>,
15234    #[prost(uint32, optional, tag="4")]
15235    pub kctx_id: ::core::option::Option<u32>,
15236    #[prost(uint32, optional, tag="5")]
15237    pub id: ::core::option::Option<u32>,
15238}
15239#[derive(Clone, PartialEq, ::prost::Message)]
15240pub struct MaliMaliCsfinterruptstartFtraceEvent {
15241    #[prost(int32, optional, tag="1")]
15242    pub kctx_tgid: ::core::option::Option<i32>,
15243    #[prost(uint32, optional, tag="2")]
15244    pub kctx_id: ::core::option::Option<u32>,
15245    #[prost(uint64, optional, tag="3")]
15246    pub info_val: ::core::option::Option<u64>,
15247}
15248#[derive(Clone, PartialEq, ::prost::Message)]
15249pub struct MaliMaliCsfinterruptendFtraceEvent {
15250    #[prost(int32, optional, tag="1")]
15251    pub kctx_tgid: ::core::option::Option<i32>,
15252    #[prost(uint32, optional, tag="2")]
15253    pub kctx_id: ::core::option::Option<u32>,
15254    #[prost(uint64, optional, tag="3")]
15255    pub info_val: ::core::option::Option<u64>,
15256}
15257#[derive(Clone, PartialEq, ::prost::Message)]
15258pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
15259    #[prost(int32, optional, tag="1")]
15260    pub kctx_tgid: ::core::option::Option<i32>,
15261    #[prost(uint32, optional, tag="2")]
15262    pub kctx_id: ::core::option::Option<u32>,
15263    #[prost(uint64, optional, tag="3")]
15264    pub info_val: ::core::option::Option<u64>,
15265}
15266#[derive(Clone, PartialEq, ::prost::Message)]
15267pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
15268    #[prost(int32, optional, tag="1")]
15269    pub kctx_tgid: ::core::option::Option<i32>,
15270    #[prost(uint32, optional, tag="2")]
15271    pub kctx_id: ::core::option::Option<u32>,
15272    #[prost(uint64, optional, tag="3")]
15273    pub info_val: ::core::option::Option<u64>,
15274}
15275#[derive(Clone, PartialEq, ::prost::Message)]
15276pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
15277    #[prost(int32, optional, tag="1")]
15278    pub kctx_tgid: ::core::option::Option<i32>,
15279    #[prost(uint32, optional, tag="2")]
15280    pub kctx_id: ::core::option::Option<u32>,
15281    #[prost(uint64, optional, tag="3")]
15282    pub info_val: ::core::option::Option<u64>,
15283}
15284#[derive(Clone, PartialEq, ::prost::Message)]
15285pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
15286    #[prost(int32, optional, tag="1")]
15287    pub kctx_tgid: ::core::option::Option<i32>,
15288    #[prost(uint32, optional, tag="2")]
15289    pub kctx_id: ::core::option::Option<u32>,
15290    #[prost(uint64, optional, tag="3")]
15291    pub info_val: ::core::option::Option<u64>,
15292}
15293#[derive(Clone, PartialEq, ::prost::Message)]
15294pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
15295    #[prost(int32, optional, tag="1")]
15296    pub kctx_tgid: ::core::option::Option<i32>,
15297    #[prost(uint32, optional, tag="2")]
15298    pub kctx_id: ::core::option::Option<u32>,
15299    #[prost(uint64, optional, tag="3")]
15300    pub info_val: ::core::option::Option<u64>,
15301}
15302#[derive(Clone, PartialEq, ::prost::Message)]
15303pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
15304    #[prost(int32, optional, tag="1")]
15305    pub kctx_tgid: ::core::option::Option<i32>,
15306    #[prost(uint32, optional, tag="2")]
15307    pub kctx_id: ::core::option::Option<u32>,
15308    #[prost(uint64, optional, tag="3")]
15309    pub info_val: ::core::option::Option<u64>,
15310}
15311#[derive(Clone, PartialEq, ::prost::Message)]
15312pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
15313    #[prost(int32, optional, tag="1")]
15314    pub kctx_tgid: ::core::option::Option<i32>,
15315    #[prost(uint32, optional, tag="2")]
15316    pub kctx_id: ::core::option::Option<u32>,
15317    #[prost(uint64, optional, tag="3")]
15318    pub info_val: ::core::option::Option<u64>,
15319}
15320#[derive(Clone, PartialEq, ::prost::Message)]
15321pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
15322    #[prost(int32, optional, tag="1")]
15323    pub kctx_tgid: ::core::option::Option<i32>,
15324    #[prost(uint32, optional, tag="2")]
15325    pub kctx_id: ::core::option::Option<u32>,
15326    #[prost(uint64, optional, tag="3")]
15327    pub info_val: ::core::option::Option<u64>,
15328}
15329#[derive(Clone, PartialEq, ::prost::Message)]
15330pub struct MaliMaliPmmcuinsleepFtraceEvent {
15331    #[prost(int32, optional, tag="1")]
15332    pub kctx_tgid: ::core::option::Option<i32>,
15333    #[prost(uint32, optional, tag="2")]
15334    pub kctx_id: ::core::option::Option<u32>,
15335    #[prost(uint64, optional, tag="3")]
15336    pub info_val: ::core::option::Option<u64>,
15337}
15338#[derive(Clone, PartialEq, ::prost::Message)]
15339pub struct MaliMaliPmmcuoffFtraceEvent {
15340    #[prost(int32, optional, tag="1")]
15341    pub kctx_tgid: ::core::option::Option<i32>,
15342    #[prost(uint32, optional, tag="2")]
15343    pub kctx_id: ::core::option::Option<u32>,
15344    #[prost(uint64, optional, tag="3")]
15345    pub info_val: ::core::option::Option<u64>,
15346}
15347#[derive(Clone, PartialEq, ::prost::Message)]
15348pub struct MaliMaliPmmcuonFtraceEvent {
15349    #[prost(int32, optional, tag="1")]
15350    pub kctx_tgid: ::core::option::Option<i32>,
15351    #[prost(uint32, optional, tag="2")]
15352    pub kctx_id: ::core::option::Option<u32>,
15353    #[prost(uint64, optional, tag="3")]
15354    pub info_val: ::core::option::Option<u64>,
15355}
15356#[derive(Clone, PartialEq, ::prost::Message)]
15357pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
15358    #[prost(int32, optional, tag="1")]
15359    pub kctx_tgid: ::core::option::Option<i32>,
15360    #[prost(uint32, optional, tag="2")]
15361    pub kctx_id: ::core::option::Option<u32>,
15362    #[prost(uint64, optional, tag="3")]
15363    pub info_val: ::core::option::Option<u64>,
15364}
15365#[derive(Clone, PartialEq, ::prost::Message)]
15366pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
15367    #[prost(int32, optional, tag="1")]
15368    pub kctx_tgid: ::core::option::Option<i32>,
15369    #[prost(uint32, optional, tag="2")]
15370    pub kctx_id: ::core::option::Option<u32>,
15371    #[prost(uint64, optional, tag="3")]
15372    pub info_val: ::core::option::Option<u64>,
15373}
15374#[derive(Clone, PartialEq, ::prost::Message)]
15375pub struct MaliMaliPmmcuonhaltFtraceEvent {
15376    #[prost(int32, optional, tag="1")]
15377    pub kctx_tgid: ::core::option::Option<i32>,
15378    #[prost(uint32, optional, tag="2")]
15379    pub kctx_id: ::core::option::Option<u32>,
15380    #[prost(uint64, optional, tag="3")]
15381    pub info_val: ::core::option::Option<u64>,
15382}
15383#[derive(Clone, PartialEq, ::prost::Message)]
15384pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
15385    #[prost(int32, optional, tag="1")]
15386    pub kctx_tgid: ::core::option::Option<i32>,
15387    #[prost(uint32, optional, tag="2")]
15388    pub kctx_id: ::core::option::Option<u32>,
15389    #[prost(uint64, optional, tag="3")]
15390    pub info_val: ::core::option::Option<u64>,
15391}
15392#[derive(Clone, PartialEq, ::prost::Message)]
15393pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
15394    #[prost(int32, optional, tag="1")]
15395    pub kctx_tgid: ::core::option::Option<i32>,
15396    #[prost(uint32, optional, tag="2")]
15397    pub kctx_id: ::core::option::Option<u32>,
15398    #[prost(uint64, optional, tag="3")]
15399    pub info_val: ::core::option::Option<u64>,
15400}
15401#[derive(Clone, PartialEq, ::prost::Message)]
15402pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
15403    #[prost(int32, optional, tag="1")]
15404    pub kctx_tgid: ::core::option::Option<i32>,
15405    #[prost(uint32, optional, tag="2")]
15406    pub kctx_id: ::core::option::Option<u32>,
15407    #[prost(uint64, optional, tag="3")]
15408    pub info_val: ::core::option::Option<u64>,
15409}
15410#[derive(Clone, PartialEq, ::prost::Message)]
15411pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
15412    #[prost(int32, optional, tag="1")]
15413    pub kctx_tgid: ::core::option::Option<i32>,
15414    #[prost(uint32, optional, tag="2")]
15415    pub kctx_id: ::core::option::Option<u32>,
15416    #[prost(uint64, optional, tag="3")]
15417    pub info_val: ::core::option::Option<u64>,
15418}
15419#[derive(Clone, PartialEq, ::prost::Message)]
15420pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
15421    #[prost(int32, optional, tag="1")]
15422    pub kctx_tgid: ::core::option::Option<i32>,
15423    #[prost(uint32, optional, tag="2")]
15424    pub kctx_id: ::core::option::Option<u32>,
15425    #[prost(uint64, optional, tag="3")]
15426    pub info_val: ::core::option::Option<u64>,
15427}
15428#[derive(Clone, PartialEq, ::prost::Message)]
15429pub struct MaliMaliPmmcupendoffFtraceEvent {
15430    #[prost(int32, optional, tag="1")]
15431    pub kctx_tgid: ::core::option::Option<i32>,
15432    #[prost(uint32, optional, tag="2")]
15433    pub kctx_id: ::core::option::Option<u32>,
15434    #[prost(uint64, optional, tag="3")]
15435    pub info_val: ::core::option::Option<u64>,
15436}
15437#[derive(Clone, PartialEq, ::prost::Message)]
15438pub struct MaliMaliPmmcupendonreloadFtraceEvent {
15439    #[prost(int32, optional, tag="1")]
15440    pub kctx_tgid: ::core::option::Option<i32>,
15441    #[prost(uint32, optional, tag="2")]
15442    pub kctx_id: ::core::option::Option<u32>,
15443    #[prost(uint64, optional, tag="3")]
15444    pub info_val: ::core::option::Option<u64>,
15445}
15446#[derive(Clone, PartialEq, ::prost::Message)]
15447pub struct MaliMaliPmmcupowerdownFtraceEvent {
15448    #[prost(int32, optional, tag="1")]
15449    pub kctx_tgid: ::core::option::Option<i32>,
15450    #[prost(uint32, optional, tag="2")]
15451    pub kctx_id: ::core::option::Option<u32>,
15452    #[prost(uint64, optional, tag="3")]
15453    pub info_val: ::core::option::Option<u64>,
15454}
15455#[derive(Clone, PartialEq, ::prost::Message)]
15456pub struct MaliMaliPmmcuresetwaitFtraceEvent {
15457    #[prost(int32, optional, tag="1")]
15458    pub kctx_tgid: ::core::option::Option<i32>,
15459    #[prost(uint32, optional, tag="2")]
15460    pub kctx_id: ::core::option::Option<u32>,
15461    #[prost(uint64, optional, tag="3")]
15462    pub info_val: ::core::option::Option<u64>,
15463}
15464#[derive(Clone, PartialEq, ::prost::Message)]
15465pub struct MaliGpuPowerStateFtraceEvent {
15466    #[prost(uint64, optional, tag="1")]
15467    pub change_ns: ::core::option::Option<u64>,
15468    #[prost(int32, optional, tag="2")]
15469    pub from_state: ::core::option::Option<i32>,
15470    #[prost(int32, optional, tag="3")]
15471    pub to_state: ::core::option::Option<i32>,
15472}
15473// End of protos/perfetto/trace/ftrace/mali.proto
15474
15475// Begin of protos/perfetto/trace/ftrace/mdss.proto
15476
15477#[derive(Clone, PartialEq, ::prost::Message)]
15478pub struct MdpCmdKickoffFtraceEvent {
15479    #[prost(uint32, optional, tag="1")]
15480    pub ctl_num: ::core::option::Option<u32>,
15481    #[prost(int32, optional, tag="2")]
15482    pub kickoff_cnt: ::core::option::Option<i32>,
15483}
15484#[derive(Clone, PartialEq, ::prost::Message)]
15485pub struct MdpCommitFtraceEvent {
15486    #[prost(uint32, optional, tag="1")]
15487    pub num: ::core::option::Option<u32>,
15488    #[prost(uint32, optional, tag="2")]
15489    pub play_cnt: ::core::option::Option<u32>,
15490    #[prost(uint32, optional, tag="3")]
15491    pub clk_rate: ::core::option::Option<u32>,
15492    #[prost(uint64, optional, tag="4")]
15493    pub bandwidth: ::core::option::Option<u64>,
15494}
15495#[derive(Clone, PartialEq, ::prost::Message)]
15496pub struct MdpPerfSetOtFtraceEvent {
15497    #[prost(uint32, optional, tag="1")]
15498    pub pnum: ::core::option::Option<u32>,
15499    #[prost(uint32, optional, tag="2")]
15500    pub xin_id: ::core::option::Option<u32>,
15501    #[prost(uint32, optional, tag="3")]
15502    pub rd_lim: ::core::option::Option<u32>,
15503    #[prost(uint32, optional, tag="4")]
15504    pub is_vbif_rt: ::core::option::Option<u32>,
15505}
15506#[derive(Clone, PartialEq, ::prost::Message)]
15507pub struct MdpSsppChangeFtraceEvent {
15508    #[prost(uint32, optional, tag="1")]
15509    pub num: ::core::option::Option<u32>,
15510    #[prost(uint32, optional, tag="2")]
15511    pub play_cnt: ::core::option::Option<u32>,
15512    #[prost(uint32, optional, tag="3")]
15513    pub mixer: ::core::option::Option<u32>,
15514    #[prost(uint32, optional, tag="4")]
15515    pub stage: ::core::option::Option<u32>,
15516    #[prost(uint32, optional, tag="5")]
15517    pub flags: ::core::option::Option<u32>,
15518    #[prost(uint32, optional, tag="6")]
15519    pub format: ::core::option::Option<u32>,
15520    #[prost(uint32, optional, tag="7")]
15521    pub img_w: ::core::option::Option<u32>,
15522    #[prost(uint32, optional, tag="8")]
15523    pub img_h: ::core::option::Option<u32>,
15524    #[prost(uint32, optional, tag="9")]
15525    pub src_x: ::core::option::Option<u32>,
15526    #[prost(uint32, optional, tag="10")]
15527    pub src_y: ::core::option::Option<u32>,
15528    #[prost(uint32, optional, tag="11")]
15529    pub src_w: ::core::option::Option<u32>,
15530    #[prost(uint32, optional, tag="12")]
15531    pub src_h: ::core::option::Option<u32>,
15532    #[prost(uint32, optional, tag="13")]
15533    pub dst_x: ::core::option::Option<u32>,
15534    #[prost(uint32, optional, tag="14")]
15535    pub dst_y: ::core::option::Option<u32>,
15536    #[prost(uint32, optional, tag="15")]
15537    pub dst_w: ::core::option::Option<u32>,
15538    #[prost(uint32, optional, tag="16")]
15539    pub dst_h: ::core::option::Option<u32>,
15540}
15541#[derive(Clone, PartialEq, ::prost::Message)]
15542pub struct TracingMarkWriteFtraceEvent {
15543    #[prost(int32, optional, tag="1")]
15544    pub pid: ::core::option::Option<i32>,
15545    #[prost(string, optional, tag="2")]
15546    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15547    #[prost(uint32, optional, tag="3")]
15548    pub trace_begin: ::core::option::Option<u32>,
15549}
15550#[derive(Clone, PartialEq, ::prost::Message)]
15551pub struct MdpCmdPingpongDoneFtraceEvent {
15552    #[prost(uint32, optional, tag="1")]
15553    pub ctl_num: ::core::option::Option<u32>,
15554    #[prost(uint32, optional, tag="2")]
15555    pub intf_num: ::core::option::Option<u32>,
15556    #[prost(uint32, optional, tag="3")]
15557    pub pp_num: ::core::option::Option<u32>,
15558    #[prost(int32, optional, tag="4")]
15559    pub koff_cnt: ::core::option::Option<i32>,
15560}
15561#[derive(Clone, PartialEq, ::prost::Message)]
15562pub struct MdpCompareBwFtraceEvent {
15563    #[prost(uint64, optional, tag="1")]
15564    pub new_ab: ::core::option::Option<u64>,
15565    #[prost(uint64, optional, tag="2")]
15566    pub new_ib: ::core::option::Option<u64>,
15567    #[prost(uint64, optional, tag="3")]
15568    pub new_wb: ::core::option::Option<u64>,
15569    #[prost(uint64, optional, tag="4")]
15570    pub old_ab: ::core::option::Option<u64>,
15571    #[prost(uint64, optional, tag="5")]
15572    pub old_ib: ::core::option::Option<u64>,
15573    #[prost(uint64, optional, tag="6")]
15574    pub old_wb: ::core::option::Option<u64>,
15575    #[prost(uint32, optional, tag="7")]
15576    pub params_changed: ::core::option::Option<u32>,
15577    #[prost(uint32, optional, tag="8")]
15578    pub update_bw: ::core::option::Option<u32>,
15579}
15580#[derive(Clone, PartialEq, ::prost::Message)]
15581pub struct MdpPerfSetPanicLutsFtraceEvent {
15582    #[prost(uint32, optional, tag="1")]
15583    pub pnum: ::core::option::Option<u32>,
15584    #[prost(uint32, optional, tag="2")]
15585    pub fmt: ::core::option::Option<u32>,
15586    #[prost(uint32, optional, tag="3")]
15587    pub mode: ::core::option::Option<u32>,
15588    #[prost(uint32, optional, tag="4")]
15589    pub panic_lut: ::core::option::Option<u32>,
15590    #[prost(uint32, optional, tag="5")]
15591    pub robust_lut: ::core::option::Option<u32>,
15592}
15593#[derive(Clone, PartialEq, ::prost::Message)]
15594pub struct MdpSsppSetFtraceEvent {
15595    #[prost(uint32, optional, tag="1")]
15596    pub num: ::core::option::Option<u32>,
15597    #[prost(uint32, optional, tag="2")]
15598    pub play_cnt: ::core::option::Option<u32>,
15599    #[prost(uint32, optional, tag="3")]
15600    pub mixer: ::core::option::Option<u32>,
15601    #[prost(uint32, optional, tag="4")]
15602    pub stage: ::core::option::Option<u32>,
15603    #[prost(uint32, optional, tag="5")]
15604    pub flags: ::core::option::Option<u32>,
15605    #[prost(uint32, optional, tag="6")]
15606    pub format: ::core::option::Option<u32>,
15607    #[prost(uint32, optional, tag="7")]
15608    pub img_w: ::core::option::Option<u32>,
15609    #[prost(uint32, optional, tag="8")]
15610    pub img_h: ::core::option::Option<u32>,
15611    #[prost(uint32, optional, tag="9")]
15612    pub src_x: ::core::option::Option<u32>,
15613    #[prost(uint32, optional, tag="10")]
15614    pub src_y: ::core::option::Option<u32>,
15615    #[prost(uint32, optional, tag="11")]
15616    pub src_w: ::core::option::Option<u32>,
15617    #[prost(uint32, optional, tag="12")]
15618    pub src_h: ::core::option::Option<u32>,
15619    #[prost(uint32, optional, tag="13")]
15620    pub dst_x: ::core::option::Option<u32>,
15621    #[prost(uint32, optional, tag="14")]
15622    pub dst_y: ::core::option::Option<u32>,
15623    #[prost(uint32, optional, tag="15")]
15624    pub dst_w: ::core::option::Option<u32>,
15625    #[prost(uint32, optional, tag="16")]
15626    pub dst_h: ::core::option::Option<u32>,
15627}
15628#[derive(Clone, PartialEq, ::prost::Message)]
15629pub struct MdpCmdReadptrDoneFtraceEvent {
15630    #[prost(uint32, optional, tag="1")]
15631    pub ctl_num: ::core::option::Option<u32>,
15632    #[prost(int32, optional, tag="2")]
15633    pub koff_cnt: ::core::option::Option<i32>,
15634}
15635#[derive(Clone, PartialEq, ::prost::Message)]
15636pub struct MdpMisrCrcFtraceEvent {
15637    #[prost(uint32, optional, tag="1")]
15638    pub block_id: ::core::option::Option<u32>,
15639    #[prost(uint32, optional, tag="2")]
15640    pub vsync_cnt: ::core::option::Option<u32>,
15641    #[prost(uint32, optional, tag="3")]
15642    pub crc: ::core::option::Option<u32>,
15643}
15644#[derive(Clone, PartialEq, ::prost::Message)]
15645pub struct MdpPerfSetQosLutsFtraceEvent {
15646    #[prost(uint32, optional, tag="1")]
15647    pub pnum: ::core::option::Option<u32>,
15648    #[prost(uint32, optional, tag="2")]
15649    pub fmt: ::core::option::Option<u32>,
15650    #[prost(uint32, optional, tag="3")]
15651    pub intf: ::core::option::Option<u32>,
15652    #[prost(uint32, optional, tag="4")]
15653    pub rot: ::core::option::Option<u32>,
15654    #[prost(uint32, optional, tag="5")]
15655    pub fl: ::core::option::Option<u32>,
15656    #[prost(uint32, optional, tag="6")]
15657    pub lut: ::core::option::Option<u32>,
15658    #[prost(uint32, optional, tag="7")]
15659    pub linear: ::core::option::Option<u32>,
15660}
15661#[derive(Clone, PartialEq, ::prost::Message)]
15662pub struct MdpTraceCounterFtraceEvent {
15663    #[prost(int32, optional, tag="1")]
15664    pub pid: ::core::option::Option<i32>,
15665    #[prost(string, optional, tag="2")]
15666    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
15667    #[prost(int32, optional, tag="3")]
15668    pub value: ::core::option::Option<i32>,
15669}
15670#[derive(Clone, PartialEq, ::prost::Message)]
15671pub struct MdpCmdReleaseBwFtraceEvent {
15672    #[prost(uint32, optional, tag="1")]
15673    pub ctl_num: ::core::option::Option<u32>,
15674}
15675#[derive(Clone, PartialEq, ::prost::Message)]
15676pub struct MdpMixerUpdateFtraceEvent {
15677    #[prost(uint32, optional, tag="1")]
15678    pub mixer_num: ::core::option::Option<u32>,
15679}
15680#[derive(Clone, PartialEq, ::prost::Message)]
15681pub struct MdpPerfSetWmLevelsFtraceEvent {
15682    #[prost(uint32, optional, tag="1")]
15683    pub pnum: ::core::option::Option<u32>,
15684    #[prost(uint32, optional, tag="2")]
15685    pub use_space: ::core::option::Option<u32>,
15686    #[prost(uint32, optional, tag="3")]
15687    pub priority_bytes: ::core::option::Option<u32>,
15688    #[prost(uint32, optional, tag="4")]
15689    pub wm0: ::core::option::Option<u32>,
15690    #[prost(uint32, optional, tag="5")]
15691    pub wm1: ::core::option::Option<u32>,
15692    #[prost(uint32, optional, tag="6")]
15693    pub wm2: ::core::option::Option<u32>,
15694    #[prost(uint32, optional, tag="7")]
15695    pub mb_cnt: ::core::option::Option<u32>,
15696    #[prost(uint32, optional, tag="8")]
15697    pub mb_size: ::core::option::Option<u32>,
15698}
15699#[derive(Clone, PartialEq, ::prost::Message)]
15700pub struct MdpVideoUnderrunDoneFtraceEvent {
15701    #[prost(uint32, optional, tag="1")]
15702    pub ctl_num: ::core::option::Option<u32>,
15703    #[prost(uint32, optional, tag="2")]
15704    pub underrun_cnt: ::core::option::Option<u32>,
15705}
15706#[derive(Clone, PartialEq, ::prost::Message)]
15707pub struct MdpCmdWaitPingpongFtraceEvent {
15708    #[prost(uint32, optional, tag="1")]
15709    pub ctl_num: ::core::option::Option<u32>,
15710    #[prost(int32, optional, tag="2")]
15711    pub kickoff_cnt: ::core::option::Option<i32>,
15712}
15713#[derive(Clone, PartialEq, ::prost::Message)]
15714pub struct MdpPerfPrefillCalcFtraceEvent {
15715    #[prost(uint32, optional, tag="1")]
15716    pub pnum: ::core::option::Option<u32>,
15717    #[prost(uint32, optional, tag="2")]
15718    pub latency_buf: ::core::option::Option<u32>,
15719    #[prost(uint32, optional, tag="3")]
15720    pub ot: ::core::option::Option<u32>,
15721    #[prost(uint32, optional, tag="4")]
15722    pub y_buf: ::core::option::Option<u32>,
15723    #[prost(uint32, optional, tag="5")]
15724    pub y_scaler: ::core::option::Option<u32>,
15725    #[prost(uint32, optional, tag="6")]
15726    pub pp_lines: ::core::option::Option<u32>,
15727    #[prost(uint32, optional, tag="7")]
15728    pub pp_bytes: ::core::option::Option<u32>,
15729    #[prost(uint32, optional, tag="8")]
15730    pub post_sc: ::core::option::Option<u32>,
15731    #[prost(uint32, optional, tag="9")]
15732    pub fbc_bytes: ::core::option::Option<u32>,
15733    #[prost(uint32, optional, tag="10")]
15734    pub prefill_bytes: ::core::option::Option<u32>,
15735}
15736#[derive(Clone, PartialEq, ::prost::Message)]
15737pub struct MdpPerfUpdateBusFtraceEvent {
15738    #[prost(int32, optional, tag="1")]
15739    pub client: ::core::option::Option<i32>,
15740    #[prost(uint64, optional, tag="2")]
15741    pub ab_quota: ::core::option::Option<u64>,
15742    #[prost(uint64, optional, tag="3")]
15743    pub ib_quota: ::core::option::Option<u64>,
15744}
15745#[derive(Clone, PartialEq, ::prost::Message)]
15746pub struct RotatorBwAoAsContextFtraceEvent {
15747    #[prost(uint32, optional, tag="1")]
15748    pub state: ::core::option::Option<u32>,
15749}
15750// End of protos/perfetto/trace/ftrace/mdss.proto
15751
15752// Begin of protos/perfetto/trace/ftrace/mm_event.proto
15753
15754#[derive(Clone, PartialEq, ::prost::Message)]
15755pub struct MmEventRecordFtraceEvent {
15756    #[prost(uint32, optional, tag="1")]
15757    pub avg_lat: ::core::option::Option<u32>,
15758    #[prost(uint32, optional, tag="2")]
15759    pub count: ::core::option::Option<u32>,
15760    #[prost(uint32, optional, tag="3")]
15761    pub max_lat: ::core::option::Option<u32>,
15762    #[prost(uint32, optional, tag="4")]
15763    pub r#type: ::core::option::Option<u32>,
15764}
15765// End of protos/perfetto/trace/ftrace/mm_event.proto
15766
15767// Begin of protos/perfetto/trace/ftrace/net.proto
15768
15769#[derive(Clone, PartialEq, ::prost::Message)]
15770pub struct NetifReceiveSkbFtraceEvent {
15771    #[prost(uint32, optional, tag="1")]
15772    pub len: ::core::option::Option<u32>,
15773    #[prost(string, optional, tag="2")]
15774    pub name: ::core::option::Option<::prost::alloc::string::String>,
15775    #[prost(uint64, optional, tag="3")]
15776    pub skbaddr: ::core::option::Option<u64>,
15777}
15778#[derive(Clone, PartialEq, ::prost::Message)]
15779pub struct NetDevXmitFtraceEvent {
15780    #[prost(uint32, optional, tag="1")]
15781    pub len: ::core::option::Option<u32>,
15782    #[prost(string, optional, tag="2")]
15783    pub name: ::core::option::Option<::prost::alloc::string::String>,
15784    #[prost(int32, optional, tag="3")]
15785    pub rc: ::core::option::Option<i32>,
15786    #[prost(uint64, optional, tag="4")]
15787    pub skbaddr: ::core::option::Option<u64>,
15788}
15789#[derive(Clone, PartialEq, ::prost::Message)]
15790pub struct NapiGroReceiveEntryFtraceEvent {
15791    #[prost(uint32, optional, tag="1")]
15792    pub data_len: ::core::option::Option<u32>,
15793    #[prost(uint32, optional, tag="2")]
15794    pub gso_size: ::core::option::Option<u32>,
15795    #[prost(uint32, optional, tag="3")]
15796    pub gso_type: ::core::option::Option<u32>,
15797    #[prost(uint32, optional, tag="4")]
15798    pub hash: ::core::option::Option<u32>,
15799    #[prost(uint32, optional, tag="5")]
15800    pub ip_summed: ::core::option::Option<u32>,
15801    #[prost(uint32, optional, tag="6")]
15802    pub l4_hash: ::core::option::Option<u32>,
15803    #[prost(uint32, optional, tag="7")]
15804    pub len: ::core::option::Option<u32>,
15805    #[prost(int32, optional, tag="8")]
15806    pub mac_header: ::core::option::Option<i32>,
15807    #[prost(uint32, optional, tag="9")]
15808    pub mac_header_valid: ::core::option::Option<u32>,
15809    #[prost(string, optional, tag="10")]
15810    pub name: ::core::option::Option<::prost::alloc::string::String>,
15811    #[prost(uint32, optional, tag="11")]
15812    pub napi_id: ::core::option::Option<u32>,
15813    #[prost(uint32, optional, tag="12")]
15814    pub nr_frags: ::core::option::Option<u32>,
15815    #[prost(uint32, optional, tag="13")]
15816    pub protocol: ::core::option::Option<u32>,
15817    #[prost(uint32, optional, tag="14")]
15818    pub queue_mapping: ::core::option::Option<u32>,
15819    #[prost(uint64, optional, tag="15")]
15820    pub skbaddr: ::core::option::Option<u64>,
15821    #[prost(uint32, optional, tag="16")]
15822    pub truesize: ::core::option::Option<u32>,
15823    #[prost(uint32, optional, tag="17")]
15824    pub vlan_proto: ::core::option::Option<u32>,
15825    #[prost(uint32, optional, tag="18")]
15826    pub vlan_tagged: ::core::option::Option<u32>,
15827    #[prost(uint32, optional, tag="19")]
15828    pub vlan_tci: ::core::option::Option<u32>,
15829}
15830#[derive(Clone, PartialEq, ::prost::Message)]
15831pub struct NapiGroReceiveExitFtraceEvent {
15832    #[prost(int32, optional, tag="1")]
15833    pub ret: ::core::option::Option<i32>,
15834}
15835// End of protos/perfetto/trace/ftrace/net.proto
15836
15837// Begin of protos/perfetto/trace/ftrace/oom.proto
15838
15839#[derive(Clone, PartialEq, ::prost::Message)]
15840pub struct OomScoreAdjUpdateFtraceEvent {
15841    #[prost(string, optional, tag="1")]
15842    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15843    #[prost(int32, optional, tag="2")]
15844    pub oom_score_adj: ::core::option::Option<i32>,
15845    #[prost(int32, optional, tag="3")]
15846    pub pid: ::core::option::Option<i32>,
15847}
15848#[derive(Clone, PartialEq, ::prost::Message)]
15849pub struct MarkVictimFtraceEvent {
15850    #[prost(int32, optional, tag="1")]
15851    pub pid: ::core::option::Option<i32>,
15852}
15853// End of protos/perfetto/trace/ftrace/oom.proto
15854
15855// Begin of protos/perfetto/trace/ftrace/panel.proto
15856
15857#[derive(Clone, PartialEq, ::prost::Message)]
15858pub struct DsiCmdFifoStatusFtraceEvent {
15859    #[prost(uint32, optional, tag="1")]
15860    pub header: ::core::option::Option<u32>,
15861    #[prost(uint32, optional, tag="2")]
15862    pub payload: ::core::option::Option<u32>,
15863}
15864#[derive(Clone, PartialEq, ::prost::Message)]
15865pub struct DsiRxFtraceEvent {
15866    #[prost(uint32, optional, tag="1")]
15867    pub cmd: ::core::option::Option<u32>,
15868    #[prost(bytes="vec", optional, tag="3")]
15869    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15870}
15871#[derive(Clone, PartialEq, ::prost::Message)]
15872pub struct DsiTxFtraceEvent {
15873    #[prost(uint32, optional, tag="1")]
15874    pub last: ::core::option::Option<u32>,
15875    #[prost(uint32, optional, tag="3")]
15876    pub r#type: ::core::option::Option<u32>,
15877    #[prost(bytes="vec", optional, tag="4")]
15878    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15879}
15880#[derive(Clone, PartialEq, ::prost::Message)]
15881pub struct PanelWriteGenericFtraceEvent {
15882    #[prost(int32, optional, tag="1")]
15883    pub pid: ::core::option::Option<i32>,
15884    #[prost(string, optional, tag="2")]
15885    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15886    #[prost(uint32, optional, tag="3")]
15887    pub trace_begin: ::core::option::Option<u32>,
15888    #[prost(string, optional, tag="4")]
15889    pub name: ::core::option::Option<::prost::alloc::string::String>,
15890    #[prost(uint32, optional, tag="5")]
15891    pub r#type: ::core::option::Option<u32>,
15892    #[prost(int32, optional, tag="6")]
15893    pub value: ::core::option::Option<i32>,
15894}
15895#[derive(Clone, PartialEq, ::prost::Message)]
15896pub struct GramCollisionFtraceEvent {
15897    #[prost(int32, optional, tag="1")]
15898    pub panel_index: ::core::option::Option<i32>,
15899    #[prost(uint32, optional, tag="2")]
15900    pub collision_cnt: ::core::option::Option<u32>,
15901}
15902// End of protos/perfetto/trace/ftrace/panel.proto
15903
15904// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15905
15906#[derive(Clone, PartialEq, ::prost::Message)]
15907pub struct SchedSwitchWithCtrsFtraceEvent {
15908    #[prost(int32, optional, tag="1")]
15909    pub old_pid: ::core::option::Option<i32>,
15910    #[prost(int32, optional, tag="2")]
15911    pub new_pid: ::core::option::Option<i32>,
15912    #[prost(uint64, optional, tag="3")]
15913    pub cctr: ::core::option::Option<u64>,
15914    #[prost(uint64, optional, tag="4")]
15915    pub ctr0: ::core::option::Option<u64>,
15916    #[prost(uint64, optional, tag="5")]
15917    pub ctr1: ::core::option::Option<u64>,
15918    #[prost(uint64, optional, tag="6")]
15919    pub ctr2: ::core::option::Option<u64>,
15920    #[prost(uint64, optional, tag="7")]
15921    pub ctr3: ::core::option::Option<u64>,
15922    #[prost(uint32, optional, tag="8")]
15923    pub lctr0: ::core::option::Option<u32>,
15924    #[prost(uint32, optional, tag="9")]
15925    pub lctr1: ::core::option::Option<u32>,
15926    #[prost(uint64, optional, tag="10")]
15927    pub ctr4: ::core::option::Option<u64>,
15928    #[prost(uint64, optional, tag="11")]
15929    pub ctr5: ::core::option::Option<u64>,
15930    #[prost(string, optional, tag="12")]
15931    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15932    #[prost(int32, optional, tag="13")]
15933    pub prev_pid: ::core::option::Option<i32>,
15934    #[prost(uint32, optional, tag="14")]
15935    pub cyc: ::core::option::Option<u32>,
15936    #[prost(uint32, optional, tag="15")]
15937    pub inst: ::core::option::Option<u32>,
15938    #[prost(uint32, optional, tag="16")]
15939    pub stallbm: ::core::option::Option<u32>,
15940    #[prost(uint32, optional, tag="17")]
15941    pub l3dm: ::core::option::Option<u32>,
15942    #[prost(int32, optional, tag="18")]
15943    pub next_pid: ::core::option::Option<i32>,
15944    #[prost(string, optional, tag="19")]
15945    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15946    #[prost(int64, optional, tag="20")]
15947    pub prev_state: ::core::option::Option<i64>,
15948    #[prost(uint64, optional, tag="21")]
15949    pub amu0: ::core::option::Option<u64>,
15950    #[prost(uint64, optional, tag="22")]
15951    pub amu1: ::core::option::Option<u64>,
15952    #[prost(uint64, optional, tag="23")]
15953    pub amu2: ::core::option::Option<u64>,
15954}
15955// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15956
15957// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
15958
15959#[derive(Clone, PartialEq, ::prost::Message)]
15960pub struct PixelMmKswapdWakeFtraceEvent {
15961    #[prost(int32, optional, tag="1")]
15962    pub whatever: ::core::option::Option<i32>,
15963}
15964#[derive(Clone, PartialEq, ::prost::Message)]
15965pub struct PixelMmKswapdDoneFtraceEvent {
15966    #[prost(uint64, optional, tag="1")]
15967    pub delta_nr_scanned: ::core::option::Option<u64>,
15968    #[prost(uint64, optional, tag="2")]
15969    pub delta_nr_reclaimed: ::core::option::Option<u64>,
15970    #[prost(uint64, optional, tag="3")]
15971    pub delta_nr_allocated: ::core::option::Option<u64>,
15972    #[prost(uint64, optional, tag="4")]
15973    pub duration_ns: ::core::option::Option<u64>,
15974}
15975// End of protos/perfetto/trace/ftrace/pixel_mm.proto
15976
15977// Begin of protos/perfetto/trace/ftrace/power.proto
15978
15979#[derive(Clone, PartialEq, ::prost::Message)]
15980pub struct CpuFrequencyFtraceEvent {
15981    #[prost(uint32, optional, tag="1")]
15982    pub state: ::core::option::Option<u32>,
15983    #[prost(uint32, optional, tag="2")]
15984    pub cpu_id: ::core::option::Option<u32>,
15985}
15986#[derive(Clone, PartialEq, ::prost::Message)]
15987pub struct CpuFrequencyLimitsFtraceEvent {
15988    #[prost(uint32, optional, tag="1")]
15989    pub min_freq: ::core::option::Option<u32>,
15990    #[prost(uint32, optional, tag="2")]
15991    pub max_freq: ::core::option::Option<u32>,
15992    #[prost(uint32, optional, tag="3")]
15993    pub cpu_id: ::core::option::Option<u32>,
15994}
15995#[derive(Clone, PartialEq, ::prost::Message)]
15996pub struct CpuIdleFtraceEvent {
15997    #[prost(uint32, optional, tag="1")]
15998    pub state: ::core::option::Option<u32>,
15999    #[prost(uint32, optional, tag="2")]
16000    pub cpu_id: ::core::option::Option<u32>,
16001}
16002#[derive(Clone, PartialEq, ::prost::Message)]
16003pub struct ClockEnableFtraceEvent {
16004    #[prost(string, optional, tag="1")]
16005    pub name: ::core::option::Option<::prost::alloc::string::String>,
16006    #[prost(uint64, optional, tag="2")]
16007    pub state: ::core::option::Option<u64>,
16008    #[prost(uint64, optional, tag="3")]
16009    pub cpu_id: ::core::option::Option<u64>,
16010}
16011#[derive(Clone, PartialEq, ::prost::Message)]
16012pub struct ClockDisableFtraceEvent {
16013    #[prost(string, optional, tag="1")]
16014    pub name: ::core::option::Option<::prost::alloc::string::String>,
16015    #[prost(uint64, optional, tag="2")]
16016    pub state: ::core::option::Option<u64>,
16017    #[prost(uint64, optional, tag="3")]
16018    pub cpu_id: ::core::option::Option<u64>,
16019}
16020#[derive(Clone, PartialEq, ::prost::Message)]
16021pub struct ClockSetRateFtraceEvent {
16022    #[prost(string, optional, tag="1")]
16023    pub name: ::core::option::Option<::prost::alloc::string::String>,
16024    #[prost(uint64, optional, tag="2")]
16025    pub state: ::core::option::Option<u64>,
16026    #[prost(uint64, optional, tag="3")]
16027    pub cpu_id: ::core::option::Option<u64>,
16028}
16029#[derive(Clone, PartialEq, ::prost::Message)]
16030pub struct SuspendResumeFtraceEvent {
16031    #[prost(string, optional, tag="1")]
16032    pub action: ::core::option::Option<::prost::alloc::string::String>,
16033    #[prost(int32, optional, tag="2")]
16034    pub val: ::core::option::Option<i32>,
16035    #[prost(uint32, optional, tag="3")]
16036    pub start: ::core::option::Option<u32>,
16037}
16038#[derive(Clone, PartialEq, ::prost::Message)]
16039pub struct GpuFrequencyFtraceEvent {
16040    #[prost(uint32, optional, tag="1")]
16041    pub gpu_id: ::core::option::Option<u32>,
16042    #[prost(uint32, optional, tag="2")]
16043    pub state: ::core::option::Option<u32>,
16044}
16045#[derive(Clone, PartialEq, ::prost::Message)]
16046pub struct WakeupSourceActivateFtraceEvent {
16047    #[prost(string, optional, tag="1")]
16048    pub name: ::core::option::Option<::prost::alloc::string::String>,
16049    #[prost(uint64, optional, tag="2")]
16050    pub state: ::core::option::Option<u64>,
16051}
16052#[derive(Clone, PartialEq, ::prost::Message)]
16053pub struct WakeupSourceDeactivateFtraceEvent {
16054    #[prost(string, optional, tag="1")]
16055    pub name: ::core::option::Option<::prost::alloc::string::String>,
16056    #[prost(uint64, optional, tag="2")]
16057    pub state: ::core::option::Option<u64>,
16058}
16059#[derive(Clone, PartialEq, ::prost::Message)]
16060pub struct GpuWorkPeriodFtraceEvent {
16061    #[prost(uint32, optional, tag="1")]
16062    pub gpu_id: ::core::option::Option<u32>,
16063    #[prost(uint32, optional, tag="2")]
16064    pub uid: ::core::option::Option<u32>,
16065    #[prost(uint64, optional, tag="3")]
16066    pub start_time_ns: ::core::option::Option<u64>,
16067    #[prost(uint64, optional, tag="4")]
16068    pub end_time_ns: ::core::option::Option<u64>,
16069    #[prost(uint64, optional, tag="5")]
16070    pub total_active_duration_ns: ::core::option::Option<u64>,
16071}
16072#[derive(Clone, PartialEq, ::prost::Message)]
16073pub struct DevicePmCallbackStartFtraceEvent {
16074    #[prost(string, optional, tag="1")]
16075    pub device: ::core::option::Option<::prost::alloc::string::String>,
16076    #[prost(string, optional, tag="2")]
16077    pub driver: ::core::option::Option<::prost::alloc::string::String>,
16078    #[prost(string, optional, tag="3")]
16079    pub parent: ::core::option::Option<::prost::alloc::string::String>,
16080    #[prost(string, optional, tag="4")]
16081    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
16082    #[prost(int32, optional, tag="5")]
16083    pub event: ::core::option::Option<i32>,
16084}
16085#[derive(Clone, PartialEq, ::prost::Message)]
16086pub struct DevicePmCallbackEndFtraceEvent {
16087    #[prost(string, optional, tag="1")]
16088    pub device: ::core::option::Option<::prost::alloc::string::String>,
16089    #[prost(string, optional, tag="2")]
16090    pub driver: ::core::option::Option<::prost::alloc::string::String>,
16091    #[prost(int32, optional, tag="3")]
16092    pub error: ::core::option::Option<i32>,
16093}
16094#[derive(Clone, PartialEq, ::prost::Message)]
16095pub struct GpuPowerStateFtraceEvent {
16096    #[prost(int32, optional, tag="1")]
16097    pub old_state: ::core::option::Option<i32>,
16098    #[prost(int32, optional, tag="2")]
16099    pub new_state: ::core::option::Option<i32>,
16100}
16101// End of protos/perfetto/trace/ftrace/power.proto
16102
16103// Begin of protos/perfetto/trace/ftrace/printk.proto
16104
16105#[derive(Clone, PartialEq, ::prost::Message)]
16106pub struct ConsoleFtraceEvent {
16107    #[prost(string, optional, tag="1")]
16108    pub msg: ::core::option::Option<::prost::alloc::string::String>,
16109}
16110// End of protos/perfetto/trace/ftrace/printk.proto
16111
16112// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
16113
16114#[derive(Clone, PartialEq, ::prost::Message)]
16115pub struct SysEnterFtraceEvent {
16116    #[prost(int64, optional, tag="1")]
16117    pub id: ::core::option::Option<i64>,
16118    #[prost(uint64, repeated, packed="false", tag="2")]
16119    pub args: ::prost::alloc::vec::Vec<u64>,
16120}
16121#[derive(Clone, PartialEq, ::prost::Message)]
16122pub struct SysExitFtraceEvent {
16123    #[prost(int64, optional, tag="1")]
16124    pub id: ::core::option::Option<i64>,
16125    #[prost(int64, optional, tag="2")]
16126    pub ret: ::core::option::Option<i64>,
16127}
16128// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
16129
16130// Begin of protos/perfetto/trace/ftrace/regulator.proto
16131
16132#[derive(Clone, PartialEq, ::prost::Message)]
16133pub struct RegulatorDisableFtraceEvent {
16134    #[prost(string, optional, tag="1")]
16135    pub name: ::core::option::Option<::prost::alloc::string::String>,
16136}
16137#[derive(Clone, PartialEq, ::prost::Message)]
16138pub struct RegulatorDisableCompleteFtraceEvent {
16139    #[prost(string, optional, tag="1")]
16140    pub name: ::core::option::Option<::prost::alloc::string::String>,
16141}
16142#[derive(Clone, PartialEq, ::prost::Message)]
16143pub struct RegulatorEnableFtraceEvent {
16144    #[prost(string, optional, tag="1")]
16145    pub name: ::core::option::Option<::prost::alloc::string::String>,
16146}
16147#[derive(Clone, PartialEq, ::prost::Message)]
16148pub struct RegulatorEnableCompleteFtraceEvent {
16149    #[prost(string, optional, tag="1")]
16150    pub name: ::core::option::Option<::prost::alloc::string::String>,
16151}
16152#[derive(Clone, PartialEq, ::prost::Message)]
16153pub struct RegulatorEnableDelayFtraceEvent {
16154    #[prost(string, optional, tag="1")]
16155    pub name: ::core::option::Option<::prost::alloc::string::String>,
16156}
16157#[derive(Clone, PartialEq, ::prost::Message)]
16158pub struct RegulatorSetVoltageFtraceEvent {
16159    #[prost(string, optional, tag="1")]
16160    pub name: ::core::option::Option<::prost::alloc::string::String>,
16161    #[prost(int32, optional, tag="2")]
16162    pub min: ::core::option::Option<i32>,
16163    #[prost(int32, optional, tag="3")]
16164    pub max: ::core::option::Option<i32>,
16165}
16166#[derive(Clone, PartialEq, ::prost::Message)]
16167pub struct RegulatorSetVoltageCompleteFtraceEvent {
16168    #[prost(string, optional, tag="1")]
16169    pub name: ::core::option::Option<::prost::alloc::string::String>,
16170    #[prost(uint32, optional, tag="2")]
16171    pub val: ::core::option::Option<u32>,
16172}
16173// End of protos/perfetto/trace/ftrace/regulator.proto
16174
16175// Begin of protos/perfetto/trace/ftrace/rpm.proto
16176
16177#[derive(Clone, PartialEq, ::prost::Message)]
16178pub struct RpmStatusFtraceEvent {
16179    #[prost(string, optional, tag="1")]
16180    pub name: ::core::option::Option<::prost::alloc::string::String>,
16181    #[prost(int32, optional, tag="2")]
16182    pub status: ::core::option::Option<i32>,
16183}
16184// End of protos/perfetto/trace/ftrace/rpm.proto
16185
16186// Begin of protos/perfetto/trace/ftrace/samsung.proto
16187
16188#[derive(Clone, PartialEq, ::prost::Message)]
16189pub struct SamsungTracingMarkWriteFtraceEvent {
16190    #[prost(int32, optional, tag="1")]
16191    pub pid: ::core::option::Option<i32>,
16192    #[prost(string, optional, tag="2")]
16193    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16194    #[prost(uint32, optional, tag="3")]
16195    pub trace_begin: ::core::option::Option<u32>,
16196    #[prost(uint32, optional, tag="4")]
16197    pub trace_type: ::core::option::Option<u32>,
16198    #[prost(int32, optional, tag="5")]
16199    pub value: ::core::option::Option<i32>,
16200}
16201// End of protos/perfetto/trace/ftrace/samsung.proto
16202
16203// Begin of protos/perfetto/trace/ftrace/sched.proto
16204
16205#[derive(Clone, PartialEq, ::prost::Message)]
16206pub struct SchedSwitchFtraceEvent {
16207    #[prost(string, optional, tag="1")]
16208    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
16209    #[prost(int32, optional, tag="2")]
16210    pub prev_pid: ::core::option::Option<i32>,
16211    #[prost(int32, optional, tag="3")]
16212    pub prev_prio: ::core::option::Option<i32>,
16213    #[prost(int64, optional, tag="4")]
16214    pub prev_state: ::core::option::Option<i64>,
16215    #[prost(string, optional, tag="5")]
16216    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
16217    #[prost(int32, optional, tag="6")]
16218    pub next_pid: ::core::option::Option<i32>,
16219    #[prost(int32, optional, tag="7")]
16220    pub next_prio: ::core::option::Option<i32>,
16221}
16222#[derive(Clone, PartialEq, ::prost::Message)]
16223pub struct SchedWakeupFtraceEvent {
16224    #[prost(string, optional, tag="1")]
16225    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16226    #[prost(int32, optional, tag="2")]
16227    pub pid: ::core::option::Option<i32>,
16228    #[prost(int32, optional, tag="3")]
16229    pub prio: ::core::option::Option<i32>,
16230    #[prost(int32, optional, tag="4")]
16231    pub success: ::core::option::Option<i32>,
16232    #[prost(int32, optional, tag="5")]
16233    pub target_cpu: ::core::option::Option<i32>,
16234}
16235#[derive(Clone, PartialEq, ::prost::Message)]
16236pub struct SchedBlockedReasonFtraceEvent {
16237    #[prost(int32, optional, tag="1")]
16238    pub pid: ::core::option::Option<i32>,
16239    #[prost(uint64, optional, tag="2")]
16240    pub caller: ::core::option::Option<u64>,
16241    #[prost(uint32, optional, tag="3")]
16242    pub io_wait: ::core::option::Option<u32>,
16243}
16244#[derive(Clone, PartialEq, ::prost::Message)]
16245pub struct SchedCpuHotplugFtraceEvent {
16246    #[prost(int32, optional, tag="1")]
16247    pub affected_cpu: ::core::option::Option<i32>,
16248    #[prost(int32, optional, tag="2")]
16249    pub error: ::core::option::Option<i32>,
16250    #[prost(int32, optional, tag="3")]
16251    pub status: ::core::option::Option<i32>,
16252}
16253#[derive(Clone, PartialEq, ::prost::Message)]
16254pub struct SchedWakingFtraceEvent {
16255    #[prost(string, optional, tag="1")]
16256    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16257    #[prost(int32, optional, tag="2")]
16258    pub pid: ::core::option::Option<i32>,
16259    #[prost(int32, optional, tag="3")]
16260    pub prio: ::core::option::Option<i32>,
16261    #[prost(int32, optional, tag="4")]
16262    pub success: ::core::option::Option<i32>,
16263    #[prost(int32, optional, tag="5")]
16264    pub target_cpu: ::core::option::Option<i32>,
16265}
16266#[derive(Clone, PartialEq, ::prost::Message)]
16267pub struct SchedWakeupNewFtraceEvent {
16268    #[prost(string, optional, tag="1")]
16269    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16270    #[prost(int32, optional, tag="2")]
16271    pub pid: ::core::option::Option<i32>,
16272    #[prost(int32, optional, tag="3")]
16273    pub prio: ::core::option::Option<i32>,
16274    #[prost(int32, optional, tag="4")]
16275    pub success: ::core::option::Option<i32>,
16276    #[prost(int32, optional, tag="5")]
16277    pub target_cpu: ::core::option::Option<i32>,
16278}
16279#[derive(Clone, PartialEq, ::prost::Message)]
16280pub struct SchedProcessExecFtraceEvent {
16281    #[prost(string, optional, tag="1")]
16282    pub filename: ::core::option::Option<::prost::alloc::string::String>,
16283    #[prost(int32, optional, tag="2")]
16284    pub pid: ::core::option::Option<i32>,
16285    #[prost(int32, optional, tag="3")]
16286    pub old_pid: ::core::option::Option<i32>,
16287}
16288#[derive(Clone, PartialEq, ::prost::Message)]
16289pub struct SchedProcessExitFtraceEvent {
16290    #[prost(string, optional, tag="1")]
16291    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16292    #[prost(int32, optional, tag="2")]
16293    pub pid: ::core::option::Option<i32>,
16294    #[prost(int32, optional, tag="3")]
16295    pub tgid: ::core::option::Option<i32>,
16296    #[prost(int32, optional, tag="4")]
16297    pub prio: ::core::option::Option<i32>,
16298}
16299#[derive(Clone, PartialEq, ::prost::Message)]
16300pub struct SchedProcessForkFtraceEvent {
16301    #[prost(string, optional, tag="1")]
16302    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
16303    #[prost(int32, optional, tag="2")]
16304    pub parent_pid: ::core::option::Option<i32>,
16305    #[prost(string, optional, tag="3")]
16306    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
16307    #[prost(int32, optional, tag="4")]
16308    pub child_pid: ::core::option::Option<i32>,
16309}
16310#[derive(Clone, PartialEq, ::prost::Message)]
16311pub struct SchedProcessFreeFtraceEvent {
16312    #[prost(string, optional, tag="1")]
16313    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16314    #[prost(int32, optional, tag="2")]
16315    pub pid: ::core::option::Option<i32>,
16316    #[prost(int32, optional, tag="3")]
16317    pub prio: ::core::option::Option<i32>,
16318}
16319#[derive(Clone, PartialEq, ::prost::Message)]
16320pub struct SchedProcessHangFtraceEvent {
16321    #[prost(string, optional, tag="1")]
16322    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16323    #[prost(int32, optional, tag="2")]
16324    pub pid: ::core::option::Option<i32>,
16325}
16326#[derive(Clone, PartialEq, ::prost::Message)]
16327pub struct SchedProcessWaitFtraceEvent {
16328    #[prost(string, optional, tag="1")]
16329    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16330    #[prost(int32, optional, tag="2")]
16331    pub pid: ::core::option::Option<i32>,
16332    #[prost(int32, optional, tag="3")]
16333    pub prio: ::core::option::Option<i32>,
16334}
16335#[derive(Clone, PartialEq, ::prost::Message)]
16336pub struct SchedPiSetprioFtraceEvent {
16337    #[prost(string, optional, tag="1")]
16338    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16339    #[prost(int32, optional, tag="2")]
16340    pub newprio: ::core::option::Option<i32>,
16341    #[prost(int32, optional, tag="3")]
16342    pub oldprio: ::core::option::Option<i32>,
16343    #[prost(int32, optional, tag="4")]
16344    pub pid: ::core::option::Option<i32>,
16345}
16346#[derive(Clone, PartialEq, ::prost::Message)]
16347pub struct SchedCpuUtilCfsFtraceEvent {
16348    #[prost(int32, optional, tag="1")]
16349    pub active: ::core::option::Option<i32>,
16350    #[prost(uint64, optional, tag="2")]
16351    pub capacity: ::core::option::Option<u64>,
16352    #[prost(uint64, optional, tag="3")]
16353    pub capacity_orig: ::core::option::Option<u64>,
16354    #[prost(uint32, optional, tag="4")]
16355    pub cpu: ::core::option::Option<u32>,
16356    #[prost(uint64, optional, tag="5")]
16357    pub cpu_importance: ::core::option::Option<u64>,
16358    #[prost(uint64, optional, tag="6")]
16359    pub cpu_util: ::core::option::Option<u64>,
16360    #[prost(uint32, optional, tag="7")]
16361    pub exit_lat: ::core::option::Option<u32>,
16362    #[prost(uint64, optional, tag="8")]
16363    pub group_capacity: ::core::option::Option<u64>,
16364    #[prost(uint32, optional, tag="9")]
16365    pub grp_overutilized: ::core::option::Option<u32>,
16366    #[prost(uint32, optional, tag="10")]
16367    pub idle_cpu: ::core::option::Option<u32>,
16368    #[prost(uint32, optional, tag="11")]
16369    pub nr_running: ::core::option::Option<u32>,
16370    #[prost(int64, optional, tag="12")]
16371    pub spare_cap: ::core::option::Option<i64>,
16372    #[prost(uint32, optional, tag="13")]
16373    pub task_fits: ::core::option::Option<u32>,
16374    #[prost(uint64, optional, tag="14")]
16375    pub wake_group_util: ::core::option::Option<u64>,
16376    #[prost(uint64, optional, tag="15")]
16377    pub wake_util: ::core::option::Option<u64>,
16378}
16379#[derive(Clone, PartialEq, ::prost::Message)]
16380pub struct SchedMigrateTaskFtraceEvent {
16381    #[prost(string, optional, tag="1")]
16382    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16383    #[prost(int32, optional, tag="2")]
16384    pub pid: ::core::option::Option<i32>,
16385    #[prost(int32, optional, tag="3")]
16386    pub prio: ::core::option::Option<i32>,
16387    #[prost(int32, optional, tag="4")]
16388    pub orig_cpu: ::core::option::Option<i32>,
16389    #[prost(int32, optional, tag="5")]
16390    pub dest_cpu: ::core::option::Option<i32>,
16391    #[prost(int32, optional, tag="6")]
16392    pub running: ::core::option::Option<i32>,
16393    #[prost(uint32, optional, tag="7")]
16394    pub load: ::core::option::Option<u32>,
16395}
16396#[derive(Clone, PartialEq, ::prost::Message)]
16397pub struct SchedWakeupTaskAttrFtraceEvent {
16398    #[prost(int32, optional, tag="1")]
16399    pub pid: ::core::option::Option<i32>,
16400    #[prost(uint64, optional, tag="2")]
16401    pub cpu_affinity: ::core::option::Option<u64>,
16402    #[prost(uint64, optional, tag="3")]
16403    pub task_util: ::core::option::Option<u64>,
16404    #[prost(uint64, optional, tag="4")]
16405    pub uclamp_min: ::core::option::Option<u64>,
16406    #[prost(uint64, optional, tag="5")]
16407    pub vruntime: ::core::option::Option<u64>,
16408}
16409#[derive(Clone, PartialEq, ::prost::Message)]
16410pub struct SchedGroupTrackerFtraceEvent {
16411    #[prost(string, optional, tag="1")]
16412    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16413    #[prost(int32, optional, tag="2")]
16414    pub pid: ::core::option::Option<i32>,
16415    #[prost(string, optional, tag="3")]
16416    pub group: ::core::option::Option<::prost::alloc::string::String>,
16417    #[prost(int32, optional, tag="4")]
16418    pub group_num: ::core::option::Option<i32>,
16419}
16420// End of protos/perfetto/trace/ftrace/sched.proto
16421
16422// Begin of protos/perfetto/trace/ftrace/scm.proto
16423
16424#[derive(Clone, PartialEq, ::prost::Message)]
16425pub struct ScmCallStartFtraceEvent {
16426    #[prost(uint32, optional, tag="1")]
16427    pub arginfo: ::core::option::Option<u32>,
16428    #[prost(uint64, optional, tag="2")]
16429    pub x0: ::core::option::Option<u64>,
16430    #[prost(uint64, optional, tag="3")]
16431    pub x5: ::core::option::Option<u64>,
16432}
16433#[derive(Clone, PartialEq, ::prost::Message)]
16434pub struct ScmCallEndFtraceEvent {
16435}
16436// End of protos/perfetto/trace/ftrace/scm.proto
16437
16438// Begin of protos/perfetto/trace/ftrace/scsi.proto
16439
16440#[derive(Clone, PartialEq, ::prost::Message)]
16441pub struct ScsiDispatchCmdErrorFtraceEvent {
16442    #[prost(uint32, optional, tag="1")]
16443    pub host_no: ::core::option::Option<u32>,
16444    #[prost(uint32, optional, tag="2")]
16445    pub channel: ::core::option::Option<u32>,
16446    #[prost(uint32, optional, tag="3")]
16447    pub id: ::core::option::Option<u32>,
16448    #[prost(uint32, optional, tag="4")]
16449    pub lun: ::core::option::Option<u32>,
16450    #[prost(int32, optional, tag="5")]
16451    pub rtn: ::core::option::Option<i32>,
16452    #[prost(uint32, optional, tag="6")]
16453    pub opcode: ::core::option::Option<u32>,
16454    #[prost(uint32, optional, tag="7")]
16455    pub cmd_len: ::core::option::Option<u32>,
16456    #[prost(uint32, optional, tag="8")]
16457    pub data_sglen: ::core::option::Option<u32>,
16458    #[prost(uint32, optional, tag="9")]
16459    pub prot_sglen: ::core::option::Option<u32>,
16460    #[prost(uint32, optional, tag="10")]
16461    pub prot_op: ::core::option::Option<u32>,
16462    #[prost(int32, optional, tag="12")]
16463    pub driver_tag: ::core::option::Option<i32>,
16464    #[prost(int32, optional, tag="13")]
16465    pub scheduler_tag: ::core::option::Option<i32>,
16466    #[prost(bytes="vec", optional, tag="14")]
16467    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16468}
16469#[derive(Clone, PartialEq, ::prost::Message)]
16470pub struct ScsiDispatchCmdTimeoutFtraceEvent {
16471    #[prost(uint32, optional, tag="1")]
16472    pub host_no: ::core::option::Option<u32>,
16473    #[prost(uint32, optional, tag="2")]
16474    pub channel: ::core::option::Option<u32>,
16475    #[prost(uint32, optional, tag="3")]
16476    pub id: ::core::option::Option<u32>,
16477    #[prost(uint32, optional, tag="4")]
16478    pub lun: ::core::option::Option<u32>,
16479    #[prost(int32, optional, tag="5")]
16480    pub result: ::core::option::Option<i32>,
16481    #[prost(uint32, optional, tag="6")]
16482    pub opcode: ::core::option::Option<u32>,
16483    #[prost(uint32, optional, tag="7")]
16484    pub cmd_len: ::core::option::Option<u32>,
16485    #[prost(uint32, optional, tag="8")]
16486    pub data_sglen: ::core::option::Option<u32>,
16487    #[prost(uint32, optional, tag="9")]
16488    pub prot_sglen: ::core::option::Option<u32>,
16489    #[prost(uint32, optional, tag="10")]
16490    pub prot_op: ::core::option::Option<u32>,
16491    #[prost(int32, optional, tag="12")]
16492    pub driver_tag: ::core::option::Option<i32>,
16493    #[prost(int32, optional, tag="13")]
16494    pub scheduler_tag: ::core::option::Option<i32>,
16495    #[prost(uint32, optional, tag="14")]
16496    pub sense_key: ::core::option::Option<u32>,
16497    #[prost(uint32, optional, tag="15")]
16498    pub asc: ::core::option::Option<u32>,
16499    #[prost(uint32, optional, tag="16")]
16500    pub ascq: ::core::option::Option<u32>,
16501    #[prost(bytes="vec", optional, tag="17")]
16502    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16503}
16504#[derive(Clone, PartialEq, ::prost::Message)]
16505pub struct ScsiEhWakeupFtraceEvent {
16506    #[prost(uint32, optional, tag="1")]
16507    pub host_no: ::core::option::Option<u32>,
16508}
16509// End of protos/perfetto/trace/ftrace/scsi.proto
16510
16511// Begin of protos/perfetto/trace/ftrace/sde.proto
16512
16513#[derive(Clone, PartialEq, ::prost::Message)]
16514pub struct SdeTracingMarkWriteFtraceEvent {
16515    #[prost(int32, optional, tag="1")]
16516    pub pid: ::core::option::Option<i32>,
16517    #[prost(string, optional, tag="2")]
16518    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16519    #[prost(uint32, optional, tag="3")]
16520    pub trace_type: ::core::option::Option<u32>,
16521    #[prost(int32, optional, tag="4")]
16522    pub value: ::core::option::Option<i32>,
16523    #[prost(uint32, optional, tag="5")]
16524    pub trace_begin: ::core::option::Option<u32>,
16525}
16526#[derive(Clone, PartialEq, ::prost::Message)]
16527pub struct SdeSdeEvtlogFtraceEvent {
16528    #[prost(string, optional, tag="1")]
16529    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
16530    #[prost(int32, optional, tag="2")]
16531    pub pid: ::core::option::Option<i32>,
16532    #[prost(uint32, optional, tag="3")]
16533    pub tag_id: ::core::option::Option<u32>,
16534}
16535#[derive(Clone, PartialEq, ::prost::Message)]
16536pub struct SdeSdePerfCalcCrtcFtraceEvent {
16537    #[prost(uint64, optional, tag="1")]
16538    pub bw_ctl_ebi: ::core::option::Option<u64>,
16539    #[prost(uint64, optional, tag="2")]
16540    pub bw_ctl_llcc: ::core::option::Option<u64>,
16541    #[prost(uint64, optional, tag="3")]
16542    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16543    #[prost(uint32, optional, tag="4")]
16544    pub core_clk_rate: ::core::option::Option<u32>,
16545    #[prost(uint32, optional, tag="5")]
16546    pub crtc: ::core::option::Option<u32>,
16547    #[prost(uint64, optional, tag="6")]
16548    pub ib_ebi: ::core::option::Option<u64>,
16549    #[prost(uint64, optional, tag="7")]
16550    pub ib_llcc: ::core::option::Option<u64>,
16551    #[prost(uint64, optional, tag="8")]
16552    pub ib_mnoc: ::core::option::Option<u64>,
16553}
16554#[derive(Clone, PartialEq, ::prost::Message)]
16555pub struct SdeSdePerfCrtcUpdateFtraceEvent {
16556    #[prost(uint64, optional, tag="1")]
16557    pub bw_ctl_ebi: ::core::option::Option<u64>,
16558    #[prost(uint64, optional, tag="2")]
16559    pub bw_ctl_llcc: ::core::option::Option<u64>,
16560    #[prost(uint64, optional, tag="3")]
16561    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16562    #[prost(uint32, optional, tag="4")]
16563    pub core_clk_rate: ::core::option::Option<u32>,
16564    #[prost(uint32, optional, tag="5")]
16565    pub crtc: ::core::option::Option<u32>,
16566    #[prost(int32, optional, tag="6")]
16567    pub params: ::core::option::Option<i32>,
16568    #[prost(uint64, optional, tag="7")]
16569    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
16570    #[prost(uint64, optional, tag="8")]
16571    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
16572    #[prost(uint64, optional, tag="9")]
16573    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
16574    #[prost(uint32, optional, tag="10")]
16575    pub stop_req: ::core::option::Option<u32>,
16576    #[prost(uint32, optional, tag="11")]
16577    pub update_bus: ::core::option::Option<u32>,
16578    #[prost(uint32, optional, tag="12")]
16579    pub update_clk: ::core::option::Option<u32>,
16580}
16581#[derive(Clone, PartialEq, ::prost::Message)]
16582pub struct SdeSdePerfSetQosLutsFtraceEvent {
16583    #[prost(uint32, optional, tag="1")]
16584    pub fl: ::core::option::Option<u32>,
16585    #[prost(uint32, optional, tag="2")]
16586    pub fmt: ::core::option::Option<u32>,
16587    #[prost(uint64, optional, tag="3")]
16588    pub lut: ::core::option::Option<u64>,
16589    #[prost(uint32, optional, tag="4")]
16590    pub lut_usage: ::core::option::Option<u32>,
16591    #[prost(uint32, optional, tag="5")]
16592    pub pnum: ::core::option::Option<u32>,
16593    #[prost(uint32, optional, tag="6")]
16594    pub rt: ::core::option::Option<u32>,
16595}
16596#[derive(Clone, PartialEq, ::prost::Message)]
16597pub struct SdeSdePerfUpdateBusFtraceEvent {
16598    #[prost(uint64, optional, tag="1")]
16599    pub ab_quota: ::core::option::Option<u64>,
16600    #[prost(uint32, optional, tag="2")]
16601    pub bus_id: ::core::option::Option<u32>,
16602    #[prost(int32, optional, tag="3")]
16603    pub client: ::core::option::Option<i32>,
16604    #[prost(uint64, optional, tag="4")]
16605    pub ib_quota: ::core::option::Option<u64>,
16606}
16607// End of protos/perfetto/trace/ftrace/sde.proto
16608
16609// Begin of protos/perfetto/trace/ftrace/signal.proto
16610
16611#[derive(Clone, PartialEq, ::prost::Message)]
16612pub struct SignalDeliverFtraceEvent {
16613    #[prost(int32, optional, tag="1")]
16614    pub code: ::core::option::Option<i32>,
16615    #[prost(uint64, optional, tag="2")]
16616    pub sa_flags: ::core::option::Option<u64>,
16617    #[prost(int32, optional, tag="3")]
16618    pub sig: ::core::option::Option<i32>,
16619}
16620#[derive(Clone, PartialEq, ::prost::Message)]
16621pub struct SignalGenerateFtraceEvent {
16622    #[prost(int32, optional, tag="1")]
16623    pub code: ::core::option::Option<i32>,
16624    #[prost(string, optional, tag="2")]
16625    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16626    #[prost(int32, optional, tag="3")]
16627    pub group: ::core::option::Option<i32>,
16628    #[prost(int32, optional, tag="4")]
16629    pub pid: ::core::option::Option<i32>,
16630    #[prost(int32, optional, tag="5")]
16631    pub result: ::core::option::Option<i32>,
16632    #[prost(int32, optional, tag="6")]
16633    pub sig: ::core::option::Option<i32>,
16634}
16635// End of protos/perfetto/trace/ftrace/signal.proto
16636
16637// Begin of protos/perfetto/trace/ftrace/skb.proto
16638
16639#[derive(Clone, PartialEq, ::prost::Message)]
16640pub struct KfreeSkbFtraceEvent {
16641    #[prost(uint64, optional, tag="1")]
16642    pub location: ::core::option::Option<u64>,
16643    #[prost(uint32, optional, tag="2")]
16644    pub protocol: ::core::option::Option<u32>,
16645    #[prost(uint64, optional, tag="3")]
16646    pub skbaddr: ::core::option::Option<u64>,
16647}
16648// End of protos/perfetto/trace/ftrace/skb.proto
16649
16650// Begin of protos/perfetto/trace/ftrace/sock.proto
16651
16652#[derive(Clone, PartialEq, ::prost::Message)]
16653pub struct InetSockSetStateFtraceEvent {
16654    #[prost(uint32, optional, tag="1")]
16655    pub daddr: ::core::option::Option<u32>,
16656    #[prost(uint32, optional, tag="2")]
16657    pub dport: ::core::option::Option<u32>,
16658    #[prost(uint32, optional, tag="3")]
16659    pub family: ::core::option::Option<u32>,
16660    #[prost(int32, optional, tag="4")]
16661    pub newstate: ::core::option::Option<i32>,
16662    #[prost(int32, optional, tag="5")]
16663    pub oldstate: ::core::option::Option<i32>,
16664    #[prost(uint32, optional, tag="6")]
16665    pub protocol: ::core::option::Option<u32>,
16666    #[prost(uint32, optional, tag="7")]
16667    pub saddr: ::core::option::Option<u32>,
16668    #[prost(uint64, optional, tag="8")]
16669    pub skaddr: ::core::option::Option<u64>,
16670    #[prost(uint32, optional, tag="9")]
16671    pub sport: ::core::option::Option<u32>,
16672}
16673// End of protos/perfetto/trace/ftrace/sock.proto
16674
16675// Begin of protos/perfetto/trace/ftrace/sync.proto
16676
16677#[derive(Clone, PartialEq, ::prost::Message)]
16678pub struct SyncPtFtraceEvent {
16679    #[prost(string, optional, tag="1")]
16680    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
16681    #[prost(string, optional, tag="2")]
16682    pub value: ::core::option::Option<::prost::alloc::string::String>,
16683}
16684#[derive(Clone, PartialEq, ::prost::Message)]
16685pub struct SyncTimelineFtraceEvent {
16686    #[prost(string, optional, tag="1")]
16687    pub name: ::core::option::Option<::prost::alloc::string::String>,
16688    #[prost(string, optional, tag="2")]
16689    pub value: ::core::option::Option<::prost::alloc::string::String>,
16690}
16691#[derive(Clone, PartialEq, ::prost::Message)]
16692pub struct SyncWaitFtraceEvent {
16693    #[prost(string, optional, tag="1")]
16694    pub name: ::core::option::Option<::prost::alloc::string::String>,
16695    #[prost(int32, optional, tag="2")]
16696    pub status: ::core::option::Option<i32>,
16697    #[prost(uint32, optional, tag="3")]
16698    pub begin: ::core::option::Option<u32>,
16699}
16700// End of protos/perfetto/trace/ftrace/sync.proto
16701
16702// Begin of protos/perfetto/trace/ftrace/synthetic.proto
16703
16704#[derive(Clone, PartialEq, ::prost::Message)]
16705pub struct RssStatThrottledFtraceEvent {
16706    #[prost(uint32, optional, tag="1")]
16707    pub curr: ::core::option::Option<u32>,
16708    #[prost(int32, optional, tag="2")]
16709    pub member: ::core::option::Option<i32>,
16710    #[prost(uint32, optional, tag="3")]
16711    pub mm_id: ::core::option::Option<u32>,
16712    #[prost(int64, optional, tag="4")]
16713    pub size: ::core::option::Option<i64>,
16714}
16715#[derive(Clone, PartialEq, ::prost::Message)]
16716pub struct SuspendResumeMinimalFtraceEvent {
16717    #[prost(uint32, optional, tag="1")]
16718    pub start: ::core::option::Option<u32>,
16719}
16720// End of protos/perfetto/trace/ftrace/synthetic.proto
16721
16722// Begin of protos/perfetto/trace/ftrace/systrace.proto
16723
16724#[derive(Clone, PartialEq, ::prost::Message)]
16725pub struct ZeroFtraceEvent {
16726    #[prost(int32, optional, tag="1")]
16727    pub flag: ::core::option::Option<i32>,
16728    #[prost(string, optional, tag="2")]
16729    pub name: ::core::option::Option<::prost::alloc::string::String>,
16730    #[prost(int32, optional, tag="3")]
16731    pub pid: ::core::option::Option<i32>,
16732    #[prost(int64, optional, tag="4")]
16733    pub value: ::core::option::Option<i64>,
16734}
16735// End of protos/perfetto/trace/ftrace/systrace.proto
16736
16737// Begin of protos/perfetto/trace/ftrace/task.proto
16738
16739#[derive(Clone, PartialEq, ::prost::Message)]
16740pub struct TaskNewtaskFtraceEvent {
16741    #[prost(int32, optional, tag="1")]
16742    pub pid: ::core::option::Option<i32>,
16743    #[prost(string, optional, tag="2")]
16744    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16745    #[prost(uint64, optional, tag="3")]
16746    pub clone_flags: ::core::option::Option<u64>,
16747    #[prost(int32, optional, tag="4")]
16748    pub oom_score_adj: ::core::option::Option<i32>,
16749}
16750#[derive(Clone, PartialEq, ::prost::Message)]
16751pub struct TaskRenameFtraceEvent {
16752    #[prost(int32, optional, tag="1")]
16753    pub pid: ::core::option::Option<i32>,
16754    #[prost(string, optional, tag="2")]
16755    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
16756    #[prost(string, optional, tag="3")]
16757    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
16758    #[prost(int32, optional, tag="4")]
16759    pub oom_score_adj: ::core::option::Option<i32>,
16760}
16761// End of protos/perfetto/trace/ftrace/task.proto
16762
16763// Begin of protos/perfetto/trace/ftrace/tcp.proto
16764
16765#[derive(Clone, PartialEq, ::prost::Message)]
16766pub struct TcpRetransmitSkbFtraceEvent {
16767    #[prost(uint32, optional, tag="1")]
16768    pub daddr: ::core::option::Option<u32>,
16769    #[prost(uint32, optional, tag="2")]
16770    pub dport: ::core::option::Option<u32>,
16771    #[prost(uint32, optional, tag="3")]
16772    pub saddr: ::core::option::Option<u32>,
16773    #[prost(uint64, optional, tag="4")]
16774    pub skaddr: ::core::option::Option<u64>,
16775    #[prost(uint64, optional, tag="5")]
16776    pub skbaddr: ::core::option::Option<u64>,
16777    #[prost(uint32, optional, tag="6")]
16778    pub sport: ::core::option::Option<u32>,
16779    #[prost(int32, optional, tag="7")]
16780    pub state: ::core::option::Option<i32>,
16781}
16782// End of protos/perfetto/trace/ftrace/tcp.proto
16783
16784// Begin of protos/perfetto/trace/ftrace/thermal.proto
16785
16786#[derive(Clone, PartialEq, ::prost::Message)]
16787pub struct ThermalTemperatureFtraceEvent {
16788    #[prost(int32, optional, tag="1")]
16789    pub id: ::core::option::Option<i32>,
16790    #[prost(int32, optional, tag="2")]
16791    pub temp: ::core::option::Option<i32>,
16792    #[prost(int32, optional, tag="3")]
16793    pub temp_prev: ::core::option::Option<i32>,
16794    #[prost(string, optional, tag="4")]
16795    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
16796}
16797#[derive(Clone, PartialEq, ::prost::Message)]
16798pub struct CdevUpdateFtraceEvent {
16799    #[prost(uint64, optional, tag="1")]
16800    pub target: ::core::option::Option<u64>,
16801    #[prost(string, optional, tag="2")]
16802    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
16803}
16804// End of protos/perfetto/trace/ftrace/thermal.proto
16805
16806// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
16807
16808#[derive(Clone, PartialEq, ::prost::Message)]
16809pub struct ThermalExynosAcpmBulkFtraceEvent {
16810    #[prost(uint32, optional, tag="1")]
16811    pub tz_id: ::core::option::Option<u32>,
16812    #[prost(uint32, optional, tag="2")]
16813    pub current_temp: ::core::option::Option<u32>,
16814    #[prost(uint32, optional, tag="3")]
16815    pub ctrl_temp: ::core::option::Option<u32>,
16816    #[prost(uint32, optional, tag="4")]
16817    pub cdev_state: ::core::option::Option<u32>,
16818    #[prost(int32, optional, tag="5")]
16819    pub pid_et_p: ::core::option::Option<i32>,
16820    #[prost(int32, optional, tag="6")]
16821    pub pid_power_range: ::core::option::Option<i32>,
16822    #[prost(int32, optional, tag="7")]
16823    pub pid_p: ::core::option::Option<i32>,
16824    #[prost(int32, optional, tag="8")]
16825    pub pid_i: ::core::option::Option<i32>,
16826    #[prost(int32, optional, tag="9")]
16827    pub k_p: ::core::option::Option<i32>,
16828    #[prost(int32, optional, tag="10")]
16829    pub k_i: ::core::option::Option<i32>,
16830    #[prost(uint64, optional, tag="11")]
16831    pub timestamp: ::core::option::Option<u64>,
16832}
16833#[derive(Clone, PartialEq, ::prost::Message)]
16834pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
16835    #[prost(int32, optional, tag="1")]
16836    pub tz_id: ::core::option::Option<i32>,
16837    #[prost(uint32, optional, tag="2")]
16838    pub current_temp: ::core::option::Option<u32>,
16839    #[prost(uint32, optional, tag="3")]
16840    pub ctrl_temp: ::core::option::Option<u32>,
16841    #[prost(uint32, optional, tag="4")]
16842    pub cdev_state: ::core::option::Option<u32>,
16843    #[prost(int32, optional, tag="5")]
16844    pub pid_et_p: ::core::option::Option<i32>,
16845    #[prost(int32, optional, tag="6")]
16846    pub k_p: ::core::option::Option<i32>,
16847    #[prost(int32, optional, tag="7")]
16848    pub k_i: ::core::option::Option<i32>,
16849}
16850// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
16851
16852// Begin of protos/perfetto/trace/ftrace/timer.proto
16853
16854#[derive(Clone, PartialEq, ::prost::Message)]
16855pub struct HrtimerStartFtraceEvent {
16856    #[prost(uint64, optional, tag="1")]
16857    pub hrtimer: ::core::option::Option<u64>,
16858    #[prost(uint64, optional, tag="2")]
16859    pub function: ::core::option::Option<u64>,
16860    #[prost(int64, optional, tag="3")]
16861    pub expires: ::core::option::Option<i64>,
16862    #[prost(int64, optional, tag="4")]
16863    pub softexpires: ::core::option::Option<i64>,
16864    #[prost(uint32, optional, tag="5")]
16865    pub mode: ::core::option::Option<u32>,
16866}
16867#[derive(Clone, PartialEq, ::prost::Message)]
16868pub struct HrtimerCancelFtraceEvent {
16869    #[prost(uint64, optional, tag="1")]
16870    pub hrtimer: ::core::option::Option<u64>,
16871}
16872#[derive(Clone, PartialEq, ::prost::Message)]
16873pub struct HrtimerExpireEntryFtraceEvent {
16874    #[prost(uint64, optional, tag="1")]
16875    pub hrtimer: ::core::option::Option<u64>,
16876    #[prost(int64, optional, tag="2")]
16877    pub now: ::core::option::Option<i64>,
16878    #[prost(uint64, optional, tag="3")]
16879    pub function: ::core::option::Option<u64>,
16880}
16881#[derive(Clone, PartialEq, ::prost::Message)]
16882pub struct HrtimerExpireExitFtraceEvent {
16883    #[prost(uint64, optional, tag="1")]
16884    pub hrtimer: ::core::option::Option<u64>,
16885}
16886#[derive(Clone, PartialEq, ::prost::Message)]
16887pub struct TimerStartFtraceEvent {
16888    #[prost(uint64, optional, tag="1")]
16889    pub timer: ::core::option::Option<u64>,
16890    #[prost(uint64, optional, tag="2")]
16891    pub function: ::core::option::Option<u64>,
16892    #[prost(uint64, optional, tag="3")]
16893    pub expires: ::core::option::Option<u64>,
16894    #[prost(uint64, optional, tag="4")]
16895    pub now: ::core::option::Option<u64>,
16896    #[prost(uint32, optional, tag="5")]
16897    pub deferrable: ::core::option::Option<u32>,
16898    #[prost(uint32, optional, tag="6")]
16899    pub flags: ::core::option::Option<u32>,
16900    #[prost(uint64, optional, tag="7")]
16901    pub bucket_expiry: ::core::option::Option<u64>,
16902}
16903#[derive(Clone, PartialEq, ::prost::Message)]
16904pub struct TimerCancelFtraceEvent {
16905    #[prost(uint64, optional, tag="1")]
16906    pub timer: ::core::option::Option<u64>,
16907}
16908#[derive(Clone, PartialEq, ::prost::Message)]
16909pub struct TimerExpireEntryFtraceEvent {
16910    #[prost(uint64, optional, tag="1")]
16911    pub timer: ::core::option::Option<u64>,
16912    #[prost(uint64, optional, tag="2")]
16913    pub now: ::core::option::Option<u64>,
16914    #[prost(uint64, optional, tag="3")]
16915    pub function: ::core::option::Option<u64>,
16916    #[prost(uint64, optional, tag="4")]
16917    pub baseclk: ::core::option::Option<u64>,
16918}
16919#[derive(Clone, PartialEq, ::prost::Message)]
16920pub struct TimerExpireExitFtraceEvent {
16921    #[prost(uint64, optional, tag="1")]
16922    pub timer: ::core::option::Option<u64>,
16923}
16924// End of protos/perfetto/trace/ftrace/timer.proto
16925
16926// Begin of protos/perfetto/trace/ftrace/trusty.proto
16927
16928#[derive(Clone, PartialEq, ::prost::Message)]
16929pub struct TrustySmcFtraceEvent {
16930    #[prost(uint64, optional, tag="1")]
16931    pub r0: ::core::option::Option<u64>,
16932    #[prost(uint64, optional, tag="2")]
16933    pub r1: ::core::option::Option<u64>,
16934    #[prost(uint64, optional, tag="3")]
16935    pub r2: ::core::option::Option<u64>,
16936    #[prost(uint64, optional, tag="4")]
16937    pub r3: ::core::option::Option<u64>,
16938}
16939#[derive(Clone, PartialEq, ::prost::Message)]
16940pub struct TrustySmcDoneFtraceEvent {
16941    #[prost(uint64, optional, tag="1")]
16942    pub ret: ::core::option::Option<u64>,
16943}
16944#[derive(Clone, PartialEq, ::prost::Message)]
16945pub struct TrustyStdCall32FtraceEvent {
16946    #[prost(uint64, optional, tag="1")]
16947    pub r0: ::core::option::Option<u64>,
16948    #[prost(uint64, optional, tag="2")]
16949    pub r1: ::core::option::Option<u64>,
16950    #[prost(uint64, optional, tag="3")]
16951    pub r2: ::core::option::Option<u64>,
16952    #[prost(uint64, optional, tag="4")]
16953    pub r3: ::core::option::Option<u64>,
16954}
16955#[derive(Clone, PartialEq, ::prost::Message)]
16956pub struct TrustyStdCall32DoneFtraceEvent {
16957    #[prost(int64, optional, tag="1")]
16958    pub ret: ::core::option::Option<i64>,
16959}
16960#[derive(Clone, PartialEq, ::prost::Message)]
16961pub struct TrustyShareMemoryFtraceEvent {
16962    #[prost(uint64, optional, tag="1")]
16963    pub len: ::core::option::Option<u64>,
16964    #[prost(uint32, optional, tag="2")]
16965    pub lend: ::core::option::Option<u32>,
16966    #[prost(uint32, optional, tag="3")]
16967    pub nents: ::core::option::Option<u32>,
16968}
16969#[derive(Clone, PartialEq, ::prost::Message)]
16970pub struct TrustyShareMemoryDoneFtraceEvent {
16971    #[prost(uint64, optional, tag="1")]
16972    pub handle: ::core::option::Option<u64>,
16973    #[prost(uint64, optional, tag="2")]
16974    pub len: ::core::option::Option<u64>,
16975    #[prost(uint32, optional, tag="3")]
16976    pub lend: ::core::option::Option<u32>,
16977    #[prost(uint32, optional, tag="4")]
16978    pub nents: ::core::option::Option<u32>,
16979    #[prost(int32, optional, tag="5")]
16980    pub ret: ::core::option::Option<i32>,
16981}
16982#[derive(Clone, PartialEq, ::prost::Message)]
16983pub struct TrustyReclaimMemoryFtraceEvent {
16984    #[prost(uint64, optional, tag="1")]
16985    pub id: ::core::option::Option<u64>,
16986}
16987#[derive(Clone, PartialEq, ::prost::Message)]
16988pub struct TrustyReclaimMemoryDoneFtraceEvent {
16989    #[prost(uint64, optional, tag="1")]
16990    pub id: ::core::option::Option<u64>,
16991    #[prost(int32, optional, tag="2")]
16992    pub ret: ::core::option::Option<i32>,
16993}
16994#[derive(Clone, PartialEq, ::prost::Message)]
16995pub struct TrustyIrqFtraceEvent {
16996    #[prost(int32, optional, tag="1")]
16997    pub irq: ::core::option::Option<i32>,
16998}
16999#[derive(Clone, PartialEq, ::prost::Message)]
17000pub struct TrustyIpcHandleEventFtraceEvent {
17001    #[prost(uint32, optional, tag="1")]
17002    pub chan: ::core::option::Option<u32>,
17003    #[prost(uint32, optional, tag="2")]
17004    pub event_id: ::core::option::Option<u32>,
17005    #[prost(string, optional, tag="3")]
17006    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17007}
17008#[derive(Clone, PartialEq, ::prost::Message)]
17009pub struct TrustyIpcConnectFtraceEvent {
17010    #[prost(uint32, optional, tag="1")]
17011    pub chan: ::core::option::Option<u32>,
17012    #[prost(string, optional, tag="2")]
17013    pub port: ::core::option::Option<::prost::alloc::string::String>,
17014    #[prost(int32, optional, tag="3")]
17015    pub state: ::core::option::Option<i32>,
17016}
17017#[derive(Clone, PartialEq, ::prost::Message)]
17018pub struct TrustyIpcConnectEndFtraceEvent {
17019    #[prost(uint32, optional, tag="1")]
17020    pub chan: ::core::option::Option<u32>,
17021    #[prost(int32, optional, tag="2")]
17022    pub err: ::core::option::Option<i32>,
17023    #[prost(int32, optional, tag="3")]
17024    pub state: ::core::option::Option<i32>,
17025}
17026#[derive(Clone, PartialEq, ::prost::Message)]
17027pub struct TrustyIpcWriteFtraceEvent {
17028    #[prost(uint64, optional, tag="1")]
17029    pub buf_id: ::core::option::Option<u64>,
17030    #[prost(uint32, optional, tag="2")]
17031    pub chan: ::core::option::Option<u32>,
17032    #[prost(int32, optional, tag="3")]
17033    pub kind_shm: ::core::option::Option<i32>,
17034    #[prost(int32, optional, tag="4")]
17035    pub len_or_err: ::core::option::Option<i32>,
17036    #[prost(uint64, optional, tag="5")]
17037    pub shm_cnt: ::core::option::Option<u64>,
17038    #[prost(string, optional, tag="6")]
17039    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17040}
17041#[derive(Clone, PartialEq, ::prost::Message)]
17042pub struct TrustyIpcPollFtraceEvent {
17043    #[prost(uint32, optional, tag="1")]
17044    pub chan: ::core::option::Option<u32>,
17045    #[prost(uint32, optional, tag="2")]
17046    pub poll_mask: ::core::option::Option<u32>,
17047    #[prost(string, optional, tag="3")]
17048    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17049}
17050#[derive(Clone, PartialEq, ::prost::Message)]
17051pub struct TrustyIpcReadFtraceEvent {
17052    #[prost(uint32, optional, tag="1")]
17053    pub chan: ::core::option::Option<u32>,
17054    #[prost(string, optional, tag="2")]
17055    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17056}
17057#[derive(Clone, PartialEq, ::prost::Message)]
17058pub struct TrustyIpcReadEndFtraceEvent {
17059    #[prost(uint64, optional, tag="1")]
17060    pub buf_id: ::core::option::Option<u64>,
17061    #[prost(uint32, optional, tag="2")]
17062    pub chan: ::core::option::Option<u32>,
17063    #[prost(int32, optional, tag="3")]
17064    pub len_or_err: ::core::option::Option<i32>,
17065    #[prost(uint64, optional, tag="4")]
17066    pub shm_cnt: ::core::option::Option<u64>,
17067    #[prost(string, optional, tag="5")]
17068    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17069}
17070#[derive(Clone, PartialEq, ::prost::Message)]
17071pub struct TrustyIpcRxFtraceEvent {
17072    #[prost(uint64, optional, tag="1")]
17073    pub buf_id: ::core::option::Option<u64>,
17074    #[prost(uint32, optional, tag="2")]
17075    pub chan: ::core::option::Option<u32>,
17076    #[prost(string, optional, tag="3")]
17077    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17078}
17079#[derive(Clone, PartialEq, ::prost::Message)]
17080pub struct TrustyEnqueueNopFtraceEvent {
17081    #[prost(uint32, optional, tag="1")]
17082    pub arg1: ::core::option::Option<u32>,
17083    #[prost(uint32, optional, tag="2")]
17084    pub arg2: ::core::option::Option<u32>,
17085    #[prost(uint32, optional, tag="3")]
17086    pub arg3: ::core::option::Option<u32>,
17087}
17088// End of protos/perfetto/trace/ftrace/trusty.proto
17089
17090// Begin of protos/perfetto/trace/ftrace/ufs.proto
17091
17092#[derive(Clone, PartialEq, ::prost::Message)]
17093pub struct UfshcdCommandFtraceEvent {
17094    #[prost(string, optional, tag="1")]
17095    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
17096    #[prost(uint32, optional, tag="2")]
17097    pub doorbell: ::core::option::Option<u32>,
17098    #[prost(uint32, optional, tag="3")]
17099    pub intr: ::core::option::Option<u32>,
17100    #[prost(uint64, optional, tag="4")]
17101    pub lba: ::core::option::Option<u64>,
17102    #[prost(uint32, optional, tag="5")]
17103    pub opcode: ::core::option::Option<u32>,
17104    #[prost(string, optional, tag="6")]
17105    pub str: ::core::option::Option<::prost::alloc::string::String>,
17106    #[prost(uint32, optional, tag="7")]
17107    pub tag: ::core::option::Option<u32>,
17108    #[prost(int32, optional, tag="8")]
17109    pub transfer_len: ::core::option::Option<i32>,
17110    #[prost(uint32, optional, tag="9")]
17111    pub group_id: ::core::option::Option<u32>,
17112    #[prost(uint32, optional, tag="10")]
17113    pub str_t: ::core::option::Option<u32>,
17114}
17115#[derive(Clone, PartialEq, ::prost::Message)]
17116pub struct UfshcdClkGatingFtraceEvent {
17117    #[prost(string, optional, tag="1")]
17118    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
17119    #[prost(int32, optional, tag="2")]
17120    pub state: ::core::option::Option<i32>,
17121}
17122// End of protos/perfetto/trace/ftrace/ufs.proto
17123
17124// Begin of protos/perfetto/trace/ftrace/v4l2.proto
17125
17126#[derive(Clone, PartialEq, ::prost::Message)]
17127pub struct V4l2QbufFtraceEvent {
17128    #[prost(uint32, optional, tag="1")]
17129    pub bytesused: ::core::option::Option<u32>,
17130    #[prost(uint32, optional, tag="2")]
17131    pub field: ::core::option::Option<u32>,
17132    #[prost(uint32, optional, tag="3")]
17133    pub flags: ::core::option::Option<u32>,
17134    #[prost(uint32, optional, tag="4")]
17135    pub index: ::core::option::Option<u32>,
17136    #[prost(int32, optional, tag="5")]
17137    pub minor: ::core::option::Option<i32>,
17138    #[prost(uint32, optional, tag="6")]
17139    pub sequence: ::core::option::Option<u32>,
17140    #[prost(uint32, optional, tag="7")]
17141    pub timecode_flags: ::core::option::Option<u32>,
17142    #[prost(uint32, optional, tag="8")]
17143    pub timecode_frames: ::core::option::Option<u32>,
17144    #[prost(uint32, optional, tag="9")]
17145    pub timecode_hours: ::core::option::Option<u32>,
17146    #[prost(uint32, optional, tag="10")]
17147    pub timecode_minutes: ::core::option::Option<u32>,
17148    #[prost(uint32, optional, tag="11")]
17149    pub timecode_seconds: ::core::option::Option<u32>,
17150    #[prost(uint32, optional, tag="12")]
17151    pub timecode_type: ::core::option::Option<u32>,
17152    #[prost(uint32, optional, tag="13")]
17153    pub timecode_userbits0: ::core::option::Option<u32>,
17154    #[prost(uint32, optional, tag="14")]
17155    pub timecode_userbits1: ::core::option::Option<u32>,
17156    #[prost(uint32, optional, tag="15")]
17157    pub timecode_userbits2: ::core::option::Option<u32>,
17158    #[prost(uint32, optional, tag="16")]
17159    pub timecode_userbits3: ::core::option::Option<u32>,
17160    #[prost(int64, optional, tag="17")]
17161    pub timestamp: ::core::option::Option<i64>,
17162    #[prost(uint32, optional, tag="18")]
17163    pub r#type: ::core::option::Option<u32>,
17164}
17165#[derive(Clone, PartialEq, ::prost::Message)]
17166pub struct V4l2DqbufFtraceEvent {
17167    #[prost(uint32, optional, tag="1")]
17168    pub bytesused: ::core::option::Option<u32>,
17169    #[prost(uint32, optional, tag="2")]
17170    pub field: ::core::option::Option<u32>,
17171    #[prost(uint32, optional, tag="3")]
17172    pub flags: ::core::option::Option<u32>,
17173    #[prost(uint32, optional, tag="4")]
17174    pub index: ::core::option::Option<u32>,
17175    #[prost(int32, optional, tag="5")]
17176    pub minor: ::core::option::Option<i32>,
17177    #[prost(uint32, optional, tag="6")]
17178    pub sequence: ::core::option::Option<u32>,
17179    #[prost(uint32, optional, tag="7")]
17180    pub timecode_flags: ::core::option::Option<u32>,
17181    #[prost(uint32, optional, tag="8")]
17182    pub timecode_frames: ::core::option::Option<u32>,
17183    #[prost(uint32, optional, tag="9")]
17184    pub timecode_hours: ::core::option::Option<u32>,
17185    #[prost(uint32, optional, tag="10")]
17186    pub timecode_minutes: ::core::option::Option<u32>,
17187    #[prost(uint32, optional, tag="11")]
17188    pub timecode_seconds: ::core::option::Option<u32>,
17189    #[prost(uint32, optional, tag="12")]
17190    pub timecode_type: ::core::option::Option<u32>,
17191    #[prost(uint32, optional, tag="13")]
17192    pub timecode_userbits0: ::core::option::Option<u32>,
17193    #[prost(uint32, optional, tag="14")]
17194    pub timecode_userbits1: ::core::option::Option<u32>,
17195    #[prost(uint32, optional, tag="15")]
17196    pub timecode_userbits2: ::core::option::Option<u32>,
17197    #[prost(uint32, optional, tag="16")]
17198    pub timecode_userbits3: ::core::option::Option<u32>,
17199    #[prost(int64, optional, tag="17")]
17200    pub timestamp: ::core::option::Option<i64>,
17201    #[prost(uint32, optional, tag="18")]
17202    pub r#type: ::core::option::Option<u32>,
17203}
17204#[derive(Clone, PartialEq, ::prost::Message)]
17205pub struct Vb2V4l2BufQueueFtraceEvent {
17206    #[prost(uint32, optional, tag="1")]
17207    pub field: ::core::option::Option<u32>,
17208    #[prost(uint32, optional, tag="2")]
17209    pub flags: ::core::option::Option<u32>,
17210    #[prost(int32, optional, tag="3")]
17211    pub minor: ::core::option::Option<i32>,
17212    #[prost(uint32, optional, tag="4")]
17213    pub sequence: ::core::option::Option<u32>,
17214    #[prost(uint32, optional, tag="5")]
17215    pub timecode_flags: ::core::option::Option<u32>,
17216    #[prost(uint32, optional, tag="6")]
17217    pub timecode_frames: ::core::option::Option<u32>,
17218    #[prost(uint32, optional, tag="7")]
17219    pub timecode_hours: ::core::option::Option<u32>,
17220    #[prost(uint32, optional, tag="8")]
17221    pub timecode_minutes: ::core::option::Option<u32>,
17222    #[prost(uint32, optional, tag="9")]
17223    pub timecode_seconds: ::core::option::Option<u32>,
17224    #[prost(uint32, optional, tag="10")]
17225    pub timecode_type: ::core::option::Option<u32>,
17226    #[prost(uint32, optional, tag="11")]
17227    pub timecode_userbits0: ::core::option::Option<u32>,
17228    #[prost(uint32, optional, tag="12")]
17229    pub timecode_userbits1: ::core::option::Option<u32>,
17230    #[prost(uint32, optional, tag="13")]
17231    pub timecode_userbits2: ::core::option::Option<u32>,
17232    #[prost(uint32, optional, tag="14")]
17233    pub timecode_userbits3: ::core::option::Option<u32>,
17234    #[prost(int64, optional, tag="15")]
17235    pub timestamp: ::core::option::Option<i64>,
17236}
17237#[derive(Clone, PartialEq, ::prost::Message)]
17238pub struct Vb2V4l2BufDoneFtraceEvent {
17239    #[prost(uint32, optional, tag="1")]
17240    pub field: ::core::option::Option<u32>,
17241    #[prost(uint32, optional, tag="2")]
17242    pub flags: ::core::option::Option<u32>,
17243    #[prost(int32, optional, tag="3")]
17244    pub minor: ::core::option::Option<i32>,
17245    #[prost(uint32, optional, tag="4")]
17246    pub sequence: ::core::option::Option<u32>,
17247    #[prost(uint32, optional, tag="5")]
17248    pub timecode_flags: ::core::option::Option<u32>,
17249    #[prost(uint32, optional, tag="6")]
17250    pub timecode_frames: ::core::option::Option<u32>,
17251    #[prost(uint32, optional, tag="7")]
17252    pub timecode_hours: ::core::option::Option<u32>,
17253    #[prost(uint32, optional, tag="8")]
17254    pub timecode_minutes: ::core::option::Option<u32>,
17255    #[prost(uint32, optional, tag="9")]
17256    pub timecode_seconds: ::core::option::Option<u32>,
17257    #[prost(uint32, optional, tag="10")]
17258    pub timecode_type: ::core::option::Option<u32>,
17259    #[prost(uint32, optional, tag="11")]
17260    pub timecode_userbits0: ::core::option::Option<u32>,
17261    #[prost(uint32, optional, tag="12")]
17262    pub timecode_userbits1: ::core::option::Option<u32>,
17263    #[prost(uint32, optional, tag="13")]
17264    pub timecode_userbits2: ::core::option::Option<u32>,
17265    #[prost(uint32, optional, tag="14")]
17266    pub timecode_userbits3: ::core::option::Option<u32>,
17267    #[prost(int64, optional, tag="15")]
17268    pub timestamp: ::core::option::Option<i64>,
17269}
17270#[derive(Clone, PartialEq, ::prost::Message)]
17271pub struct Vb2V4l2QbufFtraceEvent {
17272    #[prost(uint32, optional, tag="1")]
17273    pub field: ::core::option::Option<u32>,
17274    #[prost(uint32, optional, tag="2")]
17275    pub flags: ::core::option::Option<u32>,
17276    #[prost(int32, optional, tag="3")]
17277    pub minor: ::core::option::Option<i32>,
17278    #[prost(uint32, optional, tag="4")]
17279    pub sequence: ::core::option::Option<u32>,
17280    #[prost(uint32, optional, tag="5")]
17281    pub timecode_flags: ::core::option::Option<u32>,
17282    #[prost(uint32, optional, tag="6")]
17283    pub timecode_frames: ::core::option::Option<u32>,
17284    #[prost(uint32, optional, tag="7")]
17285    pub timecode_hours: ::core::option::Option<u32>,
17286    #[prost(uint32, optional, tag="8")]
17287    pub timecode_minutes: ::core::option::Option<u32>,
17288    #[prost(uint32, optional, tag="9")]
17289    pub timecode_seconds: ::core::option::Option<u32>,
17290    #[prost(uint32, optional, tag="10")]
17291    pub timecode_type: ::core::option::Option<u32>,
17292    #[prost(uint32, optional, tag="11")]
17293    pub timecode_userbits0: ::core::option::Option<u32>,
17294    #[prost(uint32, optional, tag="12")]
17295    pub timecode_userbits1: ::core::option::Option<u32>,
17296    #[prost(uint32, optional, tag="13")]
17297    pub timecode_userbits2: ::core::option::Option<u32>,
17298    #[prost(uint32, optional, tag="14")]
17299    pub timecode_userbits3: ::core::option::Option<u32>,
17300    #[prost(int64, optional, tag="15")]
17301    pub timestamp: ::core::option::Option<i64>,
17302}
17303#[derive(Clone, PartialEq, ::prost::Message)]
17304pub struct Vb2V4l2DqbufFtraceEvent {
17305    #[prost(uint32, optional, tag="1")]
17306    pub field: ::core::option::Option<u32>,
17307    #[prost(uint32, optional, tag="2")]
17308    pub flags: ::core::option::Option<u32>,
17309    #[prost(int32, optional, tag="3")]
17310    pub minor: ::core::option::Option<i32>,
17311    #[prost(uint32, optional, tag="4")]
17312    pub sequence: ::core::option::Option<u32>,
17313    #[prost(uint32, optional, tag="5")]
17314    pub timecode_flags: ::core::option::Option<u32>,
17315    #[prost(uint32, optional, tag="6")]
17316    pub timecode_frames: ::core::option::Option<u32>,
17317    #[prost(uint32, optional, tag="7")]
17318    pub timecode_hours: ::core::option::Option<u32>,
17319    #[prost(uint32, optional, tag="8")]
17320    pub timecode_minutes: ::core::option::Option<u32>,
17321    #[prost(uint32, optional, tag="9")]
17322    pub timecode_seconds: ::core::option::Option<u32>,
17323    #[prost(uint32, optional, tag="10")]
17324    pub timecode_type: ::core::option::Option<u32>,
17325    #[prost(uint32, optional, tag="11")]
17326    pub timecode_userbits0: ::core::option::Option<u32>,
17327    #[prost(uint32, optional, tag="12")]
17328    pub timecode_userbits1: ::core::option::Option<u32>,
17329    #[prost(uint32, optional, tag="13")]
17330    pub timecode_userbits2: ::core::option::Option<u32>,
17331    #[prost(uint32, optional, tag="14")]
17332    pub timecode_userbits3: ::core::option::Option<u32>,
17333    #[prost(int64, optional, tag="15")]
17334    pub timestamp: ::core::option::Option<i64>,
17335}
17336// End of protos/perfetto/trace/ftrace/v4l2.proto
17337
17338// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
17339
17340#[derive(Clone, PartialEq, ::prost::Message)]
17341pub struct VirtioGpuCmdQueueFtraceEvent {
17342    #[prost(uint32, optional, tag="1")]
17343    pub ctx_id: ::core::option::Option<u32>,
17344    #[prost(int32, optional, tag="2")]
17345    pub dev: ::core::option::Option<i32>,
17346    #[prost(uint64, optional, tag="3")]
17347    pub fence_id: ::core::option::Option<u64>,
17348    #[prost(uint32, optional, tag="4")]
17349    pub flags: ::core::option::Option<u32>,
17350    #[prost(string, optional, tag="5")]
17351    pub name: ::core::option::Option<::prost::alloc::string::String>,
17352    #[prost(uint32, optional, tag="6")]
17353    pub num_free: ::core::option::Option<u32>,
17354    #[prost(uint32, optional, tag="7")]
17355    pub seqno: ::core::option::Option<u32>,
17356    #[prost(uint32, optional, tag="8")]
17357    pub r#type: ::core::option::Option<u32>,
17358    #[prost(uint32, optional, tag="9")]
17359    pub vq: ::core::option::Option<u32>,
17360}
17361#[derive(Clone, PartialEq, ::prost::Message)]
17362pub struct VirtioGpuCmdResponseFtraceEvent {
17363    #[prost(uint32, optional, tag="1")]
17364    pub ctx_id: ::core::option::Option<u32>,
17365    #[prost(int32, optional, tag="2")]
17366    pub dev: ::core::option::Option<i32>,
17367    #[prost(uint64, optional, tag="3")]
17368    pub fence_id: ::core::option::Option<u64>,
17369    #[prost(uint32, optional, tag="4")]
17370    pub flags: ::core::option::Option<u32>,
17371    #[prost(string, optional, tag="5")]
17372    pub name: ::core::option::Option<::prost::alloc::string::String>,
17373    #[prost(uint32, optional, tag="6")]
17374    pub num_free: ::core::option::Option<u32>,
17375    #[prost(uint32, optional, tag="7")]
17376    pub seqno: ::core::option::Option<u32>,
17377    #[prost(uint32, optional, tag="8")]
17378    pub r#type: ::core::option::Option<u32>,
17379    #[prost(uint32, optional, tag="9")]
17380    pub vq: ::core::option::Option<u32>,
17381}
17382// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
17383
17384// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
17385
17386#[derive(Clone, PartialEq, ::prost::Message)]
17387pub struct VirtioVideoCmdFtraceEvent {
17388    #[prost(uint32, optional, tag="1")]
17389    pub stream_id: ::core::option::Option<u32>,
17390    #[prost(uint32, optional, tag="2")]
17391    pub r#type: ::core::option::Option<u32>,
17392}
17393#[derive(Clone, PartialEq, ::prost::Message)]
17394pub struct VirtioVideoCmdDoneFtraceEvent {
17395    #[prost(uint32, optional, tag="1")]
17396    pub stream_id: ::core::option::Option<u32>,
17397    #[prost(uint32, optional, tag="2")]
17398    pub r#type: ::core::option::Option<u32>,
17399}
17400#[derive(Clone, PartialEq, ::prost::Message)]
17401pub struct VirtioVideoResourceQueueFtraceEvent {
17402    #[prost(uint32, optional, tag="1")]
17403    pub data_size0: ::core::option::Option<u32>,
17404    #[prost(uint32, optional, tag="2")]
17405    pub data_size1: ::core::option::Option<u32>,
17406    #[prost(uint32, optional, tag="3")]
17407    pub data_size2: ::core::option::Option<u32>,
17408    #[prost(uint32, optional, tag="4")]
17409    pub data_size3: ::core::option::Option<u32>,
17410    #[prost(uint32, optional, tag="5")]
17411    pub queue_type: ::core::option::Option<u32>,
17412    #[prost(int32, optional, tag="6")]
17413    pub resource_id: ::core::option::Option<i32>,
17414    #[prost(int32, optional, tag="7")]
17415    pub stream_id: ::core::option::Option<i32>,
17416    #[prost(uint64, optional, tag="8")]
17417    pub timestamp: ::core::option::Option<u64>,
17418}
17419#[derive(Clone, PartialEq, ::prost::Message)]
17420pub struct VirtioVideoResourceQueueDoneFtraceEvent {
17421    #[prost(uint32, optional, tag="1")]
17422    pub data_size0: ::core::option::Option<u32>,
17423    #[prost(uint32, optional, tag="2")]
17424    pub data_size1: ::core::option::Option<u32>,
17425    #[prost(uint32, optional, tag="3")]
17426    pub data_size2: ::core::option::Option<u32>,
17427    #[prost(uint32, optional, tag="4")]
17428    pub data_size3: ::core::option::Option<u32>,
17429    #[prost(uint32, optional, tag="5")]
17430    pub queue_type: ::core::option::Option<u32>,
17431    #[prost(int32, optional, tag="6")]
17432    pub resource_id: ::core::option::Option<i32>,
17433    #[prost(int32, optional, tag="7")]
17434    pub stream_id: ::core::option::Option<i32>,
17435    #[prost(uint64, optional, tag="8")]
17436    pub timestamp: ::core::option::Option<u64>,
17437}
17438// End of protos/perfetto/trace/ftrace/virtio_video.proto
17439
17440// Begin of protos/perfetto/trace/ftrace/vmscan.proto
17441
17442#[derive(Clone, PartialEq, ::prost::Message)]
17443pub struct MmVmscanDirectReclaimBeginFtraceEvent {
17444    #[prost(int32, optional, tag="1")]
17445    pub order: ::core::option::Option<i32>,
17446    #[prost(int32, optional, tag="2")]
17447    pub may_writepage: ::core::option::Option<i32>,
17448    #[prost(uint32, optional, tag="3")]
17449    pub gfp_flags: ::core::option::Option<u32>,
17450}
17451#[derive(Clone, PartialEq, ::prost::Message)]
17452pub struct MmVmscanDirectReclaimEndFtraceEvent {
17453    #[prost(uint64, optional, tag="1")]
17454    pub nr_reclaimed: ::core::option::Option<u64>,
17455}
17456#[derive(Clone, PartialEq, ::prost::Message)]
17457pub struct MmVmscanKswapdWakeFtraceEvent {
17458    #[prost(int32, optional, tag="1")]
17459    pub nid: ::core::option::Option<i32>,
17460    #[prost(int32, optional, tag="2")]
17461    pub order: ::core::option::Option<i32>,
17462    #[prost(int32, optional, tag="3")]
17463    pub zid: ::core::option::Option<i32>,
17464}
17465#[derive(Clone, PartialEq, ::prost::Message)]
17466pub struct MmVmscanKswapdSleepFtraceEvent {
17467    #[prost(int32, optional, tag="1")]
17468    pub nid: ::core::option::Option<i32>,
17469}
17470#[derive(Clone, PartialEq, ::prost::Message)]
17471pub struct MmShrinkSlabStartFtraceEvent {
17472    #[prost(uint64, optional, tag="1")]
17473    pub cache_items: ::core::option::Option<u64>,
17474    #[prost(uint64, optional, tag="2")]
17475    pub delta: ::core::option::Option<u64>,
17476    #[prost(uint32, optional, tag="3")]
17477    pub gfp_flags: ::core::option::Option<u32>,
17478    #[prost(uint64, optional, tag="4")]
17479    pub lru_pgs: ::core::option::Option<u64>,
17480    #[prost(int64, optional, tag="5")]
17481    pub nr_objects_to_shrink: ::core::option::Option<i64>,
17482    #[prost(uint64, optional, tag="6")]
17483    pub pgs_scanned: ::core::option::Option<u64>,
17484    #[prost(uint64, optional, tag="7")]
17485    pub shr: ::core::option::Option<u64>,
17486    #[prost(uint64, optional, tag="8")]
17487    pub shrink: ::core::option::Option<u64>,
17488    #[prost(uint64, optional, tag="9")]
17489    pub total_scan: ::core::option::Option<u64>,
17490    #[prost(int32, optional, tag="10")]
17491    pub nid: ::core::option::Option<i32>,
17492    #[prost(int32, optional, tag="11")]
17493    pub priority: ::core::option::Option<i32>,
17494}
17495#[derive(Clone, PartialEq, ::prost::Message)]
17496pub struct MmShrinkSlabEndFtraceEvent {
17497    #[prost(int64, optional, tag="1")]
17498    pub new_scan: ::core::option::Option<i64>,
17499    #[prost(int32, optional, tag="2")]
17500    pub retval: ::core::option::Option<i32>,
17501    #[prost(uint64, optional, tag="3")]
17502    pub shr: ::core::option::Option<u64>,
17503    #[prost(uint64, optional, tag="4")]
17504    pub shrink: ::core::option::Option<u64>,
17505    #[prost(int64, optional, tag="5")]
17506    pub total_scan: ::core::option::Option<i64>,
17507    #[prost(int64, optional, tag="6")]
17508    pub unused_scan: ::core::option::Option<i64>,
17509    #[prost(int32, optional, tag="7")]
17510    pub nid: ::core::option::Option<i32>,
17511}
17512#[derive(Clone, PartialEq, ::prost::Message)]
17513pub struct MmVmscanMemcgReclaimBeginFtraceEvent {
17514    #[prost(int32, optional, tag="1")]
17515    pub order: ::core::option::Option<i32>,
17516    #[prost(int32, optional, tag="2")]
17517    pub may_writepage: ::core::option::Option<i32>,
17518    #[prost(uint64, optional, tag="3")]
17519    pub gfp_flags: ::core::option::Option<u64>,
17520}
17521#[derive(Clone, PartialEq, ::prost::Message)]
17522pub struct MmVmscanMemcgReclaimEndFtraceEvent {
17523    #[prost(uint64, optional, tag="1")]
17524    pub nr_reclaimed: ::core::option::Option<u64>,
17525}
17526// End of protos/perfetto/trace/ftrace/vmscan.proto
17527
17528// Begin of protos/perfetto/trace/ftrace/workqueue.proto
17529
17530#[derive(Clone, PartialEq, ::prost::Message)]
17531pub struct WorkqueueActivateWorkFtraceEvent {
17532    #[prost(uint64, optional, tag="1")]
17533    pub work: ::core::option::Option<u64>,
17534    #[prost(uint64, optional, tag="2")]
17535    pub function: ::core::option::Option<u64>,
17536}
17537#[derive(Clone, PartialEq, ::prost::Message)]
17538pub struct WorkqueueExecuteEndFtraceEvent {
17539    #[prost(uint64, optional, tag="1")]
17540    pub work: ::core::option::Option<u64>,
17541    #[prost(uint64, optional, tag="2")]
17542    pub function: ::core::option::Option<u64>,
17543}
17544#[derive(Clone, PartialEq, ::prost::Message)]
17545pub struct WorkqueueExecuteStartFtraceEvent {
17546    #[prost(uint64, optional, tag="1")]
17547    pub work: ::core::option::Option<u64>,
17548    #[prost(uint64, optional, tag="2")]
17549    pub function: ::core::option::Option<u64>,
17550}
17551#[derive(Clone, PartialEq, ::prost::Message)]
17552pub struct WorkqueueQueueWorkFtraceEvent {
17553    #[prost(uint64, optional, tag="1")]
17554    pub work: ::core::option::Option<u64>,
17555    #[prost(uint64, optional, tag="2")]
17556    pub function: ::core::option::Option<u64>,
17557    #[prost(int32, optional, tag="4")]
17558    pub req_cpu: ::core::option::Option<i32>,
17559    #[prost(int32, optional, tag="5")]
17560    pub cpu: ::core::option::Option<i32>,
17561    #[prost(string, optional, tag="6")]
17562    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
17563}
17564// End of protos/perfetto/trace/ftrace/workqueue.proto
17565
17566// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
17567
17568#[derive(Clone, PartialEq, ::prost::Message)]
17569pub struct FtraceEvent {
17570    /// Timestamp in nanoseconds using .../tracing/trace_clock.
17571    #[prost(uint64, optional, tag="1")]
17572    pub timestamp: ::core::option::Option<u64>,
17573    /// Kernel pid (do not confuse with userspace pid aka tgid).
17574    #[prost(uint32, optional, tag="2")]
17575    pub pid: ::core::option::Option<u32>,
17576    /// Not populated in actual traces. Wire format might change.
17577    /// Placeholder declaration so that the ftrace parsing code accepts the
17578    /// existence of this common field. If this becomes needed for all events:
17579    /// consider merging with common_preempt_count to avoid extra proto tags.
17580    #[prost(uint32, optional, tag="5")]
17581    pub common_flags: ::core::option::Option<u32>,
17582    #[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")]
17583    pub event: ::core::option::Option<ftrace_event::Event>,
17584}
17585/// Nested message and enum types in `FtraceEvent`.
17586pub mod ftrace_event {
17587    #[derive(Clone, PartialEq, ::prost::Oneof)]
17588    pub enum Event {
17589        #[prost(message, tag="3")]
17590        Print(super::PrintFtraceEvent),
17591        #[prost(message, tag="4")]
17592        SchedSwitch(super::SchedSwitchFtraceEvent),
17593        /// removed field with id 5;
17594        /// removed field with id 6;
17595        /// removed field with id 7;
17596        /// removed field with id 8;
17597        /// removed field with id 9;
17598        /// removed field with id 10;
17599        #[prost(message, tag="11")]
17600        CpuFrequency(super::CpuFrequencyFtraceEvent),
17601        #[prost(message, tag="12")]
17602        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
17603        #[prost(message, tag="13")]
17604        CpuIdle(super::CpuIdleFtraceEvent),
17605        #[prost(message, tag="14")]
17606        ClockEnable(super::ClockEnableFtraceEvent),
17607        #[prost(message, tag="15")]
17608        ClockDisable(super::ClockDisableFtraceEvent),
17609        #[prost(message, tag="16")]
17610        ClockSetRate(super::ClockSetRateFtraceEvent),
17611        #[prost(message, tag="17")]
17612        SchedWakeup(super::SchedWakeupFtraceEvent),
17613        #[prost(message, tag="18")]
17614        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
17615        #[prost(message, tag="19")]
17616        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
17617        #[prost(message, tag="20")]
17618        SchedWaking(super::SchedWakingFtraceEvent),
17619        #[prost(message, tag="21")]
17620        IpiEntry(super::IpiEntryFtraceEvent),
17621        #[prost(message, tag="22")]
17622        IpiExit(super::IpiExitFtraceEvent),
17623        #[prost(message, tag="23")]
17624        IpiRaise(super::IpiRaiseFtraceEvent),
17625        #[prost(message, tag="24")]
17626        SoftirqEntry(super::SoftirqEntryFtraceEvent),
17627        #[prost(message, tag="25")]
17628        SoftirqExit(super::SoftirqExitFtraceEvent),
17629        #[prost(message, tag="26")]
17630        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
17631        #[prost(message, tag="27")]
17632        I2cRead(super::I2cReadFtraceEvent),
17633        #[prost(message, tag="28")]
17634        I2cWrite(super::I2cWriteFtraceEvent),
17635        #[prost(message, tag="29")]
17636        I2cResult(super::I2cResultFtraceEvent),
17637        #[prost(message, tag="30")]
17638        I2cReply(super::I2cReplyFtraceEvent),
17639        #[prost(message, tag="31")]
17640        SmbusRead(super::SmbusReadFtraceEvent),
17641        #[prost(message, tag="32")]
17642        SmbusWrite(super::SmbusWriteFtraceEvent),
17643        #[prost(message, tag="33")]
17644        SmbusResult(super::SmbusResultFtraceEvent),
17645        #[prost(message, tag="34")]
17646        SmbusReply(super::SmbusReplyFtraceEvent),
17647        #[prost(message, tag="35")]
17648        LowmemoryKill(super::LowmemoryKillFtraceEvent),
17649        #[prost(message, tag="36")]
17650        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
17651        #[prost(message, tag="37")]
17652        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
17653        #[prost(message, tag="38")]
17654        SyncPt(super::SyncPtFtraceEvent),
17655        #[prost(message, tag="39")]
17656        SyncTimeline(super::SyncTimelineFtraceEvent),
17657        #[prost(message, tag="40")]
17658        SyncWait(super::SyncWaitFtraceEvent),
17659        #[prost(message, tag="41")]
17660        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
17661        #[prost(message, tag="42")]
17662        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
17663        #[prost(message, tag="43")]
17664        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
17665        #[prost(message, tag="44")]
17666        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
17667        #[prost(message, tag="45")]
17668        BlockRqIssue(super::BlockRqIssueFtraceEvent),
17669        #[prost(message, tag="46")]
17670        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
17671        #[prost(message, tag="47")]
17672        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
17673        #[prost(message, tag="48")]
17674        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
17675        #[prost(message, tag="49")]
17676        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
17677        #[prost(message, tag="50")]
17678        BinderTransaction(super::BinderTransactionFtraceEvent),
17679        #[prost(message, tag="51")]
17680        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
17681        #[prost(message, tag="52")]
17682        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
17683        #[prost(message, tag="53")]
17684        BinderLock(super::BinderLockFtraceEvent),
17685        #[prost(message, tag="54")]
17686        BinderLocked(super::BinderLockedFtraceEvent),
17687        #[prost(message, tag="55")]
17688        BinderUnlock(super::BinderUnlockFtraceEvent),
17689        #[prost(message, tag="56")]
17690        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
17691        #[prost(message, tag="57")]
17692        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
17693        #[prost(message, tag="58")]
17694        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
17695        #[prost(message, tag="59")]
17696        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
17697        #[prost(message, tag="60")]
17698        RegulatorDisable(super::RegulatorDisableFtraceEvent),
17699        #[prost(message, tag="61")]
17700        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
17701        #[prost(message, tag="62")]
17702        RegulatorEnable(super::RegulatorEnableFtraceEvent),
17703        #[prost(message, tag="63")]
17704        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
17705        #[prost(message, tag="64")]
17706        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
17707        #[prost(message, tag="65")]
17708        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
17709        #[prost(message, tag="66")]
17710        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
17711        #[prost(message, tag="67")]
17712        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
17713        #[prost(message, tag="68")]
17714        CgroupMkdir(super::CgroupMkdirFtraceEvent),
17715        #[prost(message, tag="69")]
17716        CgroupRemount(super::CgroupRemountFtraceEvent),
17717        #[prost(message, tag="70")]
17718        CgroupRmdir(super::CgroupRmdirFtraceEvent),
17719        #[prost(message, tag="71")]
17720        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
17721        #[prost(message, tag="72")]
17722        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
17723        #[prost(message, tag="73")]
17724        CgroupRelease(super::CgroupReleaseFtraceEvent),
17725        #[prost(message, tag="74")]
17726        CgroupRename(super::CgroupRenameFtraceEvent),
17727        #[prost(message, tag="75")]
17728        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
17729        #[prost(message, tag="76")]
17730        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
17731        #[prost(message, tag="77")]
17732        MdpCommit(super::MdpCommitFtraceEvent),
17733        #[prost(message, tag="78")]
17734        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
17735        #[prost(message, tag="79")]
17736        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
17737        #[prost(message, tag="80")]
17738        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
17739        #[prost(message, tag="81")]
17740        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
17741        #[prost(message, tag="82")]
17742        MdpCompareBw(super::MdpCompareBwFtraceEvent),
17743        #[prost(message, tag="83")]
17744        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
17745        #[prost(message, tag="84")]
17746        MdpSsppSet(super::MdpSsppSetFtraceEvent),
17747        #[prost(message, tag="85")]
17748        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
17749        #[prost(message, tag="86")]
17750        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
17751        #[prost(message, tag="87")]
17752        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
17753        #[prost(message, tag="88")]
17754        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
17755        #[prost(message, tag="89")]
17756        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
17757        #[prost(message, tag="90")]
17758        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
17759        #[prost(message, tag="91")]
17760        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
17761        #[prost(message, tag="92")]
17762        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
17763        #[prost(message, tag="93")]
17764        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
17765        #[prost(message, tag="94")]
17766        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
17767        #[prost(message, tag="95")]
17768        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
17769        #[prost(message, tag="96")]
17770        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
17771        #[prost(message, tag="97")]
17772        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
17773        #[prost(message, tag="98")]
17774        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
17775        #[prost(message, tag="99")]
17776        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
17777        #[prost(message, tag="100")]
17778        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
17779        #[prost(message, tag="101")]
17780        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
17781        #[prost(message, tag="102")]
17782        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
17783        #[prost(message, tag="103")]
17784        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
17785        #[prost(message, tag="104")]
17786        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
17787        #[prost(message, tag="105")]
17788        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
17789        #[prost(message, tag="106")]
17790        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
17791        #[prost(message, tag="107")]
17792        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
17793        #[prost(message, tag="108")]
17794        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
17795        #[prost(message, tag="109")]
17796        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
17797        #[prost(message, tag="110")]
17798        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
17799        #[prost(message, tag="111")]
17800        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
17801        #[prost(message, tag="112")]
17802        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
17803        #[prost(message, tag="113")]
17804        SuspendResume(super::SuspendResumeFtraceEvent),
17805        #[prost(message, tag="114")]
17806        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
17807        #[prost(message, tag="115")]
17808        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
17809        #[prost(message, tag="116")]
17810        BlockBioBounce(super::BlockBioBounceFtraceEvent),
17811        #[prost(message, tag="117")]
17812        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
17813        #[prost(message, tag="118")]
17814        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
17815        #[prost(message, tag="119")]
17816        BlockBioQueue(super::BlockBioQueueFtraceEvent),
17817        #[prost(message, tag="120")]
17818        BlockBioRemap(super::BlockBioRemapFtraceEvent),
17819        #[prost(message, tag="121")]
17820        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
17821        #[prost(message, tag="122")]
17822        BlockGetrq(super::BlockGetrqFtraceEvent),
17823        #[prost(message, tag="123")]
17824        BlockPlug(super::BlockPlugFtraceEvent),
17825        #[prost(message, tag="124")]
17826        BlockRqAbort(super::BlockRqAbortFtraceEvent),
17827        #[prost(message, tag="125")]
17828        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
17829        #[prost(message, tag="126")]
17830        BlockRqInsert(super::BlockRqInsertFtraceEvent),
17831        /// removed field with id 127;
17832        #[prost(message, tag="128")]
17833        BlockRqRemap(super::BlockRqRemapFtraceEvent),
17834        #[prost(message, tag="129")]
17835        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
17836        #[prost(message, tag="130")]
17837        BlockSleeprq(super::BlockSleeprqFtraceEvent),
17838        #[prost(message, tag="131")]
17839        BlockSplit(super::BlockSplitFtraceEvent),
17840        #[prost(message, tag="132")]
17841        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
17842        #[prost(message, tag="133")]
17843        BlockUnplug(super::BlockUnplugFtraceEvent),
17844        #[prost(message, tag="134")]
17845        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
17846        #[prost(message, tag="135")]
17847        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
17848        #[prost(message, tag="136")]
17849        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
17850        #[prost(message, tag="137")]
17851        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
17852        #[prost(message, tag="138")]
17853        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
17854        #[prost(message, tag="139")]
17855        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
17856        #[prost(message, tag="140")]
17857        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
17858        #[prost(message, tag="141")]
17859        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
17860        #[prost(message, tag="142")]
17861        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
17862        #[prost(message, tag="143")]
17863        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
17864        #[prost(message, tag="144")]
17865        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
17866        #[prost(message, tag="145")]
17867        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
17868        #[prost(message, tag="146")]
17869        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
17870        #[prost(message, tag="147")]
17871        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
17872        #[prost(message, tag="148")]
17873        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
17874        #[prost(message, tag="149")]
17875        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
17876        #[prost(message, tag="150")]
17877        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
17878        #[prost(message, tag="151")]
17879        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
17880        #[prost(message, tag="152")]
17881        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
17882        #[prost(message, tag="153")]
17883        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
17884        #[prost(message, tag="154")]
17885        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
17886        #[prost(message, tag="155")]
17887        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
17888        #[prost(message, tag="156")]
17889        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
17890        #[prost(message, tag="157")]
17891        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
17892        #[prost(message, tag="158")]
17893        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
17894        #[prost(message, tag="159")]
17895        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
17896        #[prost(message, tag="160")]
17897        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
17898        #[prost(message, tag="161")]
17899        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
17900        #[prost(message, tag="162")]
17901        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
17902        #[prost(message, tag="163")]
17903        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
17904        #[prost(message, tag="164")]
17905        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
17906        #[prost(message, tag="165")]
17907        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
17908        #[prost(message, tag="166")]
17909        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
17910        #[prost(message, tag="167")]
17911        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
17912        #[prost(message, tag="168")]
17913        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
17914        #[prost(message, tag="169")]
17915        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
17916        #[prost(message, tag="170")]
17917        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
17918        #[prost(message, tag="171")]
17919        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
17920        #[prost(message, tag="172")]
17921        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
17922        #[prost(message, tag="173")]
17923        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
17924        #[prost(message, tag="174")]
17925        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
17926        #[prost(message, tag="175")]
17927        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
17928        #[prost(message, tag="176")]
17929        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
17930        #[prost(message, tag="177")]
17931        Ext4Forget(super::Ext4ForgetFtraceEvent),
17932        #[prost(message, tag="178")]
17933        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
17934        #[prost(message, tag="179")]
17935        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
17936        #[prost(message, tag="180")]
17937        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
17938        #[prost(message, tag="181")]
17939        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
17940        #[prost(message, tag="182")]
17941        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
17942        #[prost(message, tag="183")]
17943        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
17944        #[prost(message, tag="184")]
17945        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
17946        #[prost(message, tag="185")]
17947        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
17948        #[prost(message, tag="186")]
17949        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
17950        #[prost(message, tag="187")]
17951        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
17952        #[prost(message, tag="188")]
17953        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
17954        #[prost(message, tag="189")]
17955        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
17956        #[prost(message, tag="190")]
17957        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
17958        #[prost(message, tag="191")]
17959        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
17960        #[prost(message, tag="192")]
17961        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
17962        #[prost(message, tag="193")]
17963        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
17964        #[prost(message, tag="194")]
17965        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
17966        #[prost(message, tag="195")]
17967        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
17968        #[prost(message, tag="196")]
17969        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
17970        #[prost(message, tag="197")]
17971        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
17972        #[prost(message, tag="198")]
17973        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
17974        #[prost(message, tag="199")]
17975        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
17976        #[prost(message, tag="200")]
17977        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
17978        #[prost(message, tag="201")]
17979        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
17980        #[prost(message, tag="202")]
17981        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
17982        #[prost(message, tag="203")]
17983        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
17984        #[prost(message, tag="204")]
17985        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
17986        #[prost(message, tag="205")]
17987        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
17988        #[prost(message, tag="206")]
17989        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
17990        #[prost(message, tag="207")]
17991        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
17992        #[prost(message, tag="208")]
17993        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
17994        #[prost(message, tag="209")]
17995        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
17996        #[prost(message, tag="210")]
17997        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
17998        #[prost(message, tag="211")]
17999        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
18000        #[prost(message, tag="212")]
18001        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
18002        #[prost(message, tag="213")]
18003        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
18004        #[prost(message, tag="214")]
18005        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
18006        #[prost(message, tag="215")]
18007        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
18008        #[prost(message, tag="216")]
18009        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
18010        #[prost(message, tag="217")]
18011        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
18012        #[prost(message, tag="218")]
18013        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
18014        #[prost(message, tag="219")]
18015        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
18016        /// removed field with id 220;
18017        /// removed field with id 221;
18018        /// removed field with id 222;
18019        /// removed field with id 223;
18020        /// removed field with id 224;
18021        /// removed field with id 225;
18022        /// removed field with id 226;
18023        /// removed field with id 227;
18024        /// removed field with id 228;
18025        /// removed field with id 229;
18026        #[prost(message, tag="230")]
18027        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
18028        #[prost(message, tag="231")]
18029        Ext4Writepage(super::Ext4WritepageFtraceEvent),
18030        #[prost(message, tag="232")]
18031        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
18032        #[prost(message, tag="233")]
18033        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
18034        #[prost(message, tag="234")]
18035        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
18036        #[prost(message, tag="235")]
18037        TaskNewtask(super::TaskNewtaskFtraceEvent),
18038        #[prost(message, tag="236")]
18039        TaskRename(super::TaskRenameFtraceEvent),
18040        #[prost(message, tag="237")]
18041        SchedProcessExec(super::SchedProcessExecFtraceEvent),
18042        #[prost(message, tag="238")]
18043        SchedProcessExit(super::SchedProcessExitFtraceEvent),
18044        #[prost(message, tag="239")]
18045        SchedProcessFork(super::SchedProcessForkFtraceEvent),
18046        #[prost(message, tag="240")]
18047        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
18048        #[prost(message, tag="241")]
18049        SchedProcessHang(super::SchedProcessHangFtraceEvent),
18050        #[prost(message, tag="242")]
18051        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
18052        #[prost(message, tag="243")]
18053        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
18054        #[prost(message, tag="244")]
18055        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
18056        #[prost(message, tag="245")]
18057        F2fsFallocate(super::F2fsFallocateFtraceEvent),
18058        #[prost(message, tag="246")]
18059        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
18060        #[prost(message, tag="247")]
18061        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
18062        #[prost(message, tag="248")]
18063        F2fsIget(super::F2fsIgetFtraceEvent),
18064        #[prost(message, tag="249")]
18065        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
18066        #[prost(message, tag="250")]
18067        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
18068        #[prost(message, tag="251")]
18069        F2fsReadpage(super::F2fsReadpageFtraceEvent),
18070        #[prost(message, tag="252")]
18071        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
18072        #[prost(message, tag="253")]
18073        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
18074        #[prost(message, tag="254")]
18075        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
18076        #[prost(message, tag="255")]
18077        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
18078        #[prost(message, tag="256")]
18079        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
18080        #[prost(message, tag="257")]
18081        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
18082        #[prost(message, tag="258")]
18083        F2fsTruncate(super::F2fsTruncateFtraceEvent),
18084        #[prost(message, tag="259")]
18085        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
18086        #[prost(message, tag="260")]
18087        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
18088        #[prost(message, tag="261")]
18089        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
18090        #[prost(message, tag="262")]
18091        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
18092        #[prost(message, tag="263")]
18093        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
18094        #[prost(message, tag="264")]
18095        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
18096        #[prost(message, tag="265")]
18097        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
18098        #[prost(message, tag="266")]
18099        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
18100        #[prost(message, tag="267")]
18101        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
18102        #[prost(message, tag="268")]
18103        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
18104        #[prost(message, tag="269")]
18105        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
18106        #[prost(message, tag="270")]
18107        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
18108        #[prost(message, tag="271")]
18109        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
18110        #[prost(message, tag="272")]
18111        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
18112        #[prost(message, tag="273")]
18113        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
18114        #[prost(message, tag="274")]
18115        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
18116        #[prost(message, tag="275")]
18117        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
18118        #[prost(message, tag="276")]
18119        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
18120        #[prost(message, tag="277")]
18121        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
18122        #[prost(message, tag="278")]
18123        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
18124        #[prost(message, tag="279")]
18125        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
18126        #[prost(message, tag="280")]
18127        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
18128        #[prost(message, tag="281")]
18129        IommuMapRange(super::IommuMapRangeFtraceEvent),
18130        #[prost(message, tag="282")]
18131        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
18132        #[prost(message, tag="283")]
18133        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
18134        #[prost(message, tag="284")]
18135        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
18136        #[prost(message, tag="285")]
18137        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
18138        #[prost(message, tag="286")]
18139        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
18140        #[prost(message, tag="287")]
18141        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
18142        #[prost(message, tag="288")]
18143        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
18144        #[prost(message, tag="289")]
18145        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
18146        #[prost(message, tag="290")]
18147        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
18148        #[prost(message, tag="291")]
18149        IonPrefetching(super::IonPrefetchingFtraceEvent),
18150        #[prost(message, tag="292")]
18151        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
18152        #[prost(message, tag="293")]
18153        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
18154        #[prost(message, tag="294")]
18155        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
18156        #[prost(message, tag="295")]
18157        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
18158        #[prost(message, tag="296")]
18159        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
18160        #[prost(message, tag="297")]
18161        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
18162        #[prost(message, tag="298")]
18163        Kfree(super::KfreeFtraceEvent),
18164        #[prost(message, tag="299")]
18165        Kmalloc(super::KmallocFtraceEvent),
18166        #[prost(message, tag="300")]
18167        KmallocNode(super::KmallocNodeFtraceEvent),
18168        #[prost(message, tag="301")]
18169        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
18170        #[prost(message, tag="302")]
18171        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
18172        #[prost(message, tag="303")]
18173        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
18174        #[prost(message, tag="304")]
18175        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
18176        #[prost(message, tag="305")]
18177        MigratePagesStart(super::MigratePagesStartFtraceEvent),
18178        #[prost(message, tag="306")]
18179        MigrateRetry(super::MigrateRetryFtraceEvent),
18180        #[prost(message, tag="307")]
18181        MmPageAlloc(super::MmPageAllocFtraceEvent),
18182        #[prost(message, tag="308")]
18183        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
18184        #[prost(message, tag="309")]
18185        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
18186        #[prost(message, tag="310")]
18187        MmPageFree(super::MmPageFreeFtraceEvent),
18188        #[prost(message, tag="311")]
18189        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
18190        #[prost(message, tag="312")]
18191        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
18192        #[prost(message, tag="313")]
18193        RssStat(super::RssStatFtraceEvent),
18194        #[prost(message, tag="314")]
18195        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
18196        #[prost(message, tag="315")]
18197        IonHeapGrow(super::IonHeapGrowFtraceEvent),
18198        #[prost(message, tag="316")]
18199        FenceInit(super::FenceInitFtraceEvent),
18200        #[prost(message, tag="317")]
18201        FenceDestroy(super::FenceDestroyFtraceEvent),
18202        #[prost(message, tag="318")]
18203        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
18204        #[prost(message, tag="319")]
18205        FenceSignaled(super::FenceSignaledFtraceEvent),
18206        #[prost(message, tag="320")]
18207        ClkEnable(super::ClkEnableFtraceEvent),
18208        #[prost(message, tag="321")]
18209        ClkDisable(super::ClkDisableFtraceEvent),
18210        #[prost(message, tag="322")]
18211        ClkSetRate(super::ClkSetRateFtraceEvent),
18212        #[prost(message, tag="323")]
18213        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
18214        #[prost(message, tag="324")]
18215        SignalDeliver(super::SignalDeliverFtraceEvent),
18216        #[prost(message, tag="325")]
18217        SignalGenerate(super::SignalGenerateFtraceEvent),
18218        #[prost(message, tag="326")]
18219        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
18220        #[prost(message, tag="327")]
18221        Generic(super::GenericFtraceEvent),
18222        #[prost(message, tag="328")]
18223        MmEventRecord(super::MmEventRecordFtraceEvent),
18224        #[prost(message, tag="329")]
18225        SysEnter(super::SysEnterFtraceEvent),
18226        #[prost(message, tag="330")]
18227        SysExit(super::SysExitFtraceEvent),
18228        #[prost(message, tag="331")]
18229        Zero(super::ZeroFtraceEvent),
18230        #[prost(message, tag="332")]
18231        GpuFrequency(super::GpuFrequencyFtraceEvent),
18232        #[prost(message, tag="333")]
18233        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
18234        #[prost(message, tag="334")]
18235        MarkVictim(super::MarkVictimFtraceEvent),
18236        #[prost(message, tag="335")]
18237        IonStat(super::IonStatFtraceEvent),
18238        #[prost(message, tag="336")]
18239        IonBufferCreate(super::IonBufferCreateFtraceEvent),
18240        #[prost(message, tag="337")]
18241        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
18242        #[prost(message, tag="338")]
18243        ScmCallStart(super::ScmCallStartFtraceEvent),
18244        #[prost(message, tag="339")]
18245        ScmCallEnd(super::ScmCallEndFtraceEvent),
18246        #[prost(message, tag="340")]
18247        GpuMemTotal(super::GpuMemTotalFtraceEvent),
18248        #[prost(message, tag="341")]
18249        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
18250        #[prost(message, tag="342")]
18251        CdevUpdate(super::CdevUpdateFtraceEvent),
18252        #[prost(message, tag="343")]
18253        CpuhpExit(super::CpuhpExitFtraceEvent),
18254        #[prost(message, tag="344")]
18255        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
18256        #[prost(message, tag="345")]
18257        CpuhpEnter(super::CpuhpEnterFtraceEvent),
18258        #[prost(message, tag="346")]
18259        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
18260        #[prost(message, tag="347")]
18261        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
18262        #[prost(message, tag="348")]
18263        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
18264        #[prost(message, tag="349")]
18265        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
18266        #[prost(message, tag="350")]
18267        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
18268        #[prost(message, tag="351")]
18269        DmaHeapStat(super::DmaHeapStatFtraceEvent),
18270        #[prost(message, tag="352")]
18271        CpuhpPause(super::CpuhpPauseFtraceEvent),
18272        #[prost(message, tag="353")]
18273        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
18274        #[prost(message, tag="354")]
18275        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
18276        #[prost(message, tag="355")]
18277        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
18278        #[prost(message, tag="356")]
18279        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
18280        #[prost(message, tag="357")]
18281        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
18282        #[prost(message, tag="358")]
18283        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
18284        #[prost(message, tag="359")]
18285        RssStatThrottled(super::RssStatThrottledFtraceEvent),
18286        #[prost(message, tag="360")]
18287        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
18288        #[prost(message, tag="361")]
18289        NetDevXmit(super::NetDevXmitFtraceEvent),
18290        #[prost(message, tag="362")]
18291        InetSockSetState(super::InetSockSetStateFtraceEvent),
18292        #[prost(message, tag="363")]
18293        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
18294        #[prost(message, tag="364")]
18295        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
18296        #[prost(message, tag="365")]
18297        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
18298        #[prost(message, tag="366")]
18299        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
18300        #[prost(message, tag="367")]
18301        KfreeSkb(super::KfreeSkbFtraceEvent),
18302        #[prost(message, tag="368")]
18303        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
18304        #[prost(message, tag="369")]
18305        KvmAckIrq(super::KvmAckIrqFtraceEvent),
18306        #[prost(message, tag="370")]
18307        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
18308        #[prost(message, tag="371")]
18309        KvmAgePage(super::KvmAgePageFtraceEvent),
18310        #[prost(message, tag="372")]
18311        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
18312        #[prost(message, tag="373")]
18313        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
18314        #[prost(message, tag="374")]
18315        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
18316        #[prost(message, tag="375")]
18317        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
18318        #[prost(message, tag="376")]
18319        KvmEntry(super::KvmEntryFtraceEvent),
18320        #[prost(message, tag="377")]
18321        KvmExit(super::KvmExitFtraceEvent),
18322        #[prost(message, tag="378")]
18323        KvmFpu(super::KvmFpuFtraceEvent),
18324        #[prost(message, tag="379")]
18325        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
18326        #[prost(message, tag="380")]
18327        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
18328        #[prost(message, tag="381")]
18329        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
18330        #[prost(message, tag="382")]
18331        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
18332        #[prost(message, tag="383")]
18333        KvmIrqLine(super::KvmIrqLineFtraceEvent),
18334        #[prost(message, tag="384")]
18335        KvmMmio(super::KvmMmioFtraceEvent),
18336        #[prost(message, tag="385")]
18337        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
18338        #[prost(message, tag="386")]
18339        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
18340        #[prost(message, tag="387")]
18341        KvmSetIrq(super::KvmSetIrqFtraceEvent),
18342        #[prost(message, tag="388")]
18343        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
18344        #[prost(message, tag="389")]
18345        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
18346        #[prost(message, tag="390")]
18347        KvmSysAccess(super::KvmSysAccessFtraceEvent),
18348        #[prost(message, tag="391")]
18349        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
18350        #[prost(message, tag="392")]
18351        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
18352        #[prost(message, tag="393")]
18353        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
18354        #[prost(message, tag="394")]
18355        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
18356        #[prost(message, tag="395")]
18357        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
18358        #[prost(message, tag="396")]
18359        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
18360        #[prost(message, tag="397")]
18361        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
18362        #[prost(message, tag="398")]
18363        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
18364        #[prost(message, tag="399")]
18365        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
18366        #[prost(message, tag="400")]
18367        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
18368        #[prost(message, tag="401")]
18369        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
18370        #[prost(message, tag="402")]
18371        TrapReg(super::TrapRegFtraceEvent),
18372        #[prost(message, tag="403")]
18373        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
18374        #[prost(message, tag="404")]
18375        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
18376        #[prost(message, tag="405")]
18377        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
18378        #[prost(message, tag="406")]
18379        UfshcdCommand(super::UfshcdCommandFtraceEvent),
18380        #[prost(message, tag="407")]
18381        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
18382        #[prost(message, tag="408")]
18383        Console(super::ConsoleFtraceEvent),
18384        #[prost(message, tag="409")]
18385        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
18386        #[prost(message, tag="410")]
18387        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
18388        #[prost(message, tag="411")]
18389        DrmSchedJob(super::DrmSchedJobFtraceEvent),
18390        #[prost(message, tag="412")]
18391        DrmRunJob(super::DrmRunJobFtraceEvent),
18392        #[prost(message, tag="413")]
18393        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
18394        #[prost(message, tag="414")]
18395        DmaFenceInit(super::DmaFenceInitFtraceEvent),
18396        #[prost(message, tag="415")]
18397        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
18398        #[prost(message, tag="416")]
18399        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
18400        #[prost(message, tag="417")]
18401        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
18402        #[prost(message, tag="418")]
18403        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
18404        #[prost(message, tag="419")]
18405        F2fsIostat(super::F2fsIostatFtraceEvent),
18406        #[prost(message, tag="420")]
18407        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
18408        #[prost(message, tag="421")]
18409        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
18410        #[prost(message, tag="422")]
18411        V4l2Qbuf(super::V4l2QbufFtraceEvent),
18412        #[prost(message, tag="423")]
18413        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
18414        #[prost(message, tag="424")]
18415        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
18416        #[prost(message, tag="425")]
18417        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
18418        #[prost(message, tag="426")]
18419        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
18420        #[prost(message, tag="427")]
18421        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
18422        #[prost(message, tag="428")]
18423        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
18424        #[prost(message, tag="429")]
18425        DsiRx(super::DsiRxFtraceEvent),
18426        #[prost(message, tag="430")]
18427        DsiTx(super::DsiTxFtraceEvent),
18428        #[prost(message, tag="431")]
18429        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
18430        #[prost(message, tag="432")]
18431        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
18432        #[prost(message, tag="433")]
18433        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
18434        #[prost(message, tag="434")]
18435        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
18436        #[prost(message, tag="435")]
18437        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
18438        #[prost(message, tag="436")]
18439        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
18440        #[prost(message, tag="437")]
18441        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
18442        #[prost(message, tag="438")]
18443        FuncgraphExit(super::FuncgraphExitFtraceEvent),
18444        #[prost(message, tag="439")]
18445        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
18446        #[prost(message, tag="440")]
18447        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
18448        #[prost(message, tag="441")]
18449        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
18450        #[prost(message, tag="442")]
18451        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
18452        #[prost(message, tag="443")]
18453        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
18454        #[prost(message, tag="444")]
18455        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
18456        #[prost(message, tag="445")]
18457        TrustySmc(super::TrustySmcFtraceEvent),
18458        #[prost(message, tag="446")]
18459        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
18460        #[prost(message, tag="447")]
18461        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
18462        #[prost(message, tag="448")]
18463        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
18464        #[prost(message, tag="449")]
18465        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
18466        #[prost(message, tag="450")]
18467        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
18468        #[prost(message, tag="451")]
18469        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
18470        #[prost(message, tag="452")]
18471        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
18472        #[prost(message, tag="453")]
18473        TrustyIrq(super::TrustyIrqFtraceEvent),
18474        #[prost(message, tag="454")]
18475        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
18476        #[prost(message, tag="455")]
18477        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
18478        #[prost(message, tag="456")]
18479        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
18480        #[prost(message, tag="457")]
18481        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
18482        #[prost(message, tag="458")]
18483        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
18484        /// removed field with id 459;
18485        #[prost(message, tag="460")]
18486        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
18487        #[prost(message, tag="461")]
18488        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
18489        #[prost(message, tag="462")]
18490        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
18491        /// removed field with id 463;
18492        #[prost(message, tag="464")]
18493        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
18494        #[prost(message, tag="465")]
18495        CmaAllocStart(super::CmaAllocStartFtraceEvent),
18496        #[prost(message, tag="466")]
18497        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
18498        #[prost(message, tag="467")]
18499        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
18500        #[prost(message, tag="468")]
18501        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
18502        #[prost(message, tag="469")]
18503        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
18504        #[prost(message, tag="470")]
18505        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
18506        #[prost(message, tag="471")]
18507        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
18508        #[prost(message, tag="472")]
18509        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
18510        #[prost(message, tag="473")]
18511        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
18512        #[prost(message, tag="474")]
18513        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
18514        #[prost(message, tag="475")]
18515        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
18516        #[prost(message, tag="476")]
18517        HypEnter(super::HypEnterFtraceEvent),
18518        #[prost(message, tag="477")]
18519        HypExit(super::HypExitFtraceEvent),
18520        #[prost(message, tag="478")]
18521        HostHcall(super::HostHcallFtraceEvent),
18522        #[prost(message, tag="479")]
18523        HostSmc(super::HostSmcFtraceEvent),
18524        #[prost(message, tag="480")]
18525        HostMemAbort(super::HostMemAbortFtraceEvent),
18526        #[prost(message, tag="481")]
18527        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
18528        #[prost(message, tag="482")]
18529        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
18530        #[prost(message, tag="483")]
18531        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
18532        #[prost(message, tag="484")]
18533        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
18534        #[prost(message, tag="485")]
18535        BinderCommand(super::BinderCommandFtraceEvent),
18536        #[prost(message, tag="486")]
18537        BinderReturn(super::BinderReturnFtraceEvent),
18538        #[prost(message, tag="487")]
18539        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
18540        #[prost(message, tag="488")]
18541        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
18542        #[prost(message, tag="489")]
18543        RpmStatus(super::RpmStatusFtraceEvent),
18544        #[prost(message, tag="490")]
18545        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
18546        #[prost(message, tag="491")]
18547        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
18548        #[prost(message, tag="492")]
18549        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
18550        #[prost(message, tag="493")]
18551        DpuDsiRx(super::DpuDsiRxFtraceEvent),
18552        #[prost(message, tag="494")]
18553        DpuDsiTx(super::DpuDsiTxFtraceEvent),
18554        #[prost(message, tag="495")]
18555        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
18556        #[prost(message, tag="496")]
18557        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
18558        #[prost(message, tag="497")]
18559        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
18560        #[prost(message, tag="498")]
18561        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
18562        #[prost(message, tag="499")]
18563        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
18564        #[prost(message, tag="500")]
18565        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
18566        #[prost(message, tag="501")]
18567        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
18568        #[prost(message, tag="502")]
18569        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
18570        #[prost(message, tag="503")]
18571        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
18572        #[prost(message, tag="504")]
18573        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
18574        #[prost(message, tag="505")]
18575        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
18576        #[prost(message, tag="506")]
18577        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
18578        #[prost(message, tag="507")]
18579        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
18580        #[prost(message, tag="508")]
18581        DcvshFreq(super::DcvshFreqFtraceEvent),
18582        #[prost(message, tag="509")]
18583        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
18584        #[prost(message, tag="510")]
18585        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
18586        #[prost(message, tag="511")]
18587        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
18588        #[prost(message, tag="512")]
18589        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
18590        #[prost(message, tag="513")]
18591        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
18592        #[prost(message, tag="514")]
18593        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
18594        #[prost(message, tag="515")]
18595        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
18596        #[prost(message, tag="516")]
18597        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
18598        #[prost(message, tag="517")]
18599        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
18600        #[prost(message, tag="518")]
18601        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
18602        #[prost(message, tag="519")]
18603        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
18604        #[prost(message, tag="520")]
18605        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
18606        #[prost(message, tag="521")]
18607        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
18608        #[prost(message, tag="522")]
18609        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
18610        #[prost(message, tag="523")]
18611        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
18612        #[prost(message, tag="524")]
18613        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
18614        #[prost(message, tag="525")]
18615        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
18616        #[prost(message, tag="526")]
18617        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
18618        #[prost(message, tag="527")]
18619        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
18620        #[prost(message, tag="528")]
18621        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
18622        #[prost(message, tag="529")]
18623        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
18624        #[prost(message, tag="530")]
18625        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
18626        #[prost(message, tag="531")]
18627        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
18628        #[prost(message, tag="532")]
18629        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
18630        #[prost(message, tag="533")]
18631        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
18632        #[prost(message, tag="534")]
18633        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
18634        #[prost(message, tag="535")]
18635        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
18636        #[prost(message, tag="536")]
18637        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
18638        #[prost(message, tag="537")]
18639        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
18640        #[prost(message, tag="538")]
18641        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
18642        #[prost(message, tag="539")]
18643        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
18644        #[prost(message, tag="540")]
18645        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
18646        #[prost(message, tag="541")]
18647        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
18648        #[prost(message, tag="542")]
18649        KprobeEvent(super::KprobeEvent),
18650        #[prost(message, tag="543")]
18651        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
18652        #[prost(message, tag="544")]
18653        DoSysOpen(super::DoSysOpenFtraceEvent),
18654        #[prost(message, tag="545")]
18655        OpenExec(super::OpenExecFtraceEvent),
18656        #[prost(message, tag="546")]
18657        BlockIoStart(super::BlockIoStartFtraceEvent),
18658        #[prost(message, tag="547")]
18659        BlockIoDone(super::BlockIoDoneFtraceEvent),
18660        #[prost(message, tag="548")]
18661        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
18662        #[prost(message, tag="549")]
18663        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
18664        #[prost(message, tag="550")]
18665        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
18666        #[prost(message, tag="551")]
18667        HrtimerStart(super::HrtimerStartFtraceEvent),
18668        #[prost(message, tag="552")]
18669        HrtimerCancel(super::HrtimerCancelFtraceEvent),
18670        #[prost(message, tag="553")]
18671        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
18672        #[prost(message, tag="554")]
18673        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
18674        #[prost(message, tag="555")]
18675        TimerStart(super::TimerStartFtraceEvent),
18676        #[prost(message, tag="556")]
18677        TimerCancel(super::TimerCancelFtraceEvent),
18678        #[prost(message, tag="557")]
18679        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
18680        #[prost(message, tag="558")]
18681        TimerExpireExit(super::TimerExpireExitFtraceEvent),
18682        #[prost(message, tag="559")]
18683        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
18684        #[prost(message, tag="560")]
18685        LocalTimerExit(super::LocalTimerExitFtraceEvent),
18686        #[prost(message, tag="561")]
18687        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
18688        #[prost(message, tag="562")]
18689        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
18690        #[prost(message, tag="563")]
18691        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
18692        #[prost(message, tag="564")]
18693        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
18694        #[prost(message, tag="565")]
18695        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
18696        #[prost(message, tag="566")]
18697        Dwc3Event(super::Dwc3EventFtraceEvent),
18698        #[prost(message, tag="567")]
18699        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
18700        #[prost(message, tag="568")]
18701        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
18702        #[prost(message, tag="569")]
18703        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
18704        #[prost(message, tag="570")]
18705        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
18706        #[prost(message, tag="571")]
18707        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
18708        #[prost(message, tag="572")]
18709        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
18710        #[prost(message, tag="573")]
18711        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
18712        #[prost(message, tag="574")]
18713        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
18714        #[prost(message, tag="575")]
18715        Dwc3Writel(super::Dwc3WritelFtraceEvent),
18716        #[prost(message, tag="576")]
18717        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
18718        #[prost(message, tag="577")]
18719        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
18720        #[prost(message, tag="578")]
18721        HostFfaCall(super::HostFfaCallFtraceEvent),
18722        #[prost(message, tag="579")]
18723        DmabufRssStat(super::DmabufRssStatFtraceEvent),
18724        #[prost(message, tag="580")]
18725        IommuIdmap(super::IommuIdmapFtraceEvent),
18726        #[prost(message, tag="581")]
18727        PsciMemProtect(super::PsciMemProtectFtraceEvent),
18728        #[prost(message, tag="582")]
18729        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
18730        #[prost(message, tag="583")]
18731        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
18732        #[prost(message, tag="584")]
18733        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
18734        #[prost(message, tag="585")]
18735        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
18736        #[prost(message, tag="586")]
18737        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
18738        #[prost(message, tag="587")]
18739        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
18740        #[prost(message, tag="588")]
18741        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
18742        #[prost(message, tag="589")]
18743        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
18744        #[prost(message, tag="590")]
18745        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
18746        #[prost(message, tag="591")]
18747        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
18748        #[prost(message, tag="592")]
18749        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
18750        #[prost(message, tag="593")]
18751        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
18752        #[prost(message, tag="594")]
18753        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
18754        #[prost(message, tag="595")]
18755        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
18756        #[prost(message, tag="596")]
18757        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
18758        #[prost(message, tag="597")]
18759        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
18760        #[prost(message, tag="598")]
18761        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
18762        #[prost(message, tag="599")]
18763        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
18764        #[prost(message, tag="600")]
18765        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
18766        #[prost(message, tag="601")]
18767        GpuPowerState(super::GpuPowerStateFtraceEvent),
18768        #[prost(message, tag="602")]
18769        GramCollision(super::GramCollisionFtraceEvent),
18770        #[prost(message, tag="603")]
18771        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
18772        #[prost(message, tag="604")]
18773        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
18774        #[prost(message, tag="605")]
18775        DpuDispFrameDoneTimeout(super::DpuDispFrameDoneTimeoutFtraceEvent),
18776        #[prost(message, tag="606")]
18777        DpuDispFrameStartTimeout(super::DpuDispFrameStartTimeoutFtraceEvent),
18778        #[prost(message, tag="607")]
18779        MmVmscanMemcgReclaimBegin(super::MmVmscanMemcgReclaimBeginFtraceEvent),
18780        #[prost(message, tag="608")]
18781        MmVmscanMemcgReclaimEnd(super::MmVmscanMemcgReclaimEndFtraceEvent),
18782        #[prost(message, tag="609")]
18783        DpuDispFrameDoneMissing(super::DpuDispFrameDoneMissingFtraceEvent),
18784        #[prost(message, tag="610")]
18785        DpuDispFrameStartMissing(super::DpuDispFrameStartMissingFtraceEvent),
18786    }
18787}
18788// End of protos/perfetto/trace/ftrace/ftrace_event.proto
18789
18790// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
18791
18792/// Per-CPU kernel buffer stats for the ftrace data source gathered from
18793/// /sys/kernel/tracing/per_cpu/cpuX/stats.
18794#[derive(Clone, PartialEq, ::prost::Message)]
18795pub struct FtraceCpuStats {
18796    /// CPU index.
18797    #[prost(uint64, optional, tag="1")]
18798    pub cpu: ::core::option::Option<u64>,
18799    /// Number of entries currently in the kernel buffer.
18800    #[prost(uint64, optional, tag="2")]
18801    pub entries: ::core::option::Option<u64>,
18802    /// Number of events lost in kernel buffers due to overwriting of old events
18803    /// before userspace had a chance to drain them. Valid if the buffer is in
18804    /// "overwrite" mode, otherwise see |dropped_events|.
18805    #[prost(uint64, optional, tag="3")]
18806    pub overrun: ::core::option::Option<u64>,
18807    /// This should always be zero. If not the buffer size is way too small or
18808    /// something went wrong with the tracer. Quoting the kernel: "number of
18809    /// commits failing due to the buffer wrapping around while there are
18810    /// uncommitted events, such as during an interrupt storm".
18811    #[prost(uint64, optional, tag="4")]
18812    pub commit_overrun: ::core::option::Option<u64>,
18813    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
18814    /// The field should be named "bytes", but is misnamed for historical reasons.
18815    /// This value has known inaccuracies before Linux v6.6:
18816    /// <https://github.com/torvalds/linux/commit/45d99ea>
18817    #[prost(uint64, optional, tag="5")]
18818    pub bytes_read: ::core::option::Option<u64>,
18819    /// The timestamp for the oldest event still in the ring buffer.
18820    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18821    #[prost(double, optional, tag="6")]
18822    pub oldest_event_ts: ::core::option::Option<f64>,
18823    /// The current timestamp.
18824    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18825    #[prost(double, optional, tag="7")]
18826    pub now_ts: ::core::option::Option<f64>,
18827    /// If the kernel buffer has overwrite mode disabled, this will show the number
18828    /// of new events that were lost because the buffer was full. This is similar
18829    /// to |overrun| but only for the overwrite=false case.
18830    #[prost(uint64, optional, tag="8")]
18831    pub dropped_events: ::core::option::Option<u64>,
18832    /// The number of events read (consumed) from the buffer by userspace.
18833    #[prost(uint64, optional, tag="9")]
18834    pub read_events: ::core::option::Option<u64>,
18835}
18836/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
18837#[derive(Clone, PartialEq, ::prost::Message)]
18838pub struct FtraceKprobeStats {
18839    /// Cumulative number of kprobe events generated for this function
18840    #[prost(int64, optional, tag="1")]
18841    pub hits: ::core::option::Option<i64>,
18842    /// Cumulative number of kprobe events that could not be generated for this
18843    /// function and were missed.  This happens when too much nesting
18844    /// happens between a kprobe and its kretprobe, overflowing the
18845    /// maxactives buffer.
18846    #[prost(int64, optional, tag="2")]
18847    pub misses: ::core::option::Option<i64>,
18848}
18849/// Errors and kernel buffer stats for the ftrace data source.
18850#[derive(Clone, PartialEq, ::prost::Message)]
18851pub struct FtraceStats {
18852    /// A pair of FtraceStats is written on every trace flush:
18853    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
18854    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
18855    ///                   before this packet was written. For simple traces this
18856    ///                   will be once at the end of the trace.
18857    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
18858    pub phase: ::core::option::Option<i32>,
18859    /// Per-CPU stats (one entry for each CPU).
18860    #[prost(message, repeated, tag="2")]
18861    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
18862    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
18863    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
18864    /// trace or not. It can be used to debug kptr_restrict or security-related
18865    /// errors.
18866    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
18867    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
18868    #[prost(uint32, optional, tag="3")]
18869    pub kernel_symbols_parsed: ::core::option::Option<u32>,
18870    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
18871    #[prost(uint32, optional, tag="4")]
18872    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
18873    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
18874    /// one or more atrace categories not available on the device.
18875    #[prost(string, optional, tag="5")]
18876    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
18877    /// Error message due to exclusivity violation of a single-tenant feature.
18878    #[prost(string, optional, tag="13")]
18879    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
18880    /// Ftrace events requested by the config but not present on device.
18881    #[prost(string, repeated, tag="6")]
18882    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18883    /// Ftrace events requested by the config and present on device, but which we
18884    /// failed to enable due to permissions, or due to a conflicting option
18885    /// (currently FtraceConfig.disable_generic_events).
18886    #[prost(string, repeated, tag="7")]
18887    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18888    /// The data source was configured to preserve existing events in the ftrace
18889    /// buffer before the start of the trace.
18890    #[prost(bool, optional, tag="8")]
18891    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
18892    /// Unique errors encountered during reading and parsing of the raw ftrace
18893    /// data. Ring buffer ABI related errors will also be recorded in the
18894    /// affected FtraceEventBundles with a timestamp.
18895    /// Any traces with entries in this field should be investigated, as they
18896    /// indicate a bug in perfetto or the kernel.
18897    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
18898    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
18899    /// Kprobe profile stats for functions hits and misses
18900    #[prost(message, optional, tag="10")]
18901    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
18902    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
18903    /// Added in: perfetto v52.
18904    #[prost(uint32, optional, tag="11")]
18905    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
18906    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
18907    /// on the value we're writing into the tracefs control file. Might not be
18908    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
18909    /// scratch pages (and/or other factors). Added in: perfetto v52.
18910    #[prost(uint32, optional, tag="12")]
18911    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
18912}
18913/// Nested message and enum types in `FtraceStats`.
18914pub mod ftrace_stats {
18915    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18916    #[repr(i32)]
18917    pub enum Phase {
18918        Unspecified = 0,
18919        StartOfTrace = 1,
18920        EndOfTrace = 2,
18921    }
18922    impl Phase {
18923        /// String value of the enum field names used in the ProtoBuf definition.
18924        ///
18925        /// The values are not transformed in any way and thus are considered stable
18926        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18927        pub fn as_str_name(&self) -> &'static str {
18928            match self {
18929                Phase::Unspecified => "UNSPECIFIED",
18930                Phase::StartOfTrace => "START_OF_TRACE",
18931                Phase::EndOfTrace => "END_OF_TRACE",
18932            }
18933        }
18934    }
18935}
18936// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
18937
18938// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18939
18940/// The result of tracing one or more ftrace data pages from a single per-cpu
18941/// kernel ring buffer. If collating multiple pages' worth of events, all of
18942/// them come from contiguous pages, with no kernel data loss in between.
18943#[derive(Clone, PartialEq, ::prost::Message)]
18944pub struct FtraceEventBundle {
18945    #[prost(uint32, optional, tag="1")]
18946    pub cpu: ::core::option::Option<u32>,
18947    #[prost(message, repeated, tag="2")]
18948    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
18949    /// Set to true if there was data loss between the last time we've read from
18950    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
18951    /// in this bundle.
18952    #[prost(bool, optional, tag="3")]
18953    pub lost_events: ::core::option::Option<bool>,
18954    #[prost(message, optional, tag="4")]
18955    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
18956    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
18957    /// timestamps as that counts during suspend, is available to userspace, and
18958    /// is coherent across cpus.
18959    ///
18960    /// If this field is set, it means that a different clock was used during
18961    /// recording. Either because the boot clock is unavailable (e.g. old kernels
18962    /// before 3.x), or the trace config has set an incompatible option
18963    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
18964    /// trace_processor will do best-effort clock alignment using timestamp pairs
18965    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
18966    /// when the ftrace clock is "boot", as that is the default assumption.
18967    ///
18968    /// Some clocks (local/global) are technically per-cpu, but we make a
18969    /// simplifying assumption that they are global, as their inter-cpu skew
18970    /// should be reasonably bounded on modern systems.
18971    ///
18972    /// Added in: perfetto v19. Android T (13).
18973    #[prost(enumeration="FtraceClock", optional, tag="5")]
18974    pub ftrace_clock: ::core::option::Option<i32>,
18975    /// The timestamp according to the ftrace clock, taken at the same instant as
18976    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
18977    /// will be in the future relative to the data covered by this bundle.
18978    /// Implementation note: Populated by reading the 'now ts:' field in
18979    /// tracefs/per_cpu/cpu0/stat.
18980    ///
18981    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18982    #[prost(int64, optional, tag="6")]
18983    pub ftrace_timestamp: ::core::option::Option<i64>,
18984    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
18985    /// |ftrace_timestamp|.
18986    ///
18987    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18988    #[prost(int64, optional, tag="7")]
18989    pub boot_timestamp: ::core::option::Option<i64>,
18990    #[prost(message, repeated, tag="8")]
18991    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
18992    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
18993    /// primary difference is that this field tracked the last timestamp read from
18994    /// the per-cpu buffer, while the newer field tracks events that get
18995    /// serialised into the trace.
18996    /// Added in: perfetto v44.
18997    #[prost(uint64, optional, tag="9")]
18998    pub last_read_event_timestamp: ::core::option::Option<u64>,
18999    /// The timestamp (using ftrace clock) of the last event written into this
19000    /// data source on this cpu. In other words: the last event in the previous
19001    /// bundle.
19002    /// Lets the trace processing find an initial timestamp after which ftrace
19003    /// data is known to be valid across all cpus. Of particular importance when
19004    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
19005    /// oldest bundles can skew the first valid timestamp per cpu significantly.
19006    /// Added in: perfetto v47.
19007    #[prost(uint64, optional, tag="10")]
19008    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
19009    #[prost(message, repeated, tag="11")]
19010    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
19011    /// Written only on android builds if the config sets |debug_ftrace_abi|.
19012    /// Contains the raw ring buffer tracing page that the implementation could
19013    /// not parse.
19014    /// Addded in: perfetto v50.
19015    #[prost(bytes="vec", optional, tag="512")]
19016    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19017}
19018/// Nested message and enum types in `FtraceEventBundle`.
19019pub mod ftrace_event_bundle {
19020    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
19021    /// a subset of events & their fields is recorded.
19022    /// All fields (except comms) are stored in a structure-of-arrays form, one
19023    /// entry in each repeated field per event.
19024    #[derive(Clone, PartialEq, ::prost::Message)]
19025    pub struct CompactSched {
19026        /// Interned table of unique strings for this bundle.
19027        #[prost(string, repeated, tag="5")]
19028        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19029        /// Delta-encoded timestamps across all sched_switch events within this
19030        /// bundle. The first is absolute, each next one is relative to its
19031        /// predecessor.
19032        #[prost(uint64, repeated, tag="1")]
19033        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
19034        #[prost(int64, repeated, tag="2")]
19035        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
19036        #[prost(int32, repeated, tag="3")]
19037        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
19038        #[prost(int32, repeated, tag="4")]
19039        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
19040        /// One per event, index into |intern_table| corresponding to the
19041        /// next_comm field of the event.
19042        #[prost(uint32, repeated, tag="6")]
19043        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
19044        /// Delta-encoded timestamps across all sched_waking events within this
19045        /// bundle. The first is absolute, each next one is relative to its
19046        /// predecessor.
19047        #[prost(uint64, repeated, tag="7")]
19048        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
19049        #[prost(int32, repeated, tag="8")]
19050        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
19051        #[prost(int32, repeated, tag="9")]
19052        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
19053        #[prost(int32, repeated, tag="10")]
19054        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
19055        /// One per event, index into |intern_table| corresponding to the
19056        /// comm field of the event.
19057        #[prost(uint32, repeated, tag="11")]
19058        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
19059        #[prost(uint32, repeated, tag="12")]
19060        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
19061    }
19062    /// Errors encountered during parsing of the raw ftrace data. In case of ring
19063    /// buffer layout errors, the parser skips the rest of the offending kernel
19064    /// buffer page and continues from the next page.
19065    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
19066    /// seen within the duration of the trace (even if the affected bundles get
19067    /// overwritten in ring buffer mode).
19068    #[derive(Clone, PartialEq, ::prost::Message)]
19069    pub struct FtraceError {
19070        /// Timestamp of the data that we're unable to parse, in the ftrace clock
19071        /// domain. Currently, we use the base timestamp of the tracing page
19072        /// containing the bad record rather than the time of the record itself.
19073        #[prost(uint64, optional, tag="1")]
19074        pub timestamp: ::core::option::Option<u64>,
19075        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
19076        pub status: ::core::option::Option<i32>,
19077    }
19078    /// Describes the serialised |FtraceEvent| protos for events not known at
19079    /// compile time, when using the |denser_generic_event_encoding| option.
19080    /// Addded in: perfetto v50.
19081    #[derive(Clone, PartialEq, ::prost::Message)]
19082    pub struct GenericEventDescriptor {
19083        /// submessage id within FtraceEvent described by |event_descriptor|.
19084        #[prost(int32, optional, tag="1")]
19085        pub field_id: ::core::option::Option<i32>,
19086        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
19087        /// The event name itself is in |event_descriptor.name|.
19088        #[prost(string, optional, tag="3")]
19089        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
19090        /// serialised DescriptorProto.
19091        #[prost(bytes="vec", optional, tag="2")]
19092        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19093    }
19094}
19095// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
19096
19097// Begin of protos/perfetto/trace/generic_kernel/generic_gpu_frequency.proto
19098
19099/// GenericGpuFrequencyEvent is the standard proto to capture GPU
19100/// frequency change events in a generic kernel implementation.
19101#[derive(Clone, PartialEq, ::prost::Message)]
19102pub struct GenericGpuFrequencyEvent {
19103    /// GPU on which the frequency change occurred.
19104    #[prost(uint32, optional, tag="1")]
19105    pub gpu_id: ::core::option::Option<u32>,
19106    /// Frequency (kHz) of the GPU.
19107    #[prost(uint32, optional, tag="2")]
19108    pub frequency_khz: ::core::option::Option<u32>,
19109}
19110// End of protos/perfetto/trace/generic_kernel/generic_gpu_frequency.proto
19111
19112// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
19113
19114/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
19115/// frequency change events in a generic kernel implementation.
19116#[derive(Clone, PartialEq, ::prost::Message)]
19117pub struct GenericKernelCpuFrequencyEvent {
19118    /// CPU in which the event occurred.
19119    #[prost(int32, optional, tag="1")]
19120    pub cpu: ::core::option::Option<i32>,
19121    /// Frequency (Hz) of the CPU.
19122    #[prost(int64, optional, tag="2")]
19123    pub freq_hz: ::core::option::Option<i64>,
19124}
19125// End of protos/perfetto/trace/generic_kernel/generic_power.proto
19126
19127// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
19128
19129/// GenericKernelTaskStateEvent is the standard proto to capture thread state
19130/// change events in a generic kernel implementation. This is mainly for the
19131/// case where scheduler events are not directly supported in the kernel's
19132/// tracing mechanism.
19133///
19134/// By capturing these task state events Perfetto is able to infer higher-level
19135/// events such as context switches and task waking events, providing as much
19136/// parity as possible with established tracing frameworks such as
19137/// Linux's ftrace.
19138#[derive(Clone, PartialEq, ::prost::Message)]
19139pub struct GenericKernelTaskStateEvent {
19140    /// CPU in which the event occurred.
19141    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
19142    /// no specific meaning to the cpu field in a non-running state event.
19143    #[prost(int32, optional, tag="1")]
19144    pub cpu: ::core::option::Option<i32>,
19145    /// Command name for the thread.
19146    #[prost(string, optional, tag="2")]
19147    pub comm: ::core::option::Option<::prost::alloc::string::String>,
19148    /// Thread id.
19149    #[prost(int64, optional, tag="3")]
19150    pub tid: ::core::option::Option<i64>,
19151    /// New state of the thread.
19152    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
19153    pub state: ::core::option::Option<i32>,
19154    /// Priority of the thread.
19155    /// This value is OS agnostic and should only be interpreted based on the
19156    /// kernel who emitted the message.
19157    #[prost(int32, optional, tag="5")]
19158    pub prio: ::core::option::Option<i32>,
19159}
19160/// Nested message and enum types in `GenericKernelTaskStateEvent`.
19161pub mod generic_kernel_task_state_event {
19162    /// TaskStateEnum represents the valid states of a thread.
19163    /// These states are a generic representation of the actual thread state and
19164    /// don't necessarily map one-to-one to the states the actual OS kernel
19165    /// tracks internally.
19166    ///
19167    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
19168    /// an error resulting in potential data loss.
19169    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19170    #[repr(i32)]
19171    pub enum TaskStateEnum {
19172        TaskStateUnknown = 0,
19173        TaskStateCreated = 1,
19174        TaskStateRunnable = 2,
19175        TaskStateRunning = 3,
19176        TaskStateInterruptibleSleep = 4,
19177        TaskStateUninterruptibleSleep = 5,
19178        TaskStateStopped = 6,
19179        TaskStateDead = 7,
19180        TaskStateDestroyed = 8,
19181    }
19182    impl TaskStateEnum {
19183        /// String value of the enum field names used in the ProtoBuf definition.
19184        ///
19185        /// The values are not transformed in any way and thus are considered stable
19186        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19187        pub fn as_str_name(&self) -> &'static str {
19188            match self {
19189                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
19190                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
19191                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
19192                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
19193                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
19194                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
19195                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
19196                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
19197                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
19198            }
19199        }
19200    }
19201}
19202/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
19203/// of a thread.
19204#[derive(Clone, PartialEq, ::prost::Message)]
19205pub struct GenericKernelTaskRenameEvent {
19206    /// Thread id.
19207    #[prost(int64, optional, tag="1")]
19208    pub tid: ::core::option::Option<i64>,
19209    /// New command name for the thread.
19210    #[prost(string, optional, tag="2")]
19211    pub comm: ::core::option::Option<::prost::alloc::string::String>,
19212}
19213/// Metadata about the processes and threads in the trace.
19214/// The main goal of this proto is to provide a generic kernel
19215/// implementation a mechanism to outline its process structure.
19216#[derive(Clone, PartialEq, ::prost::Message)]
19217pub struct GenericKernelProcessTree {
19218    /// List of processes and threads in the kernel. These lists are incremental
19219    /// and not exhaustive. A process and its threads might show up separately in
19220    /// different ProcessTree messages. A thread might not show up at all, if
19221    /// no sched switch activity was detected, for instance:
19222    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
19223    /// #1 { threads: [{tid: 12, pid: 10}] }
19224    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
19225    #[prost(message, repeated, tag="1")]
19226    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
19227    #[prost(message, repeated, tag="2")]
19228    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
19229}
19230/// Nested message and enum types in `GenericKernelProcessTree`.
19231pub mod generic_kernel_process_tree {
19232    /// Representation of a thread.
19233    #[derive(Clone, PartialEq, ::prost::Message)]
19234    pub struct Thread {
19235        /// Thread id.
19236        #[prost(int64, optional, tag="1")]
19237        pub tid: ::core::option::Option<i64>,
19238        /// Id of the parent process.
19239        #[prost(int64, optional, tag="2")]
19240        pub pid: ::core::option::Option<i64>,
19241        /// The command name of the thread.
19242        #[prost(string, optional, tag="3")]
19243        pub comm: ::core::option::Option<::prost::alloc::string::String>,
19244        /// True if thread is the main thread.
19245        #[prost(bool, optional, tag="4")]
19246        pub is_main_thread: ::core::option::Option<bool>,
19247        /// True if thread is an idle thread.
19248        #[prost(bool, optional, tag="5")]
19249        pub is_idle: ::core::option::Option<bool>,
19250    }
19251    /// Representation of a process.
19252    #[derive(Clone, PartialEq, ::prost::Message)]
19253    pub struct Process {
19254        /// Process id.
19255        #[prost(int64, optional, tag="1")]
19256        pub pid: ::core::option::Option<i64>,
19257        /// Parent process id.
19258        #[prost(int64, optional, tag="2")]
19259        pub ppid: ::core::option::Option<i64>,
19260        /// The command line of the process.
19261        /// If the cmdline has spaces in it, then we use the characters from
19262        /// position 0 to the first instance of the space char (' ') as the name
19263        /// of the process. If no spaces are present, then the entire cmdline is
19264        /// used as the name.
19265        #[prost(string, optional, tag="3")]
19266        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
19267    }
19268}
19269// End of protos/perfetto/trace/generic_kernel/generic_task.proto
19270
19271// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
19272
19273/// Events for emitting information about GPU counters.
19274///
19275/// There are two "modes" to use these protos:
19276///    1) Using GpuCounterDescriptor. This is the simplest way to use this proto
19277///       but has the limitation that counter ids are*global* so must only be
19278///       emitted by a single producer or requires coordination between different
19279///       producers. This is the mechanism which *must* be used by Android OEMS
19280///       to be complaint with CDD/CTS tests.
19281///    2) Using InternedGpuCounterDescriptor. This is generally recommended for
19282///       more complex use-cases involving multiple producers, multiple GPUs etc.
19283#[derive(Clone, PartialEq, ::prost::Message)]
19284pub struct GpuCounterEvent {
19285    #[prost(message, repeated, tag="2")]
19286    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
19287    /// Identifier for GPU in a multi-gpu device.
19288    ///
19289    /// If `counter_descriptor_iid` is specified, the `gpu_id` in
19290    /// `InternedGpuCounterDescriptor` takes precedence over this field.
19291    #[prost(int32, optional, tag="3")]
19292    pub gpu_id: ::core::option::Option<i32>,
19293    /// The specification for the GPU counters. Gives them information like the
19294    /// name of the counter, unit etc.
19295    #[prost(oneof="gpu_counter_event::Desc", tags="1, 4")]
19296    pub desc: ::core::option::Option<gpu_counter_event::Desc>,
19297}
19298/// Nested message and enum types in `GpuCounterEvent`.
19299pub mod gpu_counter_event {
19300    #[derive(Clone, PartialEq, ::prost::Message)]
19301    pub struct GpuCounter {
19302        /// required. Identifier for counter.
19303        #[prost(uint32, optional, tag="1")]
19304        pub counter_id: ::core::option::Option<u32>,
19305        /// required. Value of the counter.
19306        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
19307        pub value: ::core::option::Option<gpu_counter::Value>,
19308    }
19309    /// Nested message and enum types in `GpuCounter`.
19310    pub mod gpu_counter {
19311        /// required. Value of the counter.
19312        #[derive(Clone, PartialEq, ::prost::Oneof)]
19313        pub enum Value {
19314            #[prost(int64, tag="2")]
19315            IntValue(i64),
19316            #[prost(double, tag="3")]
19317            DoubleValue(f64),
19318        }
19319    }
19320    /// The specification for the GPU counters. Gives them information like the
19321    /// name of the counter, unit etc.
19322    #[derive(Clone, PartialEq, ::prost::Oneof)]
19323    pub enum Desc {
19324        /// Must be specified on first trace packet of each session if using mode 1.
19325        /// (e.g. if you're an Android GPU vendor).
19326        #[prost(message, tag="1")]
19327        CounterDescriptor(super::GpuCounterDescriptor),
19328        /// ID to a InternedGpuCounterDescriptor in InternedData. Must be specified
19329        /// on first trace packet of the trusted sequence if using mode 2.
19330        #[prost(uint64, tag="4")]
19331        CounterDescriptorIid(u64),
19332    }
19333}
19334/// Interned GPU counter descriptor for sequence-scoped counter specs.
19335#[derive(Clone, PartialEq, ::prost::Message)]
19336pub struct InternedGpuCounterDescriptor {
19337    #[prost(uint64, optional, tag="1")]
19338    pub iid: ::core::option::Option<u64>,
19339    #[prost(message, optional, tag="2")]
19340    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
19341    /// optional. Identifier for GPU in a multi-gpu device.
19342    #[prost(int32, optional, tag="3")]
19343    pub gpu_id: ::core::option::Option<i32>,
19344}
19345// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
19346
19347// Begin of protos/perfetto/trace/gpu/gpu_log.proto
19348
19349/// Message for logging events GPU data producer.
19350#[derive(Clone, PartialEq, ::prost::Message)]
19351pub struct GpuLog {
19352    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
19353    pub severity: ::core::option::Option<i32>,
19354    #[prost(string, optional, tag="2")]
19355    pub tag: ::core::option::Option<::prost::alloc::string::String>,
19356    #[prost(string, optional, tag="3")]
19357    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
19358}
19359/// Nested message and enum types in `GpuLog`.
19360pub mod gpu_log {
19361    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19362    #[repr(i32)]
19363    pub enum Severity {
19364        LogSeverityUnspecified = 0,
19365        LogSeverityVerbose = 1,
19366        LogSeverityDebug = 2,
19367        LogSeverityInfo = 3,
19368        LogSeverityWarning = 4,
19369        LogSeverityError = 5,
19370    }
19371    impl Severity {
19372        /// String value of the enum field names used in the ProtoBuf definition.
19373        ///
19374        /// The values are not transformed in any way and thus are considered stable
19375        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19376        pub fn as_str_name(&self) -> &'static str {
19377            match self {
19378                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
19379                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
19380                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
19381                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
19382                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
19383                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
19384            }
19385        }
19386    }
19387}
19388// End of protos/perfetto/trace/gpu/gpu_log.proto
19389
19390// Begin of protos/perfetto/trace/gpu/gpu_mem_event.proto
19391
19392/// Generated by Android's GpuService.
19393#[derive(Clone, PartialEq, ::prost::Message)]
19394pub struct GpuMemTotalEvent {
19395    #[prost(uint32, optional, tag="1")]
19396    pub gpu_id: ::core::option::Option<u32>,
19397    #[prost(uint32, optional, tag="2")]
19398    pub pid: ::core::option::Option<u32>,
19399    #[prost(uint64, optional, tag="3")]
19400    pub size: ::core::option::Option<u64>,
19401}
19402// End of protos/perfetto/trace/gpu/gpu_mem_event.proto
19403
19404// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
19405
19406/// next id: 22
19407#[derive(Clone, PartialEq, ::prost::Message)]
19408pub struct GpuRenderStageEvent {
19409    /// required. Unique ID for the event.
19410    #[prost(uint64, optional, tag="1")]
19411    pub event_id: ::core::option::Option<u64>,
19412    /// optional. Duration of the event in nanoseconds. If unset, this is a
19413    /// single time point event.
19414    #[prost(uint64, optional, tag="2")]
19415    pub duration: ::core::option::Option<u64>,
19416    /// required. ID to a hardware queue description in the specifications.
19417    /// InternedGpuRenderStageSpecification
19418    #[prost(uint64, optional, tag="13")]
19419    pub hw_queue_iid: ::core::option::Option<u64>,
19420    /// required. ID to a render stage description in the specifications.
19421    /// InternedGpuRenderStageSpecification
19422    #[prost(uint64, optional, tag="14")]
19423    pub stage_iid: ::core::option::Option<u64>,
19424    /// optional. Identifier for GPU in a multi-gpu device.
19425    #[prost(int32, optional, tag="11")]
19426    pub gpu_id: ::core::option::Option<i32>,
19427    /// required. Graphics context for the event.
19428    /// For OpenGL, this is the GL context.
19429    /// For Vulkan, this is the VkDevice.
19430    #[prost(uint64, optional, tag="5")]
19431    pub context: ::core::option::Option<u64>,
19432    /// optional. The render target for this event.
19433    /// For OpenGL, this is the GL frame buffer handle.
19434    /// For Vulkan, this is the VkFrameBuffer handle.
19435    #[prost(uint64, optional, tag="8")]
19436    pub render_target_handle: ::core::option::Option<u64>,
19437    /// optional. Submission ID generated by the UMD.
19438    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
19439    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
19440    /// to a single API submission should share the same ID.
19441    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
19442    #[prost(uint32, optional, tag="10")]
19443    pub submission_id: ::core::option::Option<u32>,
19444    #[prost(message, repeated, tag="6")]
19445    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
19446    // VULKAN SPECIFICS
19447
19448    /// optional. The Vulkan render pass handle.
19449    #[prost(uint64, optional, tag="9")]
19450    pub render_pass_handle: ::core::option::Option<u64>,
19451    /// optional. An ID for the render pass instance. This is used to correlate
19452    /// different events on different queues produced by the same Vulkan render
19453    /// pass instance.
19454    #[prost(uint64, optional, tag="16")]
19455    pub render_pass_instance_id: ::core::option::Option<u64>,
19456    /// optional. A bit mask representing which render subpasses contributed to
19457    /// this render stage event.  Subpass index 0 is represented by setting the
19458    /// LSB of the mask.  Additional mask can be added for subpass index greater
19459    /// than 63.
19460    #[prost(uint64, repeated, packed="false", tag="15")]
19461    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
19462    /// optional. The Vulkan command buffer handle.
19463    #[prost(uint64, optional, tag="12")]
19464    pub command_buffer_handle: ::core::option::Option<u64>,
19465    /// Event IDs of other GpuRenderStageEvents that this event
19466    /// had to wait on before it could run.
19467    #[prost(uint64, repeated, packed="false", tag="18")]
19468    pub event_wait_ids: ::prost::alloc::vec::Vec<u64>,
19469    /// optional. ID to a compute kernel description in the interned data.
19470    /// InternedComputeKernel
19471    #[prost(uint64, optional, tag="19")]
19472    pub kernel_iid: ::core::option::Option<u64>,
19473    /// optional. Compute kernel launch parameters for this event.
19474    #[prost(message, optional, tag="21")]
19475    pub launch: ::core::option::Option<gpu_render_stage_event::ComputeKernelLaunch>,
19476    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
19477    /// InternedGpuRenderStageSpecification instead.
19478    #[deprecated]
19479    #[prost(message, optional, tag="7")]
19480    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
19481    /// Deprecated. Use hw_queue_iid instead;
19482    #[deprecated]
19483    #[prost(int32, optional, tag="3")]
19484    pub hw_queue_id: ::core::option::Option<i32>,
19485    /// Deprecated. Use stage_iid instead;
19486    #[deprecated]
19487    #[prost(int32, optional, tag="4")]
19488    pub stage_id: ::core::option::Option<i32>,
19489    /// optional. Custom name for this render stage event. When set, this
19490    /// provides a name for the stage instead of using the name from the stage
19491    /// specification.
19492    #[prost(oneof="gpu_render_stage_event::NameField", tags="17, 20")]
19493    pub name_field: ::core::option::Option<gpu_render_stage_event::NameField>,
19494}
19495/// Nested message and enum types in `GpuRenderStageEvent`.
19496pub mod gpu_render_stage_event {
19497    /// optional. Additional data for the user. This may include attributes for
19498    /// the event like resource ids, shaders, etc.
19499    #[derive(Clone, PartialEq, ::prost::Message)]
19500    pub struct ExtraData {
19501        #[prost(string, optional, tag="1")]
19502        pub name: ::core::option::Option<::prost::alloc::string::String>,
19503        #[prost(string, optional, tag="2")]
19504        pub value: ::core::option::Option<::prost::alloc::string::String>,
19505    }
19506    /// 3D unsigned integer vector for grid and workgroup dimensions.
19507    #[derive(Clone, PartialEq, ::prost::Message)]
19508    pub struct Dim3 {
19509        #[prost(uint32, optional, tag="1")]
19510        pub x: ::core::option::Option<u32>,
19511        #[prost(uint32, optional, tag="2")]
19512        pub y: ::core::option::Option<u32>,
19513        #[prost(uint32, optional, tag="3")]
19514        pub z: ::core::option::Option<u32>,
19515    }
19516    /// Typed key/value argument for extending compute kernel descriptions
19517    /// and launch parameters with custom data.
19518    #[derive(Clone, PartialEq, ::prost::Message)]
19519    pub struct ExtraComputeArg {
19520        #[prost(oneof="extra_compute_arg::NameField", tags="1, 2")]
19521        pub name_field: ::core::option::Option<extra_compute_arg::NameField>,
19522        #[prost(oneof="extra_compute_arg::Value", tags="3, 4, 5, 6, 7")]
19523        pub value: ::core::option::Option<extra_compute_arg::Value>,
19524    }
19525    /// Nested message and enum types in `ExtraComputeArg`.
19526    pub mod extra_compute_arg {
19527        #[derive(Clone, PartialEq, ::prost::Oneof)]
19528        pub enum NameField {
19529            /// Interned InternedComputeArgName.
19530            #[prost(uint64, tag="1")]
19531            NameIid(u64),
19532            /// Non-interned variant.
19533            #[prost(string, tag="2")]
19534            Name(::prost::alloc::string::String),
19535        }
19536        #[derive(Clone, PartialEq, ::prost::Oneof)]
19537        pub enum Value {
19538            #[prost(int64, tag="3")]
19539            IntValue(i64),
19540            #[prost(uint64, tag="4")]
19541            UintValue(u64),
19542            #[prost(double, tag="5")]
19543            DoubleValue(f64),
19544            #[prost(string, tag="6")]
19545            StringValue(::prost::alloc::string::String),
19546            /// Interned InternedString via debug_annotation_string_values.
19547            #[prost(uint64, tag="7")]
19548            StringValueIid(u64),
19549        }
19550    }
19551    /// Compute kernel launch parameters for a single dispatch.
19552    #[derive(Clone, PartialEq, ::prost::Message)]
19553    pub struct ComputeKernelLaunch {
19554        /// Grid dimensions (number of workgroups in each dimension).
19555        #[prost(message, optional, tag="1")]
19556        pub grid_size: ::core::option::Option<Dim3>,
19557        /// Workgroup dimensions (number of threads per workgroup in each dimension).
19558        #[prost(message, optional, tag="2")]
19559        pub workgroup_size: ::core::option::Option<Dim3>,
19560        /// Additional typed launch parameters (e.g. registers_per_thread,
19561        /// shared_mem_dynamic, shared_mem_static).
19562        #[prost(message, repeated, tag="3")]
19563        pub args: ::prost::alloc::vec::Vec<ExtraComputeArg>,
19564    }
19565    // DEPRECATED
19566
19567    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
19568    /// The first trace packet of each session should include a Specifications
19569    /// to enumerate *all* IDs that will be used. The timestamp of this packet
19570    /// must be earlier than all other packets. Only one packet with Specifications
19571    /// is expected.
19572    #[derive(Clone, PartialEq, ::prost::Message)]
19573    pub struct Specifications {
19574        #[prost(message, optional, tag="1")]
19575        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
19576        /// Labels to categorize the hw Queue this event goes on.
19577        #[prost(message, repeated, tag="2")]
19578        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
19579        /// Labels to categorize render stage(binning, render, compute etc).
19580        #[prost(message, repeated, tag="3")]
19581        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
19582    }
19583    /// Nested message and enum types in `Specifications`.
19584    pub mod specifications {
19585        #[derive(Clone, PartialEq, ::prost::Message)]
19586        pub struct ContextSpec {
19587            #[prost(uint64, optional, tag="1")]
19588            pub context: ::core::option::Option<u64>,
19589            #[prost(int32, optional, tag="2")]
19590            pub pid: ::core::option::Option<i32>,
19591        }
19592        #[derive(Clone, PartialEq, ::prost::Message)]
19593        pub struct Description {
19594            #[prost(string, optional, tag="1")]
19595            pub name: ::core::option::Option<::prost::alloc::string::String>,
19596            #[prost(string, optional, tag="2")]
19597            pub description: ::core::option::Option<::prost::alloc::string::String>,
19598        }
19599    }
19600    /// optional. Custom name for this render stage event. When set, this
19601    /// provides a name for the stage instead of using the name from the stage
19602    /// specification.
19603    #[derive(Clone, PartialEq, ::prost::Oneof)]
19604    pub enum NameField {
19605        #[prost(string, tag="17")]
19606        Name(::prost::alloc::string::String),
19607        /// Interned event name. Refers to EventName in InternedData.
19608        #[prost(uint64, tag="20")]
19609        NameIid(u64),
19610    }
19611}
19612// Interned data.
19613
19614/// The iid is the numeric value of either the GL Context or the VkDevice
19615/// handle.
19616#[derive(Clone, PartialEq, ::prost::Message)]
19617pub struct InternedGraphicsContext {
19618    #[prost(uint64, optional, tag="1")]
19619    pub iid: ::core::option::Option<u64>,
19620    #[prost(int32, optional, tag="2")]
19621    pub pid: ::core::option::Option<i32>,
19622    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
19623    pub api: ::core::option::Option<i32>,
19624}
19625/// Nested message and enum types in `InternedGraphicsContext`.
19626pub mod interned_graphics_context {
19627    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19628    #[repr(i32)]
19629    pub enum Api {
19630        Undefined = 0,
19631        OpenGl = 1,
19632        Vulkan = 2,
19633        OpenCl = 3,
19634        Cuda = 4,
19635        Hip = 5,
19636    }
19637    impl Api {
19638        /// String value of the enum field names used in the ProtoBuf definition.
19639        ///
19640        /// The values are not transformed in any way and thus are considered stable
19641        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19642        pub fn as_str_name(&self) -> &'static str {
19643            match self {
19644                Api::Undefined => "UNDEFINED",
19645                Api::OpenGl => "OPEN_GL",
19646                Api::Vulkan => "VULKAN",
19647                Api::OpenCl => "OPEN_CL",
19648                Api::Cuda => "CUDA",
19649                Api::Hip => "HIP",
19650            }
19651        }
19652    }
19653}
19654#[derive(Clone, PartialEq, ::prost::Message)]
19655pub struct InternedGpuRenderStageSpecification {
19656    #[prost(uint64, optional, tag="1")]
19657    pub iid: ::core::option::Option<u64>,
19658    #[prost(string, optional, tag="2")]
19659    pub name: ::core::option::Option<::prost::alloc::string::String>,
19660    #[prost(string, optional, tag="3")]
19661    pub description: ::core::option::Option<::prost::alloc::string::String>,
19662    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
19663    pub category: ::core::option::Option<i32>,
19664}
19665/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
19666pub mod interned_gpu_render_stage_specification {
19667    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19668    #[repr(i32)]
19669    pub enum RenderStageCategory {
19670        Other = 0,
19671        Graphics = 1,
19672        Compute = 2,
19673    }
19674    impl RenderStageCategory {
19675        /// String value of the enum field names used in the ProtoBuf definition.
19676        ///
19677        /// The values are not transformed in any way and thus are considered stable
19678        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19679        pub fn as_str_name(&self) -> &'static str {
19680            match self {
19681                RenderStageCategory::Other => "OTHER",
19682                RenderStageCategory::Graphics => "GRAPHICS",
19683                RenderStageCategory::Compute => "COMPUTE",
19684            }
19685        }
19686    }
19687}
19688#[derive(Clone, PartialEq, ::prost::Message)]
19689pub struct InternedComputeKernel {
19690    #[prost(uint64, optional, tag="1")]
19691    pub iid: ::core::option::Option<u64>,
19692    #[prost(string, optional, tag="2")]
19693    pub name: ::core::option::Option<::prost::alloc::string::String>,
19694    #[prost(string, optional, tag="3")]
19695    pub demangled_name: ::core::option::Option<::prost::alloc::string::String>,
19696    #[prost(string, optional, tag="4")]
19697    pub arch: ::core::option::Option<::prost::alloc::string::String>,
19698    /// Additional typed kernel attributes (e.g. static resource limits).
19699    #[prost(message, repeated, tag="5")]
19700    pub args: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraComputeArg>,
19701}
19702#[derive(Clone, PartialEq, ::prost::Message)]
19703pub struct InternedComputeArgName {
19704    #[prost(uint64, optional, tag="1")]
19705    pub iid: ::core::option::Option<u64>,
19706    #[prost(string, optional, tag="2")]
19707    pub name: ::core::option::Option<::prost::alloc::string::String>,
19708}
19709// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
19710
19711// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
19712
19713/// Message for recording the Vulkan call.
19714#[derive(Clone, PartialEq, ::prost::Message)]
19715pub struct VulkanApiEvent {
19716    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
19717    pub event: ::core::option::Option<vulkan_api_event::Event>,
19718}
19719/// Nested message and enum types in `VulkanApiEvent`.
19720pub mod vulkan_api_event {
19721    /// For recording vkSetDebugUtilsObjectNameEXT and
19722    /// vkDebugMarkerSetObjectNameEXT
19723    #[derive(Clone, PartialEq, ::prost::Message)]
19724    pub struct VkDebugUtilsObjectName {
19725        #[prost(uint32, optional, tag="1")]
19726        pub pid: ::core::option::Option<u32>,
19727        #[prost(uint64, optional, tag="2")]
19728        pub vk_device: ::core::option::Option<u64>,
19729        /// VkObjectType.  Value must match
19730        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
19731        #[prost(int32, optional, tag="3")]
19732        pub object_type: ::core::option::Option<i32>,
19733        #[prost(uint64, optional, tag="4")]
19734        pub object: ::core::option::Option<u64>,
19735        #[prost(string, optional, tag="5")]
19736        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
19737    }
19738    /// For recording vkQueueSubmit call.
19739    #[derive(Clone, PartialEq, ::prost::Message)]
19740    pub struct VkQueueSubmit {
19741        #[prost(uint64, optional, tag="1")]
19742        pub duration_ns: ::core::option::Option<u64>,
19743        #[prost(uint32, optional, tag="2")]
19744        pub pid: ::core::option::Option<u32>,
19745        #[prost(uint32, optional, tag="3")]
19746        pub tid: ::core::option::Option<u32>,
19747        #[prost(uint64, optional, tag="4")]
19748        pub vk_queue: ::core::option::Option<u64>,
19749        #[prost(uint64, repeated, packed="false", tag="5")]
19750        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
19751        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
19752        /// submission_id must match GpuRenderStageEvent.submission_id if the
19753        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
19754        #[prost(uint32, optional, tag="6")]
19755        pub submission_id: ::core::option::Option<u32>,
19756    }
19757    #[derive(Clone, PartialEq, ::prost::Oneof)]
19758    pub enum Event {
19759        #[prost(message, tag="1")]
19760        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
19761        #[prost(message, tag="2")]
19762        VkQueueSubmit(VkQueueSubmit),
19763    }
19764}
19765// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
19766
19767// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
19768
19769/// All the information that cannot be sent within a VulkanMemoryEvent message,
19770/// are sent as annotations to the main memory event. One example is the
19771/// properties of the object that consumes the allocated memory, for example, a
19772/// buffer or an image.
19773/// key_iid and string_iid are both interned strings. Original string value is
19774/// stored in vulkan_memory_keys from
19775/// protos/perfetto/trace/interned_data/interned_data.proto.
19776#[derive(Clone, PartialEq, ::prost::Message)]
19777pub struct VulkanMemoryEventAnnotation {
19778    #[prost(uint64, optional, tag="1")]
19779    pub key_iid: ::core::option::Option<u64>,
19780    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
19781    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
19782}
19783/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
19784pub mod vulkan_memory_event_annotation {
19785    #[derive(Clone, PartialEq, ::prost::Oneof)]
19786    pub enum Value {
19787        #[prost(int64, tag="2")]
19788        IntValue(i64),
19789        #[prost(double, tag="3")]
19790        DoubleValue(f64),
19791        #[prost(uint64, tag="4")]
19792        StringIid(u64),
19793    }
19794}
19795/// Each VulkanMemoryEvent encompasses information regarding one single function
19796/// call that results in reserving, binding or freeing host or GPU memory. There
19797/// is a special message type, ANNOTATIONS, which is used to communicate
19798/// information that are not directly related to a memory event, nonetheless are
19799/// essential to understand the memory usage. An example is the size and memory
19800/// types of the memory heaps.
19801///
19802/// Next reserved id: 10 (up to 15).
19803/// Next id: 21.
19804#[derive(Clone, PartialEq, ::prost::Message)]
19805pub struct VulkanMemoryEvent {
19806    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
19807    pub source: ::core::option::Option<i32>,
19808    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
19809    pub operation: ::core::option::Option<i32>,
19810    #[prost(int64, optional, tag="3")]
19811    pub timestamp: ::core::option::Option<i64>,
19812    #[prost(uint32, optional, tag="4")]
19813    pub pid: ::core::option::Option<u32>,
19814    #[prost(fixed64, optional, tag="5")]
19815    pub memory_address: ::core::option::Option<u64>,
19816    #[prost(uint64, optional, tag="6")]
19817    pub memory_size: ::core::option::Option<u64>,
19818    /// Interned string. Original string value is stored in function_names from
19819    /// protos/perfetto/trace/interned_data/interned_data.proto.
19820    #[prost(uint64, optional, tag="7")]
19821    pub caller_iid: ::core::option::Option<u64>,
19822    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
19823    pub allocation_scope: ::core::option::Option<i32>,
19824    /// Extra related information, e.g., create configs, etc.
19825    #[prost(message, repeated, tag="9")]
19826    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
19827    /// Field IDs used for device memory (low sampling rate)
19828    #[prost(fixed64, optional, tag="16")]
19829    pub device: ::core::option::Option<u64>,
19830    #[prost(fixed64, optional, tag="17")]
19831    pub device_memory: ::core::option::Option<u64>,
19832    #[prost(uint32, optional, tag="18")]
19833    pub memory_type: ::core::option::Option<u32>,
19834    #[prost(uint32, optional, tag="19")]
19835    pub heap: ::core::option::Option<u32>,
19836    #[prost(fixed64, optional, tag="20")]
19837    pub object_handle: ::core::option::Option<u64>,
19838}
19839/// Nested message and enum types in `VulkanMemoryEvent`.
19840pub mod vulkan_memory_event {
19841    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19842    #[repr(i32)]
19843    pub enum Source {
19844        Unspecified = 0,
19845        Driver = 1,
19846        Device = 2,
19847        DeviceMemory = 3,
19848        Buffer = 4,
19849        Image = 5,
19850    }
19851    impl Source {
19852        /// String value of the enum field names used in the ProtoBuf definition.
19853        ///
19854        /// The values are not transformed in any way and thus are considered stable
19855        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19856        pub fn as_str_name(&self) -> &'static str {
19857            match self {
19858                Source::Unspecified => "SOURCE_UNSPECIFIED",
19859                Source::Driver => "SOURCE_DRIVER",
19860                Source::Device => "SOURCE_DEVICE",
19861                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
19862                Source::Buffer => "SOURCE_BUFFER",
19863                Source::Image => "SOURCE_IMAGE",
19864            }
19865        }
19866    }
19867    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19868    #[repr(i32)]
19869    pub enum Operation {
19870        OpUnspecified = 0,
19871        /// alloc, create
19872        OpCreate = 1,
19873        /// free, destroy(non-bound)
19874        OpDestroy = 2,
19875        /// bind buffer and image
19876        OpBind = 3,
19877        /// destroy (bound)
19878        OpDestroyBound = 4,
19879        /// only annotations
19880        OpAnnotations = 5,
19881    }
19882    impl Operation {
19883        /// String value of the enum field names used in the ProtoBuf definition.
19884        ///
19885        /// The values are not transformed in any way and thus are considered stable
19886        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19887        pub fn as_str_name(&self) -> &'static str {
19888            match self {
19889                Operation::OpUnspecified => "OP_UNSPECIFIED",
19890                Operation::OpCreate => "OP_CREATE",
19891                Operation::OpDestroy => "OP_DESTROY",
19892                Operation::OpBind => "OP_BIND",
19893                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
19894                Operation::OpAnnotations => "OP_ANNOTATIONS",
19895            }
19896        }
19897    }
19898    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19899    #[repr(i32)]
19900    pub enum AllocationScope {
19901        ScopeUnspecified = 0,
19902        ScopeCommand = 1,
19903        ScopeObject = 2,
19904        ScopeCache = 3,
19905        ScopeDevice = 4,
19906        ScopeInstance = 5,
19907    }
19908    impl AllocationScope {
19909        /// String value of the enum field names used in the ProtoBuf definition.
19910        ///
19911        /// The values are not transformed in any way and thus are considered stable
19912        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19913        pub fn as_str_name(&self) -> &'static str {
19914            match self {
19915                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19916                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
19917                AllocationScope::ScopeObject => "SCOPE_OBJECT",
19918                AllocationScope::ScopeCache => "SCOPE_CACHE",
19919                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
19920                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
19921            }
19922        }
19923    }
19924}
19925// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
19926
19927// Begin of protos/perfetto/trace/profiling/profile_common.proto
19928
19929/// The interning fields in this file can refer to 2 different intern tables,
19930/// depending on the message they are used in. If the interned fields are present
19931/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
19932/// should be used. If the intered fields are present in the
19933/// StreamingProfilePacket proto, then the intern tables included in all of the
19934/// previous InternedData message with same sequence ID should be used.
19935/// TODO(fmayer): Move to the intern tables to a common location.
19936#[derive(Clone, PartialEq, ::prost::Message)]
19937pub struct InternedString {
19938    /// Interning key. Starts from 1, 0 is the same as "not set".
19939    #[prost(uint64, optional, tag="1")]
19940    pub iid: ::core::option::Option<u64>,
19941    /// The actual string.
19942    #[prost(bytes="vec", optional, tag="2")]
19943    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19944}
19945/// Source line info.
19946#[derive(Clone, PartialEq, ::prost::Message)]
19947pub struct Line {
19948    #[prost(string, optional, tag="1")]
19949    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19950    #[prost(string, optional, tag="2")]
19951    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
19952    #[prost(uint32, optional, tag="3")]
19953    pub line_number: ::core::option::Option<u32>,
19954}
19955/// Symbols for a given address in a module.
19956#[derive(Clone, PartialEq, ::prost::Message)]
19957pub struct AddressSymbols {
19958    #[prost(uint64, optional, tag="1")]
19959    pub address: ::core::option::Option<u64>,
19960    /// Source lines that correspond to this address.
19961    ///
19962    /// These are repeated because when inlining happens, multiple functions'
19963    /// frames can be at a single address. Imagine function Foo calling the
19964    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
19965    /// both Foo and the std::vector<int> constructor when we symbolize the
19966    /// address.
19967    #[prost(message, repeated, tag="2")]
19968    pub lines: ::prost::alloc::vec::Vec<Line>,
19969}
19970/// Symbols for addresses seen in a module.
19971/// Used in re-symbolisation of complete traces.
19972#[derive(Clone, PartialEq, ::prost::Message)]
19973pub struct ModuleSymbols {
19974    /// Fully qualified path to the mapping.
19975    /// E.g. /system/lib64/libc.so.
19976    #[prost(string, optional, tag="1")]
19977    pub path: ::core::option::Option<::prost::alloc::string::String>,
19978    /// .note.gnu.build-id on Linux (not hex encoded).
19979    /// uuid on MacOS.
19980    /// Module GUID on Windows.
19981    #[prost(string, optional, tag="2")]
19982    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
19983    #[prost(message, repeated, tag="3")]
19984    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
19985}
19986#[derive(Clone, PartialEq, ::prost::Message)]
19987pub struct Mapping {
19988    /// Interning key.
19989    /// Starts from 1, 0 is the same as "not set".
19990    #[prost(uint64, optional, tag="1")]
19991    pub iid: ::core::option::Option<u64>,
19992    /// Interning key.
19993    /// Starts from 1, 0 is the same as "not set".
19994    #[prost(uint64, optional, tag="2")]
19995    pub build_id: ::core::option::Option<u64>,
19996    // The linker may create multiple memory mappings for the same shared
19997    // library.
19998    // This is so that the ELF header is mapped as read only, while the
19999    // executable memory is mapped as executable only.
20000    // The details of this depend on the linker, a possible mapping of an ELF
20001    // file is this:
20002    //          +----------------------+
20003    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
20004    //          +---------+------------+
20005    //          |         |
20006    //          | read    | executable
20007    //          v mapping v mapping
20008    //          +----------------------+
20009    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
20010    //          +------------------+---+
20011    //          ^         ^        ^
20012    //          +         +        +
20013    //        start     exact    relpc
20014    //        offset   offset    0x1800
20015    //        0x0000   0x1000
20016    //
20017    // exact_offset is the offset into the library file of this mapping.
20018    // start_offset is the offset into the library file of the first mapping
20019    // for that library. For native libraries (.so files) this should be 0.
20020
20021    /// This is not set on Android 10.
20022    #[prost(uint64, optional, tag="8")]
20023    pub exact_offset: ::core::option::Option<u64>,
20024    #[prost(uint64, optional, tag="3")]
20025    pub start_offset: ::core::option::Option<u64>,
20026    #[prost(uint64, optional, tag="4")]
20027    pub start: ::core::option::Option<u64>,
20028    #[prost(uint64, optional, tag="5")]
20029    pub end: ::core::option::Option<u64>,
20030    /// Libunwindstack-specific concept, not to be confused with bionic linker's
20031    /// notion of load_bias. Needed to correct relative pc addresses (as produced
20032    /// by libunwindstack) when doing offline resymbolisation.
20033    ///
20034    /// For an executable ELF PT_LOAD segment, this is:
20035    ///    p_vaddr - p_offset
20036    ///
20037    /// Where p_offset means that the code is at that offset into the ELF file on
20038    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
20039    /// to where the linker loads the ELF into the address space. For most ELFs,
20040    /// the two values are identical and therefore load_bias is zero.
20041    #[prost(uint64, optional, tag="6")]
20042    pub load_bias: ::core::option::Option<u64>,
20043    /// E.g. ["system", "lib64", "libc.so"]
20044    /// id of string.
20045    #[prost(uint64, repeated, packed="false", tag="7")]
20046    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
20047}
20048#[derive(Clone, PartialEq, ::prost::Message)]
20049pub struct Frame {
20050    /// Interning key. Starts from 1, 0 is the same as "not set".
20051    #[prost(uint64, optional, tag="1")]
20052    pub iid: ::core::option::Option<u64>,
20053    /// E.g. "fopen"
20054    /// id of string.
20055    #[prost(uint64, optional, tag="2")]
20056    pub function_name_id: ::core::option::Option<u64>,
20057    /// The mapping in which this frame's instruction pointer resides.
20058    /// iid of Mapping.iid.
20059    ///
20060    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
20061    /// this frame has no associated memory mapping (e.g., symbolized frames
20062    /// without address information).
20063    ///
20064    /// Starts from 1, 0 is the same as "not set".
20065    #[prost(uint64, optional, tag="3")]
20066    pub mapping_id: ::core::option::Option<u64>,
20067    /// Instruction pointer relative to the start of the mapping.
20068    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
20069    #[prost(uint64, optional, tag="4")]
20070    pub rel_pc: ::core::option::Option<u64>,
20071    /// Source file path for this frame.
20072    /// This is typically set during online symbolization when symbol information
20073    /// is available at trace collection time. If not set, source file paths may be
20074    /// added later via offline symbolization (see ModuleSymbols).
20075    ///
20076    /// Starts from 1, 0 is the same as "not set".
20077    ///
20078    /// iid of InternedData.source_paths.
20079    #[prost(uint64, optional, tag="5")]
20080    pub source_path_iid: ::core::option::Option<u64>,
20081    /// Line number in the source file for this frame.
20082    /// This is typically set during online symbolization when symbol information
20083    /// is available at trace collection time. If not set, line numbers may be
20084    /// added later via offline symbolization (see ModuleSymbols).
20085    #[prost(uint32, optional, tag="6")]
20086    pub line_number: ::core::option::Option<u32>,
20087}
20088#[derive(Clone, PartialEq, ::prost::Message)]
20089pub struct Callstack {
20090    /// Interning key. Starts from 1, 0 is the same as "not set".
20091    #[prost(uint64, optional, tag="1")]
20092    pub iid: ::core::option::Option<u64>,
20093    /// Frames of this callstack. Bottom frame first.
20094    #[prost(uint64, repeated, packed="false", tag="2")]
20095    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
20096}
20097// End of protos/perfetto/trace/profiling/profile_common.proto
20098
20099// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
20100
20101#[derive(Clone, PartialEq, ::prost::Message)]
20102pub struct HistogramName {
20103    #[prost(uint64, optional, tag="1")]
20104    pub iid: ::core::option::Option<u64>,
20105    #[prost(string, optional, tag="2")]
20106    pub name: ::core::option::Option<::prost::alloc::string::String>,
20107}
20108/// An individual histogram sample logged via Chrome's UMA metrics system.
20109#[derive(Clone, PartialEq, ::prost::Message)]
20110pub struct ChromeHistogramSample {
20111    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
20112    /// both must be present.
20113    #[prost(uint64, optional, tag="1")]
20114    pub name_hash: ::core::option::Option<u64>,
20115    #[prost(string, optional, tag="2")]
20116    pub name: ::core::option::Option<::prost::alloc::string::String>,
20117    #[prost(int64, optional, tag="3")]
20118    pub sample: ::core::option::Option<i64>,
20119    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
20120    #[prost(uint64, optional, tag="4")]
20121    pub name_iid: ::core::option::Option<u64>,
20122}
20123// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
20124
20125// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
20126
20127/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
20128/// macros. Users of the Perfetto SDK should prefer to use the
20129/// perfetto::TracedValue API to fill these protos, rather than filling them
20130/// manually.
20131///
20132/// Debug annotations are intended for debug use and are not considered a stable
20133/// API of the trace contents. Trace-based metrics that use debug annotation
20134/// values are prone to breakage, so please rely on typed TrackEvent fields for
20135/// these instead.
20136///
20137/// DebugAnnotations support nested arrays and dictionaries. Each entry is
20138/// encoded as a single DebugAnnotation message. Only dictionary entries
20139/// set the "name" field. The TrackEvent message forms an implicit root
20140/// dictionary.
20141///
20142/// Example TrackEvent with nested annotations:
20143///    track_event {
20144///      debug_annotations {
20145///        name: "foo"
20146///        dict_entries {
20147///          name: "a"
20148///          bool_value: true
20149///        }
20150///        dict_entries {
20151///          name: "b"
20152///          int_value: 123
20153///        }
20154///      }
20155///      debug_annotations {
20156///        name: "bar"
20157///        array_values {
20158///          string_value: "hello"
20159///        }
20160///        array_values {
20161///          string_value: "world"
20162///        }
20163///      }
20164///    }
20165///
20166/// Next ID: 18.
20167/// Reserved ID: 15
20168#[derive(Clone, PartialEq, ::prost::Message)]
20169pub struct DebugAnnotation {
20170    #[prost(bytes="vec", optional, tag="14")]
20171    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20172    #[prost(message, repeated, tag="11")]
20173    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
20174    #[prost(message, repeated, tag="12")]
20175    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
20176    /// Name fields are set only for dictionary entries.
20177    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
20178    pub name_field: ::core::option::Option<debug_annotation::NameField>,
20179    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
20180    pub value: ::core::option::Option<debug_annotation::Value>,
20181    /// Used to embed arbitrary proto messages (which are also typically used to
20182    /// represent typed TrackEvent arguments). |proto_type_name| or
20183    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20184    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20185    /// proto messages. See |TracedValue::WriteProto| for more details.
20186    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
20187    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
20188}
20189/// Nested message and enum types in `DebugAnnotation`.
20190pub mod debug_annotation {
20191    /// Deprecated legacy way to use nested values. Only kept for
20192    /// backwards-compatibility in TraceProcessor. May be removed in the future -
20193    /// code filling protos should use |dict_entries| and |array_values| instead.
20194    #[derive(Clone, PartialEq, ::prost::Message)]
20195    pub struct NestedValue {
20196        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
20197        pub nested_type: ::core::option::Option<i32>,
20198        #[prost(string, repeated, tag="2")]
20199        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20200        #[prost(message, repeated, tag="3")]
20201        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
20202        #[prost(message, repeated, tag="4")]
20203        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
20204        #[prost(int64, optional, tag="5")]
20205        pub int_value: ::core::option::Option<i64>,
20206        #[prost(double, optional, tag="6")]
20207        pub double_value: ::core::option::Option<f64>,
20208        #[prost(bool, optional, tag="7")]
20209        pub bool_value: ::core::option::Option<bool>,
20210        #[prost(string, optional, tag="8")]
20211        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
20212    }
20213    /// Nested message and enum types in `NestedValue`.
20214    pub mod nested_value {
20215        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20216        #[repr(i32)]
20217        pub enum NestedType {
20218            /// leaf value.
20219            Unspecified = 0,
20220            Dict = 1,
20221            Array = 2,
20222        }
20223        impl NestedType {
20224            /// String value of the enum field names used in the ProtoBuf definition.
20225            ///
20226            /// The values are not transformed in any way and thus are considered stable
20227            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20228            pub fn as_str_name(&self) -> &'static str {
20229                match self {
20230                    NestedType::Unspecified => "UNSPECIFIED",
20231                    NestedType::Dict => "DICT",
20232                    NestedType::Array => "ARRAY",
20233                }
20234            }
20235        }
20236    }
20237    /// Name fields are set only for dictionary entries.
20238    #[derive(Clone, PartialEq, ::prost::Oneof)]
20239    pub enum NameField {
20240        /// interned DebugAnnotationName.
20241        #[prost(uint64, tag="1")]
20242        NameIid(u64),
20243        /// non-interned variant.
20244        #[prost(string, tag="10")]
20245        Name(::prost::alloc::string::String),
20246    }
20247    #[derive(Clone, PartialEq, ::prost::Oneof)]
20248    pub enum Value {
20249        #[prost(bool, tag="2")]
20250        BoolValue(bool),
20251        #[prost(uint64, tag="3")]
20252        UintValue(u64),
20253        #[prost(int64, tag="4")]
20254        IntValue(i64),
20255        #[prost(double, tag="5")]
20256        DoubleValue(f64),
20257        /// Pointers are stored in a separate type as the JSON output treats them
20258        /// differently from other uint64 values.
20259        #[prost(uint64, tag="7")]
20260        PointerValue(u64),
20261        /// Deprecated. Use dict_entries / array_values instead.
20262        #[prost(message, tag="8")]
20263        NestedValue(NestedValue),
20264        /// Legacy instrumentation may not support conversion of nested data to
20265        /// NestedValue yet.
20266        #[prost(string, tag="9")]
20267        LegacyJsonValue(::prost::alloc::string::String),
20268        /// interned and non-interned variants of strings.
20269        #[prost(string, tag="6")]
20270        StringValue(::prost::alloc::string::String),
20271        /// Corresponds to |debug_annotation_string_values| field in InternedData.
20272        #[prost(uint64, tag="17")]
20273        StringValueIid(u64),
20274    }
20275    /// Used to embed arbitrary proto messages (which are also typically used to
20276    /// represent typed TrackEvent arguments). |proto_type_name| or
20277    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20278    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20279    /// proto messages. See |TracedValue::WriteProto| for more details.
20280    #[derive(Clone, PartialEq, ::prost::Oneof)]
20281    pub enum ProtoTypeDescriptor {
20282        #[prost(string, tag="16")]
20283        ProtoTypeName(::prost::alloc::string::String),
20284        /// interned DebugAnnotationValueTypeName.
20285        #[prost(uint64, tag="13")]
20286        ProtoTypeNameIid(u64),
20287    }
20288}
20289// --------------------
20290// Interned data types:
20291// --------------------
20292
20293#[derive(Clone, PartialEq, ::prost::Message)]
20294pub struct DebugAnnotationName {
20295    #[prost(uint64, optional, tag="1")]
20296    pub iid: ::core::option::Option<u64>,
20297    #[prost(string, optional, tag="2")]
20298    pub name: ::core::option::Option<::prost::alloc::string::String>,
20299}
20300/// See the |proto_type_descriptor| comment.
20301#[derive(Clone, PartialEq, ::prost::Message)]
20302pub struct DebugAnnotationValueTypeName {
20303    #[prost(uint64, optional, tag="1")]
20304    pub iid: ::core::option::Option<u64>,
20305    #[prost(string, optional, tag="2")]
20306    pub name: ::core::option::Option<::prost::alloc::string::String>,
20307}
20308// End of protos/perfetto/trace/track_event/debug_annotation.proto
20309
20310// Begin of protos/perfetto/trace/track_event/log_message.proto
20311
20312#[derive(Clone, PartialEq, ::prost::Message)]
20313pub struct LogMessage {
20314    /// interned SourceLocation.
20315    #[prost(uint64, optional, tag="1")]
20316    pub source_location_iid: ::core::option::Option<u64>,
20317    /// interned LogMessageBody.
20318    #[prost(uint64, optional, tag="2")]
20319    pub body_iid: ::core::option::Option<u64>,
20320    #[prost(enumeration="log_message::Priority", optional, tag="3")]
20321    pub prio: ::core::option::Option<i32>,
20322}
20323/// Nested message and enum types in `LogMessage`.
20324pub mod log_message {
20325    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20326    #[repr(i32)]
20327    pub enum Priority {
20328        PrioUnspecified = 0,
20329        PrioUnused = 1,
20330        PrioVerbose = 2,
20331        PrioDebug = 3,
20332        PrioInfo = 4,
20333        PrioWarn = 5,
20334        PrioError = 6,
20335        PrioFatal = 7,
20336    }
20337    impl Priority {
20338        /// String value of the enum field names used in the ProtoBuf definition.
20339        ///
20340        /// The values are not transformed in any way and thus are considered stable
20341        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20342        pub fn as_str_name(&self) -> &'static str {
20343            match self {
20344                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
20345                Priority::PrioUnused => "PRIO_UNUSED",
20346                Priority::PrioVerbose => "PRIO_VERBOSE",
20347                Priority::PrioDebug => "PRIO_DEBUG",
20348                Priority::PrioInfo => "PRIO_INFO",
20349                Priority::PrioWarn => "PRIO_WARN",
20350                Priority::PrioError => "PRIO_ERROR",
20351                Priority::PrioFatal => "PRIO_FATAL",
20352            }
20353        }
20354    }
20355}
20356// --------------------
20357// Interned data types:
20358// --------------------
20359
20360#[derive(Clone, PartialEq, ::prost::Message)]
20361pub struct LogMessageBody {
20362    #[prost(uint64, optional, tag="1")]
20363    pub iid: ::core::option::Option<u64>,
20364    #[prost(string, optional, tag="2")]
20365    pub body: ::core::option::Option<::prost::alloc::string::String>,
20366}
20367// End of protos/perfetto/trace/track_event/log_message.proto
20368
20369// Begin of protos/perfetto/trace/track_event/source_location.proto
20370
20371// --------------------
20372// Interned data types:
20373// --------------------
20374
20375/// A source location, represented as a native symbol.
20376/// This is similar to `message Frame` from
20377/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
20378/// source code locations (for example in track event args), not stack frames.
20379#[derive(Clone, PartialEq, ::prost::Message)]
20380pub struct UnsymbolizedSourceLocation {
20381    #[prost(uint64, optional, tag="1")]
20382    pub iid: ::core::option::Option<u64>,
20383    #[prost(uint64, optional, tag="2")]
20384    pub mapping_id: ::core::option::Option<u64>,
20385    #[prost(uint64, optional, tag="3")]
20386    pub rel_pc: ::core::option::Option<u64>,
20387}
20388#[derive(Clone, PartialEq, ::prost::Message)]
20389pub struct SourceLocation {
20390    #[prost(uint64, optional, tag="1")]
20391    pub iid: ::core::option::Option<u64>,
20392    #[prost(string, optional, tag="2")]
20393    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20394    #[prost(string, optional, tag="3")]
20395    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20396    #[prost(uint32, optional, tag="4")]
20397    pub line_number: ::core::option::Option<u32>,
20398}
20399// End of protos/perfetto/trace/track_event/source_location.proto
20400
20401// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
20402
20403/// A list of processes connected to the tracing service.
20404#[derive(Clone, PartialEq, ::prost::Message)]
20405pub struct ChromeActiveProcesses {
20406    #[prost(int32, repeated, packed="false", tag="1")]
20407    pub pid: ::prost::alloc::vec::Vec<i32>,
20408}
20409// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
20410
20411/// Trace event arguments for application state changes.
20412#[derive(Clone, PartialEq, ::prost::Message)]
20413pub struct ChromeApplicationStateInfo {
20414    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
20415    pub application_state: ::core::option::Option<i32>,
20416}
20417/// Nested message and enum types in `ChromeApplicationStateInfo`.
20418pub mod chrome_application_state_info {
20419    /// Enum definition taken from:
20420    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
20421    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20422    #[repr(i32)]
20423    pub enum ChromeApplicationState {
20424        ApplicationStateUnknown = 0,
20425        ApplicationStateHasRunningActivities = 1,
20426        ApplicationStateHasPausedActivities = 2,
20427        ApplicationStateHasStoppedActivities = 3,
20428        ApplicationStateHasDestroyedActivities = 4,
20429    }
20430    impl ChromeApplicationState {
20431        /// String value of the enum field names used in the ProtoBuf definition.
20432        ///
20433        /// The values are not transformed in any way and thus are considered stable
20434        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20435        pub fn as_str_name(&self) -> &'static str {
20436            match self {
20437                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
20438                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
20439                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
20440                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
20441                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
20442            }
20443        }
20444    }
20445}
20446/// Next id: 18
20447#[derive(Clone, PartialEq, ::prost::Message)]
20448pub struct ChromeCompositorSchedulerState {
20449    #[prost(message, optional, tag="1")]
20450    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
20451    #[prost(bool, optional, tag="2")]
20452    pub observing_begin_frame_source: ::core::option::Option<bool>,
20453    #[prost(bool, optional, tag="3")]
20454    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
20455    #[prost(bool, optional, tag="4")]
20456    pub pending_begin_frame_task: ::core::option::Option<bool>,
20457    #[prost(bool, optional, tag="5")]
20458    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
20459    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
20460    pub inside_action: ::core::option::Option<i32>,
20461    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
20462    pub deadline_mode: ::core::option::Option<i32>,
20463    #[prost(int64, optional, tag="9")]
20464    pub deadline_us: ::core::option::Option<i64>,
20465    #[prost(int64, optional, tag="10")]
20466    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
20467    #[prost(int64, optional, tag="11")]
20468    pub now_us: ::core::option::Option<i64>,
20469    #[prost(int64, optional, tag="12")]
20470    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
20471    #[prost(int64, optional, tag="13")]
20472    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
20473    #[prost(message, optional, tag="14")]
20474    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
20475    #[prost(message, optional, tag="15")]
20476    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
20477    #[prost(message, optional, tag="16")]
20478    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
20479    #[prost(message, optional, tag="17")]
20480    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
20481}
20482/// Nested message and enum types in `ChromeCompositorSchedulerState`.
20483pub mod chrome_compositor_scheduler_state {
20484    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20485    #[repr(i32)]
20486    pub enum BeginImplFrameDeadlineMode {
20487        DeadlineModeUnspecified = 0,
20488        DeadlineModeNone = 1,
20489        DeadlineModeImmediate = 2,
20490        DeadlineModeRegular = 3,
20491        DeadlineModeLate = 4,
20492        DeadlineModeBlocked = 5,
20493    }
20494    impl BeginImplFrameDeadlineMode {
20495        /// String value of the enum field names used in the ProtoBuf definition.
20496        ///
20497        /// The values are not transformed in any way and thus are considered stable
20498        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20499        pub fn as_str_name(&self) -> &'static str {
20500            match self {
20501                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
20502                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
20503                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
20504                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
20505                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
20506                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
20507            }
20508        }
20509    }
20510}
20511/// Describes the current values stored in the Chrome Compositor state machine.
20512/// Next id: 3
20513#[derive(Clone, PartialEq, ::prost::Message)]
20514pub struct ChromeCompositorStateMachine {
20515    #[prost(message, optional, tag="1")]
20516    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
20517    #[prost(message, optional, tag="2")]
20518    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
20519}
20520/// Nested message and enum types in `ChromeCompositorStateMachine`.
20521pub mod chrome_compositor_state_machine {
20522    /// Next id: 6
20523    #[derive(Clone, PartialEq, ::prost::Message)]
20524    pub struct MajorState {
20525        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
20526        pub next_action: ::core::option::Option<i32>,
20527        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
20528        pub begin_impl_frame_state: ::core::option::Option<i32>,
20529        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
20530        pub begin_main_frame_state: ::core::option::Option<i32>,
20531        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
20532        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
20533        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
20534        pub forced_redraw_state: ::core::option::Option<i32>,
20535    }
20536    /// Nested message and enum types in `MajorState`.
20537    pub mod major_state {
20538        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20539        #[repr(i32)]
20540        pub enum BeginImplFrameState {
20541            BeginImplFrameUnspecified = 0,
20542            BeginImplFrameIdle = 1,
20543            BeginImplFrameInsideBeginFrame = 2,
20544            BeginImplFrameInsideDeadline = 3,
20545        }
20546        impl BeginImplFrameState {
20547            /// String value of the enum field names used in the ProtoBuf definition.
20548            ///
20549            /// The values are not transformed in any way and thus are considered stable
20550            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20551            pub fn as_str_name(&self) -> &'static str {
20552                match self {
20553                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
20554                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
20555                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
20556                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
20557                }
20558            }
20559        }
20560        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20561        #[repr(i32)]
20562        pub enum BeginMainFrameState {
20563            BeginMainFrameUnspecified = 0,
20564            BeginMainFrameIdle = 1,
20565            BeginMainFrameSent = 2,
20566            BeginMainFrameReadyToCommit = 3,
20567        }
20568        impl BeginMainFrameState {
20569            /// String value of the enum field names used in the ProtoBuf definition.
20570            ///
20571            /// The values are not transformed in any way and thus are considered stable
20572            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20573            pub fn as_str_name(&self) -> &'static str {
20574                match self {
20575                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
20576                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
20577                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
20578                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
20579                }
20580            }
20581        }
20582        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20583        #[repr(i32)]
20584        pub enum LayerTreeFrameSinkState {
20585            LayerTreeFrameUnspecified = 0,
20586            LayerTreeFrameNone = 1,
20587            LayerTreeFrameActive = 2,
20588            LayerTreeFrameCreating = 3,
20589            LayerTreeFrameWaitingForFirstCommit = 4,
20590            LayerTreeFrameWaitingForFirstActivation = 5,
20591        }
20592        impl LayerTreeFrameSinkState {
20593            /// String value of the enum field names used in the ProtoBuf definition.
20594            ///
20595            /// The values are not transformed in any way and thus are considered stable
20596            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20597            pub fn as_str_name(&self) -> &'static str {
20598                match self {
20599                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
20600                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
20601                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
20602                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
20603                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
20604                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
20605                }
20606            }
20607        }
20608        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20609        #[repr(i32)]
20610        pub enum ForcedRedrawOnTimeoutState {
20611            ForcedRedrawUnspecified = 0,
20612            ForcedRedrawIdle = 1,
20613            ForcedRedrawWaitingForCommit = 2,
20614            ForcedRedrawWaitingForActivation = 3,
20615            ForcedRedrawWaitingForDraw = 4,
20616        }
20617        impl ForcedRedrawOnTimeoutState {
20618            /// String value of the enum field names used in the ProtoBuf definition.
20619            ///
20620            /// The values are not transformed in any way and thus are considered stable
20621            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20622            pub fn as_str_name(&self) -> &'static str {
20623                match self {
20624                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
20625                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
20626                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
20627                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
20628                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
20629                }
20630            }
20631        }
20632    }
20633    /// Next id: 47
20634    #[derive(Clone, PartialEq, ::prost::Message)]
20635    pub struct MinorState {
20636        #[prost(int32, optional, tag="1")]
20637        pub commit_count: ::core::option::Option<i32>,
20638        #[prost(int32, optional, tag="2")]
20639        pub current_frame_number: ::core::option::Option<i32>,
20640        #[prost(int32, optional, tag="3")]
20641        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
20642        #[prost(int32, optional, tag="4")]
20643        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
20644        #[prost(int32, optional, tag="5")]
20645        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
20646        #[prost(bool, optional, tag="6")]
20647        pub did_draw: ::core::option::Option<bool>,
20648        #[prost(bool, optional, tag="7")]
20649        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
20650        #[prost(bool, optional, tag="8")]
20651        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
20652        #[prost(bool, optional, tag="9")]
20653        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
20654        #[prost(bool, optional, tag="10")]
20655        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
20656        #[prost(bool, optional, tag="11")]
20657        pub did_commit_during_frame: ::core::option::Option<bool>,
20658        #[prost(bool, optional, tag="12")]
20659        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
20660        #[prost(bool, optional, tag="13")]
20661        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
20662        #[prost(bool, optional, tag="14")]
20663        pub did_prepare_tiles: ::core::option::Option<bool>,
20664        #[prost(int32, optional, tag="15")]
20665        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
20666        #[prost(int32, optional, tag="16")]
20667        pub pending_submit_frames: ::core::option::Option<i32>,
20668        #[prost(int32, optional, tag="17")]
20669        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
20670        #[prost(bool, optional, tag="18")]
20671        pub needs_redraw: ::core::option::Option<bool>,
20672        #[prost(bool, optional, tag="19")]
20673        pub needs_prepare_tiles: ::core::option::Option<bool>,
20674        #[prost(bool, optional, tag="20")]
20675        pub needs_begin_main_frame: ::core::option::Option<bool>,
20676        #[prost(bool, optional, tag="21")]
20677        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
20678        #[prost(bool, optional, tag="22")]
20679        pub visible: ::core::option::Option<bool>,
20680        #[prost(bool, optional, tag="23")]
20681        pub begin_frame_source_paused: ::core::option::Option<bool>,
20682        #[prost(bool, optional, tag="24")]
20683        pub can_draw: ::core::option::Option<bool>,
20684        #[prost(bool, optional, tag="25")]
20685        pub resourceless_draw: ::core::option::Option<bool>,
20686        #[prost(bool, optional, tag="26")]
20687        pub has_pending_tree: ::core::option::Option<bool>,
20688        #[prost(bool, optional, tag="27")]
20689        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
20690        #[prost(bool, optional, tag="28")]
20691        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
20692        #[prost(bool, optional, tag="29")]
20693        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
20694        #[prost(bool, optional, tag="30")]
20695        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
20696        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
20697        pub tree_priority: ::core::option::Option<i32>,
20698        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
20699        pub scroll_handler_state: ::core::option::Option<i32>,
20700        #[prost(bool, optional, tag="33")]
20701        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
20702        #[prost(bool, optional, tag="34")]
20703        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
20704        #[prost(bool, optional, tag="36")]
20705        pub video_needs_begin_frames: ::core::option::Option<bool>,
20706        #[prost(bool, optional, tag="37")]
20707        pub defer_begin_main_frame: ::core::option::Option<bool>,
20708        #[prost(bool, optional, tag="38")]
20709        pub last_commit_had_no_updates: ::core::option::Option<bool>,
20710        #[prost(bool, optional, tag="39")]
20711        pub did_draw_in_last_frame: ::core::option::Option<bool>,
20712        #[prost(bool, optional, tag="40")]
20713        pub did_submit_in_last_frame: ::core::option::Option<bool>,
20714        #[prost(bool, optional, tag="41")]
20715        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
20716        #[prost(bool, optional, tag="42")]
20717        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
20718        #[prost(bool, optional, tag="43")]
20719        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
20720        #[prost(bool, optional, tag="44")]
20721        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
20722        #[prost(bool, optional, tag="45")]
20723        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
20724        #[prost(bool, optional, tag="46")]
20725        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
20726    }
20727    /// Nested message and enum types in `MinorState`.
20728    pub mod minor_state {
20729        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20730        #[repr(i32)]
20731        pub enum TreePriority {
20732            Unspecified = 0,
20733            SamePriorityForBothTrees = 1,
20734            SmoothnessTakesPriority = 2,
20735            NewContentTakesPriority = 3,
20736        }
20737        impl TreePriority {
20738            /// String value of the enum field names used in the ProtoBuf definition.
20739            ///
20740            /// The values are not transformed in any way and thus are considered stable
20741            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20742            pub fn as_str_name(&self) -> &'static str {
20743                match self {
20744                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
20745                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
20746                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
20747                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
20748                }
20749            }
20750        }
20751        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20752        #[repr(i32)]
20753        pub enum ScrollHandlerState {
20754            ScrollHandlerUnspecified = 0,
20755            ScrollAffectsScrollHandler = 1,
20756            ScrollDoesNotAffectScrollHandler = 2,
20757        }
20758        impl ScrollHandlerState {
20759            /// String value of the enum field names used in the ProtoBuf definition.
20760            ///
20761            /// The values are not transformed in any way and thus are considered stable
20762            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20763            pub fn as_str_name(&self) -> &'static str {
20764                match self {
20765                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
20766                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
20767                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
20768                }
20769            }
20770        }
20771    }
20772}
20773/// Next id: 13
20774#[derive(Clone, PartialEq, ::prost::Message)]
20775pub struct BeginFrameArgs {
20776    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
20777    pub r#type: ::core::option::Option<i32>,
20778    #[prost(uint64, optional, tag="2")]
20779    pub source_id: ::core::option::Option<u64>,
20780    #[prost(uint64, optional, tag="3")]
20781    pub sequence_number: ::core::option::Option<u64>,
20782    #[prost(int64, optional, tag="4")]
20783    pub frame_time_us: ::core::option::Option<i64>,
20784    #[prost(int64, optional, tag="5")]
20785    pub deadline_us: ::core::option::Option<i64>,
20786    #[prost(int64, optional, tag="6")]
20787    pub interval_delta_us: ::core::option::Option<i64>,
20788    #[prost(bool, optional, tag="7")]
20789    pub on_critical_path: ::core::option::Option<bool>,
20790    #[prost(bool, optional, tag="8")]
20791    pub animate_only: ::core::option::Option<bool>,
20792    #[prost(int64, optional, tag="12")]
20793    pub frames_throttled_since_last: ::core::option::Option<i64>,
20794    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
20795    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
20796}
20797/// Nested message and enum types in `BeginFrameArgs`.
20798pub mod begin_frame_args {
20799    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
20800    /// drop this in the proto representation, and instead make the JSON format
20801    /// "subtype" field become the type field.
20802    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20803    #[repr(i32)]
20804    pub enum BeginFrameArgsType {
20805        Unspecified = 0,
20806        Invalid = 1,
20807        Normal = 2,
20808        Missed = 3,
20809    }
20810    impl BeginFrameArgsType {
20811        /// String value of the enum field names used in the ProtoBuf definition.
20812        ///
20813        /// The values are not transformed in any way and thus are considered stable
20814        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20815        pub fn as_str_name(&self) -> &'static str {
20816            match self {
20817                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
20818                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
20819                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
20820                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
20821            }
20822        }
20823    }
20824    #[derive(Clone, PartialEq, ::prost::Oneof)]
20825    pub enum CreatedFrom {
20826        /// The interned SourceLocation.
20827        #[prost(uint64, tag="9")]
20828        SourceLocationIid(u64),
20829        /// The SourceLocation that this args was created from.
20830        /// TODO(nuskos): Eventually we will support interning inside of
20831        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
20832        /// since we can emit it as part of the InternedData message. When we can
20833        /// remove this |source_location|.
20834        #[prost(message, tag="10")]
20835        SourceLocation(super::SourceLocation),
20836    }
20837}
20838/// Next id: 7
20839#[derive(Clone, PartialEq, ::prost::Message)]
20840pub struct BeginImplFrameArgs {
20841    #[prost(int64, optional, tag="1")]
20842    pub updated_at_us: ::core::option::Option<i64>,
20843    #[prost(int64, optional, tag="2")]
20844    pub finished_at_us: ::core::option::Option<i64>,
20845    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
20846    pub state: ::core::option::Option<i32>,
20847    #[prost(message, optional, tag="6")]
20848    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
20849    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
20850    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
20851}
20852/// Nested message and enum types in `BeginImplFrameArgs`.
20853pub mod begin_impl_frame_args {
20854    #[derive(Clone, PartialEq, ::prost::Message)]
20855    pub struct TimestampsInUs {
20856        #[prost(int64, optional, tag="1")]
20857        pub interval_delta: ::core::option::Option<i64>,
20858        #[prost(int64, optional, tag="2")]
20859        pub now_to_deadline_delta: ::core::option::Option<i64>,
20860        #[prost(int64, optional, tag="3")]
20861        pub frame_time_to_now_delta: ::core::option::Option<i64>,
20862        #[prost(int64, optional, tag="4")]
20863        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
20864        #[prost(int64, optional, tag="5")]
20865        pub now: ::core::option::Option<i64>,
20866        #[prost(int64, optional, tag="6")]
20867        pub frame_time: ::core::option::Option<i64>,
20868        #[prost(int64, optional, tag="7")]
20869        pub deadline: ::core::option::Option<i64>,
20870    }
20871    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20872    #[repr(i32)]
20873    pub enum State {
20874        BeginFrameFinished = 0,
20875        BeginFrameUsing = 1,
20876    }
20877    impl State {
20878        /// String value of the enum field names used in the ProtoBuf definition.
20879        ///
20880        /// The values are not transformed in any way and thus are considered stable
20881        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20882        pub fn as_str_name(&self) -> &'static str {
20883            match self {
20884                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
20885                State::BeginFrameUsing => "BEGIN_FRAME_USING",
20886            }
20887        }
20888    }
20889    #[derive(Clone, PartialEq, ::prost::Oneof)]
20890    pub enum Args {
20891        /// Only set if |state| is BEGIN_FRAME_FINISHED.
20892        #[prost(message, tag="4")]
20893        CurrentArgs(super::BeginFrameArgs),
20894        /// Only set if |state| is BEGIN_FRAME_USING.
20895        #[prost(message, tag="5")]
20896        LastArgs(super::BeginFrameArgs),
20897    }
20898}
20899#[derive(Clone, PartialEq, ::prost::Message)]
20900pub struct BeginFrameObserverState {
20901    #[prost(int64, optional, tag="1")]
20902    pub dropped_begin_frame_args: ::core::option::Option<i64>,
20903    #[prost(message, optional, tag="2")]
20904    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20905}
20906#[derive(Clone, PartialEq, ::prost::Message)]
20907pub struct BeginFrameSourceState {
20908    #[prost(uint32, optional, tag="1")]
20909    pub source_id: ::core::option::Option<u32>,
20910    #[prost(bool, optional, tag="2")]
20911    pub paused: ::core::option::Option<bool>,
20912    #[prost(uint32, optional, tag="3")]
20913    pub num_observers: ::core::option::Option<u32>,
20914    #[prost(message, optional, tag="4")]
20915    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20916}
20917#[derive(Clone, PartialEq, ::prost::Message)]
20918pub struct CompositorTimingHistory {
20919    #[prost(int64, optional, tag="1")]
20920    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
20921    #[prost(int64, optional, tag="2")]
20922    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
20923    #[prost(int64, optional, tag="3")]
20924    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
20925    #[prost(int64, optional, tag="4")]
20926    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
20927    #[prost(int64, optional, tag="5")]
20928    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
20929    #[prost(int64, optional, tag="6")]
20930    pub activate_estimate_delta_us: ::core::option::Option<i64>,
20931    #[prost(int64, optional, tag="7")]
20932    pub draw_estimate_delta_us: ::core::option::Option<i64>,
20933}
20934// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
20935
20936// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
20937
20938/// Details about ContentSettings trace events.
20939#[derive(Clone, PartialEq, ::prost::Message)]
20940pub struct ChromeContentSettingsEventInfo {
20941    /// The number of user defined hostname patterns for content settings at
20942    /// browser start. Similar to UMA histogram
20943    /// 'ContentSettings.NumberOfExceptions'.
20944    #[prost(uint32, optional, tag="1")]
20945    pub number_of_exceptions: ::core::option::Option<u32>,
20946}
20947// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20948
20949/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
20950/// in
20951/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20952/// instead.
20953#[derive(Clone, PartialEq, ::prost::Message)]
20954pub struct ChromeFrameReporter {
20955    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
20956    pub state: ::core::option::Option<i32>,
20957    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
20958    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
20959    pub reason: ::core::option::Option<i32>,
20960    #[prost(uint64, optional, tag="3")]
20961    pub frame_source: ::core::option::Option<u64>,
20962    #[prost(uint64, optional, tag="4")]
20963    pub frame_sequence: ::core::option::Option<u64>,
20964    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
20965    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
20966    /// smoothness.
20967    #[prost(bool, optional, tag="5")]
20968    pub affects_smoothness: ::core::option::Option<bool>,
20969    /// The type of active scroll.
20970    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
20971    pub scroll_state: ::core::option::Option<i32>,
20972    /// If any main thread animation is active during this frame.
20973    #[prost(bool, optional, tag="7")]
20974    pub has_main_animation: ::core::option::Option<bool>,
20975    /// If any compositor thread animation is active during this frame.
20976    #[prost(bool, optional, tag="8")]
20977    pub has_compositor_animation: ::core::option::Option<bool>,
20978    /// If any touch-driven UX (not scroll) is active during this frame.
20979    #[prost(bool, optional, tag="9")]
20980    pub has_smooth_input_main: ::core::option::Option<bool>,
20981    /// Whether the frame contained any missing content (i.e. whether there was
20982    /// checkerboarding in the frame).  If has_missing_content,
20983    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
20984    /// values, has_missing_content should equal checkerboarded_needs_raster ||
20985    /// checkerboarded_needs_record.
20986    #[prost(bool, optional, tag="10")]
20987    pub has_missing_content: ::core::option::Option<bool>,
20988    /// The id of layer_tree_host that the frame has been produced for.
20989    #[prost(uint64, optional, tag="11")]
20990    pub layer_tree_host_id: ::core::option::Option<u64>,
20991    /// If total latency of PipelineReporter exceeds a certain limit.
20992    #[prost(bool, optional, tag="12")]
20993    pub has_high_latency: ::core::option::Option<bool>,
20994    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
20995    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
20996    /// (i.e. dropped frames when there are no partial compositor updates).
20997    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
20998    pub frame_type: ::core::option::Option<i32>,
20999    /// The breakdown stage of PipelineReporter that is most likely accountable for
21000    /// high latency.
21001    #[prost(string, repeated, tag="14")]
21002    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21003    /// Whether the frame contained any content that is not fully rastered.
21004    #[prost(bool, optional, tag="15")]
21005    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
21006    /// Whether the frame contained any content that is not fully recorded.
21007    #[prost(bool, optional, tag="16")]
21008    pub checkerboarded_needs_record: ::core::option::Option<bool>,
21009    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
21010    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
21011    #[prost(int64, optional, tag="17")]
21012    pub surface_frame_trace_id: ::core::option::Option<i64>,
21013    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
21014    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
21015    #[prost(int64, optional, tag="18")]
21016    pub display_trace_id: ::core::option::Option<i64>,
21017}
21018/// Nested message and enum types in `ChromeFrameReporter`.
21019pub mod chrome_frame_reporter {
21020    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21021    #[repr(i32)]
21022    pub enum State {
21023        /// The frame did not have any updates to present.
21024        NoUpdateDesired = 0,
21025        /// The frame presented all the desired updates (i.e. any updates requested
21026        /// from both the compositor thread and main-threads were handled).
21027        PresentedAll = 1,
21028        /// The frame was presented with some updates, but also missed some updates
21029        /// (e.g. missed updates from the main-thread, but included updates from the
21030        /// compositor thread).
21031        PresentedPartial = 2,
21032        /// The frame was dropped, i.e. some updates were desired for the frame, but
21033        /// was not presented.
21034        Dropped = 3,
21035    }
21036    impl State {
21037        /// String value of the enum field names used in the ProtoBuf definition.
21038        ///
21039        /// The values are not transformed in any way and thus are considered stable
21040        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21041        pub fn as_str_name(&self) -> &'static str {
21042            match self {
21043                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
21044                State::PresentedAll => "STATE_PRESENTED_ALL",
21045                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
21046                State::Dropped => "STATE_DROPPED",
21047            }
21048        }
21049    }
21050    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21051    #[repr(i32)]
21052    pub enum FrameDropReason {
21053        ReasonUnspecified = 0,
21054        /// Frame was dropped by the display-compositor.
21055        /// The display-compositor may drop a frame some times (e.g. the frame missed
21056        /// the deadline, or was blocked on surface-sync, etc.)
21057        ReasonDisplayCompositor = 1,
21058        /// Frame was dropped because of the main-thread.
21059        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
21060        /// is running expensive javascript, or doing a lot of layout updates, etc.
21061        ReasonMainThread = 2,
21062        /// Frame was dropped by the client compositor.
21063        /// The client compositor can drop some frames too (e.g. attempting to
21064        /// recover latency, missing the deadline, etc.).
21065        ReasonClientCompositor = 3,
21066    }
21067    impl FrameDropReason {
21068        /// String value of the enum field names used in the ProtoBuf definition.
21069        ///
21070        /// The values are not transformed in any way and thus are considered stable
21071        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21072        pub fn as_str_name(&self) -> &'static str {
21073            match self {
21074                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
21075                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
21076                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
21077                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
21078            }
21079        }
21080    }
21081    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21082    #[repr(i32)]
21083    pub enum ScrollState {
21084        ScrollNone = 0,
21085        ScrollMainThread = 1,
21086        ScrollCompositorThread = 2,
21087        ScrollRaster = 3,
21088        /// Used when it can't be determined whether a scroll is in progress or not.
21089        ScrollUnknown = 4,
21090    }
21091    impl ScrollState {
21092        /// String value of the enum field names used in the ProtoBuf definition.
21093        ///
21094        /// The values are not transformed in any way and thus are considered stable
21095        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21096        pub fn as_str_name(&self) -> &'static str {
21097            match self {
21098                ScrollState::ScrollNone => "SCROLL_NONE",
21099                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
21100                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
21101                ScrollState::ScrollRaster => "SCROLL_RASTER",
21102                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
21103            }
21104        }
21105    }
21106    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21107    #[repr(i32)]
21108    pub enum FrameType {
21109        Forked = 0,
21110        Backfill = 1,
21111    }
21112    impl FrameType {
21113        /// String value of the enum field names used in the ProtoBuf definition.
21114        ///
21115        /// The values are not transformed in any way and thus are considered stable
21116        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21117        pub fn as_str_name(&self) -> &'static str {
21118            match self {
21119                FrameType::Forked => "FORKED",
21120                FrameType::Backfill => "BACKFILL",
21121            }
21122        }
21123    }
21124}
21125// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
21126
21127// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
21128
21129/// Details about one of Chrome's keyed services associated with the event.
21130#[derive(Clone, PartialEq, ::prost::Message)]
21131pub struct ChromeKeyedService {
21132    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
21133    /// Chrome, these are static strings known at compile time).
21134    #[prost(string, optional, tag="1")]
21135    pub name: ::core::option::Option<::prost::alloc::string::String>,
21136}
21137// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
21138
21139// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
21140
21141#[derive(Clone, PartialEq, ::prost::Message)]
21142pub struct ChromeLatencyInfo {
21143    #[prost(int64, optional, tag="1")]
21144    pub trace_id: ::core::option::Option<i64>,
21145    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
21146    pub step: ::core::option::Option<i32>,
21147    #[prost(int32, optional, tag="3")]
21148    pub frame_tree_node_id: ::core::option::Option<i32>,
21149    #[prost(message, repeated, tag="4")]
21150    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
21151    #[prost(bool, optional, tag="5")]
21152    pub is_coalesced: ::core::option::Option<bool>,
21153    #[prost(int64, optional, tag="6")]
21154    pub gesture_scroll_id: ::core::option::Option<i64>,
21155    #[prost(int64, optional, tag="7")]
21156    pub touch_id: ::core::option::Option<i64>,
21157    /// The type of input corresponding to this `ChromeLatencyInfo`.
21158    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
21159    pub input_type: ::core::option::Option<i32>,
21160}
21161/// Nested message and enum types in `ChromeLatencyInfo`.
21162pub mod chrome_latency_info {
21163    #[derive(Clone, PartialEq, ::prost::Message)]
21164    pub struct ComponentInfo {
21165        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
21166        pub component_type: ::core::option::Option<i32>,
21167        /// Microsecond timestamp in CLOCK_MONOTONIC domain
21168        #[prost(uint64, optional, tag="2")]
21169        pub time_us: ::core::option::Option<u64>,
21170    }
21171    /// NEXT ID: 12
21172    /// All step are optional but the enum is ordered (not by number) below in the
21173    /// order we expect them to appear if they are emitted in trace in a blocking
21174    /// fashion.
21175    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21176    #[repr(i32)]
21177    pub enum Step {
21178        Unspecified = 0,
21179        /// Emitted on the browser main thread.
21180        SendInputEventUi = 3,
21181        /// Happens on the renderer's compositor.
21182        HandleInputEventImpl = 5,
21183        DidHandleInputAndOverscroll = 8,
21184        /// Occurs on the Renderer's main thread.
21185        HandleInputEventMain = 4,
21186        MainThreadScrollUpdate = 2,
21187        HandleInputEventMainCommit = 1,
21188        /// Could be emitted on both the renderer's main OR compositor.
21189        HandledInputEventMainOrImpl = 9,
21190        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
21191        /// renderer's compositor and this will be emitted.
21192        HandledInputEventImpl = 10,
21193        /// Renderer's compositor.
21194        SwapBuffers = 6,
21195        /// Happens on the VizCompositor in the GPU process.
21196        DrawAndSwap = 7,
21197        /// Happens on the GPU main thread after the swap has completed.
21198        ///
21199        /// See above for NEXT ID, enum steps are not ordered by tag number.
21200        FinishedSwapBuffers = 11,
21201    }
21202    impl Step {
21203        /// String value of the enum field names used in the ProtoBuf definition.
21204        ///
21205        /// The values are not transformed in any way and thus are considered stable
21206        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21207        pub fn as_str_name(&self) -> &'static str {
21208            match self {
21209                Step::Unspecified => "STEP_UNSPECIFIED",
21210                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
21211                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
21212                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
21213                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
21214                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
21215                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
21216                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
21217                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
21218                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
21219                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
21220                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
21221            }
21222        }
21223    }
21224    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
21225    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
21226    /// practices.
21227    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21228    #[repr(i32)]
21229    pub enum LatencyComponentType {
21230        ComponentUnspecified = 0,
21231        ComponentInputEventLatencyBeginRwh = 1,
21232        ComponentInputEventLatencyScrollUpdateOriginal = 2,
21233        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
21234        ComponentInputEventLatencyOriginal = 4,
21235        ComponentInputEventLatencyUi = 5,
21236        ComponentInputEventLatencyRendererMain = 6,
21237        ComponentInputEventLatencyRenderingScheduledMain = 7,
21238        ComponentInputEventLatencyRenderingScheduledImpl = 8,
21239        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
21240        ComponentInputEventLatencyAckRwh = 10,
21241        ComponentInputEventLatencyRendererSwap = 11,
21242        ComponentDisplayCompositorReceivedFrame = 12,
21243        ComponentInputEventGpuSwapBuffer = 13,
21244        ComponentInputEventLatencyFrameSwap = 14,
21245    }
21246    impl LatencyComponentType {
21247        /// String value of the enum field names used in the ProtoBuf definition.
21248        ///
21249        /// The values are not transformed in any way and thus are considered stable
21250        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21251        pub fn as_str_name(&self) -> &'static str {
21252            match self {
21253                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
21254                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
21255                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
21256                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
21257                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
21258                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
21259                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
21260                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
21261                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
21262                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
21263                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
21264                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
21265                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
21266                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
21267                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
21268            }
21269        }
21270    }
21271    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21272    #[repr(i32)]
21273    pub enum InputType {
21274        UnspecifiedOrOther = 0,
21275        TouchMoved = 1,
21276        GestureScrollBegin = 2,
21277        GestureScrollUpdate = 3,
21278        GestureScrollEnd = 4,
21279        GestureTap = 5,
21280        GestureTapCancel = 6,
21281    }
21282    impl InputType {
21283        /// String value of the enum field names used in the ProtoBuf definition.
21284        ///
21285        /// The values are not transformed in any way and thus are considered stable
21286        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21287        pub fn as_str_name(&self) -> &'static str {
21288            match self {
21289                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
21290                InputType::TouchMoved => "TOUCH_MOVED",
21291                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
21292                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
21293                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
21294                InputType::GestureTap => "GESTURE_TAP",
21295                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
21296            }
21297        }
21298    }
21299}
21300// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
21301
21302// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
21303
21304/// Details about a legacy Chrome IPC message that is either sent by the event.
21305/// TODO(eseckler): Also use this message on the receiving side?
21306#[derive(Clone, PartialEq, ::prost::Message)]
21307pub struct ChromeLegacyIpc {
21308    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
21309    /// enum, e.g. FrameMsgStart,
21310    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
21311    pub message_class: ::core::option::Option<i32>,
21312    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
21313    /// IPC_MESSAGE_START macros.
21314    #[prost(uint32, optional, tag="2")]
21315    pub message_line: ::core::option::Option<u32>,
21316}
21317/// Nested message and enum types in `ChromeLegacyIpc`.
21318pub mod chrome_legacy_ipc {
21319    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21320    #[repr(i32)]
21321    pub enum MessageClass {
21322        ClassUnspecified = 0,
21323        ClassAutomation = 1,
21324        ClassFrame = 2,
21325        ClassPage = 3,
21326        ClassView = 4,
21327        ClassWidget = 5,
21328        ClassInput = 6,
21329        ClassTest = 7,
21330        ClassWorker = 8,
21331        ClassNacl = 9,
21332        ClassGpuChannel = 10,
21333        ClassMedia = 11,
21334        ClassPpapi = 12,
21335        ClassChrome = 13,
21336        ClassDrag = 14,
21337        ClassPrint = 15,
21338        ClassExtension = 16,
21339        ClassTextInputClient = 17,
21340        ClassBlinkTest = 18,
21341        ClassAccessibility = 19,
21342        ClassPrerender = 20,
21343        ClassChromoting = 21,
21344        ClassBrowserPlugin = 22,
21345        ClassAndroidWebView = 23,
21346        ClassNaclHost = 24,
21347        ClassEncryptedMedia = 25,
21348        ClassCast = 26,
21349        ClassGinJavaBridge = 27,
21350        ClassChromeUtilityPrinting = 28,
21351        ClassOzoneGpu = 29,
21352        ClassWebTest = 30,
21353        ClassNetworkHints = 31,
21354        ClassExtensionsGuestView = 32,
21355        ClassGuestView = 33,
21356        ClassMediaPlayerDelegate = 34,
21357        ClassExtensionWorker = 35,
21358        ClassSubresourceFilter = 36,
21359        ClassUnfreezableFrame = 37,
21360    }
21361    impl MessageClass {
21362        /// String value of the enum field names used in the ProtoBuf definition.
21363        ///
21364        /// The values are not transformed in any way and thus are considered stable
21365        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21366        pub fn as_str_name(&self) -> &'static str {
21367            match self {
21368                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
21369                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
21370                MessageClass::ClassFrame => "CLASS_FRAME",
21371                MessageClass::ClassPage => "CLASS_PAGE",
21372                MessageClass::ClassView => "CLASS_VIEW",
21373                MessageClass::ClassWidget => "CLASS_WIDGET",
21374                MessageClass::ClassInput => "CLASS_INPUT",
21375                MessageClass::ClassTest => "CLASS_TEST",
21376                MessageClass::ClassWorker => "CLASS_WORKER",
21377                MessageClass::ClassNacl => "CLASS_NACL",
21378                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
21379                MessageClass::ClassMedia => "CLASS_MEDIA",
21380                MessageClass::ClassPpapi => "CLASS_PPAPI",
21381                MessageClass::ClassChrome => "CLASS_CHROME",
21382                MessageClass::ClassDrag => "CLASS_DRAG",
21383                MessageClass::ClassPrint => "CLASS_PRINT",
21384                MessageClass::ClassExtension => "CLASS_EXTENSION",
21385                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
21386                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
21387                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
21388                MessageClass::ClassPrerender => "CLASS_PRERENDER",
21389                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
21390                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
21391                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
21392                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
21393                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
21394                MessageClass::ClassCast => "CLASS_CAST",
21395                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
21396                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
21397                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
21398                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
21399                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
21400                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
21401                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
21402                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
21403                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
21404                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
21405                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
21406            }
21407        }
21408    }
21409}
21410// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
21411
21412// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
21413
21414/// Details about Chrome message pump events
21415#[derive(Clone, PartialEq, ::prost::Message)]
21416pub struct ChromeMessagePump {
21417    /// True if there are sent messages in the queue.
21418    #[prost(bool, optional, tag="1")]
21419    pub sent_messages_in_queue: ::core::option::Option<bool>,
21420    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
21421    /// invoke.
21422    #[prost(uint64, optional, tag="2")]
21423    pub io_handler_location_iid: ::core::option::Option<u64>,
21424}
21425// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
21426
21427// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
21428
21429/// Contains information to identify mojo handling events. The trace events in
21430/// mojo are common for all mojo interfaces and this information is used to
21431/// identify who is the caller or callee.
21432#[derive(Clone, PartialEq, ::prost::Message)]
21433pub struct ChromeMojoEventInfo {
21434    /// Contains the interface name or the file name of the creator of a mojo
21435    /// handle watcher, recorded when an event if notified to the watcher. The code
21436    /// that runs within the track event belongs to the interface.
21437    #[prost(string, optional, tag="1")]
21438    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
21439    /// The hash of the IPC message that is being handled.
21440    #[prost(uint32, optional, tag="2")]
21441    pub ipc_hash: ::core::option::Option<u32>,
21442    /// A static string representing the mojo interface name of the message that is
21443    /// being handled.
21444    #[prost(string, optional, tag="3")]
21445    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
21446    /// Refers to an interned UnsymbolizedSourceLocation.
21447    /// The UnsymbolizedSourceLocation contains the interface method that's being
21448    /// handled, represented as a native symbol.
21449    /// The native symbol can be symbolized after the trace is recorded.
21450    /// Not using a symbolized source location for official Chromium builds to
21451    /// reduce binary size - emitting file/function names as strings into the
21452    /// trace requires storing them in the binary, which causes a significant
21453    /// binary size bloat for Chromium.
21454    #[prost(uint64, optional, tag="4")]
21455    pub mojo_interface_method_iid: ::core::option::Option<u64>,
21456    /// Indicate whether this is a message or reply.
21457    #[prost(bool, optional, tag="5")]
21458    pub is_reply: ::core::option::Option<bool>,
21459    /// The payload size of the message being sent through mojo messages.
21460    #[prost(uint64, optional, tag="6")]
21461    pub payload_size: ::core::option::Option<u64>,
21462    /// Represents the size of the message. Includes all headers and user payload.
21463    #[prost(uint64, optional, tag="7")]
21464    pub data_num_bytes: ::core::option::Option<u64>,
21465}
21466#[derive(Clone, PartialEq, ::prost::Message)]
21467pub struct ChromeRendererSchedulerState {
21468    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
21469    pub rail_mode: ::core::option::Option<i32>,
21470    #[prost(bool, optional, tag="2")]
21471    pub is_backgrounded: ::core::option::Option<bool>,
21472    #[prost(bool, optional, tag="3")]
21473    pub is_hidden: ::core::option::Option<bool>,
21474}
21475// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
21476
21477// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
21478
21479/// Details about a UI interaction initiated by the user, such as opening or
21480/// closing a tab or a context menu.
21481#[derive(Clone, PartialEq, ::prost::Message)]
21482pub struct ChromeUserEvent {
21483    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
21484    /// Chrome, these are usually static strings known at compile time, or
21485    /// concatenations of multiple such static strings).
21486    #[prost(string, optional, tag="1")]
21487    pub action: ::core::option::Option<::prost::alloc::string::String>,
21488    /// MD5 hash of the action string.
21489    #[prost(uint64, optional, tag="2")]
21490    pub action_hash: ::core::option::Option<u64>,
21491}
21492// End of protos/perfetto/trace/track_event/chrome_user_event.proto
21493
21494// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
21495
21496/// Details about HWNDMessageHandler trace events.
21497#[derive(Clone, PartialEq, ::prost::Message)]
21498pub struct ChromeWindowHandleEventInfo {
21499    #[prost(uint32, optional, tag="1")]
21500    pub dpi: ::core::option::Option<u32>,
21501    #[prost(uint32, optional, tag="2")]
21502    pub message_id: ::core::option::Option<u32>,
21503    #[prost(fixed64, optional, tag="3")]
21504    pub hwnd_ptr: ::core::option::Option<u64>,
21505}
21506// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
21507
21508// Begin of protos/perfetto/trace/track_event/screenshot.proto
21509
21510#[derive(Clone, PartialEq, ::prost::Message)]
21511pub struct Screenshot {
21512    /// The JPEG (Joint Photographic Experts Group) file format.
21513    #[prost(bytes="vec", optional, tag="1")]
21514    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21515    /// The PAM (Portable Arbitrary Map) file format.
21516    #[prost(bytes="vec", optional, tag="2")]
21517    pub pam_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21518    /// The PPM (Portable Pixmap) file format.
21519    #[prost(bytes="vec", optional, tag="3")]
21520    pub ppm_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21521}
21522// End of protos/perfetto/trace/track_event/screenshot.proto
21523
21524// Begin of protos/perfetto/trace/track_event/task_execution.proto
21525
21526/// TrackEvent arguments describing the execution of a task.
21527#[derive(Clone, PartialEq, ::prost::Message)]
21528pub struct TaskExecution {
21529    /// Source location that the task was posted from.
21530    /// interned SourceLocation.
21531    #[prost(uint64, optional, tag="1")]
21532    pub posted_from_iid: ::core::option::Option<u64>,
21533}
21534// Begin of protos/perfetto/trace/track_event/track_event.proto
21535
21536// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
21537// protos are still subject to change. Don't depend on them staying as they are.
21538
21539/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
21540/// which describe activity on a track, such as a thread or asynchronous event
21541/// track. The track is specified using separate TrackDescriptor messages and
21542/// referred to via the track's UUID.
21543///
21544/// A simple TrackEvent packet specifies a timestamp, category, name and type:
21545/// ```protobuf
21546///    trace_packet {
21547///      timestamp: 1000
21548///      track_event {
21549///        categories: \["my_cat"\]
21550///        name: "my_event"
21551///        type: TYPE_INSTANT
21552///       }
21553///     }
21554/// ```
21555///
21556/// To associate an event with a custom track (e.g. a thread), the track is
21557/// defined in a separate packet and referred to from the TrackEvent by its UUID:
21558/// ```protobuf
21559///    trace_packet {
21560///      track_descriptor {
21561///        track_uuid: 1234
21562///        name: "my_track"
21563///
21564///        // Optionally, associate the track with a thread.
21565///        thread_descriptor {
21566///          pid: 10
21567///          tid: 10
21568///          ..
21569///        }
21570///      }
21571///    }
21572/// ```
21573///
21574/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
21575///
21576/// ```protobuf
21577///    trace_packet {
21578///      timestamp: 1200
21579///      track_event {
21580///        track_uuid: 1234
21581///        categories: \["my_cat"\]
21582///        name: "my_slice"
21583///        type: TYPE_SLICE_BEGIN
21584///      }
21585///    }
21586///    trace_packet {
21587///      timestamp: 1400
21588///      track_event {
21589///        track_uuid: 1234
21590///        type: TYPE_SLICE_END
21591///      }
21592///    }
21593/// ```
21594/// TrackEvents also support optimizations to reduce data repetition and encoded
21595/// data size, e.g. through data interning (names, categories, ...) and delta
21596/// encoding of timestamps/counters. For details, see the InternedData message.
21597/// Further, default values for attributes of events on the same sequence (e.g.
21598/// their default track association) can be emitted as part of a
21599/// TrackEventDefaults message.
21600///
21601/// Next reserved id: 13 (up to 15). Next id: 57.
21602#[derive(Clone, PartialEq, ::prost::Message)]
21603pub struct TrackEvent {
21604    /// Names of categories of the event. In the client library, categories are a
21605    /// way to turn groups of individual events on or off.
21606    /// interned EventCategoryName.
21607    #[prost(uint64, repeated, packed="false", tag="3")]
21608    pub category_iids: ::prost::alloc::vec::Vec<u64>,
21609    /// non-interned variant.
21610    #[prost(string, repeated, tag="22")]
21611    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21612    #[prost(enumeration="track_event::Type", optional, tag="9")]
21613    pub r#type: ::core::option::Option<i32>,
21614    /// Identifies the track of the event. The default value may be overridden
21615    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
21616    /// sequence (in most cases sequence = one thread). If no value is specified
21617    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
21618    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
21619    #[prost(uint64, optional, tag="11")]
21620    pub track_uuid: ::core::option::Option<u64>,
21621    /// To encode counter values more efficiently, we support attaching additional
21622    /// counter values to a TrackEvent of any type. All values will share the same
21623    /// timestamp specified in the TracePacket. The value at
21624    /// extra_counter_values\[N\] is for the counter track referenced by
21625    /// extra_counter_track_uuids\[N\].
21626    ///
21627    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
21628    /// should always be equal or more uuids than values. It is valid to set more
21629    /// uuids (e.g. via defaults) than values. If uuids are specified in
21630    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
21631    /// default uuid list.
21632    ///
21633    /// For example, this allows snapshotting the thread time clock at each
21634    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
21635    #[prost(uint64, repeated, packed="false", tag="31")]
21636    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21637    #[prost(int64, repeated, packed="false", tag="12")]
21638    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
21639    /// Counter snapshots using floating point instead of integer values.
21640    #[prost(uint64, repeated, packed="false", tag="45")]
21641    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21642    #[prost(double, repeated, packed="false", tag="46")]
21643    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
21644    /// IDs of flows originating, passing through, or ending at this event.
21645    /// Flow IDs are global within a trace.
21646    ///
21647    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
21648    /// an input event may be handled on one thread but cause another event on
21649    /// a different thread - a flow between the two events can associate them.
21650    ///
21651    /// The direction of the flows between events is inferred from the events'
21652    /// timestamps. The earliest event with the same flow ID becomes the source
21653    /// of the flow. Any events thereafter are intermediate steps of the flow,
21654    /// until the flow terminates at the last event with the flow ID.
21655    ///
21656    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
21657    /// that the same ID can later be reused for another flow.
21658    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
21659    #[deprecated]
21660    #[prost(uint64, repeated, packed="false", tag="36")]
21661    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
21662    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
21663    /// consumption.
21664    #[prost(fixed64, repeated, packed="false", tag="47")]
21665    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
21666    /// List of flow ids which should terminate on this event, otherwise same as
21667    /// |flow_ids|.
21668    /// Any one flow ID should be either listed as part of |flow_ids| OR
21669    /// |terminating_flow_ids|, not both.
21670    /// DEPRECATED. Only kept for backwards compatibility.  Use
21671    /// |terminating_flow_ids|.
21672    #[deprecated]
21673    #[prost(uint64, repeated, packed="false", tag="42")]
21674    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
21675    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
21676    /// "terminating_flow_ids" to reduce memory consumption.
21677    #[prost(fixed64, repeated, packed="false", tag="48")]
21678    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
21679    /// Debug annotations associated with this event. These are arbitrary key-value
21680    /// pairs that can be used to attach additional information to the event.
21681    /// See DebugAnnotation message for details on supported value types.
21682    ///
21683    /// For example, debug annotations can be used to attach a URL or resource
21684    /// identifier to a network request event. Arrays, dictionaries and full
21685    /// nested structures (e.g. arrays of dictionaries of dictionaries)
21686    /// are supported.
21687    #[prost(message, repeated, tag="4")]
21688    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
21689    // ---------------------------------------------------------------------------
21690    // TrackEvent arguments:
21691    // ---------------------------------------------------------------------------
21692    //
21693    // NOTE: The fields below this point are NOT part of the stable public API.
21694    // They are primarily intended for internal use by Chrome and Android. These
21695    // fields may change or be removed without notice. For custom/synthetic
21696    // traces, prefer using the fields above (name, categories, type, flows,
21697    // correlation_id, callstack, etc.) along with custom debug_annotations.
21698
21699    /// Typed event arguments:
21700    #[prost(message, optional, tag="5")]
21701    pub task_execution: ::core::option::Option<TaskExecution>,
21702    #[prost(message, optional, tag="21")]
21703    pub log_message: ::core::option::Option<LogMessage>,
21704    #[prost(message, optional, tag="24")]
21705    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
21706    #[prost(message, optional, tag="25")]
21707    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
21708    #[prost(message, optional, tag="26")]
21709    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
21710    #[prost(message, optional, tag="27")]
21711    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
21712    #[prost(message, optional, tag="28")]
21713    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
21714    #[prost(message, optional, tag="29")]
21715    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
21716    /// DEPRECATED. Only kept for backwards compatibility. Use the
21717    /// |ChromeTrackEvent.frame_reporter| extension in
21718    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
21719    /// instead.
21720    #[deprecated]
21721    #[prost(message, optional, tag="32")]
21722    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
21723    #[prost(message, optional, tag="39")]
21724    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
21725    #[prost(message, optional, tag="40")]
21726    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
21727    #[prost(message, optional, tag="41")]
21728    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
21729    #[prost(message, optional, tag="43")]
21730    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
21731    #[prost(message, optional, tag="49")]
21732    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
21733    #[prost(message, optional, tag="50")]
21734    pub screenshot: ::core::option::Option<Screenshot>,
21735    #[prost(message, optional, tag="35")]
21736    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
21737    #[prost(message, optional, tag="38")]
21738    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
21739    #[prost(message, optional, tag="6")]
21740    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
21741    /// Optional name of the event for its display in trace viewer. May be left
21742    /// unspecified for events with typed arguments.
21743    ///
21744    /// Note that metrics should not rely on event names, as they are prone to
21745    /// changing. Instead, they should use typed arguments to identify the events
21746    /// they are interested in.
21747    #[prost(oneof="track_event::NameField", tags="10, 23")]
21748    pub name_field: ::core::option::Option<track_event::NameField>,
21749    /// A new value for a counter track. |track_uuid| should refer to a track with
21750    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
21751    /// efficient encoding of counter values that are sampled at the beginning/end
21752    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
21753    /// Counter values can optionally be encoded in as delta values (positive or
21754    /// negative) on each packet sequence (see CounterIncrementalBase).
21755    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
21756    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
21757    /// An opaque identifier to correlate this slice with other slices that are
21758    /// considered part of the same logical operation, even if they are not
21759    /// causally connected. Examples uses of a correlation id might be the number
21760    /// of frame going through various stages of rendering in a GPU, the id for an
21761    /// RPC request going through a distributed system, or the id of a network
21762    /// request going through various stages of processing by the kernel.
21763    ///
21764    /// NOTE: if the events *are* causually connected, you probably want to use
21765    /// flows instead of OR in addition to correlation ids.
21766    ///
21767    /// UIs can use this identifier to visually link these slices, for instance,
21768    /// by assigning them a consistent color or highlighting the entire correlated
21769    /// set when one slice is hovered.
21770    ///
21771    /// Only one field within this 'oneof' should be set to define the correlation.
21772    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
21773    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
21774    /// Callstack associated with this event. This captures the program stack at
21775    /// the time the event occurred, useful for understanding what code path led
21776    /// to the event.
21777    ///
21778    /// Two variants are supported:
21779    /// - callstack: Inline callstack data (simpler when trace size is not a
21780    ///    concern or callstacks are unique)
21781    /// - callstack_iid: Reference to an interned Callstack in InternedData
21782    ///    (efficient for repeated callstacks)
21783    ///
21784    /// Only one of these fields should be set.
21785    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
21786    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
21787    /// This field is used only if the source location represents the function that
21788    /// executes during this event.
21789    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
21790    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
21791    // ---------------------------------------------------------------------------
21792    // Deprecated / legacy event fields, which will be removed in the future:
21793    // ---------------------------------------------------------------------------
21794
21795    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
21796    /// TracePacket instead.
21797    ///
21798    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
21799    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
21800    pub timestamp: ::core::option::Option<track_event::Timestamp>,
21801    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21802    /// encode thread time instead.
21803    ///
21804    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
21805    /// microseconds.
21806    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
21807    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
21808    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21809    /// encode thread instruction count instead.
21810    ///
21811    /// Value of the instruction counter for the current thread.
21812    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
21813    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
21814}
21815/// Nested message and enum types in `TrackEvent`.
21816pub mod track_event {
21817    /// Inline callstack for TrackEvents when interning is not needed.
21818    /// This is a simplified version of the profiling Callstack/Frame messages,
21819    /// designed for cases where trace size is not critical or callstacks are
21820    /// unique.
21821    ///
21822    /// Use this for simple callstacks with function names and source locations.
21823    /// For binary/library information (mappings, build IDs, relative PCs), use
21824    /// interned callstacks via callstack_iid instead.
21825    #[derive(Clone, PartialEq, ::prost::Message)]
21826    pub struct Callstack {
21827        /// Frames of this callstack, ordered from bottom (outermost) to top
21828        /// (innermost). For example, if main() calls foo() which calls bar(), the
21829        /// frames would be: [main, foo, bar]
21830        #[prost(message, repeated, tag="1")]
21831        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
21832    }
21833    /// Nested message and enum types in `Callstack`.
21834    pub mod callstack {
21835        /// Frame within an inline callstack.
21836        #[derive(Clone, PartialEq, ::prost::Message)]
21837        pub struct Frame {
21838            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
21839            #[prost(string, optional, tag="1")]
21840            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
21841            /// Optional: Source file path, e.g., "/src/foo.cc"
21842            #[prost(string, optional, tag="2")]
21843            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
21844            /// Optional: Line number in the source file
21845            #[prost(uint32, optional, tag="3")]
21846            pub line_number: ::core::option::Option<u32>,
21847        }
21848    }
21849    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
21850    /// event attributes are initially simply proxied for conversion to a JSON
21851    /// trace. We intend to gradually transition these attributes to similar native
21852    /// features in TrackEvent (e.g. async + flow events), or deprecate them
21853    /// without replacement where transition is unsuitable.
21854    ///
21855    /// Next reserved id: 16 (up to 16).
21856    /// Next id: 20.
21857    #[derive(Clone, PartialEq, ::prost::Message)]
21858    pub struct LegacyEvent {
21859        /// Deprecated, use TrackEvent::name(_iid) instead.
21860        /// interned EventName.
21861        #[prost(uint64, optional, tag="1")]
21862        pub name_iid: ::core::option::Option<u64>,
21863        #[prost(int32, optional, tag="2")]
21864        pub phase: ::core::option::Option<i32>,
21865        #[prost(int64, optional, tag="3")]
21866        pub duration_us: ::core::option::Option<i64>,
21867        #[prost(int64, optional, tag="4")]
21868        pub thread_duration_us: ::core::option::Option<i64>,
21869        /// Elapsed retired instruction count during the event.
21870        #[prost(int64, optional, tag="15")]
21871        pub thread_instruction_delta: ::core::option::Option<i64>,
21872        /// Additional optional scope for |id|.
21873        #[prost(string, optional, tag="7")]
21874        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
21875        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
21876        #[prost(bool, optional, tag="9")]
21877        pub use_async_tts: ::core::option::Option<bool>,
21878        /// Idenfifies a flow. Flow events with the same bind_id are connected.
21879        #[prost(uint64, optional, tag="8")]
21880        pub bind_id: ::core::option::Option<u64>,
21881        /// Use the enclosing slice as binding point for a flow end event instead of
21882        /// the next slice. Flow start/step events always bind to the enclosing
21883        /// slice.
21884        #[prost(bool, optional, tag="12")]
21885        pub bind_to_enclosing: ::core::option::Option<bool>,
21886        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
21887        pub flow_direction: ::core::option::Option<i32>,
21888        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
21889        pub instant_event_scope: ::core::option::Option<i32>,
21890        /// Override the pid/tid if the writer needs to emit events on behalf of
21891        /// another process/thread. This should be the exception. Normally, the
21892        /// pid+tid from ThreadDescriptor is used.
21893        #[prost(int32, optional, tag="18")]
21894        pub pid_override: ::core::option::Option<i32>,
21895        #[prost(int32, optional, tag="19")]
21896        pub tid_override: ::core::option::Option<i32>,
21897        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
21898        pub id: ::core::option::Option<legacy_event::Id>,
21899    }
21900    /// Nested message and enum types in `LegacyEvent`.
21901    pub mod legacy_event {
21902        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21903        #[repr(i32)]
21904        pub enum FlowDirection {
21905            FlowUnspecified = 0,
21906            FlowIn = 1,
21907            FlowOut = 2,
21908            FlowInout = 3,
21909        }
21910        impl FlowDirection {
21911            /// String value of the enum field names used in the ProtoBuf definition.
21912            ///
21913            /// The values are not transformed in any way and thus are considered stable
21914            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21915            pub fn as_str_name(&self) -> &'static str {
21916                match self {
21917                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
21918                    FlowDirection::FlowIn => "FLOW_IN",
21919                    FlowDirection::FlowOut => "FLOW_OUT",
21920                    FlowDirection::FlowInout => "FLOW_INOUT",
21921                }
21922            }
21923        }
21924        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21925        #[repr(i32)]
21926        pub enum InstantEventScope {
21927            ScopeUnspecified = 0,
21928            ScopeGlobal = 1,
21929            ScopeProcess = 2,
21930            ScopeThread = 3,
21931        }
21932        impl InstantEventScope {
21933            /// String value of the enum field names used in the ProtoBuf definition.
21934            ///
21935            /// The values are not transformed in any way and thus are considered stable
21936            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21937            pub fn as_str_name(&self) -> &'static str {
21938                match self {
21939                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
21940                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
21941                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
21942                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
21943                }
21944            }
21945        }
21946        #[derive(Clone, PartialEq, ::prost::Oneof)]
21947        pub enum Id {
21948            #[prost(uint64, tag="6")]
21949            UnscopedId(u64),
21950            #[prost(uint64, tag="10")]
21951            LocalId(u64),
21952            #[prost(uint64, tag="11")]
21953            GlobalId(u64),
21954        }
21955    }
21956    // TODO(eseckler): Support using binary symbols for category/event names.
21957
21958    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
21959    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21960    #[repr(i32)]
21961    pub enum Type {
21962        Unspecified = 0,
21963        /// Slice events are events that have a begin and end timestamp, i.e. a
21964        /// duration. They can be nested similar to a callstack: If, on the same
21965        /// track, event B begins after event A, but before A ends, B is a child
21966        /// event of A and will be drawn as a nested event underneath A in the UI.
21967        /// Note that child events should always end before their parents (e.g. B
21968        /// before A).
21969        ///
21970        /// Each slice event is formed by a pair of BEGIN + END events. The END event
21971        /// does not need to repeat any TrackEvent fields it has in common with its
21972        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
21973        /// END pair will be merged during trace import.
21974        ///
21975        /// Note that we deliberately chose not to support COMPLETE events (which
21976        /// would specify a duration directly) since clients would need to delay
21977        /// writing them until the slice is completed, which can result in reordered
21978        /// events in the trace and loss of unfinished events at the end of a trace.
21979        SliceBegin = 1,
21980        SliceEnd = 2,
21981        /// Instant events are nestable events without duration. They can be children
21982        /// of slice events on the same track.
21983        Instant = 3,
21984        /// Event that provides a value for a counter track. |track_uuid| should
21985        /// refer to a counter track and |counter_value| set to the new value. Note
21986        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
21987        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
21988        Counter = 4,
21989    }
21990    impl Type {
21991        /// String value of the enum field names used in the ProtoBuf definition.
21992        ///
21993        /// The values are not transformed in any way and thus are considered stable
21994        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21995        pub fn as_str_name(&self) -> &'static str {
21996            match self {
21997                Type::Unspecified => "TYPE_UNSPECIFIED",
21998                Type::SliceBegin => "TYPE_SLICE_BEGIN",
21999                Type::SliceEnd => "TYPE_SLICE_END",
22000                Type::Instant => "TYPE_INSTANT",
22001                Type::Counter => "TYPE_COUNTER",
22002            }
22003        }
22004    }
22005    /// Optional name of the event for its display in trace viewer. May be left
22006    /// unspecified for events with typed arguments.
22007    ///
22008    /// Note that metrics should not rely on event names, as they are prone to
22009    /// changing. Instead, they should use typed arguments to identify the events
22010    /// they are interested in.
22011    #[derive(Clone, PartialEq, ::prost::Oneof)]
22012    pub enum NameField {
22013        /// interned EventName.
22014        #[prost(uint64, tag="10")]
22015        NameIid(u64),
22016        /// non-interned variant.
22017        #[prost(string, tag="23")]
22018        Name(::prost::alloc::string::String),
22019    }
22020    /// A new value for a counter track. |track_uuid| should refer to a track with
22021    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22022    /// efficient encoding of counter values that are sampled at the beginning/end
22023    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22024    /// Counter values can optionally be encoded in as delta values (positive or
22025    /// negative) on each packet sequence (see CounterIncrementalBase).
22026    #[derive(Clone, PartialEq, ::prost::Oneof)]
22027    pub enum CounterValueField {
22028        #[prost(int64, tag="30")]
22029        CounterValue(i64),
22030        #[prost(double, tag="44")]
22031        DoubleCounterValue(f64),
22032    }
22033    /// An opaque identifier to correlate this slice with other slices that are
22034    /// considered part of the same logical operation, even if they are not
22035    /// causally connected. Examples uses of a correlation id might be the number
22036    /// of frame going through various stages of rendering in a GPU, the id for an
22037    /// RPC request going through a distributed system, or the id of a network
22038    /// request going through various stages of processing by the kernel.
22039    ///
22040    /// NOTE: if the events *are* causually connected, you probably want to use
22041    /// flows instead of OR in addition to correlation ids.
22042    ///
22043    /// UIs can use this identifier to visually link these slices, for instance,
22044    /// by assigning them a consistent color or highlighting the entire correlated
22045    /// set when one slice is hovered.
22046    ///
22047    /// Only one field within this 'oneof' should be set to define the correlation.
22048    #[derive(Clone, PartialEq, ::prost::Oneof)]
22049    pub enum CorrelationIdField {
22050        /// A 64-bit unsigned integer used as the correlation ID.
22051        ///
22052        /// Best for performance and compact traces if the identifier is naturally
22053        /// numerical or can be easily mapped to one by the trace producer.
22054        #[prost(uint64, tag="52")]
22055        CorrelationId(u64),
22056        /// A string value used as the correlation ID.
22057        ///
22058        /// Offers maximum flexibility for human-readable or complex identifiers
22059        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
22060        /// size. For frequently repeated string identifiers, consider
22061        /// 'correlation_id_string_iid'.
22062        #[prost(string, tag="53")]
22063        CorrelationIdStr(::prost::alloc::string::String),
22064        /// An interned string identifier (an IID) for correlation.
22065        ///
22066        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
22067        /// field within the packet sequence's InternedData. This approach combines
22068        /// the descriptiveness and uniqueness of strings with the efficiency of
22069        /// integer IDs for storage and comparison, especially for identifiers that
22070        /// repeat across many events.
22071        #[prost(uint64, tag="54")]
22072        CorrelationIdStrIid(u64),
22073    }
22074    /// Callstack associated with this event. This captures the program stack at
22075    /// the time the event occurred, useful for understanding what code path led
22076    /// to the event.
22077    ///
22078    /// Two variants are supported:
22079    /// - callstack: Inline callstack data (simpler when trace size is not a
22080    ///    concern or callstacks are unique)
22081    /// - callstack_iid: Reference to an interned Callstack in InternedData
22082    ///    (efficient for repeated callstacks)
22083    ///
22084    /// Only one of these fields should be set.
22085    #[derive(Clone, PartialEq, ::prost::Oneof)]
22086    pub enum CallstackField {
22087        /// Inline callstack data. Use this for simplicity when interning is not
22088        /// needed (e.g., for unique callstacks or when trace size is not critical).
22089        #[prost(message, tag="55")]
22090        Callstack(Callstack),
22091        /// Reference to interned Callstack (see InternedData.callstacks).
22092        /// This is the efficient option when callstacks are repeated.
22093        ///
22094        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
22095        #[prost(uint64, tag="56")]
22096        CallstackIid(u64),
22097    }
22098    /// This field is used only if the source location represents the function that
22099    /// executes during this event.
22100    #[derive(Clone, PartialEq, ::prost::Oneof)]
22101    pub enum SourceLocationField {
22102        /// Non-interned field.
22103        #[prost(message, tag="33")]
22104        SourceLocation(super::SourceLocation),
22105        /// Interned field.
22106        #[prost(uint64, tag="34")]
22107        SourceLocationIid(u64),
22108    }
22109    // ---------------------------------------------------------------------------
22110    // Deprecated / legacy event fields, which will be removed in the future:
22111    // ---------------------------------------------------------------------------
22112
22113    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22114    /// TracePacket instead.
22115    ///
22116    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22117    #[derive(Clone, PartialEq, ::prost::Oneof)]
22118    pub enum Timestamp {
22119        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22120        /// calculate the absolute timestamp value, sum up all delta values of the
22121        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22122        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22123        /// be positive.
22124        #[prost(int64, tag="1")]
22125        TimestampDeltaUs(i64),
22126        /// Absolute value (e.g. a manually specified timestamp in the macro).
22127        /// This is a one-off value that does not affect delta timestamp computation
22128        /// in subsequent TrackEvents.
22129        #[prost(int64, tag="16")]
22130        TimestampAbsoluteUs(i64),
22131    }
22132    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22133    /// encode thread time instead.
22134    ///
22135    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22136    /// microseconds.
22137    #[derive(Clone, PartialEq, ::prost::Oneof)]
22138    pub enum ThreadTime {
22139        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22140        /// calculate the absolute timestamp value, sum up all delta values of the
22141        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22142        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22143        /// be positive.
22144        #[prost(int64, tag="2")]
22145        ThreadTimeDeltaUs(i64),
22146        /// This is a one-off absolute value that does not affect delta timestamp
22147        /// computation in subsequent TrackEvents.
22148        #[prost(int64, tag="17")]
22149        ThreadTimeAbsoluteUs(i64),
22150    }
22151    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22152    /// encode thread instruction count instead.
22153    ///
22154    /// Value of the instruction counter for the current thread.
22155    #[derive(Clone, PartialEq, ::prost::Oneof)]
22156    pub enum ThreadInstructionCount {
22157        /// Same encoding as |thread_time| field above.
22158        #[prost(int64, tag="8")]
22159        ThreadInstructionCountDelta(i64),
22160        #[prost(int64, tag="20")]
22161        ThreadInstructionCountAbsolute(i64),
22162    }
22163}
22164/// Default values for fields of all TrackEvents on the same packet sequence.
22165/// Should be emitted as part of TracePacketDefaults whenever incremental state
22166/// is cleared. It's defined here because field IDs should match those of the
22167/// corresponding fields in TrackEvent.
22168#[derive(Clone, PartialEq, ::prost::Message)]
22169pub struct TrackEventDefaults {
22170    #[prost(uint64, optional, tag="11")]
22171    pub track_uuid: ::core::option::Option<u64>,
22172    #[prost(uint64, repeated, packed="false", tag="31")]
22173    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22174    #[prost(uint64, repeated, packed="false", tag="45")]
22175    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22176}
22177// --------------------
22178// Interned data types:
22179// --------------------
22180
22181#[derive(Clone, PartialEq, ::prost::Message)]
22182pub struct EventCategory {
22183    #[prost(uint64, optional, tag="1")]
22184    pub iid: ::core::option::Option<u64>,
22185    #[prost(string, optional, tag="2")]
22186    pub name: ::core::option::Option<::prost::alloc::string::String>,
22187}
22188#[derive(Clone, PartialEq, ::prost::Message)]
22189pub struct EventName {
22190    #[prost(uint64, optional, tag="1")]
22191    pub iid: ::core::option::Option<u64>,
22192    #[prost(string, optional, tag="2")]
22193    pub name: ::core::option::Option<::prost::alloc::string::String>,
22194}
22195// End of protos/perfetto/trace/track_event/track_event.proto
22196
22197// Begin of protos/perfetto/trace/interned_data/interned_data.proto
22198
22199// ------------------------------ DATA INTERNING: ------------------------------
22200// Interning indexes are built up gradually by adding the entries contained in
22201// each TracePacket of the same packet sequence (packets emitted by the same
22202// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
22203// can only refer to interned data from other packets in the same sequence.
22204//
22205// The writer will emit new entries when it encounters new internable values
22206// that aren't yet in the index. Data in current and subsequent TracePackets can
22207// then refer to the entry by its position (interning ID, abbreviated "iid") in
22208// its index. An interning ID with value 0 is considered invalid (not set).
22209//
22210// Because of the incremental build-up, the interning index will miss data when
22211// TracePackets are lost, e.g. because a chunk was overridden in the central
22212// ring buffer. To avoid invalidation of the whole trace in such a case, the
22213// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
22214// When packet loss occurs, the reader will only lose interning data up to the
22215// next reset.
22216// -----------------------------------------------------------------------------
22217
22218/// Message that contains new entries for the interning indices of a packet
22219/// sequence.
22220///
22221/// The writer will usually emit new entries in the same TracePacket that first
22222/// refers to them (since the last reset of interning state). They may also be
22223/// emitted proactively in advance of referring to them in later packets.
22224///
22225/// Next reserved id: 8 (up to 15).
22226/// Next id: 48.
22227///
22228/// TODO(eseckler): Replace iid fields inside interned messages with
22229/// map<iid, message> type fields in InternedData.
22230#[derive(Clone, PartialEq, ::prost::Message)]
22231pub struct InternedData {
22232    /// Each field's message type needs to specify an |iid| field, which is the ID
22233    /// of the entry in the field's interning index. Each field constructs its own
22234    /// index, thus interning IDs are scoped to the tracing session and field
22235    /// (usually as a counter for efficient var-int encoding), and optionally to
22236    /// the incremental state generation of the packet sequence.
22237    #[prost(message, repeated, tag="1")]
22238    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
22239    #[prost(message, repeated, tag="2")]
22240    pub event_names: ::prost::alloc::vec::Vec<EventName>,
22241    #[prost(message, repeated, tag="3")]
22242    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
22243    #[prost(message, repeated, tag="27")]
22244    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
22245    #[prost(message, repeated, tag="4")]
22246    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
22247    #[prost(message, repeated, tag="28")]
22248    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
22249    #[prost(message, repeated, tag="20")]
22250    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
22251    #[prost(message, repeated, tag="25")]
22252    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
22253    // Note: field IDs up to 15 should be used for frequent data only.
22254
22255    /// Build IDs of exectuable files.
22256    #[prost(message, repeated, tag="16")]
22257    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
22258    /// Paths to executable files.
22259    #[prost(message, repeated, tag="17")]
22260    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
22261    /// Paths to source files.
22262    #[prost(message, repeated, tag="18")]
22263    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
22264    /// Names of functions used in frames below.
22265    #[prost(message, repeated, tag="5")]
22266    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
22267    /// Executable files mapped into processes.
22268    #[prost(message, repeated, tag="19")]
22269    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22270    /// Frames of callstacks of a program.
22271    #[prost(message, repeated, tag="6")]
22272    pub frames: ::prost::alloc::vec::Vec<Frame>,
22273    /// A callstack of a program.
22274    #[prost(message, repeated, tag="7")]
22275    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22276    /// Additional Vulkan information sent in a VulkanMemoryEvent message
22277    #[prost(message, repeated, tag="22")]
22278    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
22279    /// Graphics context of a render stage event.  This represent the GL
22280    /// context for an OpenGl app or the VkDevice for a Vulkan app.
22281    #[prost(message, repeated, tag="23")]
22282    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
22283    /// Description of a GPU hardware queue or render stage.
22284    #[prost(message, repeated, tag="24")]
22285    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
22286    /// This is set when FtraceConfig.symbolize_ksyms = true.
22287    /// The id of each symbol the number that will be reported in ftrace events
22288    /// like sched_block_reason.caller and is obtained from a monotonic counter.
22289    /// The same symbol can have different indexes in different bundles.
22290    /// This is is NOT the real address. This is to avoid disclosing KASLR through
22291    /// traces.
22292    #[prost(message, repeated, tag="26")]
22293    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
22294    /// Interned string values in the DebugAnnotation proto.
22295    #[prost(message, repeated, tag="29")]
22296    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
22297    /// Interned packet context for android.network_packets.
22298    #[prost(message, repeated, tag="30")]
22299    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
22300    /// Interned name of a js function. We only intern js functions as there is a
22301    /// lot of duplication for them, but less so for other strings in the V8 data
22302    /// source.
22303    #[prost(message, repeated, tag="31")]
22304    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
22305    /// Js functions can be emitted multiple times for various compilation tiers,
22306    /// so it makes sense to deduplicate all this.
22307    #[prost(message, repeated, tag="32")]
22308    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
22309    /// Interned JS script (there is one associated with each JS function)
22310    #[prost(message, repeated, tag="33")]
22311    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
22312    /// Interned Wasm script (there is one associated with each Wasm function)
22313    #[prost(message, repeated, tag="34")]
22314    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
22315    /// Every V8 event is associated with an isolate, intern the isolate to remove
22316    /// duplication.
22317    #[prost(message, repeated, tag="35")]
22318    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
22319    /// Interned protolog strings args.
22320    #[prost(message, repeated, tag="36")]
22321    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
22322    /// Interned protolog stacktraces.
22323    #[prost(message, repeated, tag="37")]
22324    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
22325    /// viewcapture
22326    #[prost(message, repeated, tag="38")]
22327    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
22328    #[prost(message, repeated, tag="39")]
22329    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
22330    #[prost(message, repeated, tag="40")]
22331    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
22332    #[prost(message, repeated, tag="41")]
22333    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
22334    #[prost(message, repeated, tag="45")]
22335    pub viewcapture_content_description: ::prost::alloc::vec::Vec<InternedString>,
22336    #[prost(message, repeated, tag="46")]
22337    pub viewcapture_text: ::prost::alloc::vec::Vec<InternedString>,
22338    /// Interned context for android.app_wakelocks.
22339    #[prost(message, repeated, tag="42")]
22340    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
22341    /// Interned correlation ids in track_event.
22342    #[prost(message, repeated, tag="43")]
22343    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
22344    /// Interned job names for Android Job Names. These are separate from
22345    /// other strings because they are under app control.
22346    #[prost(message, repeated, tag="44")]
22347    pub android_job_name: ::prost::alloc::vec::Vec<AndroidJobName>,
22348    /// Description of GPU counters available in a data source.
22349    #[prost(message, repeated, tag="47")]
22350    pub gpu_counter_descriptors: ::prost::alloc::vec::Vec<InternedGpuCounterDescriptor>,
22351}
22352#[derive(Clone, PartialEq, ::prost::Message)]
22353pub struct AndroidJobName {
22354    #[prost(uint64, optional, tag="1")]
22355    pub iid: ::core::option::Option<u64>,
22356    #[prost(string, optional, tag="2")]
22357    pub name: ::core::option::Option<::prost::alloc::string::String>,
22358}
22359// End of protos/perfetto/trace/interned_data/interned_data.proto
22360
22361// Begin of protos/perfetto/trace/memory_graph.proto
22362
22363// Message definitions for app-reported memory breakdowns. At the moment, this
22364// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
22365// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
22366// This is unrelated to the native or java heap profilers (those protos live
22367// in //protos/perfetto/trace/profiling/).
22368
22369#[derive(Clone, PartialEq, ::prost::Message)]
22370pub struct MemoryTrackerSnapshot {
22371    /// Unique ID that represents the global memory dump.
22372    #[prost(uint64, optional, tag="1")]
22373    pub global_dump_id: ::core::option::Option<u64>,
22374    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
22375    pub level_of_detail: ::core::option::Option<i32>,
22376    #[prost(message, repeated, tag="3")]
22377    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
22378}
22379/// Nested message and enum types in `MemoryTrackerSnapshot`.
22380pub mod memory_tracker_snapshot {
22381    /// Memory snapshot of a process. The snapshot contains memory data that is
22382    /// from 2 different sources, namely system stats and instrumentation stats.
22383    /// The system memory usage stats come from the OS based on standard API
22384    /// available in the platform to query memory usage. The instrumentation stats
22385    /// are added by instrumenting specific piece of code which tracks memory
22386    /// allocations and deallocations made by a small sub-system within the
22387    /// application.
22388    /// The system stats of the global memory snapshot are recorded as part of
22389    /// ProcessStats and SmapsPacket fields in trace packet with the same
22390    /// timestamp.
22391    #[derive(Clone, PartialEq, ::prost::Message)]
22392    pub struct ProcessSnapshot {
22393        /// Process ID of the process
22394        #[prost(int32, optional, tag="1")]
22395        pub pid: ::core::option::Option<i32>,
22396        #[prost(message, repeated, tag="2")]
22397        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
22398        #[prost(message, repeated, tag="3")]
22399        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
22400    }
22401    /// Nested message and enum types in `ProcessSnapshot`.
22402    pub mod process_snapshot {
22403        // Memory dumps are represented as a graph of memory nodes which contain
22404        // statistics. To avoid double counting the same memory across different
22405        // nodes, edges are used to mark nodes that account for the same memory. See
22406        // this doc for examples of the usage:
22407        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
22408
22409        /// A single node in the memory graph.
22410        #[derive(Clone, PartialEq, ::prost::Message)]
22411        pub struct MemoryNode {
22412            /// Unique ID of the node across all processes involved in the global
22413            /// memory dump. The ID is only unique within this particular global dump
22414            /// identified by GlobalMemoryDumpPacket.global_dump_id.
22415            #[prost(uint64, optional, tag="1")]
22416            pub id: ::core::option::Option<u64>,
22417            /// Absolute name is a unique name for the memory node within the process
22418            /// with ProcessMemoryDump.pid. The name can contain multiple parts
22419            /// separated by '/', which traces the edges of the node from the root
22420            /// node.
22421            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
22422            /// node "buffer1" in a graph structure of:
22423            ///    root -> partition_allocator -> array_buffers -> buffer1.
22424            #[prost(string, optional, tag="2")]
22425            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
22426            /// A weak node means that the instrumentation that added the current node
22427            /// is unsure about the existence of the actual memory. Unless a "strong"
22428            /// (non-weak is default) node that has an edge to the current node exists
22429            /// in the current global dump, the current node will be discarded.
22430            #[prost(bool, optional, tag="3")]
22431            pub weak: ::core::option::Option<bool>,
22432            /// Size of the node in bytes, used to compute the effective size of the
22433            /// nodes without double counting.
22434            #[prost(uint64, optional, tag="4")]
22435            pub size_bytes: ::core::option::Option<u64>,
22436            #[prost(message, repeated, tag="5")]
22437            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
22438        }
22439        /// Nested message and enum types in `MemoryNode`.
22440        pub mod memory_node {
22441            /// Entries in the memory node that contain statistics and additional
22442            /// debuggable information about the memory. The size of the node is
22443            /// tracked separately in the |size_bytes| field.
22444            #[derive(Clone, PartialEq, ::prost::Message)]
22445            pub struct MemoryNodeEntry {
22446                #[prost(string, optional, tag="1")]
22447                pub name: ::core::option::Option<::prost::alloc::string::String>,
22448                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
22449                pub units: ::core::option::Option<i32>,
22450                /// Contains either one of uint64 or string value.
22451                #[prost(uint64, optional, tag="3")]
22452                pub value_uint64: ::core::option::Option<u64>,
22453                #[prost(string, optional, tag="4")]
22454                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
22455            }
22456            /// Nested message and enum types in `MemoryNodeEntry`.
22457            pub mod memory_node_entry {
22458                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22459                #[repr(i32)]
22460                pub enum Units {
22461                    Unspecified = 0,
22462                    Bytes = 1,
22463                    Count = 2,
22464                }
22465                impl Units {
22466                    /// String value of the enum field names used in the ProtoBuf definition.
22467                    ///
22468                    /// The values are not transformed in any way and thus are considered stable
22469                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22470                    pub fn as_str_name(&self) -> &'static str {
22471                        match self {
22472                            Units::Unspecified => "UNSPECIFIED",
22473                            Units::Bytes => "BYTES",
22474                            Units::Count => "COUNT",
22475                        }
22476                    }
22477                }
22478            }
22479        }
22480        /// A directed edge that connects any 2 nodes in the graph above. These are
22481        /// in addition to the inherent edges added due to the tree structure of the
22482        /// node's absolute names.
22483        /// Node with id |source_id| owns the node with id |target_id|, and has the
22484        /// effect of attributing the memory usage of target to source. |importance|
22485        /// is optional and relevant only for the cases of co-ownership, where it
22486        /// acts as a z-index: the owner with the highest importance will be
22487        /// attributed target's memory.
22488        #[derive(Clone, PartialEq, ::prost::Message)]
22489        pub struct MemoryEdge {
22490            #[prost(uint64, optional, tag="1")]
22491            pub source_id: ::core::option::Option<u64>,
22492            #[prost(uint64, optional, tag="2")]
22493            pub target_id: ::core::option::Option<u64>,
22494            #[prost(uint32, optional, tag="3")]
22495            pub importance: ::core::option::Option<u32>,
22496            #[prost(bool, optional, tag="4")]
22497            pub overridable: ::core::option::Option<bool>,
22498        }
22499    }
22500    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22501    #[repr(i32)]
22502    pub enum LevelOfDetail {
22503        DetailFull = 0,
22504        DetailLight = 1,
22505        DetailBackground = 2,
22506    }
22507    impl LevelOfDetail {
22508        /// String value of the enum field names used in the ProtoBuf definition.
22509        ///
22510        /// The values are not transformed in any way and thus are considered stable
22511        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22512        pub fn as_str_name(&self) -> &'static str {
22513            match self {
22514                LevelOfDetail::DetailFull => "DETAIL_FULL",
22515                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
22516                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
22517            }
22518        }
22519    }
22520}
22521// End of protos/perfetto/trace/memory_graph.proto
22522
22523// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
22524
22525/// Used to trace the execution of perfetto itself.
22526#[derive(Clone, PartialEq, ::prost::Message)]
22527pub struct PerfettoMetatrace {
22528    /// Only when using |event_id|.
22529    #[prost(uint64, optional, tag="3")]
22530    pub event_duration_ns: ::core::option::Option<u64>,
22531    /// Only when using |counter_id|.
22532    #[prost(int32, optional, tag="4")]
22533    pub counter_value: ::core::option::Option<i32>,
22534    /// ID of the thread that emitted the event.
22535    #[prost(uint32, optional, tag="5")]
22536    pub thread_id: ::core::option::Option<u32>,
22537    /// If true the meta-tracing ring buffer had overruns and hence some data is
22538    /// missing from this point.
22539    #[prost(bool, optional, tag="6")]
22540    pub has_overruns: ::core::option::Option<bool>,
22541    /// Args for the event.
22542    #[prost(message, repeated, tag="7")]
22543    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
22544    #[prost(message, repeated, tag="10")]
22545    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
22546    /// See base/metatrace_events.h for definitions.
22547    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
22548    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
22549}
22550/// Nested message and enum types in `PerfettoMetatrace`.
22551pub mod perfetto_metatrace {
22552    #[derive(Clone, PartialEq, ::prost::Message)]
22553    pub struct Arg {
22554        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
22555        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
22556        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
22557        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
22558    }
22559    /// Nested message and enum types in `Arg`.
22560    pub mod arg {
22561        #[derive(Clone, PartialEq, ::prost::Oneof)]
22562        pub enum KeyOrInternedKey {
22563            #[prost(string, tag="1")]
22564            Key(::prost::alloc::string::String),
22565            #[prost(uint64, tag="3")]
22566            KeyIid(u64),
22567        }
22568        #[derive(Clone, PartialEq, ::prost::Oneof)]
22569        pub enum ValueOrInternedValue {
22570            #[prost(string, tag="2")]
22571            Value(::prost::alloc::string::String),
22572            #[prost(uint64, tag="4")]
22573            ValueIid(u64),
22574        }
22575    }
22576    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
22577    /// |value_iid| above.
22578    #[derive(Clone, PartialEq, ::prost::Message)]
22579    pub struct InternedString {
22580        #[prost(uint64, optional, tag="1")]
22581        pub iid: ::core::option::Option<u64>,
22582        #[prost(string, optional, tag="2")]
22583        pub value: ::core::option::Option<::prost::alloc::string::String>,
22584    }
22585    /// See base/metatrace_events.h for definitions.
22586    #[derive(Clone, PartialEq, ::prost::Oneof)]
22587    pub enum RecordType {
22588        #[prost(uint32, tag="1")]
22589        EventId(u32),
22590        #[prost(uint32, tag="2")]
22591        CounterId(u32),
22592        /// For trace processor metatracing.
22593        #[prost(string, tag="8")]
22594        EventName(::prost::alloc::string::String),
22595        #[prost(uint64, tag="11")]
22596        EventNameIid(u64),
22597        #[prost(string, tag="9")]
22598        CounterName(::prost::alloc::string::String),
22599    }
22600}
22601// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
22602
22603// Begin of protos/perfetto/trace/perfetto/trace_provenance.proto
22604
22605#[derive(Clone, PartialEq, ::prost::Message)]
22606pub struct TraceProvenance {
22607    #[prost(message, repeated, tag="2")]
22608    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
22609}
22610/// Nested message and enum types in `TraceProvenance`.
22611pub mod trace_provenance {
22612    #[derive(Clone, PartialEq, ::prost::Message)]
22613    pub struct Sequence {
22614        /// The trusted_packet_sequence_id reported in each TracePacket.
22615        #[prost(uint32, optional, tag="1")]
22616        pub id: ::core::option::Option<u32>,
22617        /// ID of the producer, as per Producer.id.
22618        #[prost(int32, optional, tag="2")]
22619        pub producer_id: ::core::option::Option<i32>,
22620    }
22621    /// Describes a trace buffer and all the sequences writing to it.
22622    #[derive(Clone, PartialEq, ::prost::Message)]
22623    pub struct Buffer {
22624        #[prost(message, repeated, tag="1")]
22625        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
22626    }
22627}
22628// End of protos/perfetto/trace/perfetto/trace_provenance.proto
22629
22630// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
22631
22632/// Events emitted by the tracing service.
22633/// Next id: 12.
22634#[derive(Clone, PartialEq, ::prost::Message)]
22635pub struct TracingServiceEvent {
22636    /// When each of the following booleans are set to true, they report the
22637    /// point in time (through TracePacket's timestamp) where the condition
22638    /// they describe happened.
22639    /// The order of the booleans below matches the timestamp ordering
22640    /// they would generally be expected to have.
22641    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
22642    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
22643}
22644/// Nested message and enum types in `TracingServiceEvent`.
22645pub mod tracing_service_event {
22646    #[derive(Clone, PartialEq, ::prost::Message)]
22647    pub struct DataSources {
22648        #[prost(message, repeated, tag="1")]
22649        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
22650    }
22651    /// Nested message and enum types in `DataSources`.
22652    pub mod data_sources {
22653        #[derive(Clone, PartialEq, ::prost::Message)]
22654        pub struct DataSource {
22655            #[prost(string, optional, tag="1")]
22656            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
22657            #[prost(string, optional, tag="2")]
22658            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
22659        }
22660    }
22661    /// When each of the following booleans are set to true, they report the
22662    /// point in time (through TracePacket's timestamp) where the condition
22663    /// they describe happened.
22664    /// The order of the booleans below matches the timestamp ordering
22665    /// they would generally be expected to have.
22666    #[derive(Clone, PartialEq, ::prost::Oneof)]
22667    pub enum EventType {
22668        /// Emitted when we start tracing and specifically, this will be before any
22669        /// producer is notified about the existence of this trace. This is always
22670        /// emitted before the all_data_sources_started event. This event is also
22671        /// guaranteed to be seen (byte-offset wise) before any data packets from
22672        /// producers.
22673        #[prost(bool, tag="2")]
22674        TracingStarted(bool),
22675        /// Emitted after all data sources saw the start event and ACKed it.
22676        /// This identifies the point in time when it's safe to assume that all data
22677        /// sources have been recording events.
22678        #[prost(bool, tag="1")]
22679        AllDataSourcesStarted(bool),
22680        /// Emitted when a flush is started.
22681        #[prost(bool, tag="9")]
22682        FlushStarted(bool),
22683        /// Emitted when all data sources have been flushed successfully or with an
22684        /// error (including timeouts). This can generally happen many times over the
22685        /// course of the trace.
22686        #[prost(bool, tag="3")]
22687        AllDataSourcesFlushed(bool),
22688        /// Emitted when reading back the central tracing buffers has been completed.
22689        /// If |write_into_file| is specified, this can happen many times over the
22690        /// course of the trace.
22691        #[prost(bool, tag="4")]
22692        ReadTracingBuffersCompleted(bool),
22693        /// Emitted after tracing has been disabled and specifically, this will be
22694        /// after all packets from producers have been included in the central
22695        /// tracing buffer.
22696        #[prost(bool, tag="5")]
22697        TracingDisabled(bool),
22698        /// Emitted if perfetto --save-for-bugreport was invoked while the current
22699        /// tracing session was running and it had the highest bugreport_score. In
22700        /// this case the original consumer will see a nearly empty trace, because
22701        /// the contents are routed onto the bugreport file. This event flags the
22702        /// situation explicitly. Traces that contain this marker should be discarded
22703        /// by test infrastructures / pipelines.
22704        /// Deprecated since Android U, where --save-for-bugreport uses
22705        /// non-destructive cloning.
22706        #[prost(bool, tag="6")]
22707        SeizedForBugreport(bool),
22708        /// Emitted when not all data sources in all producers reply to a start
22709        /// request after some time.
22710        #[prost(message, tag="7")]
22711        SlowStartingDataSources(DataSources),
22712        /// Emitted when the last flush request has failed. Lists data sources that
22713        /// did not reply on time.
22714        #[prost(message, tag="8")]
22715        LastFlushSlowDataSources(DataSources),
22716        /// If this was a cloned tracing session, emitted when the tracing serice
22717        /// started the clone operation.
22718        #[prost(bool, tag="10")]
22719        CloneStarted(bool),
22720        /// If this was a cloned tracing session, emitted when the tracing service
22721        /// finished the clone operation (for a specific buffer).
22722        #[prost(uint32, tag="11")]
22723        BufferCloned(u32),
22724    }
22725}
22726// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
22727
22728// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
22729
22730/// Energy consumer based on aidl class:
22731/// android.hardware.power.stats.EnergyConsumer.
22732#[derive(Clone, PartialEq, ::prost::Message)]
22733pub struct AndroidEnergyConsumer {
22734    /// Unique ID of this energy consumer.  Matches the ID in a
22735    /// AndroidEnergyEstimationBreakdown.
22736    #[prost(int32, optional, tag="1")]
22737    pub energy_consumer_id: ::core::option::Option<i32>,
22738    /// For a group of energy consumers of the same logical type, sorting by
22739    /// ordinal gives their physical order. Ordinals must be consecutive integers
22740    /// starting from 0.
22741    #[prost(int32, optional, tag="2")]
22742    pub ordinal: ::core::option::Option<i32>,
22743    /// Type of this energy consumer.
22744    #[prost(string, optional, tag="3")]
22745    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
22746    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
22747    /// framework.
22748    #[prost(string, optional, tag="4")]
22749    pub name: ::core::option::Option<::prost::alloc::string::String>,
22750}
22751#[derive(Clone, PartialEq, ::prost::Message)]
22752pub struct AndroidEnergyConsumerDescriptor {
22753    #[prost(message, repeated, tag="1")]
22754    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
22755}
22756// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
22757
22758// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
22759
22760/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
22761/// This proto represents the aidl class:
22762/// android.hardware.power.stats.EnergyConsumerResult.
22763#[derive(Clone, PartialEq, ::prost::Message)]
22764pub struct AndroidEnergyEstimationBreakdown {
22765    /// The first trace packet of each session should include a energy consumer
22766    /// descriptor.
22767    #[prost(message, optional, tag="1")]
22768    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
22769    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
22770    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
22771    /// should be sent at the beginning of a trace.
22772    #[prost(int32, optional, tag="2")]
22773    pub energy_consumer_id: ::core::option::Option<i32>,
22774    /// Total accumulated energy since boot in microwatt-seconds (uWs)
22775    #[prost(int64, optional, tag="3")]
22776    pub energy_uws: ::core::option::Option<i64>,
22777    /// Optional attributed energy per Android ID / Linux UID for this
22778    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
22779    /// to total accumulated energy.
22780    #[prost(message, repeated, tag="4")]
22781    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
22782}
22783/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
22784pub mod android_energy_estimation_breakdown {
22785    #[derive(Clone, PartialEq, ::prost::Message)]
22786    pub struct EnergyUidBreakdown {
22787        /// Android ID/Linux UID, the accumulated energy is attributed to.
22788        #[prost(int32, optional, tag="1")]
22789        pub uid: ::core::option::Option<i32>,
22790        /// Accumulated energy since boot in microwatt-seconds (uWs).
22791        #[prost(int64, optional, tag="2")]
22792        pub energy_uws: ::core::option::Option<i64>,
22793    }
22794}
22795// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
22796
22797// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
22798
22799#[derive(Clone, PartialEq, ::prost::Message)]
22800pub struct EntityStateResidency {
22801    /// This is only emitted at the beginning of the trace.
22802    #[prost(message, repeated, tag="1")]
22803    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
22804    #[prost(message, repeated, tag="2")]
22805    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
22806}
22807/// Nested message and enum types in `EntityStateResidency`.
22808pub mod entity_state_residency {
22809    #[derive(Clone, PartialEq, ::prost::Message)]
22810    pub struct PowerEntityState {
22811        /// Index corresponding to the entity
22812        #[prost(int32, optional, tag="1")]
22813        pub entity_index: ::core::option::Option<i32>,
22814        /// Index corresponding to the state
22815        #[prost(int32, optional, tag="2")]
22816        pub state_index: ::core::option::Option<i32>,
22817        /// Name of the entity. This is device-specific, determined by the PowerStats
22818        /// HAL, and cannot be configured by the user. An example would be
22819        /// "Bluetooth".
22820        #[prost(string, optional, tag="3")]
22821        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
22822        /// Name of the state. This is device-specific, determined by the PowerStats
22823        /// HAL, and cannot be configured by the user. An example would be
22824        /// "Active".
22825        #[prost(string, optional, tag="4")]
22826        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
22827    }
22828    #[derive(Clone, PartialEq, ::prost::Message)]
22829    pub struct StateResidency {
22830        /// Index corresponding to PowerEntityState.entity_index
22831        #[prost(int32, optional, tag="1")]
22832        pub entity_index: ::core::option::Option<i32>,
22833        /// Index corresponding to PowerEntityState.state_index
22834        #[prost(int32, optional, tag="2")]
22835        pub state_index: ::core::option::Option<i32>,
22836        /// Time since boot that this entity has been in this state
22837        #[prost(uint64, optional, tag="3")]
22838        pub total_time_in_state_ms: ::core::option::Option<u64>,
22839        /// Total number of times since boot that the entity has entered this state
22840        #[prost(uint64, optional, tag="4")]
22841        pub total_state_entry_count: ::core::option::Option<u64>,
22842        /// Timestamp of the last time the entity entered this state
22843        #[prost(uint64, optional, tag="5")]
22844        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
22845    }
22846}
22847// End of protos/perfetto/trace/power/android_entity_state_residency.proto
22848
22849// Begin of protos/perfetto/trace/power/battery_counters.proto
22850
22851#[derive(Clone, PartialEq, ::prost::Message)]
22852pub struct BatteryCounters {
22853    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
22854    #[prost(int64, optional, tag="1")]
22855    pub charge_counter_uah: ::core::option::Option<i64>,
22856    /// Remaining battery capacity percentage of total capacity
22857    #[prost(float, optional, tag="2")]
22858    pub capacity_percent: ::core::option::Option<f32>,
22859    /// Instantaneous battery current in microamperes(µA).
22860    /// Negative values indicate current being drained from the battery and
22861    /// positive values indicate current feeding the battery from a charge source
22862    /// (USB).
22863    ///
22864    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
22865    #[prost(int64, optional, tag="3")]
22866    pub current_ua: ::core::option::Option<i64>,
22867    /// Instantaneous battery current in microamperes(µA).
22868    #[prost(int64, optional, tag="4")]
22869    pub current_avg_ua: ::core::option::Option<i64>,
22870    /// Battery name, emitted only on multiple batteries.
22871    #[prost(string, optional, tag="5")]
22872    pub name: ::core::option::Option<::prost::alloc::string::String>,
22873    /// Battery capacity in microwatt-hours(µWh).
22874    #[prost(int64, optional, tag="6")]
22875    pub energy_counter_uwh: ::core::option::Option<i64>,
22876    /// Battery voltage in microvolts(µV).
22877    #[prost(int64, optional, tag="7")]
22878    pub voltage_uv: ::core::option::Option<i64>,
22879}
22880// End of protos/perfetto/trace/power/battery_counters.proto
22881
22882// Begin of protos/perfetto/trace/power/power_rails.proto
22883
22884#[derive(Clone, PartialEq, ::prost::Message)]
22885pub struct PowerRails {
22886    /// This is only emitted at the beginning of the trace.
22887    #[prost(message, repeated, tag="1")]
22888    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
22889    #[prost(message, repeated, tag="2")]
22890    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
22891    /// A unique session id that can be used to match energy data to sets of
22892    /// descriptors. The indices used by rail descriptors and energy data packets
22893    /// are meant to be unique to a given session uuid. When multiple data sources
22894    /// are running in parallel, each data source should use a unique id.
22895    #[prost(uint64, optional, tag="3")]
22896    pub session_uuid: ::core::option::Option<u64>,
22897}
22898/// Nested message and enum types in `PowerRails`.
22899pub mod power_rails {
22900    #[derive(Clone, PartialEq, ::prost::Message)]
22901    pub struct RailDescriptor {
22902        /// Index corresponding to the rail
22903        #[prost(uint32, optional, tag="1")]
22904        pub index: ::core::option::Option<u32>,
22905        /// Name of the rail
22906        #[prost(string, optional, tag="2")]
22907        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
22908        /// Name of the subsystem to which this rail belongs
22909        #[prost(string, optional, tag="3")]
22910        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
22911        /// Hardware sampling rate (Hz).
22912        #[prost(uint32, optional, tag="4")]
22913        pub sampling_rate: ::core::option::Option<u32>,
22914    }
22915    #[derive(Clone, PartialEq, ::prost::Message)]
22916    pub struct EnergyData {
22917        /// Index corresponding to RailDescriptor.index
22918        #[prost(uint32, optional, tag="1")]
22919        pub index: ::core::option::Option<u32>,
22920        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
22921        #[prost(uint64, optional, tag="2")]
22922        pub timestamp_ms: ::core::option::Option<u64>,
22923        /// Accumulated energy since device boot in microwatt-seconds (uWs).
22924        #[prost(uint64, optional, tag="3")]
22925        pub energy: ::core::option::Option<u64>,
22926    }
22927}
22928// End of protos/perfetto/trace/power/power_rails.proto
22929
22930// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
22931
22932#[derive(Clone, PartialEq, ::prost::Message)]
22933pub struct ObfuscatedMember {
22934    /// This is the obfuscated field name relative to the class containing the
22935    /// ObfuscatedMember.
22936    #[prost(string, optional, tag="1")]
22937    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22938    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
22939    /// field name including its class. Otherwise, this is this the unqualified
22940    /// deobfuscated field name relative to the class containing this
22941    /// ObfuscatedMember.
22942    #[prost(string, optional, tag="2")]
22943    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22944    /// R8 inline method support: line number ranges for disambiguation.
22945    /// When multiple methods map to the same obfuscated name, the line number
22946    /// from the stack frame is used to select the correct mapping.
22947    ///
22948    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
22949    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
22950    /// - source_line_start/end = 10:12 (line range in original source)
22951    ///
22952    /// Methods with the same obfuscated_name and overlapping obfuscated line
22953    /// ranges form an inline chain, ordered innermost (inlined) first.
22954    #[prost(uint32, optional, tag="3")]
22955    pub obfuscated_line_start: ::core::option::Option<u32>,
22956    #[prost(uint32, optional, tag="4")]
22957    pub obfuscated_line_end: ::core::option::Option<u32>,
22958    #[prost(uint32, optional, tag="5")]
22959    pub source_line_start: ::core::option::Option<u32>,
22960    #[prost(uint32, optional, tag="6")]
22961    pub source_line_end: ::core::option::Option<u32>,
22962}
22963#[derive(Clone, PartialEq, ::prost::Message)]
22964pub struct ObfuscatedClass {
22965    #[prost(string, optional, tag="1")]
22966    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22967    #[prost(string, optional, tag="2")]
22968    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22969    /// fields.
22970    #[prost(message, repeated, tag="3")]
22971    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22972    #[prost(message, repeated, tag="4")]
22973    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22974}
22975#[derive(Clone, PartialEq, ::prost::Message)]
22976pub struct DeobfuscationMapping {
22977    #[prost(string, optional, tag="1")]
22978    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
22979    #[prost(int64, optional, tag="2")]
22980    pub version_code: ::core::option::Option<i64>,
22981    #[prost(message, repeated, tag="3")]
22982    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
22983}
22984// Begin of protos/perfetto/trace/profiling/heap_graph.proto
22985
22986#[derive(Clone, PartialEq, ::prost::Message)]
22987pub struct HeapGraphRoot {
22988    /// Objects retained by this root.
22989    #[prost(uint64, repeated, tag="1")]
22990    pub object_ids: ::prost::alloc::vec::Vec<u64>,
22991    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
22992    pub root_type: ::core::option::Option<i32>,
22993}
22994/// Nested message and enum types in `HeapGraphRoot`.
22995pub mod heap_graph_root {
22996    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22997    #[repr(i32)]
22998    pub enum Type {
22999        RootUnknown = 0,
23000        RootJniGlobal = 1,
23001        RootJniLocal = 2,
23002        RootJavaFrame = 3,
23003        RootNativeStack = 4,
23004        RootStickyClass = 5,
23005        RootThreadBlock = 6,
23006        RootMonitorUsed = 7,
23007        RootThreadObject = 8,
23008        RootInternedString = 9,
23009        RootFinalizing = 10,
23010        RootDebugger = 11,
23011        RootReferenceCleanup = 12,
23012        RootVmInternal = 13,
23013        RootJniMonitor = 14,
23014    }
23015    impl Type {
23016        /// String value of the enum field names used in the ProtoBuf definition.
23017        ///
23018        /// The values are not transformed in any way and thus are considered stable
23019        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23020        pub fn as_str_name(&self) -> &'static str {
23021            match self {
23022                Type::RootUnknown => "ROOT_UNKNOWN",
23023                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
23024                Type::RootJniLocal => "ROOT_JNI_LOCAL",
23025                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
23026                Type::RootNativeStack => "ROOT_NATIVE_STACK",
23027                Type::RootStickyClass => "ROOT_STICKY_CLASS",
23028                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
23029                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
23030                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
23031                Type::RootInternedString => "ROOT_INTERNED_STRING",
23032                Type::RootFinalizing => "ROOT_FINALIZING",
23033                Type::RootDebugger => "ROOT_DEBUGGER",
23034                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
23035                Type::RootVmInternal => "ROOT_VM_INTERNAL",
23036                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
23037            }
23038        }
23039    }
23040}
23041#[derive(Clone, PartialEq, ::prost::Message)]
23042pub struct HeapGraphType {
23043    /// TODO(fmayer): Consider removing this and using the index in the repeaed
23044    /// field to save space.
23045    #[prost(uint64, optional, tag="1")]
23046    pub id: ::core::option::Option<u64>,
23047    #[prost(uint64, optional, tag="2")]
23048    pub location_id: ::core::option::Option<u64>,
23049    #[prost(string, optional, tag="3")]
23050    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
23051    /// Size of objects of this type.
23052    #[prost(uint64, optional, tag="4")]
23053    pub object_size: ::core::option::Option<u64>,
23054    #[prost(uint64, optional, tag="5")]
23055    pub superclass_id: ::core::option::Option<u64>,
23056    /// Indices for InternedData.field_names for the names of the fields of
23057    /// instances of this class. This does NOT include the fields from
23058    /// superclasses. The consumer of this data needs to walk all super
23059    /// classes to get a full lists of fields. Objects always write the
23060    /// fields in order of most specific class to the furthest up superclass.
23061    #[prost(uint64, repeated, tag="6")]
23062    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
23063    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
23064    pub kind: ::core::option::Option<i32>,
23065    #[prost(uint64, optional, tag="8")]
23066    pub classloader_id: ::core::option::Option<u64>,
23067}
23068/// Nested message and enum types in `HeapGraphType`.
23069pub mod heap_graph_type {
23070    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23071    #[repr(i32)]
23072    pub enum Kind {
23073        Unknown = 0,
23074        Normal = 1,
23075        Noreferences = 2,
23076        String = 3,
23077        Array = 4,
23078        Class = 5,
23079        Classloader = 6,
23080        Dexcache = 7,
23081        SoftReference = 8,
23082        WeakReference = 9,
23083        FinalizerReference = 10,
23084        PhantomReference = 11,
23085    }
23086    impl Kind {
23087        /// String value of the enum field names used in the ProtoBuf definition.
23088        ///
23089        /// The values are not transformed in any way and thus are considered stable
23090        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23091        pub fn as_str_name(&self) -> &'static str {
23092            match self {
23093                Kind::Unknown => "KIND_UNKNOWN",
23094                Kind::Normal => "KIND_NORMAL",
23095                Kind::Noreferences => "KIND_NOREFERENCES",
23096                Kind::String => "KIND_STRING",
23097                Kind::Array => "KIND_ARRAY",
23098                Kind::Class => "KIND_CLASS",
23099                Kind::Classloader => "KIND_CLASSLOADER",
23100                Kind::Dexcache => "KIND_DEXCACHE",
23101                Kind::SoftReference => "KIND_SOFT_REFERENCE",
23102                Kind::WeakReference => "KIND_WEAK_REFERENCE",
23103                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
23104                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
23105            }
23106        }
23107    }
23108}
23109#[derive(Clone, PartialEq, ::prost::Message)]
23110pub struct HeapGraphObject {
23111    /// Index for InternedData.types for the name of the type of this object.
23112    #[prost(uint64, optional, tag="2")]
23113    pub type_id: ::core::option::Option<u64>,
23114    /// Bytes occupied by this objects.
23115    #[prost(uint64, optional, tag="3")]
23116    pub self_size: ::core::option::Option<u64>,
23117    /// Add this to all non-zero values in reference_object_id. This is used to
23118    /// get more compact varint encoding.
23119    ///
23120    /// The name is confusing, but this has always been used as a base for
23121    /// reference_object_id. The field should be named reference_object_id_base.
23122    #[prost(uint64, optional, tag="6")]
23123    pub reference_field_id_base: ::core::option::Option<u64>,
23124    /// Indices for InternedData.field_names for the name of the field referring
23125    /// to the object. For Android S+ and for instances of normal classes (e.g.
23126    /// not instances of java.lang.Class or arrays), this is instead set in the
23127    /// corresponding HeapGraphType, and this is left empty.
23128    #[prost(uint64, repeated, tag="4")]
23129    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
23130    /// Ids of the Object that is referred to.
23131    #[prost(uint64, repeated, tag="5")]
23132    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
23133    /// To reduce the space required we only emit the heap type if it has changed
23134    /// from the previous object we recorded.
23135    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
23136    pub heap_type_delta: ::core::option::Option<i32>,
23137    /// Ids of the Objects referred by this object, not via fields, but via
23138    /// internal runtime structures.
23139    #[prost(uint64, repeated, tag="10")]
23140    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
23141    // =================================================================
23142    // |                      Object value fields                      |
23143    // =================================================================
23144
23145    /// `libcore.util.NativeAllocationRegistry.size`: Maps to the size (bytes) of
23146    /// the corresponding objects registered with the native allocation registry.
23147    /// N.B. this can be an approximation.
23148    #[prost(int64, optional, tag="8")]
23149    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
23150    /// Bitmap-specific field captures, only applicable to objects of this type.
23151    /// `android.graphics.Bitmap.mId`: Used for storage type and deduplication.
23152    #[prost(int64, optional, tag="11")]
23153    pub bitmap_id_field: ::core::option::Option<i64>,
23154    /// `android.graphics.Bitmap.mSourceId`: Used to identify the source process.
23155    #[prost(int64, optional, tag="12")]
23156    pub bitmap_source_id_field: ::core::option::Option<i64>,
23157    /// `android.graphics.Bitmap.mWidth`: Width in pixels
23158    #[prost(uint32, optional, tag="13")]
23159    pub bitmap_width_field: ::core::option::Option<u32>,
23160    /// `android.graphics.Bitmap.mHeight`: Height in pixels
23161    #[prost(uint32, optional, tag="14")]
23162    pub bitmap_height_field: ::core::option::Option<u32>,
23163    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
23164    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
23165}
23166/// Nested message and enum types in `HeapGraphObject`.
23167pub mod heap_graph_object {
23168    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23169    #[repr(i32)]
23170    pub enum HeapType {
23171        Unknown = 0,
23172        App = 1,
23173        Zygote = 2,
23174        BootImage = 3,
23175    }
23176    impl HeapType {
23177        /// String value of the enum field names used in the ProtoBuf definition.
23178        ///
23179        /// The values are not transformed in any way and thus are considered stable
23180        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23181        pub fn as_str_name(&self) -> &'static str {
23182            match self {
23183                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
23184                HeapType::App => "HEAP_TYPE_APP",
23185                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
23186                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
23187            }
23188        }
23189    }
23190    #[derive(Clone, PartialEq, ::prost::Oneof)]
23191    pub enum Identifier {
23192        #[prost(uint64, tag="1")]
23193        Id(u64),
23194        #[prost(uint64, tag="7")]
23195        IdDelta(u64),
23196    }
23197}
23198#[derive(Clone, PartialEq, ::prost::Message)]
23199pub struct HeapGraph {
23200    #[prost(int32, optional, tag="1")]
23201    pub pid: ::core::option::Option<i32>,
23202    /// This contains all objects at the time this dump was taken. Some of these
23203    /// will be live, some of those unreachable (garbage). To find the live
23204    /// objects, the client needs to build the transitive closure of objects
23205    /// reachable from |roots|.
23206    /// All objects not contained within that transitive closure are garbage that
23207    /// has not yet been collected.
23208    #[prost(message, repeated, tag="2")]
23209    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
23210    /// Roots at the time this dump was taken.
23211    /// All live objects are reachable from the roots. All other objects are
23212    /// garbage.
23213    #[prost(message, repeated, tag="7")]
23214    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
23215    /// Types used in HeapGraphObjects.
23216    #[prost(message, repeated, tag="9")]
23217    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
23218    /// Field names for references in managed heap graph.
23219    #[prost(message, repeated, tag="4")]
23220    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
23221    /// Paths of files used in managed heap graph.
23222    #[prost(message, repeated, tag="8")]
23223    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
23224    #[prost(bool, optional, tag="5")]
23225    pub continued: ::core::option::Option<bool>,
23226    #[prost(uint64, optional, tag="6")]
23227    pub index: ::core::option::Option<u64>,
23228}
23229// End of protos/perfetto/trace/profiling/heap_graph.proto
23230
23231// Begin of protos/perfetto/trace/profiling/profile_packet.proto
23232
23233// This file contains a mixture of messages emitted by various sampling
23234// profilers:
23235//
23236// Memory allocator profiling
23237// ----------------
23238// ProfilePacket:
23239//    The packet emitted by heapprofd, which started off as a native heap
23240//    (malloc/free) profiler, but now supports custom allocators as well. Each
23241//    packet contains a preaggregated state of the heap at snapshot time, which
23242//    report the total allocated/free bytes per callstack (plus other info such
23243//    as the number of samples).
23244// StreamingAllocation/StreamingFree:
23245//    Emitted by heapprofd when configured in streaming mode (i.e. when
23246//    stream_allocations = true). This is only for local testing, and doesn't
23247//    report callstacks (only address time and size of each alloc/free). It can
23248//    lead to enormous traces, as it contains the stream of each alloc/free call.
23249//
23250// Callstack sampling
23251// ------------------
23252// StreamingProfilePacket:
23253//    The packet emitted by the chromium in-process sampling profiler, which is
23254//    based on periodically sending a signal to itself, and unwinding the stack
23255//    in the signal handler. Each packet contains a series of individual stack
23256//    samples for a Chromium thread.
23257//
23258// Callstack and performance counter sampling
23259// ---------------------
23260// PerfSample:
23261//    The packet emitted by traced_perf sampling performance profiler based on
23262//    the perf_event_open syscall. Each packet represents an individual sample
23263//    of a performance counter (which might be a timer), and optionally a
23264//    callstack of the process that was scheduled at the time of the sample.
23265//
23266
23267/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
23268/// involve more than one ProfilePacket if the snapshot is big (when |continued|
23269/// is true). The cardinality and grouping is as follows:
23270/// A ProfilePacket contains:
23271///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
23272///     one heap per process (the main malloc/free heap), but there can be more if
23273///     the process is using the heapprofd API to profile custom allocators.
23274///   - Globally interned strings, mappings and frames (to allow de-duplicating
23275///     frames/mapping in common between different processes).
23276/// A ProcessHeapSamples contains:
23277///   - The process and heap identifier.
23278///   - A number of HeapSample, one for each callsite that had some alloc/frees.
23279///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
23280/// A HeapSample contains statistics about callsites:
23281///   - Total number of bytes allocated and freed from that callsite.
23282///   - Total number of alloc/free calls sampled.
23283///   - Stats at the local maximum when dump_at_max = true.
23284/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
23285#[derive(Clone, PartialEq, ::prost::Message)]
23286pub struct ProfilePacket {
23287    /// The following interning tables are only used in Android version Q.
23288    /// In newer versions, these tables are in InternedData
23289    /// (see protos/perfetto/trace/interned_data) and are shared across
23290    /// multiple ProfilePackets.
23291    /// For backwards compatibility, consumers need to first look up interned
23292    /// data in the tables within the ProfilePacket, and then, if they are empty,
23293    /// look up in the InternedData instead.
23294    #[prost(message, repeated, tag="1")]
23295    pub strings: ::prost::alloc::vec::Vec<InternedString>,
23296    #[prost(message, repeated, tag="4")]
23297    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
23298    #[prost(message, repeated, tag="2")]
23299    pub frames: ::prost::alloc::vec::Vec<Frame>,
23300    #[prost(message, repeated, tag="3")]
23301    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
23302    #[prost(message, repeated, tag="5")]
23303    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
23304    /// If this is true, the next ProfilePacket in this package_sequence_id is a
23305    /// continuation of this one.
23306    /// To get all samples for a process, accummulate its
23307    /// ProcessHeapSamples.samples until you see continued=false.
23308    #[prost(bool, optional, tag="6")]
23309    pub continued: ::core::option::Option<bool>,
23310    /// Index of this ProfilePacket on its package_sequence_id. Can be used
23311    /// to detect dropped data.
23312    /// Verify these are consecutive.
23313    #[prost(uint64, optional, tag="7")]
23314    pub index: ::core::option::Option<u64>,
23315}
23316/// Nested message and enum types in `ProfilePacket`.
23317pub mod profile_packet {
23318    /// Next ID: 9
23319    #[derive(Clone, PartialEq, ::prost::Message)]
23320    pub struct HeapSample {
23321        #[prost(uint64, optional, tag="1")]
23322        pub callstack_id: ::core::option::Option<u64>,
23323        /// bytes allocated at this callstack.
23324        #[prost(uint64, optional, tag="2")]
23325        pub self_allocated: ::core::option::Option<u64>,
23326        /// bytes allocated at this callstack that have been freed.
23327        #[prost(uint64, optional, tag="3")]
23328        pub self_freed: ::core::option::Option<u64>,
23329        /// Bytes allocated by this callstack but not freed at the time the malloc
23330        /// heap usage of this process was maximal. This is only set if dump_at_max
23331        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
23332        /// self_idle will not be set.
23333        #[prost(uint64, optional, tag="8")]
23334        pub self_max: ::core::option::Option<u64>,
23335        /// Number of allocations that were sampled at this callstack but not freed
23336        /// at the time the malloc heap usage of this process was maximal. This is
23337        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
23338        /// self_allocated, self_freed and self_idle will not be set.
23339        #[prost(uint64, optional, tag="9")]
23340        pub self_max_count: ::core::option::Option<u64>,
23341        /// timestamp \[opt\]
23342        #[prost(uint64, optional, tag="4")]
23343        pub timestamp: ::core::option::Option<u64>,
23344        /// Number of allocations that were sampled at this callstack.
23345        #[prost(uint64, optional, tag="5")]
23346        pub alloc_count: ::core::option::Option<u64>,
23347        /// Number of allocations that were sampled at this callstack that have been
23348        /// freed.
23349        #[prost(uint64, optional, tag="6")]
23350        pub free_count: ::core::option::Option<u64>,
23351    }
23352    #[derive(Clone, PartialEq, ::prost::Message)]
23353    pub struct Histogram {
23354        #[prost(message, repeated, tag="1")]
23355        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
23356    }
23357    /// Nested message and enum types in `Histogram`.
23358    pub mod histogram {
23359        #[derive(Clone, PartialEq, ::prost::Message)]
23360        pub struct Bucket {
23361            /// This bucket counts values from the previous bucket's (or -infinity if
23362            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
23363            /// (exclusive).
23364            #[prost(uint64, optional, tag="1")]
23365            pub upper_limit: ::core::option::Option<u64>,
23366            /// This is the highest bucket. This is set instead of the upper_limit. Any
23367            /// values larger or equal to the previous bucket's upper_limit are counted
23368            /// in this bucket.
23369            #[prost(bool, optional, tag="2")]
23370            pub max_bucket: ::core::option::Option<bool>,
23371            /// Number of values that fall into this range.
23372            #[prost(uint64, optional, tag="3")]
23373            pub count: ::core::option::Option<u64>,
23374        }
23375    }
23376    #[derive(Clone, PartialEq, ::prost::Message)]
23377    pub struct ProcessStats {
23378        #[prost(uint64, optional, tag="1")]
23379        pub unwinding_errors: ::core::option::Option<u64>,
23380        #[prost(uint64, optional, tag="2")]
23381        pub heap_samples: ::core::option::Option<u64>,
23382        #[prost(uint64, optional, tag="3")]
23383        pub map_reparses: ::core::option::Option<u64>,
23384        #[prost(message, optional, tag="4")]
23385        pub unwinding_time_us: ::core::option::Option<Histogram>,
23386        #[prost(uint64, optional, tag="5")]
23387        pub total_unwinding_time_us: ::core::option::Option<u64>,
23388        #[prost(uint64, optional, tag="6")]
23389        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
23390    }
23391    #[derive(Clone, PartialEq, ::prost::Message)]
23392    pub struct ProcessHeapSamples {
23393        #[prost(uint64, optional, tag="1")]
23394        pub pid: ::core::option::Option<u64>,
23395        /// This process was profiled from startup.
23396        /// If false, this process was already running when profiling started.
23397        #[prost(bool, optional, tag="3")]
23398        pub from_startup: ::core::option::Option<bool>,
23399        /// This process was not profiled because a concurrent session was active.
23400        /// If this is true, samples will be empty.
23401        #[prost(bool, optional, tag="4")]
23402        pub rejected_concurrent: ::core::option::Option<bool>,
23403        /// This process disconnected while it was profiled.
23404        /// If false, the process outlived the profiling session.
23405        #[prost(bool, optional, tag="6")]
23406        pub disconnected: ::core::option::Option<bool>,
23407        /// If disconnected, this disconnect was caused by the client overrunning
23408        /// the buffer.
23409        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
23410        /// on new S builds.
23411        #[prost(bool, optional, tag="7")]
23412        pub buffer_overran: ::core::option::Option<bool>,
23413        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
23414        pub client_error: ::core::option::Option<i32>,
23415        /// If disconnected, this disconnected was caused by the shared memory
23416        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
23417        /// MEMORY CORRUPTION.
23418        #[prost(bool, optional, tag="8")]
23419        pub buffer_corrupted: ::core::option::Option<bool>,
23420        /// If disconnected, this disconnect was caused by heapprofd exceeding
23421        /// guardrails during this profiling session.
23422        #[prost(bool, optional, tag="10")]
23423        pub hit_guardrail: ::core::option::Option<bool>,
23424        #[prost(string, optional, tag="11")]
23425        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
23426        #[prost(uint64, optional, tag="12")]
23427        pub sampling_interval_bytes: ::core::option::Option<u64>,
23428        #[prost(uint64, optional, tag="13")]
23429        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
23430        /// Timestamp of the state of the target process that this dump represents.
23431        /// This can be different to the timestamp of the TracePackets for various
23432        /// reasons:
23433        /// * If disconnected is set above, this is the timestamp of last state
23434        ///    heapprofd had of the process before it disconnected.
23435        /// * Otherwise, if the rate of events produced by the process is high,
23436        ///    heapprofd might be behind.
23437        ///
23438        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
23439        ///                to have a type enum that we can reuse here.
23440        #[prost(uint64, optional, tag="9")]
23441        pub timestamp: ::core::option::Option<u64>,
23442        /// Metadata about heapprofd.
23443        #[prost(message, optional, tag="5")]
23444        pub stats: ::core::option::Option<ProcessStats>,
23445        #[prost(message, repeated, tag="2")]
23446        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
23447    }
23448    /// Nested message and enum types in `ProcessHeapSamples`.
23449    pub mod process_heap_samples {
23450        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23451        #[repr(i32)]
23452        pub enum ClientError {
23453            None = 0,
23454            HitTimeout = 1,
23455            InvalidStackBounds = 2,
23456        }
23457        impl ClientError {
23458            /// String value of the enum field names used in the ProtoBuf definition.
23459            ///
23460            /// The values are not transformed in any way and thus are considered stable
23461            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23462            pub fn as_str_name(&self) -> &'static str {
23463                match self {
23464                    ClientError::None => "CLIENT_ERROR_NONE",
23465                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
23466                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
23467                }
23468            }
23469        }
23470    }
23471}
23472/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23473/// testing. Doesn't report the callsite.
23474#[derive(Clone, PartialEq, ::prost::Message)]
23475pub struct StreamingAllocation {
23476    /// TODO(fmayer): Add callstack.
23477    #[prost(uint64, repeated, packed="false", tag="1")]
23478    pub address: ::prost::alloc::vec::Vec<u64>,
23479    #[prost(uint64, repeated, packed="false", tag="2")]
23480    pub size: ::prost::alloc::vec::Vec<u64>,
23481    #[prost(uint64, repeated, packed="false", tag="3")]
23482    pub sample_size: ::prost::alloc::vec::Vec<u64>,
23483    #[prost(uint64, repeated, packed="false", tag="4")]
23484    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
23485    #[prost(uint32, repeated, packed="false", tag="5")]
23486    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23487    #[prost(uint64, repeated, packed="false", tag="6")]
23488    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23489}
23490/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23491/// testing. Doesn't report the callsite.
23492#[derive(Clone, PartialEq, ::prost::Message)]
23493pub struct StreamingFree {
23494    /// TODO(fmayer): Add callstack.
23495    #[prost(uint64, repeated, packed="false", tag="1")]
23496    pub address: ::prost::alloc::vec::Vec<u64>,
23497    #[prost(uint32, repeated, packed="false", tag="2")]
23498    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23499    #[prost(uint64, repeated, packed="false", tag="3")]
23500    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23501}
23502/// Packet emitted by the chromium in-process signal-based callstack sampler.
23503/// Represents a series of individual stack samples (sampled at discrete points
23504/// in time), rather than aggregated over an interval.
23505#[derive(Clone, PartialEq, ::prost::Message)]
23506pub struct StreamingProfilePacket {
23507    /// Index into InternedData.callstacks
23508    #[prost(uint64, repeated, packed="false", tag="1")]
23509    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
23510    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
23511    /// this with ClockSnapshot-based delta encoding instead.
23512    #[prost(int64, repeated, packed="false", tag="2")]
23513    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
23514    #[prost(int32, optional, tag="3")]
23515    pub process_priority: ::core::option::Option<i32>,
23516}
23517/// Namespace for the contained enums.
23518#[derive(Clone, PartialEq, ::prost::Message)]
23519pub struct Profiling {
23520}
23521/// Nested message and enum types in `Profiling`.
23522pub mod profiling {
23523    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23524    #[repr(i32)]
23525    pub enum CpuMode {
23526        ModeUnknown = 0,
23527        ModeKernel = 1,
23528        ModeUser = 2,
23529        /// The following values aren't expected, but included for completeness:
23530        ModeHypervisor = 3,
23531        ModeGuestKernel = 4,
23532        ModeGuestUser = 5,
23533    }
23534    impl CpuMode {
23535        /// String value of the enum field names used in the ProtoBuf definition.
23536        ///
23537        /// The values are not transformed in any way and thus are considered stable
23538        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23539        pub fn as_str_name(&self) -> &'static str {
23540            match self {
23541                CpuMode::ModeUnknown => "MODE_UNKNOWN",
23542                CpuMode::ModeKernel => "MODE_KERNEL",
23543                CpuMode::ModeUser => "MODE_USER",
23544                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
23545                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
23546                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
23547            }
23548        }
23549    }
23550    /// Enumeration of libunwindstack's error codes.
23551    /// NB: the integral representations of the two enums are different.
23552    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23553    #[repr(i32)]
23554    pub enum StackUnwindError {
23555        UnwindErrorUnknown = 0,
23556        UnwindErrorNone = 1,
23557        UnwindErrorMemoryInvalid = 2,
23558        UnwindErrorUnwindInfo = 3,
23559        UnwindErrorUnsupported = 4,
23560        UnwindErrorInvalidMap = 5,
23561        UnwindErrorMaxFramesExceeded = 6,
23562        UnwindErrorRepeatedFrame = 7,
23563        UnwindErrorInvalidElf = 8,
23564        UnwindErrorSystemCall = 9,
23565        UnwindErrorThreadTimeout = 10,
23566        UnwindErrorThreadDoesNotExist = 11,
23567        UnwindErrorBadArch = 12,
23568        UnwindErrorMapsParse = 13,
23569        UnwindErrorInvalidParameter = 14,
23570        UnwindErrorPtraceCall = 15,
23571    }
23572    impl StackUnwindError {
23573        /// String value of the enum field names used in the ProtoBuf definition.
23574        ///
23575        /// The values are not transformed in any way and thus are considered stable
23576        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23577        pub fn as_str_name(&self) -> &'static str {
23578            match self {
23579                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
23580                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
23581                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
23582                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
23583                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
23584                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
23585                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
23586                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
23587                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
23588                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
23589                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
23590                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
23591                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
23592                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
23593                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
23594                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
23595            }
23596        }
23597    }
23598}
23599/// Packet emitted by the traced_perf sampling performance profiler, which
23600/// gathers data via the perf_event_open syscall. Each packet contains an
23601/// individual sample with a counter value, and optionally a
23602/// callstack.
23603///
23604/// Timestamps are within the root packet. The config can specify the clock, or
23605/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
23606/// timeframe, the default was CLOCK_BOOTTIME.
23607///
23608/// There are several distinct views of this message:
23609/// * indication of kernel buffer data loss (kernel_records_lost set)
23610/// * indication of skipped samples (sample_skipped_reason set)
23611/// * notable event in the sampling implementation (producer_event set)
23612/// * normal sample (timebase_count set, typically also callstack_iid)
23613#[derive(Clone, PartialEq, ::prost::Message)]
23614pub struct PerfSample {
23615    #[prost(uint32, optional, tag="1")]
23616    pub cpu: ::core::option::Option<u32>,
23617    #[prost(uint32, optional, tag="2")]
23618    pub pid: ::core::option::Option<u32>,
23619    #[prost(uint32, optional, tag="3")]
23620    pub tid: ::core::option::Option<u32>,
23621    /// Execution state that the process was sampled at.
23622    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
23623    pub cpu_mode: ::core::option::Option<i32>,
23624    /// Value of the timebase counter (since the event was configured, no deltas).
23625    #[prost(uint64, optional, tag="6")]
23626    pub timebase_count: ::core::option::Option<u64>,
23627    /// Value of the followers counter (since the event was configured, no deltas).
23628    #[prost(uint64, repeated, packed="false", tag="7")]
23629    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
23630    /// Unwound callstack. Might be partial, in which case a synthetic "error"
23631    /// frame is appended, and |unwind_error| is set accordingly.
23632    #[prost(uint64, optional, tag="4")]
23633    pub callstack_iid: ::core::option::Option<u64>,
23634    /// If set, indicates that this message is not a sample, but rather an
23635    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
23636    /// loss occurs when the kernel has insufficient ring buffer capacity to write
23637    /// a record (which gets discarded). A record in this context is an individual
23638    /// ring buffer entry, and counts more than just sample records.
23639    ///
23640    /// The |timestamp| of the packet corresponds to the time that the producer
23641    /// wrote the packet for trace-sorting purposes alone, and should not be
23642    /// interpreted relative to the sample timestamps. This field is sufficient to
23643    /// detect that *some* kernel data loss happened within the trace, but not the
23644    /// specific time bounds of that loss (which would require tracking precedessor
23645    /// & successor timestamps, which is not deemed necessary at the moment).
23646    #[prost(uint64, optional, tag="17")]
23647    pub kernel_records_lost: ::core::option::Option<u64>,
23648    #[prost(message, optional, tag="19")]
23649    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
23650    /// If set, stack unwinding was incomplete due to an error.
23651    /// Unset values should be treated as UNWIND_ERROR_NONE.
23652    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
23653    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
23654    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
23655    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
23656}
23657/// Nested message and enum types in `PerfSample`.
23658pub mod perf_sample {
23659    /// A notable event within the sampling implementation.
23660    #[derive(Clone, PartialEq, ::prost::Message)]
23661    pub struct ProducerEvent {
23662        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
23663        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
23664    }
23665    /// Nested message and enum types in `ProducerEvent`.
23666    pub mod producer_event {
23667        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23668        #[repr(i32)]
23669        pub enum DataSourceStopReason {
23670            ProfilerStopUnknown = 0,
23671            ProfilerStopGuardrail = 1,
23672        }
23673        impl DataSourceStopReason {
23674            /// String value of the enum field names used in the ProtoBuf definition.
23675            ///
23676            /// The values are not transformed in any way and thus are considered stable
23677            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23678            pub fn as_str_name(&self) -> &'static str {
23679                match self {
23680                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
23681                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
23682                }
23683            }
23684        }
23685        #[derive(Clone, PartialEq, ::prost::Oneof)]
23686        pub enum OptionalSourceStopReason {
23687            #[prost(enumeration="DataSourceStopReason", tag="1")]
23688            SourceStopReason(i32),
23689        }
23690    }
23691    /// If set, indicates that the profiler encountered a sample that was relevant,
23692    /// but was skipped.
23693    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23694    #[repr(i32)]
23695    pub enum SampleSkipReason {
23696        ProfilerSkipUnknown = 0,
23697        ProfilerSkipReadStage = 1,
23698        ProfilerSkipUnwindStage = 2,
23699        ProfilerSkipUnwindEnqueue = 3,
23700        ProfilerSkipNotInScope = 4,
23701    }
23702    impl SampleSkipReason {
23703        /// String value of the enum field names used in the ProtoBuf definition.
23704        ///
23705        /// The values are not transformed in any way and thus are considered stable
23706        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23707        pub fn as_str_name(&self) -> &'static str {
23708            match self {
23709                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
23710                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
23711                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
23712                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
23713                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
23714            }
23715        }
23716    }
23717    /// If set, stack unwinding was incomplete due to an error.
23718    /// Unset values should be treated as UNWIND_ERROR_NONE.
23719    #[derive(Clone, PartialEq, ::prost::Oneof)]
23720    pub enum OptionalUnwindError {
23721        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
23722        UnwindError(i32),
23723    }
23724    #[derive(Clone, PartialEq, ::prost::Oneof)]
23725    pub enum OptionalSampleSkippedReason {
23726        #[prost(enumeration="SampleSkipReason", tag="18")]
23727        SampleSkippedReason(i32),
23728    }
23729}
23730/// Submessage for TracePacketDefaults.
23731#[derive(Clone, PartialEq, ::prost::Message)]
23732pub struct PerfSampleDefaults {
23733    /// The sampling timebase. Might not be identical to the data source config if
23734    /// the implementation decided to default/override some parameters.
23735    #[prost(message, optional, tag="1")]
23736    pub timebase: ::core::option::Option<perf_events::Timebase>,
23737    /// Description of followers event
23738    #[prost(message, repeated, tag="4")]
23739    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
23740    /// If the config requested process sharding, report back the count and which
23741    /// of those bins was selected. Never changes for the duration of a trace.
23742    #[prost(uint32, optional, tag="2")]
23743    pub process_shard_count: ::core::option::Option<u32>,
23744    #[prost(uint32, optional, tag="3")]
23745    pub chosen_process_shard: ::core::option::Option<u32>,
23746}
23747// End of protos/perfetto/trace/profiling/profile_packet.proto
23748
23749// Begin of protos/perfetto/trace/profiling/smaps.proto
23750
23751#[derive(Clone, PartialEq, ::prost::Message)]
23752pub struct SmapsEntry {
23753    #[prost(string, optional, tag="1")]
23754    pub path: ::core::option::Option<::prost::alloc::string::String>,
23755    #[prost(uint64, optional, tag="2")]
23756    pub size_kb: ::core::option::Option<u64>,
23757    #[prost(uint64, optional, tag="3")]
23758    pub private_dirty_kb: ::core::option::Option<u64>,
23759    #[prost(uint64, optional, tag="4")]
23760    pub swap_kb: ::core::option::Option<u64>,
23761    /// for field upload (instead of path).
23762    #[prost(string, optional, tag="5")]
23763    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
23764    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
23765    #[prost(uint64, optional, tag="6")]
23766    pub start_address: ::core::option::Option<u64>,
23767    #[prost(uint64, optional, tag="7")]
23768    pub module_timestamp: ::core::option::Option<u64>,
23769    #[prost(string, optional, tag="8")]
23770    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
23771    #[prost(string, optional, tag="9")]
23772    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
23773    #[prost(uint32, optional, tag="10")]
23774    pub protection_flags: ::core::option::Option<u32>,
23775    #[prost(uint64, optional, tag="11")]
23776    pub private_clean_resident_kb: ::core::option::Option<u64>,
23777    #[prost(uint64, optional, tag="12")]
23778    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
23779    #[prost(uint64, optional, tag="13")]
23780    pub shared_clean_resident_kb: ::core::option::Option<u64>,
23781    #[prost(uint64, optional, tag="14")]
23782    pub locked_kb: ::core::option::Option<u64>,
23783    #[prost(uint64, optional, tag="15")]
23784    pub proportional_resident_kb: ::core::option::Option<u64>,
23785}
23786#[derive(Clone, PartialEq, ::prost::Message)]
23787pub struct SmapsPacket {
23788    #[prost(uint32, optional, tag="1")]
23789    pub pid: ::core::option::Option<u32>,
23790    #[prost(message, repeated, tag="2")]
23791    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
23792}
23793// End of protos/perfetto/trace/profiling/smaps.proto
23794
23795// Begin of protos/perfetto/trace/ps/process_stats.proto
23796
23797/// Per-process periodically sampled stats. These samples are wrapped in a
23798/// dedicated message (as opposite to be fields in process_tree.proto) because
23799/// they are dumped at a different rate than cmdline and thread list.
23800/// Note: not all of these stats will be present in every ProcessStats message
23801/// and sometimes processes may be missing. This is because counters are
23802/// cached to reduce emission of counters which do not change.
23803#[derive(Clone, PartialEq, ::prost::Message)]
23804pub struct ProcessStats {
23805    #[prost(message, repeated, tag="1")]
23806    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
23807    /// The time at which we finish collecting this batch of samples;
23808    /// the top-level packet timestamp is the time at which
23809    /// we begin collection.
23810    #[prost(uint64, optional, tag="2")]
23811    pub collection_end_timestamp: ::core::option::Option<u64>,
23812}
23813/// Nested message and enum types in `ProcessStats`.
23814pub mod process_stats {
23815    /// Per-thread periodically sampled stats.
23816    /// Note: not all of these stats will be present in every message. See the note
23817    /// for ProcessStats.
23818    #[derive(Clone, PartialEq, ::prost::Message)]
23819    pub struct Thread {
23820        #[prost(int32, optional, tag="1")]
23821        pub tid: ::core::option::Option<i32>,
23822    }
23823    #[derive(Clone, PartialEq, ::prost::Message)]
23824    pub struct FdInfo {
23825        #[prost(uint64, optional, tag="1")]
23826        pub fd: ::core::option::Option<u64>,
23827        #[prost(string, optional, tag="2")]
23828        pub path: ::core::option::Option<::prost::alloc::string::String>,
23829    }
23830    #[derive(Clone, PartialEq, ::prost::Message)]
23831    pub struct Process {
23832        #[prost(int32, optional, tag="1")]
23833        pub pid: ::core::option::Option<i32>,
23834        #[prost(message, repeated, tag="11")]
23835        pub threads: ::prost::alloc::vec::Vec<Thread>,
23836        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
23837        #[prost(uint64, optional, tag="2")]
23838        pub vm_size_kb: ::core::option::Option<u64>,
23839        #[prost(uint64, optional, tag="3")]
23840        pub vm_rss_kb: ::core::option::Option<u64>,
23841        #[prost(uint64, optional, tag="4")]
23842        pub rss_anon_kb: ::core::option::Option<u64>,
23843        #[prost(uint64, optional, tag="5")]
23844        pub rss_file_kb: ::core::option::Option<u64>,
23845        #[prost(uint64, optional, tag="6")]
23846        pub rss_shmem_kb: ::core::option::Option<u64>,
23847        #[prost(uint64, optional, tag="7")]
23848        pub vm_swap_kb: ::core::option::Option<u64>,
23849        #[prost(uint64, optional, tag="8")]
23850        pub vm_locked_kb: ::core::option::Option<u64>,
23851        /// When adding a new field remember to update kProcMemCounterSize in
23852        /// the trace processor.
23853        #[prost(uint64, optional, tag="9")]
23854        pub vm_hwm_kb: ::core::option::Option<u64>,
23855        #[prost(int64, optional, tag="10")]
23856        pub oom_score_adj: ::core::option::Option<i64>,
23857        /// The peak resident set size is resettable in newer Posix kernels.
23858        /// This field specifies if reset is supported and if the writer had reset
23859        /// the peaks after each process stats recording.
23860        #[prost(bool, optional, tag="12")]
23861        pub is_peak_rss_resettable: ::core::option::Option<bool>,
23862        /// Private, shared and swap footprint of the process as measured by
23863        /// Chrome. To know more about these metrics refer to:
23864        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
23865        #[prost(uint32, optional, tag="13")]
23866        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
23867        #[prost(uint32, optional, tag="14")]
23868        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
23869        #[prost(message, repeated, tag="15")]
23870        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
23871        /// These fields are set only when scan_smaps_rollup=true
23872        #[prost(uint64, optional, tag="16")]
23873        pub smr_rss_kb: ::core::option::Option<u64>,
23874        #[prost(uint64, optional, tag="17")]
23875        pub smr_pss_kb: ::core::option::Option<u64>,
23876        #[prost(uint64, optional, tag="18")]
23877        pub smr_pss_anon_kb: ::core::option::Option<u64>,
23878        #[prost(uint64, optional, tag="19")]
23879        pub smr_pss_file_kb: ::core::option::Option<u64>,
23880        #[prost(uint64, optional, tag="20")]
23881        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
23882        #[prost(uint64, optional, tag="23")]
23883        pub smr_swap_pss_kb: ::core::option::Option<u64>,
23884        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
23885        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23886        /// Resolution of "clock ticks", usually 10ms.
23887        #[prost(uint64, optional, tag="21")]
23888        pub runtime_user_mode: ::core::option::Option<u64>,
23889        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
23890        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23891        /// Resolution of "clock ticks", usually 10ms.
23892        #[prost(uint64, optional, tag="22")]
23893        pub runtime_kernel_mode: ::core::option::Option<u64>,
23894        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
23895        #[prost(uint64, optional, tag="24")]
23896        pub dmabuf_rss_kb: ::core::option::Option<u64>,
23897    }
23898}
23899// End of protos/perfetto/trace/ps/process_stats.proto
23900
23901// Begin of protos/perfetto/trace/ps/process_tree.proto
23902
23903/// Metadata about the processes and threads in the trace.
23904/// Note: this proto was designed to be filled in by traced_probes and should
23905/// only be populated with accurate information coming from the system. Other
23906/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
23907/// in TrackDescriptor.
23908#[derive(Clone, PartialEq, ::prost::Message)]
23909pub struct ProcessTree {
23910    /// List of processes and threads in the client. These lists are incremental
23911    /// and not exhaustive. A process and its threads might show up separately in
23912    /// different ProcessTree messages. A thread might event not show up at all, if
23913    /// no sched_switch activity was detected, for instance:
23914    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
23915    /// #1 { threads: [{pid: 12, tgid: 10}] }
23916    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
23917    #[prost(message, repeated, tag="1")]
23918    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
23919    #[prost(message, repeated, tag="2")]
23920    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
23921    /// The time at which we finish collecting this process tree;
23922    /// the top-level packet timestamp is the time at which
23923    /// we begin collection.
23924    #[prost(uint64, optional, tag="3")]
23925    pub collection_end_timestamp: ::core::option::Option<u64>,
23926}
23927/// Nested message and enum types in `ProcessTree`.
23928pub mod process_tree {
23929    /// Representation of a thread.
23930    #[derive(Clone, PartialEq, ::prost::Message)]
23931    pub struct Thread {
23932        /// The thread ID (as per gettid()) in the root PID namespace.
23933        #[prost(int32, optional, tag="1")]
23934        pub tid: ::core::option::Option<i32>,
23935        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
23936        #[prost(int32, optional, tag="3")]
23937        pub tgid: ::core::option::Option<i32>,
23938        /// The name of the thread.
23939        #[prost(string, optional, tag="2")]
23940        pub name: ::core::option::Option<::prost::alloc::string::String>,
23941        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
23942        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
23943        /// level thread ID) omitted.
23944        #[prost(int32, repeated, packed="false", tag="4")]
23945        pub nstid: ::prost::alloc::vec::Vec<i32>,
23946    }
23947    /// Representation of a process.
23948    #[derive(Clone, PartialEq, ::prost::Message)]
23949    pub struct Process {
23950        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
23951        /// PID namespace.
23952        #[prost(int32, optional, tag="1")]
23953        pub pid: ::core::option::Option<i32>,
23954        /// The parent process ID, as per getppid().
23955        #[prost(int32, optional, tag="2")]
23956        pub ppid: ::core::option::Option<i32>,
23957        /// The command line for the process, as per /proc/pid/cmdline, broken up on
23958        /// NUL bytes.
23959        /// If it is a kernel thread or a zombie, there will only be one cmdline
23960        /// field and it will contain /proc/pid/comm.
23961        #[prost(string, repeated, tag="3")]
23962        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23963        /// If true, the |cmdline| field was filled with the main thread's "comm"
23964        /// field instead.
23965        /// Introduced in: perfetto v50.
23966        #[prost(bool, optional, tag="9")]
23967        pub cmdline_is_comm: ::core::option::Option<bool>,
23968        /// The uid for the process, as per /proc/pid/status.
23969        #[prost(int32, optional, tag="5")]
23970        pub uid: ::core::option::Option<i32>,
23971        /// The non-root-level process IDs if the process runs in a PID namespace.
23972        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
23973        /// (root-level process ID) omitted.
23974        #[prost(int32, repeated, packed="false", tag="6")]
23975        pub nspid: ::prost::alloc::vec::Vec<i32>,
23976        /// Timestamp of when the process was created, in nanoseconds
23977        /// from boot. Parsed from starttime in /proc/pid/stat.
23978        /// Recorded if record_process_age config option is set.
23979        /// Resolution of "clock ticks", usually 10ms.
23980        #[prost(uint64, optional, tag="7")]
23981        pub process_start_from_boot: ::core::option::Option<u64>,
23982        /// If true, the process is a kernel thread.
23983        /// Set only on linux v6.4+. For traces from older devices, it is possible to
23984        /// infer most kthreads by checking that they're a descendant of kthreadd
23985        /// (pid=2), or are the idle process (pid=0).
23986        /// Introduced in: perfetto v50.
23987        #[prost(bool, optional, tag="8")]
23988        pub is_kthread: ::core::option::Option<bool>,
23989    }
23990}
23991// End of protos/perfetto/trace/ps/process_tree.proto
23992
23993// Begin of protos/perfetto/trace/remote_clock_sync.proto
23994
23995/// Records the parameters for aligning clock readings between machines.
23996#[derive(Clone, PartialEq, ::prost::Message)]
23997pub struct RemoteClockSync {
23998    #[prost(message, repeated, tag="1")]
23999    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
24000}
24001/// Nested message and enum types in `RemoteClockSync`.
24002pub mod remote_clock_sync {
24003    /// Synchronized clock snapshots taken on both sides of the relay port (the
24004    /// tracing service and the relay service). A round of clock synchronization
24005    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
24006    /// snapshot -> client snapshot -> host snapshot.
24007    #[derive(Clone, PartialEq, ::prost::Message)]
24008    pub struct SyncedClocks {
24009        #[prost(message, optional, tag="2")]
24010        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
24011        #[prost(message, optional, tag="3")]
24012        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
24013    }
24014}
24015// End of protos/perfetto/trace/remote_clock_sync.proto
24016
24017// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
24018
24019/// Deliberate empty message. See comment on StatsdAtom#atom below.
24020#[derive(Clone, PartialEq, ::prost::Message)]
24021pub struct Atom {
24022}
24023/// One or more statsd atoms. This must continue to match:
24024/// perfetto/protos/third_party/statsd/shell_data.proto
24025/// So that we can efficiently add data from statsd directly to the
24026/// trace.
24027#[derive(Clone, PartialEq, ::prost::Message)]
24028pub struct StatsdAtom {
24029    /// Atom should be filled with an Atom proto from:
24030    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
24031    /// We don't reference Atom directly here since we don't want to import
24032    /// Atom.proto and all its transitive dependencies into Perfetto.
24033    /// atom and timestamp_nanos have the same cardinality
24034    #[prost(message, repeated, tag="1")]
24035    pub atom: ::prost::alloc::vec::Vec<Atom>,
24036    #[prost(int64, repeated, packed="false", tag="2")]
24037    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
24038}
24039// End of protos/perfetto/trace/statsd/statsd_atom.proto
24040
24041// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
24042
24043/// Various Linux system stat counters from /proc.
24044/// The fields in this message can be reported at different rates and with
24045/// different granularity. See sys_stats_config.proto.
24046#[derive(Clone, PartialEq, ::prost::Message)]
24047pub struct SysStats {
24048    #[prost(message, repeated, tag="1")]
24049    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
24050    #[prost(message, repeated, tag="2")]
24051    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
24052    /// One entry per cpu.
24053    #[prost(message, repeated, tag="3")]
24054    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
24055    /// Num processes forked since boot.
24056    /// Populated only if FORK_COUNT in config.stat_counters.
24057    #[prost(uint64, optional, tag="4")]
24058    pub num_forks: ::core::option::Option<u64>,
24059    // Number of interrupts, broken by IRQ number.
24060    // Populated only if IRQ_COUNTS in config.stat_counters.
24061
24062    /// Total num of irqs serviced since boot.
24063    #[prost(uint64, optional, tag="5")]
24064    pub num_irq_total: ::core::option::Option<u64>,
24065    #[prost(message, repeated, tag="6")]
24066    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24067    // Number of softirqs, broken by softirq number.
24068    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
24069
24070    /// Total num of softirqs since boot.
24071    #[prost(uint64, optional, tag="7")]
24072    pub num_softirq_total: ::core::option::Option<u64>,
24073    /// Per-softirq count.
24074    #[prost(message, repeated, tag="8")]
24075    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24076    /// The time at which we finish collecting this set of samples;
24077    /// the top-level packet timestamp is the time at which
24078    /// we begin collection.
24079    #[prost(uint64, optional, tag="9")]
24080    pub collection_end_timestamp: ::core::option::Option<u64>,
24081    /// One entry per device.
24082    #[prost(message, repeated, tag="10")]
24083    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
24084    /// Cpu current frequency from
24085    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
24086    /// One entry per cpu. Report 0 for offline cpu
24087    #[prost(uint32, repeated, packed="false", tag="11")]
24088    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
24089    /// One entry per each node's zones.
24090    #[prost(message, repeated, tag="12")]
24091    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
24092    /// One entry per disk device.
24093    #[prost(message, repeated, tag="13")]
24094    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
24095    /// One entry per PsiResource type.
24096    #[prost(message, repeated, tag="14")]
24097    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
24098    #[prost(message, repeated, tag="15")]
24099    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
24100    #[prost(message, repeated, tag="16")]
24101    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
24102    /// Read GPU frequency info on Intel/AMD devices.
24103    #[prost(uint64, repeated, packed="false", tag="17")]
24104    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
24105    #[prost(message, repeated, tag="18")]
24106    pub slab_info: ::prost::alloc::vec::Vec<sys_stats::SlabInfo>,
24107}
24108/// Nested message and enum types in `SysStats`.
24109pub mod sys_stats {
24110    /// Counters from /proc/meminfo. Values are in KB.
24111    #[derive(Clone, PartialEq, ::prost::Message)]
24112    pub struct MeminfoValue {
24113        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
24114        pub key: ::core::option::Option<i32>,
24115        #[prost(uint64, optional, tag="2")]
24116        pub value: ::core::option::Option<u64>,
24117    }
24118    /// Counter from /proc/vmstat. Units are often pages, not KB.
24119    #[derive(Clone, PartialEq, ::prost::Message)]
24120    pub struct VmstatValue {
24121        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
24122        pub key: ::core::option::Option<i32>,
24123        #[prost(uint64, optional, tag="2")]
24124        pub value: ::core::option::Option<u64>,
24125    }
24126    /// Times in each mode, since boot. Unit: nanoseconds.
24127    #[derive(Clone, PartialEq, ::prost::Message)]
24128    pub struct CpuTimes {
24129        #[prost(uint32, optional, tag="1")]
24130        pub cpu_id: ::core::option::Option<u32>,
24131        /// Time spent in user mode.
24132        #[prost(uint64, optional, tag="2")]
24133        pub user_ns: ::core::option::Option<u64>,
24134        /// Time spent in user mode (low prio).
24135        #[prost(uint64, optional, tag="3")]
24136        pub user_nice_ns: ::core::option::Option<u64>,
24137        /// Time spent in system mode.
24138        #[prost(uint64, optional, tag="4")]
24139        pub system_mode_ns: ::core::option::Option<u64>,
24140        /// Time spent in the idle task.
24141        #[prost(uint64, optional, tag="5")]
24142        pub idle_ns: ::core::option::Option<u64>,
24143        /// Time spent waiting for I/O.
24144        #[prost(uint64, optional, tag="6")]
24145        pub io_wait_ns: ::core::option::Option<u64>,
24146        /// Time spent servicing interrupts.
24147        #[prost(uint64, optional, tag="7")]
24148        pub irq_ns: ::core::option::Option<u64>,
24149        /// Time spent servicing softirqs.
24150        #[prost(uint64, optional, tag="8")]
24151        pub softirq_ns: ::core::option::Option<u64>,
24152        /// Time spent executing something else on host than this guest.
24153        #[prost(uint64, optional, tag="9")]
24154        pub steal_ns: ::core::option::Option<u64>,
24155    }
24156    #[derive(Clone, PartialEq, ::prost::Message)]
24157    pub struct InterruptCount {
24158        #[prost(int32, optional, tag="1")]
24159        pub irq: ::core::option::Option<i32>,
24160        #[prost(uint64, optional, tag="2")]
24161        pub count: ::core::option::Option<u64>,
24162    }
24163    /// Frequencies for /sys/class/devfreq/ entries in kHz.
24164    #[derive(Clone, PartialEq, ::prost::Message)]
24165    pub struct DevfreqValue {
24166        #[prost(string, optional, tag="1")]
24167        pub key: ::core::option::Option<::prost::alloc::string::String>,
24168        #[prost(uint64, optional, tag="2")]
24169        pub value: ::core::option::Option<u64>,
24170    }
24171    #[derive(Clone, PartialEq, ::prost::Message)]
24172    pub struct BuddyInfo {
24173        #[prost(string, optional, tag="1")]
24174        pub node: ::core::option::Option<::prost::alloc::string::String>,
24175        #[prost(string, optional, tag="2")]
24176        pub zone: ::core::option::Option<::prost::alloc::string::String>,
24177        #[prost(uint32, repeated, packed="false", tag="3")]
24178        pub order_pages: ::prost::alloc::vec::Vec<u32>,
24179    }
24180    /// Counters from /proc/diskstats.
24181    #[derive(Clone, PartialEq, ::prost::Message)]
24182    pub struct DiskStat {
24183        #[prost(string, optional, tag="1")]
24184        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
24185        #[prost(uint64, optional, tag="2")]
24186        pub read_sectors: ::core::option::Option<u64>,
24187        #[prost(uint64, optional, tag="3")]
24188        pub read_time_ms: ::core::option::Option<u64>,
24189        #[prost(uint64, optional, tag="4")]
24190        pub write_sectors: ::core::option::Option<u64>,
24191        #[prost(uint64, optional, tag="5")]
24192        pub write_time_ms: ::core::option::Option<u64>,
24193        #[prost(uint64, optional, tag="6")]
24194        pub discard_sectors: ::core::option::Option<u64>,
24195        #[prost(uint64, optional, tag="7")]
24196        pub discard_time_ms: ::core::option::Option<u64>,
24197        #[prost(uint64, optional, tag="8")]
24198        pub flush_count: ::core::option::Option<u64>,
24199        #[prost(uint64, optional, tag="9")]
24200        pub flush_time_ms: ::core::option::Option<u64>,
24201    }
24202    /// Reading from /proc/pressure/*.
24203    #[derive(Clone, PartialEq, ::prost::Message)]
24204    pub struct PsiSample {
24205        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
24206        pub resource: ::core::option::Option<i32>,
24207        /// Total absolute stall time (in nanos) for a given resource.
24208        /// While PSI readings are in micros, we store in nanos for consistency with
24209        /// most other time-based counters.
24210        #[prost(uint64, optional, tag="2")]
24211        pub total_ns: ::core::option::Option<u64>,
24212    }
24213    /// Nested message and enum types in `PsiSample`.
24214    pub mod psi_sample {
24215        /// Type of resource that may have exhibited pressure stalls.
24216        ///     * _SOME indicates some resource tasks stalled.
24217        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
24218        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24219        #[repr(i32)]
24220        pub enum PsiResource {
24221            Unspecified = 0,
24222            CpuSome = 1,
24223            CpuFull = 2,
24224            IoSome = 3,
24225            IoFull = 4,
24226            MemorySome = 5,
24227            MemoryFull = 6,
24228        }
24229        impl PsiResource {
24230            /// String value of the enum field names used in the ProtoBuf definition.
24231            ///
24232            /// The values are not transformed in any way and thus are considered stable
24233            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24234            pub fn as_str_name(&self) -> &'static str {
24235                match self {
24236                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
24237                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
24238                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
24239                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
24240                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
24241                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
24242                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
24243                }
24244            }
24245        }
24246    }
24247    /// Reading from /sys/class/thermal/*.
24248    #[derive(Clone, PartialEq, ::prost::Message)]
24249    pub struct ThermalZone {
24250        #[prost(string, optional, tag="1")]
24251        pub name: ::core::option::Option<::prost::alloc::string::String>,
24252        #[prost(uint64, optional, tag="2")]
24253        pub temp: ::core::option::Option<u64>,
24254        #[prost(string, optional, tag="3")]
24255        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
24256    }
24257    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
24258    #[derive(Clone, PartialEq, ::prost::Message)]
24259    pub struct CpuIdleStateEntry {
24260        /// Name of the idle state, e.g. C1-C10
24261        #[prost(string, optional, tag="1")]
24262        pub state: ::core::option::Option<::prost::alloc::string::String>,
24263        #[prost(uint64, optional, tag="2")]
24264        pub duration_us: ::core::option::Option<u64>,
24265    }
24266    #[derive(Clone, PartialEq, ::prost::Message)]
24267    pub struct CpuIdleState {
24268        #[prost(uint32, optional, tag="1")]
24269        pub cpu_id: ::core::option::Option<u32>,
24270        #[prost(message, repeated, tag="2")]
24271        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
24272    }
24273    /// Reading from /proc/slabinfo.
24274    #[derive(Clone, PartialEq, ::prost::Message)]
24275    pub struct SlabInfo {
24276        #[prost(string, optional, tag="1")]
24277        pub name: ::core::option::Option<::prost::alloc::string::String>,
24278        #[prost(uint32, optional, tag="2")]
24279        pub pages_per_slab: ::core::option::Option<u32>,
24280        #[prost(uint32, optional, tag="3")]
24281        pub num_slabs: ::core::option::Option<u32>,
24282    }
24283}
24284// End of protos/perfetto/trace/sys_stats/sys_stats.proto
24285
24286// Begin of protos/perfetto/trace/system_info/cpu_info.proto
24287
24288/// Information about CPUs from procfs and sysfs.
24289#[derive(Clone, PartialEq, ::prost::Message)]
24290pub struct CpuInfo {
24291    /// Describes available CPUs, one entry per CPU.
24292    #[prost(message, repeated, tag="1")]
24293    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
24294}
24295/// Nested message and enum types in `CpuInfo`.
24296pub mod cpu_info {
24297    #[derive(Clone, PartialEq, ::prost::Message)]
24298    pub struct ArmCpuIdentifier {
24299        /// Implementer code
24300        #[prost(uint32, optional, tag="1")]
24301        pub implementer: ::core::option::Option<u32>,
24302        /// Architecture code
24303        #[prost(uint32, optional, tag="2")]
24304        pub architecture: ::core::option::Option<u32>,
24305        /// CPU variant
24306        #[prost(uint32, optional, tag="3")]
24307        pub variant: ::core::option::Option<u32>,
24308        /// CPU part
24309        #[prost(uint32, optional, tag="4")]
24310        pub part: ::core::option::Option<u32>,
24311        /// CPU revision
24312        #[prost(uint32, optional, tag="5")]
24313        pub revision: ::core::option::Option<u32>,
24314    }
24315    /// Information about a single CPU.
24316    #[derive(Clone, PartialEq, ::prost::Message)]
24317    pub struct Cpu {
24318        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
24319        /// Example: "AArch64 Processor rev 12 (aarch64)"
24320        #[prost(string, optional, tag="1")]
24321        pub processor: ::core::option::Option<::prost::alloc::string::String>,
24322        /// Frequencies from
24323        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
24324        /// where X is the index of this CPU.
24325        #[prost(uint32, repeated, packed="false", tag="2")]
24326        pub frequencies: ::prost::alloc::vec::Vec<u32>,
24327        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
24328        /// the index of this CPU.
24329        #[prost(uint32, optional, tag="3")]
24330        pub capacity: ::core::option::Option<u32>,
24331        /// Features is a bitmap containing a bit set for each feature defined in
24332        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
24333        /// index.
24334        #[prost(uint64, optional, tag="5")]
24335        pub features: ::core::option::Option<u64>,
24336        /// Code to identify the CPU
24337        #[prost(oneof="cpu::Identifier", tags="4")]
24338        pub identifier: ::core::option::Option<cpu::Identifier>,
24339    }
24340    /// Nested message and enum types in `Cpu`.
24341    pub mod cpu {
24342        /// Code to identify the CPU
24343        #[derive(Clone, PartialEq, ::prost::Oneof)]
24344        pub enum Identifier {
24345            #[prost(message, tag="4")]
24346            ArmIdentifier(super::ArmCpuIdentifier),
24347        }
24348    }
24349}
24350// End of protos/perfetto/trace/system_info/cpu_info.proto
24351
24352// Begin of protos/perfetto/trace/system_info/gpu_info.proto
24353
24354/// Information about GPUs on the device.
24355#[derive(Clone, PartialEq, ::prost::Message)]
24356pub struct GpuInfo {
24357    /// Describes available GPUs, one entry per GPU. The index in the list
24358    /// corresponds to the gpu_id used elsewhere in the trace.
24359    #[prost(message, repeated, tag="1")]
24360    pub gpus: ::prost::alloc::vec::Vec<gpu_info::Gpu>,
24361}
24362/// Nested message and enum types in `GpuInfo`.
24363pub mod gpu_info {
24364    /// Information about a single GPU.
24365    #[derive(Clone, PartialEq, ::prost::Message)]
24366    pub struct Gpu {
24367        /// GPU name (e.g., "NVIDIA A100", "Adreno 740").
24368        /// Used by the Perfetto UI as the display label for GPU tracks (e.g.,
24369        /// "NVIDIA A100 Frequency" instead of "GPU 0 Frequency"). If multiple GPUs
24370        /// share the same name, consider appending an index to distinguish them
24371        /// (e.g., "NVIDIA A100 #0", "NVIDIA A100 #1").
24372        #[prost(string, optional, tag="1")]
24373        pub name: ::core::option::Option<::prost::alloc::string::String>,
24374        /// GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
24375        #[prost(string, optional, tag="2")]
24376        pub vendor: ::core::option::Option<::prost::alloc::string::String>,
24377        /// GPU model/product identifier.
24378        #[prost(string, optional, tag="3")]
24379        pub model: ::core::option::Option<::prost::alloc::string::String>,
24380        /// GPU architecture (e.g., "Ampere", "RDNA 3", "Adreno").
24381        #[prost(string, optional, tag="4")]
24382        pub architecture: ::core::option::Option<::prost::alloc::string::String>,
24383        /// 16-byte device UUID when available.
24384        #[prost(bytes="vec", optional, tag="5")]
24385        pub uuid: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
24386        /// PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
24387        #[prost(string, optional, tag="7")]
24388        pub pci_bdf: ::core::option::Option<::prost::alloc::string::String>,
24389        #[prost(message, repeated, tag="6")]
24390        pub extra_info: ::prost::alloc::vec::Vec<gpu::KeyValue>,
24391    }
24392    /// Nested message and enum types in `Gpu`.
24393    pub mod gpu {
24394        /// Arbitrary key-value pairs for vendor-specific info
24395        /// (driver version, memory size, compute capability, clock speeds, etc.).
24396        #[derive(Clone, PartialEq, ::prost::Message)]
24397        pub struct KeyValue {
24398            #[prost(string, optional, tag="1")]
24399            pub key: ::core::option::Option<::prost::alloc::string::String>,
24400            #[prost(string, optional, tag="2")]
24401            pub value: ::core::option::Option<::prost::alloc::string::String>,
24402        }
24403    }
24404}
24405// End of protos/perfetto/trace/system_info/gpu_info.proto
24406
24407// Begin of protos/perfetto/trace/test_event.proto
24408
24409/// Event used by testing code.
24410#[derive(Clone, PartialEq, ::prost::Message)]
24411pub struct TestEvent {
24412    /// Arbitrary string used in tests.
24413    #[prost(string, optional, tag="1")]
24414    pub str: ::core::option::Option<::prost::alloc::string::String>,
24415    /// The current value of the random number sequence used in tests.
24416    #[prost(uint32, optional, tag="2")]
24417    pub seq_value: ::core::option::Option<u32>,
24418    /// Monotonically increased on each packet.
24419    #[prost(uint64, optional, tag="3")]
24420    pub counter: ::core::option::Option<u64>,
24421    /// No more packets should follow (from the current sequence).
24422    #[prost(bool, optional, tag="4")]
24423    pub is_last: ::core::option::Option<bool>,
24424    #[prost(message, optional, tag="5")]
24425    pub payload: ::core::option::Option<test_event::TestPayload>,
24426    #[prost(message, optional, tag="6")]
24427    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
24428    #[prost(message, optional, tag="7")]
24429    pub protovm_incremental_state: ::core::option::Option<test_event::ProtoVmIncrementalState>,
24430}
24431/// Nested message and enum types in `TestEvent`.
24432pub mod test_event {
24433    #[derive(Clone, PartialEq, ::prost::Message)]
24434    pub struct TestPayload {
24435        #[prost(string, repeated, tag="1")]
24436        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24437        #[prost(message, repeated, tag="2")]
24438        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
24439        #[prost(string, optional, tag="4")]
24440        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
24441        #[prost(int32, optional, tag="5")]
24442        pub single_int: ::core::option::Option<i32>,
24443        #[prost(int32, repeated, packed="false", tag="6")]
24444        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
24445        /// When 0 this is the bottom-most nested message.
24446        #[prost(uint32, optional, tag="3")]
24447        pub remaining_nesting_depth: ::core::option::Option<u32>,
24448        #[prost(message, repeated, tag="7")]
24449        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
24450    }
24451    /// Simple ProtoVm patch and incremental state formats used for integration
24452    /// testing
24453    #[derive(Clone, PartialEq, ::prost::Message)]
24454    pub struct ProtoVmPatch {
24455        #[prost(string, optional, tag="1")]
24456        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
24457        #[prost(int32, optional, tag="2")]
24458        pub int_to_merge: ::core::option::Option<i32>,
24459    }
24460    #[derive(Clone, PartialEq, ::prost::Message)]
24461    pub struct ProtoVmIncrementalState {
24462        #[prost(string, optional, tag="1")]
24463        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
24464        #[prost(int32, optional, tag="2")]
24465        pub int_merged: ::core::option::Option<i32>,
24466    }
24467}
24468// End of protos/perfetto/trace/test_event.proto
24469
24470// Begin of protos/perfetto/trace/trace_packet_defaults.proto
24471
24472/// Default values for TracePacket fields that hold for a particular TraceWriter
24473/// packet sequence. This message contains a subset of the TracePacket fields
24474/// with matching IDs. When provided, these fields define the default values
24475/// that should be applied, at import time, to all TracePacket(s) with the same
24476/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
24477///
24478/// Should be reemitted whenever incremental state is cleared on the sequence.
24479#[derive(Clone, PartialEq, ::prost::Message)]
24480pub struct TracePacketDefaults {
24481    #[prost(uint32, optional, tag="58")]
24482    pub timestamp_clock_id: ::core::option::Option<u32>,
24483    /// Default values for TrackEvents (e.g. default track).
24484    #[prost(message, optional, tag="11")]
24485    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
24486    /// Defaults for perf profiler packets (PerfSample).
24487    #[prost(message, optional, tag="12")]
24488    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
24489    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
24490    /// V8RegexpCode)
24491    #[prost(message, optional, tag="99")]
24492    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
24493}
24494// Begin of protos/perfetto/trace/trace_uuid.proto
24495
24496/// A random unique ID that identifies the trace.
24497/// This message has been introduced in v32. Prior to that, the UUID was
24498/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
24499/// This has been moved to a standalone packet to deal with new use-cases for
24500/// go/gapless-aot, where the same tracing session can be serialized several
24501/// times, in which case the UUID is changed on each snapshot and does not match
24502/// the one in the TraceConfig.
24503#[derive(Clone, PartialEq, ::prost::Message)]
24504pub struct TraceUuid {
24505    #[prost(int64, optional, tag="1")]
24506    pub msb: ::core::option::Option<i64>,
24507    #[prost(int64, optional, tag="2")]
24508    pub lsb: ::core::option::Option<i64>,
24509}
24510// End of protos/perfetto/trace/trace_uuid.proto
24511
24512// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
24513
24514/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
24515/// usually by the process's main thread.
24516///
24517/// Next id: 9.
24518#[derive(Clone, PartialEq, ::prost::Message)]
24519pub struct ProcessDescriptor {
24520    #[prost(int32, optional, tag="1")]
24521    pub pid: ::core::option::Option<i32>,
24522    #[prost(string, repeated, tag="2")]
24523    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24524    #[prost(string, optional, tag="6")]
24525    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
24526    #[prost(int32, optional, tag="5")]
24527    pub process_priority: ::core::option::Option<i32>,
24528    /// Process start time in nanoseconds.
24529    /// The timestamp refers to the trace clock by default. Other clock IDs
24530    /// provided in TracePacket are not supported.
24531    #[prost(int64, optional, tag="7")]
24532    pub start_timestamp_ns: ::core::option::Option<i64>,
24533    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
24534    pub chrome_process_type: ::core::option::Option<i32>,
24535    /// To support old UI. New UI should determine default sorting by process_type.
24536    #[prost(int32, optional, tag="3")]
24537    pub legacy_sort_index: ::core::option::Option<i32>,
24538    /// Labels can be used to further describe properties of the work performed by
24539    /// the process. For example, these can be used by Chrome renderer process to
24540    /// provide titles of frames being rendered.
24541    #[prost(string, repeated, tag="8")]
24542    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24543}
24544/// Nested message and enum types in `ProcessDescriptor`.
24545pub mod process_descriptor {
24546    // ---------------------------------------------------------------------------
24547    // Deprecated / legacy fields, which will be removed in the future:
24548    // ---------------------------------------------------------------------------
24549
24550    /// See chromium's content::ProcessType.
24551    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24552    #[repr(i32)]
24553    pub enum ChromeProcessType {
24554        ProcessUnspecified = 0,
24555        ProcessBrowser = 1,
24556        ProcessRenderer = 2,
24557        ProcessUtility = 3,
24558        ProcessZygote = 4,
24559        ProcessSandboxHelper = 5,
24560        ProcessGpu = 6,
24561        ProcessPpapiPlugin = 7,
24562        ProcessPpapiBroker = 8,
24563    }
24564    impl ChromeProcessType {
24565        /// String value of the enum field names used in the ProtoBuf definition.
24566        ///
24567        /// The values are not transformed in any way and thus are considered stable
24568        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24569        pub fn as_str_name(&self) -> &'static str {
24570            match self {
24571                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
24572                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
24573                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
24574                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
24575                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
24576                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
24577                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
24578                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
24579                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
24580            }
24581        }
24582    }
24583}
24584// End of protos/perfetto/trace/track_event/process_descriptor.proto
24585
24586// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
24587
24588/// This message specifies the "range of interest" for track events. With the
24589/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
24590/// Trace Processor drops track events outside of this range.
24591#[derive(Clone, PartialEq, ::prost::Message)]
24592pub struct TrackEventRangeOfInterest {
24593    #[prost(int64, optional, tag="1")]
24594    pub start_us: ::core::option::Option<i64>,
24595}
24596// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
24597
24598/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
24599/// usually by the thread's trace writer.
24600///
24601/// Next id: 9.
24602#[derive(Clone, PartialEq, ::prost::Message)]
24603pub struct ThreadDescriptor {
24604    #[prost(int32, optional, tag="1")]
24605    pub pid: ::core::option::Option<i32>,
24606    #[prost(int64, optional, tag="2")]
24607    pub tid: ::core::option::Option<i64>,
24608    #[prost(string, optional, tag="5")]
24609    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
24610    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
24611    pub chrome_thread_type: ::core::option::Option<i32>,
24612    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
24613    /// and timestamp_clock_id fields instead.
24614    #[prost(int64, optional, tag="6")]
24615    pub reference_timestamp_us: ::core::option::Option<i64>,
24616    /// Absolute reference values. Clock values in subsequent TrackEvents can be
24617    /// encoded accumulatively and relative to these. This reduces their var-int
24618    /// encoding size.
24619    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
24620    #[prost(int64, optional, tag="7")]
24621    pub reference_thread_time_us: ::core::option::Option<i64>,
24622    #[prost(int64, optional, tag="8")]
24623    pub reference_thread_instruction_count: ::core::option::Option<i64>,
24624    /// To support old UI. New UI should determine default sorting by thread_type.
24625    #[prost(int32, optional, tag="3")]
24626    pub legacy_sort_index: ::core::option::Option<i32>,
24627}
24628/// Nested message and enum types in `ThreadDescriptor`.
24629pub mod thread_descriptor {
24630    // ---------------------------------------------------------------------------
24631    // Deprecated / legacy fields, which will be removed in the future:
24632    // ---------------------------------------------------------------------------
24633
24634    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24635    #[repr(i32)]
24636    pub enum ChromeThreadType {
24637        ChromeThreadUnspecified = 0,
24638        ChromeThreadMain = 1,
24639        ChromeThreadIo = 2,
24640        /// Scheduler:
24641        ChromeThreadPoolBgWorker = 3,
24642        ChromeThreadPoolFgWorker = 4,
24643        ChromeThreadPoolFbBlocking = 5,
24644        ChromeThreadPoolBgBlocking = 6,
24645        ChromeThreadPoolService = 7,
24646        /// Compositor:
24647        ChromeThreadCompositor = 8,
24648        ChromeThreadVizCompositor = 9,
24649        ChromeThreadCompositorWorker = 10,
24650        /// Renderer:
24651        ChromeThreadServiceWorker = 11,
24652        /// Tracing related threads:
24653        ChromeThreadMemoryInfra = 50,
24654        ChromeThreadSamplingProfiler = 51,
24655    }
24656    impl ChromeThreadType {
24657        /// String value of the enum field names used in the ProtoBuf definition.
24658        ///
24659        /// The values are not transformed in any way and thus are considered stable
24660        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24661        pub fn as_str_name(&self) -> &'static str {
24662            match self {
24663                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
24664                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
24665                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
24666                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
24667                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
24668                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
24669                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
24670                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
24671                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
24672                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
24673                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
24674                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
24675                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
24676                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
24677            }
24678        }
24679    }
24680}
24681// End of protos/perfetto/trace/track_event/thread_descriptor.proto
24682
24683// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
24684
24685/// Describes the attributes for a Chrome process. Must be paired with a
24686/// ProcessDescriptor in the same TrackDescriptor.
24687///
24688/// Next id: 6.
24689#[derive(Clone, PartialEq, ::prost::Message)]
24690pub struct ChromeProcessDescriptor {
24691    /// This is a chrome_enums::ProcessType from
24692    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
24693    /// be imported here because of a dependency loop.
24694    #[prost(int32, optional, tag="1")]
24695    pub process_type: ::core::option::Option<i32>,
24696    #[prost(int32, optional, tag="2")]
24697    pub process_priority: ::core::option::Option<i32>,
24698    /// To support old UI. New UI should determine default sorting by process_type.
24699    #[prost(int32, optional, tag="3")]
24700    pub legacy_sort_index: ::core::option::Option<i32>,
24701    /// Name of the hosting app for WebView. Used to match renderer processes to
24702    /// their hosting apps.
24703    #[prost(string, optional, tag="4")]
24704    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
24705    /// The ID to link crashes to trace.
24706    /// Notes:
24707    /// * The ID is per process. So, each trace may contain many IDs, and you need
24708    ///    to look for the ID from crashed process to find the crash report.
24709    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
24710    ///    get an uploaded trace, since uploads could have failed.
24711    /// * On the other hand, if there was a crash during the session and trace was
24712    ///    uploaded, it is very likely to find a crash report with the trace ID.
24713    /// * This is not crash ID or trace ID. It is just a random 64-bit number
24714    ///    recorded in both traces and crashes. It is possible to have collisions,
24715    ///    though very rare.
24716    #[prost(uint64, optional, tag="5")]
24717    pub crash_trace_id: ::core::option::Option<u64>,
24718}
24719// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
24720
24721// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
24722
24723/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
24724/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
24725/// in the same TrackDescriptor.
24726///
24727/// Next id: 3.
24728#[derive(Clone, PartialEq, ::prost::Message)]
24729pub struct ChromeThreadDescriptor {
24730    /// This is a chrome_enums::ThreadType from
24731    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
24732    /// be imported here because of a dependency loop.
24733    #[prost(int32, optional, tag="1")]
24734    pub thread_type: ::core::option::Option<i32>,
24735    /// To support old UI. New UI should determine default sorting by thread_type.
24736    #[prost(int32, optional, tag="2")]
24737    pub legacy_sort_index: ::core::option::Option<i32>,
24738    /// Indicates whether the thread's tid specified in the thread descriptor is
24739    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
24740    #[prost(bool, optional, tag="3")]
24741    pub is_sandboxed_tid: ::core::option::Option<bool>,
24742}
24743// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
24744
24745// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
24746
24747/// Defines properties of a counter track, e.g. for built-in counters (thread
24748/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
24749/// a specific app component).
24750///
24751/// Counter tracks only support TYPE_COUNTER track events, which specify new
24752/// values for the counter. For counters that require per-slice values, counter
24753/// values can instead be provided in a more efficient encoding via TrackEvent's
24754/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
24755/// slice-type events cannot be emitted onto a counter track.
24756///
24757/// Values for counters that are only emitted on a single packet sequence can
24758/// optionally be delta-encoded, see |is_incremental|.
24759///
24760/// Next id: 7.
24761#[derive(Clone, PartialEq, ::prost::Message)]
24762pub struct CounterDescriptor {
24763    /// For built-in counters (e.g. thread time). Custom user-specified counters
24764    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
24765    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
24766    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
24767    pub r#type: ::core::option::Option<i32>,
24768    /// Names of categories of the counter (usually for user-specified counters).
24769    /// In the client library, categories are a way to turn groups of individual
24770    /// counters (or events) on or off.
24771    #[prost(string, repeated, tag="2")]
24772    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24773    /// Type of the counter's values. Built-in counters imply a value for this
24774    /// field.
24775    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
24776    pub unit: ::core::option::Option<i32>,
24777    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
24778    /// name can be used instead.
24779    #[prost(string, optional, tag="6")]
24780    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
24781    /// Multiplication factor of this counter's values, e.g. to supply
24782    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
24783    #[prost(int64, optional, tag="4")]
24784    pub unit_multiplier: ::core::option::Option<i64>,
24785    /// Whether values for this counter are provided as delta values. Only
24786    /// supported for counters that are emitted on a single packet-sequence (e.g.
24787    /// thread time). Counter values in subsequent packets on the current packet
24788    /// sequence will be interpreted as delta values from the sequence's most
24789    /// recent value for the counter. When incremental state is cleared, the
24790    /// counter value is considered to be reset to 0. Thus, the first value after
24791    /// incremental state is cleared is effectively an absolute value.
24792    #[prost(bool, optional, tag="5")]
24793    pub is_incremental: ::core::option::Option<bool>,
24794    // TODO(eseckler): Support arguments describing the counter (?).
24795    // repeated DebugAnnotation debug_annotations;
24796
24797    /// When visualizing multiple counter tracks, it is often useful to have them
24798    /// share the same Y-axis range. This allows for easy comparison of their
24799    /// values.
24800    ///
24801    /// All counter tracks with the same |y_axis_share_key| and the same parent
24802    /// track (e.g. grouped under the same process track) will share their y-axis
24803    /// range in the UI.
24804    #[prost(string, optional, tag="7")]
24805    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
24806}
24807/// Nested message and enum types in `CounterDescriptor`.
24808pub mod counter_descriptor {
24809    /// Built-in counters, usually with special meaning in the client library,
24810    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
24811    /// track name from the enum value if none is provided in TrackDescriptor.
24812    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24813    #[repr(i32)]
24814    pub enum BuiltinCounterType {
24815        CounterUnspecified = 0,
24816        // Thread-scoped counters. The thread's track should be specified via
24817        // |parent_uuid| in the TrackDescriptor for such a counter.
24818
24819        /// implies UNIT_TIME_NS.
24820        CounterThreadTimeNs = 1,
24821        /// implies UNIT_COUNT.
24822        CounterThreadInstructionCount = 2,
24823    }
24824    impl BuiltinCounterType {
24825        /// String value of the enum field names used in the ProtoBuf definition.
24826        ///
24827        /// The values are not transformed in any way and thus are considered stable
24828        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24829        pub fn as_str_name(&self) -> &'static str {
24830            match self {
24831                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
24832                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
24833                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
24834            }
24835        }
24836    }
24837    /// Type of the values for the counters - to supply lower granularity units,
24838    /// see also |unit_multiplier|.
24839    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24840    #[repr(i32)]
24841    pub enum Unit {
24842        Unspecified = 0,
24843        TimeNs = 1,
24844        Count = 2,
24845        /// TODO(eseckler): Support more units as necessary.
24846        SizeBytes = 3,
24847    }
24848    impl Unit {
24849        /// String value of the enum field names used in the ProtoBuf definition.
24850        ///
24851        /// The values are not transformed in any way and thus are considered stable
24852        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24853        pub fn as_str_name(&self) -> &'static str {
24854            match self {
24855                Unit::Unspecified => "UNIT_UNSPECIFIED",
24856                Unit::TimeNs => "UNIT_TIME_NS",
24857                Unit::Count => "UNIT_COUNT",
24858                Unit::SizeBytes => "UNIT_SIZE_BYTES",
24859            }
24860        }
24861    }
24862}
24863// End of protos/perfetto/trace/track_event/counter_descriptor.proto
24864
24865// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
24866
24867/// Defines a track for TrackEvents. Slices and instant events on the same track
24868/// will be nested based on their timestamps, see TrackEvent::Type.
24869///
24870/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
24871/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
24872/// when the ring buffer wraps, it should be reemitted whenever incremental state
24873/// is cleared.
24874///
24875/// As a fallback, TrackEvents emitted without an explicit track association will
24876/// be associated with an implicit trace-global track (uuid = 0), see also
24877/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
24878/// TrackDescriptor for this implicit track.
24879///
24880/// Next id: 18.
24881#[derive(Clone, PartialEq, ::prost::Message)]
24882pub struct TrackDescriptor {
24883    /// Unique ID that identifies this track. This ID is global to the whole trace.
24884    /// Producers should ensure that it is unlikely to clash with IDs emitted by
24885    /// other producers. A value of 0 denotes the implicit trace-global track.
24886    ///
24887    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
24888    /// event id + id_scope, pid, and/or tid to compute this ID.
24889    #[prost(uint64, optional, tag="1")]
24890    pub uuid: ::core::option::Option<u64>,
24891    /// A parent track reference can be used to describe relationships between
24892    /// tracks. For example, to define an asynchronous track which is scoped to a
24893    /// specific process, specify the uuid for that process's process track here.
24894    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
24895    /// thread, specify the uuid for that thread's thread track here. In general,
24896    /// setting a parent will *nest* that track under the parent in the UI and in
24897    /// the trace processor data model (with the important exception noted below).
24898    ///
24899    /// If not specified, the track will be a root track, i.e. not nested under any
24900    /// other track.
24901    ///
24902    /// Note: if the `thread` or `process` fields are set, this value will be
24903    /// *ignored* as priority is given to those fields.
24904    ///
24905    /// Note: if the parent is set to a track with `thread` or `process` fields
24906    /// set, the track will *not* be nested under the parent in the UI and in the
24907    /// trace processor data model. Instead, the track will inherit the parent's
24908    /// thread/process association and will appear as a *sibling* of the parent.
24909    /// This semantic exists for back-compat reasons as the UI used to work this
24910    /// way for years and changing this leads to a lot of traces subtly breaking.
24911    /// If you want to force nesting, create *another* intermediate track to act as
24912    /// the parent.
24913    #[prost(uint64, optional, tag="5")]
24914    pub parent_uuid: ::core::option::Option<u64>,
24915    /// A human-readable description of the track providing more context about its
24916    /// data. In the UI, this is shown in a popup when the track's help button is
24917    /// clicked.
24918    #[prost(string, optional, tag="14")]
24919    pub description: ::core::option::Option<::prost::alloc::string::String>,
24920    /// Associate the track with a process, making it the process-global track.
24921    /// There should only be one such track per process (usually for instant
24922    /// events; trace processor uses this fact to detect pid reuse). If you need
24923    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
24924    ///
24925    /// Trace processor will merge events on a process track with slice-type events
24926    /// from other sources (e.g. ftrace) for the same process into a single
24927    /// timeline view.
24928    #[prost(message, optional, tag="3")]
24929    pub process: ::core::option::Option<ProcessDescriptor>,
24930    #[prost(message, optional, tag="6")]
24931    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
24932    /// Associate the track with a thread, indicating that the track's events
24933    /// describe synchronous code execution on the thread. There should only be one
24934    /// such track per thread (trace processor uses this fact to detect tid reuse).
24935    ///
24936    /// Trace processor will merge events on a thread track with slice-type events
24937    /// from other sources (e.g. ftrace) for the same thread into a single timeline
24938    /// view.
24939    #[prost(message, optional, tag="4")]
24940    pub thread: ::core::option::Option<ThreadDescriptor>,
24941    #[prost(message, optional, tag="7")]
24942    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
24943    /// Descriptor for a counter track. If set, the track will only support
24944    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
24945    /// |extra_counter_values|).
24946    #[prost(message, optional, tag="8")]
24947    pub counter: ::core::option::Option<CounterDescriptor>,
24948    /// If true, forces Trace Processor to use separate tracks for track events
24949    /// and system events for the same thread.
24950    ///
24951    /// Track events timestamps in Chrome have microsecond resolution, while
24952    /// system events use nanoseconds. It results in broken event nesting when
24953    /// track events and system events share a track.
24954    #[prost(bool, optional, tag="9")]
24955    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
24956    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
24957    pub child_ordering: ::core::option::Option<i32>,
24958    /// An opaque value which allows specifying how two sibling tracks should be
24959    /// ordered relative to each other: tracks with lower ranks will appear before
24960    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
24961    /// 0.
24962    ///
24963    /// Note: this option is only relevant for tracks where the parent has
24964    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
24965    ///
24966    /// Note: for tracks where the parent has `thread` or `process` are set, this
24967    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
24968    /// See `parent_uuid` for details.
24969    #[prost(int32, optional, tag="12")]
24970    pub sibling_order_rank: ::core::option::Option<i32>,
24971    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
24972    pub sibling_merge_behavior: ::core::option::Option<i32>,
24973    /// Name of the track.
24974    ///
24975    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24976    /// emitted before any `TrackEvent`s on the same track.
24977    ///
24978    /// Note: any name specified here will be *ignored* for the root thread scoped
24979    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24980    /// case, the name of the track is shared by many different data sources and so
24981    /// is centrally controlled by trace processor.
24982    ///
24983    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24984    /// a descriptor *has* to be emitted multiple times (e.g. between different
24985    /// processes), it's recommended to ensure that the name is consistent across
24986    /// all TrackDescriptors with the same `uuid`.
24987    ///
24988    /// If the the above recommendation is not followed and the same uuid is
24989    /// emitted with different names, it is implementation defined how the final
24990    /// name will be chosen and may change at any time.
24991    ///
24992    /// The current implementation of trace processor chooses the name in the
24993    /// following way, depending on the value of the `sibling_merge_behavior`
24994    /// field:
24995    ///
24996    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24997    ///    * The *last* non-null name in the whole trace according to trace order
24998    ///      will be used.
24999    ///    * If no non-null name is present in the whole trace, the trace processor
25000    ///      may fall back to other sources to provide a name for the track (e.g.
25001    ///      the first event name for slice tracks, the counter name for counter
25002    ///      tracks). This is implementation defined and may change at any time.
25003    ///
25004    /// 2. If `sibling_merge_behavior` is set to any other value:
25005    ///    * The first non-null name before the first event on the track *or on any
25006    ///      descendant tracks* is processed will be used. For example, consider
25007    ///      the following sequence of events:
25008    ///        ts=100: TrackDescriptor(uuid=A)
25009    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
25010    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
25011    ///        ts=400: TrackEvent(track_uuid=B)
25012    ///      In this case, the name for track A will be "Track A" because the
25013    ///      descriptor with the name was emitted before the first event on a
25014    ///      descendant track (B).
25015    ///    * If no non-null name is present before the event is processed, the trace
25016    ///      processor may fall back to other sources to provide a name for the
25017    ///      track (e.g. the first event name for slice tracks, the counter name for
25018    ///      counter tracks). This is implementation defined and may change at any
25019    ///      time.
25020    ///    * Note on processing order: In the standard trace processor pipeline,
25021    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
25022    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
25023    ///      track, all its descriptors in the trace are processed before its
25024    ///      events. Consequently, the "first non-null name before the first event"
25025    ///      will be the name from the first `TrackDescriptor` for that track in the
25026    ///      trace file that has a non-null name. However, in a streaming parsing
25027    ///      scenario, the timestamp order of descriptors and events is significant,
25028    ///      and a descriptor arriving after an event has been processed will not be
25029    ///      used to name the track.
25030    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
25031    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
25032    /// An opaque value which allows specifying which tracks should be merged
25033    /// together.
25034    ///
25035    /// Only meaningful when `sibling_merge_behavior` is set to
25036    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
25037    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
25038    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
25039}
25040/// Nested message and enum types in `TrackDescriptor`.
25041pub mod track_descriptor {
25042    /// Specifies how the UI should display child tracks of this track (i.e. tracks
25043    /// where `parent_uuid` is specified to this track `uuid`). Note that this
25044    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
25045    /// this if it has a good reason not to do so.
25046    ///
25047    /// Note: for tracks where `thread` or `process` are set, this option is
25048    /// *ignored*. See `parent_uuid` for details.
25049    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25050    #[repr(i32)]
25051    pub enum ChildTracksOrdering {
25052        /// The default ordering, with no bearing on how the UI will visualise the
25053        /// tracks.
25054        Unknown = 0,
25055        /// Order tracks by `name` or `static_name` depending on which one has been
25056        /// specified.
25057        Lexicographic = 1,
25058        /// Order tracks by the first `ts` event in a track.
25059        Chronological = 2,
25060        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
25061        /// the lower values will be shown before tracks with higher values. Tracks
25062        /// with no value will be treated as having 0 rank.
25063        Explicit = 3,
25064    }
25065    impl ChildTracksOrdering {
25066        /// String value of the enum field names used in the ProtoBuf definition.
25067        ///
25068        /// The values are not transformed in any way and thus are considered stable
25069        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25070        pub fn as_str_name(&self) -> &'static str {
25071            match self {
25072                ChildTracksOrdering::Unknown => "UNKNOWN",
25073                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
25074                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
25075                ChildTracksOrdering::Explicit => "EXPLICIT",
25076            }
25077        }
25078    }
25079    /// Specifies how the analysis tools should "merge" different sibling
25080    /// TrackEvent tracks.
25081    ///
25082    /// For two or more tracks to be merged, they must be "eligible" siblings.
25083    /// Eligibility is determined by the following rules:
25084    /// 1. All tracks must have the same parent.
25085    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
25086    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
25087    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
25088    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
25089    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
25090    ///
25091    /// Specifically:
25092    ///    - in the UI, all tracks which are merged together will be
25093    ///      displayed as a single "visual" track.
25094    ///    - in the trace processor, all tracks which are merged together will be
25095    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
25096    ///      of tracks which have an active event at the same time.
25097    ///
25098    /// When tracks are merged togther, the properties for the merged track will be
25099    /// chosen from the source tracks based on the following rules:
25100    ///    - for `sibling_order_rank`: the rank of the merged track will be the
25101    ///      smallest rank among the source tracks.
25102    ///    - for all other properties: the property taken is unspecified and can
25103    ///      be any value provided by one of the source tracks. This can lead to
25104    ///      non-deterministic behavior.
25105    ///       - examples of other properties include `name`, `child_ordering` etc.
25106    ///       - because of this, it's strongly recommended to ensure that all source
25107    ///         tracks have the same value for these properties.
25108    ///       - the trace processor will also emit an error stat if it detects
25109    ///         that the properties are not the same across all source tracks.
25110    ///
25111    /// Note: merging is done *recursively* so entire trees of tracks can be merged
25112    /// together. To make this clearer, consider an example track hierarchy (in
25113    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
25114    /// track line, like "Updater", is its 'name' property):
25115    ///
25116    ///    Initial track hierarchy:
25117    ///      SystemActivity
25118    ///      ├── AuthService (smk: "auth_main_cluster")
25119    ///      │   └── LoginOp (smk: "login_v1")
25120    ///      ├── AuthService (smk: "auth_main_cluster")
25121    ///      │   └── LoginOp (smk: "login_v1")
25122    ///      ├── AuthService (smk: "auth_backup_cluster")
25123    ///      │   └── GuestOp (smk: "guest_v1")
25124    ///      └── UserProfileService (smk: "profile_cluster")
25125    ///          └── GetProfileOp (smk: "getprofile_v1")
25126    ///
25127    /// Merging outcomes:
25128    ///
25129    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
25130    ///    - The first two "AuthService" tracks merge because they share
25131    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
25132    ///      aligning with recommendations. The merged track is named "AuthService".
25133    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
25134    ///      remains separate, as its `sibling_merge_key` is different.
25135    ///    - "UserProfileService" also remains separate.
25136    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
25137    ///      "LoginOp" get merged as they have the same sibling merge key.
25138    ///
25139    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
25140    ///      SystemActivity
25141    ///      ├── AuthService (merged by smk: "auth_main_cluster")
25142    ///      │   ├── LoginOp (merged by smk: "login_v1")
25143    ///      ├── AuthService (smk: "auth_backup_cluster")
25144    ///      │   └── GuestOp (smk: "guest_v1")
25145    ///      └── UserProfileService (smk: "profile_cluster")
25146    ///          └── GetProfileOp (smk: "getprofile_v1")
25147    ///
25148    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
25149    ///    - All three tracks named "AuthService" merge because they share the same
25150    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
25151    ///      for this merged track would be taken from one of the source tracks
25152    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
25153    ///      relevant if its children had key-based merge behaviors.
25154    ///    - "UserProfileService" remains separate due to its different name.
25155    ///    - Within the single merged "AuthService" track:
25156    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
25157    ///      they have the same name.
25158    ///
25159    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
25160    ///      SystemActivity
25161    ///      ├── AuthService (merged from 3 "AuthService" tracks)
25162    ///      │   ├── LoginOp (smk: "login_v1")
25163    ///      │   └── GuestOp (smk: "guest_v1")
25164    ///      └── UserProfileService (smk: "profile_cluster")
25165    ///          └── GetProfileOp (smk: "getprofile_v1")
25166    ///
25167    /// Note: for tracks where `thread` or `process` are set, this option is
25168    /// *ignored*. See `parent_uuid` for details.
25169    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25170    #[repr(i32)]
25171    pub enum SiblingMergeBehavior {
25172        /// When unspecified or not set, defaults to
25173        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
25174        Unspecified = 0,
25175        /// Merge this track with eligible siblings which have the same `name`.
25176        ///
25177        /// This is the default behavior.option.
25178        ///
25179        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
25180        /// worked this way for years and inherited this behavior from
25181        /// chrome://tracing which has worked this way for even longer
25182        ByTrackName = 1,
25183        /// Never merge this track with any siblings. Useful if if this track has a
25184        /// specific meaning and you want to see separately from any others.
25185        None = 2,
25186        /// Merge this track with eligible siblings which have the same
25187        /// `sibling_merge_key`.
25188        BySiblingMergeKey = 3,
25189    }
25190    impl SiblingMergeBehavior {
25191        /// String value of the enum field names used in the ProtoBuf definition.
25192        ///
25193        /// The values are not transformed in any way and thus are considered stable
25194        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25195        pub fn as_str_name(&self) -> &'static str {
25196            match self {
25197                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
25198                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
25199                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
25200                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
25201            }
25202        }
25203    }
25204    /// Name of the track.
25205    ///
25206    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
25207    /// emitted before any `TrackEvent`s on the same track.
25208    ///
25209    /// Note: any name specified here will be *ignored* for the root thread scoped
25210    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
25211    /// case, the name of the track is shared by many different data sources and so
25212    /// is centrally controlled by trace processor.
25213    ///
25214    /// It's strongly recommended to only emit the name for a track uuid *once*. If
25215    /// a descriptor *has* to be emitted multiple times (e.g. between different
25216    /// processes), it's recommended to ensure that the name is consistent across
25217    /// all TrackDescriptors with the same `uuid`.
25218    ///
25219    /// If the the above recommendation is not followed and the same uuid is
25220    /// emitted with different names, it is implementation defined how the final
25221    /// name will be chosen and may change at any time.
25222    ///
25223    /// The current implementation of trace processor chooses the name in the
25224    /// following way, depending on the value of the `sibling_merge_behavior`
25225    /// field:
25226    ///
25227    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
25228    ///    * The *last* non-null name in the whole trace according to trace order
25229    ///      will be used.
25230    ///    * If no non-null name is present in the whole trace, the trace processor
25231    ///      may fall back to other sources to provide a name for the track (e.g.
25232    ///      the first event name for slice tracks, the counter name for counter
25233    ///      tracks). This is implementation defined and may change at any time.
25234    ///
25235    /// 2. If `sibling_merge_behavior` is set to any other value:
25236    ///    * The first non-null name before the first event on the track *or on any
25237    ///      descendant tracks* is processed will be used. For example, consider
25238    ///      the following sequence of events:
25239    ///        ts=100: TrackDescriptor(uuid=A)
25240    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
25241    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
25242    ///        ts=400: TrackEvent(track_uuid=B)
25243    ///      In this case, the name for track A will be "Track A" because the
25244    ///      descriptor with the name was emitted before the first event on a
25245    ///      descendant track (B).
25246    ///    * If no non-null name is present before the event is processed, the trace
25247    ///      processor may fall back to other sources to provide a name for the
25248    ///      track (e.g. the first event name for slice tracks, the counter name for
25249    ///      counter tracks). This is implementation defined and may change at any
25250    ///      time.
25251    ///    * Note on processing order: In the standard trace processor pipeline,
25252    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
25253    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
25254    ///      track, all its descriptors in the trace are processed before its
25255    ///      events. Consequently, the "first non-null name before the first event"
25256    ///      will be the name from the first `TrackDescriptor` for that track in the
25257    ///      trace file that has a non-null name. However, in a streaming parsing
25258    ///      scenario, the timestamp order of descriptors and events is significant,
25259    ///      and a descriptor arriving after an event has been processed will not be
25260    ///      used to name the track.
25261    #[derive(Clone, PartialEq, ::prost::Oneof)]
25262    pub enum StaticOrDynamicName {
25263        #[prost(string, tag="2")]
25264        Name(::prost::alloc::string::String),
25265        /// This field is only set by the SDK when perfetto::StaticString is
25266        /// provided.
25267        #[prost(string, tag="10")]
25268        StaticName(::prost::alloc::string::String),
25269        /// Equivalent to name, used just to mark that the data is coming from
25270        /// android.os.Trace.
25271        #[prost(string, tag="13")]
25272        AtraceName(::prost::alloc::string::String),
25273    }
25274    /// An opaque value which allows specifying which tracks should be merged
25275    /// together.
25276    ///
25277    /// Only meaningful when `sibling_merge_behavior` is set to
25278    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
25279    #[derive(Clone, PartialEq, ::prost::Oneof)]
25280    pub enum SiblingMergeKeyField {
25281        #[prost(string, tag="16")]
25282        SiblingMergeKey(::prost::alloc::string::String),
25283        #[prost(uint64, tag="17")]
25284        SiblingMergeKeyInt(u64),
25285    }
25286}
25287// End of protos/perfetto/trace/track_event/track_descriptor.proto
25288
25289// Begin of protos/perfetto/trace/translation/translation_table.proto
25290
25291/// Translation rules for the trace processor.
25292/// See the comments for each rule type for specific meaning.
25293#[derive(Clone, PartialEq, ::prost::Message)]
25294pub struct TranslationTable {
25295    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
25296    pub table: ::core::option::Option<translation_table::Table>,
25297}
25298/// Nested message and enum types in `TranslationTable`.
25299pub mod translation_table {
25300    #[derive(Clone, PartialEq, ::prost::Oneof)]
25301    pub enum Table {
25302        #[prost(message, tag="1")]
25303        ChromeHistogram(super::ChromeHistorgramTranslationTable),
25304        #[prost(message, tag="2")]
25305        ChromeUserEvent(super::ChromeUserEventTranslationTable),
25306        #[prost(message, tag="3")]
25307        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
25308        #[prost(message, tag="4")]
25309        SliceName(super::SliceNameTranslationTable),
25310        #[prost(message, tag="5")]
25311        ProcessTrackName(super::ProcessTrackNameTranslationTable),
25312        #[prost(message, tag="6")]
25313        ChromeStudy(super::ChromeStudyTranslationTable),
25314    }
25315}
25316/// Chrome histogram sample hash -> name translation rules.
25317#[derive(Clone, PartialEq, ::prost::Message)]
25318pub struct ChromeHistorgramTranslationTable {
25319    #[prost(map="uint64, string", tag="1")]
25320    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
25321}
25322/// Chrome user event action hash -> name translation rules.
25323#[derive(Clone, PartialEq, ::prost::Message)]
25324pub struct ChromeUserEventTranslationTable {
25325    #[prost(map="uint64, string", tag="1")]
25326    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
25327}
25328/// Chrome performance mark translation rules.
25329#[derive(Clone, PartialEq, ::prost::Message)]
25330pub struct ChromePerformanceMarkTranslationTable {
25331    #[prost(map="uint32, string", tag="1")]
25332    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
25333    #[prost(map="uint32, string", tag="2")]
25334    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
25335}
25336/// Raw -> deobfuscated slice name translation rules.
25337#[derive(Clone, PartialEq, ::prost::Message)]
25338pub struct SliceNameTranslationTable {
25339    #[prost(map="string, string", tag="1")]
25340    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
25341}
25342/// Raw -> deobfuscated process track name translation rules.
25343#[derive(Clone, PartialEq, ::prost::Message)]
25344pub struct ProcessTrackNameTranslationTable {
25345    #[prost(map="string, string", tag="1")]
25346    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
25347}
25348/// Chrome study hash -> name translation rules.
25349#[derive(Clone, PartialEq, ::prost::Message)]
25350pub struct ChromeStudyTranslationTable {
25351    #[prost(map="uint64, string", tag="1")]
25352    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
25353}
25354// End of protos/perfetto/trace/translation/translation_table.proto
25355
25356// Begin of protos/perfetto/trace/trigger.proto
25357
25358/// When a TracingSession receives a trigger it records the boot time nanoseconds
25359/// in the TracePacket's timestamp field as well as the name of the producer that
25360/// triggered it. We emit this data so filtering can be done on triggers received
25361/// in the trace.
25362#[derive(Clone, PartialEq, ::prost::Message)]
25363pub struct Trigger {
25364    /// Name of the trigger which was received.
25365    #[prost(string, optional, tag="1")]
25366    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
25367    /// The actual producer that activated |trigger|.
25368    #[prost(string, optional, tag="2")]
25369    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
25370    /// The verified UID of the producer.
25371    #[prost(int32, optional, tag="3")]
25372    pub trusted_producer_uid: ::core::option::Option<i32>,
25373    /// The value of stop_delay_ms from the configuration.
25374    #[prost(uint64, optional, tag="4")]
25375    pub stop_delay_ms: ::core::option::Option<u64>,
25376}
25377// End of protos/perfetto/trace/trigger.proto
25378
25379// Begin of protos/perfetto/trace/ui_state.proto
25380
25381/// Common state for UIs visualizing Perfetto traces.
25382/// This message can be appended as a TracePacket by UIs to save the
25383/// visible state (e.g. scroll position/zoom state) for future opening
25384/// of the trace.
25385/// Design doc: go/trace-ui-state.
25386#[derive(Clone, PartialEq, ::prost::Message)]
25387pub struct UiState {
25388    /// The start and end bounds of the viewport of the UI in nanoseconds.
25389    ///
25390    /// This is the absolute time associated to slices and other events in
25391    /// trace processor tables (i.e. the |ts| column of most tables)
25392    #[prost(int64, optional, tag="1")]
25393    pub timeline_start_ts: ::core::option::Option<i64>,
25394    #[prost(int64, optional, tag="2")]
25395    pub timeline_end_ts: ::core::option::Option<i64>,
25396    #[prost(message, optional, tag="3")]
25397    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
25398}
25399/// Nested message and enum types in `UiState`.
25400pub mod ui_state {
25401    /// Indicates that the given process should be highlighted by the UI.
25402    #[derive(Clone, PartialEq, ::prost::Message)]
25403    pub struct HighlightProcess {
25404        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
25405        pub selector: ::core::option::Option<highlight_process::Selector>,
25406    }
25407    /// Nested message and enum types in `HighlightProcess`.
25408    pub mod highlight_process {
25409        #[derive(Clone, PartialEq, ::prost::Oneof)]
25410        pub enum Selector {
25411            /// The pid of the process to highlight. This is useful for UIs to focus
25412            /// on tracks of a particular process in the trace.
25413            ///
25414            /// If more than one process in a trace has the same pid, it is UI
25415            /// implementation specific how the process to be focused will be
25416            /// chosen.
25417            #[prost(uint32, tag="1")]
25418            Pid(u32),
25419            /// The command line of the process to highlight; for most Android apps,
25420            /// this is the package name of the app. This is useful for UIs to focus
25421            /// on a particular app in the trace.
25422            ///
25423            /// If more than one process hasthe same cmdline, it is UI implementation
25424            /// specific how the process to be focused will be chosen.
25425            #[prost(string, tag="2")]
25426            Cmdline(::prost::alloc::string::String),
25427        }
25428    }
25429}
25430// Begin of protos/perfetto/trace/trace_packet.proto
25431
25432/// TracePacket is the root object of a Perfetto trace.
25433/// A Perfetto trace is a linear sequence of TracePacket(s).
25434///
25435/// The tracing service guarantees that all TracePacket(s) written by a given
25436/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
25437/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
25438/// to the Consumer (or written into the trace file).
25439/// TracePacket(s) written by different TraceWriter(s), hence even different
25440/// data sources, can be seen in arbitrary order.
25441/// The consumer can re-establish a total order, if interested, using the packet
25442/// timestamps, after having synchronized the different clocks onto a global
25443/// clock.
25444///
25445/// The tracing service is agnostic of the content of TracePacket, with the
25446/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
25447/// the service itself.
25448///
25449/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
25450///
25451/// Next reserved id: 14 (up to 15).
25452/// Next id: 130.
25453#[derive(Clone, PartialEq, ::prost::Message)]
25454pub struct TracePacket {
25455    /// The timestamp of the TracePacket.
25456    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
25457    /// Android). It can be overridden using a different timestamp_clock_id.
25458    /// The clock domain definition in ClockSnapshot can also override:
25459    /// - The unit (default: 1ns).
25460    /// - The absolute vs delta encoding (default: absolute timestamp).
25461    #[prost(uint64, optional, tag="8")]
25462    pub timestamp: ::core::option::Option<u64>,
25463    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
25464    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
25465    /// producer-defined clock id.
25466    /// If unspecified and if no default per-sequence value has been provided via
25467    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
25468    #[prost(uint32, optional, tag="58")]
25469    pub timestamp_clock_id: ::core::option::Option<u32>,
25470    /// Trusted process id of the producer which generated this packet, written by
25471    /// the service.
25472    #[prost(int32, optional, tag="79")]
25473    pub trusted_pid: ::core::option::Option<i32>,
25474    /// Incrementally emitted interned data, valid only on the packet's sequence
25475    /// (packets with the same |trusted_packet_sequence_id|). The writer will
25476    /// usually emit new interned data in the same TracePacket that first refers to
25477    /// it (since the last reset of interning state). It may also be emitted
25478    /// proactively in advance of referring to them in later packets.
25479    #[prost(message, optional, tag="12")]
25480    pub interned_data: ::core::option::Option<InternedData>,
25481    #[prost(uint32, optional, tag="13")]
25482    pub sequence_flags: ::core::option::Option<u32>,
25483    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
25484    #[prost(bool, optional, tag="41")]
25485    pub incremental_state_cleared: ::core::option::Option<bool>,
25486    /// Default values for fields of later TracePackets emitted on this packet's
25487    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
25488    /// It must be reemitted when incremental state is cleared (see
25489    /// |incremental_state_cleared|).
25490    /// Requires that any future packet emitted on the same sequence specifies
25491    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
25492    /// TracePacketDefaults always override the global defaults for any future
25493    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
25494    #[prost(message, optional, tag="59")]
25495    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
25496    /// Flag set by the service if, for the current packet sequence (see
25497    /// |trusted_packet_sequence_id|), either:
25498    /// * this is the first packet, or
25499    /// * one or multiple packets were dropped since the last packet that the
25500    ///    consumer read from the sequence. This can happen if chunks in the trace
25501    ///    buffer are overridden before the consumer could read them when the trace
25502    ///    is configured in ring buffer mode.
25503    ///
25504    /// When packet loss occurs, incrementally emitted data (including interned
25505    /// data) on the sequence should be considered invalid up until the next packet
25506    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
25507    #[prost(bool, optional, tag="42")]
25508    pub previous_packet_dropped: ::core::option::Option<bool>,
25509    /// Flag set by a producer (starting from SDK v29) if, for the current packet
25510    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
25511    ///
25512    /// This flag can be used for distinguishing the two situations when
25513    /// processing the trace:
25514    /// 1. There are no prior events for the sequence because of data loss, e.g.
25515    ///     due to ring buffer wrapping.
25516    /// 2. There are no prior events for the sequence because it didn't start
25517    ///     before this packet (= there's definitely no preceding data loss).
25518    ///
25519    /// Given that older SDK versions do not support this flag, this flag not
25520    /// being present for a particular sequence does not necessarily imply data
25521    /// loss.
25522    #[prost(bool, optional, tag="87")]
25523    pub first_packet_on_sequence: ::core::option::Option<bool>,
25524    /// The machine ID for identifying trace packets in a multi-machine tracing
25525    /// session. Is emitted by the tracing service for producers running on a
25526    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
25527    #[prost(uint32, optional, tag="98")]
25528    pub machine_id: ::core::option::Option<u32>,
25529    #[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, 56, 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, 61, 64, 43, 44, 1, 36, 50, 72, 88, 92, 93, 94, 96, 97, 104, 105, 112, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 114, 115, 116, 119, 121, 123, 900")]
25530    pub data: ::core::option::Option<trace_packet::Data>,
25531    /// Trusted user id of the producer which generated this packet. Keep in sync
25532    /// with TrustedPacket.trusted_uid.
25533    ///
25534    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
25535    /// instead.
25536    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
25537    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
25538    /// Service-assigned identifier of the packet sequence this packet belongs to.
25539    /// Uniquely identifies a producer + writer pair within the tracing session. A
25540    /// value of zero denotes an invalid ID. Keep in sync with
25541    /// TrustedPacket.trusted_packet_sequence_id.
25542    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
25543    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
25544}
25545/// Nested message and enum types in `TracePacket`.
25546pub mod trace_packet {
25547    /// Encapsulates the state and configuration of the ProtoVM instances running
25548    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
25549    /// and use them to inflate patches into full-state packets.
25550    /// Note: this message can't be defined in a dedicated file because it has a
25551    /// recursive dependency with TracePacket (see 'state' field below).
25552    #[derive(Clone, PartialEq, ::prost::Message)]
25553    pub struct ProtoVms {
25554        #[prost(message, repeated, tag="1")]
25555        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
25556    }
25557    /// Nested message and enum types in `ProtoVms`.
25558    pub mod proto_vms {
25559        #[derive(Clone, PartialEq, ::prost::Message)]
25560        pub struct Instance {
25561            #[prost(message, optional, tag="1")]
25562            pub program: ::core::option::Option<super::super::VmProgram>,
25563            #[prost(message, optional, tag="2")]
25564            pub state: ::core::option::Option<super::super::TracePacket>,
25565            #[prost(uint32, optional, tag="3")]
25566            pub memory_limit_kb: ::core::option::Option<u32>,
25567            #[prost(int32, repeated, packed="false", tag="4")]
25568            pub producer_id: ::prost::alloc::vec::Vec<i32>,
25569        }
25570    }
25571    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25572    #[repr(i32)]
25573    pub enum SequenceFlags {
25574        SeqUnspecified = 0,
25575        /// Set by the writer to indicate that it will re-emit any incremental data
25576        /// for the packet's sequence before referring to it again. This includes
25577        /// interned data as well as periodically emitted data like
25578        /// Process/ThreadDescriptors. This flag only affects the current packet
25579        /// sequence (see |trusted_packet_sequence_id|).
25580        ///
25581        /// When set, this TracePacket and subsequent TracePackets on the same
25582        /// sequence will not refer to any incremental data emitted before this
25583        /// TracePacket. For example, previously emitted interned data will be
25584        /// re-emitted if it is referred to again.
25585        ///
25586        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
25587        /// to skip packets in the sequence until the next one with this flag set, to
25588        /// ensure intact incremental data.
25589        SeqIncrementalStateCleared = 1,
25590        /// This packet requires incremental state, such as TracePacketDefaults or
25591        /// InternedData, to be parsed correctly. The trace reader should skip this
25592        /// packet if incremental state is not valid on this sequence, i.e. if no
25593        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
25594        /// current |trusted_packet_sequence_id|.
25595        SeqNeedsIncrementalState = 2,
25596    }
25597    impl SequenceFlags {
25598        /// String value of the enum field names used in the ProtoBuf definition.
25599        ///
25600        /// The values are not transformed in any way and thus are considered stable
25601        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25602        pub fn as_str_name(&self) -> &'static str {
25603            match self {
25604                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
25605                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
25606                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
25607            }
25608        }
25609    }
25610    #[derive(Clone, PartialEq, ::prost::Oneof)]
25611    pub enum Data {
25612        ///
25613        /// == STABLE PUBLIC API: TrackEvent ==
25614        ///
25615        /// TrackEvent is the stable, extensible API for recording trace events.
25616        /// See docs/instrumentation/track-events.md for details.
25617        #[prost(message, tag="11")]
25618        TrackEvent(super::TrackEvent),
25619        #[prost(message, tag="60")]
25620        TrackDescriptor(super::TrackDescriptor),
25621        ///
25622        /// == STABLE PUBLIC API: GENERIC KERNEL EVENTS ==
25623        ///
25624        /// Stable API for OS-level and hardware events from non-ftrace data
25625        /// sources.
25626        #[prost(message, tag="117")]
25627        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
25628        #[prost(message, tag="118")]
25629        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
25630        #[prost(message, tag="120")]
25631        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
25632        #[prost(message, tag="122")]
25633        GenericKernelProcessTree(super::GenericKernelProcessTree),
25634        #[prost(message, tag="129")]
25635        GenericGpuFrequencyEvent(super::GenericGpuFrequencyEvent),
25636        //
25637        // == UNSTABLE / CONTEXT-SPECIFIC FIELDS ==
25638        //
25639        // The fields below are NOT part of the stable public API. They are
25640        // emitted by specific Perfetto data sources and may change without
25641        // notice. Depend on them at your own risk.
25642
25643        /// IDs up to 15 are reserved. They take only one byte to encode their
25644        /// preamble so should be used for frequent events.
25645        #[prost(message, tag="2")]
25646        ProcessTree(super::ProcessTree),
25647        #[prost(message, tag="90")]
25648        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
25649        #[prost(message, tag="9")]
25650        ProcessStats(super::ProcessStats),
25651        #[prost(message, tag="4")]
25652        InodeFileMap(super::InodeFileMap),
25653        #[prost(message, tag="5")]
25654        ChromeEvents(super::ChromeEventBundle),
25655        #[prost(message, tag="6")]
25656        ClockSnapshot(super::ClockSnapshot),
25657        #[prost(message, tag="7")]
25658        SysStats(super::SysStats),
25659        #[prost(message, tag="89")]
25660        TraceUuid(super::TraceUuid),
25661        #[prost(message, tag="33")]
25662        TraceConfig(super::TraceConfig),
25663        #[prost(message, tag="34")]
25664        FtraceStats(super::FtraceStats),
25665        #[prost(message, tag="35")]
25666        TraceStats(super::TraceStats),
25667        #[prost(message, tag="37")]
25668        ProfilePacket(super::ProfilePacket),
25669        #[prost(message, tag="74")]
25670        StreamingAllocation(super::StreamingAllocation),
25671        #[prost(message, tag="75")]
25672        StreamingFree(super::StreamingFree),
25673        #[prost(message, tag="38")]
25674        Battery(super::BatteryCounters),
25675        #[prost(message, tag="40")]
25676        PowerRails(super::PowerRails),
25677        #[prost(message, tag="39")]
25678        AndroidLog(super::AndroidLogPacket),
25679        #[prost(message, tag="45")]
25680        SystemInfo(super::SystemInfo),
25681        #[prost(message, tag="46")]
25682        Trigger(super::Trigger),
25683        #[prost(message, tag="109")]
25684        ChromeTrigger(super::ChromeTrigger),
25685        #[prost(message, tag="47")]
25686        PackagesList(super::PackagesList),
25687        #[prost(message, tag="48")]
25688        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
25689        #[prost(message, tag="49")]
25690        PerfettoMetatrace(super::PerfettoMetatrace),
25691        #[prost(message, tag="51")]
25692        ChromeMetadata(super::ChromeMetadataPacket),
25693        #[prost(message, tag="52")]
25694        GpuCounterEvent(super::GpuCounterEvent),
25695        #[prost(message, tag="53")]
25696        GpuRenderStageEvent(super::GpuRenderStageEvent),
25697        #[prost(message, tag="54")]
25698        StreamingProfilePacket(super::StreamingProfilePacket),
25699        #[prost(message, tag="56")]
25700        HeapGraph(super::HeapGraph),
25701        #[prost(message, tag="57")]
25702        GraphicsFrameEvent(super::GraphicsFrameEvent),
25703        #[prost(message, tag="62")]
25704        VulkanMemoryEvent(super::VulkanMemoryEvent),
25705        #[prost(message, tag="63")]
25706        GpuLog(super::GpuLog),
25707        #[prost(message, tag="65")]
25708        VulkanApiEvent(super::VulkanApiEvent),
25709        #[prost(message, tag="66")]
25710        PerfSample(super::PerfSample),
25711        #[prost(message, tag="67")]
25712        CpuInfo(super::CpuInfo),
25713        #[prost(message, tag="68")]
25714        SmapsPacket(super::SmapsPacket),
25715        #[prost(message, tag="69")]
25716        ServiceEvent(super::TracingServiceEvent),
25717        #[prost(message, tag="70")]
25718        InitialDisplayState(super::InitialDisplayState),
25719        #[prost(message, tag="71")]
25720        GpuMemTotalEvent(super::GpuMemTotalEvent),
25721        #[prost(message, tag="73")]
25722        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
25723        #[prost(message, tag="76")]
25724        FrameTimelineEvent(super::FrameTimelineEvent),
25725        #[prost(message, tag="77")]
25726        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
25727        #[prost(message, tag="78")]
25728        UiState(super::UiState),
25729        #[prost(message, tag="80")]
25730        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
25731        #[prost(message, tag="81")]
25732        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
25733        #[prost(message, tag="82")]
25734        TranslationTable(super::TranslationTable),
25735        #[prost(message, tag="83")]
25736        AndroidGameInterventionList(super::AndroidGameInterventionList),
25737        #[prost(message, tag="84")]
25738        StatsdAtom(super::StatsdAtom),
25739        #[prost(message, tag="86")]
25740        AndroidSystemProperty(super::AndroidSystemProperty),
25741        #[prost(message, tag="91")]
25742        EntityStateResidency(super::EntityStateResidency),
25743        #[prost(message, tag="124")]
25744        TraceProvenance(super::TraceProvenance),
25745        #[prost(message, tag="125")]
25746        Protovms(ProtoVms),
25747        #[prost(message, tag="126")]
25748        TraceAttributes(super::TraceAttributes),
25749        #[prost(message, tag="127")]
25750        AndroidAflags(super::AndroidAflags),
25751        #[prost(message, tag="128")]
25752        GpuInfo(super::GpuInfo),
25753        /// Only used in profile packets.
25754        #[prost(message, tag="61")]
25755        ModuleSymbols(super::ModuleSymbols),
25756        #[prost(message, tag="64")]
25757        DeobfuscationMapping(super::DeobfuscationMapping),
25758        /// Deprecated, use TrackDescriptor instead.
25759        #[prost(message, tag="43")]
25760        ProcessDescriptor(super::ProcessDescriptor),
25761        /// Deprecated, use TrackDescriptor instead.
25762        #[prost(message, tag="44")]
25763        ThreadDescriptor(super::ThreadDescriptor),
25764        /// Events from the Linux kernel ftrace infrastructure.
25765        #[prost(message, tag="1")]
25766        FtraceEvents(super::FtraceEventBundle),
25767        /// This field is emitted at periodic intervals (~10s) and
25768        /// contains always the binary representation of the UUID
25769        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
25770        /// efficiently partition long traces without having to fully parse them.
25771        #[prost(bytes, tag="36")]
25772        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
25773        /// Zero or more proto encoded trace packets compressed using deflate.
25774        /// Each compressed_packets TracePacket (including the two field ids and
25775        /// sizes) should be less than 512KB.
25776        #[prost(bytes, tag="50")]
25777        CompressedPackets(::prost::alloc::vec::Vec<u8>),
25778        /// Data sources can extend the trace proto with custom extension protos (see
25779        /// docs/instrumentation/extensions.md). When they do that, the descriptor of
25780        /// their extension proto descriptor is serialized in this packet. This
25781        /// allows trace_processor to deserialize extended messages using reflection
25782        /// even if the extension proto is not checked in the Perfetto repo.
25783        #[prost(message, tag="72")]
25784        ExtensionDescriptor(super::ExtensionDescriptor),
25785        /// Represents a single packet sent or received by the network.
25786        #[prost(message, tag="88")]
25787        NetworkPacket(super::NetworkPacketEvent),
25788        /// Represents one or more packets sent or received by the network.
25789        #[prost(message, tag="92")]
25790        NetworkPacketBundle(super::NetworkPacketBundle),
25791        /// Winscope traces
25792        #[prost(message, tag="93")]
25793        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
25794        #[prost(message, tag="94")]
25795        SurfaceflingerTransactions(super::TransactionTraceEntry),
25796        #[prost(message, tag="96")]
25797        ShellTransition(super::ShellTransition),
25798        #[prost(message, tag="97")]
25799        ShellHandlerMappings(super::ShellHandlerMappings),
25800        #[prost(message, tag="104")]
25801        ProtologMessage(super::ProtoLogMessage),
25802        #[prost(message, tag="105")]
25803        ProtologViewerConfig(super::ProtoLogViewerConfig),
25804        #[prost(message, tag="112")]
25805        WinscopeExtensions(super::WinscopeExtensions),
25806        /// Events from the Windows etw infrastructure.
25807        #[prost(message, tag="95")]
25808        EtwEvents(super::EtwTraceEventBundle),
25809        #[prost(message, tag="99")]
25810        V8JsCode(super::V8JsCode),
25811        #[prost(message, tag="100")]
25812        V8InternalCode(super::V8InternalCode),
25813        #[prost(message, tag="101")]
25814        V8WasmCode(super::V8WasmCode),
25815        #[prost(message, tag="102")]
25816        V8RegExpCode(super::V8RegExpCode),
25817        #[prost(message, tag="103")]
25818        V8CodeMove(super::V8CodeMove),
25819        /// Clock synchronization with remote machines.
25820        #[prost(message, tag="107")]
25821        RemoteClockSync(super::RemoteClockSync),
25822        #[prost(message, tag="110")]
25823        PixelModemEvents(super::PixelModemEvents),
25824        #[prost(message, tag="111")]
25825        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
25826        #[prost(message, tag="113")]
25827        CloneSnapshotTrigger(super::Trigger),
25828        #[prost(message, tag="114")]
25829        BluetoothTraceEvent(super::BluetoothTraceEvent),
25830        #[prost(message, tag="115")]
25831        KernelWakelockData(super::KernelWakelockData),
25832        #[prost(message, tag="116")]
25833        AppWakelockBundle(super::AppWakelockBundle),
25834        #[prost(message, tag="119")]
25835        CpuPerUidData(super::CpuPerUidData),
25836        #[prost(message, tag="121")]
25837        EvdevEvent(super::EvdevEvent),
25838        #[prost(message, tag="123")]
25839        UserList(super::AndroidUserList),
25840        /// This field is only used for testing.
25841        /// In previous versions of this proto this field had the id 268435455
25842        /// This caused many problems:
25843        /// - protozero decoder does not handle field ids larger than 999.
25844        /// - old versions of protoc produce Java bindings with syntax errors when
25845        ///    the field id is large enough.
25846        #[prost(message, tag="900")]
25847        ForTesting(super::TestEvent),
25848    }
25849    /// Trusted user id of the producer which generated this packet. Keep in sync
25850    /// with TrustedPacket.trusted_uid.
25851    ///
25852    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
25853    /// instead.
25854    #[derive(Clone, PartialEq, ::prost::Oneof)]
25855    pub enum OptionalTrustedUid {
25856        #[prost(int32, tag="3")]
25857        TrustedUid(i32),
25858    }
25859    /// Service-assigned identifier of the packet sequence this packet belongs to.
25860    /// Uniquely identifies a producer + writer pair within the tracing session. A
25861    /// value of zero denotes an invalid ID. Keep in sync with
25862    /// TrustedPacket.trusted_packet_sequence_id.
25863    #[derive(Clone, PartialEq, ::prost::Oneof)]
25864    pub enum OptionalTrustedPacketSequenceId {
25865        #[prost(uint32, tag="10")]
25866        TrustedPacketSequenceId(u32),
25867    }
25868}
25869// End of protos/perfetto/trace/trace_packet.proto
25870
25871// Begin of protos/perfetto/trace/trace.proto
25872
25873#[derive(Clone, PartialEq, ::prost::Message)]
25874pub struct Trace {
25875    #[prost(message, repeated, tag="1")]
25876    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
25877}
25878#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25879#[repr(i32)]
25880pub enum VmCursorEnum {
25881    VmCursorUnspecified = 0,
25882    VmCursorSrc = 1,
25883    VmCursorDst = 2,
25884    VmCursorBoth = 3,
25885}
25886impl VmCursorEnum {
25887    /// String value of the enum field names used in the ProtoBuf definition.
25888    ///
25889    /// The values are not transformed in any way and thus are considered stable
25890    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25891    pub fn as_str_name(&self) -> &'static str {
25892        match self {
25893            VmCursorEnum::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
25894            VmCursorEnum::VmCursorSrc => "VM_CURSOR_SRC",
25895            VmCursorEnum::VmCursorDst => "VM_CURSOR_DST",
25896            VmCursorEnum::VmCursorBoth => "VM_CURSOR_BOTH",
25897        }
25898    }
25899}
25900// End of protos/perfetto/common/tracing_service_state.proto
25901
25902// Begin of protos/perfetto/common/builtin_clock.proto
25903
25904/// Builtin clock domains used in Perfetto traces.
25905///
25906/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
25907/// representing the trace file's own timeline. Each trace file gets its own
25908/// instance (scoped by trace file index).
25909///
25910/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
25911/// fallback: if the first timestamp conversion uses a clock other than the
25912/// trace file clock and no explicit clock snapshot data exists, the trace time
25913/// is switched to BOOTTIME. This fallback does not fire for modern traces that
25914/// include ClockSnapshots or that only use the trace file clock directly.
25915///
25916/// The `primary_trace_clock` field in ClockSnapshot can definitively override
25917/// the trace time clock regardless of the above.
25918#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25919#[repr(i32)]
25920pub enum BuiltinClock {
25921    Unknown = 0,
25922    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
25923    Realtime = 1,
25924    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
25925    RealtimeCoarse = 2,
25926    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
25927    Monotonic = 3,
25928    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
25929    MonotonicCoarse = 4,
25930    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
25931    MonotonicRaw = 5,
25932    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
25933    /// For proto traces, this is used as a backwards-compatible fallback trace
25934    /// time clock when no explicit clock snapshots are present.
25935    Boottime = 6,
25936    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
25937    Tsc = 9,
25938    /// Corresponds to the perf event clock (PERF_CLOCK).
25939    Perf = 10,
25940    /// A synthetic clock representing the trace file's own timeline. Each trace
25941    /// file gets its own instance (scoped by trace file index). This is the
25942    /// default trace time clock before any clock snapshot or format-specific
25943    /// override takes effect.
25944    TraceFile = 11,
25945    MaxId = 63,
25946}
25947impl BuiltinClock {
25948    /// String value of the enum field names used in the ProtoBuf definition.
25949    ///
25950    /// The values are not transformed in any way and thus are considered stable
25951    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25952    pub fn as_str_name(&self) -> &'static str {
25953        match self {
25954            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
25955            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
25956            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
25957            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
25958            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
25959            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
25960            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
25961            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
25962            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
25963            BuiltinClock::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
25964            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
25965        }
25966    }
25967}
25968// End of protos/perfetto/common/builtin_clock.proto
25969
25970// Begin of protos/perfetto/common/semantic_type.proto
25971
25972/// Semantic types for string fields. This tells the filter what kind of
25973/// data the field contains, so it can apply the right filtering rules.
25974/// See /rfcs/0011-subset-string-filter-rules.md for design details.
25975/// Introduced in: Perfetto v54.
25976#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25977#[repr(i32)]
25978pub enum SemanticType {
25979    Unspecified = 0,
25980    Atrace = 1,
25981    Job = 2,
25982    Wakelock = 3,
25983}
25984impl SemanticType {
25985    /// String value of the enum field names used in the ProtoBuf definition.
25986    ///
25987    /// The values are not transformed in any way and thus are considered stable
25988    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25989    pub fn as_str_name(&self) -> &'static str {
25990        match self {
25991            SemanticType::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
25992            SemanticType::Atrace => "SEMANTIC_TYPE_ATRACE",
25993            SemanticType::Job => "SEMANTIC_TYPE_JOB",
25994            SemanticType::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
25995        }
25996    }
25997}
25998// End of protos/perfetto/config/android/android_input_event_config.proto
25999
26000// Begin of protos/perfetto/common/android_log_constants.proto
26001
26002/// Values from NDK's android/log.h.
26003#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26004#[repr(i32)]
26005pub enum AndroidLogId {
26006    /// MAIN.
26007    LidDefault = 0,
26008    LidRadio = 1,
26009    LidEvents = 2,
26010    LidSystem = 3,
26011    LidCrash = 4,
26012    LidStats = 5,
26013    LidSecurity = 6,
26014    LidKernel = 7,
26015}
26016impl AndroidLogId {
26017    /// String value of the enum field names used in the ProtoBuf definition.
26018    ///
26019    /// The values are not transformed in any way and thus are considered stable
26020    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26021    pub fn as_str_name(&self) -> &'static str {
26022        match self {
26023            AndroidLogId::LidDefault => "LID_DEFAULT",
26024            AndroidLogId::LidRadio => "LID_RADIO",
26025            AndroidLogId::LidEvents => "LID_EVENTS",
26026            AndroidLogId::LidSystem => "LID_SYSTEM",
26027            AndroidLogId::LidCrash => "LID_CRASH",
26028            AndroidLogId::LidStats => "LID_STATS",
26029            AndroidLogId::LidSecurity => "LID_SECURITY",
26030            AndroidLogId::LidKernel => "LID_KERNEL",
26031        }
26032    }
26033}
26034#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26035#[repr(i32)]
26036pub enum AndroidLogPriority {
26037    PrioUnspecified = 0,
26038    /// _DEFAULT, but should never be seen in logs.
26039    PrioUnused = 1,
26040    PrioVerbose = 2,
26041    PrioDebug = 3,
26042    PrioInfo = 4,
26043    PrioWarn = 5,
26044    PrioError = 6,
26045    PrioFatal = 7,
26046}
26047impl AndroidLogPriority {
26048    /// String value of the enum field names used in the ProtoBuf definition.
26049    ///
26050    /// The values are not transformed in any way and thus are considered stable
26051    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26052    pub fn as_str_name(&self) -> &'static str {
26053        match self {
26054            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
26055            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
26056            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
26057            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
26058            AndroidLogPriority::PrioInfo => "PRIO_INFO",
26059            AndroidLogPriority::PrioWarn => "PRIO_WARN",
26060            AndroidLogPriority::PrioError => "PRIO_ERROR",
26061            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
26062        }
26063    }
26064}
26065// End of protos/perfetto/config/android/pixel_modem_config.proto
26066
26067// Begin of protos/perfetto/common/protolog_common.proto
26068
26069#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26070#[repr(i32)]
26071pub enum ProtoLogLevel {
26072    ProtologLevelUndefined = 0,
26073    ProtologLevelDebug = 1,
26074    ProtologLevelVerbose = 2,
26075    ProtologLevelInfo = 3,
26076    ProtologLevelWarn = 4,
26077    ProtologLevelError = 5,
26078    ProtologLevelWtf = 6,
26079}
26080impl ProtoLogLevel {
26081    /// String value of the enum field names used in the ProtoBuf definition.
26082    ///
26083    /// The values are not transformed in any way and thus are considered stable
26084    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26085    pub fn as_str_name(&self) -> &'static str {
26086        match self {
26087            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
26088            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
26089            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
26090            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
26091            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
26092            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
26093            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
26094        }
26095    }
26096}
26097// End of protos/perfetto/config/qnx/qnx_config.proto
26098
26099// Begin of protos/perfetto/config/statsd/atom_ids.proto
26100
26101/// This enum is obtained by post-processing
26102/// AOSP/frameworks/proto_logging/stats/atoms.proto through
26103/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
26104/// enum value for each proto field defined in the upstream atoms.proto.
26105#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26106#[repr(i32)]
26107pub enum AtomId {
26108    AtomUnspecified = 0,
26109    AtomBleScanStateChanged = 2,
26110    AtomProcessStateChanged = 3,
26111    AtomBleScanResultReceived = 4,
26112    AtomSensorStateChanged = 5,
26113    AtomGpsScanStateChanged = 6,
26114    AtomSyncStateChanged = 7,
26115    AtomScheduledJobStateChanged = 8,
26116    AtomScreenBrightnessChanged = 9,
26117    AtomWakelockStateChanged = 10,
26118    AtomLongPartialWakelockStateChanged = 11,
26119    AtomMobileRadioPowerStateChanged = 12,
26120    AtomWifiRadioPowerStateChanged = 13,
26121    AtomActivityManagerSleepStateChanged = 14,
26122    AtomMemoryFactorStateChanged = 15,
26123    AtomExcessiveCpuUsageReported = 16,
26124    AtomCachedKillReported = 17,
26125    AtomProcessMemoryStatReported = 18,
26126    AtomLauncherEvent = 19,
26127    AtomBatterySaverModeStateChanged = 20,
26128    AtomDeviceIdleModeStateChanged = 21,
26129    AtomDeviceIdlingModeStateChanged = 22,
26130    AtomAudioStateChanged = 23,
26131    AtomMediaCodecStateChanged = 24,
26132    AtomCameraStateChanged = 25,
26133    AtomFlashlightStateChanged = 26,
26134    AtomUidProcessStateChanged = 27,
26135    AtomProcessLifeCycleStateChanged = 28,
26136    AtomScreenStateChanged = 29,
26137    AtomBatteryLevelChanged = 30,
26138    AtomChargingStateChanged = 31,
26139    AtomPluggedStateChanged = 32,
26140    AtomInteractiveStateChanged = 33,
26141    AtomTouchEventReported = 34,
26142    AtomWakeupAlarmOccurred = 35,
26143    AtomKernelWakeupReported = 36,
26144    AtomWifiLockStateChanged = 37,
26145    AtomWifiSignalStrengthChanged = 38,
26146    AtomWifiScanStateChanged = 39,
26147    AtomPhoneSignalStrengthChanged = 40,
26148    AtomSettingChanged = 41,
26149    AtomActivityForegroundStateChanged = 42,
26150    AtomIsolatedUidChanged = 43,
26151    AtomPacketWakeupOccurred = 44,
26152    AtomWallClockTimeShifted = 45,
26153    AtomAnomalyDetected = 46,
26154    AtomAppBreadcrumbReported = 47,
26155    AtomAppStartOccurred = 48,
26156    AtomAppStartCanceled = 49,
26157    AtomAppStartFullyDrawn = 50,
26158    AtomLmkKillOccurred = 51,
26159    AtomPictureInPictureStateChanged = 52,
26160    AtomWifiMulticastLockStateChanged = 53,
26161    AtomAppStartMemoryStateCaptured = 55,
26162    AtomShutdownSequenceReported = 56,
26163    AtomBootSequenceReported = 57,
26164    AtomOverlayStateChanged = 59,
26165    AtomForegroundServiceStateChanged = 60,
26166    AtomCallStateChanged = 61,
26167    AtomKeyguardStateChanged = 62,
26168    AtomKeyguardBouncerStateChanged = 63,
26169    AtomKeyguardBouncerPasswordEntered = 64,
26170    AtomAppDied = 65,
26171    AtomResourceConfigurationChanged = 66,
26172    AtomBluetoothEnabledStateChanged = 67,
26173    AtomBluetoothConnectionStateChanged = 68,
26174    AtomGpsSignalQualityChanged = 69,
26175    AtomUsbConnectorStateChanged = 70,
26176    AtomSpeakerImpedanceReported = 71,
26177    AtomHardwareFailed = 72,
26178    AtomPhysicalDropDetected = 73,
26179    AtomChargeCyclesReported = 74,
26180    AtomMobileConnectionStateChanged = 75,
26181    AtomMobileRadioTechnologyChanged = 76,
26182    AtomUsbDeviceAttached = 77,
26183    AtomAppCrashOccurred = 78,
26184    AtomAnrOccurred = 79,
26185    AtomWtfOccurred = 80,
26186    AtomLowMemReported = 81,
26187    AtomGenericAtom = 82,
26188    AtomVibratorStateChanged = 84,
26189    AtomDeferredJobStatsReported = 85,
26190    AtomThermalThrottling = 86,
26191    AtomBiometricAcquired = 87,
26192    AtomBiometricAuthenticated = 88,
26193    AtomBiometricErrorOccurred = 89,
26194    AtomUiEventReported = 90,
26195    AtomBatteryHealthSnapshot = 91,
26196    AtomSlowIo = 92,
26197    AtomBatteryCausedShutdown = 93,
26198    AtomPhoneServiceStateChanged = 94,
26199    AtomPhoneStateChanged = 95,
26200    AtomUserRestrictionChanged = 96,
26201    AtomSettingsUiChanged = 97,
26202    AtomConnectivityStateChanged = 98,
26203    AtomServiceStateChanged = 99,
26204    AtomServiceLaunchReported = 100,
26205    AtomFlagFlipUpdateOccurred = 101,
26206    AtomBinaryPushStateChanged = 102,
26207    AtomDevicePolicyEvent = 103,
26208    AtomDocsUiFileOpCanceled = 104,
26209    AtomDocsUiFileOpCopyMoveModeReported = 105,
26210    AtomDocsUiFileOpFailure = 106,
26211    AtomDocsUiProviderFileOp = 107,
26212    AtomDocsUiInvalidScopedAccessRequest = 108,
26213    AtomDocsUiLaunchReported = 109,
26214    AtomDocsUiRootVisited = 110,
26215    AtomDocsUiStartupMs = 111,
26216    AtomDocsUiUserActionReported = 112,
26217    AtomWifiEnabledStateChanged = 113,
26218    AtomWifiRunningStateChanged = 114,
26219    AtomAppCompacted = 115,
26220    AtomNetworkDnsEventReported = 116,
26221    AtomDocsUiPickerLaunchedFromReported = 117,
26222    AtomDocsUiPickResultReported = 118,
26223    AtomDocsUiSearchModeReported = 119,
26224    AtomDocsUiSearchTypeReported = 120,
26225    AtomDataStallEvent = 121,
26226    AtomRescuePartyResetReported = 122,
26227    AtomSignedConfigReported = 123,
26228    AtomGnssNiEventReported = 124,
26229    AtomBluetoothLinkLayerConnectionEvent = 125,
26230    AtomBluetoothAclConnectionStateChanged = 126,
26231    AtomBluetoothScoConnectionStateChanged = 127,
26232    AtomAppDowngraded = 128,
26233    AtomAppOptimizedAfterDowngraded = 129,
26234    AtomLowStorageStateChanged = 130,
26235    AtomGnssNfwNotificationReported = 131,
26236    AtomGnssConfigurationReported = 132,
26237    AtomUsbPortOverheatEventReported = 133,
26238    AtomNfcErrorOccurred = 134,
26239    AtomNfcStateChanged = 135,
26240    AtomNfcBeamOccurred = 136,
26241    AtomNfcCardemulationOccurred = 137,
26242    AtomNfcTagOccurred = 138,
26243    AtomNfcHceTransactionOccurred = 139,
26244    AtomSeStateChanged = 140,
26245    AtomSeOmapiReported = 141,
26246    AtomBroadcastDispatchLatencyReported = 142,
26247    AtomAttentionManagerServiceResultReported = 143,
26248    AtomAdbConnectionChanged = 144,
26249    AtomSpeechDspStatReported = 145,
26250    AtomUsbContaminantReported = 146,
26251    AtomWatchdogRollbackOccurred = 147,
26252    AtomBiometricSystemHealthIssueDetected = 148,
26253    AtomBubbleUiChanged = 149,
26254    AtomScheduledJobConstraintChanged = 150,
26255    AtomBluetoothActiveDeviceChanged = 151,
26256    AtomBluetoothA2dpPlaybackStateChanged = 152,
26257    AtomBluetoothA2dpCodecConfigChanged = 153,
26258    AtomBluetoothA2dpCodecCapabilityChanged = 154,
26259    AtomBluetoothA2dpAudioUnderrunReported = 155,
26260    AtomBluetoothA2dpAudioOverrunReported = 156,
26261    AtomBluetoothDeviceRssiReported = 157,
26262    AtomBluetoothDeviceFailedContactCounterReported = 158,
26263    AtomBluetoothDeviceTxPowerLevelReported = 159,
26264    AtomBluetoothHciTimeoutReported = 160,
26265    AtomBluetoothQualityReportReported = 161,
26266    AtomBluetoothDeviceInfoReported = 162,
26267    AtomBluetoothRemoteVersionInfoReported = 163,
26268    AtomBluetoothSdpAttributeReported = 164,
26269    AtomBluetoothBondStateChanged = 165,
26270    AtomBluetoothClassicPairingEventReported = 166,
26271    AtomBluetoothSmpPairingEventReported = 167,
26272    AtomScreenTimeoutExtensionReported = 168,
26273    AtomProcessStartTime = 169,
26274    AtomPermissionGrantRequestResultReported = 170,
26275    AtomBluetoothSocketConnectionStateChanged = 171,
26276    AtomDeviceIdentifierAccessDenied = 172,
26277    AtomBubbleDeveloperErrorReported = 173,
26278    AtomAssistGestureStageReported = 174,
26279    AtomAssistGestureFeedbackReported = 175,
26280    AtomAssistGestureProgressReported = 176,
26281    AtomTouchGestureClassified = 177,
26282    AtomHiddenApiUsed = 178,
26283    AtomStyleUiChanged = 179,
26284    AtomPrivacyIndicatorsInteracted = 180,
26285    AtomAppInstallOnExternalStorageReported = 181,
26286    AtomNetworkStackReported = 182,
26287    AtomAppMovedStorageReported = 183,
26288    AtomBiometricEnrolled = 184,
26289    AtomSystemServerWatchdogOccurred = 185,
26290    AtomTombStoneOccurred = 186,
26291    AtomBluetoothClassOfDeviceReported = 187,
26292    AtomIntelligenceEventReported = 188,
26293    AtomThermalThrottlingSeverityStateChanged = 189,
26294    AtomRoleRequestResultReported = 190,
26295    AtomMediametricsAudiopolicyReported = 191,
26296    AtomMediametricsAudiorecordReported = 192,
26297    AtomMediametricsAudiothreadReported = 193,
26298    AtomMediametricsAudiotrackReported = 194,
26299    AtomMediametricsCodecReported = 195,
26300    AtomMediametricsDrmWidevineReported = 196,
26301    AtomMediametricsExtractorReported = 197,
26302    AtomMediametricsMediadrmReported = 198,
26303    AtomMediametricsNuplayerReported = 199,
26304    AtomMediametricsRecorderReported = 200,
26305    AtomMediametricsDrmmanagerReported = 201,
26306    AtomCarPowerStateChanged = 203,
26307    AtomGarageModeInfo = 204,
26308    AtomTestAtomReported = 205,
26309    AtomContentCaptureCallerMismatchReported = 206,
26310    AtomContentCaptureServiceEvents = 207,
26311    AtomContentCaptureSessionEvents = 208,
26312    AtomContentCaptureFlushed = 209,
26313    AtomLocationManagerApiUsageReported = 210,
26314    AtomReviewPermissionsFragmentResultReported = 211,
26315    AtomRuntimePermissionsUpgradeResult = 212,
26316    AtomGrantPermissionsActivityButtonActions = 213,
26317    AtomLocationAccessCheckNotificationAction = 214,
26318    AtomAppPermissionFragmentActionReported = 215,
26319    AtomAppPermissionFragmentViewed = 216,
26320    AtomAppPermissionsFragmentViewed = 217,
26321    AtomPermissionAppsFragmentViewed = 218,
26322    AtomTextSelectionEvent = 219,
26323    AtomTextLinkifyEvent = 220,
26324    AtomConversationActionsEvent = 221,
26325    AtomLanguageDetectionEvent = 222,
26326    AtomExclusionRectStateChanged = 223,
26327    AtomBackGestureReportedReported = 224,
26328    AtomUpdateEngineUpdateAttemptReported = 225,
26329    AtomUpdateEngineSuccessfulUpdateReported = 226,
26330    AtomCameraActionEvent = 227,
26331    AtomAppCompatibilityChangeReported = 228,
26332    AtomPerfettoUploaded = 229,
26333    AtomVmsClientConnectionStateChanged = 230,
26334    AtomMediaProviderScanOccurred = 233,
26335    AtomMediaContentDeleted = 234,
26336    AtomMediaProviderPermissionRequested = 235,
26337    AtomMediaProviderSchemaChanged = 236,
26338    AtomMediaProviderIdleMaintenanceFinished = 237,
26339    AtomRebootEscrowRecoveryReported = 238,
26340    AtomBootTimeEventDurationReported = 239,
26341    AtomBootTimeEventElapsedTimeReported = 240,
26342    AtomBootTimeEventUtcTimeReported = 241,
26343    AtomBootTimeEventErrorCodeReported = 242,
26344    AtomUserspaceRebootReported = 243,
26345    AtomNotificationReported = 244,
26346    AtomNotificationPanelReported = 245,
26347    AtomNotificationChannelModified = 246,
26348    AtomIntegrityCheckResultReported = 247,
26349    AtomIntegrityRulesPushed = 248,
26350    AtomCbMessageReported = 249,
26351    AtomCbMessageError = 250,
26352    AtomWifiHealthStatReported = 251,
26353    AtomWifiFailureStatReported = 252,
26354    AtomWifiConnectionResultReported = 253,
26355    AtomAppFreezeChanged = 254,
26356    AtomSnapshotMergeReported = 255,
26357    AtomForegroundServiceAppOpSessionEnded = 256,
26358    AtomDisplayJankReported = 257,
26359    AtomAppStandbyBucketChanged = 258,
26360    AtomSharesheetStarted = 259,
26361    AtomRankingSelected = 260,
26362    AtomTvsettingsUiInteracted = 261,
26363    AtomLauncherSnapshot = 262,
26364    AtomPackageInstallerV2Reported = 263,
26365    AtomUserLifecycleJourneyReported = 264,
26366    AtomUserLifecycleEventOccurred = 265,
26367    AtomAccessibilityShortcutReported = 266,
26368    AtomAccessibilityServiceReported = 267,
26369    AtomDocsUiDragAndDropReported = 268,
26370    AtomAppUsageEventOccurred = 269,
26371    AtomAutoRevokeNotificationClicked = 270,
26372    AtomAutoRevokeFragmentAppViewed = 271,
26373    AtomAutoRevokedAppInteraction = 272,
26374    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
26375    AtomEvsUsageStatsReported = 274,
26376    AtomAudioPowerUsageDataReported = 275,
26377    AtomTvTunerStateChanged = 276,
26378    AtomMediaoutputOpSwitchReported = 277,
26379    AtomCbMessageFiltered = 278,
26380    AtomTvTunerDvrStatus = 279,
26381    AtomTvCasSessionOpenStatus = 280,
26382    AtomAssistantInvocationReported = 281,
26383    AtomDisplayWakeReported = 282,
26384    AtomCarUserHalModifyUserRequestReported = 283,
26385    AtomCarUserHalModifyUserResponseReported = 284,
26386    AtomCarUserHalPostSwitchResponseReported = 285,
26387    AtomCarUserHalInitialUserInfoRequestReported = 286,
26388    AtomCarUserHalInitialUserInfoResponseReported = 287,
26389    AtomCarUserHalUserAssociationRequestReported = 288,
26390    AtomCarUserHalSetUserAssociationResponseReported = 289,
26391    AtomNetworkIpProvisioningReported = 290,
26392    AtomNetworkDhcpRenewReported = 291,
26393    AtomNetworkValidationReported = 292,
26394    AtomNetworkStackQuirkReported = 293,
26395    AtomMediametricsAudiorecorddeviceusageReported = 294,
26396    AtomMediametricsAudiothreaddeviceusageReported = 295,
26397    AtomMediametricsAudiotrackdeviceusageReported = 296,
26398    AtomMediametricsAudiodeviceconnectionReported = 297,
26399    AtomBlobCommitted = 298,
26400    AtomBlobLeased = 299,
26401    AtomBlobOpened = 300,
26402    AtomContactsProviderStatusReported = 301,
26403    AtomKeystoreKeyEventReported = 302,
26404    AtomNetworkTetheringReported = 303,
26405    AtomImeTouchReported = 304,
26406    AtomUiInteractionFrameInfoReported = 305,
26407    AtomUiActionLatencyReported = 306,
26408    AtomWifiDisconnectReported = 307,
26409    AtomWifiConnectionStateChanged = 308,
26410    AtomHdmiCecActiveSourceChanged = 309,
26411    AtomHdmiCecMessageReported = 310,
26412    AtomAirplaneMode = 311,
26413    AtomModemRestart = 312,
26414    AtomCarrierIdMismatchReported = 313,
26415    AtomCarrierIdTableUpdated = 314,
26416    AtomDataStallRecoveryReported = 315,
26417    AtomMediametricsMediaparserReported = 316,
26418    AtomTlsHandshakeReported = 317,
26419    AtomTextClassifierApiUsageReported = 318,
26420    AtomCarWatchdogKillStatsReported = 319,
26421    AtomMediametricsPlaybackReported = 320,
26422    AtomMediaNetworkInfoChanged = 321,
26423    AtomMediaPlaybackStateChanged = 322,
26424    AtomMediaPlaybackErrorReported = 323,
26425    AtomMediaPlaybackTrackChanged = 324,
26426    AtomWifiScanReported = 325,
26427    AtomWifiPnoScanReported = 326,
26428    AtomTifTuneChanged = 327,
26429    AtomAutoRotateReported = 328,
26430    AtomPerfettoTrigger = 329,
26431    AtomTranscodingData = 330,
26432    AtomImsServiceEntitlementUpdated = 331,
26433    AtomDeviceRotated = 333,
26434    AtomSimSpecificSettingsRestored = 334,
26435    AtomTextClassifierDownloadReported = 335,
26436    AtomPinStorageEvent = 336,
26437    AtomFaceDownReported = 337,
26438    AtomBluetoothHalCrashReasonReported = 338,
26439    AtomRebootEscrowPreparationReported = 339,
26440    AtomRebootEscrowLskfCaptureReported = 340,
26441    AtomRebootEscrowRebootReported = 341,
26442    AtomBinderLatencyReported = 342,
26443    AtomMediametricsAaudiostreamReported = 343,
26444    AtomMediaTranscodingSessionEnded = 344,
26445    AtomMagnificationUsageReported = 345,
26446    AtomMagnificationModeWithImeOnReported = 346,
26447    AtomAppSearchCallStatsReported = 347,
26448    AtomAppSearchPutDocumentStatsReported = 348,
26449    AtomDeviceControlChanged = 349,
26450    AtomDeviceStateChanged = 350,
26451    AtomInputdeviceRegistered = 351,
26452    AtomSmartspaceCardReported = 352,
26453    AtomAuthPromptAuthenticateInvoked = 353,
26454    AtomAuthManagerCanAuthenticateInvoked = 354,
26455    AtomAuthEnrollActionInvoked = 355,
26456    AtomAuthDeprecatedApiUsed = 356,
26457    AtomUnattendedRebootOccurred = 357,
26458    AtomLongRebootBlockingReported = 358,
26459    AtomLocationTimeZoneProviderStateChanged = 359,
26460    AtomFdtrackEventOccurred = 364,
26461    AtomTimeoutAutoExtendedReported = 365,
26462    AtomAlarmBatchDelivered = 367,
26463    AtomAlarmScheduled = 368,
26464    AtomCarWatchdogIoOveruseStatsReported = 369,
26465    AtomUserLevelHibernationStateChanged = 370,
26466    AtomAppSearchInitializeStatsReported = 371,
26467    AtomAppSearchQueryStatsReported = 372,
26468    AtomAppProcessDied = 373,
26469    AtomNetworkIpReachabilityMonitorReported = 374,
26470    AtomSlowInputEventReported = 375,
26471    AtomAnrOccurredProcessingStarted = 376,
26472    AtomAppSearchRemoveStatsReported = 377,
26473    AtomMediaCodecReported = 378,
26474    AtomPermissionUsageFragmentInteraction = 379,
26475    AtomPermissionDetailsInteraction = 380,
26476    AtomPrivacySensorToggleInteraction = 381,
26477    AtomPrivacyToggleDialogInteraction = 382,
26478    AtomAppSearchOptimizeStatsReported = 383,
26479    AtomNonA11yToolServiceWarningReport = 384,
26480    AtomAppCompatStateChanged = 386,
26481    AtomSizeCompatRestartButtonEventReported = 387,
26482    AtomSplitscreenUiChanged = 388,
26483    AtomNetworkDnsHandshakeReported = 389,
26484    AtomBluetoothCodePathCounter = 390,
26485    AtomBluetoothLeBatchScanReportDelay = 392,
26486    AtomAccessibilityFloatingMenuUiChanged = 393,
26487    AtomNeuralnetworksCompilationCompleted = 394,
26488    AtomNeuralnetworksExecutionCompleted = 395,
26489    AtomNeuralnetworksCompilationFailed = 396,
26490    AtomNeuralnetworksExecutionFailed = 397,
26491    AtomContextHubBooted = 398,
26492    AtomContextHubRestarted = 399,
26493    AtomContextHubLoadedNanoappSnapshotReported = 400,
26494    AtomChreCodeDownloadTransacted = 401,
26495    AtomUwbSessionInited = 402,
26496    AtomUwbSessionClosed = 403,
26497    AtomUwbFirstRangingReceived = 404,
26498    AtomUwbRangingMeasurementReceived = 405,
26499    AtomTextClassifierDownloadWorkScheduled = 406,
26500    AtomTextClassifierDownloadWorkCompleted = 407,
26501    AtomClipboardCleared = 408,
26502    AtomVmCreationRequested = 409,
26503    AtomNearbyDeviceScanStateChanged = 410,
26504    AtomApplicationLocalesChanged = 412,
26505    AtomMediametricsAudiotrackstatusReported = 413,
26506    AtomFoldStateDurationReported = 414,
26507    AtomLocationTimeZoneProviderControllerStateChanged = 415,
26508    AtomDisplayHbmStateChanged = 416,
26509    AtomDisplayHbmBrightnessChanged = 417,
26510    AtomPersistentUriPermissionsFlushed = 418,
26511    AtomEarlyBootCompOsArtifactsCheckReported = 419,
26512    AtomVbmetaDigestReported = 420,
26513    AtomApexInfoGathered = 421,
26514    AtomPvmInfoGathered = 422,
26515    AtomWearSettingsUiInteracted = 423,
26516    AtomTracingServiceReportEvent = 424,
26517    AtomMediametricsAudiorecordstatusReported = 425,
26518    AtomLauncherLatency = 426,
26519    AtomDropboxEntryDropped = 427,
26520    AtomWifiP2pConnectionReported = 428,
26521    AtomGameStateChanged = 429,
26522    AtomHotwordDetectorCreateRequested = 430,
26523    AtomHotwordDetectionServiceInitResultReported = 431,
26524    AtomHotwordDetectionServiceRestarted = 432,
26525    AtomHotwordDetectorKeyphraseTriggered = 433,
26526    AtomHotwordDetectorEvents = 434,
26527    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
26528    AtomContactsIndexerUpdateStatsReported = 440,
26529    AtomAppBackgroundRestrictionsInfo = 441,
26530    AtomMmsSmsProviderGetThreadIdFailed = 442,
26531    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
26532    AtomPermissionReminderNotificationInteracted = 444,
26533    AtomRecentPermissionDecisionsInteracted = 445,
26534    AtomGnssPsdsDownloadReported = 446,
26535    AtomLeAudioConnectionSessionReported = 447,
26536    AtomLeAudioBroadcastSessionReported = 448,
26537    AtomDreamUiEventReported = 449,
26538    AtomTaskManagerEventReported = 450,
26539    AtomCdmAssociationAction = 451,
26540    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
26541    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
26542    AtomAccessibilityTextReadingOptionsChanged = 454,
26543    AtomWifiSetupFailureCrashReported = 455,
26544    AtomUwbDeviceErrorReported = 456,
26545    AtomIsolatedCompilationScheduled = 457,
26546    AtomIsolatedCompilationEnded = 458,
26547    AtomOnsOpportunisticEsimProvisioningComplete = 459,
26548    AtomSystemServerPreWatchdogOccurred = 460,
26549    AtomTelephonyAnomalyDetected = 461,
26550    AtomLetterboxPositionChanged = 462,
26551    AtomRemoteKeyProvisioningAttempt = 463,
26552    AtomRemoteKeyProvisioningNetworkInfo = 464,
26553    AtomRemoteKeyProvisioningTiming = 465,
26554    AtomMediaoutputOpInteractionReport = 466,
26555    AtomSyncExemptionOccurred = 468,
26556    AtomAutofillPresentationEventReported = 469,
26557    AtomDockStateChanged = 470,
26558    AtomSafetySourceStateCollected = 471,
26559    AtomSafetyCenterSystemEventReported = 472,
26560    AtomSafetyCenterInteractionReported = 473,
26561    AtomSettingsProviderSettingChanged = 474,
26562    AtomBroadcastDeliveryEventReported = 475,
26563    AtomServiceRequestEventReported = 476,
26564    AtomProviderAcquisitionEventReported = 477,
26565    AtomBluetoothDeviceNameReported = 478,
26566    AtomCbConfigUpdated = 479,
26567    AtomCbModuleErrorReported = 480,
26568    AtomCbServiceFeatureChanged = 481,
26569    AtomCbReceiverFeatureChanged = 482,
26570    AtomPrivacySignalNotificationInteraction = 484,
26571    AtomPrivacySignalIssueCardInteraction = 485,
26572    AtomPrivacySignalsJobFailure = 486,
26573    AtomVibrationReported = 487,
26574    AtomUwbRangingStart = 489,
26575    AtomAppCompactedV2 = 491,
26576    AtomDisplayBrightnessChanged = 494,
26577    AtomActivityActionBlocked = 495,
26578    AtomNetworkDnsServerSupportReported = 504,
26579    AtomVmBooted = 505,
26580    AtomVmExited = 506,
26581    AtomAmbientBrightnessStatsReported = 507,
26582    AtomMediametricsSpatializercapabilitiesReported = 508,
26583    AtomMediametricsSpatializerdeviceenabledReported = 509,
26584    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
26585    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
26586    AtomHearingAidInfoReported = 513,
26587    AtomDeviceWideJobConstraintChanged = 514,
26588    AtomAmbientModeChanged = 515,
26589    AtomAnrLatencyReported = 516,
26590    AtomResourceApiInfo = 517,
26591    AtomSystemDefaultNetworkChanged = 518,
26592    AtomIwlanSetupDataCallResultReported = 519,
26593    AtomIwlanPdnDisconnectedReasonReported = 520,
26594    AtomAirplaneModeSessionReported = 521,
26595    AtomVmCpuStatusReported = 522,
26596    AtomVmMemStatusReported = 523,
26597    AtomPackageInstallationSessionReported = 524,
26598    AtomDefaultNetworkRematchInfo = 525,
26599    AtomNetworkSelectionPerformance = 526,
26600    AtomNetworkNsdReported = 527,
26601    AtomBluetoothDisconnectionReasonReported = 529,
26602    AtomBluetoothLocalVersionsReported = 530,
26603    AtomBluetoothRemoteSupportedFeaturesReported = 531,
26604    AtomBluetoothLocalSupportedFeaturesReported = 532,
26605    AtomBluetoothGattAppInfo = 533,
26606    AtomBrightnessConfigurationUpdated = 534,
26607    AtomWearMediaOutputSwitcherLaunched = 538,
26608    AtomWearMediaOutputSwitcherFinished = 539,
26609    AtomWearMediaOutputSwitcherConnectionReported = 540,
26610    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
26611    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
26612    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
26613    AtomPackageManagerSnapshotReported = 544,
26614    AtomPackageManagerAppsFilterCacheBuildReported = 545,
26615    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
26616    AtomLauncherImpressionEvent = 547,
26617    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
26618    AtomWsWatchFaceEdited = 551,
26619    AtomWsWatchFaceFavoriteActionReported = 552,
26620    AtomWsWatchFaceSetActionReported = 553,
26621    AtomPackageUninstallationReported = 554,
26622    AtomGameModeChanged = 555,
26623    AtomGameModeConfigurationChanged = 556,
26624    AtomBedtimeModeStateChanged = 557,
26625    AtomNetworkSliceSessionEnded = 558,
26626    AtomNetworkSliceDailyDataUsageReported = 559,
26627    AtomNfcTagTypeOccurred = 560,
26628    AtomNfcAidConflictOccurred = 561,
26629    AtomNfcReaderConflictOccurred = 562,
26630    AtomWsTileListChanged = 563,
26631    AtomGetTypeAccessedWithoutPermission = 564,
26632    AtomMobileBundledAppInfoGathered = 566,
26633    AtomWsWatchFaceComplicationSetChanged = 567,
26634    AtomMediaDrmCreated = 568,
26635    AtomMediaDrmErrored = 569,
26636    AtomMediaDrmSessionOpened = 570,
26637    AtomMediaDrmSessionClosed = 571,
26638    AtomUserSelectedResolution = 572,
26639    AtomUnsafeIntentEventReported = 573,
26640    AtomPerformanceHintSessionReported = 574,
26641    AtomMediametricsMidiDeviceCloseReported = 576,
26642    AtomBiometricTouchReported = 577,
26643    AtomHotwordAudioEgressEventReported = 578,
26644    AtomLocationEnabledStateChanged = 580,
26645    AtomImeRequestFinished = 581,
26646    AtomUsbComplianceWarningsReported = 582,
26647    AtomAppSupportedLocalesChanged = 583,
26648    AtomMediaProviderVolumeRecoveryReported = 586,
26649    AtomBiometricPropertiesCollected = 587,
26650    AtomKernelWakeupAttributed = 588,
26651    AtomScreenStateChangedV2 = 589,
26652    AtomWsBackupActionReported = 590,
26653    AtomWsRestoreActionReported = 591,
26654    AtomDeviceLogAccessEventReported = 592,
26655    AtomMediaSessionUpdated = 594,
26656    AtomWearOobeStateChanged = 595,
26657    AtomWsNotificationUpdated = 596,
26658    AtomNetworkValidationFailureStatsDailyReported = 601,
26659    AtomWsComplicationTapped = 602,
26660    AtomWsNotificationBlocking = 780,
26661    AtomWsNotificationBridgemodeUpdated = 822,
26662    AtomWsNotificationDismissalActioned = 823,
26663    AtomWsNotificationActioned = 824,
26664    AtomWsNotificationLatency = 880,
26665    AtomWifiBytesTransfer = 10000,
26666    AtomWifiBytesTransferByFgBg = 10001,
26667    AtomMobileBytesTransfer = 10002,
26668    AtomMobileBytesTransferByFgBg = 10003,
26669    AtomBluetoothBytesTransfer = 10006,
26670    AtomKernelWakelock = 10004,
26671    AtomSubsystemSleepState = 10005,
26672    AtomCpuTimePerUid = 10009,
26673    AtomCpuTimePerUidFreq = 10010,
26674    AtomWifiActivityInfo = 10011,
26675    AtomModemActivityInfo = 10012,
26676    AtomBluetoothActivityInfo = 10007,
26677    AtomProcessMemoryState = 10013,
26678    AtomSystemElapsedRealtime = 10014,
26679    AtomSystemUptime = 10015,
26680    AtomCpuActiveTime = 10016,
26681    AtomCpuClusterTime = 10017,
26682    AtomDiskSpace = 10018,
26683    AtomRemainingBatteryCapacity = 10019,
26684    AtomFullBatteryCapacity = 10020,
26685    AtomTemperature = 10021,
26686    AtomBinderCalls = 10022,
26687    AtomBinderCallsExceptions = 10023,
26688    AtomLooperStats = 10024,
26689    AtomDiskStats = 10025,
26690    AtomDirectoryUsage = 10026,
26691    AtomAppSize = 10027,
26692    AtomCategorySize = 10028,
26693    AtomProcStats = 10029,
26694    AtomBatteryVoltage = 10030,
26695    AtomNumFingerprintsEnrolled = 10031,
26696    AtomDiskIo = 10032,
26697    AtomPowerProfile = 10033,
26698    AtomProcStatsPkgProc = 10034,
26699    AtomProcessCpuTime = 10035,
26700    AtomCpuTimePerThreadFreq = 10037,
26701    AtomOnDevicePowerMeasurement = 10038,
26702    AtomDeviceCalculatedPowerUse = 10039,
26703    AtomProcessMemoryHighWaterMark = 10042,
26704    AtomBatteryLevel = 10043,
26705    AtomBuildInformation = 10044,
26706    AtomBatteryCycleCount = 10045,
26707    AtomDebugElapsedClock = 10046,
26708    AtomDebugFailingElapsedClock = 10047,
26709    AtomNumFacesEnrolled = 10048,
26710    AtomRoleHolder = 10049,
26711    AtomDangerousPermissionState = 10050,
26712    AtomTrainInfo = 10051,
26713    AtomTimeZoneDataInfo = 10052,
26714    AtomExternalStorageInfo = 10053,
26715    AtomGpuStatsGlobalInfo = 10054,
26716    AtomGpuStatsAppInfo = 10055,
26717    AtomSystemIonHeapSize = 10056,
26718    AtomAppsOnExternalStorageInfo = 10057,
26719    AtomFaceSettings = 10058,
26720    AtomCoolingDevice = 10059,
26721    AtomAppOps = 10060,
26722    AtomProcessSystemIonHeapSize = 10061,
26723    AtomSurfaceflingerStatsGlobalInfo = 10062,
26724    AtomSurfaceflingerStatsLayerInfo = 10063,
26725    AtomProcessMemorySnapshot = 10064,
26726    AtomVmsClientStats = 10065,
26727    AtomNotificationRemoteViews = 10066,
26728    AtomDangerousPermissionStateSampled = 10067,
26729    AtomGraphicsStats = 10068,
26730    AtomRuntimeAppOpAccess = 10069,
26731    AtomIonHeapSize = 10070,
26732    AtomPackageNotificationPreferences = 10071,
26733    AtomPackageNotificationChannelPreferences = 10072,
26734    AtomPackageNotificationChannelGroupPreferences = 10073,
26735    AtomGnssStats = 10074,
26736    AtomAttributedAppOps = 10075,
26737    AtomVoiceCallSession = 10076,
26738    AtomVoiceCallRatUsage = 10077,
26739    AtomSimSlotState = 10078,
26740    AtomSupportedRadioAccessFamily = 10079,
26741    AtomSettingSnapshot = 10080,
26742    AtomBlobInfo = 10081,
26743    AtomDataUsageBytesTransfer = 10082,
26744    AtomBytesTransferByTagAndMetered = 10083,
26745    AtomDndModeRule = 10084,
26746    AtomGeneralExternalStorageAccessStats = 10085,
26747    AtomIncomingSms = 10086,
26748    AtomOutgoingSms = 10087,
26749    AtomCarrierIdTableVersion = 10088,
26750    AtomDataCallSession = 10089,
26751    AtomCellularServiceState = 10090,
26752    AtomCellularDataServiceSwitch = 10091,
26753    AtomSystemMemory = 10092,
26754    AtomImsRegistrationTermination = 10093,
26755    AtomImsRegistrationStats = 10094,
26756    AtomCpuTimePerClusterFreq = 10095,
26757    AtomCpuCyclesPerUidCluster = 10096,
26758    AtomDeviceRotatedData = 10097,
26759    AtomCpuCyclesPerThreadGroupCluster = 10098,
26760    AtomMediaDrmActivityInfo = 10099,
26761    AtomOemManagedBytesTransfer = 10100,
26762    AtomGnssPowerStats = 10101,
26763    AtomTimeZoneDetectorState = 10102,
26764    AtomKeystore2StorageStats = 10103,
26765    AtomRkpPoolStats = 10104,
26766    AtomProcessDmabufMemory = 10105,
26767    AtomPendingAlarmInfo = 10106,
26768    AtomUserLevelHibernatedApps = 10107,
26769    AtomLauncherLayoutSnapshot = 10108,
26770    AtomGlobalHibernatedApps = 10109,
26771    AtomInputEventLatencySketch = 10110,
26772    AtomBatteryUsageStatsBeforeReset = 10111,
26773    AtomBatteryUsageStatsSinceReset = 10112,
26774    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
26775    AtomInstalledIncrementalPackage = 10114,
26776    AtomTelephonyNetworkRequests = 10115,
26777    AtomAppSearchStorageInfo = 10116,
26778    AtomVmstat = 10117,
26779    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
26780    AtomKeystore2KeyCreationWithAuthInfo = 10119,
26781    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
26782    AtomKeystore2AtomWithOverflow = 10121,
26783    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
26784    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
26785    AtomRkpErrorStats = 10124,
26786    AtomKeystore2CrashStats = 10125,
26787    AtomVendorApexInfo = 10126,
26788    AtomAccessibilityShortcutStats = 10127,
26789    AtomAccessibilityFloatingMenuStats = 10128,
26790    AtomDataUsageBytesTransferV2 = 10129,
26791    AtomMediaCapabilities = 10130,
26792    AtomCarWatchdogSystemIoUsageSummary = 10131,
26793    AtomCarWatchdogUidIoUsageSummary = 10132,
26794    AtomImsRegistrationFeatureTagStats = 10133,
26795    AtomRcsClientProvisioningStats = 10134,
26796    AtomRcsAcsProvisioningStats = 10135,
26797    AtomSipDelegateStats = 10136,
26798    AtomSipTransportFeatureTagStats = 10137,
26799    AtomSipMessageResponse = 10138,
26800    AtomSipTransportSession = 10139,
26801    AtomImsDedicatedBearerListenerEvent = 10140,
26802    AtomImsDedicatedBearerEvent = 10141,
26803    AtomImsRegistrationServiceDescStats = 10142,
26804    AtomUceEventStats = 10143,
26805    AtomPresenceNotifyEvent = 10144,
26806    AtomGbaEvent = 10145,
26807    AtomPerSimStatus = 10146,
26808    AtomGpuWorkPerUid = 10147,
26809    AtomPersistentUriPermissionsAmountPerPackage = 10148,
26810    AtomSignedPartitionInfo = 10149,
26811    AtomPinnedFileSizesPerPackage = 10150,
26812    AtomPendingIntentsPerPackage = 10151,
26813    AtomUserInfo = 10152,
26814    AtomTelephonyNetworkRequestsV2 = 10153,
26815    AtomDeviceTelephonyProperties = 10154,
26816    AtomRemoteKeyProvisioningErrorCounts = 10155,
26817    AtomSafetyState = 10156,
26818    AtomIncomingMms = 10157,
26819    AtomOutgoingMms = 10158,
26820    AtomMultiUserInfo = 10160,
26821    AtomNetworkBpfMapInfo = 10161,
26822    AtomOutgoingShortCodeSms = 10162,
26823    AtomConnectivityStateSample = 10163,
26824    AtomNetworkSelectionRematchReasonsInfo = 10164,
26825    AtomGameModeInfo = 10165,
26826    AtomGameModeConfiguration = 10166,
26827    AtomGameModeListener = 10167,
26828    AtomNetworkSliceRequestCount = 10168,
26829    AtomWsTileSnapshot = 10169,
26830    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
26831    AtomProcessState = 10171,
26832    AtomProcessAssociation = 10172,
26833    AtomAdpfSystemComponentInfo = 10173,
26834    AtomNotificationMemoryUse = 10174,
26835    AtomHdrCapabilities = 10175,
26836    AtomWsFavouriteWatchFaceListSnapshot = 10176,
26837    AtomAccessibilityCheckResultReported = 910,
26838    AtomAdaptiveAuthUnlockAfterLockReported = 820,
26839    AtomThermalStatusCalled = 772,
26840    AtomThermalHeadroomCalled = 773,
26841    AtomThermalHeadroomThresholdsCalled = 774,
26842    AtomAdpfHintSessionTidCleanup = 839,
26843    AtomThermalHeadroomThresholds = 10201,
26844    AtomAdpfSessionSnapshot = 10218,
26845    AtomJsscriptengineLatencyReported = 483,
26846    AtomAdServicesApiCalled = 435,
26847    AtomAdServicesMesurementReportsUploaded = 436,
26848    AtomMobileDataDownloadFileGroupStatusReported = 490,
26849    AtomMobileDataDownloadDownloadResultReported = 502,
26850    AtomAdServicesSettingsUsageReported = 493,
26851    AtomBackgroundFetchProcessReported = 496,
26852    AtomUpdateCustomAudienceProcessReported = 497,
26853    AtomRunAdBiddingProcessReported = 498,
26854    AtomRunAdScoringProcessReported = 499,
26855    AtomRunAdSelectionProcessReported = 500,
26856    AtomRunAdBiddingPerCaProcessReported = 501,
26857    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
26858    AtomAdServicesMeasurementRegistrations = 512,
26859    AtomAdServicesGetTopicsReported = 535,
26860    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
26861    AtomAdServicesEpochComputationClassifierReported = 537,
26862    AtomAdServicesBackCompatGetTopicsReported = 598,
26863    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
26864    AtomAdServicesMeasurementDebugKeys = 640,
26865    AtomAdServicesErrorReported = 662,
26866    AtomAdServicesBackgroundJobsExecutionReported = 663,
26867    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
26868    AtomAdServicesMeasurementAttribution = 674,
26869    AtomAdServicesMeasurementJobs = 675,
26870    AtomAdServicesMeasurementWipeout = 676,
26871    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
26872    AtomAdServicesEnrollmentDataStored = 697,
26873    AtomAdServicesEnrollmentFileDownloaded = 698,
26874    AtomAdServicesEnrollmentMatched = 699,
26875    AtomAdServicesConsentMigrated = 702,
26876    AtomAdServicesEnrollmentFailed = 714,
26877    AtomAdServicesMeasurementClickVerification = 756,
26878    AtomAdServicesEncryptionKeyFetched = 765,
26879    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
26880    AtomDestinationRegisteredBeacons = 767,
26881    AtomReportInteractionApiCalled = 768,
26882    AtomInteractionReportingTableCleared = 769,
26883    AtomAppManifestConfigHelperCalled = 788,
26884    AtomAdFilteringProcessJoinCaReported = 793,
26885    AtomAdFilteringProcessAdSelectionReported = 794,
26886    AtomAdCounterHistogramUpdaterReported = 795,
26887    AtomSignatureVerification = 807,
26888    AtomKAnonImmediateSignJoinStatusReported = 808,
26889    AtomKAnonBackgroundJobStatusReported = 809,
26890    AtomKAnonInitializeStatusReported = 810,
26891    AtomKAnonSignStatusReported = 811,
26892    AtomKAnonJoinStatusReported = 812,
26893    AtomKAnonKeyAttestationStatusReported = 813,
26894    AtomGetAdSelectionDataApiCalled = 814,
26895    AtomGetAdSelectionDataBuyerInputGenerated = 815,
26896    AtomBackgroundJobSchedulingReported = 834,
26897    AtomTopicsEncryptionEpochComputationReported = 840,
26898    AtomTopicsEncryptionGetTopicsReported = 841,
26899    AtomAdservicesShellCommandCalled = 842,
26900    AtomUpdateSignalsApiCalled = 843,
26901    AtomEncodingJobRun = 844,
26902    AtomEncodingJsFetch = 845,
26903    AtomEncodingJsExecution = 846,
26904    AtomPersistAdSelectionResultCalled = 847,
26905    AtomServerAuctionKeyFetchCalled = 848,
26906    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
26907    AtomAdServicesMeasurementProcessOdpRegistration = 864,
26908    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
26909    AtomSelectAdsFromOutcomesApiCalled = 876,
26910    AtomReportImpressionApiCalled = 877,
26911    AtomAdServicesEnrollmentTransactionStats = 885,
26912    AtomAdServicesCobaltLoggerEventReported = 902,
26913    AtomAdServicesCobaltPeriodicJobEventReported = 903,
26914    AtomUpdateSignalsProcessReported = 905,
26915    AtomTopicsScheduleEpochJobSettingReported = 930,
26916    AtomAiWallpapersButtonPressed = 706,
26917    AtomAiWallpapersTemplateSelected = 707,
26918    AtomAiWallpapersTermSelected = 708,
26919    AtomAiWallpapersWallpaperSet = 709,
26920    AtomAiWallpapersSessionSummary = 710,
26921    AtomApexInstallationRequested = 732,
26922    AtomApexInstallationStaged = 733,
26923    AtomApexInstallationEnded = 734,
26924    AtomAppSearchSetSchemaStatsReported = 385,
26925    AtomAppSearchSchemaMigrationStatsReported = 579,
26926    AtomAppSearchUsageSearchIntentStatsReported = 825,
26927    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
26928    AtomAppSearchAppsIndexerStatsReported = 909,
26929    AtomArtDatumReported = 332,
26930    AtomArtDeviceDatumReported = 550,
26931    AtomArtDatumDeltaReported = 565,
26932    AtomArtDex2oatReported = 929,
26933    AtomArtDeviceStatus = 10205,
26934    AtomBackgroundDexoptJobEnded = 467,
26935    AtomPrerebootDexoptJobEnded = 883,
26936    AtomOdrefreshReported = 366,
26937    AtomOdsignReported = 548,
26938    AtomAutofillUiEventReported = 603,
26939    AtomAutofillFillRequestReported = 604,
26940    AtomAutofillFillResponseReported = 605,
26941    AtomAutofillSaveEventReported = 606,
26942    AtomAutofillSessionCommitted = 607,
26943    AtomAutofillFieldClassificationEventReported = 659,
26944    AtomCarRecentsEventReported = 770,
26945    AtomCarCalmModeEventReported = 797,
26946    AtomCarWakeupFromSuspendReported = 852,
26947    AtomPluginInitialized = 655,
26948    AtomBluetoothHashedDeviceNameReported = 613,
26949    AtomBluetoothL2capCocClientConnection = 614,
26950    AtomBluetoothL2capCocServerConnection = 615,
26951    AtomBluetoothLeSessionConnected = 656,
26952    AtomRestrictedBluetoothDeviceNameReported = 666,
26953    AtomBluetoothProfileConnectionAttempted = 696,
26954    AtomBluetoothContentProfileErrorReported = 781,
26955    AtomBluetoothRfcommConnectionAttempted = 782,
26956    AtomRemoteDeviceInformationWithMetricId = 862,
26957    AtomLeAppScanStateChanged = 870,
26958    AtomLeRadioScanStopped = 871,
26959    AtomLeScanResultReceived = 872,
26960    AtomLeScanAbused = 873,
26961    AtomLeAdvStateChanged = 874,
26962    AtomLeAdvErrorReported = 875,
26963    AtomA2dpSessionReported = 904,
26964    AtomBluetoothCrossLayerEventReported = 916,
26965    AtomBroadcastAudioSessionReported = 927,
26966    AtomBroadcastAudioSyncReported = 928,
26967    AtomBluetoothRfcommConnectionReportedAtClose = 982,
26968    AtomBluetoothLeConnection = 988,
26969    AtomBroadcastSent = 922,
26970    AtomCameraFeatureCombinationQueryEvent = 900,
26971    AtomCertificateTransparencyLogListStateChanged = 934,
26972    AtomCertificateTransparencyLogListUpdateFailed = 972,
26973    AtomDailyKeepaliveInfoReported = 650,
26974    AtomNetworkRequestStateChanged = 779,
26975    AtomTetheringActiveSessionsReported = 925,
26976    AtomNetworkStatsRecorderFileOperated = 783,
26977    AtomCoreNetworkingTerribleErrorOccurred = 979,
26978    AtomApfSessionInfoReported = 777,
26979    AtomIpClientRaInfoReported = 778,
26980    AtomVpnConnectionStateChanged = 850,
26981    AtomVpnConnectionReported = 851,
26982    AtomCpuPolicy = 10199,
26983    AtomCredentialManagerApiCalled = 585,
26984    AtomCredentialManagerInitPhaseReported = 651,
26985    AtomCredentialManagerCandidatePhaseReported = 652,
26986    AtomCredentialManagerFinalPhaseReported = 653,
26987    AtomCredentialManagerTotalReported = 667,
26988    AtomCredentialManagerFinalnouidReported = 668,
26989    AtomCredentialManagerGetReported = 669,
26990    AtomCredentialManagerAuthClickReported = 670,
26991    AtomCredentialManagerApiv2Called = 671,
26992    AtomCronetEngineCreated = 703,
26993    AtomCronetTrafficReported = 704,
26994    AtomCronetEngineBuilderInitialized = 762,
26995    AtomCronetHttpFlagsInitialized = 763,
26996    AtomCronetInitialized = 764,
26997    AtomDesktopModeUiChanged = 818,
26998    AtomDesktopModeSessionTaskUpdate = 819,
26999    AtomDesktopModeTaskSizeUpdated = 935,
27000    AtomDeviceLockCheckInRequestReported = 726,
27001    AtomDeviceLockProvisioningCompleteReported = 727,
27002    AtomDeviceLockKioskAppRequestReported = 728,
27003    AtomDeviceLockCheckInRetryReported = 789,
27004    AtomDeviceLockProvisionFailureReported = 790,
27005    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
27006    AtomDevicePolicyManagementMode = 10216,
27007    AtomDevicePolicyState = 10217,
27008    AtomDisplayModeDirectorVoteChanged = 792,
27009    AtomExternalDisplayStateChanged = 806,
27010    AtomDndStateChanged = 657,
27011    AtomDreamSettingChanged = 705,
27012    AtomDreamSettingSnapshot = 10192,
27013    AtomExpressEventReported = 528,
27014    AtomExpressHistogramSampleReported = 593,
27015    AtomExpressUidEventReported = 644,
27016    AtomExpressUidHistogramSampleReported = 658,
27017    AtomFederatedComputeApiCalled = 712,
27018    AtomFederatedComputeTrainingEventReported = 771,
27019    AtomExampleIteratorNextLatencyReported = 838,
27020    AtomFullScreenIntentLaunched = 631,
27021    AtomBalAllowed = 632,
27022    AtomInTaskActivityStarted = 685,
27023    AtomDeviceOrientationChanged = 906,
27024    AtomCachedAppsHighWatermark = 10189,
27025    AtomStylusPredictionMetricsReported = 718,
27026    AtomUserRiskEventReported = 725,
27027    AtomMediaProjectionStateChanged = 729,
27028    AtomMediaProjectionTargetChanged = 730,
27029    AtomExcessiveBinderProxyCountReported = 853,
27030    AtomProxyBytesTransferByFgBg = 10200,
27031    AtomMobileBytesTransferByProcState = 10204,
27032    AtomBiometricFrrNotification = 817,
27033    AtomSensitiveContentMediaProjectionSession = 830,
27034    AtomSensitiveNotificationAppProtectionSession = 831,
27035    AtomSensitiveNotificationAppProtectionApplied = 832,
27036    AtomSensitiveNotificationRedaction = 833,
27037    AtomSensitiveContentAppProtection = 835,
27038    AtomAppRestrictionStateChanged = 866,
27039    AtomBatteryUsageStatsPerUid = 10209,
27040    AtomPostgcMemorySnapshot = 924,
27041    AtomPowerSaveTempAllowlistChanged = 926,
27042    AtomAppOpAccessTracked = 931,
27043    AtomContentOrFileUriEventReported = 933,
27044    AtomApplicationGrammaticalInflectionChanged = 584,
27045    AtomSystemGrammaticalInflectionChanged = 816,
27046    AtomBatteryHealth = 10220,
27047    AtomHdmiEarcStatusReported = 701,
27048    AtomHdmiSoundbarModeStatusReported = 724,
27049    AtomHealthConnectApiCalled = 616,
27050    AtomHealthConnectUsageStats = 617,
27051    AtomHealthConnectStorageStats = 618,
27052    AtomHealthConnectApiInvoked = 643,
27053    AtomExerciseRouteApiCalled = 654,
27054    AtomHealthConnectExportInvoked = 907,
27055    AtomHealthConnectImportInvoked = 918,
27056    AtomHealthConnectExportImportStatsReported = 919,
27057    AtomHealthConnectUiImpression = 623,
27058    AtomHealthConnectUiInteraction = 624,
27059    AtomHealthConnectAppOpenedReported = 625,
27060    AtomHotwordEgressSizeAtomReported = 761,
27061    AtomIkeSessionTerminated = 678,
27062    AtomIkeLivenessCheckSessionValidated = 760,
27063    AtomNegotiatedSecurityAssociation = 821,
27064    AtomKeyboardConfigured = 682,
27065    AtomKeyboardSystemsEventReported = 683,
27066    AtomInputdeviceUsageReported = 686,
27067    AtomInputEventLatencyReported = 932,
27068    AtomTouchpadUsage = 10191,
27069    AtomKernelOomKillOccurred = 754,
27070    AtomEmergencyStateChanged = 633,
27071    AtomChreSignificantMotionStateChanged = 868,
27072    AtomPopulationDensityProviderLoadingReported = 1002,
27073    AtomDensityBasedCoarseLocationsUsageReported = 1003,
27074    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
27075    AtomMediaCodecReclaimRequestCompleted = 600,
27076    AtomMediaCodecStarted = 641,
27077    AtomMediaCodecStopped = 642,
27078    AtomMediaCodecRendered = 684,
27079    AtomMediaEditingEndedReported = 798,
27080    AtomMteState = 10181,
27081    AtomMicroxrDeviceBootCompleteReported = 901,
27082    AtomNfcObserveModeStateChanged = 855,
27083    AtomNfcFieldChanged = 856,
27084    AtomNfcPollingLoopNotificationReported = 857,
27085    AtomNfcProprietaryCapabilitiesReported = 858,
27086    AtomOndevicepersonalizationApiCalled = 711,
27087    AtomComponentStateChangedReported = 863,
27088    AtomPdfLoadReported = 859,
27089    AtomPdfApiUsageReported = 860,
27090    AtomPdfSearchReported = 861,
27091    AtomPressureStallInformation = 10229,
27092    AtomPermissionRationaleDialogViewed = 645,
27093    AtomPermissionRationaleDialogActionReported = 646,
27094    AtomAppDataSharingUpdatesNotificationInteraction = 647,
27095    AtomAppDataSharingUpdatesFragmentViewed = 648,
27096    AtomAppDataSharingUpdatesFragmentActionReported = 649,
27097    AtomEnhancedConfirmationDialogResultReported = 827,
27098    AtomEnhancedConfirmationRestrictionCleared = 828,
27099    AtomPhotopickerSessionInfoReported = 886,
27100    AtomPhotopickerApiInfoReported = 887,
27101    AtomPhotopickerUiEventLogged = 888,
27102    AtomPhotopickerMediaItemStatusReported = 889,
27103    AtomPhotopickerPreviewInfoLogged = 890,
27104    AtomPhotopickerMenuInteractionLogged = 891,
27105    AtomPhotopickerBannerInteractionLogged = 892,
27106    AtomPhotopickerMediaLibraryInfoLogged = 893,
27107    AtomPhotopickerPageInfoLogged = 894,
27108    AtomPhotopickerMediaGridSyncInfoReported = 895,
27109    AtomPhotopickerAlbumSyncInfoReported = 896,
27110    AtomPhotopickerSearchInfoReported = 897,
27111    AtomSearchDataExtractionDetailsReported = 898,
27112    AtomEmbeddedPhotopickerInfoReported = 899,
27113    AtomAtom9999 = 9999,
27114    AtomAtom99999 = 99999,
27115    AtomScreenOffReported = 776,
27116    AtomScreenTimeoutOverrideReported = 836,
27117    AtomScreenInteractiveSessionReported = 837,
27118    AtomScreenDimReported = 867,
27119    AtomMediaProviderDatabaseRollbackReported = 784,
27120    AtomBackupSetupStatusReported = 785,
27121    AtomRangingSessionConfigured = 993,
27122    AtomRangingSessionStarted = 994,
27123    AtomRangingSessionClosed = 995,
27124    AtomRangingTechnologyStarted = 996,
27125    AtomRangingTechnologyStopped = 997,
27126    AtomRkpdPoolStats = 664,
27127    AtomRkpdClientOperation = 665,
27128    AtomSandboxApiCalled = 488,
27129    AtomSandboxActivityEventOccurred = 735,
27130    AtomSdkSandboxRestrictedAccessInSession = 796,
27131    AtomSandboxSdkStorage = 10159,
27132    AtomSelinuxAuditLog = 799,
27133    AtomSettingsSpaReported = 622,
27134    AtomTestExtensionAtomReported = 660,
27135    AtomTestRestrictedAtomReported = 672,
27136    AtomStatsSocketLossReported = 752,
27137    AtomLockscreenShortcutSelected = 611,
27138    AtomLockscreenShortcutTriggered = 612,
27139    AtomLauncherImpressionEventV2 = 716,
27140    AtomDisplaySwitchLatencyTracked = 753,
27141    AtomNotificationListenerService = 829,
27142    AtomNavHandleTouchPoints = 869,
27143    AtomCommunalHubWidgetEventReported = 908,
27144    AtomCommunalHubSnapshot = 10226,
27145    AtomEmergencyNumberDialed = 637,
27146    AtomCallStats = 10221,
27147    AtomCallAudioRouteStats = 10222,
27148    AtomTelecomApiStats = 10223,
27149    AtomTelecomErrorStats = 10224,
27150    AtomCellularRadioPowerStateChanged = 713,
27151    AtomEmergencyNumbersInfo = 10180,
27152    AtomDataNetworkValidation = 10207,
27153    AtomDataRatStateChanged = 854,
27154    AtomConnectedChannelChanged = 882,
27155    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
27156    AtomQualifiedRatListChanged = 634,
27157    AtomQnsImsCallDropStats = 635,
27158    AtomQnsFallbackRestrictionChanged = 636,
27159    AtomQnsRatPreferenceMismatchInfo = 10177,
27160    AtomQnsHandoverTimeMillis = 10178,
27161    AtomQnsHandoverPingpong = 10179,
27162    AtomSatelliteController = 10182,
27163    AtomSatelliteSession = 10183,
27164    AtomSatelliteIncomingDatagram = 10184,
27165    AtomSatelliteOutgoingDatagram = 10185,
27166    AtomSatelliteProvision = 10186,
27167    AtomSatelliteSosMessageRecommender = 10187,
27168    AtomCarrierRoamingSatelliteSession = 10211,
27169    AtomCarrierRoamingSatelliteControllerStats = 10212,
27170    AtomControllerStatsPerPackage = 10213,
27171    AtomSatelliteEntitlement = 10214,
27172    AtomSatelliteConfigUpdater = 10215,
27173    AtomSatelliteAccessController = 10219,
27174    AtomCellularIdentifierDisclosed = 800,
27175    AtomThreadnetworkTelemetryDataReported = 738,
27176    AtomThreadnetworkTopoEntryRepeated = 739,
27177    AtomThreadnetworkDeviceInfoReported = 740,
27178    AtomBootIntegrityInfoReported = 775,
27179    AtomTvLowPowerStandbyPolicy = 679,
27180    AtomExternalTvInputEvent = 717,
27181    AtomTestUprobestatsAtomReported = 915,
27182    AtomUwbActivityInfo = 10188,
27183    AtomMediatorUpdated = 721,
27184    AtomSysproxyBluetoothBytesTransfer = 10196,
27185    AtomSysproxyConnectionUpdated = 786,
27186    AtomWearCompanionConnectionState = 921,
27187    AtomMediaActionReported = 608,
27188    AtomMediaControlsLaunched = 609,
27189    AtomMediaSessionStateChanged = 677,
27190    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
27191    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
27192    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
27193    AtomWearModeStateChanged = 715,
27194    AtomRendererInitialized = 736,
27195    AtomSchemaVersionReceived = 737,
27196    AtomLayoutInspected = 741,
27197    AtomLayoutExpressionInspected = 742,
27198    AtomLayoutAnimationsInspected = 743,
27199    AtomMaterialComponentsInspected = 744,
27200    AtomTileRequested = 745,
27201    AtomStateResponseReceived = 746,
27202    AtomTileResponseReceived = 747,
27203    AtomInflationFinished = 748,
27204    AtomInflationFailed = 749,
27205    AtomIgnoredInflationFailuresReported = 750,
27206    AtomDrawableRendered = 751,
27207    AtomWearTimeSyncRequested = 911,
27208    AtomWearTimeUpdateStarted = 912,
27209    AtomWearTimeSyncAttemptCompleted = 913,
27210    AtomWearTimeChanged = 914,
27211    AtomWearAdaptiveSuspendStatsReported = 619,
27212    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
27213    AtomWearPowerAnomalyServiceEventStatsReported = 621,
27214    AtomWsWearTimeSession = 610,
27215    AtomWsIncomingCallActionReported = 626,
27216    AtomWsCallDisconnectionReported = 627,
27217    AtomWsCallDurationReported = 628,
27218    AtomWsCallUserExperienceLatencyReported = 629,
27219    AtomWsCallInteractionReported = 630,
27220    AtomWsOnBodyStateChanged = 787,
27221    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
27222    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
27223    AtomWsComplicationsImpactedNotificationEventReported = 804,
27224    AtomWsRemoteEventUsageReported = 920,
27225    AtomWsBugreportRequested = 936,
27226    AtomWsBugreportTriggered = 937,
27227    AtomWsBugreportFinished = 938,
27228    AtomWsBugreportResultReceived = 939,
27229    AtomWsStandaloneModeSnapshot = 10197,
27230    AtomWsFavoriteWatchFaceSnapshot = 10206,
27231    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
27232    AtomWsWatchFaceCustomizationSnapshot = 10227,
27233    AtomWearPowerMenuOpened = 731,
27234    AtomWearAssistantOpened = 755,
27235    AtomFirstOverlayStateChanged = 917,
27236    AtomWifiAwareNdpReported = 638,
27237    AtomWifiAwareAttachReported = 639,
27238    AtomWifiSelfRecoveryTriggered = 661,
27239    AtomSoftApStarted = 680,
27240    AtomSoftApStopped = 681,
27241    AtomWifiLockReleased = 687,
27242    AtomWifiLockDeactivated = 688,
27243    AtomWifiConfigSaved = 689,
27244    AtomWifiAwareResourceUsingChanged = 690,
27245    AtomWifiAwareHalApiCalled = 691,
27246    AtomWifiLocalOnlyRequestReceived = 692,
27247    AtomWifiLocalOnlyRequestScanTriggered = 693,
27248    AtomWifiThreadTaskExecuted = 694,
27249    AtomWifiStateChanged = 700,
27250    AtomPnoScanStarted = 719,
27251    AtomPnoScanStopped = 720,
27252    AtomWifiIsUnusableReported = 722,
27253    AtomWifiApCapabilitiesReported = 723,
27254    AtomSoftApStateChanged = 805,
27255    AtomScorerPredictionResultReported = 884,
27256    AtomWifiAwareCapabilities = 10190,
27257    AtomWifiModuleInfo = 10193,
27258    AtomWifiSettingInfo = 10194,
27259    AtomWifiComplexSettingInfo = 10195,
27260    AtomWifiConfiguredNetworkInfo = 10198,
27261}
27262impl AtomId {
27263    /// String value of the enum field names used in the ProtoBuf definition.
27264    ///
27265    /// The values are not transformed in any way and thus are considered stable
27266    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27267    pub fn as_str_name(&self) -> &'static str {
27268        match self {
27269            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
27270            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
27271            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
27272            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
27273            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
27274            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
27275            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
27276            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
27277            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
27278            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
27279            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
27280            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
27281            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
27282            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
27283            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
27284            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
27285            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
27286            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
27287            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
27288            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
27289            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
27290            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
27291            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
27292            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
27293            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
27294            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
27295            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
27296            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
27297            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
27298            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
27299            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
27300            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
27301            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
27302            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
27303            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
27304            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
27305            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
27306            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
27307            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
27308            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
27309            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
27310            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
27311            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
27312            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
27313            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
27314            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
27315            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
27316            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
27317            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
27318            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
27319            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
27320            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
27321            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
27322            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
27323            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
27324            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
27325            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
27326            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
27327            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
27328            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
27329            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
27330            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
27331            AtomId::AtomAppDied => "ATOM_APP_DIED",
27332            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
27333            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
27334            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
27335            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
27336            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
27337            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
27338            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
27339            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
27340            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
27341            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
27342            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
27343            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
27344            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
27345            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
27346            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
27347            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
27348            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
27349            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
27350            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
27351            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
27352            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
27353            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
27354            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
27355            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
27356            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
27357            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
27358            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
27359            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
27360            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
27361            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
27362            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
27363            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
27364            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
27365            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
27366            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
27367            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
27368            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
27369            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
27370            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
27371            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
27372            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
27373            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
27374            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
27375            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
27376            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
27377            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
27378            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
27379            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
27380            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
27381            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
27382            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
27383            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
27384            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
27385            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
27386            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
27387            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
27388            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
27389            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
27390            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
27391            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
27392            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
27393            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
27394            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
27395            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
27396            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
27397            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
27398            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
27399            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
27400            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
27401            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
27402            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
27403            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
27404            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
27405            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
27406            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
27407            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
27408            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
27409            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
27410            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
27411            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
27412            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
27413            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
27414            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
27415            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
27416            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
27417            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
27418            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
27419            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
27420            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
27421            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
27422            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
27423            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
27424            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
27425            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
27426            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
27427            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
27428            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
27429            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
27430            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
27431            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
27432            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
27433            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
27434            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
27435            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
27436            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
27437            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
27438            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
27439            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
27440            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
27441            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
27442            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
27443            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
27444            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
27445            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
27446            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
27447            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
27448            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
27449            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
27450            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
27451            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
27452            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
27453            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
27454            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
27455            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
27456            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
27457            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
27458            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
27459            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
27460            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
27461            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
27462            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
27463            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
27464            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
27465            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
27466            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
27467            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
27468            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
27469            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
27470            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
27471            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
27472            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
27473            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
27474            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
27475            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
27476            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
27477            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
27478            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
27479            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
27480            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
27481            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
27482            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
27483            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
27484            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
27485            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
27486            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
27487            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
27488            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
27489            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
27490            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
27491            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
27492            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
27493            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
27494            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
27495            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
27496            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
27497            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
27498            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
27499            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
27500            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
27501            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
27502            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
27503            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
27504            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
27505            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
27506            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
27507            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
27508            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
27509            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
27510            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
27511            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
27512            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
27513            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
27514            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
27515            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
27516            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
27517            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
27518            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
27519            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
27520            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
27521            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
27522            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
27523            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
27524            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
27525            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
27526            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
27527            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
27528            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
27529            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
27530            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
27531            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
27532            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
27533            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
27534            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
27535            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
27536            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
27537            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
27538            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
27539            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
27540            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
27541            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
27542            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
27543            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
27544            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
27545            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
27546            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
27547            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
27548            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
27549            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
27550            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
27551            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
27552            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
27553            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
27554            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
27555            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
27556            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
27557            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
27558            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
27559            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
27560            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
27561            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
27562            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
27563            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
27564            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
27565            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
27566            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
27567            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
27568            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
27569            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
27570            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
27571            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
27572            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
27573            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
27574            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
27575            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
27576            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
27577            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
27578            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
27579            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
27580            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
27581            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
27582            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
27583            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
27584            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
27585            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
27586            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
27587            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
27588            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
27589            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
27590            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
27591            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
27592            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
27593            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
27594            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
27595            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
27596            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
27597            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
27598            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
27599            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
27600            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
27601            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
27602            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
27603            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
27604            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
27605            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
27606            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
27607            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
27608            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
27609            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
27610            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
27611            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
27612            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
27613            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
27614            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
27615            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
27616            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
27617            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
27618            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
27619            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
27620            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
27621            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
27622            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
27623            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
27624            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
27625            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
27626            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
27627            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
27628            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
27629            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
27630            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
27631            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
27632            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
27633            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
27634            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
27635            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
27636            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
27637            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
27638            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
27639            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
27640            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
27641            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
27642            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
27643            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
27644            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
27645            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
27646            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
27647            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
27648            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
27649            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
27650            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
27651            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
27652            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
27653            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
27654            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
27655            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
27656            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
27657            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
27658            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
27659            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
27660            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
27661            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
27662            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
27663            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
27664            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
27665            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
27666            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
27667            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
27668            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
27669            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
27670            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
27671            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
27672            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
27673            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
27674            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
27675            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
27676            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
27677            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
27678            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
27679            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
27680            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
27681            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
27682            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
27683            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
27684            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
27685            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
27686            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
27687            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
27688            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
27689            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
27690            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
27691            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
27692            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
27693            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
27694            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
27695            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
27696            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
27697            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
27698            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
27699            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
27700            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
27701            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
27702            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
27703            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
27704            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
27705            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
27706            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
27707            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
27708            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
27709            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
27710            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
27711            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
27712            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
27713            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
27714            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
27715            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
27716            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
27717            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
27718            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
27719            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
27720            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
27721            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
27722            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
27723            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
27724            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
27725            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
27726            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
27727            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
27728            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
27729            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
27730            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
27731            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
27732            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
27733            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
27734            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
27735            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
27736            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
27737            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
27738            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
27739            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
27740            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
27741            AtomId::AtomVmExited => "ATOM_VM_EXITED",
27742            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
27743            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
27744            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
27745            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
27746            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
27747            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
27748            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
27749            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
27750            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
27751            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
27752            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
27753            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
27754            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
27755            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
27756            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
27757            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
27758            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
27759            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
27760            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
27761            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
27762            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
27763            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
27764            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
27765            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
27766            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
27767            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
27768            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
27769            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
27770            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
27771            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
27772            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
27773            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
27774            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
27775            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
27776            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
27777            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
27778            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
27779            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
27780            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
27781            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
27782            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
27783            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
27784            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
27785            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
27786            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
27787            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
27788            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
27789            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
27790            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
27791            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
27792            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
27793            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
27794            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
27795            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
27796            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
27797            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
27798            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
27799            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
27800            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
27801            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
27802            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
27803            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
27804            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
27805            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
27806            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
27807            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
27808            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
27809            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
27810            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
27811            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
27812            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
27813            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
27814            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
27815            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
27816            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
27817            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
27818            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
27819            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
27820            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
27821            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
27822            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
27823            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
27824            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
27825            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
27826            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
27827            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
27828            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
27829            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
27830            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
27831            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
27832            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
27833            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
27834            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
27835            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
27836            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
27837            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
27838            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
27839            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
27840            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
27841            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
27842            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
27843            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
27844            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
27845            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
27846            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
27847            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
27848            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
27849            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
27850            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
27851            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
27852            AtomId::AtomAppSize => "ATOM_APP_SIZE",
27853            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
27854            AtomId::AtomProcStats => "ATOM_PROC_STATS",
27855            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
27856            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
27857            AtomId::AtomDiskIo => "ATOM_DISK_IO",
27858            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
27859            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
27860            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
27861            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
27862            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
27863            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
27864            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
27865            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
27866            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
27867            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
27868            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
27869            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
27870            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
27871            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
27872            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
27873            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
27874            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
27875            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
27876            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
27877            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
27878            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
27879            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
27880            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
27881            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
27882            AtomId::AtomAppOps => "ATOM_APP_OPS",
27883            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
27884            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
27885            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
27886            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
27887            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
27888            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
27889            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
27890            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
27891            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
27892            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
27893            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
27894            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
27895            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
27896            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
27897            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
27898            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
27899            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
27900            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
27901            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
27902            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
27903            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
27904            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
27905            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
27906            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
27907            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
27908            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
27909            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
27910            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
27911            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
27912            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
27913            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
27914            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
27915            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
27916            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
27917            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
27918            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
27919            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
27920            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
27921            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
27922            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
27923            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
27924            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
27925            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
27926            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
27927            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
27928            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
27929            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
27930            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
27931            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
27932            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
27933            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
27934            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
27935            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
27936            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
27937            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
27938            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
27939            AtomId::AtomVmstat => "ATOM_VMSTAT",
27940            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
27941            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
27942            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
27943            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
27944            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
27945            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
27946            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
27947            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
27948            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
27949            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
27950            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
27951            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
27952            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
27953            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
27954            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
27955            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
27956            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
27957            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
27958            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
27959            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
27960            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
27961            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
27962            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
27963            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
27964            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
27965            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
27966            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
27967            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
27968            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
27969            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
27970            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
27971            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
27972            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
27973            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
27974            AtomId::AtomUserInfo => "ATOM_USER_INFO",
27975            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
27976            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
27977            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
27978            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
27979            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
27980            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
27981            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
27982            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
27983            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
27984            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
27985            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
27986            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
27987            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
27988            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
27989            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
27990            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
27991            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
27992            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
27993            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
27994            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
27995            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
27996            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
27997            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
27998            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
27999            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
28000            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
28001            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
28002            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
28003            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
28004            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
28005            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
28006            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
28007            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
28008            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
28009            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
28010            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
28011            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
28012            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
28013            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
28014            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
28015            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
28016            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
28017            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
28018            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
28019            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
28020            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
28021            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
28022            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
28023            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
28024            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
28025            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
28026            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
28027            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
28028            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
28029            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
28030            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
28031            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
28032            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
28033            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
28034            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
28035            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
28036            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
28037            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
28038            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
28039            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
28040            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
28041            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
28042            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
28043            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
28044            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
28045            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
28046            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
28047            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
28048            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
28049            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
28050            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
28051            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
28052            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
28053            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
28054            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
28055            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
28056            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
28057            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
28058            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
28059            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
28060            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
28061            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
28062            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
28063            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
28064            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
28065            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
28066            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
28067            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
28068            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
28069            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
28070            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
28071            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
28072            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
28073            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
28074            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
28075            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
28076            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
28077            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
28078            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
28079            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
28080            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
28081            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
28082            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
28083            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
28084            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
28085            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
28086            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
28087            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
28088            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
28089            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
28090            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
28091            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
28092            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
28093            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
28094            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
28095            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
28096            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
28097            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
28098            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
28099            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
28100            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
28101            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
28102            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
28103            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
28104            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
28105            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
28106            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
28107            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
28108            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
28109            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
28110            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
28111            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
28112            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
28113            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
28114            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
28115            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
28116            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
28117            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
28118            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
28119            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
28120            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
28121            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
28122            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
28123            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
28124            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
28125            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
28126            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
28127            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
28128            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
28129            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
28130            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
28131            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
28132            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
28133            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
28134            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
28135            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
28136            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
28137            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
28138            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
28139            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
28140            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
28141            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
28142            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
28143            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
28144            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
28145            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
28146            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
28147            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
28148            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
28149            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
28150            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
28151            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
28152            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
28153            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
28154            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
28155            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
28156            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
28157            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
28158            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
28159            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
28160            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
28161            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
28162            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
28163            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
28164            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
28165            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
28166            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
28167            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
28168            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
28169            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
28170            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
28171            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
28172            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
28173            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
28174            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
28175            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
28176            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
28177            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
28178            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
28179            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
28180            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
28181            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
28182            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
28183            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
28184            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
28185            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
28186            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
28187            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
28188            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
28189            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
28190            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
28191            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
28192            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
28193            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
28194            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
28195            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
28196            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
28197            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
28198            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
28199            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
28200            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
28201            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
28202            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
28203            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
28204            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
28205            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
28206            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
28207            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
28208            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
28209            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
28210            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
28211            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
28212            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
28213            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
28214            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
28215            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
28216            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
28217            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
28218            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
28219            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
28220            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
28221            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
28222            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
28223            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
28224            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
28225            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
28226            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
28227            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
28228            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
28229            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
28230            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
28231            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
28232            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
28233            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
28234            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
28235            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
28236            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
28237            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
28238            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
28239            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
28240            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
28241            AtomId::AtomMteState => "ATOM_MTE_STATE",
28242            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
28243            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
28244            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
28245            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
28246            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
28247            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
28248            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
28249            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
28250            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
28251            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
28252            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
28253            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
28254            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
28255            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
28256            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
28257            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
28258            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
28259            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
28260            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
28261            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
28262            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
28263            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
28264            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
28265            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
28266            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
28267            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
28268            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
28269            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
28270            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
28271            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
28272            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
28273            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
28274            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
28275            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
28276            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
28277            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
28278            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
28279            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
28280            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
28281            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
28282            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
28283            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
28284            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
28285            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
28286            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
28287            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
28288            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
28289            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
28290            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
28291            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
28292            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
28293            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
28294            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
28295            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
28296            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
28297            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
28298            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
28299            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
28300            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
28301            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
28302            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
28303            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
28304            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
28305            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
28306            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
28307            AtomId::AtomCallStats => "ATOM_CALL_STATS",
28308            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
28309            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
28310            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
28311            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
28312            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
28313            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
28314            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
28315            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
28316            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
28317            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
28318            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
28319            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
28320            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
28321            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
28322            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
28323            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
28324            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
28325            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
28326            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
28327            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
28328            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
28329            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
28330            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
28331            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
28332            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
28333            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
28334            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
28335            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
28336            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
28337            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
28338            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
28339            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
28340            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
28341            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
28342            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
28343            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
28344            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
28345            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
28346            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
28347            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
28348            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
28349            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
28350            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
28351            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
28352            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
28353            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
28354            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
28355            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
28356            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
28357            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
28358            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
28359            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
28360            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
28361            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
28362            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
28363            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
28364            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
28365            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
28366            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
28367            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
28368            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
28369            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
28370            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
28371            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
28372            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
28373            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
28374            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
28375            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
28376            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
28377            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
28378            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
28379            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
28380            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
28381            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
28382            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
28383            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
28384            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
28385            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
28386            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
28387            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
28388            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
28389            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
28390            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
28391            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
28392            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
28393            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
28394            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
28395            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
28396            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
28397            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
28398            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
28399            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
28400            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
28401            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
28402            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
28403            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
28404            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
28405            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
28406            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
28407            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
28408            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
28409            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
28410            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
28411            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
28412            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
28413            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
28414            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
28415            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
28416            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
28417            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
28418            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
28419            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
28420            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
28421            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
28422        }
28423    }
28424}
28425// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
28426
28427// Begin of protos/perfetto/common/sys_stats_counters.proto
28428
28429// When editing entries here remember also to update "sys_stats_counters.h" with
28430// the corresponding string definitions for the actual /proc files parser.
28431
28432/// Counter definitions for Linux's /proc/meminfo.
28433#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28434#[repr(i32)]
28435pub enum MeminfoCounters {
28436    MeminfoUnspecified = 0,
28437    MeminfoMemTotal = 1,
28438    MeminfoMemFree = 2,
28439    MeminfoMemAvailable = 3,
28440    MeminfoBuffers = 4,
28441    MeminfoCached = 5,
28442    MeminfoSwapCached = 6,
28443    MeminfoActive = 7,
28444    MeminfoInactive = 8,
28445    MeminfoActiveAnon = 9,
28446    MeminfoInactiveAnon = 10,
28447    MeminfoActiveFile = 11,
28448    MeminfoInactiveFile = 12,
28449    MeminfoUnevictable = 13,
28450    MeminfoMlocked = 14,
28451    MeminfoSwapTotal = 15,
28452    MeminfoSwapFree = 16,
28453    MeminfoDirty = 17,
28454    MeminfoWriteback = 18,
28455    MeminfoAnonPages = 19,
28456    MeminfoMapped = 20,
28457    MeminfoShmem = 21,
28458    MeminfoSlab = 22,
28459    MeminfoSlabReclaimable = 23,
28460    MeminfoSlabUnreclaimable = 24,
28461    MeminfoKernelStack = 25,
28462    MeminfoPageTables = 26,
28463    MeminfoCommitLimit = 27,
28464    MeminfoCommitedAs = 28,
28465    MeminfoVmallocTotal = 29,
28466    MeminfoVmallocUsed = 30,
28467    MeminfoVmallocChunk = 31,
28468    MeminfoCmaTotal = 32,
28469    MeminfoCmaFree = 33,
28470    MeminfoGpu = 34,
28471    MeminfoZram = 35,
28472    MeminfoMisc = 36,
28473    MeminfoIonHeap = 37,
28474    MeminfoIonHeapPool = 38,
28475}
28476impl MeminfoCounters {
28477    /// String value of the enum field names used in the ProtoBuf definition.
28478    ///
28479    /// The values are not transformed in any way and thus are considered stable
28480    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28481    pub fn as_str_name(&self) -> &'static str {
28482        match self {
28483            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
28484            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
28485            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
28486            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
28487            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
28488            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
28489            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
28490            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
28491            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
28492            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
28493            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
28494            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
28495            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
28496            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
28497            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
28498            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
28499            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
28500            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
28501            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
28502            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
28503            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
28504            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
28505            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
28506            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
28507            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
28508            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
28509            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
28510            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
28511            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
28512            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
28513            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
28514            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
28515            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
28516            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
28517            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
28518            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
28519            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
28520            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
28521            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
28522        }
28523    }
28524}
28525/// Counter definitions for Linux's /proc/vmstat.
28526#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28527#[repr(i32)]
28528pub enum VmstatCounters {
28529    VmstatUnspecified = 0,
28530    VmstatNrFreePages = 1,
28531    VmstatNrAllocBatch = 2,
28532    VmstatNrInactiveAnon = 3,
28533    VmstatNrActiveAnon = 4,
28534    VmstatNrInactiveFile = 5,
28535    VmstatNrActiveFile = 6,
28536    VmstatNrUnevictable = 7,
28537    VmstatNrMlock = 8,
28538    VmstatNrAnonPages = 9,
28539    VmstatNrMapped = 10,
28540    VmstatNrFilePages = 11,
28541    VmstatNrDirty = 12,
28542    VmstatNrWriteback = 13,
28543    VmstatNrSlabReclaimable = 14,
28544    VmstatNrSlabUnreclaimable = 15,
28545    VmstatNrPageTablePages = 16,
28546    VmstatNrKernelStack = 17,
28547    VmstatNrOverhead = 18,
28548    VmstatNrUnstable = 19,
28549    VmstatNrBounce = 20,
28550    VmstatNrVmscanWrite = 21,
28551    VmstatNrVmscanImmediateReclaim = 22,
28552    VmstatNrWritebackTemp = 23,
28553    VmstatNrIsolatedAnon = 24,
28554    VmstatNrIsolatedFile = 25,
28555    VmstatNrShmem = 26,
28556    VmstatNrDirtied = 27,
28557    VmstatNrWritten = 28,
28558    VmstatNrPagesScanned = 29,
28559    VmstatWorkingsetRefault = 30,
28560    VmstatWorkingsetActivate = 31,
28561    VmstatWorkingsetNodereclaim = 32,
28562    VmstatNrAnonTransparentHugepages = 33,
28563    VmstatNrFreeCma = 34,
28564    VmstatNrSwapcache = 35,
28565    VmstatNrDirtyThreshold = 36,
28566    VmstatNrDirtyBackgroundThreshold = 37,
28567    VmstatPgpgin = 38,
28568    VmstatPgpgout = 39,
28569    VmstatPgpgoutclean = 40,
28570    VmstatPswpin = 41,
28571    VmstatPswpout = 42,
28572    VmstatPgallocDma = 43,
28573    VmstatPgallocNormal = 44,
28574    VmstatPgallocMovable = 45,
28575    VmstatPgfree = 46,
28576    VmstatPgactivate = 47,
28577    VmstatPgdeactivate = 48,
28578    VmstatPgfault = 49,
28579    VmstatPgmajfault = 50,
28580    VmstatPgrefillDma = 51,
28581    VmstatPgrefillNormal = 52,
28582    VmstatPgrefillMovable = 53,
28583    VmstatPgstealKswapdDma = 54,
28584    VmstatPgstealKswapdNormal = 55,
28585    VmstatPgstealKswapdMovable = 56,
28586    VmstatPgstealDirectDma = 57,
28587    VmstatPgstealDirectNormal = 58,
28588    VmstatPgstealDirectMovable = 59,
28589    VmstatPgscanKswapdDma = 60,
28590    VmstatPgscanKswapdNormal = 61,
28591    VmstatPgscanKswapdMovable = 62,
28592    VmstatPgscanDirectDma = 63,
28593    VmstatPgscanDirectNormal = 64,
28594    VmstatPgscanDirectMovable = 65,
28595    VmstatPgscanDirectThrottle = 66,
28596    VmstatPginodesteal = 67,
28597    VmstatSlabsScanned = 68,
28598    VmstatKswapdInodesteal = 69,
28599    VmstatKswapdLowWmarkHitQuickly = 70,
28600    VmstatKswapdHighWmarkHitQuickly = 71,
28601    VmstatPageoutrun = 72,
28602    VmstatAllocstall = 73,
28603    VmstatPgrotated = 74,
28604    VmstatDropPagecache = 75,
28605    VmstatDropSlab = 76,
28606    VmstatPgmigrateSuccess = 77,
28607    VmstatPgmigrateFail = 78,
28608    VmstatCompactMigrateScanned = 79,
28609    VmstatCompactFreeScanned = 80,
28610    VmstatCompactIsolated = 81,
28611    VmstatCompactStall = 82,
28612    VmstatCompactFail = 83,
28613    VmstatCompactSuccess = 84,
28614    VmstatCompactDaemonWake = 85,
28615    VmstatUnevictablePgsCulled = 86,
28616    VmstatUnevictablePgsScanned = 87,
28617    VmstatUnevictablePgsRescued = 88,
28618    VmstatUnevictablePgsMlocked = 89,
28619    VmstatUnevictablePgsMunlocked = 90,
28620    VmstatUnevictablePgsCleared = 91,
28621    VmstatUnevictablePgsStranded = 92,
28622    VmstatNrZspages = 93,
28623    VmstatNrIonHeap = 94,
28624    VmstatNrGpuHeap = 95,
28625    VmstatAllocstallDma = 96,
28626    VmstatAllocstallMovable = 97,
28627    VmstatAllocstallNormal = 98,
28628    VmstatCompactDaemonFreeScanned = 99,
28629    VmstatCompactDaemonMigrateScanned = 100,
28630    VmstatNrFastrpc = 101,
28631    VmstatNrIndirectlyReclaimable = 102,
28632    VmstatNrIonHeapPool = 103,
28633    VmstatNrKernelMiscReclaimable = 104,
28634    VmstatNrShadowCallStackBytes = 105,
28635    VmstatNrShmemHugepages = 106,
28636    VmstatNrShmemPmdmapped = 107,
28637    VmstatNrUnreclaimablePages = 108,
28638    VmstatNrZoneActiveAnon = 109,
28639    VmstatNrZoneActiveFile = 110,
28640    VmstatNrZoneInactiveAnon = 111,
28641    VmstatNrZoneInactiveFile = 112,
28642    VmstatNrZoneUnevictable = 113,
28643    VmstatNrZoneWritePending = 114,
28644    VmstatOomKill = 115,
28645    VmstatPglazyfree = 116,
28646    VmstatPglazyfreed = 117,
28647    VmstatPgrefill = 118,
28648    VmstatPgscanDirect = 119,
28649    VmstatPgscanKswapd = 120,
28650    VmstatPgskipDma = 121,
28651    VmstatPgskipMovable = 122,
28652    VmstatPgskipNormal = 123,
28653    VmstatPgstealDirect = 124,
28654    VmstatPgstealKswapd = 125,
28655    VmstatSwapRa = 126,
28656    VmstatSwapRaHit = 127,
28657    VmstatWorkingsetRestore = 128,
28658    VmstatAllocstallDevice = 129,
28659    VmstatAllocstallDma32 = 130,
28660    VmstatBalloonDeflate = 131,
28661    VmstatBalloonInflate = 132,
28662    VmstatBalloonMigrate = 133,
28663    VmstatCmaAllocFail = 134,
28664    VmstatCmaAllocSuccess = 135,
28665    VmstatNrFileHugepages = 136,
28666    VmstatNrFilePmdmapped = 137,
28667    VmstatNrFollPinAcquired = 138,
28668    VmstatNrFollPinReleased = 139,
28669    VmstatNrSecPageTablePages = 140,
28670    VmstatNrShadowCallStack = 141,
28671    VmstatNrSwapcached = 142,
28672    VmstatNrThrottledWritten = 143,
28673    VmstatPgallocDevice = 144,
28674    VmstatPgallocDma32 = 145,
28675    VmstatPgdemoteDirect = 146,
28676    VmstatPgdemoteKswapd = 147,
28677    VmstatPgreuse = 148,
28678    VmstatPgscanAnon = 149,
28679    VmstatPgscanFile = 150,
28680    VmstatPgskipDevice = 151,
28681    VmstatPgskipDma32 = 152,
28682    VmstatPgstealAnon = 153,
28683    VmstatPgstealFile = 154,
28684    VmstatThpCollapseAlloc = 155,
28685    VmstatThpCollapseAllocFailed = 156,
28686    VmstatThpDeferredSplitPage = 157,
28687    VmstatThpFaultAlloc = 158,
28688    VmstatThpFaultFallback = 159,
28689    VmstatThpFaultFallbackCharge = 160,
28690    VmstatThpFileAlloc = 161,
28691    VmstatThpFileFallback = 162,
28692    VmstatThpFileFallbackCharge = 163,
28693    VmstatThpFileMapped = 164,
28694    VmstatThpMigrationFail = 165,
28695    VmstatThpMigrationSplit = 166,
28696    VmstatThpMigrationSuccess = 167,
28697    VmstatThpScanExceedNonePte = 168,
28698    VmstatThpScanExceedSharePte = 169,
28699    VmstatThpScanExceedSwapPte = 170,
28700    VmstatThpSplitPage = 171,
28701    VmstatThpSplitPageFailed = 172,
28702    VmstatThpSplitPmd = 173,
28703    VmstatThpSwpout = 174,
28704    VmstatThpSwpoutFallback = 175,
28705    VmstatThpZeroPageAlloc = 176,
28706    VmstatThpZeroPageAllocFailed = 177,
28707    VmstatVmaLockAbort = 178,
28708    VmstatVmaLockMiss = 179,
28709    VmstatVmaLockRetry = 180,
28710    VmstatVmaLockSuccess = 181,
28711    VmstatWorkingsetActivateAnon = 182,
28712    VmstatWorkingsetActivateFile = 183,
28713    VmstatWorkingsetNodes = 184,
28714    VmstatWorkingsetRefaultAnon = 185,
28715    VmstatWorkingsetRefaultFile = 186,
28716    VmstatWorkingsetRestoreAnon = 187,
28717    VmstatWorkingsetRestoreFile = 188,
28718}
28719impl VmstatCounters {
28720    /// String value of the enum field names used in the ProtoBuf definition.
28721    ///
28722    /// The values are not transformed in any way and thus are considered stable
28723    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28724    pub fn as_str_name(&self) -> &'static str {
28725        match self {
28726            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
28727            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
28728            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
28729            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
28730            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
28731            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
28732            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
28733            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
28734            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
28735            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
28736            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
28737            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
28738            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
28739            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
28740            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
28741            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
28742            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
28743            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
28744            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
28745            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
28746            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
28747            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
28748            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
28749            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
28750            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
28751            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
28752            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
28753            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
28754            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
28755            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
28756            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
28757            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
28758            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
28759            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
28760            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
28761            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
28762            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
28763            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
28764            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
28765            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
28766            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
28767            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
28768            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
28769            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
28770            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
28771            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
28772            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
28773            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
28774            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
28775            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
28776            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
28777            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
28778            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
28779            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
28780            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
28781            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
28782            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
28783            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
28784            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
28785            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
28786            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
28787            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
28788            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
28789            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
28790            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
28791            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
28792            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
28793            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
28794            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
28795            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
28796            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
28797            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
28798            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
28799            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
28800            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
28801            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
28802            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
28803            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
28804            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
28805            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
28806            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
28807            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
28808            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
28809            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
28810            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
28811            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
28812            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
28813            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
28814            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
28815            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
28816            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
28817            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
28818            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
28819            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
28820            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
28821            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
28822            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
28823            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
28824            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
28825            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
28826            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
28827            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
28828            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
28829            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
28830            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
28831            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
28832            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
28833            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
28834            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
28835            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
28836            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
28837            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
28838            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
28839            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
28840            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
28841            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
28842            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
28843            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
28844            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
28845            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
28846            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
28847            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
28848            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
28849            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
28850            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
28851            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
28852            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
28853            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
28854            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
28855            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
28856            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
28857            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
28858            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
28859            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
28860            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
28861            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
28862            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
28863            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
28864            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
28865            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
28866            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
28867            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
28868            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
28869            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
28870            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
28871            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
28872            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
28873            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
28874            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
28875            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
28876            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
28877            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
28878            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
28879            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
28880            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
28881            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
28882            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
28883            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
28884            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
28885            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
28886            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
28887            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
28888            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
28889            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
28890            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
28891            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
28892            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
28893            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
28894            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
28895            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
28896            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
28897            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
28898            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
28899            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
28900            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
28901            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
28902            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
28903            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
28904            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
28905            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
28906            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
28907            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
28908            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
28909            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
28910            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
28911            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
28912            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
28913            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
28914            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
28915        }
28916    }
28917}
28918// End of protos/perfetto/trace/android/app_wakelock_data.proto
28919
28920// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
28921
28922/// Describes the packet type and direction. CMD and EVT are unidirectional, so
28923/// no need to differentiate the direction.
28924#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28925#[repr(i32)]
28926pub enum BluetoothTracePacketType {
28927    HciCmd = 1,
28928    HciEvt = 2,
28929    HciAclRx = 3,
28930    HciAclTx = 4,
28931    HciScoRx = 5,
28932    HciScoTx = 6,
28933    HciIsoRx = 7,
28934    HciIsoTx = 8,
28935}
28936impl BluetoothTracePacketType {
28937    /// String value of the enum field names used in the ProtoBuf definition.
28938    ///
28939    /// The values are not transformed in any way and thus are considered stable
28940    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28941    pub fn as_str_name(&self) -> &'static str {
28942        match self {
28943            BluetoothTracePacketType::HciCmd => "HCI_CMD",
28944            BluetoothTracePacketType::HciEvt => "HCI_EVT",
28945            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
28946            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
28947            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
28948            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
28949            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
28950            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
28951        }
28952    }
28953}
28954// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
28955
28956// Begin of protos/perfetto/trace/android/network_trace.proto
28957
28958#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28959#[repr(i32)]
28960pub enum TrafficDirection {
28961    DirUnspecified = 0,
28962    DirIngress = 1,
28963    DirEgress = 2,
28964}
28965impl TrafficDirection {
28966    /// String value of the enum field names used in the ProtoBuf definition.
28967    ///
28968    /// The values are not transformed in any way and thus are considered stable
28969    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28970    pub fn as_str_name(&self) -> &'static str {
28971        match self {
28972            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
28973            TrafficDirection::DirIngress => "DIR_INGRESS",
28974            TrafficDirection::DirEgress => "DIR_EGRESS",
28975        }
28976    }
28977}
28978#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28979#[repr(i32)]
28980pub enum TrustedOverlay {
28981    Unset = 0,
28982    Disabled = 1,
28983    Enabled = 2,
28984}
28985impl TrustedOverlay {
28986    /// String value of the enum field names used in the ProtoBuf definition.
28987    ///
28988    /// The values are not transformed in any way and thus are considered stable
28989    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28990    pub fn as_str_name(&self) -> &'static str {
28991        match self {
28992            TrustedOverlay::Unset => "UNSET",
28993            TrustedOverlay::Disabled => "DISABLED",
28994            TrustedOverlay::Enabled => "ENABLED",
28995        }
28996    }
28997}
28998/// Must match definition in the IComposerClient HAL
28999#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29000#[repr(i32)]
29001pub enum HwcCompositionType {
29002    /// Invalid composition type
29003    HwcTypeUnspecified = 0,
29004    /// Layer was composited by the client into the client target buffer
29005    HwcTypeClient = 1,
29006    /// Layer was composited by the device through hardware overlays
29007    HwcTypeDevice = 2,
29008    /// Layer was composited by the device using a color
29009    HwcTypeSolidColor = 3,
29010    /// Similar to DEVICE, but the layer position may have been asynchronously set
29011    /// through setCursorPosition
29012    HwcTypeCursor = 4,
29013    /// Layer was composited by the device via a sideband stream
29014    HwcTypeSideband = 5,
29015    /// Layer was composited by hardware optimized for display decoration
29016    HwcTypeDisplayDecoration = 6,
29017}
29018impl HwcCompositionType {
29019    /// String value of the enum field names used in the ProtoBuf definition.
29020    ///
29021    /// The values are not transformed in any way and thus are considered stable
29022    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29023    pub fn as_str_name(&self) -> &'static str {
29024        match self {
29025            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
29026            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
29027            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
29028            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
29029            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
29030            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
29031            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
29032        }
29033    }
29034}
29035#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29036#[repr(i32)]
29037pub enum FtraceParseStatus {
29038    FtraceStatusUnspecified = 0,
29039    /// Not written, used for convenience of implementation:
29040    FtraceStatusOk = 1,
29041    /// Issues with reading data out of the ftrace ring buffer:
29042    FtraceStatusUnexpectedReadError = 2,
29043    FtraceStatusPartialPageRead = 3,
29044    /// Ring buffer binary data not matching our understanding of the layout:
29045    FtraceStatusAbiInvalidPageHeader = 4,
29046    FtraceStatusAbiShortEventHeader = 5,
29047    FtraceStatusAbiNullPadding = 6,
29048    FtraceStatusAbiShortPaddingLength = 7,
29049    FtraceStatusAbiInvalidPaddingLength = 8,
29050    FtraceStatusAbiShortTimeExtend = 9,
29051    FtraceStatusAbiShortTimeStamp = 10,
29052    FtraceStatusAbiShortDataLength = 11,
29053    FtraceStatusAbiZeroDataLength = 12,
29054    FtraceStatusAbiInvalidDataLength = 13,
29055    FtraceStatusAbiShortEventId = 14,
29056    FtraceStatusAbiEndOverflow = 15,
29057    /// Issues with parsing the event payload:
29058    FtraceStatusShortCompactEvent = 16,
29059    FtraceStatusInvalidEvent = 17,
29060}
29061impl FtraceParseStatus {
29062    /// String value of the enum field names used in the ProtoBuf definition.
29063    ///
29064    /// The values are not transformed in any way and thus are considered stable
29065    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29066    pub fn as_str_name(&self) -> &'static str {
29067        match self {
29068            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
29069            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
29070            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
29071            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
29072            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
29073            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
29074            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
29075            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
29076            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
29077            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
29078            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
29079            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
29080            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
29081            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
29082            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
29083            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
29084            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
29085            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
29086        }
29087    }
29088}
29089#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29090#[repr(i32)]
29091pub enum FtraceClock {
29092    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
29093    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
29094    Unspecified = 0,
29095    Unknown = 1,
29096    Global = 2,
29097    Local = 3,
29098    MonoRaw = 4,
29099}
29100impl FtraceClock {
29101    /// String value of the enum field names used in the ProtoBuf definition.
29102    ///
29103    /// The values are not transformed in any way and thus are considered stable
29104    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29105    pub fn as_str_name(&self) -> &'static str {
29106        match self {
29107            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
29108            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
29109            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
29110            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
29111            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
29112        }
29113    }
29114}
29115// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
29116
29117// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
29118
29119// Describes Chrome's Compositor scheduler's current state and associated
29120// variables.
29121//
29122// These protos and enums were adapted from the corresponding original JSON
29123// trace event for the scheduler state. In contrast to the JSON, we use strongly
29124// typed enum values instead of strings for many fields, and
29125// microsecond-granularity timestamps.
29126//
29127// The original format was generated in JSON by the code at
29128// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
29129//
29130// And is now generated as protozero:
29131// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
29132//
29133// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
29134
29135#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29136#[repr(i32)]
29137pub enum ChromeCompositorSchedulerAction {
29138    CcSchedulerActionUnspecified = 0,
29139    CcSchedulerActionNone = 1,
29140    CcSchedulerActionSendBeginMainFrame = 2,
29141    CcSchedulerActionCommit = 3,
29142    CcSchedulerActionActivateSyncTree = 4,
29143    CcSchedulerActionDrawIfPossible = 5,
29144    CcSchedulerActionDrawForced = 6,
29145    CcSchedulerActionDrawAbort = 7,
29146    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
29147    CcSchedulerActionPrepareTiles = 9,
29148    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
29149    CcSchedulerActionPerformImplSideInvalidation = 11,
29150    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
29151    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
29152}
29153impl ChromeCompositorSchedulerAction {
29154    /// String value of the enum field names used in the ProtoBuf definition.
29155    ///
29156    /// The values are not transformed in any way and thus are considered stable
29157    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29158    pub fn as_str_name(&self) -> &'static str {
29159        match self {
29160            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
29161            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
29162            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
29163            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
29164            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
29165            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
29166            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
29167            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
29168            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
29169            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
29170            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
29171            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
29172            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
29173            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
29174        }
29175    }
29176}
29177// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
29178
29179// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
29180
29181// Describes the state of the RendererScheduler for a given Renderer Process.
29182
29183/// RAIL Mode is an indication of the kind of work that a Renderer is currently
29184/// performing which is in turn used to prioritise work accordingly.
29185/// A fuller description of these modes can be found <https://web.dev/rail/>
29186#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29187#[repr(i32)]
29188pub enum ChromeRailMode {
29189    RailModeNone = 0,
29190    RailModeResponse = 1,
29191    RailModeAnimation = 2,
29192    RailModeIdle = 3,
29193    RailModeLoad = 4,
29194}
29195impl ChromeRailMode {
29196    /// String value of the enum field names used in the ProtoBuf definition.
29197    ///
29198    /// The values are not transformed in any way and thus are considered stable
29199    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29200    pub fn as_str_name(&self) -> &'static str {
29201        match self {
29202            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
29203            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
29204            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
29205            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
29206            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
29207        }
29208    }
29209}