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    /// optional.  Minimum sampling period supported by the producer in
35    /// nanoseconds.
36    #[prost(uint64, optional, tag="3")]
37    pub min_sampling_period_ns: ::core::option::Option<u64>,
38    /// optional.  Maximum sampling period supported by the producer in
39    /// nanoseconds.
40    #[prost(uint64, optional, tag="4")]
41    pub max_sampling_period_ns: ::core::option::Option<u64>,
42    /// optional.  The producer supports counter sampling by instrumenting the
43    /// command buffer.
44    #[prost(bool, optional, tag="5")]
45    pub supports_instrumented_sampling: ::core::option::Option<bool>,
46}
47/// Nested message and enum types in `GpuCounterDescriptor`.
48pub mod gpu_counter_descriptor {
49    #[derive(Clone, PartialEq, ::prost::Message)]
50    pub struct GpuCounterSpec {
51        #[prost(uint32, optional, tag="1")]
52        pub counter_id: ::core::option::Option<u32>,
53        #[prost(string, optional, tag="2")]
54        pub name: ::core::option::Option<::prost::alloc::string::String>,
55        #[prost(string, optional, tag="3")]
56        pub description: ::core::option::Option<::prost::alloc::string::String>,
57        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
58        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
59        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
60        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
61        #[prost(bool, optional, tag="9")]
62        pub select_by_default: ::core::option::Option<bool>,
63        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
64        pub groups: ::prost::alloc::vec::Vec<i32>,
65        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
66        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
67    }
68    /// Nested message and enum types in `GpuCounterSpec`.
69    pub mod gpu_counter_spec {
70        #[derive(Clone, PartialEq, ::prost::Oneof)]
71        pub enum PeakValue {
72            #[prost(int64, tag="5")]
73            IntPeakValue(i64),
74            #[prost(double, tag="6")]
75            DoublePeakValue(f64),
76        }
77    }
78    /// Allow producer to group counters into block to represent counter islands.
79    /// A capacity may be specified to indicate the number of counters that can be
80    /// enable simultaneously in that block.
81    #[derive(Clone, PartialEq, ::prost::Message)]
82    pub struct GpuCounterBlock {
83        /// required. Unique ID for the counter group.
84        #[prost(uint32, optional, tag="1")]
85        pub block_id: ::core::option::Option<u32>,
86        /// optional. Number of counters supported by the block. No limit if unset.
87        #[prost(uint32, optional, tag="2")]
88        pub block_capacity: ::core::option::Option<u32>,
89        /// optional. Name of block.
90        #[prost(string, optional, tag="3")]
91        pub name: ::core::option::Option<::prost::alloc::string::String>,
92        /// optional. Description for the block.
93        #[prost(string, optional, tag="4")]
94        pub description: ::core::option::Option<::prost::alloc::string::String>,
95        /// list of counters that are part of the block.
96        #[prost(uint32, repeated, packed="false", tag="5")]
97        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
98    }
99    /// Logical groups for a counter.  This is used in the UI to present the
100    /// related counters together.
101    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
102    #[repr(i32)]
103    pub enum GpuCounterGroup {
104        Unclassified = 0,
105        System = 1,
106        Vertices = 2,
107        Fragments = 3,
108        Primitives = 4,
109        /// Includes counters relating to caching and bandwidth.
110        Memory = 5,
111        Compute = 6,
112        RayTracing = 7,
113    }
114    impl GpuCounterGroup {
115        /// String value of the enum field names used in the ProtoBuf definition.
116        ///
117        /// The values are not transformed in any way and thus are considered stable
118        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
119        pub fn as_str_name(&self) -> &'static str {
120            match self {
121                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
122                GpuCounterGroup::System => "SYSTEM",
123                GpuCounterGroup::Vertices => "VERTICES",
124                GpuCounterGroup::Fragments => "FRAGMENTS",
125                GpuCounterGroup::Primitives => "PRIMITIVES",
126                GpuCounterGroup::Memory => "MEMORY",
127                GpuCounterGroup::Compute => "COMPUTE",
128                GpuCounterGroup::RayTracing => "RAY_TRACING",
129            }
130        }
131    }
132    /// next id: 41
133    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
134    #[repr(i32)]
135    pub enum MeasureUnit {
136        None = 0,
137        Bit = 1,
138        Kilobit = 2,
139        Megabit = 3,
140        Gigabit = 4,
141        Terabit = 5,
142        Petabit = 6,
143        Byte = 7,
144        Kilobyte = 8,
145        Megabyte = 9,
146        Gigabyte = 10,
147        Terabyte = 11,
148        Petabyte = 12,
149        Hertz = 13,
150        Kilohertz = 14,
151        Megahertz = 15,
152        Gigahertz = 16,
153        Terahertz = 17,
154        Petahertz = 18,
155        Nanosecond = 19,
156        Microsecond = 20,
157        Millisecond = 21,
158        Second = 22,
159        Minute = 23,
160        Hour = 24,
161        Vertex = 25,
162        Pixel = 26,
163        Triangle = 27,
164        Primitive = 38,
165        Fragment = 39,
166        Milliwatt = 28,
167        Watt = 29,
168        Kilowatt = 30,
169        Joule = 31,
170        Volt = 32,
171        Ampere = 33,
172        Celsius = 34,
173        Fahrenheit = 35,
174        Kelvin = 36,
175        /// Values should be out of 100.
176        Percent = 37,
177        Instruction = 40,
178    }
179    impl MeasureUnit {
180        /// String value of the enum field names used in the ProtoBuf definition.
181        ///
182        /// The values are not transformed in any way and thus are considered stable
183        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
184        pub fn as_str_name(&self) -> &'static str {
185            match self {
186                MeasureUnit::None => "NONE",
187                MeasureUnit::Bit => "BIT",
188                MeasureUnit::Kilobit => "KILOBIT",
189                MeasureUnit::Megabit => "MEGABIT",
190                MeasureUnit::Gigabit => "GIGABIT",
191                MeasureUnit::Terabit => "TERABIT",
192                MeasureUnit::Petabit => "PETABIT",
193                MeasureUnit::Byte => "BYTE",
194                MeasureUnit::Kilobyte => "KILOBYTE",
195                MeasureUnit::Megabyte => "MEGABYTE",
196                MeasureUnit::Gigabyte => "GIGABYTE",
197                MeasureUnit::Terabyte => "TERABYTE",
198                MeasureUnit::Petabyte => "PETABYTE",
199                MeasureUnit::Hertz => "HERTZ",
200                MeasureUnit::Kilohertz => "KILOHERTZ",
201                MeasureUnit::Megahertz => "MEGAHERTZ",
202                MeasureUnit::Gigahertz => "GIGAHERTZ",
203                MeasureUnit::Terahertz => "TERAHERTZ",
204                MeasureUnit::Petahertz => "PETAHERTZ",
205                MeasureUnit::Nanosecond => "NANOSECOND",
206                MeasureUnit::Microsecond => "MICROSECOND",
207                MeasureUnit::Millisecond => "MILLISECOND",
208                MeasureUnit::Second => "SECOND",
209                MeasureUnit::Minute => "MINUTE",
210                MeasureUnit::Hour => "HOUR",
211                MeasureUnit::Vertex => "VERTEX",
212                MeasureUnit::Pixel => "PIXEL",
213                MeasureUnit::Triangle => "TRIANGLE",
214                MeasureUnit::Primitive => "PRIMITIVE",
215                MeasureUnit::Fragment => "FRAGMENT",
216                MeasureUnit::Milliwatt => "MILLIWATT",
217                MeasureUnit::Watt => "WATT",
218                MeasureUnit::Kilowatt => "KILOWATT",
219                MeasureUnit::Joule => "JOULE",
220                MeasureUnit::Volt => "VOLT",
221                MeasureUnit::Ampere => "AMPERE",
222                MeasureUnit::Celsius => "CELSIUS",
223                MeasureUnit::Fahrenheit => "FAHRENHEIT",
224                MeasureUnit::Kelvin => "KELVIN",
225                MeasureUnit::Percent => "PERCENT",
226                MeasureUnit::Instruction => "INSTRUCTION",
227            }
228        }
229    }
230}
231// End of protos/perfetto/common/gpu_counter_descriptor.proto
232
233// Begin of protos/perfetto/common/track_event_descriptor.proto
234
235#[derive(Clone, PartialEq, ::prost::Message)]
236pub struct TrackEventCategory {
237    #[prost(string, optional, tag="1")]
238    pub name: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(string, optional, tag="2")]
240    pub description: ::core::option::Option<::prost::alloc::string::String>,
241    #[prost(string, repeated, tag="3")]
242    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
243}
244#[derive(Clone, PartialEq, ::prost::Message)]
245pub struct TrackEventDescriptor {
246    #[prost(message, repeated, tag="1")]
247    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
248}
249// End of protos/perfetto/common/track_event_descriptor.proto
250
251// Begin of protos/perfetto/protovm/vm_program.proto
252
253#[derive(Clone, PartialEq, ::prost::Message)]
254pub struct VmProgram {
255    #[prost(uint32, optional, tag="1")]
256    pub version: ::core::option::Option<u32>,
257    #[prost(message, repeated, tag="2")]
258    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
259}
260#[derive(Clone, PartialEq, ::prost::Message)]
261pub struct VmInstruction {
262    #[prost(enumeration="vm_instruction::AbortLevel", optional, tag="6")]
263    pub abort_level: ::core::option::Option<i32>,
264    /// Sub-instructions executed if the current instruction succeeds
265    #[prost(message, repeated, tag="7")]
266    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
267    #[prost(oneof="vm_instruction::Operation", tags="1, 2, 3, 4, 5")]
268    pub operation: ::core::option::Option<vm_instruction::Operation>,
269}
270/// Nested message and enum types in `VmInstruction`.
271pub mod vm_instruction {
272    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
273    #[repr(i32)]
274    pub enum AbortLevel {
275        /// Skip current instruction but execute following ones
276        SkipCurrentInstruction = 1,
277        /// Skip current instruction as well as following ones (default)
278        SkipCurrentInstructionAndBreakOuter = 2,
279        /// Abort whole program
280        Abort = 3,
281    }
282    impl AbortLevel {
283        /// String value of the enum field names used in the ProtoBuf definition.
284        ///
285        /// The values are not transformed in any way and thus are considered stable
286        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
287        pub fn as_str_name(&self) -> &'static str {
288            match self {
289                AbortLevel::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
290                AbortLevel::SkipCurrentInstructionAndBreakOuter => "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER",
291                AbortLevel::Abort => "ABORT",
292            }
293        }
294    }
295    #[derive(Clone, PartialEq, ::prost::Oneof)]
296    pub enum Operation {
297        #[prost(message, tag="1")]
298        Select(super::VmOpSelect),
299        #[prost(message, tag="2")]
300        RegLoad(super::VmOpRegLoad),
301        #[prost(message, tag="3")]
302        Merge(super::VmOpMerge),
303        #[prost(message, tag="4")]
304        Set(super::VmOpSet),
305        #[prost(message, tag="5")]
306        Del(super::VmOpDel),
307    }
308}
309#[derive(Clone, PartialEq, ::prost::Message)]
310pub struct VmOpSelect {
311    /// Enum SRC|DST|BOTH. Default=SRC.
312    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
313    pub cursor: ::core::option::Option<i32>,
314    #[prost(message, repeated, tag="2")]
315    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
316    /// Creates the submessage if doesn't exist in the DST cursor
317    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
318    #[prost(bool, optional, tag="3")]
319    pub create_if_not_exist: ::core::option::Option<bool>,
320}
321/// Nested message and enum types in `VmOpSelect`.
322pub mod vm_op_select {
323    /// A path component is either: (1) a field id to descend into (common case);
324    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
325    /// repeated fields, where we snoop a sub-field as a map key)
326    #[derive(Clone, PartialEq, ::prost::Message)]
327    pub struct PathComponent {
328        // When we are selecting a leaf field, tell what's the field type
329        // to disambiguate integer types. Using uint64 by default will likely
330        // do the right thing in 99% cases (so probably we don't need to impl
331        // this until much later if somebody does a map with a fixed64 key)
332        // enum ProtoFieldType field_type = 4;  // bool | int32 | fixed32 | ...
333
334        /// Only valid when using field_id. This makes select have foreach
335        /// semantics. This means that the body of nested_instructions is
336        /// executed several times, once per each repeated submessage.
337        #[prost(bool, optional, tag="5")]
338        pub is_repeated: ::core::option::Option<bool>,
339        /// Only valid when using map_key_field_id. This defines which
340        /// register (R1..R32) should be used to match the key of the dict
341        /// in a map lookup operation.
342        /// In other words:
343        /// foreach msg in repeated message {
344        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
345        ///       break;  // Lookup succeeded, PathComponent resolves here.
346        ///    }
347        /// }
348        #[prost(uint32, optional, tag="6")]
349        pub register_to_match: ::core::option::Option<u32>,
350        /// Only valid when using field_id and is_repeated=true. When iterating
351        /// over repeated fields, stores the current iteration index into the
352        /// the register R1..R32 defined below. This can be used to do complex
353        /// operations like "find the entry in the array that has width==100,
354        /// remember its offset in the SRC array and overwrite the matching
355        /// i-th element in the DST array. We will probably never implement
356        /// this but it's here for completeness.
357        #[prost(uint32, optional, tag="7")]
358        pub store_foreach_index_into_register: ::core::option::Option<u32>,
359        #[prost(oneof="path_component::Field", tags="1, 2, 3")]
360        pub field: ::core::option::Option<path_component::Field>,
361    }
362    /// Nested message and enum types in `PathComponent`.
363    pub mod path_component {
364        #[derive(Clone, PartialEq, ::prost::Oneof)]
365        pub enum Field {
366            #[prost(uint32, tag="1")]
367            FieldId(u32),
368            #[prost(uint32, tag="2")]
369            ArrayIndex(u32),
370            /// The ID of the field in the repeated submessage that we
371            /// use as a key (e.g. LayerState.layer_id). When setting this
372            /// register_to_match must also be set, to tell what's the
373            /// expected value of the key we are looking up.
374            #[prost(uint32, tag="3")]
375            MapKeyFieldId(u32),
376        }
377    }
378}
379#[derive(Clone, PartialEq, ::prost::Message)]
380pub struct VmOpRegLoad {
381    /// SRC(default) | DST.
382    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
383    pub cursor: ::core::option::Option<i32>,
384    /// 1=R1, 2=R2... 32=R32
385    #[prost(uint32, optional, tag="2")]
386    pub dst_register: ::core::option::Option<u32>,
387}
388/// Merges SRC into DST. Both need to point to a message (not a field).
389#[derive(Clone, PartialEq, ::prost::Message)]
390pub struct VmOpMerge {
391}
392/// Copies SRC into DST. If a message, replaces the DST node, discarding any
393/// pre-existing field.
394#[derive(Clone, PartialEq, ::prost::Message)]
395pub struct VmOpSet {
396}
397/// Delete the field or message pointed by DST.
398#[derive(Clone, PartialEq, ::prost::Message)]
399pub struct VmOpDel {
400}
401// End of protos/perfetto/protovm/vm_program.proto
402
403// Begin of protos/perfetto/common/data_source_descriptor.proto
404
405/// This message is sent from Producer(s) to the tracing Service when registering
406/// to advertise their capabilities. It describes the structure of tracing
407/// protos that will be produced by the data source and the supported filters.
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct DataSourceDescriptor {
410    /// e.g., "linux.ftrace", "chromium.tracing"
411    #[prost(string, optional, tag="1")]
412    pub name: ::core::option::Option<::prost::alloc::string::String>,
413    /// When non-zero, this is a unique ID within the scope of the Producer for
414    /// this data source (it is NOT globally unique). This is useful to
415    /// differentiate between data sources with matching names when calling
416    /// UpdateDataSource(). This field has been introduced in November 2021
417    /// (v22, Android T) and is not supported on older versions.
418    #[prost(uint64, optional, tag="7")]
419    pub id: ::core::option::Option<u64>,
420    /// When true the data source is expected to ack the stop request through the
421    /// NotifyDataSourceStopped() IPC. This field has been introduced after
422    /// Android P in Jul 2018 and is not supported on older versions.
423    #[prost(bool, optional, tag="2")]
424    pub will_notify_on_stop: ::core::option::Option<bool>,
425    /// When true the data source is expected to ack the start request through the
426    /// NotifyDataSourceStarted() IPC. This field has been introduced after
427    /// Android P in March 2019 and is not supported on older versions.
428    #[prost(bool, optional, tag="3")]
429    pub will_notify_on_start: ::core::option::Option<bool>,
430    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
431    /// set if the data source writes packets that refer to previous trace
432    /// contents, and knows how to stop referring to the already-emitted data.
433    #[prost(bool, optional, tag="4")]
434    pub handles_incremental_state_clear: ::core::option::Option<bool>,
435    /// If true, indicates that the data source does nothing upon Flush. This
436    /// allows the service to reduce the flush-related IPC traffic and better deal
437    /// with frozen producers (see go/perfetto-frozen). This is usually the case
438    /// for data sources like 'track_event' that don't have access to the various
439    /// thread task runners to post a flush task and rely purely on server-side
440    /// scraping.
441    /// Introduced in v39 / Android V.
442    #[prost(bool, optional, tag="9")]
443    pub no_flush: ::core::option::Option<bool>,
444    /// If present, the tracing service executes this program within a ProtoVM to
445    /// process overwritten packets (patches). The service computes a hash of the
446    /// program to detect and disambiguate between different versions; if multiple
447    /// versions (from different producers) are specified for the same data source,
448    /// the service instantiates a dedicated ProtoVM for each.
449    #[prost(message, optional, tag="10")]
450    pub protovm_program: ::core::option::Option<VmProgram>,
451    /// Optional specification about available GPU counters.
452    #[prost(message, optional, tag="5")]
453    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
454    #[prost(message, optional, tag="6")]
455    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
456    #[prost(message, optional, tag="8")]
457    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
458}
459// End of protos/perfetto/common/data_source_descriptor.proto
460
461// Begin of protos/perfetto/common/tracing_service_state.proto
462
463/// Reports the state of the tracing service. Used to gather details about the
464/// data sources connected.
465/// See ConsumerPort::QueryServiceState().
466#[derive(Clone, PartialEq, ::prost::Message)]
467pub struct TracingServiceState {
468    /// Lists all the producers connected.
469    #[prost(message, repeated, tag="1")]
470    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
471    /// Lists the data sources available.
472    #[prost(message, repeated, tag="2")]
473    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
474    /// Lists the tracing sessions active AND owned by a consumer that has the same
475    /// UID of the caller (or all of them if the caller is root).
476    /// Introduced in v24 / Android T.
477    #[prost(message, repeated, tag="6")]
478    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
479    /// This is always set to true from v24 and beyond. This flag is only used to
480    /// tell the difference between: (1) talking to a recent service which happens
481    /// to have no tracing session active; (2) talking to an older version of the
482    /// service which will never report any tracing session.
483    #[prost(bool, optional, tag="7")]
484    pub supports_tracing_sessions: ::core::option::Option<bool>,
485    /// Total number of tracing sessions.
486    #[prost(int32, optional, tag="3")]
487    pub num_sessions: ::core::option::Option<i32>,
488    /// Number of tracing sessions in the started state. Always <= num_sessions.
489    #[prost(int32, optional, tag="4")]
490    pub num_sessions_started: ::core::option::Option<i32>,
491    /// The version of traced (the same returned by `traced --version`).
492    /// This is a human readable string with and its format varies depending on
493    /// the build system and the repo (standalone vs AOSP).
494    /// This is intended for human debugging only.
495    #[prost(string, optional, tag="5")]
496    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
497}
498/// Nested message and enum types in `TracingServiceState`.
499pub mod tracing_service_state {
500    /// Describes a producer process.
501    #[derive(Clone, PartialEq, ::prost::Message)]
502    pub struct Producer {
503        /// Unique ID of the producer (monotonic counter).
504        #[prost(int32, optional, tag="1")]
505        pub id: ::core::option::Option<i32>,
506        /// Typically matches the process name.
507        #[prost(string, optional, tag="2")]
508        pub name: ::core::option::Option<::prost::alloc::string::String>,
509        /// Unix pid of the remote process. Supported only on Linux-based systems.
510        /// Introduced in v24 / Android T.
511        #[prost(int32, optional, tag="5")]
512        pub pid: ::core::option::Option<i32>,
513        /// Unix uid of the remote process.
514        #[prost(int32, optional, tag="3")]
515        pub uid: ::core::option::Option<i32>,
516        /// The version of the client library used by the producer.
517        /// This is a human readable string with and its format varies depending on
518        /// the build system and the repo (standalone vs AOSP).
519        /// This is intended for human debugging only.
520        #[prost(string, optional, tag="4")]
521        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
522        /// Returns true if the process appears to be frozen (Android only).
523        /// Introduced in Perfetto V49 / Android 24Q4.
524        #[prost(bool, optional, tag="6")]
525        pub frozen: ::core::option::Option<bool>,
526    }
527    /// Describes a data source registered by a producer. Data sources are listed
528    /// regardless of the fact that they are being used or not.
529    #[derive(Clone, PartialEq, ::prost::Message)]
530    pub struct DataSource {
531        /// Descriptor passed by the data source when calling RegisterDataSource().
532        #[prost(message, optional, tag="1")]
533        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
534        /// ID of the producer, as per Producer.id.
535        #[prost(int32, optional, tag="2")]
536        pub producer_id: ::core::option::Option<i32>,
537    }
538    #[derive(Clone, PartialEq, ::prost::Message)]
539    pub struct TracingSession {
540        /// The TracingSessionID.
541        #[prost(uint64, optional, tag="1")]
542        pub id: ::core::option::Option<u64>,
543        /// The Unix uid of the consumer that started the session.
544        /// This is meaningful only if the caller is root. In all other cases only
545        /// tracing sessions that match the caller UID will be displayed.
546        #[prost(int32, optional, tag="2")]
547        pub consumer_uid: ::core::option::Option<i32>,
548        /// Internal state of the tracing session.
549        /// These strings are FYI only and subjected to change.
550        #[prost(string, optional, tag="3")]
551        pub state: ::core::option::Option<::prost::alloc::string::String>,
552        /// The unique_session_name as set in the trace config (might be empty).
553        #[prost(string, optional, tag="4")]
554        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
555        /// The number and size of each buffer.
556        #[prost(uint32, repeated, packed="false", tag="5")]
557        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
558        /// Duration, as specified in the TraceConfig.duration_ms.
559        #[prost(uint32, optional, tag="6")]
560        pub duration_ms: ::core::option::Option<u32>,
561        /// Number of data sources involved in the session.
562        #[prost(uint32, optional, tag="7")]
563        pub num_data_sources: ::core::option::Option<u32>,
564        /// Time when the session was started, in the CLOCK_REALTIME domain.
565        /// Available only on Linux-based systems.
566        #[prost(int64, optional, tag="8")]
567        pub start_realtime_ns: ::core::option::Option<i64>,
568        // The fields below have been introduced in v42.
569
570        /// The bugreport_score, as set in TraceConfig.bugreport_score.
571        #[prost(int32, optional, tag="9")]
572        pub bugreport_score: ::core::option::Option<i32>,
573        /// As per TraceConfig.bugreport_filename.
574        #[prost(string, optional, tag="10")]
575        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
576        /// If true, the session is in the STARTED state. If false the session is in
577        /// any other state (see `state` field).
578        #[prost(bool, optional, tag="11")]
579        pub is_started: ::core::option::Option<bool>,
580    }
581}
582// End of protos/perfetto/common/semantic_type.proto
583
584// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
585
586/// Data source that lists game modes and game interventions of games
587/// on an Android device.
588#[derive(Clone, PartialEq, ::prost::Message)]
589pub struct AndroidGameInterventionListConfig {
590    /// If not empty, emit info about only the following list of package names
591    /// (exact match, no regex). Otherwise, emit info about all packages.
592    #[prost(string, repeated, tag="1")]
593    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
594}
595// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
596
597// Begin of protos/perfetto/config/android/android_input_event_config.proto
598
599/// Custom configuration for the "android.input.inputevent" data source.
600///
601/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
602///
603/// Next ID: 5
604#[derive(Clone, PartialEq, ::prost::Message)]
605pub struct AndroidInputEventConfig {
606    /// The tracing mode to use. If unspecified, it will default to
607    /// TRACE_MODE_USE_RULES.
608    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
609    pub mode: ::core::option::Option<i32>,
610    /// The list of rules to use to determine the trace level of events.
611    /// Each event will be traced using the TraceLevel of the first rule that it
612    /// triggers from this list. The rules are evaluated in the order in which they
613    /// are specified. If an event does not match any of the rules,
614    /// TRACE_LEVEL_NONE will be used by default.
615    #[prost(message, repeated, tag="2")]
616    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
617    // --- Control flags ---
618
619    /// Trace input events processed by the system as they are being dispatched
620    /// to application windows. All trace rules will apply.
621    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
622    ///    it will
623    ///      trace InputDispatcher's inbound events (which does not include events
624    ///      synthesized within InputDispatcher) that match the rules.
625    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
626    ///    events
627    ///      matching the rules, including all events synthesized within
628    ///      InputDispatcher, will be traced.
629    #[prost(bool, optional, tag="3")]
630    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
631    /// Trace details about which windows the system is sending each input event
632    /// to. All trace rules will apply.
633    #[prost(bool, optional, tag="4")]
634    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
635}
636/// Nested message and enum types in `AndroidInputEventConfig`.
637pub mod android_input_event_config {
638    /// A rule that specifies the TraceLevel for an event based on matching
639    /// conditions. All matchers in the rule are optional. To trigger this rule, an
640    /// event must match all of its specified matchers (i.e. the matchers function
641    /// like a series of conditions connected by a logical 'AND' operator). A rule
642    /// with no specified matchers will match all events. Next ID: 6
643    #[derive(Clone, PartialEq, ::prost::Message)]
644    pub struct TraceRule {
645        /// The trace level to be used for events that trigger this rule.
646        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
647        #[prost(enumeration="TraceLevel", optional, tag="1")]
648        pub trace_level: ::core::option::Option<i32>,
649        // --- Optional Matchers ---
650
651        /// Package matchers
652        ///
653        /// Respectively matches if all or any of the target apps for this event are
654        /// contained in the specified list of package names.
655        ///
656        /// Intended usage:
657        ///    - Use match_all_packages to selectively allow tracing for the listed
658        ///    packages.
659        ///    - Use match_any_packages to selectively deny tracing for certain
660        ///    packages.
661        ///
662        /// WARNING: Great care must be taken when designing rules for field tracing!
663        ///           This is because each event is almost always sent to more than
664        ///           one app.
665        ///               For example, when allowing tracing for a package that has a
666        ///               spy window
667        ///           over the display (e.g. SystemUI) using match_any_packages,
668        ///           essentially all input will be recorded on that display. This is
669        ///           because the events will be sent to the spy as well as the
670        ///           foreground app, and regardless of what the foreground app is,
671        ///           the event will end up being traced.
672        ///               Alternatively, when attempting to block tracing for specific
673        ///               packages using
674        ///           match_all_packages, no events will likely be blocked. This is
675        ///           because the event will also be sent to other apps (such as, but
676        ///           not limited to, ones with spy windows), so the matcher will not
677        ///           match unless all other targets are also listed under the
678        ///           match_all_packages list.
679        #[prost(string, repeated, tag="2")]
680        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
681        #[prost(string, repeated, tag="3")]
682        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
683        /// Matches if the event is secure, which means that at least one of the
684        /// targets of this event is using the window flag FLAG_SECURE.
685        #[prost(bool, optional, tag="4")]
686        pub match_secure: ::core::option::Option<bool>,
687        /// Matches if there was an active IME connection while this event was being
688        /// processed.
689        #[prost(bool, optional, tag="5")]
690        pub match_ime_connection_active: ::core::option::Option<bool>,
691    }
692    /// Trace modes are tracing presets that are included in the system.
693    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
694    #[repr(i32)]
695    pub enum TraceMode {
696        /// Preset mode for maximal tracing.
697        /// WARNING: This will bypass all privacy measures on debuggable builds, and
698        /// will record all
699        ///           input events processed by the system, regardless of the context
700        ///           in which they were processed. It should only be used for tracing
701        ///           on a local device or for tests. It should NEVER be used for
702        ///           field tracing.
703        TraceAll = 0,
704        /// Use the tracing rules defined in this config to specify what events to
705        /// trace.
706        UseRules = 1,
707    }
708    impl TraceMode {
709        /// String value of the enum field names used in the ProtoBuf definition.
710        ///
711        /// The values are not transformed in any way and thus are considered stable
712        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
713        pub fn as_str_name(&self) -> &'static str {
714            match self {
715                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
716                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
717            }
718        }
719    }
720    /// The level of tracing that should be applied to an event.
721    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
722    #[repr(i32)]
723    pub enum TraceLevel {
724        /// Do not trace the input event.
725        None = 0,
726        /// Trace the event as a redacted event, where certain sensitive fields are
727        /// omitted from the trace, including the coordinates of pointer events and
728        /// the key/scan codes of key events.
729        Redacted = 1,
730        /// Trace the complete event.
731        Complete = 2,
732    }
733    impl TraceLevel {
734        /// String value of the enum field names used in the ProtoBuf definition.
735        ///
736        /// The values are not transformed in any way and thus are considered stable
737        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
738        pub fn as_str_name(&self) -> &'static str {
739            match self {
740                TraceLevel::None => "TRACE_LEVEL_NONE",
741                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
742                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
743            }
744        }
745    }
746}
747// End of protos/perfetto/common/android_log_constants.proto
748
749// Begin of protos/perfetto/config/android/android_log_config.proto
750
751#[derive(Clone, PartialEq, ::prost::Message)]
752pub struct AndroidLogConfig {
753    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
754    pub log_ids: ::prost::alloc::vec::Vec<i32>,
755    /// If set ignores all log messages whose prio is < the given value.
756    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
757    pub min_prio: ::core::option::Option<i32>,
758    /// If non-empty ignores all log messages whose tag doesn't match one of the
759    /// specified values.
760    #[prost(string, repeated, tag="4")]
761    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
762    /// If true, includes the contents of the logcat buffers that were already
763    /// present before the data source started. By default (false), only new
764    /// log entries produced after the data source starts are recorded.
765    /// Can be useful for boot traces or situations where logs from before
766    /// traced started are important.
767    #[prost(bool, optional, tag="5")]
768    pub preserve_log_buffer: ::core::option::Option<bool>,
769}
770// End of protos/perfetto/config/android/android_log_config.proto
771
772// Begin of protos/perfetto/config/android/android_polled_state_config.proto
773
774/// Data source that polls for display state. This should only be used for
775/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
776#[derive(Clone, PartialEq, ::prost::Message)]
777pub struct AndroidPolledStateConfig {
778    /// Frequency of polling. If absent the state will be recorded once, at the
779    /// start of the trace.
780    /// This is required to be > 100ms to avoid excessive CPU usage.
781    #[prost(uint32, optional, tag="1")]
782    pub poll_ms: ::core::option::Option<u32>,
783}
784// End of protos/perfetto/config/android/android_polled_state_config.proto
785
786// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
787
788/// Data source that controls the system properties used to guard initialization
789/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
790/// processes like SurfaceFlinger.
791///
792/// This data source only tells Skia to initialized the Perfetto SDK and start
793/// routing data to the Track Event system instead of ATrace. For those events
794/// to actually show up in a trace, the track_event data source must be used as
795/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
796/// processes may need to be restarted for Skia to revert to using ATrace if
797/// Track Events are no longer desired.
798///
799/// In addition to switching Skia to use Perfetto's track_event data source,
800/// this "guard" also controls Skia's "broad tracing", which removes Skia's
801/// internal tracing constraints and allows the track_event config to specify
802/// which categories should be traced. Filtering to the "skia.always" category
803/// *tag* in a track_event config can be used to re-enable the standard
804/// constraints typically used with ATrace.
805///
806/// Data source name: android.sdk_sysprop_guard
807/// Introduced in Android 14 (U) QPR1.
808/// Next id: 4
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct AndroidSdkSyspropGuardConfig {
811    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
812    /// integration with the track_event data source in RenderEngine.
813    /// If false or omitted, the simpler ATrace fallback is used.
814    ///
815    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
816    /// restarted.
817    ///
818    /// Specifically this sets the following system properties:
819    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
820    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
821    ///
822    /// Does not affect actual track_event data *collection*, which must be
823    /// configured separately.
824    #[prost(bool, optional, tag="1")]
825    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
826    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
827    /// with the track_event data source. hwui_package_name_filter
828    /// can be used to control which apps are affected.
829    /// If false or omitted, the simpler ATrace fallback is used.
830    ///
831    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
832    /// restarted.
833    ///
834    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
835    /// If filtering is NOT set, this controls these GLOBAL system properties:
836    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
837    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
838    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
839    /// for each package listed in the filter:
840    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
841    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
842    ///
843    /// Does not affect actual track_event data *collection*, which must be
844    /// configured separately.
845    #[prost(bool, optional, tag="2")]
846    pub hwui_skia_track_events: ::core::option::Option<bool>,
847    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
848    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
849    #[prost(string, repeated, tag="3")]
850    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
851}
852// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
853
854// Begin of protos/perfetto/config/android/android_system_property_config.proto
855
856/// Data source that polls for system properties.
857#[derive(Clone, PartialEq, ::prost::Message)]
858pub struct AndroidSystemPropertyConfig {
859    /// Frequency of polling. If absent the state will be recorded once, at the
860    /// start of the trace.
861    /// This is required to be > 100ms to avoid excessive CPU usage.
862    #[prost(uint32, optional, tag="1")]
863    pub poll_ms: ::core::option::Option<u32>,
864    /// Properties to poll. All property names must start with "debug.tracing.".
865    #[prost(string, repeated, tag="2")]
866    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
867}
868// End of protos/perfetto/config/android/android_system_property_config.proto
869
870// Begin of protos/perfetto/config/android/app_wakelock_config.proto
871
872/// Configuration for the android.app_wakelocks data source.
873#[derive(Clone, PartialEq, ::prost::Message)]
874pub struct AppWakelocksConfig {
875    /// Specifies the delay (in milliseconds) after which the data source will
876    /// attempt to write events. Writing less frequently reduces the trace size by
877    /// making better use of the packed arrays and reducing the total number of
878    /// TracePackets needed (which each have dozens of bytes of overhead). The
879    /// suggested delay is 5000ms.
880    #[prost(int32, optional, tag="1")]
881    pub write_delay_ms: ::core::option::Option<i32>,
882    /// When set, wakelocks held for less than this amount of time are filtered
883    /// from the resulting trace. Note: duration is computed by matching wakelocks
884    /// with identical attributes, not by tracking the underlying objects. The
885    /// threshold should be < the trace's flush_period_ms.
886    #[prost(int32, optional, tag="2")]
887    pub filter_duration_below_ms: ::core::option::Option<i32>,
888    /// When true, the owner_pid is dropped from the resulting output, reducing the
889    /// size of the interning tables.
890    #[prost(bool, optional, tag="3")]
891    pub drop_owner_pid: ::core::option::Option<bool>,
892}
893// End of protos/perfetto/config/android/app_wakelock_config.proto
894
895// Begin of protos/perfetto/config/android/cpu_per_uid_config.proto
896
897/// Data source that records CPU per UID data.
898#[derive(Clone, PartialEq, ::prost::Message)]
899pub struct CpuPerUidConfig {
900    /// Record at this frequency.
901    #[prost(uint32, optional, tag="1")]
902    pub poll_ms: ::core::option::Option<u32>,
903}
904// End of protos/perfetto/config/android/cpu_per_uid_config.proto
905
906// Begin of protos/perfetto/config/android/inputmethod_config.proto
907
908/// Custom configuration for the "android.inputmethod" data source.
909#[derive(Clone, PartialEq, ::prost::Message)]
910pub struct InputMethodConfig {
911    /// If true, enables tracing in the clients.
912    #[prost(bool, optional, tag="1")]
913    pub client: ::core::option::Option<bool>,
914    /// If true, enables tracing in InputMethodService.
915    #[prost(bool, optional, tag="2")]
916    pub service: ::core::option::Option<bool>,
917    /// If true, enables tracing in InputMethodManagerService.
918    #[prost(bool, optional, tag="3")]
919    pub manager_service: ::core::option::Option<bool>,
920}
921// End of protos/perfetto/config/android/inputmethod_config.proto
922
923// Begin of protos/perfetto/config/android/kernel_wakelocks_config.proto
924
925/// Data source that records kernel (and native) wakelock data.
926#[derive(Clone, PartialEq, ::prost::Message)]
927pub struct KernelWakelocksConfig {
928    /// Record at this frequency.
929    #[prost(uint32, optional, tag="1")]
930    pub poll_ms: ::core::option::Option<u32>,
931}
932// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
933
934// Begin of protos/perfetto/config/android/network_trace_config.proto
935
936/// Network tracing data source that records details on all packets sent or
937/// received by the network.
938#[derive(Clone, PartialEq, ::prost::Message)]
939pub struct NetworkPacketTraceConfig {
940    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
941    /// ring buffer. The polling interval should be such that the ring buffer is
942    /// unlikely to fill in that interval (or that filling is an acceptable risk).
943    /// The minimum polling rate is 100ms (values below this are ignored).
944    /// Introduced in Android 14 (U).
945    #[prost(uint32, optional, tag="1")]
946    pub poll_ms: ::core::option::Option<u32>,
947    /// The aggregation_threshold is the number of packets at which an event will
948    /// switch from per-packet details to aggregate details. For example, a value
949    /// of 50 means that if a particular event (grouped by the unique combinations
950    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
951    /// packets, the exact timestamp and length are recorded for each packet. If
952    /// there were 50 or more packets in an event, it would only record the total
953    /// duration, packets, and length. A value of zero or unspecified will always
954    /// / record per-packet details. A value of 1 always records aggregate details.
955    #[prost(uint32, optional, tag="2")]
956    pub aggregation_threshold: ::core::option::Option<u32>,
957    /// Specifies the maximum number of packet contexts to intern at a time. This
958    /// prevents the interning table from growing too large and controls whether
959    /// interning is enabled or disabled (a value of zero disables interning and
960    /// is the default). When a data sources interning table reaches this amount,
961    /// packet contexts will be inlined into NetworkPacketEvents.
962    #[prost(uint32, optional, tag="3")]
963    pub intern_limit: ::core::option::Option<u32>,
964    /// The following fields specify whether certain fields should be dropped from
965    /// the output. Dropping fields improves normalization results, reduces the
966    /// size of the interning table, and slightly reduces event size.
967    #[prost(bool, optional, tag="4")]
968    pub drop_local_port: ::core::option::Option<bool>,
969    #[prost(bool, optional, tag="5")]
970    pub drop_remote_port: ::core::option::Option<bool>,
971    #[prost(bool, optional, tag="6")]
972    pub drop_tcp_flags: ::core::option::Option<bool>,
973}
974// End of protos/perfetto/config/android/network_trace_config.proto
975
976// Begin of protos/perfetto/config/android/packages_list_config.proto
977
978/// Data source that lists details (such as version code) about packages on an
979/// Android device.
980#[derive(Clone, PartialEq, ::prost::Message)]
981pub struct PackagesListConfig {
982    /// If not empty, emit info about only the following list of package names
983    /// (exact match, no regex). Otherwise, emit info about all packages.
984    #[prost(string, repeated, tag="1")]
985    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
986    /// If present and non-zero, the data source will periodically poll for CPU
987    /// use by packages and only emit results for those that it sees. If absent,
988    /// the data source will emit results for all packages at startup. The package
989    /// name filter applies either way.
990    #[prost(uint32, optional, tag="2")]
991    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
992}
993// End of protos/perfetto/config/android/packages_list_config.proto
994
995// Begin of protos/perfetto/config/android/pixel_modem_config.proto
996
997/// Data source that records events from the modem.
998#[derive(Clone, PartialEq, ::prost::Message)]
999pub struct PixelModemConfig {
1000    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
1001    pub event_group: ::core::option::Option<i32>,
1002    /// If set, record only events with these hashes.
1003    #[prost(int64, repeated, packed="false", tag="2")]
1004    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1005    /// If set and allow_list is not set, deny events with these hashes.
1006    #[prost(int64, repeated, packed="false", tag="3")]
1007    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1008}
1009/// Nested message and enum types in `PixelModemConfig`.
1010pub mod pixel_modem_config {
1011    /// Event group to record, as defined by the modem.
1012    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1013    #[repr(i32)]
1014    pub enum EventGroup {
1015        Unknown = 0,
1016        /// Events suitable for low bandwidth tracing only.
1017        LowBandwidth = 1,
1018        /// Events suitable for high and low bandwidth tracing.
1019        HighAndLowBandwidth = 2,
1020    }
1021    impl EventGroup {
1022        /// String value of the enum field names used in the ProtoBuf definition.
1023        ///
1024        /// The values are not transformed in any way and thus are considered stable
1025        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1026        pub fn as_str_name(&self) -> &'static str {
1027            match self {
1028                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
1029                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1030                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1031            }
1032        }
1033    }
1034}
1035// Begin of protos/perfetto/config/android/protolog_config.proto
1036
1037/// Custom configuration for the "android.protolog" data source.
1038/// ProtoLog is a logging mechanism that is intented to be more efficient than
1039/// logcat. This configures what logs to capture in the tracing instance.
1040#[derive(Clone, PartialEq, ::prost::Message)]
1041pub struct ProtoLogConfig {
1042    /// Specified the configurations for each of the logging groups. If none is
1043    /// specified for a group the defaults will be used.
1044    #[prost(message, repeated, tag="1")]
1045    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1046    /// Specified what tracing mode to use for the tracing instance.
1047    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
1048    pub tracing_mode: ::core::option::Option<i32>,
1049    /// If set, any message with log level higher than this level (inclusive) will
1050    /// be traced. Group overrides take precedence over this value.
1051    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
1052    pub default_log_from_level: ::core::option::Option<i32>,
1053}
1054/// Nested message and enum types in `ProtoLogConfig`.
1055pub mod proto_log_config {
1056    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1057    #[repr(i32)]
1058    pub enum TracingMode {
1059        /// When using the DEFAULT tracing mode, only log groups and levels specified
1060        /// in the group_overrides are traced.
1061        Default = 0,
1062        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1063        /// traced, unless specified in the group_overrides.
1064        EnableAll = 1,
1065    }
1066    impl TracingMode {
1067        /// String value of the enum field names used in the ProtoBuf definition.
1068        ///
1069        /// The values are not transformed in any way and thus are considered stable
1070        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1071        pub fn as_str_name(&self) -> &'static str {
1072            match self {
1073                TracingMode::Default => "DEFAULT",
1074                TracingMode::EnableAll => "ENABLE_ALL",
1075            }
1076        }
1077    }
1078}
1079#[derive(Clone, PartialEq, ::prost::Message)]
1080pub struct ProtoLogGroup {
1081    /// The ProtoLog group name this configuration entry applies to.
1082    #[prost(string, optional, tag="1")]
1083    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1084    /// Specify the level from which to start capturing protologs.
1085    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1086    /// message will be traced.
1087    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1088    pub log_from: ::core::option::Option<i32>,
1089    /// When set to true we will collect the stacktrace for each protolog message
1090    /// in this group that we are tracing.
1091    #[prost(bool, optional, tag="3")]
1092    pub collect_stacktrace: ::core::option::Option<bool>,
1093}
1094// End of protos/perfetto/config/android/protolog_config.proto
1095
1096// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1097
1098/// Custom configuration for the "android.surfaceflinger.layers" data source.
1099#[derive(Clone, PartialEq, ::prost::Message)]
1100pub struct SurfaceFlingerLayersConfig {
1101    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1102    pub mode: ::core::option::Option<i32>,
1103    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1104    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1105}
1106/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1107pub mod surface_flinger_layers_config {
1108    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1109    #[repr(i32)]
1110    pub enum Mode {
1111        Unspecified = 0,
1112        /// Trace layers snapshots. A snapshot is taken every time a layers change
1113        /// occurs.
1114        Active = 1,
1115        /// Generate layers snapshots from the transactions kept in the
1116        /// SurfaceFlinger's internal ring buffer.
1117        /// The layers snapshots generation occurs when this data source is flushed.
1118        Generated = 2,
1119        /// Trace a single layers snapshot.
1120        Dump = 3,
1121        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1122        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1123        /// when a bugreport is taken.
1124        GeneratedBugreportOnly = 4,
1125    }
1126    impl Mode {
1127        /// String value of the enum field names used in the ProtoBuf definition.
1128        ///
1129        /// The values are not transformed in any way and thus are considered stable
1130        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1131        pub fn as_str_name(&self) -> &'static str {
1132            match self {
1133                Mode::Unspecified => "MODE_UNSPECIFIED",
1134                Mode::Active => "MODE_ACTIVE",
1135                Mode::Generated => "MODE_GENERATED",
1136                Mode::Dump => "MODE_DUMP",
1137                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1138            }
1139        }
1140    }
1141    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1142    #[repr(i32)]
1143    pub enum TraceFlag {
1144        Unspecified = 0,
1145        Input = 2,
1146        Composition = 4,
1147        Extra = 8,
1148        Hwc = 16,
1149        Buffers = 32,
1150        VirtualDisplays = 64,
1151        /// INPUT | COMPOSITION | EXTRA
1152        All = 14,
1153    }
1154    impl TraceFlag {
1155        /// String value of the enum field names used in the ProtoBuf definition.
1156        ///
1157        /// The values are not transformed in any way and thus are considered stable
1158        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1159        pub fn as_str_name(&self) -> &'static str {
1160            match self {
1161                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1162                TraceFlag::Input => "TRACE_FLAG_INPUT",
1163                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1164                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1165                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1166                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1167                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1168                TraceFlag::All => "TRACE_FLAG_ALL",
1169            }
1170        }
1171    }
1172}
1173// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1174
1175// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1176
1177/// Custom configuration for the "android.surfaceflinger.transactions" data
1178/// source.
1179#[derive(Clone, PartialEq, ::prost::Message)]
1180pub struct SurfaceFlingerTransactionsConfig {
1181    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1182    pub mode: ::core::option::Option<i32>,
1183}
1184/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1185pub mod surface_flinger_transactions_config {
1186    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1187    #[repr(i32)]
1188    pub enum Mode {
1189        Unspecified = 0,
1190        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1191        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1192        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1193        /// initial state and the latest transactions.
1194        Continuous = 1,
1195        /// SurfaceFlinger writes the initial state and then each incoming
1196        /// transaction until the data source is stopped.
1197        Active = 2,
1198    }
1199    impl Mode {
1200        /// String value of the enum field names used in the ProtoBuf definition.
1201        ///
1202        /// The values are not transformed in any way and thus are considered stable
1203        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1204        pub fn as_str_name(&self) -> &'static str {
1205            match self {
1206                Mode::Unspecified => "MODE_UNSPECIFIED",
1207                Mode::Continuous => "MODE_CONTINUOUS",
1208                Mode::Active => "MODE_ACTIVE",
1209            }
1210        }
1211    }
1212}
1213// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1214
1215// Begin of protos/perfetto/config/android/user_list_config.proto
1216
1217/// Data source that lists details (such as version code) about users on an
1218/// Android device.
1219#[derive(Clone, PartialEq, ::prost::Message)]
1220pub struct AndroidUserListConfig {
1221    /// An allowlist of user type strings, used to control the granularity of
1222    /// user type information emitted in the trace. Exact, case-sensitive string
1223    /// matching is used.
1224    ///
1225    /// Any user type read from the device that is NOT present in the
1226    /// effective allowlist will have its type reported as
1227    /// "android.os.usertype.FILTERED".
1228    ///
1229    /// The effective allowlist is determined as follows:
1230    ///
1231    /// 1. If this 'user_type_filter' field is provided and non-empty:
1232    ///     This list itself is the effective allowlist.
1233    ///     Example TraceConfig:
1234    ///     --------------------
1235    ///     data_sources {
1236    ///         config {
1237    ///             name: "android.user_list"
1238    ///             target_buffer: 0
1239    ///             user_list_config {
1240    ///               # Only report these specific types, others become FILTERED.
1241    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1242    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1243    ///             }
1244    ///         }
1245    ///     }
1246    ///
1247    ///
1248    /// Note: This field does not support regular expressions.
1249    #[prost(string, repeated, tag="1")]
1250    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1251}
1252// End of protos/perfetto/config/android/user_list_config.proto
1253
1254// Begin of protos/perfetto/config/android/windowmanager_config.proto
1255
1256/// Custom configuration for the "android.windowmanager" data source.
1257#[derive(Clone, PartialEq, ::prost::Message)]
1258pub struct WindowManagerConfig {
1259    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1260    pub log_frequency: ::core::option::Option<i32>,
1261    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1262    pub log_level: ::core::option::Option<i32>,
1263}
1264/// Nested message and enum types in `WindowManagerConfig`.
1265pub mod window_manager_config {
1266    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1267    #[repr(i32)]
1268    pub enum LogFrequency {
1269        Unspecified = 0,
1270        /// Trace state snapshots when a frame is committed.
1271        Frame = 1,
1272        /// Trace state snapshots every time a transaction is committed.
1273        Transaction = 2,
1274        /// Trace single state snapshots when the data source is started.
1275        SingleDump = 3,
1276    }
1277    impl LogFrequency {
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                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1285                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1286                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1287                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1288            }
1289        }
1290    }
1291    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1292    #[repr(i32)]
1293    pub enum LogLevel {
1294        Unspecified = 0,
1295        /// Logs all elements with maximum amount of information.
1296        Verbose = 1,
1297        /// Logs all elements but doesn't write all configuration data.
1298        Debug = 2,
1299        /// Logs only visible elements, with the minimum amount of performance
1300        /// overhead
1301        Critical = 3,
1302    }
1303    impl LogLevel {
1304        /// String value of the enum field names used in the ProtoBuf definition.
1305        ///
1306        /// The values are not transformed in any way and thus are considered stable
1307        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1308        pub fn as_str_name(&self) -> &'static str {
1309            match self {
1310                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1311                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1312                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1313                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1314            }
1315        }
1316    }
1317}
1318// End of protos/perfetto/config/android/windowmanager_config.proto
1319
1320// Begin of protos/perfetto/config/chrome/chrome_config.proto
1321
1322#[derive(Clone, PartialEq, ::prost::Message)]
1323pub struct ChromeConfig {
1324    #[prost(string, optional, tag="1")]
1325    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1326    /// When enabled, the data source should only fill in fields in the output that
1327    /// are not potentially privacy sensitive.
1328    #[prost(bool, optional, tag="2")]
1329    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1330    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1331    /// JSON format. Note that the trace data will still be returned as a series of
1332    /// TracePackets, but the embedded data will be JSON instead of serialized
1333    /// protobuf.
1334    #[prost(bool, optional, tag="3")]
1335    pub convert_to_legacy_json: ::core::option::Option<bool>,
1336    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1337    pub client_priority: ::core::option::Option<i32>,
1338    /// Applicable only when using legacy JSON format.
1339    /// If |json_agent_label_filter| is not empty, only data pertaining to
1340    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1341    #[prost(string, optional, tag="5")]
1342    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1343    ///   When enabled, event names should not contain package names.
1344    #[prost(bool, optional, tag="6")]
1345    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1346}
1347/// Nested message and enum types in `ChromeConfig`.
1348pub mod chrome_config {
1349    /// Priority of the tracing session client. A higher priority session may
1350    /// preempt a lower priority one in configurations where concurrent sessions
1351    /// aren't supported.
1352    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1353    #[repr(i32)]
1354    pub enum ClientPriority {
1355        Unknown = 0,
1356        Background = 1,
1357        UserInitiated = 2,
1358    }
1359    impl ClientPriority {
1360        /// String value of the enum field names used in the ProtoBuf definition.
1361        ///
1362        /// The values are not transformed in any way and thus are considered stable
1363        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1364        pub fn as_str_name(&self) -> &'static str {
1365            match self {
1366                ClientPriority::Unknown => "UNKNOWN",
1367                ClientPriority::Background => "BACKGROUND",
1368                ClientPriority::UserInitiated => "USER_INITIATED",
1369            }
1370        }
1371    }
1372}
1373// End of protos/perfetto/config/chrome/chrome_config.proto
1374
1375// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1376
1377#[derive(Clone, PartialEq, ::prost::Message)]
1378pub struct ChromiumHistogramSamplesConfig {
1379    /// List of histograms to record. If no histogram is specified, all histograms
1380    /// are recorded.
1381    #[prost(message, repeated, tag="1")]
1382    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1383    /// Default: false (i.e. histogram names are NOT filtered out by default)
1384    /// When true, histogram_name will be filtered out.
1385    #[prost(bool, optional, tag="2")]
1386    pub filter_histogram_names: ::core::option::Option<bool>,
1387}
1388/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1389pub mod chromium_histogram_samples_config {
1390    /// Records when a value within the specified bounds [min_value, max_value] is
1391    /// emitted into a Chrome histogram.
1392    #[derive(Clone, PartialEq, ::prost::Message)]
1393    pub struct HistogramSample {
1394        #[prost(string, optional, tag="1")]
1395        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1396        #[prost(int64, optional, tag="2")]
1397        pub min_value: ::core::option::Option<i64>,
1398        #[prost(int64, optional, tag="3")]
1399        pub max_value: ::core::option::Option<i64>,
1400    }
1401}
1402// End of protos/perfetto/config/chrome/histogram_samples.proto
1403
1404// Begin of protos/perfetto/config/chrome/system_metrics.proto
1405
1406#[derive(Clone, PartialEq, ::prost::Message)]
1407pub struct ChromiumSystemMetricsConfig {
1408    /// Samples counters every X ms.
1409    #[prost(uint32, optional, tag="1")]
1410    pub sampling_interval_ms: ::core::option::Option<u32>,
1411}
1412// End of protos/perfetto/config/chrome/system_metrics.proto
1413
1414// Begin of protos/perfetto/config/chrome/v8_config.proto
1415
1416#[derive(Clone, PartialEq, ::prost::Message)]
1417pub struct V8Config {
1418    /// Whether to log the actual content of scripts (e.g. content of the JS file
1419    /// that was compiled to generate code).
1420    /// ATTENTION: This could considerably increase the size of the resuling trace
1421    ///             file.
1422    #[prost(bool, optional, tag="1")]
1423    pub log_script_sources: ::core::option::Option<bool>,
1424    /// Whether to log the generated code for jitted functions (machine code or
1425    /// bytecode).
1426    /// ATTENTION: This could considerably increase the size of the resuling trace
1427    ///             file.
1428    #[prost(bool, optional, tag="2")]
1429    pub log_instructions: ::core::option::Option<bool>,
1430}
1431// End of protos/perfetto/config/chrome/v8_config.proto
1432
1433// Begin of protos/perfetto/config/etw/etw_config.proto
1434
1435/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1436/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1437/// ns-evntrace-event_trace_properties
1438#[derive(Clone, PartialEq, ::prost::Message)]
1439pub struct EtwConfig {
1440    /// The kernel_flags determines the flags that will be used by the etw tracing
1441    /// session. These kernel flags have been built to expose the useful events
1442    /// captured from the kernel mode only.
1443    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1444    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1445    // See the list of keywords for for individual providers.
1446    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1447
1448    /// Provides events relating to the scheduler.
1449    #[prost(string, repeated, tag="2")]
1450    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1451    /// Provides events relating to the memory manager.
1452    #[prost(string, repeated, tag="3")]
1453    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1454    /// Provides events relating to file I/O.
1455    #[prost(string, repeated, tag="4")]
1456    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1457}
1458/// Nested message and enum types in `EtwConfig`.
1459pub mod etw_config {
1460    /// The KernelFlag represent list of kernel flags that we are intrested in.
1461    /// To get a more extensive list run 'xperf -providers k'.
1462    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1463    #[repr(i32)]
1464    pub enum KernelFlag {
1465        Cswitch = 0,
1466        Dispatcher = 1,
1467    }
1468    impl KernelFlag {
1469        /// String value of the enum field names used in the ProtoBuf definition.
1470        ///
1471        /// The values are not transformed in any way and thus are considered stable
1472        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1473        pub fn as_str_name(&self) -> &'static str {
1474            match self {
1475                KernelFlag::Cswitch => "CSWITCH",
1476                KernelFlag::Dispatcher => "DISPATCHER",
1477            }
1478        }
1479    }
1480}
1481// End of protos/perfetto/config/etw/etw_config.proto
1482
1483// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1484
1485#[derive(Clone, PartialEq, ::prost::Message)]
1486pub struct FrozenFtraceConfig {
1487    /// The instance name which stores the previous boot ftrace data. Required.
1488    #[prost(string, optional, tag="1")]
1489    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1490}
1491// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1492
1493// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1494
1495/// Next id: 38
1496#[derive(Clone, PartialEq, ::prost::Message)]
1497pub struct FtraceConfig {
1498    /// Ftrace events to record, example: "sched/sched_switch".
1499    #[prost(string, repeated, tag="1")]
1500    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1501    /// Android-specific event categories:
1502    #[prost(string, repeated, tag="2")]
1503    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1504    #[prost(string, repeated, tag="3")]
1505    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1506    /// Some processes can emit data through atrace or through the perfetto SDK via
1507    /// the "track_event" data source. For these categories, the SDK will be
1508    /// preferred, if possible, for this config.
1509    #[prost(string, repeated, tag="28")]
1510    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1511    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1512    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1513    /// events for convenience (and the vendor-specific events on top).
1514    /// Introduced in: perfetto v52.
1515    #[prost(bool, optional, tag="34")]
1516    pub atrace_userspace_only: ::core::option::Option<bool>,
1517    /// Size of each per-cpu kernel ftrace ring buffer.
1518    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1519    /// buffers cannot be resized without pausing recording in the kernel.
1520    #[prost(uint32, optional, tag="10")]
1521    pub buffer_size_kb: ::core::option::Option<u32>,
1522    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1523    /// implementation to choose a bigger buffer size.
1524    ///
1525    /// Most configs for perfetto v43+ should simply leave both fields unset.
1526    ///
1527    /// If you need a config compatible with a range of perfetto builds and you
1528    /// used to set a non-default buffer_size_kb, consider setting both fields.
1529    /// Example:
1530    ///    buffer_size_kb: 4096
1531    ///    buffer_size_lower_bound: true
1532    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1533    /// On v43+, buffers will be at least 4 MB.
1534    /// In both cases, neither is guaranteed if there are other concurrent
1535    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1536    /// the recording in the kernel.
1537    /// Introduced in: perfetto v43.
1538    #[prost(bool, optional, tag="27")]
1539    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1540    /// If set, specifies how often the tracing daemon reads from the kernel ring
1541    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1542    /// Leave unset unless you're fine-tuning a local config.
1543    #[prost(uint32, optional, tag="11")]
1544    pub drain_period_ms: ::core::option::Option<u32>,
1545    /// If set, the tracing daemon will read kernel ring buffers as soon as
1546    /// they're filled past this percentage of occupancy. In other words, a value
1547    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1548    /// half-full. Not guaranteed if there are multiple concurrent tracing
1549    /// sessions.
1550    /// Currently does nothing on Linux kernels below v6.9.
1551    /// Introduced in: perfetto v48.
1552    #[prost(uint32, optional, tag="29")]
1553    pub drain_buffer_percent: ::core::option::Option<u32>,
1554    #[prost(message, optional, tag="12")]
1555    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1556    #[prost(message, optional, tag="22")]
1557    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1558    /// Enables symbol name resolution against /proc/kallsyms.
1559    /// It requires that either traced_probes is running as root or that
1560    /// kptr_restrict has been manually lowered.
1561    /// It does not disclose KASLR, symbol addresses are mangled.
1562    #[prost(bool, optional, tag="13")]
1563    pub symbolize_ksyms: ::core::option::Option<bool>,
1564    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1565    pub ksyms_mem_policy: ::core::option::Option<i32>,
1566    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1567    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1568    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1569    /// The historical context for this is the following:
1570    /// - Up to Android S (12), the rss_stat was internally throttled in its
1571    ///    kernel implementation.
1572    /// - A change introduced in the kernels after S has introduced a new
1573    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1574    ///    (hence very spammy).
1575    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1576    ///    need to deal with both cases.
1577    /// For more context: go/rss-stat-throttled.
1578    #[prost(bool, optional, tag="15")]
1579    pub throttle_rss_stat: ::core::option::Option<bool>,
1580    /// If true, use self-describing proto messages when writing events not known
1581    /// at compile time (aka generic events). Each event bundle will have a set of
1582    /// serialised proto descriptors for events within that bundle.
1583    ///
1584    /// Default if unset:
1585    /// * v53+: true
1586    /// * before v53: false
1587    ///
1588    /// Added in: perfetto v50.
1589    #[prost(bool, optional, tag="32")]
1590    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1591    /// If true, avoid enabling events that aren't statically known by
1592    /// traced_probes. Otherwise, the default is to emit such events as
1593    /// GenericFtraceEvent protos.
1594    /// Prefer to keep this flag at its default. This was added for Android
1595    /// tracing, where atrace categories and/or atrace HAL requested events can
1596    /// expand to events that aren't of interest to the tracing user.
1597    /// Introduced in: Android T.
1598    #[prost(bool, optional, tag="16")]
1599    pub disable_generic_events: ::core::option::Option<bool>,
1600    /// The subset of syscalls to record. To record all syscalls, leave this unset
1601    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1602    /// * before perfetto v43, requires the config to also enable
1603    ///    raw_syscalls/sys_{enter,exit}.
1604    /// * perfetto v43+ does the right thing if you set only this field.
1605    /// Example: ["sys_read", "sys_open"].
1606    /// Introduced in: Android U.
1607    #[prost(string, repeated, tag="18")]
1608    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1609    /// If true, enable the "function_graph" kernel tracer that emits events
1610    /// whenever a kernel function is entered and exited
1611    /// (funcgraph_entry/funcgraph_exit).
1612    /// Notes on use:
1613    /// * Requires |symbolize_ksyms| for function name resolution.
1614    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1615    ///    set of functions, otherwise the event bandwidth will be too high for
1616    ///    practical use.
1617    /// * The data source might be rejected if there is already a concurrent
1618    ///    ftrace data source that does not use function graph itself, as we do not
1619    ///    support switching kernel tracers mid-trace.
1620    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1621    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1622    ///    "function_graph".
1623    /// Android:
1624    /// * Available only on debuggable builds.
1625    /// * Introduced in: Android U.
1626    #[prost(bool, optional, tag="19")]
1627    pub enable_function_graph: ::core::option::Option<bool>,
1628    /// Constrains the set of functions traced when |enable_function_graph| is
1629    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1630    /// in which case all matching functions will be traced. See kernel
1631    /// documentation on ftrace "set_ftrace_filter" file for more details.
1632    /// Android:
1633    /// * Available only on debuggable builds.
1634    /// * Introduced in: Android U.
1635    #[prost(string, repeated, tag="20")]
1636    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1637    /// If |enable_function_graph| is true, trace this set of functions *and* all
1638    /// of its callees. Supports globs. Can be set together with
1639    /// |function_filters|, in which case only callees matching the filter will be
1640    /// traced. If setting both, you most likely want all roots to also be
1641    /// included in |function_filters|.
1642    /// Android:
1643    /// * Available only on debuggable builds.
1644    /// * Introduced in: Android U.
1645    #[prost(string, repeated, tag="21")]
1646    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1647    /// If |enable_function_graph| is true, only trace the specified
1648    /// number of calls down the stack. Sets the max_graph_depth value
1649    /// in sys/kernel/tracing/
1650    ///
1651    /// Only respected for the first tracing session that enables
1652    /// function_graph tracing.
1653    ///
1654    /// Introduced in: perfetto v51.
1655    /// Supported on: Android 25Q3+.
1656    #[prost(uint32, optional, tag="33")]
1657    pub function_graph_max_depth: ::core::option::Option<u32>,
1658    /// Ftrace events to record, specific for kprobes and kretprobes
1659    #[prost(message, repeated, tag="30")]
1660    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1661    /// If true, does not clear kernel ftrace buffers when starting the trace.
1662    /// This makes sense only if this is the first ftrace data source instance
1663    /// created after the daemon has been started. Can be useful for gathering boot
1664    /// traces, if ftrace has been separately configured (e.g. via kernel
1665    /// commandline).
1666    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1667    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1668    /// anything besides ftrace. Otherwise timestamps might be skewed.
1669    #[prost(bool, optional, tag="23")]
1670    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1671    /// If true, overrides the default timestamp clock and uses a raw hardware
1672    /// based monotonic clock for getting timestamps.
1673    /// * Introduced in: Android U.
1674    #[prost(bool, optional, tag="24")]
1675    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1676    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1677    /// for event recording. Normally, this means
1678    /// `/sys/kernel/tracing/instances/$instance_name`.
1679    ///
1680    /// Names "hyp" and "hypervisor" are reserved.
1681    ///
1682    /// The instance must already exist, the tracing daemon *will not* create it
1683    /// for you as it typically doesn't have such permissions.
1684    /// Only a subset of features is guaranteed to work with non-default instances,
1685    /// at the time of writing:
1686    ///   * ftrace_events
1687    ///   * buffer_size_kb
1688    #[prost(string, optional, tag="25")]
1689    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1690    /// For perfetto developer use. If true and on a debuggable android build,
1691    /// serialise raw tracing pages that the implementation cannot parse.
1692    #[prost(bool, optional, tag="31")]
1693    pub debug_ftrace_abi: ::core::option::Option<bool>,
1694    // =================================================
1695    // Exclusive single-tenant features: HERE BE DRAGONS
1696    // =================================================
1697    // The features below are considered "advanced" and require an exclusive
1698    // tracing session (as of Android 25Q3+ and Perfetto v52).
1699    //
1700    // These features directly manipulate the kernel's global ftrace state and
1701    // are incompatible with concurrent ftrace sessions. They are only enabled
1702    // if included in the *first* ftrace data source configured. Subsequent
1703    // ftrace data sources (even those not using advanced features) will be
1704    // rejected while a session with these features is active.
1705    //
1706    // To run the session in exclusive mode, see:
1707    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1708
1709    /// Filter ftrace events by Thread ID (TID).
1710    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
1711    ///
1712    /// Note: this is an exclusive feature, see:
1713    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1714    ///
1715    /// Introduced in: perfetto v52.
1716    /// Supported on: Android 25Q3+.
1717    #[prost(uint32, repeated, packed="false", tag="35")]
1718    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
1719    #[prost(message, repeated, tag="36")]
1720    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
1721    /// This mask restricts tracing to a specific set of CPUs using a
1722    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
1723    /// 32-bit chunk of the CPU mask.
1724    ///
1725    /// The chunks are ordered from high CPUs to low CPUs (left to right):
1726    ///    - Rightmost chunk: CPUs 0-31
1727    ///    - 2nd chunk from right: CPUs 32-63
1728    ///    - ...and so on.
1729    ///
1730    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
1731    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
1732    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
1733    /// chunk0 to 0-31.
1734    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
1735    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
1736    ///
1737    /// Note: This is an exclusive feature, see:
1738    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1739    ///
1740    /// Introduced in: perfetto v52.
1741    /// Supported on: Android 25Q3+.
1742    #[prost(string, optional, tag="37")]
1743    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
1744    /// No-op in perfetto v28+. Name preserved because of existing references in
1745    /// textproto configs.
1746    #[deprecated]
1747    #[prost(bool, optional, tag="14")]
1748    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1749}
1750/// Nested message and enum types in `FtraceConfig`.
1751pub mod ftrace_config {
1752    /// Configuration for compact encoding of scheduler events. When enabled (and
1753    /// recording the relevant ftrace events), specific high-volume events are
1754    /// encoded in a denser format than normal.
1755    #[derive(Clone, PartialEq, ::prost::Message)]
1756    pub struct CompactSchedConfig {
1757        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1758        /// record those events in the compact format.
1759        ///
1760        /// If the field is unset, the default is:
1761        /// * perfetto v42.0+: enabled
1762        /// * before: disabled
1763        #[prost(bool, optional, tag="1")]
1764        pub enabled: ::core::option::Option<bool>,
1765    }
1766    /// Optional filter for "ftrace/print" events.
1767    ///
1768    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1769    /// are processed in order), its `allow` field will be used as the outcome: if
1770    /// `allow` is true, the event will be included in the trace, otherwise it will
1771    /// be discarded. If an event does not match any rule, it will be allowed by
1772    /// default (a rule with an empty prefix and allow=false, disallows everything
1773    /// by default).
1774    #[derive(Clone, PartialEq, ::prost::Message)]
1775    pub struct PrintFilter {
1776        #[prost(message, repeated, tag="1")]
1777        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1778    }
1779    /// Nested message and enum types in `PrintFilter`.
1780    pub mod print_filter {
1781        #[derive(Clone, PartialEq, ::prost::Message)]
1782        pub struct Rule {
1783            #[prost(bool, optional, tag="2")]
1784            pub allow: ::core::option::Option<bool>,
1785            #[prost(oneof="rule::Match", tags="1, 3")]
1786            pub r#match: ::core::option::Option<rule::Match>,
1787        }
1788        /// Nested message and enum types in `Rule`.
1789        pub mod rule {
1790            /// Matches an atrace message of the form:
1791            /// <type>|pid|<prefix>...
1792            #[derive(Clone, PartialEq, ::prost::Message)]
1793            pub struct AtraceMessage {
1794                #[prost(string, optional, tag="1")]
1795                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1796                #[prost(string, optional, tag="2")]
1797                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1798            }
1799            #[derive(Clone, PartialEq, ::prost::Oneof)]
1800            pub enum Match {
1801                /// This rule matches if `prefix` matches exactly with the beginning of
1802                /// the "ftrace/print" "buf" field.
1803                #[prost(string, tag="1")]
1804                Prefix(::prost::alloc::string::String),
1805                /// This rule matches if the "buf" field contains an atrace-style print
1806                /// message as specified in `atrace_msg`.
1807                #[prost(message, tag="3")]
1808                AtraceMsg(AtraceMessage),
1809            }
1810        }
1811    }
1812    #[derive(Clone, PartialEq, ::prost::Message)]
1813    pub struct KprobeEvent {
1814        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1815        #[prost(string, optional, tag="1")]
1816        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1817        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1818        pub r#type: ::core::option::Option<i32>,
1819    }
1820    /// Nested message and enum types in `KprobeEvent`.
1821    pub mod kprobe_event {
1822        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1823        #[repr(i32)]
1824        pub enum KprobeType {
1825            Unknown = 0,
1826            Kprobe = 1,
1827            Kretprobe = 2,
1828            Both = 3,
1829        }
1830        impl KprobeType {
1831            /// String value of the enum field names used in the ProtoBuf definition.
1832            ///
1833            /// The values are not transformed in any way and thus are considered stable
1834            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1835            pub fn as_str_name(&self) -> &'static str {
1836                match self {
1837                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1838                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1839                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1840                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1841                }
1842            }
1843        }
1844    }
1845    /// Tracefs options to set directly in the tracefs instance. This is a very
1846    /// niche feature since almost all of the options deal with formatting textual
1847    /// output (the /trace file), which perfetto doesn't use.
1848    ///
1849    /// The options with a known use-case:
1850    /// * event-fork: when using `tids_to_trace` above, the kernel will
1851    ///    automatically add newly spawned descendant threads to the set of TIDs.
1852    ///
1853    /// Full list of options is available at
1854    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
1855    ///
1856    /// Note: this is an exclusive feature, see:
1857    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1858    ///
1859    /// Introduced in: perfetto v52.
1860    /// Supported on: Android 25Q3+.
1861    #[derive(Clone, PartialEq, ::prost::Message)]
1862    pub struct TracefsOption {
1863        /// The name of the tracefs option as found in tracefs/trace_options (without
1864        /// the "no" prefix).
1865        #[prost(string, optional, tag="1")]
1866        pub name: ::core::option::Option<::prost::alloc::string::String>,
1867        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
1868        pub state: ::core::option::Option<i32>,
1869    }
1870    /// Nested message and enum types in `TracefsOption`.
1871    pub mod tracefs_option {
1872        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1873        #[repr(i32)]
1874        pub enum State {
1875            Unknown = 0,
1876            Enabled = 1,
1877            Disabled = 2,
1878        }
1879        impl State {
1880            /// String value of the enum field names used in the ProtoBuf definition.
1881            ///
1882            /// The values are not transformed in any way and thus are considered stable
1883            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1884            pub fn as_str_name(&self) -> &'static str {
1885                match self {
1886                    State::Unknown => "STATE_UNKNOWN",
1887                    State::Enabled => "STATE_ENABLED",
1888                    State::Disabled => "STATE_DISABLED",
1889                }
1890            }
1891        }
1892    }
1893    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1894    /// should keep the symbol map in memory (and reuse it for future tracing
1895    /// sessions) or clear it (saving memory) and re-create it on each tracing
1896    /// session (wasting cpu and wall time).
1897    /// The tradeoff is roughly:
1898    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1899    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1900    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1901    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1902    #[repr(i32)]
1903    pub enum KsymsMemPolicy {
1904        KsymsUnspecified = 0,
1905        KsymsCleanupOnStop = 1,
1906        KsymsRetain = 2,
1907    }
1908    impl KsymsMemPolicy {
1909        /// String value of the enum field names used in the ProtoBuf definition.
1910        ///
1911        /// The values are not transformed in any way and thus are considered stable
1912        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1913        pub fn as_str_name(&self) -> &'static str {
1914            match self {
1915                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1916                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1917                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1918            }
1919        }
1920    }
1921}
1922// End of protos/perfetto/config/ftrace/ftrace_config.proto
1923
1924// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1925
1926#[derive(Clone, PartialEq, ::prost::Message)]
1927pub struct GpuCounterConfig {
1928    /// Desired sampling interval for counters.
1929    #[prost(uint64, optional, tag="1")]
1930    pub counter_period_ns: ::core::option::Option<u64>,
1931    /// List of counters to be sampled. Counter IDs correspond to the ones
1932    /// described in GpuCounterSpec in the data source descriptor.
1933    #[prost(uint32, repeated, packed="false", tag="2")]
1934    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1935    /// Sample counters by instrumenting command buffers.
1936    #[prost(bool, optional, tag="3")]
1937    pub instrumented_sampling: ::core::option::Option<bool>,
1938    /// Fix gpu clock rate during trace session.
1939    #[prost(bool, optional, tag="4")]
1940    pub fix_gpu_clock: ::core::option::Option<bool>,
1941}
1942// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1943
1944// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1945
1946#[derive(Clone, PartialEq, ::prost::Message)]
1947pub struct GpuRenderStagesConfig {
1948    /// Enable to separate the color and depth/stencil load and store stages
1949    /// into a separate stages. If disabled, the depth/stencil load and store
1950    /// stages will be combined.  Disabled by default. This option has no effect if
1951    /// Low Overhead mode is enabled.
1952    #[prost(bool, optional, tag="1")]
1953    pub full_loadstore: ::core::option::Option<bool>,
1954    /// Use the low overhead mode for traces. In this mode render stages are
1955    /// combined into a single workload stage. This provides less granular data but
1956    /// induces minimal GPU overhead. Disabled by default.
1957    #[prost(bool, optional, tag="2")]
1958    pub low_overhead: ::core::option::Option<bool>,
1959    /// Trace metrics to capture for each render stage
1960    #[prost(string, repeated, tag="3")]
1961    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1962}
1963// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1964
1965// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
1966
1967#[derive(Clone, PartialEq, ::prost::Message)]
1968pub struct VulkanMemoryConfig {
1969    /// Tracking driver memory usage events
1970    #[prost(bool, optional, tag="1")]
1971    pub track_driver_memory_usage: ::core::option::Option<bool>,
1972    /// Tracking device memory usage events
1973    #[prost(bool, optional, tag="2")]
1974    pub track_device_memory_usage: ::core::option::Option<bool>,
1975}
1976// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
1977
1978// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
1979
1980/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
1981/// systems.
1982#[derive(Clone, PartialEq, ::prost::Message)]
1983pub struct InodeFileConfig {
1984    /// How long to pause between batches.
1985    #[prost(uint32, optional, tag="1")]
1986    pub scan_interval_ms: ::core::option::Option<u32>,
1987    /// How long to wait before the first scan in order to accumulate inodes.
1988    #[prost(uint32, optional, tag="2")]
1989    pub scan_delay_ms: ::core::option::Option<u32>,
1990    /// How many inodes to scan in one batch.
1991    #[prost(uint32, optional, tag="3")]
1992    pub scan_batch_size: ::core::option::Option<u32>,
1993    /// Do not scan for inodes not found in the static map.
1994    #[prost(bool, optional, tag="4")]
1995    pub do_not_scan: ::core::option::Option<bool>,
1996    /// If non-empty, only scan inodes corresponding to block devices named in
1997    /// this list.
1998    #[prost(string, repeated, tag="5")]
1999    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2000    /// When encountering an inode belonging to a block device corresponding
2001    /// to one of the mount points in this map, scan its scan_roots instead.
2002    #[prost(message, repeated, tag="6")]
2003    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
2004}
2005/// Nested message and enum types in `InodeFileConfig`.
2006pub mod inode_file_config {
2007    #[derive(Clone, PartialEq, ::prost::Message)]
2008    pub struct MountPointMappingEntry {
2009        #[prost(string, optional, tag="1")]
2010        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2011        #[prost(string, repeated, tag="2")]
2012        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2013    }
2014}
2015// End of protos/perfetto/config/inode_file/inode_file_config.proto
2016
2017// Begin of protos/perfetto/config/interceptors/console_config.proto
2018
2019#[derive(Clone, PartialEq, ::prost::Message)]
2020pub struct ConsoleConfig {
2021    #[prost(enumeration="console_config::Output", optional, tag="1")]
2022    pub output: ::core::option::Option<i32>,
2023    #[prost(bool, optional, tag="2")]
2024    pub enable_colors: ::core::option::Option<bool>,
2025}
2026/// Nested message and enum types in `ConsoleConfig`.
2027pub mod console_config {
2028    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2029    #[repr(i32)]
2030    pub enum Output {
2031        Unspecified = 0,
2032        Stdout = 1,
2033        Stderr = 2,
2034    }
2035    impl Output {
2036        /// String value of the enum field names used in the ProtoBuf definition.
2037        ///
2038        /// The values are not transformed in any way and thus are considered stable
2039        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2040        pub fn as_str_name(&self) -> &'static str {
2041            match self {
2042                Output::Unspecified => "OUTPUT_UNSPECIFIED",
2043                Output::Stdout => "OUTPUT_STDOUT",
2044                Output::Stderr => "OUTPUT_STDERR",
2045            }
2046        }
2047    }
2048}
2049// End of protos/perfetto/config/interceptors/console_config.proto
2050
2051// Begin of protos/perfetto/config/interceptor_config.proto
2052
2053/// Configuration for trace packet interception. Used for diverting trace data to
2054/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2055/// Perfetto SDK.
2056#[derive(Clone, PartialEq, ::prost::Message)]
2057pub struct InterceptorConfig {
2058    /// Matches the name given to RegisterInterceptor().
2059    #[prost(string, optional, tag="1")]
2060    pub name: ::core::option::Option<::prost::alloc::string::String>,
2061    #[prost(message, optional, tag="100")]
2062    pub console_config: ::core::option::Option<ConsoleConfig>,
2063}
2064// End of protos/perfetto/config/interceptor_config.proto
2065
2066// Begin of protos/perfetto/config/power/android_power_config.proto
2067
2068#[derive(Clone, PartialEq, ::prost::Message)]
2069pub struct AndroidPowerConfig {
2070    #[prost(uint32, optional, tag="1")]
2071    pub battery_poll_ms: ::core::option::Option<u32>,
2072    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
2073    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2074    /// Where available enables per-power-rail measurements.
2075    #[prost(bool, optional, tag="3")]
2076    pub collect_power_rails: ::core::option::Option<bool>,
2077    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2078    /// Available from Android S.
2079    #[prost(bool, optional, tag="4")]
2080    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2081    /// Provides a breakdown of time in state for various subsystems.
2082    /// Available from Android U.
2083    #[prost(bool, optional, tag="5")]
2084    pub collect_entity_state_residency: ::core::option::Option<bool>,
2085}
2086/// Nested message and enum types in `AndroidPowerConfig`.
2087pub mod android_power_config {
2088    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2089    #[repr(i32)]
2090    pub enum BatteryCounters {
2091        BatteryCounterUnspecified = 0,
2092        /// Coulomb counter.
2093        BatteryCounterCharge = 1,
2094        /// Charge (%).
2095        BatteryCounterCapacityPercent = 2,
2096        /// Instantaneous current.
2097        BatteryCounterCurrent = 3,
2098        /// Avg current.
2099        BatteryCounterCurrentAvg = 4,
2100        /// Instantaneous voltage.
2101        BatteryCounterVoltage = 5,
2102    }
2103    impl BatteryCounters {
2104        /// String value of the enum field names used in the ProtoBuf definition.
2105        ///
2106        /// The values are not transformed in any way and thus are considered stable
2107        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2108        pub fn as_str_name(&self) -> &'static str {
2109            match self {
2110                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2111                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2112                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2113                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2114                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2115                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2116            }
2117        }
2118    }
2119}
2120// End of protos/perfetto/config/power/android_power_config.proto
2121
2122// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
2123
2124/// Configuration that allows to boost the priority of the 'traced' or
2125/// 'traced_probs' processes, by changing the scheduler configuration.
2126/// Only supported on Linux and Android the boosted process must have
2127/// 'CAP_SYS_NICE' capability.
2128#[derive(Clone, PartialEq, ::prost::Message)]
2129pub struct PriorityBoostConfig {
2130    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
2131    pub policy: ::core::option::Option<i32>,
2132    #[prost(uint32, optional, tag="2")]
2133    pub priority: ::core::option::Option<u32>,
2134}
2135/// Nested message and enum types in `PriorityBoostConfig`.
2136pub mod priority_boost_config {
2137    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2138    #[repr(i32)]
2139    pub enum BoostPolicy {
2140        PolicyUnspecified = 0,
2141        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
2142        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2143        /// than default 0, 20 is the highest priority.
2144        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2145        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2146        PolicySchedOther = 1,
2147        /// The Real-time policy, Priority range: [1; 99]
2148        PolicySchedFifo = 2,
2149    }
2150    impl BoostPolicy {
2151        /// String value of the enum field names used in the ProtoBuf definition.
2152        ///
2153        /// The values are not transformed in any way and thus are considered stable
2154        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2155        pub fn as_str_name(&self) -> &'static str {
2156            match self {
2157                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
2158                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
2159                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
2160            }
2161        }
2162    }
2163}
2164// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
2165
2166/// Config for polling process-related information from /proc/pid/status and
2167/// related files on Linux.
2168///
2169/// Data source name: "linux.process_stats".
2170#[derive(Clone, PartialEq, ::prost::Message)]
2171pub struct ProcessStatsConfig {
2172    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
2173    pub quirks: ::prost::alloc::vec::Vec<i32>,
2174    /// If enabled all processes will be scanned and dumped when the trace starts.
2175    #[prost(bool, optional, tag="2")]
2176    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2177    /// If enabled thread names are also recoded (this is redundant if sched_switch
2178    /// is enabled).
2179    #[prost(bool, optional, tag="3")]
2180    pub record_thread_names: ::core::option::Option<bool>,
2181    /// If > 0 samples counters (see process_stats.proto) from
2182    /// /proc/pid/status and oom_score_adj every X ms.
2183    /// This is required to be > 100ms to avoid excessive CPU usage.
2184    #[prost(uint32, optional, tag="4")]
2185    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2186    // id 5 never used
2187
2188    /// Explicit caching period during which the polling won't re-emit identical
2189    /// counter values. This is required to be either = 0 or a multiple of
2190    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2191    /// rounded down to the nearest multiple.
2192    #[prost(uint32, optional, tag="6")]
2193    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2194    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2195    /// /proc/pid/smaps_rollup.
2196    ///
2197    /// Android: does NOT work with the system daemons by default, as it requires
2198    /// running the recording process (traced_probes or tracebox) as root. It is
2199    /// possible to avoid the root requirement, but the exact steps depend on the
2200    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2201    /// check, and might be further covered by the procfs "hidepid" mount option.
2202    #[prost(bool, optional, tag="10")]
2203    pub scan_smaps_rollup: ::core::option::Option<bool>,
2204    /// If true: process descriptions will include process age (starttime in
2205    /// /proc/pid/stat).
2206    /// Introduced in: perfetto v44.
2207    #[prost(bool, optional, tag="11")]
2208    pub record_process_age: ::core::option::Option<bool>,
2209    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2210    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2211    /// Introduced in: perfetto v44.
2212    #[prost(bool, optional, tag="12")]
2213    pub record_process_runtime: ::core::option::Option<bool>,
2214    /// If true obtain per-process dmabuf resident set size from
2215    /// /proc/pid/dmabuf_rss.
2216    /// This feature is not in upstream linux, and is available only on some
2217    /// Android kernels.
2218    #[prost(bool, optional, tag="13")]
2219    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
2220    /// WARNING: unmaintained and deprecated. If true this will resolve file
2221    /// descriptors for each process so these can be mapped to their actual device
2222    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
2223    /// or new fds opened after initially scanning a process will not be
2224    /// recognized.
2225    #[prost(bool, optional, tag="9")]
2226    pub resolve_process_fds: ::core::option::Option<bool>,
2227}
2228/// Nested message and enum types in `ProcessStatsConfig`.
2229pub mod process_stats_config {
2230    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2231    #[repr(i32)]
2232    pub enum Quirks {
2233        Unspecified = 0,
2234        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
2235        /// startup is now disabled by default and can be re-enabled using the
2236        /// |scan_all_processes_on_start| arg.
2237        DisableInitialDump = 1,
2238        /// If set, disables the special interaction with "linux.ftrace" data source,
2239        /// where the process stats rescrapes any thread id seen in the ftrace
2240        /// stream.
2241        DisableOnDemand = 2,
2242    }
2243    impl Quirks {
2244        /// String value of the enum field names used in the ProtoBuf definition.
2245        ///
2246        /// The values are not transformed in any way and thus are considered stable
2247        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2248        pub fn as_str_name(&self) -> &'static str {
2249            match self {
2250                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
2251                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
2252                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
2253            }
2254        }
2255    }
2256}
2257// End of protos/perfetto/config/process_stats/process_stats_config.proto
2258
2259// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
2260
2261/// Configuration for go/heapprofd.
2262/// Next id: 28
2263#[derive(Clone, PartialEq, ::prost::Message)]
2264pub struct HeapprofdConfig {
2265    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
2266    ///
2267    /// These are:
2268    /// * All heaps if heap_sampling_intervals is empty.
2269    /// * Those profiled due to all_heaps and not named in heaps if
2270    ///    heap_sampling_intervals is not empty.
2271    /// * The implicit libc.malloc heap if heaps is empty.
2272    ///
2273    /// Set to 1 for perfect accuracy.
2274    /// Otherwise, sample every sample_interval_bytes on average.
2275    ///
2276    /// See
2277    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
2278    /// for more details.
2279    ///
2280    /// BUGS
2281    /// Before Android 12, setting this to 0 would crash the target process.
2282    ///
2283    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
2284    /// this field or with heap_sampling_intervals), otherwise the producer will
2285    /// not start.
2286    #[prost(uint64, optional, tag="1")]
2287    pub sampling_interval_bytes: ::core::option::Option<u64>,
2288    /// If less than the given numbers of bytes are left free in the shared
2289    /// memory buffer, increase sampling interval by a factor of two.
2290    /// Adaptive sampling is disabled when set to 0.
2291    #[prost(uint64, optional, tag="24")]
2292    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
2293    /// Stop doubling the sampling_interval once the sampling interval has reached
2294    /// this value.
2295    #[prost(uint64, optional, tag="25")]
2296    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
2297    /// E.g. surfaceflinger, com.android.phone
2298    /// This input is normalized in the following way: if it contains slashes,
2299    /// everything up to the last slash is discarded. If it contains "@",
2300    /// everything after the first @ is discared.
2301    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
2302    /// This transformation is also applied to the processes' command lines when
2303    /// matching.
2304    #[prost(string, repeated, tag="2")]
2305    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2306    /// For watermark based triggering or local debugging.
2307    #[prost(uint64, repeated, packed="false", tag="4")]
2308    pub pid: ::prost::alloc::vec::Vec<u64>,
2309    /// Only profile target if it was installed by one of the packages given.
2310    /// Special values are:
2311    /// * @system: installed on the system partition
2312    /// * @product: installed on the product partition
2313    /// * @null: sideloaded
2314    /// Supported on Android 12+.
2315    #[prost(string, repeated, tag="26")]
2316    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2317    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
2318    /// "malloc".
2319    ///
2320    /// Introduced in Android 12.
2321    #[prost(string, repeated, tag="20")]
2322    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2323    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
2324    /// combination with all_heaps;
2325    ///
2326    /// Introduced in Android 12.
2327    #[prost(string, repeated, tag="27")]
2328    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2329    #[prost(bool, optional, tag="23")]
2330    pub stream_allocations: ::core::option::Option<bool>,
2331    /// If given, needs to be the same length as heaps and gives the sampling
2332    /// interval for the respective entry in heaps.
2333    ///
2334    /// Otherwise, sampling_interval_bytes is used.
2335    ///
2336    /// It is recommended to set sampling_interval_bytes to a reasonable default
2337    /// value when using this, as a value of 0 for sampling_interval_bytes will
2338    /// crash the target process before Android 12.
2339    ///
2340    /// Introduced in Android 12.
2341    ///
2342    /// All values must be non-zero or the producer will not start.
2343    #[prost(uint64, repeated, packed="false", tag="22")]
2344    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2345    /// Sample all heaps registered by target process. Introduced in Android 12.
2346    #[prost(bool, optional, tag="21")]
2347    pub all_heaps: ::core::option::Option<bool>,
2348    /// Profile all processes eligible for profiling on the system.
2349    /// See
2350    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2351    /// for which processes are eligible.
2352    ///
2353    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2354    /// will crash when trying to launch a new process as it will have an
2355    /// unexpected open socket to heapprofd.
2356    ///
2357    /// heapprofd will likely be overloaded by the amount of data for low
2358    /// sampling intervals.
2359    #[prost(bool, optional, tag="5")]
2360    pub all: ::core::option::Option<bool>,
2361    /// Do not profile processes whose anon RSS + swap < given value.
2362    /// Introduced in Android 11.
2363    #[prost(uint32, optional, tag="15")]
2364    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2365    /// Stop profile if heapprofd memory usage goes beyond the given value.
2366    /// Introduced in Android 11.
2367    #[prost(uint32, optional, tag="16")]
2368    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2369    /// Stop profile if heapprofd CPU time since start of this data-source
2370    /// goes beyond given value.
2371    /// Introduced in Android 11.
2372    #[prost(uint64, optional, tag="17")]
2373    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2374    /// Do not emit function names for mappings starting with this prefix.
2375    /// E.g. /system to not emit symbols for any system libraries.
2376    #[prost(string, repeated, tag="7")]
2377    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2378    /// Dump at a predefined interval.
2379    #[prost(message, optional, tag="6")]
2380    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2381    /// Size of the shared memory buffer between the profiled processes and
2382    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2383    /// MiB.
2384    ///
2385    /// Needs to be:
2386    /// * at least 8192,
2387    /// * a power of two,
2388    /// * a multiple of 4096.
2389    #[prost(uint64, optional, tag="8")]
2390    pub shmem_size_bytes: ::core::option::Option<u64>,
2391    /// When the shmem buffer is full, block the client instead of ending the
2392    /// trace. Use with caution as this will significantly slow down the target
2393    /// process.
2394    #[prost(bool, optional, tag="9")]
2395    pub block_client: ::core::option::Option<bool>,
2396    /// If set, stop the trace session after blocking the client for this
2397    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2398    /// Introduced in Android 11.
2399    #[prost(uint32, optional, tag="14")]
2400    pub block_client_timeout_us: ::core::option::Option<u32>,
2401    /// Do not profile processes from startup, only match already running
2402    /// processes.
2403    ///
2404    /// Can not be set at the same time as no_running.
2405    /// Introduced in Android 11.
2406    #[prost(bool, optional, tag="10")]
2407    pub no_startup: ::core::option::Option<bool>,
2408    /// Do not profile running processes. Only match processes on startup.
2409    ///
2410    /// Can not be set at the same time as no_startup.
2411    /// Introduced in Android 11.
2412    #[prost(bool, optional, tag="11")]
2413    pub no_running: ::core::option::Option<bool>,
2414    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2415    /// at the point in time when the sampled heap usage of the process was at its
2416    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2417    /// self_allocated and self_freed to not be set.
2418    /// Introduced in Android 11.
2419    #[prost(bool, optional, tag="13")]
2420    pub dump_at_max: ::core::option::Option<bool>,
2421    // FEATURE FLAGS. THERE BE DRAGONS.
2422
2423    /// Escape hatch if the session is being torn down because of a forked child
2424    /// that shares memory space, but is not correctly identified as a vforked
2425    /// child.
2426    /// Introduced in Android 11.
2427    #[prost(bool, optional, tag="18")]
2428    pub disable_fork_teardown: ::core::option::Option<bool>,
2429    /// We try to automatically detect when a target applicatation vforks but then
2430    /// does a memory allocation (or free). This auto-detection can be disabled
2431    /// with this.
2432    /// Introduced in Android 11.
2433    #[prost(bool, optional, tag="19")]
2434    pub disable_vfork_detection: ::core::option::Option<bool>,
2435}
2436/// Nested message and enum types in `HeapprofdConfig`.
2437pub mod heapprofd_config {
2438    #[derive(Clone, PartialEq, ::prost::Message)]
2439    pub struct ContinuousDumpConfig {
2440        /// ms to wait before first dump.
2441        #[prost(uint32, optional, tag="5")]
2442        pub dump_phase_ms: ::core::option::Option<u32>,
2443        /// ms to wait between following dumps.
2444        #[prost(uint32, optional, tag="6")]
2445        pub dump_interval_ms: ::core::option::Option<u32>,
2446    }
2447}
2448// End of protos/perfetto/config/profiling/heapprofd_config.proto
2449
2450// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2451
2452/// Configuration for managed app heap graph snapshots.
2453#[derive(Clone, PartialEq, ::prost::Message)]
2454pub struct JavaHprofConfig {
2455    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2456    /// comm string). The semantics of this field were changed since its original
2457    /// introduction.
2458    ///
2459    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2460    /// the profiler will attempt to match it in two possible ways:
2461    /// * if the pattern starts with a '/', then it is matched against the first
2462    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2463    ///    "/bin/echo".
2464    /// * otherwise the pattern is matched against the part of argv0
2465    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2466    ///    For example "echo" would match "/bin/echo".
2467    ///
2468    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2469    /// normalized prior to an exact string comparison. Normalization is as
2470    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2471    /// the string contains forward slashes, trim everything up to and including
2472    /// the last one.
2473    ///
2474    /// Implementation note: in either case, at most 511 characters of cmdline
2475    /// are considered.
2476    #[prost(string, repeated, tag="1")]
2477    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2478    /// For watermark based triggering or local debugging.
2479    #[prost(uint64, repeated, packed="false", tag="2")]
2480    pub pid: ::prost::alloc::vec::Vec<u64>,
2481    /// Only profile target if it was installed by one of the packages given.
2482    /// Special values are:
2483    /// * @system: installed on the system partition
2484    /// * @product: installed on the product partition
2485    /// * @null: sideloaded
2486    /// Supported on Android 12+.
2487    #[prost(string, repeated, tag="7")]
2488    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2489    /// Dump at a predefined interval.
2490    #[prost(message, optional, tag="3")]
2491    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2492    /// Do not profile processes whose anon RSS + swap < given value.
2493    #[prost(uint32, optional, tag="4")]
2494    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2495    /// Include the process' /proc/self/smaps.
2496    /// This only shows maps that:
2497    /// * start with /system
2498    /// * start with /vendor
2499    /// * start with /data/app
2500    /// * contain "extracted in memory from Y", where Y matches any of the above
2501    #[prost(bool, optional, tag="5")]
2502    pub dump_smaps: ::core::option::Option<bool>,
2503    /// Exclude objects of the following types from the profile. This can be
2504    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2505    #[prost(string, repeated, tag="6")]
2506    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2507}
2508/// Nested message and enum types in `JavaHprofConfig`.
2509pub mod java_hprof_config {
2510    /// If dump_interval_ms != 0, the following configuration is used.
2511    #[derive(Clone, PartialEq, ::prost::Message)]
2512    pub struct ContinuousDumpConfig {
2513        /// ms to wait before first continuous dump.
2514        /// A dump is always created at the beginning of the trace.
2515        #[prost(uint32, optional, tag="1")]
2516        pub dump_phase_ms: ::core::option::Option<u32>,
2517        /// ms to wait between following dumps.
2518        #[prost(uint32, optional, tag="2")]
2519        pub dump_interval_ms: ::core::option::Option<u32>,
2520        /// If true, scans all the processes to find `process_cmdline` and filter by
2521        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2522        /// S-.
2523        ///
2524        /// If false, rescans all the processes to find on every dump. Default on
2525        /// Android T+.
2526        #[prost(bool, optional, tag="3")]
2527        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2528    }
2529}
2530// End of protos/perfetto/config/profiling/java_hprof_config.proto
2531
2532// Begin of protos/perfetto/common/perf_events.proto
2533
2534#[derive(Clone, PartialEq, ::prost::Message)]
2535pub struct PerfEvents {
2536}
2537/// Nested message and enum types in `PerfEvents`.
2538pub mod perf_events {
2539    /// The primary event to count. If recording multiple events, this
2540    /// counter is the "group leader".
2541    /// Commented from the perspective of its use in |PerfEventConfig|.
2542    /// Next id: 13
2543    #[derive(Clone, PartialEq, ::prost::Message)]
2544    pub struct Timebase {
2545        /// Optional modifiers for the event. Modelled after the perftool's
2546        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
2547        /// Currently supported: count scoping such as :u, :k, :uk, ...
2548        /// Modifiers can differ between the timebase and followers.
2549        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
2550        pub modifiers: ::prost::alloc::vec::Vec<i32>,
2551        /// If set, samples will be timestamped with the given clock.
2552        /// If unset, the clock is chosen by the implementation.
2553        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2554        /// used for hardware events (due to interrupt safety), for which the
2555        /// recommendation is to use one of the monotonic clocks.
2556        #[prost(enumeration="PerfClock", optional, tag="11")]
2557        pub timestamp_clock: ::core::option::Option<i32>,
2558        /// Optional arbitrary name for the event, to identify it in the parsed
2559        /// trace. Does *not* affect the profiling itself. If unset, the trace
2560        /// parser will choose a suitable name.
2561        #[prost(string, optional, tag="10")]
2562        pub name: ::core::option::Option<::prost::alloc::string::String>,
2563        /// How often to snapshot the counter, along with any follower events and
2564        /// any additional sampled data such as callstacks.
2565        ///
2566        /// This choice also controls how the readings are taken:
2567        /// * With |frequency| or |period|, samples are taken by the kernel
2568        ///    into a ring buffer. Analogous to `perf record`.
2569        /// * With |poll_period_ms|, the userspace periodically snapshots
2570        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2571        /// Prefer the sampling options unless you're recording PMUs whose
2572        /// perf drivers only support the reading mode.
2573        ///
2574        /// If unset, an implementation-defined sampling default is used.
2575        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2576        pub interval: ::core::option::Option<timebase::Interval>,
2577        /// Counting event to use as the timebase.
2578        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2579        /// which is what you usually want.
2580        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2581        pub event: ::core::option::Option<timebase::Event>,
2582    }
2583    /// Nested message and enum types in `Timebase`.
2584    pub mod timebase {
2585        /// How often to snapshot the counter, along with any follower events and
2586        /// any additional sampled data such as callstacks.
2587        ///
2588        /// This choice also controls how the readings are taken:
2589        /// * With |frequency| or |period|, samples are taken by the kernel
2590        ///    into a ring buffer. Analogous to `perf record`.
2591        /// * With |poll_period_ms|, the userspace periodically snapshots
2592        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2593        /// Prefer the sampling options unless you're recording PMUs whose
2594        /// perf drivers only support the reading mode.
2595        ///
2596        /// If unset, an implementation-defined sampling default is used.
2597        #[derive(Clone, PartialEq, ::prost::Oneof)]
2598        pub enum Interval {
2599            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2600            /// same as 1/period.
2601            /// Details: the actual sampling will still be based on a period, but the
2602            /// kernel will dynamically adjust it based on the observed event rate, to
2603            /// approximate this frequency. Works best with steady-rate events like
2604            /// timers.
2605            /// Not guaranteed to be honored as the kernel can throttle the sampling
2606            /// rate if it's too high.
2607            #[prost(uint64, tag="2")]
2608            Frequency(u64),
2609            /// Per-cpu sampling will occur every |period| counts of |event|.
2610            /// Prefer |frequency| by default, as it's easier to oversample with a
2611            /// fixed period.
2612            /// Not guaranteed to be honored as the kernel can throttle the sampling
2613            /// rate if it's too high.
2614            #[prost(uint64, tag="1")]
2615            Period(u64),
2616            /// Per-cpu values are read by the userspace every interval. If using this
2617            /// mode, only follower events are supported. Options such as
2618            /// |PerfEventConfig.CallstackSampling| are incompatible.
2619            /// The period can't be guaranteed to be exact since the readings are taken
2620            /// by userspace.
2621            #[prost(uint32, tag="6")]
2622            PollPeriodMs(u32),
2623        }
2624        /// Counting event to use as the timebase.
2625        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2626        /// which is what you usually want.
2627        #[derive(Clone, PartialEq, ::prost::Oneof)]
2628        pub enum Event {
2629            #[prost(enumeration="super::Counter", tag="4")]
2630            Counter(i32),
2631            #[prost(message, tag="3")]
2632            Tracepoint(super::Tracepoint),
2633            #[prost(message, tag="5")]
2634            RawEvent(super::RawEvent),
2635        }
2636    }
2637    #[derive(Clone, PartialEq, ::prost::Message)]
2638    pub struct Tracepoint {
2639        /// Group and name for the tracepoint, acceptable forms:
2640        /// * "sched/sched_switch"
2641        /// * "sched:sched_switch"
2642        #[prost(string, optional, tag="1")]
2643        pub name: ::core::option::Option<::prost::alloc::string::String>,
2644        /// Optional field-level filter for the tracepoint. Only events matching this
2645        /// filter will be counted (and therefore contribute to the sampling period).
2646        /// Example: "prev_pid >= 42 && next_pid == 0".
2647        /// For full syntax, see kernel documentation on "Event filtering":
2648        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2649        #[prost(string, optional, tag="2")]
2650        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2651    }
2652    /// Syscall-level description of the event, propagated to the perf_event_attr
2653    /// struct. Primarily for local use-cases, since the event availability and
2654    /// encoding is hardware-specific.
2655    #[derive(Clone, PartialEq, ::prost::Message)]
2656    pub struct RawEvent {
2657        #[prost(uint32, optional, tag="1")]
2658        pub r#type: ::core::option::Option<u32>,
2659        #[prost(uint64, optional, tag="2")]
2660        pub config: ::core::option::Option<u64>,
2661        #[prost(uint64, optional, tag="3")]
2662        pub config1: ::core::option::Option<u64>,
2663        #[prost(uint64, optional, tag="4")]
2664        pub config2: ::core::option::Option<u64>,
2665    }
2666    /// Builtin counter names from the uapi header. Commented with their perf tool
2667    /// aliases.
2668    /// TODO(rsavitski): consider generating enums for cache events (should be
2669    /// finite), and generally make this list as extensive as possible. Excluding
2670    /// things like dynamic PMUs since those don't fit into a static enum.
2671    /// Next id: 21
2672    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2673    #[repr(i32)]
2674    pub enum Counter {
2675        UnknownCounter = 0,
2676        /// cpu-clock
2677        SwCpuClock = 1,
2678        /// page-faults, faults
2679        SwPageFaults = 2,
2680        /// task-clock
2681        SwTaskClock = 3,
2682        /// context-switches, cs
2683        SwContextSwitches = 4,
2684        /// cpu-migrations, migrations
2685        SwCpuMigrations = 5,
2686        /// minor-faults
2687        SwPageFaultsMin = 6,
2688        /// major-faults
2689        SwPageFaultsMaj = 7,
2690        /// alignment-faults
2691        SwAlignmentFaults = 8,
2692        /// emulation-faults
2693        SwEmulationFaults = 9,
2694        /// dummy
2695        SwDummy = 20,
2696        /// cpu-cycles, cycles
2697        HwCpuCycles = 10,
2698        /// instructions
2699        HwInstructions = 11,
2700        /// cache-references
2701        HwCacheReferences = 12,
2702        /// cache-misses
2703        HwCacheMisses = 13,
2704        /// branch-instructions, branches
2705        HwBranchInstructions = 14,
2706        /// branch-misses
2707        HwBranchMisses = 15,
2708        /// bus-cycles
2709        HwBusCycles = 16,
2710        /// stalled-cycles-frontend, idle-cycles-frontend
2711        HwStalledCyclesFrontend = 17,
2712        /// stalled-cycles-backend, idle-cycles-backend
2713        HwStalledCyclesBackend = 18,
2714        /// ref-cycles
2715        HwRefCpuCycles = 19,
2716    }
2717    impl Counter {
2718        /// String value of the enum field names used in the ProtoBuf definition.
2719        ///
2720        /// The values are not transformed in any way and thus are considered stable
2721        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2722        pub fn as_str_name(&self) -> &'static str {
2723            match self {
2724                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2725                Counter::SwCpuClock => "SW_CPU_CLOCK",
2726                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2727                Counter::SwTaskClock => "SW_TASK_CLOCK",
2728                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2729                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2730                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2731                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2732                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2733                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2734                Counter::SwDummy => "SW_DUMMY",
2735                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2736                Counter::HwInstructions => "HW_INSTRUCTIONS",
2737                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2738                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2739                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2740                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2741                Counter::HwBusCycles => "HW_BUS_CYCLES",
2742                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2743                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2744                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2745            }
2746        }
2747    }
2748    /// Subset of clocks that is supported by perf timestamping.
2749    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2750    /// would require additions to the trace clock synchronisation logic.
2751    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2752    #[repr(i32)]
2753    pub enum PerfClock {
2754        UnknownPerfClock = 0,
2755        Realtime = 1,
2756        Monotonic = 2,
2757        MonotonicRaw = 3,
2758        Boottime = 4,
2759    }
2760    impl PerfClock {
2761        /// String value of the enum field names used in the ProtoBuf definition.
2762        ///
2763        /// The values are not transformed in any way and thus are considered stable
2764        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2765        pub fn as_str_name(&self) -> &'static str {
2766            match self {
2767                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2768                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2769                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2770                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2771                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2772            }
2773        }
2774    }
2775    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2776    #[repr(i32)]
2777    pub enum EventModifier {
2778        UnknownEventModifier = 0,
2779        /// count only while in userspace
2780        CountUserspace = 1,
2781        /// count only while in kernel
2782        CountKernel = 2,
2783        /// count only while in hypervisor
2784        CountHypervisor = 3,
2785    }
2786    impl EventModifier {
2787        /// String value of the enum field names used in the ProtoBuf definition.
2788        ///
2789        /// The values are not transformed in any way and thus are considered stable
2790        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2791        pub fn as_str_name(&self) -> &'static str {
2792            match self {
2793                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
2794                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
2795                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
2796                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
2797            }
2798        }
2799    }
2800}
2801/// Additional events associated with a leader.
2802/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
2803#[derive(Clone, PartialEq, ::prost::Message)]
2804pub struct FollowerEvent {
2805    /// Modifiers can differ between the timebase and followers.
2806    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
2807    pub modifiers: ::prost::alloc::vec::Vec<i32>,
2808    /// Optional arbitrary name for the event, to identify it in the parsed
2809    /// trace. Does *not* affect the profiling itself. If unset, the trace
2810    /// parser will choose a suitable name.
2811    #[prost(string, optional, tag="4")]
2812    pub name: ::core::option::Option<::prost::alloc::string::String>,
2813    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2814    pub event: ::core::option::Option<follower_event::Event>,
2815}
2816/// Nested message and enum types in `FollowerEvent`.
2817pub mod follower_event {
2818    #[derive(Clone, PartialEq, ::prost::Oneof)]
2819    pub enum Event {
2820        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2821        Counter(i32),
2822        #[prost(message, tag="2")]
2823        Tracepoint(super::perf_events::Tracepoint),
2824        #[prost(message, tag="3")]
2825        RawEvent(super::perf_events::RawEvent),
2826    }
2827}
2828// End of protos/perfetto/common/perf_events.proto
2829
2830// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2831
2832/// Configuration for the traced_perf profiler.
2833///
2834/// Example config for basic cpu profiling:
2835///    perf_event_config {
2836///      timebase {
2837///        frequency: 80
2838///      }
2839///      callstack_sampling {
2840///        scope {
2841///          target_cmdline: "surfaceflinger"
2842///          target_cmdline: "system_server"
2843///        }
2844///        kernel_frames: true
2845///      }
2846///    }
2847///
2848/// Next id: 21
2849#[derive(Clone, PartialEq, ::prost::Message)]
2850pub struct PerfEventConfig {
2851    /// What event to sample on, and how often.
2852    /// Defined in common/perf_events.proto.
2853    #[prost(message, optional, tag="15")]
2854    pub timebase: ::core::option::Option<perf_events::Timebase>,
2855    /// Other events associated with the leader described in the timebase.
2856    #[prost(message, repeated, tag="19")]
2857    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2858    /// If set, the profiler will sample userspace processes' callstacks at the
2859    /// interval specified by the |timebase|.
2860    /// If unset, the profiler will record only the event counts.
2861    #[prost(message, optional, tag="16")]
2862    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2863    /// List of cpu indices for counting. If empty, the default is all cpus.
2864    ///
2865    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2866    /// counter-only traces. A future change will likely reorganise the options,
2867    /// but this field will continue to be supported.
2868    ///
2869    /// Available since: perfetto v50.
2870    #[prost(uint32, repeated, packed="false", tag="20")]
2871    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2872    //
2873    // Kernel <-> userspace ring buffer options:
2874    //
2875
2876    /// How often the per-cpu ring buffers are read by the producer.
2877    /// If unset, an implementation-defined default is used.
2878    #[prost(uint32, optional, tag="8")]
2879    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2880    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2881    /// kernel. If set, must be a power of two.
2882    /// If unset, an implementation-defined default is used.
2883    #[prost(uint32, optional, tag="3")]
2884    pub ring_buffer_pages: ::core::option::Option<u32>,
2885    //
2886    // Daemon's resource usage limits:
2887    //
2888
2889    /// Drop samples if the heap memory held by the samples in the unwinder queue
2890    /// is above the given limit. This counts the memory across all concurrent data
2891    /// sources (not just this one's), and there is no fairness guarantee - the
2892    /// whole quota might be used up by a concurrent source.
2893    #[prost(uint64, optional, tag="17")]
2894    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2895    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2896    /// footprint exceeds this value.
2897    #[prost(uint32, optional, tag="13")]
2898    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2899    //
2900    // Niche options:
2901    //
2902
2903    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2904    /// sampled process. This is primarily for Android, where this lookup is
2905    /// asynchronous. As long as the producer is waiting, the associated samples
2906    /// will be kept enqueued (putting pressure on the capacity of the shared
2907    /// unwinding queue). Once a lookup for a process expires, all associated
2908    /// samples are discarded. However, if the lookup still succeeds after the
2909    /// timeout, future samples will be handled normally.
2910    /// If unset, an implementation-defined default is used.
2911    #[prost(uint32, optional, tag="9")]
2912    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2913    /// Optional period for clearing state cached by the userspace unwinder. This
2914    /// is a heavy operation that is only necessary for traces that target a wide
2915    /// set of processes, and require the memory footprint to be reset
2916    /// periodically. To effectively disable the cache clearing, set to a value
2917    /// greater than your trace duration.
2918    ///
2919    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
2920    ///
2921    /// If zero or unset:
2922    /// * before perfetto v52: no cache clearing.
2923    /// * perfetto v52+: implementation chooses an infrequent default.
2924    #[prost(uint32, optional, tag="10")]
2925    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2926    /// If set, only profile target if it was installed by a package with one of
2927    /// these names. Special values:
2928    /// * "@system": installed on the system partition
2929    /// * "@product": installed on the product partition
2930    /// * "@null": sideloaded
2931    /// Supported on Android 12+.
2932    #[prost(string, repeated, tag="18")]
2933    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2934    //
2935    // Deprecated (superseded by options above):
2936    //
2937    // Do not set *any* of these fields in new configs.
2938    //
2939
2940    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2941    /// We rely on this to detect such configs.
2942    #[prost(bool, optional, tag="1")]
2943    pub all_cpus: ::core::option::Option<bool>,
2944    #[prost(uint32, optional, tag="2")]
2945    pub sampling_frequency: ::core::option::Option<u32>,
2946    #[prost(bool, optional, tag="12")]
2947    pub kernel_frames: ::core::option::Option<bool>,
2948    #[prost(int32, repeated, packed="false", tag="4")]
2949    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2950    #[prost(string, repeated, tag="5")]
2951    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2952    #[prost(int32, repeated, packed="false", tag="6")]
2953    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2954    #[prost(string, repeated, tag="7")]
2955    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2956    #[prost(uint32, optional, tag="11")]
2957    pub additional_cmdline_count: ::core::option::Option<u32>,
2958}
2959/// Nested message and enum types in `PerfEventConfig`.
2960pub mod perf_event_config {
2961    //
2962    // Sub-messages (nested for generated code namespacing).
2963    //
2964
2965    #[derive(Clone, PartialEq, ::prost::Message)]
2966    pub struct CallstackSampling {
2967        /// Defines a set of processes for which samples are retained/skipped. If
2968        /// unset, all samples are kept, but beware that it will be very heavy on the
2969        /// stack unwinder, which might start dropping samples due to overload.
2970        #[prost(message, optional, tag="1")]
2971        pub scope: ::core::option::Option<Scope>,
2972        /// If true, callstacks will include the kernel-space frames. Such frames can
2973        /// be identified by a magical "kernel" string as their mapping name.
2974        /// Requires traced_perf to be running as root, or kptr_restrict to have been
2975        /// manually unrestricted. On Android, the platform should do the right thing
2976        /// on debug builds.
2977        /// This does *not* disclose KASLR, as only the function names are emitted.
2978        #[prost(bool, optional, tag="2")]
2979        pub kernel_frames: ::core::option::Option<bool>,
2980        /// Whether to record and unwind userspace callstacks. If unset, defaults to
2981        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
2982        /// as the most common default (this defaulting is only applicable if the
2983        /// outer CallstackSampling message is explicitly set).
2984        #[prost(enumeration="UnwindMode", optional, tag="3")]
2985        pub user_frames: ::core::option::Option<i32>,
2986    }
2987    #[derive(Clone, PartialEq, ::prost::Message)]
2988    pub struct Scope {
2989        /// Process ID (TGID) allowlist. If this list is not empty, only matching
2990        /// samples will be retained. If multiple allow/deny-lists are
2991        /// specified by the config, then all of them are evaluated for each sampled
2992        /// process.
2993        #[prost(int32, repeated, packed="false", tag="1")]
2994        pub target_pid: ::prost::alloc::vec::Vec<i32>,
2995        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2996        /// comm string). The semantics of this field were changed since its original
2997        /// introduction.
2998        ///
2999        /// On Android T+ (13+), this field can specify a single wildcard (*), and
3000        /// the profiler will attempt to match it in two possible ways:
3001        /// * if the pattern starts with a '/', then it is matched against the first
3002        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3003        ///    "/bin/echo".
3004        /// * otherwise the pattern is matched against the part of argv0
3005        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3006        ///    For example "echo" would match "/bin/echo".
3007        ///
3008        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3009        /// normalized prior to an exact string comparison. Normalization is as
3010        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3011        /// the string contains forward slashes, trim everything up to and including
3012        /// the last one.
3013        ///
3014        /// Implementation note: in either case, at most 511 characters of cmdline
3015        /// are considered.
3016        #[prost(string, repeated, tag="2")]
3017        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3018        /// List of excluded pids.
3019        #[prost(int32, repeated, packed="false", tag="3")]
3020        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3021        /// List of excluded cmdlines. See description of |target_cmdline| for how
3022        /// this is handled.
3023        #[prost(string, repeated, tag="4")]
3024        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3025        // Niche features for systemwide callstacks:
3026
3027        /// Number of additional command lines to sample. Only those which are
3028        /// neither explicitly included nor excluded will be considered. Processes
3029        /// are accepted on a first come, first served basis.
3030        #[prost(uint32, optional, tag="5")]
3031        pub additional_cmdline_count: ::core::option::Option<u32>,
3032        /// If set to N, all encountered processes will be put into one of the N
3033        /// possible bins, and only one randomly-chosen bin will be selected for
3034        /// unwinding. The binning is simply "pid % N", under the assumption that
3035        /// low-order bits of pids are roughly uniformly distributed. Other explicit
3036        /// inclusions/exclusions in this |Scope| message are still respected.
3037        ///
3038        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
3039        /// values will be queryable in trace processor under the "stats" table as
3040        /// "perf_process_shard_count" and "perf_chosen_process_shard".
3041        ///
3042        /// NB: all data sources in a config that set |process_shard_count| must set
3043        /// it to the same value. The profiler will choose one bin for all those data
3044        /// sources.
3045        #[prost(uint32, optional, tag="6")]
3046        pub process_shard_count: ::core::option::Option<u32>,
3047    }
3048    /// Userspace unwinding mode. A possible future addition is kernel-unwound
3049    /// callchains for frame pointer based systems.
3050    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3051    #[repr(i32)]
3052    pub enum UnwindMode {
3053        UnwindUnknown = 0,
3054        /// Do not unwind userspace:
3055        UnwindSkip = 1,
3056        /// Use libunwindstack (default):
3057        UnwindDwarf = 2,
3058        /// Use userspace frame pointer unwinder:
3059        UnwindFramePointer = 3,
3060    }
3061    impl UnwindMode {
3062        /// String value of the enum field names used in the ProtoBuf definition.
3063        ///
3064        /// The values are not transformed in any way and thus are considered stable
3065        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3066        pub fn as_str_name(&self) -> &'static str {
3067            match self {
3068                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
3069                UnwindMode::UnwindSkip => "UNWIND_SKIP",
3070                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
3071                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
3072            }
3073        }
3074    }
3075}
3076// End of protos/perfetto/config/profiling/perf_event_config.proto
3077
3078// Begin of protos/perfetto/config/protovm/protovm_config.proto
3079
3080#[derive(Clone, PartialEq, ::prost::Message)]
3081pub struct ProtoVmConfig {
3082    #[prost(uint32, optional, tag="1")]
3083    pub memory_limit_kb: ::core::option::Option<u32>,
3084}
3085// End of protos/perfetto/config/protovm/protovm_config.proto
3086
3087// Begin of protos/perfetto/config/qnx/qnx_config.proto
3088
3089/// QnxConfig is used with trace_qnx_probes build from
3090/// <https://github.com/qnx-ports/perfetto>
3091#[derive(Clone, PartialEq, ::prost::Message)]
3092pub struct QnxConfig {
3093    /// The number of buffers that tracelog will init for the QNX trace.
3094    #[prost(uint32, optional, tag="1")]
3095    pub qnx_kernel_buffers: ::core::option::Option<u32>,
3096    /// The number of kernel buffers that tracelog will init for the QNX trace.
3097    #[prost(uint32, optional, tag="2")]
3098    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
3099    /// Flag indicating whether the QNX kernel tracing should produce wide
3100    /// events which contain additional data or fast events which are most
3101    /// concise. In fast mode we lose the priority information
3102    #[prost(bool, optional, tag="3")]
3103    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
3104    /// The number of pages initialized by default the parser's page cache.
3105    #[prost(uint32, optional, tag="4")]
3106    pub qnx_cache_pages: ::core::option::Option<u32>,
3107    /// The max pages the page cache should allocate (must be at least as big)
3108    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
3109    /// unbounded. The cache will prefer to re-use existing pages so growth will
3110    /// only happen when needed (when parser is not keeping up).
3111    #[prost(int32, optional, tag="5")]
3112    pub qnx_cache_max_pages: ::core::option::Option<i32>,
3113    /// The initial size of the the buffer used to hold the trace header values
3114    /// this dynamic buffer will grow as needed but reallocs can be avoided by
3115    /// selecting an initial size large enough to hold all the initial header
3116    /// data.
3117    #[prost(uint32, optional, tag="6")]
3118    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
3119}
3120// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
3121
3122/// This file is named 'statsd_tracing_config.proto' rather than
3123/// 'statsd_config.proto' (which would be more consistent with the other
3124/// config protos) so it doesn't show up and confuse folks looking for
3125/// the existing statsd_config.proto for configuring statsd itself.
3126/// Same for the config proto itself.
3127#[derive(Clone, PartialEq, ::prost::Message)]
3128pub struct StatsdTracingConfig {
3129    /// This is for the common case of the atom id being known in the enum AtomId.
3130    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3131    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
3132    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
3133    /// (e.g. non-upstream atoms that don't exist in AOSP).
3134    #[prost(int32, repeated, packed="false", tag="2")]
3135    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
3136    #[prost(message, repeated, tag="3")]
3137    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
3138}
3139#[derive(Clone, PartialEq, ::prost::Message)]
3140pub struct StatsdPullAtomConfig {
3141    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3142    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3143    #[prost(int32, repeated, packed="false", tag="2")]
3144    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3145    #[prost(int32, optional, tag="3")]
3146    pub pull_frequency_ms: ::core::option::Option<i32>,
3147    #[prost(string, repeated, tag="4")]
3148    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3149}
3150// End of protos/perfetto/common/sys_stats_counters.proto
3151
3152// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
3153
3154/// This file defines the configuration for the Linux /proc poller data source,
3155/// which injects counters in the trace.
3156/// Counters that are needed in the trace must be explicitly listed in the
3157/// *_counters fields. This is to avoid spamming the trace with all counters
3158/// at all times.
3159/// The sampling rate is configurable. All polling rates (*_period_ms) need
3160/// to be integer multiples of each other.
3161/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
3162/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
3163#[derive(Clone, PartialEq, ::prost::Message)]
3164pub struct SysStatsConfig {
3165    /// Polls /proc/meminfo every X ms, if non-zero.
3166    /// This is required to be > 10ms to avoid excessive CPU usage.
3167    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
3168    #[prost(uint32, optional, tag="1")]
3169    pub meminfo_period_ms: ::core::option::Option<u32>,
3170    /// If empty all known counters are reported. Otherwise, only the counters
3171    /// specified below are reported.
3172    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
3173    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
3174    /// Polls /proc/vmstat every X ms, if non-zero.
3175    /// This is required to be > 10ms to avoid excessive CPU usage.
3176    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
3177    #[prost(uint32, optional, tag="3")]
3178    pub vmstat_period_ms: ::core::option::Option<u32>,
3179    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
3180    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
3181    /// Pols /proc/stat every X ms, if non-zero.
3182    /// This is required to be > 10ms to avoid excessive CPU usage.
3183    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
3184    #[prost(uint32, optional, tag="5")]
3185    pub stat_period_ms: ::core::option::Option<u32>,
3186    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
3187    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
3188    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
3189    /// This is required to be > 10ms to avoid excessive CPU usage.
3190    /// This option can be used to record unchanging values.
3191    /// Updates from frequency changes can come from ftrace/set_clock_rate.
3192    #[prost(uint32, optional, tag="7")]
3193    pub devfreq_period_ms: ::core::option::Option<u32>,
3194    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
3195    /// This is required to be > 10ms to avoid excessive CPU usage.
3196    #[prost(uint32, optional, tag="8")]
3197    pub cpufreq_period_ms: ::core::option::Option<u32>,
3198    /// Polls /proc/buddyinfo every X ms, if non-zero.
3199    /// This is required to be > 10ms to avoid excessive CPU usage.
3200    #[prost(uint32, optional, tag="9")]
3201    pub buddyinfo_period_ms: ::core::option::Option<u32>,
3202    /// Polls /proc/diskstats every X ms, if non-zero.
3203    /// This is required to be > 10ms to avoid excessive CPU usage.
3204    #[prost(uint32, optional, tag="10")]
3205    pub diskstat_period_ms: ::core::option::Option<u32>,
3206    /// Polls /proc/pressure/* every X ms, if non-zero.
3207    /// This is required to be > 10ms to avoid excessive CPU usage.
3208    #[prost(uint32, optional, tag="11")]
3209    pub psi_period_ms: ::core::option::Option<u32>,
3210    /// Polls /sys/class/thermal/* every X ms, if non-zero.
3211    /// This is required to be > 10ms to avoid excessive CPU usage.
3212    #[prost(uint32, optional, tag="12")]
3213    pub thermal_period_ms: ::core::option::Option<u32>,
3214    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
3215    /// This is required to be > 10ms to avoid excessive CPU usage.
3216    #[prost(uint32, optional, tag="13")]
3217    pub cpuidle_period_ms: ::core::option::Option<u32>,
3218    /// Polls device-specific GPU frequency info every X ms, if non-zero.
3219    /// This is required to be > 10ms to avoid excessive CPU usage.
3220    #[prost(uint32, optional, tag="14")]
3221    pub gpufreq_period_ms: ::core::option::Option<u32>,
3222}
3223/// Nested message and enum types in `SysStatsConfig`.
3224pub mod sys_stats_config {
3225    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3226    #[repr(i32)]
3227    pub enum StatCounters {
3228        StatUnspecified = 0,
3229        StatCpuTimes = 1,
3230        StatIrqCounts = 2,
3231        StatSoftirqCounts = 3,
3232        StatForkCount = 4,
3233    }
3234    impl StatCounters {
3235        /// String value of the enum field names used in the ProtoBuf definition.
3236        ///
3237        /// The values are not transformed in any way and thus are considered stable
3238        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3239        pub fn as_str_name(&self) -> &'static str {
3240            match self {
3241                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
3242                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
3243                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
3244                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
3245                StatCounters::StatForkCount => "STAT_FORK_COUNT",
3246            }
3247        }
3248    }
3249}
3250// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
3251
3252// Begin of protos/perfetto/config/system_info/system_info_config.proto
3253
3254/// This data-source does a one-off recording of system information when
3255/// the trace starts.
3256/// Currently this includes:
3257/// - Values of
3258/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
3259/// datasource has no configuration options at present.
3260#[derive(Clone, PartialEq, ::prost::Message)]
3261pub struct SystemInfoConfig {
3262}
3263// End of protos/perfetto/config/system_info/system_info_config.proto
3264
3265// Begin of protos/perfetto/config/test_config.proto
3266
3267/// The configuration for a fake producer used in tests.
3268#[derive(Clone, PartialEq, ::prost::Message)]
3269pub struct TestConfig {
3270    /// The number of messages the fake producer should send.
3271    #[prost(uint32, optional, tag="1")]
3272    pub message_count: ::core::option::Option<u32>,
3273    /// The maximum number of messages which should be sent each second.
3274    /// The actual obserced speed may be lower if the producer is unable to
3275    /// work fast enough.
3276    /// If this is zero or unset, the producer will send as fast as possible.
3277    #[prost(uint32, optional, tag="2")]
3278    pub max_messages_per_second: ::core::option::Option<u32>,
3279    /// The seed value for a simple multiplicative congruential pseudo-random
3280    /// number sequence.
3281    #[prost(uint32, optional, tag="3")]
3282    pub seed: ::core::option::Option<u32>,
3283    /// The size of each message in bytes. Should be greater than or equal 5 to
3284    /// account for the number of bytes needed to encode the random number and a
3285    /// null byte for the string.
3286    #[prost(uint32, optional, tag="4")]
3287    pub message_size: ::core::option::Option<u32>,
3288    /// Whether the producer should send a event batch when the data source is
3289    /// is initially registered.
3290    #[prost(bool, optional, tag="5")]
3291    pub send_batch_on_register: ::core::option::Option<bool>,
3292    #[prost(message, optional, tag="6")]
3293    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
3294}
3295/// Nested message and enum types in `TestConfig`.
3296pub mod test_config {
3297    #[derive(Clone, PartialEq, ::prost::Message)]
3298    pub struct DummyFields {
3299        #[prost(uint32, optional, tag="1")]
3300        pub field_uint32: ::core::option::Option<u32>,
3301        #[prost(int32, optional, tag="2")]
3302        pub field_int32: ::core::option::Option<i32>,
3303        #[prost(uint64, optional, tag="3")]
3304        pub field_uint64: ::core::option::Option<u64>,
3305        #[prost(int64, optional, tag="4")]
3306        pub field_int64: ::core::option::Option<i64>,
3307        #[prost(fixed64, optional, tag="5")]
3308        pub field_fixed64: ::core::option::Option<u64>,
3309        #[prost(sfixed64, optional, tag="6")]
3310        pub field_sfixed64: ::core::option::Option<i64>,
3311        #[prost(fixed32, optional, tag="7")]
3312        pub field_fixed32: ::core::option::Option<u32>,
3313        #[prost(sfixed32, optional, tag="8")]
3314        pub field_sfixed32: ::core::option::Option<i32>,
3315        #[prost(double, optional, tag="9")]
3316        pub field_double: ::core::option::Option<f64>,
3317        #[prost(float, optional, tag="10")]
3318        pub field_float: ::core::option::Option<f32>,
3319        #[prost(sint64, optional, tag="11")]
3320        pub field_sint64: ::core::option::Option<i64>,
3321        #[prost(sint32, optional, tag="12")]
3322        pub field_sint32: ::core::option::Option<i32>,
3323        #[prost(string, optional, tag="13")]
3324        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
3325        #[prost(bytes="vec", optional, tag="14")]
3326        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3327    }
3328}
3329// End of protos/perfetto/config/test_config.proto
3330
3331// Begin of protos/perfetto/config/track_event/track_event_config.proto
3332
3333/// The following fields define the set of enabled trace categories. Each list
3334/// item is a glob.
3335///
3336/// To determine if category is enabled, it is checked against the filters in
3337/// the following order:
3338///
3339///    1. Exact matches in enabled categories.
3340///    2. Exact matches in enabled tags.
3341///    3. Exact matches in disabled categories.
3342///    4. Exact matches in disabled tags.
3343///    5. Pattern matches in enabled categories.
3344///    6. Pattern matches in enabled tags.
3345///    7. Pattern matches in disabled categories.
3346///    8. Pattern matches in disabled tags.
3347///
3348/// If none of the steps produced a match:
3349///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
3350///   default.
3351///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
3352///
3353/// Examples:
3354///
3355///   - To enable all non-slow/debug categories:
3356///
3357///        enabled_categories: "*"
3358///
3359///   - To enable specific categories:
3360///
3361///        disabled_categories: "*"
3362///        enabled_categories: "my_category"
3363///        enabled_categories: "my_category2"
3364///
3365///   - To enable only categories with a specific tag:
3366///
3367///        disabled_tags: "*"
3368///        enabled_tags: "my_tag"
3369///
3370#[derive(Clone, PartialEq, ::prost::Message)]
3371pub struct TrackEventConfig {
3372    /// Default: []
3373    #[prost(string, repeated, tag="1")]
3374    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3375    /// Default: []
3376    #[prost(string, repeated, tag="2")]
3377    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3378    /// Default: ["slow", "debug"]
3379    #[prost(string, repeated, tag="3")]
3380    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3381    /// Default: []
3382    #[prost(string, repeated, tag="4")]
3383    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3384    /// Default: false (i.e. enabled by default)
3385    #[prost(bool, optional, tag="5")]
3386    pub disable_incremental_timestamps: ::core::option::Option<bool>,
3387    /// Allows to specify a custom unit different than the default (ns).
3388    /// Also affects thread timestamps if enable_thread_time_sampling = true.
3389    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
3390    /// 3000 ns = 3 us.
3391    /// Default: 1 (if unset, it should be read as 1).
3392    #[prost(uint64, optional, tag="6")]
3393    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
3394    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
3395    /// When true, any debug annotations provided as arguments to the
3396    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
3397    /// still be emitted even if set to true.
3398    #[prost(bool, optional, tag="7")]
3399    pub filter_debug_annotations: ::core::option::Option<bool>,
3400    /// Default: false (i.e. disabled)
3401    /// When true, the SDK samples and emits the current thread time counter value
3402    /// for each event on the current thread's track. This value represents the
3403    /// total CPU time consumed by that thread since its creation.
3404    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
3405    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
3406    #[prost(bool, optional, tag="8")]
3407    pub enable_thread_time_sampling: ::core::option::Option<bool>,
3408    /// When enable_thread_time_sampling is true, and this is specified, thread
3409    /// time is sampled only if the elapsed wall time >
3410    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
3411    /// Effectively, this means thread time will have a leeway of
3412    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
3413    #[prost(uint64, optional, tag="10")]
3414    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
3415    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
3416    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
3417    /// out.
3418    #[prost(bool, optional, tag="9")]
3419    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3420}
3421// End of protos/perfetto/config/track_event/track_event_config.proto
3422
3423// Begin of protos/perfetto/config/data_source_config.proto
3424
3425/// The configuration that is passed to each data source when starting tracing.
3426/// Next id: 140
3427#[derive(Clone, PartialEq, ::prost::Message)]
3428pub struct DataSourceConfig {
3429    /// Data source unique name, e.g., "linux.ftrace". This must match
3430    /// the name passed by the data source when it registers (see
3431    /// RegisterDataSource()).
3432    #[prost(string, optional, tag="1")]
3433    pub name: ::core::option::Option<::prost::alloc::string::String>,
3434    /// The index of the logging buffer where TracePacket(s) will be stored.
3435    /// This field is quite subtle as it has a double semantic:
3436    /// 1) When the config is passed, this field is a 0-based index relative to the
3437    ///     buffer array in the TraceConfig and defines the mapping between data
3438    ///     sources and config. From v54 this is optional because the user can
3439    ///     instead use target_buffer_name.
3440    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
3441    ///     producer, it overwrites this field with the global buffer index (which
3442    ///     depends on other tracing sessions active). This tells the producer which
3443    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
3444    ///     service always sets the resolved global id, even when using
3445    ///     `target_buffer_name`.
3446    /// In hindsight we should have used two different fields given even in v0 they
3447    /// had a different semantic. But now it's too late as this would be a major
3448    /// protocol breaking change.
3449    #[prost(uint32, optional, tag="2")]
3450    pub target_buffer: ::core::option::Option<u32>,
3451    /// Alternative to |target_buffer|. References a buffer by name (as specified
3452    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
3453    /// readable and less error-prone than using buffer indices.
3454    /// If both |target_buffer| and |target_buffer_name| are specified, they must
3455    /// refer to the same buffer, otherwise the service will reject the config.
3456    /// Using both fields allows configs to work with both old and new versions
3457    /// of the tracing service. Introduced in v54.
3458    #[prost(string, optional, tag="11")]
3459    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
3460    /// Set by the service to indicate the duration of the trace.
3461    /// DO NOT SET in consumer as this will be overridden by the service.
3462    #[prost(uint32, optional, tag="3")]
3463    pub trace_duration_ms: ::core::option::Option<u32>,
3464    /// If true, |trace_duration_ms| should count also time in suspend. This
3465    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3466    #[prost(bool, optional, tag="122")]
3467    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3468    /// Set by the service to indicate how long it waits after StopDataSource.
3469    /// DO NOT SET in consumer as this will be overridden by the service.
3470    #[prost(uint32, optional, tag="7")]
3471    pub stop_timeout_ms: ::core::option::Option<u32>,
3472    /// Set by the service to indicate whether this tracing session has extra
3473    /// guardrails.
3474    /// DO NOT SET in consumer as this will be overridden by the service.
3475    #[prost(bool, optional, tag="6")]
3476    pub enable_extra_guardrails: ::core::option::Option<bool>,
3477    /// Set by the service to indicate which user initiated this trace.
3478    /// DO NOT SET in consumer as this will be overridden by the service.
3479    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3480    pub session_initiator: ::core::option::Option<i32>,
3481    /// Set by the service to indicate which tracing session the data source
3482    /// belongs to. The intended use case for this is checking if two data sources,
3483    /// one of which produces metadata for the other one, belong to the same trace
3484    /// session and hence should be linked together.
3485    /// This field was introduced in Aug 2018 after Android P.
3486    /// DO NOT SET in consumer as this will be overridden by the service.
3487    #[prost(uint64, optional, tag="4")]
3488    pub tracing_session_id: ::core::option::Option<u64>,
3489    /// How to behave when the producer runs out of space in the shared memory
3490    /// buffer. This is only honored by some data sources (in the SDK, the data
3491    /// sources registered with a configurable buffer exhausted policy).
3492    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3493    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3494    #[prost(message, optional, tag="10")]
3495    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3496    // If specified, the data source requires the tracing service to process
3497    // overwritten packets (patches) using a ProtoVM instance with this config.
3498    // The ProtoVM program is specified at data source registration time through
3499    // the descriptor.
3500
3501    /// TODO(primiano): today when we enable a protovm_config, we actually accept
3502    /// that if N producers advertise M different versions of the same program we
3503    /// will create M instances of that program.
3504    /// To overcome this, we could move the program to the TraceConfig. But doing
3505    /// so would bloat the trace config size too big and create problems to statsd.
3506    /// Once the config store (b/482305876) exists we should move protovm programs
3507    /// onto that.
3508    #[prost(message, optional, tag="12")]
3509    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
3510    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3511    // data-sources and needs to be processed by the traced daemon.
3512
3513    // All data source config fields must be marked as \[lazy=true\]. This prevents
3514    // the proto-to-cpp generator from recursing into those when generating the
3515    // cpp classes and polluting tracing/core with data-source-specific classes.
3516    // Instead they are treated as opaque strings containing raw proto bytes.
3517
3518    /// Data source name: linux.ftrace
3519    #[prost(message, optional, tag="100")]
3520    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3521    /// Data source name: linux.inode_file_map
3522    #[prost(message, optional, tag="102")]
3523    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3524    /// Data source name: linux.process_stats
3525    #[prost(message, optional, tag="103")]
3526    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3527    /// Data source name: linux.sys_stats
3528    #[prost(message, optional, tag="104")]
3529    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3530    /// Data source name: android.heapprofd
3531    /// Introduced in Android 10.
3532    #[prost(message, optional, tag="105")]
3533    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3534    /// Data source name: android.java_hprof
3535    /// Introduced in Android 11.
3536    #[prost(message, optional, tag="110")]
3537    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3538    /// Data source name: android.power
3539    #[prost(message, optional, tag="106")]
3540    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3541    /// Data source name: android.log
3542    #[prost(message, optional, tag="107")]
3543    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3544    /// Data source name: gpu.counters
3545    #[prost(message, optional, tag="108")]
3546    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3547    /// Data source name: android.game_interventions
3548    #[prost(message, optional, tag="116")]
3549    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3550    /// Data source name: android.packages_list
3551    #[prost(message, optional, tag="109")]
3552    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3553    /// Data source name: linux.perf
3554    #[prost(message, optional, tag="111")]
3555    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3556    /// Data source name: vulkan.memory_tracker
3557    #[prost(message, optional, tag="112")]
3558    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3559    /// Data source name: track_event
3560    #[prost(message, optional, tag="113")]
3561    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3562    /// Data source name: android.polled_state
3563    #[prost(message, optional, tag="114")]
3564    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3565    /// Data source name: android.system_property
3566    #[prost(message, optional, tag="118")]
3567    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3568    /// Data source name: android.statsd
3569    #[prost(message, optional, tag="117")]
3570    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3571    /// Data source name: linux.system_info
3572    #[prost(message, optional, tag="119")]
3573    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3574    /// Data source name: linux.frozen_ftrace
3575    #[prost(message, optional, tag="136")]
3576    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3577    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3578    /// avoid proto serialization and de-serialization there because that would
3579    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3580    /// C++ class for it so it can pass around plain C++ objets.
3581    #[prost(message, optional, tag="101")]
3582    pub chrome_config: ::core::option::Option<ChromeConfig>,
3583    /// Data source name: code.v8.dev
3584    #[prost(message, optional, tag="127")]
3585    pub v8_config: ::core::option::Option<V8Config>,
3586    /// If an interceptor is specified here, packets for this data source will be
3587    /// rerouted to the interceptor instead of the main trace buffer. This can be
3588    /// used, for example, to write trace data into ETW or for logging trace points
3589    /// to the console.
3590    ///
3591    /// Note that interceptors are only supported by data sources registered
3592    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3593    /// traced_probes) may not support interception.
3594    #[prost(message, optional, tag="115")]
3595    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3596    /// Data source name: android.network_packets.
3597    /// Introduced in Android 14 (U).
3598    #[prost(message, optional, tag="120")]
3599    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3600    /// Data source name: android.surfaceflinger.layers
3601    #[prost(message, optional, tag="121")]
3602    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3603    /// Data source name: android.surfaceflinger.transactions
3604    #[prost(message, optional, tag="123")]
3605    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3606    /// Data source name: android.sdk_sysprop_guard
3607    /// Introduced in Android 14 (U) QPR1.
3608    #[prost(message, optional, tag="124")]
3609    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3610    /// Data source name: windows.etw
3611    #[prost(message, optional, tag="125")]
3612    pub etw_config: ::core::option::Option<EtwConfig>,
3613    /// Data source name: android.protolog
3614    #[prost(message, optional, tag="126")]
3615    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3616    /// Data source name: android.input.inputevent
3617    #[prost(message, optional, tag="128")]
3618    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3619    /// Data source name: android.pixel.modem
3620    #[prost(message, optional, tag="129")]
3621    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3622    /// Data source name: android.windowmanager
3623    #[prost(message, optional, tag="130")]
3624    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3625    /// Data source name: org.chromium.system_metrics
3626    #[prost(message, optional, tag="131")]
3627    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3628    /// Data source name: android.kernel_wakelocks
3629    #[prost(message, optional, tag="132")]
3630    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3631    /// Data source name: gpu.renderstages
3632    #[prost(message, optional, tag="133")]
3633    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3634    /// Data source name: org.chromium.histogram_samples
3635    #[prost(message, optional, tag="134")]
3636    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3637    /// Data source name: android.app_wakelocks
3638    #[prost(message, optional, tag="135")]
3639    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3640    /// Data source name: android.cpu_per_uid
3641    #[prost(message, optional, tag="137")]
3642    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3643    /// Data source name: android.user_list
3644    #[prost(message, optional, tag="138")]
3645    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
3646    /// Data source name: android.inputmethod
3647    #[prost(message, optional, tag="139")]
3648    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
3649    /// Data source name: qnx.kernel
3650    #[prost(message, optional, tag="150")]
3651    pub qnx_config: ::core::option::Option<QnxConfig>,
3652    /// This is a fallback mechanism to send a free-form text config to the
3653    /// producer. In theory this should never be needed. All the code that
3654    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3655    /// the trace config proto and propagate unknown fields. However, if anything
3656    /// in the pipeline (client or backend) ends up breaking this forward compat
3657    /// plan, this field will become the escape hatch to allow future data sources
3658    /// to get some meaningful configuration.
3659    #[prost(string, optional, tag="1000")]
3660    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3661    /// This field is only used for testing.
3662    #[prost(message, optional, tag="1001")]
3663    pub for_testing: ::core::option::Option<TestConfig>,
3664}
3665/// Nested message and enum types in `DataSourceConfig`.
3666pub mod data_source_config {
3667    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3668    #[repr(i32)]
3669    pub enum SessionInitiator {
3670        Unspecified = 0,
3671        /// This trace was initiated from a trusted system app has DUMP and
3672        /// USAGE_STATS permission. This system app is expected to not expose the
3673        /// trace to the user of the device.
3674        /// This is determined by checking the UID initiating the trace.
3675        TrustedSystem = 1,
3676    }
3677    impl SessionInitiator {
3678        /// String value of the enum field names used in the ProtoBuf definition.
3679        ///
3680        /// The values are not transformed in any way and thus are considered stable
3681        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3682        pub fn as_str_name(&self) -> &'static str {
3683            match self {
3684                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3685                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3686            }
3687        }
3688    }
3689    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3690    #[repr(i32)]
3691    pub enum BufferExhaustedPolicy {
3692        /// The data source will use its default buffer exhausted policy, specified
3693        /// by the code when the data source is registered.
3694        BufferExhaustedUnspecified = 0,
3695        /// The data source will drop packets when there's no space in the shared
3696        /// memory buffer.
3697        BufferExhaustedDrop = 1,
3698        /// The data source will wait when there's no space in the shared memory
3699        /// buffer. If there's still not space, after a few seconds, the whole
3700        /// producer process will be aborted.
3701        BufferExhaustedStallThenAbort = 2,
3702        /// The data source will wait when there's no space in the shared memory
3703        /// buffer.  If there's still not space, after a few seconds, the data source
3704        /// will drop packets.
3705        BufferExhaustedStallThenDrop = 3,
3706    }
3707    impl BufferExhaustedPolicy {
3708        /// String value of the enum field names used in the ProtoBuf definition.
3709        ///
3710        /// The values are not transformed in any way and thus are considered stable
3711        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3712        pub fn as_str_name(&self) -> &'static str {
3713            match self {
3714                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3715                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3716                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3717                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3718            }
3719        }
3720    }
3721}
3722// End of protos/perfetto/config/data_source_config.proto
3723
3724// Begin of protos/perfetto/config/trace_config.proto
3725
3726/// The overall config that is used when starting a new tracing session through
3727/// ProducerPort::StartTracing().
3728/// It contains the general config for the logging buffer(s) and the configs for
3729/// all the data source being enabled.
3730///
3731/// Next id: 47.
3732#[derive(Clone, PartialEq, ::prost::Message)]
3733pub struct TraceConfig {
3734    #[prost(message, repeated, tag="1")]
3735    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3736    #[prost(message, repeated, tag="2")]
3737    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3738    #[prost(message, optional, tag="20")]
3739    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3740    /// If specified, the trace will be stopped |duration_ms| after starting.
3741    /// This does *not* count the time the system is suspended, so we will run
3742    /// for duration_ms of system activity, not wall time.
3743    ///
3744    /// However in case of traces with triggers, see
3745    /// TriggerConfig.trigger_timeout_ms instead.
3746    #[prost(uint32, optional, tag="3")]
3747    pub duration_ms: ::core::option::Option<u32>,
3748    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3749    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3750    /// Linux/Android, no-op on other platforms. This is used when dealing with
3751    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3752    /// wall-time, making them more likely to hit device reboots (and hence loss).
3753    /// This option also changes consistently the semantic of
3754    /// TriggerConfig.stop_delay_ms.
3755    #[prost(bool, optional, tag="36")]
3756    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3757    /// This is set when --dropbox is passed to the Perfetto command line client
3758    /// and enables guardrails that limit resource usage for traces requested
3759    /// by statsd.
3760    #[prost(bool, optional, tag="4")]
3761    pub enable_extra_guardrails: ::core::option::Option<bool>,
3762    /// Reject producers that are not running under the same UID as the tracing
3763    /// service.
3764    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3765    pub lockdown_mode: ::core::option::Option<i32>,
3766    #[prost(message, repeated, tag="6")]
3767    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3768    /// Statsd-specific metadata.
3769    #[prost(message, optional, tag="7")]
3770    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3771    /// When true && |output_path| is empty, the EnableTracing() request must
3772    /// provide a file descriptor. The service will then periodically read packets
3773    /// out of the trace buffer and store it into the passed file.
3774    /// If |output_path| is not empty no fd should be passed, the service
3775    /// will create a new file and write into that (see comment below).
3776    #[prost(bool, optional, tag="8")]
3777    pub write_into_file: ::core::option::Option<bool>,
3778    /// This must point to a non-existing file. If the file exists the service
3779    /// will NOT overwrite and will fail instead as a security precaution.
3780    /// On Android, when this is used with the system traced, the path must be
3781    /// within /data/misc/perfetto-traces/ or the trace will fail.
3782    /// This option has been introduced in Android R. Before R write_into_file
3783    /// can be used only with the "pass a file descriptor over IPC" mode.
3784    #[prost(string, optional, tag="29")]
3785    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3786    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3787    /// enforced (i.e. smaller values are ignored).
3788    #[prost(uint32, optional, tag="9")]
3789    pub file_write_period_ms: ::core::option::Option<u32>,
3790    /// Optional. When non zero the periodic write stops once at most X bytes
3791    /// have been written into the file. Tracing is disabled when this limit is
3792    /// reached, even if |duration_ms| has not been reached yet.
3793    #[prost(uint64, optional, tag="10")]
3794    pub max_file_size_bytes: ::core::option::Option<u64>,
3795    #[prost(message, optional, tag="11")]
3796    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3797    /// When true, data sources are not started until an explicit call to
3798    /// StartTracing() on the consumer port. This is to support early
3799    /// initialization and fast trace triggering. This can be used only when the
3800    /// Consumer explicitly triggers the StartTracing() method.
3801    /// This should not be used in a remote trace config via statsd, doing so will
3802    /// result in a hung trace session.
3803    #[prost(bool, optional, tag="12")]
3804    pub deferred_start: ::core::option::Option<bool>,
3805    /// When set, it periodically issues a Flush() to all data source, forcing them
3806    /// to commit their data into the tracing service. This can be used for
3807    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3808    /// events in the trace in windows of X ms.
3809    ///
3810    /// Warning: Perfetto automatically handles periodic flushing so in most
3811    /// scenarios setting this field is not needed. High frequency flushing can
3812    /// significantly impact performance.
3813    #[prost(uint32, optional, tag="13")]
3814    pub flush_period_ms: ::core::option::Option<u32>,
3815    /// Wait for this long for producers to acknowledge flush requests.
3816    /// Default 5s.
3817    #[prost(uint32, optional, tag="14")]
3818    pub flush_timeout_ms: ::core::option::Option<u32>,
3819    /// Wait for this long for producers to acknowledge stop requests.
3820    /// Default 5s.
3821    #[prost(uint32, optional, tag="23")]
3822    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3823    /// Android-only. If set, sends an intent to the Traceur system app when the
3824    /// trace ends to notify it about the trace readiness.
3825    #[prost(bool, optional, tag="16")]
3826    pub notify_traceur: ::core::option::Option<bool>,
3827    /// This field was introduced in Android S.
3828    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3829    /// for being attached to a bugreport. This field effectively acts as a z-index
3830    /// for bugreports. When Android's dumpstate runs perfetto
3831    /// --save-for-bugreport, traced will pick the tracing session with the highest
3832    /// score (score <= 0 is ignored) and:
3833    /// On Android S, T:  will steal its contents, save the trace into
3834    ///      a known path and stop prematurely.
3835    /// On Android U+: will create a read-only snapshot and save that into a known
3836    ///      path, without stoppin the original tracing session.
3837    /// When this field is set the tracing session becomes eligible to be cloned
3838    /// by other UIDs.
3839    #[prost(int32, optional, tag="30")]
3840    pub bugreport_score: ::core::option::Option<i32>,
3841    /// When set, defines name of the file that will be saved under
3842    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3843    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3844    /// starting from the highest `bugreport_score`.
3845    /// Introduced in v42 / Android V.
3846    #[prost(string, optional, tag="38")]
3847    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3848    #[prost(message, optional, tag="17")]
3849    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3850    /// When this is non-empty the perfetto command line tool will ignore the rest
3851    /// of this TraceConfig and instead connect to the perfetto service as a
3852    /// producer and send these triggers, potentially stopping or starting traces
3853    /// that were previous configured to use a TriggerConfig.
3854    #[prost(string, repeated, tag="18")]
3855    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3856    #[prost(message, optional, tag="21")]
3857    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3858    /// No longer needed as we unconditionally allow tracing on user builds.
3859    #[deprecated]
3860    #[prost(bool, optional, tag="19")]
3861    pub allow_user_build_tracing: ::core::option::Option<bool>,
3862    /// If set the tracing service will ensure there is at most one tracing session
3863    /// with this key.
3864    #[prost(string, optional, tag="22")]
3865    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3866    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3867    pub compression_type: ::core::option::Option<i32>,
3868    #[prost(message, optional, tag="25")]
3869    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3870    /// Android-only. Not for general use. If specified, sets the logging to statsd
3871    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3872    /// this to enabled (if not explicitly set in the config) when specifying
3873    /// --upload.
3874    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3875    pub statsd_logging: ::core::option::Option<i32>,
3876    /// An identifier clients can use to tie this trace to other logging.
3877    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3878    /// Trace UUID. If this field is set, the tracing service will respect the
3879    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3880    /// gap-less snapshotting is not used.
3881    #[deprecated]
3882    #[prost(int64, optional, tag="27")]
3883    pub trace_uuid_msb: ::core::option::Option<i64>,
3884    #[deprecated]
3885    #[prost(int64, optional, tag="28")]
3886    pub trace_uuid_lsb: ::core::option::Option<i64>,
3887    #[prost(message, optional, tag="33")]
3888    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3889    #[prost(message, optional, tag="34")]
3890    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3891    #[prost(message, optional, tag="35")]
3892    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3893    #[prost(message, repeated, tag="39")]
3894    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3895    /// Priority boost to be applied to the traced process, when the session is
3896    /// running.
3897    #[prost(message, optional, tag="40")]
3898    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3899    /// When set to a value > 0, this tracing session will be started in
3900    /// "exclusive mode". This has the following semantics:
3901    /// - It can only be set by shell or root users.
3902    /// - A new exclusive session will only be started if its priority is strictly
3903    ///    higher than any other active tracing session.
3904    /// - If a new exclusive session is started, all other existing tracing
3905    ///    sessions (exclusive or not) are aborted.
3906    /// - While an exclusive session is active, any new non-exclusive session (or
3907    ///    any exclusive session with a lower or equal priority) will be rejected.
3908    ///
3909    /// Introduced in: perfetto v52.
3910    /// Supported on: Android 25Q3+.
3911    #[prost(uint32, optional, tag="41")]
3912    pub exclusive_prio: ::core::option::Option<u32>,
3913    /// Configures how the service should handle flushing data from producers
3914    /// before periodically writing the trace into the output file.
3915    /// Only applicable when |write_into_file| is true.
3916    ///
3917    /// By default, if |write_into_file| is set, the service periodically issues
3918    /// a Flush() to all data sources before writing buffers into the file.
3919    /// This ensures the file always contains the latest available data.
3920    ///
3921    /// Introduced in: perfetto v54.
3922    /// Supported on: Android 26Q1+.
3923    #[prost(enumeration="trace_config::WriteFlushMode", optional, tag="44")]
3924    pub write_flush_mode: ::core::option::Option<i32>,
3925    /// Whether to sync the output file to storage after each periodic write pass.
3926    /// Only applicable when |write_into_file| is true.
3927    ///
3928    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
3929    /// sync to storage on every write.
3930    ///
3931    /// Introduced in: perfetto v54.
3932    /// Supported on: Android 26Q1+.
3933    #[prost(enumeration="trace_config::FFlushMode", optional, tag="45")]
3934    pub fflush_post_write: ::core::option::Option<i32>,
3935    /// When true, data sources in remote producers (machines connected via
3936    /// traced_relay) will be matched by default. When false (the default), data
3937    /// sources only match the host machine. In either case, an explicit
3938    /// |DataSource.machine_name_filter| takes priority.
3939    ///
3940    /// NB: perfetto versions before v54 do not have this option and match across
3941    /// machines by default. To be compatible across this version boundary, either
3942    /// set this field to true, or set an explicit machine_name_filter on all data
3943    /// sources.
3944    ///
3945    /// Introduced in: perfetto v54.
3946    #[prost(bool, optional, tag="43")]
3947    pub trace_all_machines: ::core::option::Option<bool>,
3948    #[prost(message, repeated, tag="46")]
3949    pub notes: ::prost::alloc::vec::Vec<trace_config::Note>,
3950}
3951/// Nested message and enum types in `TraceConfig`.
3952pub mod trace_config {
3953    #[derive(Clone, PartialEq, ::prost::Message)]
3954    pub struct BufferConfig {
3955        #[prost(uint32, optional, tag="1")]
3956        pub size_kb: ::core::option::Option<u32>,
3957        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3958        pub fill_policy: ::core::option::Option<i32>,
3959        /// When true the buffer is moved (rather than copied) onto the cloned
3960        /// session, and an empty buffer of the same size is allocated in the source
3961        /// tracing session. This feature will likely get deprecated in the future.
3962        /// It been introduced mainly to support the surfaceflinger snapshot dump
3963        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3964        /// that case we don't want to retain another in-memory copy of the buffer.
3965        #[prost(bool, optional, tag="5")]
3966        pub transfer_on_clone: ::core::option::Option<bool>,
3967        /// Used in conjunction with transfer_on_clone. When true the buffer is
3968        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3969        /// that if the data source took too long to write the data in a previous
3970        /// clone-related flush, we don't end up with a mixture of leftovers from
3971        /// the previous write and new data.
3972        #[prost(bool, optional, tag="6")]
3973        pub clear_before_clone: ::core::option::Option<bool>,
3974        /// Optional name for this buffer. If set, data sources can reference this
3975        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
3976        /// using the buffer index. Buffer names must be unique within a tracing
3977        /// session. This provides a more human-readable and less error-prone way to
3978        /// configure which buffer a data source writes to.
3979        #[prost(string, optional, tag="7")]
3980        pub name: ::core::option::Option<::prost::alloc::string::String>,
3981        #[prost(enumeration="buffer_config::ExperimentalMode", optional, tag="8")]
3982        pub experimental_mode: ::core::option::Option<i32>,
3983    }
3984    /// Nested message and enum types in `BufferConfig`.
3985    pub mod buffer_config {
3986        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3987        #[repr(i32)]
3988        pub enum FillPolicy {
3989            Unspecified = 0,
3990            /// Default behavior. The buffer operates as a conventional ring buffer.
3991            /// If the writer is faster than the reader (or if the reader reads only
3992            /// after tracing is stopped) newly written packets will overwrite old
3993            /// packets.
3994            RingBuffer = 1,
3995            /// Behaves like RING_BUFFER as long as there is space in the buffer or
3996            /// the reader catches up with the writer. As soon as the writer hits
3997            /// an unread chunk, it stops accepting new data in the buffer.
3998            Discard = 2,
3999        }
4000        impl FillPolicy {
4001            /// String value of the enum field names used in the ProtoBuf definition.
4002            ///
4003            /// The values are not transformed in any way and thus are considered stable
4004            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4005            pub fn as_str_name(&self) -> &'static str {
4006                match self {
4007                    FillPolicy::Unspecified => "UNSPECIFIED",
4008                    FillPolicy::RingBuffer => "RING_BUFFER",
4009                    FillPolicy::Discard => "DISCARD",
4010                }
4011            }
4012        }
4013        /// When true, uses the experimental TraceBufferV2 implementation for this
4014        /// buffer. This is for testing purposes only and may be removed in future
4015        /// versions.
4016        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4017        #[repr(i32)]
4018        pub enum ExperimentalMode {
4019            /// Use the default V1 implementation.
4020            ModeUnspecified = 0,
4021            /// Use TraceBufferV2.
4022            TraceBufferV2 = 1,
4023            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
4024            /// but only V1 data is returned. Comparison stats are reported to
4025            /// validate V2 returns equivalent data.
4026            TraceBufferV2ShadowMode = 2,
4027        }
4028        impl ExperimentalMode {
4029            /// String value of the enum field names used in the ProtoBuf definition.
4030            ///
4031            /// The values are not transformed in any way and thus are considered stable
4032            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4033            pub fn as_str_name(&self) -> &'static str {
4034                match self {
4035                    ExperimentalMode::ModeUnspecified => "MODE_UNSPECIFIED",
4036                    ExperimentalMode::TraceBufferV2 => "TRACE_BUFFER_V2",
4037                    ExperimentalMode::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
4038                }
4039            }
4040        }
4041    }
4042    #[derive(Clone, PartialEq, ::prost::Message)]
4043    pub struct DataSource {
4044        /// Filters and data-source specific config. It contains also the unique name
4045        /// of the data source, the one passed in the  DataSourceDescriptor when they
4046        /// register on the service.
4047        #[prost(message, optional, tag="1")]
4048        pub config: ::core::option::Option<super::DataSourceConfig>,
4049        /// Optional. If multiple producers (~processes) expose the same data source
4050        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
4051        /// the data source is enabled only for producers whose names match any of
4052        /// the filters.
4053        /// |producer_name_filter| has to be an exact match, while
4054        /// |producer_name_regex_filter| is a regular expression.
4055        /// This allows to enable a data source only for specific processes.
4056        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
4057        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
4058        #[prost(string, repeated, tag="2")]
4059        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4060        #[prost(string, repeated, tag="3")]
4061        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4062        /// Filter by machine names. The name of a machine is determined by the
4063        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
4064        /// variable is not set then the
4065        /// persist.traced_relay.machine_name system property is used. If the
4066        /// sysprop isn't set or not in an Android system, then the machine name by
4067        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
4068        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
4069        /// to the host machine, which is the machine running traced.
4070        #[prost(string, repeated, tag="4")]
4071        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4072    }
4073    /// Config for disabling builtin data sources in the tracing service.
4074    #[derive(Clone, PartialEq, ::prost::Message)]
4075    pub struct BuiltinDataSource {
4076        /// Disable emitting clock timestamps into the trace.
4077        #[prost(bool, optional, tag="1")]
4078        pub disable_clock_snapshotting: ::core::option::Option<bool>,
4079        /// Disable echoing the original trace config in the trace.
4080        #[prost(bool, optional, tag="2")]
4081        pub disable_trace_config: ::core::option::Option<bool>,
4082        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
4083        #[prost(bool, optional, tag="3")]
4084        pub disable_system_info: ::core::option::Option<bool>,
4085        /// Disable emitting events for data-source state changes (e.g. the marker
4086        /// for all data sources having ACKed the start of the trace).
4087        #[prost(bool, optional, tag="4")]
4088        pub disable_service_events: ::core::option::Option<bool>,
4089        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
4090        /// also ClockSnapshot's primary_trace_clock. The configured value is written
4091        /// into the trace as part of the ClockSnapshots emitted by the service.
4092        /// Trace processor will attempt to translate packet/event timestamps from
4093        /// various data sources (and their chosen clock domains) to this domain
4094        /// during import. Added in Android R.
4095        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
4096        pub primary_trace_clock: ::core::option::Option<i32>,
4097        /// Time interval in between snapshotting of sync markers, clock snapshots,
4098        /// stats, and other periodic service-emitted events. Note that the service
4099        /// only keeps track of the first and the most recent snapshot until
4100        /// ReadBuffers() is called.
4101        #[prost(uint32, optional, tag="6")]
4102        pub snapshot_interval_ms: ::core::option::Option<u32>,
4103        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
4104        /// clock should be used for periodic snapshots of service-emitted events.
4105        /// This means, if a snapshot *should* have happened during suspend, it will
4106        /// happen immediately after the device resumes.
4107        ///
4108        /// Choosing a clock like this is done on best-effort basis; not all
4109        /// platforms (e.g. Windows) expose a clock which can be used for periodic
4110        /// tasks counting suspend. If such a clock is not available, the service
4111        /// falls back to the best-available alternative.
4112        ///
4113        /// Introduced in Android S.
4114        /// TODO(lalitm): deprecate this in T and make this the default if nothing
4115        /// crashes in S.
4116        #[prost(bool, optional, tag="7")]
4117        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
4118        /// Disables the reporting of per-trace-writer histograms in TraceStats.
4119        #[prost(bool, optional, tag="8")]
4120        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
4121    }
4122    #[derive(Clone, PartialEq, ::prost::Message)]
4123    pub struct ProducerConfig {
4124        /// Identifies the producer for which this config is for.
4125        #[prost(string, optional, tag="1")]
4126        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
4127        /// Specifies the preferred size of the shared memory buffer. If the size is
4128        /// larger than the max size, the max will be used. If it is smaller than
4129        /// the page size or doesn't fit pages evenly into it, it will fall back to
4130        /// the size specified by the producer or finally the default shared memory
4131        /// size.
4132        #[prost(uint32, optional, tag="2")]
4133        pub shm_size_kb: ::core::option::Option<u32>,
4134        /// Specifies the preferred size of each page in the shared memory buffer.
4135        /// Must be an integer multiple of 4K.
4136        #[prost(uint32, optional, tag="3")]
4137        pub page_size_kb: ::core::option::Option<u32>,
4138    }
4139    /// Contains statsd-specific metadata about an alert associated with the trace.
4140    #[derive(Clone, PartialEq, ::prost::Message)]
4141    pub struct StatsdMetadata {
4142        /// The identifier of the alert which triggered this trace.
4143        #[prost(int64, optional, tag="1")]
4144        pub triggering_alert_id: ::core::option::Option<i64>,
4145        /// The uid which registered the triggering configuration with statsd.
4146        #[prost(int32, optional, tag="2")]
4147        pub triggering_config_uid: ::core::option::Option<i32>,
4148        /// The identifier of the config which triggered the alert.
4149        #[prost(int64, optional, tag="3")]
4150        pub triggering_config_id: ::core::option::Option<i64>,
4151        /// The identifier of the subscription which triggered this trace.
4152        #[prost(int64, optional, tag="4")]
4153        pub triggering_subscription_id: ::core::option::Option<i64>,
4154    }
4155    /// Contains flags which override the default values of the guardrails inside
4156    /// Perfetto.
4157    #[derive(Clone, PartialEq, ::prost::Message)]
4158    pub struct GuardrailOverrides {
4159        /// Override the default limit (in bytes) for uploading data to server within
4160        /// a 24 hour period.
4161        /// On R-, this override only affected userdebug builds. Since S, it also
4162        /// affects user builds.
4163        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
4164        /// was removed from Perfetto.
4165        #[deprecated]
4166        #[prost(uint64, optional, tag="1")]
4167        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
4168        /// Overrides the guardrail for maximum trace buffer size.
4169        /// Available on U+
4170        #[prost(uint32, optional, tag="2")]
4171        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
4172    }
4173    /// Triggers allow producers to start or stop the tracing session when an event
4174    /// occurs.
4175    ///
4176    /// For example if we are tracing probabilistically, most traces will be
4177    /// uninteresting. Triggers allow us to keep only the interesting ones such as
4178    /// those traces during which the device temperature reached a certain
4179    /// threshold. In this case the producer can activate a trigger to keep
4180    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
4181    /// (START_TRACING) because it knows something is about to happen.
4182    #[derive(Clone, PartialEq, ::prost::Message)]
4183    pub struct TriggerConfig {
4184        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
4185        pub trigger_mode: ::core::option::Option<i32>,
4186        /// This flag is really a workaround for b/274931668. This is needed only
4187        /// when deploying configs to different versions of the tracing service.
4188        /// When this is set to true this has the same effect of setting trigger_mode
4189        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
4190        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
4191        /// versions of Android and fall back to STOP_TRACING on older versions where
4192        /// CLONE_SNAPSHOT did not exist.
4193        /// When using this flag, trigger_mode must be set to STOP_TRACING.
4194        #[prost(bool, optional, tag="5")]
4195        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
4196        /// A list of triggers which are related to this configuration. If ANY
4197        /// trigger is seen then an action will be performed based on |trigger_mode|.
4198        #[prost(message, repeated, tag="2")]
4199        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
4200        /// Required and must be positive if a TriggerConfig is specified. This is
4201        /// how long this TraceConfig should wait for a trigger to arrive. After this
4202        /// period of time if no trigger is seen the TracingSession will be cleaned
4203        /// up.
4204        #[prost(uint32, optional, tag="3")]
4205        pub trigger_timeout_ms: ::core::option::Option<u32>,
4206    }
4207    /// Nested message and enum types in `TriggerConfig`.
4208    pub mod trigger_config {
4209        #[derive(Clone, PartialEq, ::prost::Message)]
4210        pub struct Trigger {
4211            /// The producer must specify this name to activate the trigger.
4212            #[prost(string, optional, tag="1")]
4213            pub name: ::core::option::Option<::prost::alloc::string::String>,
4214            /// An std::regex that will match the producer that can activate this
4215            /// trigger. This is optional. If unset any producers can activate this
4216            /// trigger.
4217            #[prost(string, optional, tag="2")]
4218            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
4219            /// After a trigger is received either in START_TRACING or STOP_TRACING
4220            /// mode then the trace will end |stop_delay_ms| after triggering.
4221            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
4222            /// snapshot.
4223            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
4224            /// based on wall-clock, counting also time in suspend.
4225            #[prost(uint32, optional, tag="3")]
4226            pub stop_delay_ms: ::core::option::Option<u32>,
4227            /// Limits the number of traces this trigger can start/stop in a rolling
4228            /// 24 hour window. If this field is unset or zero, no limit is applied and
4229            /// activiation of this trigger *always* starts/stops the trace.
4230            #[prost(uint32, optional, tag="4")]
4231            pub max_per_24_h: ::core::option::Option<u32>,
4232            /// A value between 0 and 1 which encodes the probability of skipping a
4233            /// trigger with this name. This is useful for reducing the probability
4234            /// of high-frequency triggers from dominating trace finaization. If this
4235            /// field is unset or zero, the trigger will *never* be skipped. If this
4236            /// field is greater than or equal to 1, this trigger will *always* be
4237            /// skipped i.e. it will be as if this trigger was never included in the
4238            /// first place.
4239            /// This probability check is applied *before* any other limits. For
4240            /// example, if |max_per_24_h| is also set, first we will check if the
4241            /// probability bar is met and only then will we check the |max_per_24_h|
4242            /// limit.
4243            #[prost(double, optional, tag="5")]
4244            pub skip_probability: ::core::option::Option<f64>,
4245        }
4246        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4247        #[repr(i32)]
4248        pub enum TriggerMode {
4249            Unspecified = 0,
4250            /// When this mode is chosen, data sources are not started until one of the
4251            /// |triggers| are received. This supports early initialization and fast
4252            /// starting of the tracing system. On triggering, the session will then
4253            /// record for |stop_delay_ms|. However if no trigger is seen
4254            /// after |trigger_timeout_ms| the session will be stopped and no data will
4255            /// be returned.
4256            StartTracing = 1,
4257            /// When this mode is chosen, the session will be started via the normal
4258            /// EnableTracing() & StartTracing(). If no trigger is ever seen
4259            /// the session will be stopped after |trigger_timeout_ms| and no data will
4260            /// be returned. However if triggered the trace will stop after
4261            /// |stop_delay_ms| and any data in the buffer will be returned to the
4262            /// consumer.
4263            StopTracing = 2,
4264            /// When this mode is chosen, this causes a snapshot of the current tracing
4265            /// session to be created after |stop_delay_ms| while the current tracing
4266            /// session continues undisturbed (% an extra flush). This mode can be
4267            /// used only when the tracing session is handled by the "perfetto" cmdline
4268            /// client (which is true in 90% of cases). Part of the business logic
4269            /// necessary for this behavior, and ensuing file handling, lives in
4270            /// perfetto_cmd.cc . On other consumers, this causes only a notification
4271            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
4272            /// consumer is supposed to call CloneSession() itself after the event.
4273            /// Use use_clone_snapshot_if_available=true when targeting older versions
4274            /// of perfetto.
4275            CloneSnapshot = 4,
4276        }
4277        impl TriggerMode {
4278            /// String value of the enum field names used in the ProtoBuf definition.
4279            ///
4280            /// The values are not transformed in any way and thus are considered stable
4281            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4282            pub fn as_str_name(&self) -> &'static str {
4283                match self {
4284                    TriggerMode::Unspecified => "UNSPECIFIED",
4285                    TriggerMode::StartTracing => "START_TRACING",
4286                    TriggerMode::StopTracing => "STOP_TRACING",
4287                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
4288                }
4289            }
4290        }
4291    }
4292    /// Configuration for trace contents that reference earlier trace data. For
4293    /// example, a data source might intern strings, and emit packets containing
4294    /// {interned id : string} pairs. Future packets from that data source can then
4295    /// use the interned ids instead of duplicating the raw string contents. The
4296    /// trace parser will then need to use that interning table to fully interpret
4297    /// the rest of the trace.
4298    #[derive(Clone, PartialEq, ::prost::Message)]
4299    pub struct IncrementalStateConfig {
4300        /// If nonzero, notify eligible data sources to clear their incremental state
4301        /// periodically, with the given period. The notification is sent only to
4302        /// data sources that have |handles_incremental_state_clear| set in their
4303        /// DataSourceDescriptor. The notification requests that the data source
4304        /// stops referring to past trace contents. This is particularly useful when
4305        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
4306        /// trace data.
4307        ///
4308        /// Warning: this time-based global clearing is likely to be removed in the
4309        /// future, to be replaced with a smarter way of sending the notifications
4310        /// only when necessary.
4311        #[prost(uint32, optional, tag="1")]
4312        pub clear_period_ms: ::core::option::Option<u32>,
4313    }
4314    /// Android-only. Not for general use. If set, saves the trace into an
4315    /// incident. This field is read by perfetto_cmd, rather than the tracing
4316    /// service. This field must be set when passing the --upload flag to
4317    /// perfetto_cmd.
4318    ///
4319    /// In this message, either:
4320    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4321    ///     must be set.
4322    ///   * |skip_incidentd| must be explicitly set to true.
4323    #[derive(Clone, PartialEq, ::prost::Message)]
4324    pub struct IncidentReportConfig {
4325        #[prost(string, optional, tag="1")]
4326        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4327        #[prost(string, optional, tag="2")]
4328        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4329        /// Level of filtering in the requested incident. See |Destination| in
4330        /// frameworks/base/core/proto/android/privacy.proto.
4331        #[prost(int32, optional, tag="3")]
4332        pub privacy_level: ::core::option::Option<i32>,
4333        /// If true, then skips saving the trace to incidentd.
4334        ///
4335        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4336        /// or when we explicitly don't want traces to go to incidentd even when they
4337        /// usually would (e.g. configs deployed using statsd but only used for
4338        /// inclusion in bugreports using |bugreport_score|).
4339        ///
4340        /// The motivation for having this flag, instead of just not setting
4341        /// |incident_report_config|, is prevent accidents where
4342        /// |incident_report_config| is omitted by mistake.
4343        #[prost(bool, optional, tag="5")]
4344        pub skip_incidentd: ::core::option::Option<bool>,
4345        /// If true, do not write the trace into dropbox (i.e. incident only).
4346        /// Otherwise, write to both dropbox and incident.
4347        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4348        #[deprecated]
4349        #[prost(bool, optional, tag="4")]
4350        pub skip_dropbox: ::core::option::Option<bool>,
4351    }
4352    /// When set applies a post-filter to the trace contents using the filter
4353    /// provided. The filter is applied at ReadBuffers() time and works both in the
4354    /// case of IPC readback and write_into_file. This filter can be generated
4355    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4356    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4357    /// design.
4358    ///
4359    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4360    /// Android T with a different field number. Updated in Android U with a new
4361    /// bytecode version which supports string filtering.
4362    ///
4363    /// =========================
4364    /// Filter bytecode.
4365    /// =========================
4366    #[derive(Clone, PartialEq, ::prost::Message)]
4367    pub struct TraceFilter {
4368        /// The bytecode as implemented in Android T.
4369        #[prost(bytes="vec", optional, tag="1")]
4370        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4371        /// The bytecode as implemented in Android U. Adds support for string
4372        /// filtering.
4373        #[prost(bytes="vec", optional, tag="2")]
4374        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4375        #[prost(message, optional, tag="3")]
4376        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4377        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
4378        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
4379        /// versions ignore this field; new versions apply it.
4380        ///
4381        /// The motivation for this is that adding new opcodes in a backwards
4382        /// compatible way while also minimizing config size is hard. Instead, the
4383        /// overlay mechanism allows us to "patch" specific fields in the original
4384        /// bytecode_v2 with new semantics.
4385        ///
4386        /// See RFC 0011-subset-string-filter-rules.md for more info.
4387        ///
4388        /// Note:
4389        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
4390        /// markers), this overlay uses a triplet format with explicit indices:
4391        ///    [msg_index, field_id << 3 | opcode, argument] ... \[checksum\]
4392        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
4393        /// Entries must be sorted by (msg_index, field_id).
4394        ///
4395        /// The parser processes bytecode_v2 and this overlay simultaneously:
4396        ///   - any field not mentioned in the overlay is parsed as usual
4397        ///   - any field in the overlay but *not* in the bytecode_v2 is added
4398        ///     with its overlay value
4399        ///   - any field in both the overlay and bytecode_v2 takes the value in the
4400        ///     overlay, the bytecode_v2 value is ignored.
4401        ///
4402        /// Introduced in: Perfetto v54.
4403        #[prost(bytes="vec", optional, tag="4")]
4404        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4405        /// String filter chain for Perfetto v54+. Rules in this chain either
4406        /// overwrite rules in string_filter_chain (if the name matches) or are
4407        /// appended (if the name doesn't match). This allows modifying existing
4408        /// rules (e.g., changing policy) without duplicating the entire chain.
4409        /// Rules without a name are always appended.
4410        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4411        /// Introduced in: Perfetto v54.
4412        #[prost(message, optional, tag="5")]
4413        pub string_filter_chain_v54: ::core::option::Option<trace_filter::StringFilterChain>,
4414    }
4415    /// Nested message and enum types in `TraceFilter`.
4416    pub mod trace_filter {
4417        /// A rule specifies how strings should be filtered.
4418        #[derive(Clone, PartialEq, ::prost::Message)]
4419        pub struct StringFilterRule {
4420            /// The policy (i.e. algorithm) dictating how strings matching this rule
4421            /// should be handled.
4422            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
4423            pub policy: ::core::option::Option<i32>,
4424            /// The regex pattern used to match against each string.
4425            #[prost(string, optional, tag="2")]
4426            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
4427            /// The string which should appear after the tgid in atrace tracepoint
4428            /// strings.
4429            #[prost(string, optional, tag="3")]
4430            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
4431            /// Optional name for the rule. When merging chains (e.g. via
4432            /// string_filter_chain_v54), rules with matching names in the newer chain
4433            /// will overwrite rules in the base chain. Rules without a name (empty or
4434            /// unset) are always treated as distinct and will be appended.
4435            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4436            /// Introduced in: Perfetto v54.
4437            #[prost(string, optional, tag="4")]
4438            pub name: ::core::option::Option<::prost::alloc::string::String>,
4439            /// The semantic types this rule applies to.
4440            ///
4441            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
4442            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
4443            /// - If non-empty, the rule applies only to fields whose semantic type
4444            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
4445            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
4446            ///
4447            /// Examples:
4448            ///    semantic_type: []           -> matches only UNSPECIFIED fields
4449            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
4450            ///    semantic_type: [UNSPECIFIED, ATRACE] -> matches both
4451            ///
4452            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4453            /// Introduced in: Perfetto v54.
4454            #[prost(enumeration="super::super::SemanticType", repeated, packed="false", tag="5")]
4455            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
4456        }
4457        /// A chain is a list of rules which string will be sequentially checked
4458        /// against.
4459        #[derive(Clone, PartialEq, ::prost::Message)]
4460        pub struct StringFilterChain {
4461            #[prost(message, repeated, tag="1")]
4462            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
4463        }
4464        // =========================
4465        // String filtering
4466        // =========================
4467
4468        // The principles and terminology of string filtering is heavily inspired by
4469        // iptables. A "rule" decide how strings should be filtered. Each rule
4470        // contains a "policy" which indicates the algorithm to use for filtering.
4471        // A "chain" is a list of rules which will be sequentially checked against
4472        // each string.
4473        //
4474        // The first rule which applies to the string terminates filtering for that
4475        // string. If no rules apply, the string is left unchanged.
4476
4477        /// A policy specifies which algorithm should be used for filtering the
4478        /// string.
4479        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4480        #[repr(i32)]
4481        pub enum StringFilterPolicy {
4482            SfpUnspecified = 0,
4483            /// Tries to match the string field against |regex_pattern|. If it
4484            /// matches, all matching groups are "redacted" (i.e. replaced with a
4485            /// constant string) and filtering is terminated (i.e. no further rules are
4486            /// checked). If it doesn't match, the string is left unchanged and the
4487            /// next rule in chain is considered.
4488            SfpMatchRedactGroups = 1,
4489            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
4490            /// checking the regex. Specifically, it tries to parse the string field as
4491            /// an atrace tracepoint and checks if the post-tgid field starts with
4492            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4493            /// this check succeeds.
4494            SfpAtraceMatchRedactGroups = 2,
4495            /// Tries to match the string field against |regex_pattern|. If it
4496            /// matches, filtering is terminated (i.e. no further rules are checked).
4497            /// If it doesn't match, the string is left unchanged and the next rule in
4498            /// chain is considered.
4499            SfpMatchBreak = 3,
4500            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
4501            /// the regex. Specifically, it tries to parse the string field as an
4502            /// atrace tracepoint and checks if the post-tgid field starts with
4503            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4504            /// this check succeeds.
4505            SfpAtraceMatchBreak = 4,
4506            /// Tries to repeatedly search (i.e. find substrings of) the string field
4507            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
4508            /// replaced with a constant string). Once there are no further matches,
4509            /// filtering is terminated (i.e. no further rules are checked).
4510            ///
4511            /// Note that this is policy is a "search" policy not a "match" policy
4512            /// unlike the above policies:
4513            ///   * Match policies require matching the full string i.e. there is an
4514            ///     implicit leading `^` and trailing `$`.
4515            ///   * Search policies perform repeated partial matching of the string
4516            ///     e.g.
4517            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
4518            ///       - Pattern: `foo=(\d+)`
4519            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
4520            ///     where P6O is the redaction string
4521            ///
4522            /// All of this is only performed after some pre-work where we try to parse
4523            /// the string field as an atrace tracepoint and check if the post-tgid
4524            /// field starts with |atrace_post_tgid_starts_with|.
4525            ///
4526            /// If there are no partial matches, the string is left unchanged and the
4527            /// next rule in chain is considered.
4528            SfpAtraceRepeatedSearchRedactGroups = 5,
4529        }
4530        impl StringFilterPolicy {
4531            /// String value of the enum field names used in the ProtoBuf definition.
4532            ///
4533            /// The values are not transformed in any way and thus are considered stable
4534            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4535            pub fn as_str_name(&self) -> &'static str {
4536                match self {
4537                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
4538                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
4539                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
4540                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
4541                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
4542                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
4543                }
4544            }
4545        }
4546    }
4547    /// Android-only. Not for general use. If set, reports the trace to the
4548    /// Android framework. This field is read by perfetto_cmd, rather than the
4549    /// tracing service. This field must be set when passing the --upload flag to
4550    /// perfetto_cmd.
4551    ///
4552    /// In this message, either:
4553    ///   * |reporter_service_package| and |reporter_service_class| must be set.
4554    ///   * |skip_reporting| must be explicitly set to true.
4555    #[derive(Clone, PartialEq, ::prost::Message)]
4556    pub struct AndroidReportConfig {
4557        #[prost(string, optional, tag="1")]
4558        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
4559        #[prost(string, optional, tag="2")]
4560        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
4561        /// If true, then skips reporting the trace to Android framework.
4562        ///
4563        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4564        /// or when we explicitly don't want to report traces to the framework even
4565        /// when they usually would (e.g. configs deployed using statsd but only
4566        /// used for inclusion in bugreports using |bugreport_score|).
4567        ///
4568        /// The motivation for having this flag, instead of just not setting
4569        /// |framework_report_config|, is prevent accidents where
4570        /// |framework_report_config| is omitted by mistake.
4571        #[prost(bool, optional, tag="3")]
4572        pub skip_report: ::core::option::Option<bool>,
4573        /// If true, will direct the Android framework to read the data in trace
4574        /// file and pass it to the reporter class over a pipe instead of passing
4575        /// the file descriptor directly.
4576        ///
4577        /// This flag is needed because the Android test framework does not
4578        /// currently support priv-app helper apps (in terms of SELinux) and we
4579        /// really don't want to add an allow rule for untrusted_app to receive
4580        /// trace fds.
4581        ///
4582        /// Because of this, we instead will direct the framework to create a new
4583        /// pipe and pass this to the reporter process instead. As the pipe is
4584        /// created by the framework, we won't have any problems with SELinux
4585        /// (system_server is already allowed to pass pipe fds, even
4586        /// to untrusted apps).
4587        ///
4588        /// As the name suggests this option *MUST* only be used for testing.
4589        /// Note that the framework will reject (and drop) files which are too
4590        /// large both for simplicity and to be minimize the amount of data we
4591        /// pass to a non-priv app (note that the framework will still check
4592        /// manifest permissions even though SELinux permissions are worked around).
4593        #[prost(bool, optional, tag="4")]
4594        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
4595    }
4596    /// If set, delays the start of tracing by a random duration. The duration is
4597    /// chosen from a uniform distribution between the specified minimum and
4598    /// maximum.
4599    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4600    /// not work if you communicate with traced directly over the consumer API.
4601    /// Introduced in Android T.
4602    #[derive(Clone, PartialEq, ::prost::Message)]
4603    pub struct CmdTraceStartDelay {
4604        #[prost(uint32, optional, tag="1")]
4605        pub min_delay_ms: ::core::option::Option<u32>,
4606        #[prost(uint32, optional, tag="2")]
4607        pub max_delay_ms: ::core::option::Option<u32>,
4608    }
4609    /// When non-empty, ensures that for a each semaphore named `name at most
4610    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4611    /// minimum of all values specified by this config or any already-running
4612    /// session) can be be running.
4613    ///
4614    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4615    /// and the tracing session will not be started (or elgible to start in
4616    /// the case of deferred sessions).
4617    ///
4618    /// This is easiest to explain with an example. Suppose the tracing service has
4619    /// the following active tracing sessions:
4620    ///    S1 = [{name=foo, max_other_session_count=2},
4621    ///          {name=bar, max_other_session_count=0}]
4622    ///    S2 = [{name=foo, max_other_session_count=1},
4623    ///          {name=baz, max_other_session_count=1}]
4624    ///
4625    /// Then, for a new session, the following would be the expected behaviour of
4626    /// EnableSession given the state of `session_semaphores`.
4627    ///    Q: session_semaphores = []
4628    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4629    ///       no matter the state of any other tracing session.
4630    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4631    ///    A: Allowed because both S2 and this config specify
4632    ///       max_other_session_count=1 for baz.
4633    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4634    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4635    ///       takes that slot.
4636    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4637    ///    A: Denied because S1 takes the the slot specified by both S1 and
4638    ///       this config.
4639    ///
4640    /// Introduced in 24Q3 (Android V).
4641    #[derive(Clone, PartialEq, ::prost::Message)]
4642    pub struct SessionSemaphore {
4643        /// The name of the semaphore. Acts as a unique identifier across all
4644        /// tracing sessions (including the one being started).
4645        #[prost(string, optional, tag="1")]
4646        pub name: ::core::option::Option<::prost::alloc::string::String>,
4647        /// The maximum number of *other* sesssions which specify the same semaphore
4648        /// which can be active. The minimum of this value across all tracing
4649        /// sessions and the value specified by the config is used when deciding
4650        /// whether the tracing session can be started.
4651        #[prost(uint64, optional, tag="2")]
4652        pub max_other_session_count: ::core::option::Option<u64>,
4653    }
4654    /// Allow key, value pairs to save arbitrary data about trace.
4655    #[derive(Clone, PartialEq, ::prost::Message)]
4656    pub struct Note {
4657        /// Required.
4658        #[prost(string, optional, tag="1")]
4659        pub key: ::core::option::Option<::prost::alloc::string::String>,
4660        /// Required.
4661        #[prost(string, optional, tag="2")]
4662        pub value: ::core::option::Option<::prost::alloc::string::String>,
4663    }
4664    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4665    #[repr(i32)]
4666    pub enum LockdownModeOperation {
4667        LockdownUnchanged = 0,
4668        LockdownClear = 1,
4669        LockdownSet = 2,
4670    }
4671    impl LockdownModeOperation {
4672        /// String value of the enum field names used in the ProtoBuf definition.
4673        ///
4674        /// The values are not transformed in any way and thus are considered stable
4675        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4676        pub fn as_str_name(&self) -> &'static str {
4677            match self {
4678                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4679                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4680                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4681            }
4682        }
4683    }
4684    /// Compress trace with the given method. Best effort.
4685    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4686    #[repr(i32)]
4687    pub enum CompressionType {
4688        Unspecified = 0,
4689        Deflate = 1,
4690    }
4691    impl CompressionType {
4692        /// String value of the enum field names used in the ProtoBuf definition.
4693        ///
4694        /// The values are not transformed in any way and thus are considered stable
4695        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4696        pub fn as_str_name(&self) -> &'static str {
4697            match self {
4698                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4699                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4700            }
4701        }
4702    }
4703    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4704    #[repr(i32)]
4705    pub enum StatsdLogging {
4706        Unspecified = 0,
4707        Enabled = 1,
4708        Disabled = 2,
4709    }
4710    impl StatsdLogging {
4711        /// String value of the enum field names used in the ProtoBuf definition.
4712        ///
4713        /// The values are not transformed in any way and thus are considered stable
4714        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4715        pub fn as_str_name(&self) -> &'static str {
4716            match self {
4717                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4718                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4719                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4720            }
4721        }
4722    }
4723    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4724    #[repr(i32)]
4725    pub enum WriteFlushMode {
4726        /// Same as WRITE_FLUSH_AUTO.
4727        WriteFlushUnspecified = 0,
4728        /// Default mode. The service automatically determines the flush frequency
4729        /// to balance performance and data freshness:
4730        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
4731        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
4732        ///     issued every 5s.
4733        /// 2) If file_write_period_ms > 5s:
4734        ///     A flush is issued before every periodic write into the file.
4735        WriteFlushAuto = 1,
4736        // The following modes are intended for advanced usage and not recommended
4737        // for general use.
4738
4739        /// Do not flush buffers before periodic writes into the file.
4740        /// Use this mode if you want to minimize the performance impact of flushes
4741        /// and can tolerate potentially missing the most recent data in the trace
4742        /// file until the end of the session or an explicit flush.
4743        /// When this mode is selected, |flush_period_ms| is respected.
4744        WriteFlushDisabled = 2,
4745        /// Issue a flush before every periodic write into the file.
4746        /// This ensures that each write into the file contains the most up-to-date
4747        /// data from all data sources, but may have a higher performance overhead.
4748        WriteFlushEnabled = 3,
4749    }
4750    impl WriteFlushMode {
4751        /// String value of the enum field names used in the ProtoBuf definition.
4752        ///
4753        /// The values are not transformed in any way and thus are considered stable
4754        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4755        pub fn as_str_name(&self) -> &'static str {
4756            match self {
4757                WriteFlushMode::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
4758                WriteFlushMode::WriteFlushAuto => "WRITE_FLUSH_AUTO",
4759                WriteFlushMode::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
4760                WriteFlushMode::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
4761            }
4762        }
4763    }
4764    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4765    #[repr(i32)]
4766    pub enum FFlushMode {
4767        /// Default: same as FFLUSH_DISABLED.
4768        FflushUnspecified = 0,
4769        /// Do not explicitly sync the file to storage after each write pass.
4770        FflushDisabled = 1,
4771        /// Explicitly sync the file to storage (via fdatasync) after each periodic
4772        /// write pass. Increases data durability at the cost of higher disk I/O
4773        /// overhead.
4774        FflushEnabled = 2,
4775    }
4776    impl FFlushMode {
4777        /// String value of the enum field names used in the ProtoBuf definition.
4778        ///
4779        /// The values are not transformed in any way and thus are considered stable
4780        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4781        pub fn as_str_name(&self) -> &'static str {
4782            match self {
4783                FFlushMode::FflushUnspecified => "FFLUSH_UNSPECIFIED",
4784                FFlushMode::FflushDisabled => "FFLUSH_DISABLED",
4785                FFlushMode::FflushEnabled => "FFLUSH_ENABLED",
4786            }
4787        }
4788    }
4789}
4790// End of protos/perfetto/config/trace_config.proto
4791
4792// Begin of protos/perfetto/common/system_info.proto
4793
4794#[derive(Clone, PartialEq, ::prost::Message)]
4795pub struct Utsname {
4796    #[prost(string, optional, tag="1")]
4797    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4798    #[prost(string, optional, tag="2")]
4799    pub version: ::core::option::Option<::prost::alloc::string::String>,
4800    #[prost(string, optional, tag="3")]
4801    pub release: ::core::option::Option<::prost::alloc::string::String>,
4802    #[prost(string, optional, tag="4")]
4803    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4804}
4805/// Next id: 17
4806#[derive(Clone, PartialEq, ::prost::Message)]
4807pub struct SystemInfo {
4808    #[prost(message, optional, tag="1")]
4809    pub utsname: ::core::option::Option<Utsname>,
4810    #[prost(string, optional, tag="2")]
4811    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4812    /// The manufacturer of the product/hardware.
4813    /// Source : "ro.product.manufacturer"
4814    /// Introduced after Android W in Nov 2024 and is not supported on older
4815    /// versions.
4816    #[prost(string, optional, tag="14")]
4817    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4818    /// The SoC model from which trace is collected
4819    #[prost(string, optional, tag="9")]
4820    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4821    /// The guest SoC model from which trace is collected in case of VMs
4822    #[prost(string, optional, tag="13")]
4823    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4824    /// The hardware reversion from android device
4825    #[prost(string, optional, tag="10")]
4826    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4827    /// The storage component from android_device. This field has been introduced
4828    /// after Android W in Aug 2024 and is not supported on older versions.
4829    #[prost(string, optional, tag="11")]
4830    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4831    /// The RAM component information from android device. This field has been
4832    /// introduced after Android W in Aug 2024 and is not supported on older
4833    /// versions.
4834    #[prost(string, optional, tag="12")]
4835    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4836    /// The serial console information from android device.
4837    #[prost(string, optional, tag="15")]
4838    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4839    /// The version of traced (the same returned by `traced --version`).
4840    /// This is a human readable string with and its format varies depending on
4841    /// the build system and the repo (standalone vs AOSP).
4842    /// This is intended for human debugging only.
4843    #[prost(string, optional, tag="4")]
4844    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4845    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4846    /// Introduced in Android T.
4847    #[prost(uint64, optional, tag="5")]
4848    pub android_sdk_version: ::core::option::Option<u64>,
4849    /// Kernel page size - sysconf(_SC_PAGESIZE).
4850    #[prost(uint32, optional, tag="6")]
4851    pub page_size: ::core::option::Option<u32>,
4852    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4853    /// Might be different to the number of online cpus.
4854    /// Introduced in perfetto v44.
4855    #[prost(uint32, optional, tag="8")]
4856    pub num_cpus: ::core::option::Option<u32>,
4857    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4858    /// Introduced in v38 / Android V.
4859    #[prost(int32, optional, tag="7")]
4860    pub timezone_off_mins: ::core::option::Option<i32>,
4861    /// Ticks per second - sysconf(_SC_CLK_TCK).
4862    /// Not serialised as of perfetto v44.
4863    #[prost(int64, optional, tag="3")]
4864    pub hz: ::core::option::Option<i64>,
4865    /// The size of the system RAM in bytes.
4866    ///
4867    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
4868    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
4869    ///
4870    /// Introduced in perfetto v54 / Android 26Q1+.
4871    #[prost(uint64, optional, tag="16")]
4872    pub system_ram_bytes: ::core::option::Option<u64>,
4873}
4874// End of protos/perfetto/common/system_info.proto
4875
4876// Begin of protos/perfetto/common/trace_stats.proto
4877
4878/// Statistics for the internals of the tracing service.
4879///
4880/// Next id: 19.
4881#[derive(Clone, PartialEq, ::prost::Message)]
4882pub struct TraceStats {
4883    /// Stats for the TraceBuffer(s) of the current trace session.
4884    #[prost(message, repeated, tag="1")]
4885    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4886    /// The thresholds of each the `writer_stats` histogram buckets. This is
4887    /// emitted only once as all WriterStats share the same bucket layout.
4888    /// This field has the same cardinality of the
4889    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4890    /// (The -1 is because the last overflow bucket is not reported in the _def).
4891    /// An array of values [10, 100, 1000] in the _def array means that there are
4892    /// four buckets (3 + the implicit overflow bucket):
4893    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4894    #[prost(int64, repeated, packed="false", tag="17")]
4895    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4896    #[prost(message, repeated, tag="18")]
4897    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
4898    /// Num. producers connected (whether they are involved in the current tracing
4899    /// session or not).
4900    #[prost(uint32, optional, tag="2")]
4901    pub producers_connected: ::core::option::Option<u32>,
4902    /// Num. producers ever seen for all trace sessions since startup (it's a good
4903    /// proxy for inferring num. producers crashed / killed).
4904    #[prost(uint64, optional, tag="3")]
4905    pub producers_seen: ::core::option::Option<u64>,
4906    /// Num. data sources registered for all trace sessions.
4907    #[prost(uint32, optional, tag="4")]
4908    pub data_sources_registered: ::core::option::Option<u32>,
4909    /// Num. data sources ever seen for all trace sessions since startup.
4910    #[prost(uint64, optional, tag="5")]
4911    pub data_sources_seen: ::core::option::Option<u64>,
4912    /// Num. concurrently active tracing sessions.
4913    #[prost(uint32, optional, tag="6")]
4914    pub tracing_sessions: ::core::option::Option<u32>,
4915    /// Num. buffers for all tracing session (not just the current one). This will
4916    /// be >= buffer_stats.size(), because the latter is only about the current
4917    /// session.
4918    #[prost(uint32, optional, tag="7")]
4919    pub total_buffers: ::core::option::Option<u32>,
4920    // The fields below have been introduced in Android Q.
4921
4922    /// Num. chunks that were discarded by the service before attempting to commit
4923    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4924    #[prost(uint64, optional, tag="8")]
4925    pub chunks_discarded: ::core::option::Option<u64>,
4926    /// Num. patches that were discarded by the service before attempting to apply
4927    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4928    #[prost(uint64, optional, tag="9")]
4929    pub patches_discarded: ::core::option::Option<u64>,
4930    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
4931    /// is a bug in the producer.
4932    #[prost(uint64, optional, tag="10")]
4933    pub invalid_packets: ::core::option::Option<u64>,
4934    #[prost(message, optional, tag="11")]
4935    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
4936    /// Count of Flush() requests (either from the Consumer, or self-induced
4937    /// periodic flushes). The final Flush() is also included in the count.
4938    #[prost(uint64, optional, tag="12")]
4939    pub flushes_requested: ::core::option::Option<u64>,
4940    /// The count of the Flush() requests that were completed successfully.
4941    /// In a well behaving trace this should always be == `flush_requests`.
4942    #[prost(uint64, optional, tag="13")]
4943    pub flushes_succeeded: ::core::option::Option<u64>,
4944    /// The count of the Flush() requests that failed (in most timed out).
4945    /// In a well behaving trace this should always be == 0.
4946    #[prost(uint64, optional, tag="14")]
4947    pub flushes_failed: ::core::option::Option<u64>,
4948    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
4949    pub final_flush_outcome: ::core::option::Option<i32>,
4950}
4951/// Nested message and enum types in `TraceStats`.
4952pub mod trace_stats {
4953    /// From TraceBuffer::Stats.
4954    ///
4955    /// Next id: 22.
4956    #[derive(Clone, PartialEq, ::prost::Message)]
4957    pub struct BufferStats {
4958        /// Size of the circular buffer in bytes.
4959        #[prost(uint64, optional, tag="12")]
4960        pub buffer_size: ::core::option::Option<u64>,
4961        /// Num. bytes written into the circular buffer, including chunk headers.
4962        #[prost(uint64, optional, tag="1")]
4963        pub bytes_written: ::core::option::Option<u64>,
4964        /// Num. bytes overwritten before they have been read (i.e. loss of data).
4965        #[prost(uint64, optional, tag="13")]
4966        pub bytes_overwritten: ::core::option::Option<u64>,
4967        /// Total size of chunks that were fully read from the circular buffer by the
4968        /// consumer. This may not be equal to |bytes_written| either in the middle
4969        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
4970        /// size of the chunks read from the buffer, including chunk headers, which
4971        /// will be different from the total size of packets returned to the
4972        /// consumer.
4973        ///
4974        /// The current utilization of the trace buffer (mid-tracing) can be obtained
4975        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
4976        /// adding the difference of |padding_bytes_written| and
4977        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
4978        /// Note that this represents the total size of buffered data in the buffer,
4979        /// yet this data may be spread non-contiguously through the buffer and may
4980        /// be overridden before the utilization reaches 100%.
4981        #[prost(uint64, optional, tag="14")]
4982        pub bytes_read: ::core::option::Option<u64>,
4983        /// Num. bytes that were allocated as padding between chunks in the circular
4984        /// buffer.
4985        #[prost(uint64, optional, tag="15")]
4986        pub padding_bytes_written: ::core::option::Option<u64>,
4987        /// Num. of padding bytes that were removed from the circular buffer when
4988        /// they were overwritten.
4989        ///
4990        /// The difference between |padding_bytes_written| and
4991        /// |padding_bytes_cleared| denotes the total size of padding currently
4992        /// present in the buffer.
4993        #[prost(uint64, optional, tag="16")]
4994        pub padding_bytes_cleared: ::core::option::Option<u64>,
4995        /// Num. chunks (!= packets) written into the buffer.
4996        #[prost(uint64, optional, tag="2")]
4997        pub chunks_written: ::core::option::Option<u64>,
4998        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
4999        /// the same chunk with additional packets appended to the end.
5000        #[prost(uint64, optional, tag="10")]
5001        pub chunks_rewritten: ::core::option::Option<u64>,
5002        /// Num. chunks overwritten before they have been read (i.e. loss of data).
5003        #[prost(uint64, optional, tag="3")]
5004        pub chunks_overwritten: ::core::option::Option<u64>,
5005        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
5006        /// is configured with FillPolicy == DISCARD.
5007        #[prost(uint64, optional, tag="18")]
5008        pub chunks_discarded: ::core::option::Option<u64>,
5009        /// Num. chunks (!= packets) that were fully read from the circular buffer by
5010        /// the consumer. This may not be equal to |chunks_written| either in the
5011        /// middle of tracing, or if |chunks_overwritten| is non-zero.
5012        #[prost(uint64, optional, tag="17")]
5013        pub chunks_read: ::core::option::Option<u64>,
5014        /// Num. chunks that were committed out of order.
5015        #[prost(uint64, optional, tag="11")]
5016        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
5017        /// Num. times the ring buffer wrapped around.
5018        #[prost(uint64, optional, tag="4")]
5019        pub write_wrap_count: ::core::option::Option<u64>,
5020        /// Num. out-of-band (OOB) patches that succeeded.
5021        #[prost(uint64, optional, tag="5")]
5022        pub patches_succeeded: ::core::option::Option<u64>,
5023        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
5024        #[prost(uint64, optional, tag="6")]
5025        pub patches_failed: ::core::option::Option<u64>,
5026        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
5027        /// successful packet read.
5028        #[prost(uint64, optional, tag="7")]
5029        pub readaheads_succeeded: ::core::option::Option<u64>,
5030        /// Num. readaheads aborted because of missing chunks in the sequence stream.
5031        /// Note that a small number > 0 is totally expected: occasionally, when
5032        /// issuing a read, the very last packet in a sequence might be incomplete
5033        /// (because the producer is still writing it while we read). The read will
5034        /// stop at that point, for that sequence, increasing this counter.
5035        #[prost(uint64, optional, tag="8")]
5036        pub readaheads_failed: ::core::option::Option<u64>,
5037        /// Num. of violations of the SharedMemoryABI found while writing or reading
5038        /// the buffer. This is an indication of either a bug in the producer(s) or
5039        /// malicious producer(s).
5040        #[prost(uint64, optional, tag="9")]
5041        pub abi_violations: ::core::option::Option<u64>,
5042        // The fields below have been introduced in Android R.
5043
5044        /// Num. of times the service detected packet loss on a trace writer
5045        /// sequence. This is usually caused by exhaustion of available chunks in the
5046        /// writer process's SMB. Note that this relies on the client's TraceWriter
5047        /// indicating this loss to the service -- packets lost for other reasons are
5048        /// not reflected in this stat.
5049        #[prost(uint64, optional, tag="19")]
5050        pub trace_writer_packet_loss: ::core::option::Option<u64>,
5051        #[prost(message, optional, tag="21")]
5052        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
5053    }
5054    /// Nested message and enum types in `BufferStats`.
5055    pub mod buffer_stats {
5056        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
5057        /// Only populated when the buffer is configured with shadow mode.
5058        #[derive(Clone, PartialEq, ::prost::Message)]
5059        pub struct ShadowBufferStats {
5060            /// Total num. packets read. This is not affected by capping of the hasher
5061            /// to 32K elements.
5062            #[prost(uint64, optional, tag="1")]
5063            pub packets_seen: ::core::option::Option<u64>,
5064            // The stats below are keps only for 32k packets. After reading 32K
5065            // packets hashes are randomly evicted and that might lead to slightly
5066            // inconsistent results.
5067
5068            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
5069            #[prost(uint64, optional, tag="2")]
5070            pub packets_in_both: ::core::option::Option<u64>,
5071            /// Num. packets found only in V1 buffer but not in V2.
5072            #[prost(uint64, optional, tag="3")]
5073            pub packets_only_v1: ::core::option::Option<u64>,
5074            /// Num. packets found only in V2 buffer but not in V1.
5075            #[prost(uint64, optional, tag="4")]
5076            pub packets_only_v2: ::core::option::Option<u64>,
5077            /// Num. patch operations attempted.
5078            #[prost(uint64, optional, tag="5")]
5079            pub patches_attempted: ::core::option::Option<u64>,
5080            /// Num. patches that succeeded on V1 buffer.
5081            #[prost(uint64, optional, tag="6")]
5082            pub v1_patches_succeeded: ::core::option::Option<u64>,
5083            /// Num. patches that succeeded on V2 buffer.
5084            #[prost(uint64, optional, tag="7")]
5085            pub v2_patches_succeeded: ::core::option::Option<u64>,
5086            /// This is to distinguish the updated calculations after fixing the
5087            /// hashes. This field is either empty or "2"
5088            #[prost(uint32, optional, tag="8")]
5089            pub stats_version: ::core::option::Option<u32>,
5090        }
5091    }
5092    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
5093    /// visible as a unique sequence ID in the trace.
5094    #[derive(Clone, PartialEq, ::prost::Message)]
5095    pub struct WriterStats {
5096        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
5097        /// correlate the stats with the actual packet types.
5098        #[prost(uint64, optional, tag="1")]
5099        pub sequence_id: ::core::option::Option<u64>,
5100        /// The buffer index (0..N, as defined in the TraceConfig).
5101        #[prost(uint32, optional, tag="4")]
5102        pub buffer: ::core::option::Option<u32>,
5103        /// These two arrays have the same cardinality and match the cardinality of
5104        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
5105        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
5106        /// for each bucket.
5107        #[prost(uint64, repeated, tag="2")]
5108        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
5109        #[prost(int64, repeated, tag="3")]
5110        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
5111    }
5112    /// This is set only when the TraceConfig specifies a TraceFilter.
5113    #[derive(Clone, PartialEq, ::prost::Message)]
5114    pub struct FilterStats {
5115        #[prost(uint64, optional, tag="1")]
5116        pub input_packets: ::core::option::Option<u64>,
5117        #[prost(uint64, optional, tag="2")]
5118        pub input_bytes: ::core::option::Option<u64>,
5119        #[prost(uint64, optional, tag="3")]
5120        pub output_bytes: ::core::option::Option<u64>,
5121        #[prost(uint64, optional, tag="4")]
5122        pub errors: ::core::option::Option<u64>,
5123        #[prost(uint64, optional, tag="5")]
5124        pub time_taken_ns: ::core::option::Option<u64>,
5125        /// The number of bytes discarded by the filter (i.e. output - input).
5126        /// The array has one entry for each buffer defined in the config (unless no
5127        /// packets for that buffer were seen and hence filtered).
5128        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
5129        /// (output_bytes - input_bytes) because the filter might also discard
5130        /// server-generated synthetic packets, that have no buffer index.
5131        #[prost(uint64, repeated, packed="false", tag="20")]
5132        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
5133    }
5134    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5135    #[repr(i32)]
5136    pub enum FinalFlushOutcome {
5137        FinalFlushUnspecified = 0,
5138        FinalFlushSucceeded = 1,
5139        FinalFlushFailed = 2,
5140    }
5141    impl FinalFlushOutcome {
5142        /// String value of the enum field names used in the ProtoBuf definition.
5143        ///
5144        /// The values are not transformed in any way and thus are considered stable
5145        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5146        pub fn as_str_name(&self) -> &'static str {
5147            match self {
5148                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
5149                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
5150                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
5151            }
5152        }
5153    }
5154}
5155// End of protos/perfetto/common/trace_stats.proto
5156
5157// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
5158
5159#[derive(Clone, PartialEq, ::prost::Message)]
5160pub struct AndroidGameInterventionList {
5161    #[prost(message, repeated, tag="1")]
5162    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
5163    /// True when at least one error occurred when parsing
5164    /// game_mode_intervention.list
5165    #[prost(bool, optional, tag="2")]
5166    pub parse_error: ::core::option::Option<bool>,
5167    /// Failed to open / read game_mode_intervention.list
5168    #[prost(bool, optional, tag="3")]
5169    pub read_error: ::core::option::Option<bool>,
5170}
5171/// Nested message and enum types in `AndroidGameInterventionList`.
5172pub mod android_game_intervention_list {
5173    #[derive(Clone, PartialEq, ::prost::Message)]
5174    pub struct GameModeInfo {
5175        #[prost(uint32, optional, tag="1")]
5176        pub mode: ::core::option::Option<u32>,
5177        #[prost(bool, optional, tag="2")]
5178        pub use_angle: ::core::option::Option<bool>,
5179        #[prost(float, optional, tag="3")]
5180        pub resolution_downscale: ::core::option::Option<f32>,
5181        #[prost(float, optional, tag="4")]
5182        pub fps: ::core::option::Option<f32>,
5183    }
5184    #[derive(Clone, PartialEq, ::prost::Message)]
5185    pub struct GamePackageInfo {
5186        #[prost(string, optional, tag="1")]
5187        pub name: ::core::option::Option<::prost::alloc::string::String>,
5188        #[prost(uint64, optional, tag="2")]
5189        pub uid: ::core::option::Option<u64>,
5190        #[prost(uint32, optional, tag="3")]
5191        pub current_mode: ::core::option::Option<u32>,
5192        #[prost(message, repeated, tag="4")]
5193        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
5194    }
5195}
5196// End of protos/perfetto/trace/android/android_game_intervention_list.proto
5197
5198// Begin of protos/perfetto/trace/android/android_log.proto
5199
5200#[derive(Clone, PartialEq, ::prost::Message)]
5201pub struct AndroidLogPacket {
5202    #[prost(message, repeated, tag="1")]
5203    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
5204    #[prost(message, optional, tag="2")]
5205    pub stats: ::core::option::Option<android_log_packet::Stats>,
5206}
5207/// Nested message and enum types in `AndroidLogPacket`.
5208pub mod android_log_packet {
5209    #[derive(Clone, PartialEq, ::prost::Message)]
5210    pub struct LogEvent {
5211        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
5212        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
5213        pub log_id: ::core::option::Option<i32>,
5214        /// PID (TGID), TID and UID of the task that emitted the event.
5215        #[prost(int32, optional, tag="2")]
5216        pub pid: ::core::option::Option<i32>,
5217        #[prost(int32, optional, tag="3")]
5218        pub tid: ::core::option::Option<i32>,
5219        #[prost(int32, optional, tag="4")]
5220        pub uid: ::core::option::Option<i32>,
5221        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
5222        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
5223        /// processor will take care of realigning clocks using the ClockSnapshot(s).
5224        #[prost(uint64, optional, tag="5")]
5225        pub timestamp: ::core::option::Option<u64>,
5226        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
5227        /// the second column of /system/etc/event-log-tags. For all other events,
5228        /// |tag| is the app-specified argument passed to __android_log_write().
5229        #[prost(string, optional, tag="6")]
5230        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5231        /// Empty when log_id == LID_EVENTS.
5232        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
5233        pub prio: ::core::option::Option<i32>,
5234        /// Empty when log_id == LID_EVENTS.
5235        #[prost(string, optional, tag="8")]
5236        pub message: ::core::option::Option<::prost::alloc::string::String>,
5237        /// Only populated when log_id == LID_EVENTS.
5238        #[prost(message, repeated, tag="9")]
5239        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
5240    }
5241    /// Nested message and enum types in `LogEvent`.
5242    pub mod log_event {
5243        #[derive(Clone, PartialEq, ::prost::Message)]
5244        pub struct Arg {
5245            #[prost(string, optional, tag="1")]
5246            pub name: ::core::option::Option<::prost::alloc::string::String>,
5247            #[prost(oneof="arg::Value", tags="2, 3, 4")]
5248            pub value: ::core::option::Option<arg::Value>,
5249        }
5250        /// Nested message and enum types in `Arg`.
5251        pub mod arg {
5252            #[derive(Clone, PartialEq, ::prost::Oneof)]
5253            pub enum Value {
5254                #[prost(int64, tag="2")]
5255                IntValue(i64),
5256                #[prost(float, tag="3")]
5257                FloatValue(f32),
5258                #[prost(string, tag="4")]
5259                StringValue(::prost::alloc::string::String),
5260            }
5261        }
5262    }
5263    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
5264    /// absolute counters since the beginning of the lifetime of the tracing
5265    /// session and NOT relative to the previous Stats snapshot).
5266    #[derive(Clone, PartialEq, ::prost::Message)]
5267    pub struct Stats {
5268        /// Total number of log events seen, including errors and skipped entries
5269        /// (num of events stored in the trace = total - failed - skipped).
5270        #[prost(uint64, optional, tag="1")]
5271        pub num_total: ::core::option::Option<u64>,
5272        /// Parser failures.
5273        #[prost(uint64, optional, tag="2")]
5274        pub num_failed: ::core::option::Option<u64>,
5275        /// Messages skipped due to filters.
5276        #[prost(uint64, optional, tag="3")]
5277        pub num_skipped: ::core::option::Option<u64>,
5278    }
5279}
5280// End of protos/perfetto/trace/android/android_log.proto
5281
5282// Begin of protos/perfetto/trace/android/android_system_property.proto
5283
5284#[derive(Clone, PartialEq, ::prost::Message)]
5285pub struct AndroidSystemProperty {
5286    #[prost(message, repeated, tag="1")]
5287    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
5288}
5289/// Nested message and enum types in `AndroidSystemProperty`.
5290pub mod android_system_property {
5291    #[derive(Clone, PartialEq, ::prost::Message)]
5292    pub struct PropertyValue {
5293        #[prost(string, optional, tag="1")]
5294        pub name: ::core::option::Option<::prost::alloc::string::String>,
5295        #[prost(string, optional, tag="2")]
5296        pub value: ::core::option::Option<::prost::alloc::string::String>,
5297    }
5298}
5299// End of protos/perfetto/trace/android/android_system_property.proto
5300
5301// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
5302
5303/// AppWakelockInfo describes the time-independent properties of a wakelock, such
5304/// as the owning package or wakelock tag. This is interned to reduce trace size.
5305/// Event bundles refer to interned wakelock info by the iid.
5306#[derive(Clone, PartialEq, ::prost::Message)]
5307pub struct AppWakelockInfo {
5308    /// The interned id of this wakelock.
5309    #[prost(int32, optional, tag="1")]
5310    pub iid: ::core::option::Option<i32>,
5311    /// The app-provided tag of the wakelock.
5312    #[prost(string, optional, tag="2")]
5313    pub tag: ::core::option::Option<::prost::alloc::string::String>,
5314    /// The wakelock flags (such as partial vs full).
5315    #[prost(int32, optional, tag="3")]
5316    pub flags: ::core::option::Option<i32>,
5317    /// The pid that created the wakelock.
5318    #[prost(int32, optional, tag="4")]
5319    pub owner_pid: ::core::option::Option<i32>,
5320    /// The uid that created the wakelock.
5321    #[prost(int32, optional, tag="5")]
5322    pub owner_uid: ::core::option::Option<i32>,
5323    /// The uid of the work source root (if present).
5324    #[prost(int32, optional, tag="6")]
5325    pub work_uid: ::core::option::Option<i32>,
5326}
5327/// AppWakelockBundle describes one or more wakelock events. Events are written
5328/// in two paired array, such that the details for event i are in intern_id\[i\]
5329/// and encoded_ts\[i\].
5330#[derive(Clone, PartialEq, ::prost::Message)]
5331pub struct AppWakelockBundle {
5332    /// The interned id for the WakelockInfo of the event.
5333    #[prost(uint32, repeated, tag="1")]
5334    pub intern_id: ::prost::alloc::vec::Vec<u32>,
5335    /// The timestamp and event type, encoded as:
5336    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
5337    #[prost(uint64, repeated, tag="2")]
5338    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
5339    /// For writing single packets (mainly by tokenization).
5340    #[prost(message, optional, tag="3")]
5341    pub info: ::core::option::Option<AppWakelockInfo>,
5342    #[prost(bool, optional, tag="4")]
5343    pub acquired: ::core::option::Option<bool>,
5344}
5345/// Trace event for bluetooth
5346#[derive(Clone, PartialEq, ::prost::Message)]
5347pub struct BluetoothTraceEvent {
5348    /// Packet type and direction
5349    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
5350    pub packet_type: ::core::option::Option<i32>,
5351    /// Total count of the packets collected during the collection interval
5352    #[prost(uint32, optional, tag="2")]
5353    pub count: ::core::option::Option<u32>,
5354    /// Total cumulative length of the packets collected during the collection
5355    /// interval
5356    #[prost(uint32, optional, tag="3")]
5357    pub length: ::core::option::Option<u32>,
5358    /// The collection interval in nanoseconds. This is the duration between the
5359    /// first and last packets collected.
5360    #[prost(uint32, optional, tag="4")]
5361    pub duration: ::core::option::Option<u32>,
5362    /// In case of CMD type, further breakdown of the type of command
5363    #[prost(uint32, optional, tag="5")]
5364    pub op_code: ::core::option::Option<u32>,
5365    /// In the case of EVT type, further breakdown of the type of event
5366    #[prost(uint32, optional, tag="6")]
5367    pub event_code: ::core::option::Option<u32>,
5368    /// When applicable for EVT type, further breakdown of event type into specific
5369    /// subevent
5370    #[prost(uint32, optional, tag="7")]
5371    pub subevent_code: ::core::option::Option<u32>,
5372    /// Associated handle for the bluetooth packet
5373    #[prost(uint32, optional, tag="8")]
5374    pub connection_handle: ::core::option::Option<u32>,
5375}
5376// End of protos/perfetto/trace/android/bluetooth_trace.proto
5377
5378// Begin of protos/perfetto/trace/android/camera_event.proto
5379
5380/// A profiling event corresponding to a single camera frame. This message
5381/// collects important details and timestamps involved in producing a single
5382/// camera frame.
5383/// Next ID: 17
5384#[derive(Clone, PartialEq, ::prost::Message)]
5385pub struct AndroidCameraFrameEvent {
5386    /// Identifier for the CameraCaptureSession this frame originates from. See:
5387    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5388    #[prost(uint64, optional, tag="1")]
5389    pub session_id: ::core::option::Option<u64>,
5390    /// Identifier for the camera sensor that is the source of this frame. This may
5391    /// be either a physical or logical camera (up to vendor interpretation).
5392    #[prost(uint32, optional, tag="2")]
5393    pub camera_id: ::core::option::Option<u32>,
5394    /// The frame number identifying this frame on this camera.
5395    #[prost(int64, optional, tag="3")]
5396    pub frame_number: ::core::option::Option<i64>,
5397    /// Identifier for the CaptureRequest. See:
5398    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
5399    ///
5400    /// If multiple cameras are streaming simultaneously, the request_id may be
5401    /// used to identify which frames were captured in service of the same request.
5402    #[prost(int64, optional, tag="4")]
5403    pub request_id: ::core::option::Option<i64>,
5404    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
5405    /// received by the camera HAL pipeline. Note that this request may wait for
5406    /// some time before processing actually begins. See also
5407    /// request_processing_started_ns.
5408    #[prost(int64, optional, tag="5")]
5409    pub request_received_ns: ::core::option::Option<i64>,
5410    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
5411    /// processing by the camera HAL pipeline. This is the time at which the
5412    /// pipeline actually begins to work on the request.
5413    #[prost(int64, optional, tag="6")]
5414    pub request_processing_started_ns: ::core::option::Option<i64>,
5415    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
5416    #[prost(int64, optional, tag="7")]
5417    pub start_of_exposure_ns: ::core::option::Option<i64>,
5418    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
5419    /// event.
5420    #[prost(int64, optional, tag="8")]
5421    pub start_of_frame_ns: ::core::option::Option<i64>,
5422    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
5423    /// for the frame.
5424    #[prost(int64, optional, tag="9")]
5425    pub responses_all_sent_ns: ::core::option::Option<i64>,
5426    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
5427    pub capture_result_status: ::core::option::Option<i32>,
5428    /// The number of sensor frames that were skipped between this frame and the
5429    /// previous frame. Under normal operation, this should be zero. Any number
5430    /// greater than zero indicates dropped sensor frames.
5431    #[prost(int32, optional, tag="11")]
5432    pub skipped_sensor_frames: ::core::option::Option<i32>,
5433    /// The value of CONTROL_CAPTURE_INTENT. See:
5434    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
5435    #[prost(int32, optional, tag="12")]
5436    pub capture_intent: ::core::option::Option<i32>,
5437    /// The number of streams in the capture request.
5438    #[prost(int32, optional, tag="13")]
5439    pub num_streams: ::core::option::Option<i32>,
5440    #[prost(message, repeated, tag="14")]
5441    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
5442    /// These fields capture vendor-specific additions to this proto message. In
5443    /// practice `vendor_data` typically contains a serialized message of the
5444    /// vendor's design, and `vendor_data_version` is incremented each time there
5445    /// is a backwards incompatible change made to the message.
5446    #[prost(int32, optional, tag="15")]
5447    pub vendor_data_version: ::core::option::Option<i32>,
5448    #[prost(bytes="vec", optional, tag="16")]
5449    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5450}
5451/// Nested message and enum types in `AndroidCameraFrameEvent`.
5452pub mod android_camera_frame_event {
5453    /// A profiling event corresponding to a single node processing within the
5454    /// camera pipeline. Intuitively this corresponds to a single stage of
5455    /// processing to produce a camera frame. Next ID: 6
5456    #[derive(Clone, PartialEq, ::prost::Message)]
5457    pub struct CameraNodeProcessingDetails {
5458        #[prost(int64, optional, tag="1")]
5459        pub node_id: ::core::option::Option<i64>,
5460        /// The timestamp at which node processing begins to run.
5461        #[prost(int64, optional, tag="2")]
5462        pub start_processing_ns: ::core::option::Option<i64>,
5463        /// The timestamp at which node processing finishes running.
5464        #[prost(int64, optional, tag="3")]
5465        pub end_processing_ns: ::core::option::Option<i64>,
5466        /// The delay between inputs becoming ready and the node actually beginning
5467        /// to run.
5468        #[prost(int64, optional, tag="4")]
5469        pub scheduling_latency_ns: ::core::option::Option<i64>,
5470    }
5471    /// The error status, if any, reported to the camera framework. Any status
5472    /// other than STATUS_OK indicates a dropped frame.
5473    /// Next Enum: 6
5474    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5475    #[repr(i32)]
5476    pub enum CaptureResultStatus {
5477        StatusUnspecified = 0,
5478        StatusOk = 1,
5479        /// Early metadata was returned to the camera framework with an error.
5480        StatusEarlyMetadataError = 2,
5481        /// Final metadata was returned to the camera framework with an error.
5482        StatusFinalMetadataError = 3,
5483        /// One or more buffers were returned to the camera framework with an error.
5484        StatusBufferError = 4,
5485        /// The frame was dropped as a result of a flush operation.
5486        StatusFlushError = 5,
5487    }
5488    impl CaptureResultStatus {
5489        /// String value of the enum field names used in the ProtoBuf definition.
5490        ///
5491        /// The values are not transformed in any way and thus are considered stable
5492        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5493        pub fn as_str_name(&self) -> &'static str {
5494            match self {
5495                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
5496                CaptureResultStatus::StatusOk => "STATUS_OK",
5497                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
5498                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
5499                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
5500                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
5501            }
5502        }
5503    }
5504}
5505/// A profiling event that may be emitted periodically (i.e., at a slower rate
5506/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
5507/// session-specific values.
5508#[derive(Clone, PartialEq, ::prost::Message)]
5509pub struct AndroidCameraSessionStats {
5510    /// Identifier for the CameraCaptureSession this frame originates from. See:
5511    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5512    #[prost(uint64, optional, tag="1")]
5513    pub session_id: ::core::option::Option<u64>,
5514    #[prost(message, optional, tag="2")]
5515    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
5516}
5517/// Nested message and enum types in `AndroidCameraSessionStats`.
5518pub mod android_camera_session_stats {
5519    /// Although vendor implementations may vary, camera pipeline processing is
5520    /// typically arranged into a directed graph-like structure. This message is
5521    /// used to record that graph.
5522    #[derive(Clone, PartialEq, ::prost::Message)]
5523    pub struct CameraGraph {
5524        #[prost(message, repeated, tag="1")]
5525        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
5526        #[prost(message, repeated, tag="2")]
5527        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
5528    }
5529    /// Nested message and enum types in `CameraGraph`.
5530    pub mod camera_graph {
5531        #[derive(Clone, PartialEq, ::prost::Message)]
5532        pub struct CameraNode {
5533            #[prost(int64, optional, tag="1")]
5534            pub node_id: ::core::option::Option<i64>,
5535            /// A list of inputs consumed by this node.
5536            #[prost(int64, repeated, packed="false", tag="2")]
5537            pub input_ids: ::prost::alloc::vec::Vec<i64>,
5538            /// A list of outputs produced by this node.
5539            #[prost(int64, repeated, packed="false", tag="3")]
5540            pub output_ids: ::prost::alloc::vec::Vec<i64>,
5541            /// These fields capture vendor-specific additions to this proto message.
5542            /// In practice `vendor_data` typically contains a serialized message of
5543            /// the vendor's design, and `vendor_data_version` is incremented each time
5544            /// there is a backwards incompatible change made to the message.
5545            #[prost(int32, optional, tag="4")]
5546            pub vendor_data_version: ::core::option::Option<i32>,
5547            #[prost(bytes="vec", optional, tag="5")]
5548            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5549        }
5550        /// An adjacency list describing connections between CameraNodes, mapping
5551        /// nodes and their outputs to other nodes that consume them as inputs.
5552        #[derive(Clone, PartialEq, ::prost::Message)]
5553        pub struct CameraEdge {
5554            /// The pair of IDs identifying the node and output connected by this edge.
5555            #[prost(int64, optional, tag="1")]
5556            pub output_node_id: ::core::option::Option<i64>,
5557            #[prost(int64, optional, tag="2")]
5558            pub output_id: ::core::option::Option<i64>,
5559            /// The pair of IDs identifying the node and input connected by this edge.
5560            #[prost(int64, optional, tag="3")]
5561            pub input_node_id: ::core::option::Option<i64>,
5562            #[prost(int64, optional, tag="4")]
5563            pub input_id: ::core::option::Option<i64>,
5564            /// These fields capture vendor-specific additions to this proto message.
5565            /// In practice `vendor_data` typically contains a serialized message of
5566            /// the vendor's design, and `vendor_data_version` is incremented each time
5567            /// there is a backwards incompatible change made to the message.
5568            #[prost(int32, optional, tag="5")]
5569            pub vendor_data_version: ::core::option::Option<i32>,
5570            #[prost(bytes="vec", optional, tag="6")]
5571            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5572        }
5573    }
5574}
5575// End of protos/perfetto/trace/android/camera_event.proto
5576
5577// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
5578
5579#[derive(Clone, PartialEq, ::prost::Message)]
5580pub struct CpuPerUidData {
5581    /// Number of clusters in the device. This will only be filled in the first
5582    /// packet in a sequence.
5583    #[prost(uint32, optional, tag="1")]
5584    pub cluster_count: ::core::option::Option<u32>,
5585    /// The UIDs for which we have data in this packet.
5586    #[prost(uint32, repeated, tag="2")]
5587    pub uid: ::prost::alloc::vec::Vec<u32>,
5588    /// List of times for {UID, cluster} tuples. This will be cluster_count
5589    /// times as long as the UID list.
5590    ///
5591    /// Ordered like:
5592    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
5593    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
5594    ///
5595    /// Each value is an absolute count for the first packet in a sequence, and a
5596    /// delta thereafter. UIDs for which all clusters have a zero delta are
5597    /// omitted; a single non-zero value for any cluster for a UID will cause
5598    /// values for all clusters to be recorded.
5599    #[prost(uint64, repeated, tag="3")]
5600    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
5601}
5602// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
5603
5604// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
5605
5606/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
5607/// Used in comparing the expected timeline of a frame to the actual timeline.
5608/// Key terms:
5609///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
5610///     2) SurfaceFrame - represents App's work on its frame
5611///     3) Timeline = start to end of a component's(app/SF) work on a frame.
5612/// SurfaceFlinger composites frames from many apps together, so
5613///     One DisplayFrame can map to N SurfaceFrame(s)
5614/// This relationship can be reconstructed by using
5615///     DisplayFrame.token = SurfaceFrame.display_frame_token
5616#[derive(Clone, PartialEq, ::prost::Message)]
5617pub struct FrameTimelineEvent {
5618    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
5619    pub event: ::core::option::Option<frame_timeline_event::Event>,
5620}
5621/// Nested message and enum types in `FrameTimelineEvent`.
5622pub mod frame_timeline_event {
5623    /// Indicates the start of expected timeline slice for SurfaceFrames.
5624    #[derive(Clone, PartialEq, ::prost::Message)]
5625    pub struct ExpectedSurfaceFrameStart {
5626        /// Cookie used to correlate between the start and end messages of the same
5627        /// frame. Since all values except the ts are same for start and end, cookie
5628        /// helps in preventing redundant data transmission.
5629        /// The same cookie is used only by start and end messages of a single frame
5630        /// and is otherwise unique.
5631        #[prost(int64, optional, tag="1")]
5632        pub cookie: ::core::option::Option<i64>,
5633        /// Token received by the app for its work. Can be shared between multiple
5634        /// layers of the same app (example: pip mode).
5635        #[prost(int64, optional, tag="2")]
5636        pub token: ::core::option::Option<i64>,
5637        /// The corresponding DisplayFrame token is required to link the App's work
5638        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5639        /// DisplayFrame.
5640        /// this.display_frame_token = DisplayFrame.token
5641        #[prost(int64, optional, tag="3")]
5642        pub display_frame_token: ::core::option::Option<i64>,
5643        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5644        /// the respective process track group.
5645        #[prost(int32, optional, tag="4")]
5646        pub pid: ::core::option::Option<i32>,
5647        #[prost(string, optional, tag="5")]
5648        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5649    }
5650    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
5651    /// includes the jank information.
5652    #[derive(Clone, PartialEq, ::prost::Message)]
5653    pub struct ActualSurfaceFrameStart {
5654        /// Cookie used to correlate between the start and end messages of the same
5655        /// frame. Since all values except the ts are same for start and end, cookie
5656        /// helps in preventing redundant data transmission.
5657        /// The same cookie is used only by start and end messages of a single frame
5658        /// and is otherwise unique.
5659        #[prost(int64, optional, tag="1")]
5660        pub cookie: ::core::option::Option<i64>,
5661        /// Token received by the app for its work. Can be shared between multiple
5662        /// layers of the same app (example: pip mode).
5663        #[prost(int64, optional, tag="2")]
5664        pub token: ::core::option::Option<i64>,
5665        /// The corresponding DisplayFrame token is required to link the App's work
5666        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5667        /// DisplayFrame.
5668        /// this.display_frame_token = DisplayFrame.token
5669        #[prost(int64, optional, tag="3")]
5670        pub display_frame_token: ::core::option::Option<i64>,
5671        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5672        /// the respective process track group.
5673        #[prost(int32, optional, tag="4")]
5674        pub pid: ::core::option::Option<i32>,
5675        #[prost(string, optional, tag="5")]
5676        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5677        #[prost(enumeration="PresentType", optional, tag="6")]
5678        pub present_type: ::core::option::Option<i32>,
5679        #[prost(bool, optional, tag="7")]
5680        pub on_time_finish: ::core::option::Option<bool>,
5681        #[prost(bool, optional, tag="8")]
5682        pub gpu_composition: ::core::option::Option<bool>,
5683        /// A bitmask of JankType. More than one reason can be attributed to a janky
5684        /// frame.
5685        #[prost(int32, optional, tag="9")]
5686        pub jank_type: ::core::option::Option<i32>,
5687        #[prost(enumeration="PredictionType", optional, tag="10")]
5688        pub prediction_type: ::core::option::Option<i32>,
5689        #[prost(bool, optional, tag="11")]
5690        pub is_buffer: ::core::option::Option<bool>,
5691        #[prost(enumeration="JankSeverityType", optional, tag="12")]
5692        pub jank_severity_type: ::core::option::Option<i32>,
5693        #[prost(float, optional, tag="13")]
5694        pub present_delay_millis: ::core::option::Option<f32>,
5695        #[prost(float, optional, tag="14")]
5696        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
5697        #[prost(float, optional, tag="15")]
5698        pub jank_severity_score: ::core::option::Option<f32>,
5699        /// experimental value for jank_type. Do not consider in jank analysis.
5700        #[prost(int32, optional, tag="16")]
5701        pub jank_type_experimental: ::core::option::Option<i32>,
5702        /// experimental value for present_type. Do not consider in jank analysis.
5703        #[prost(enumeration="PresentType", optional, tag="17")]
5704        pub present_type_experimental: ::core::option::Option<i32>,
5705        /// jank metadata information (for debug).
5706        #[prost(float, optional, tag="18")]
5707        pub jank_debug_metadata: ::core::option::Option<f32>,
5708    }
5709    /// Indicates the start of expected timeline slice for DisplayFrames.
5710    #[derive(Clone, PartialEq, ::prost::Message)]
5711    pub struct ExpectedDisplayFrameStart {
5712        /// Cookie used to correlate between the start and end messages of the same
5713        /// frame. Since all values except the ts are same for start and end, cookie
5714        /// helps in preventing redundant data transmission.
5715        /// The same cookie is used only by start and end messages of a single frame
5716        /// and is otherwise unique.
5717        #[prost(int64, optional, tag="1")]
5718        pub cookie: ::core::option::Option<i64>,
5719        /// Token received by SurfaceFlinger for its work
5720        /// this.token = SurfaceFrame.display_frame_token
5721        #[prost(int64, optional, tag="2")]
5722        pub token: ::core::option::Option<i64>,
5723        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5724        /// inside the SurfaceFlinger process group.
5725        #[prost(int32, optional, tag="3")]
5726        pub pid: ::core::option::Option<i32>,
5727    }
5728    /// Indicates the start of actual timeline slice for DisplayFrames. Also
5729    /// includes the jank information.
5730    #[derive(Clone, PartialEq, ::prost::Message)]
5731    pub struct ActualDisplayFrameStart {
5732        /// Cookie used to correlate between the start and end messages of the same
5733        /// frame. Since all values except the ts are same for start and end, cookie
5734        /// helps in preventing redundant data transmission.
5735        /// The same cookie is used only by start and end messages of a single frame
5736        /// and is otherwise unique.
5737        #[prost(int64, optional, tag="1")]
5738        pub cookie: ::core::option::Option<i64>,
5739        /// Token received by SurfaceFlinger for its work
5740        /// this.token = SurfaceFrame.display_frame_token
5741        #[prost(int64, optional, tag="2")]
5742        pub token: ::core::option::Option<i64>,
5743        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5744        /// inside the SurfaceFlinger process group.
5745        #[prost(int32, optional, tag="3")]
5746        pub pid: ::core::option::Option<i32>,
5747        #[prost(enumeration="PresentType", optional, tag="4")]
5748        pub present_type: ::core::option::Option<i32>,
5749        #[prost(bool, optional, tag="5")]
5750        pub on_time_finish: ::core::option::Option<bool>,
5751        #[prost(bool, optional, tag="6")]
5752        pub gpu_composition: ::core::option::Option<bool>,
5753        /// A bitmask of JankType. More than one reason can be attributed to a janky
5754        /// frame.
5755        #[prost(int32, optional, tag="7")]
5756        pub jank_type: ::core::option::Option<i32>,
5757        #[prost(enumeration="PredictionType", optional, tag="8")]
5758        pub prediction_type: ::core::option::Option<i32>,
5759        #[prost(enumeration="JankSeverityType", optional, tag="9")]
5760        pub jank_severity_type: ::core::option::Option<i32>,
5761        #[prost(float, optional, tag="10")]
5762        pub present_delay_millis: ::core::option::Option<f32>,
5763        #[prost(float, optional, tag="11")]
5764        pub jank_severity_score: ::core::option::Option<f32>,
5765        /// experimental value for jank_type. Do not consider in jank analysis.
5766        #[prost(int32, optional, tag="12")]
5767        pub jank_type_experimental: ::core::option::Option<i32>,
5768        /// experimental value for present_type. Do not consider in jank analysis.
5769        #[prost(enumeration="PresentType", optional, tag="13")]
5770        pub present_type_experimental: ::core::option::Option<i32>,
5771        /// jank metadata information (for debug).
5772        #[prost(float, optional, tag="14")]
5773        pub jank_debug_metadata: ::core::option::Option<f32>,
5774    }
5775    /// FrameEnd just sends the cookie to indicate that the corresponding
5776    /// <display/surface>frame slice's end.
5777    #[derive(Clone, PartialEq, ::prost::Message)]
5778    pub struct FrameEnd {
5779        #[prost(int64, optional, tag="1")]
5780        pub cookie: ::core::option::Option<i64>,
5781    }
5782    /// Specifies the reason(s) most likely to have caused the jank.
5783    /// Used as a bitmask.
5784    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5785    #[repr(i32)]
5786    pub enum JankType {
5787        JankUnspecified = 0,
5788        JankNone = 1,
5789        JankSfScheduling = 2,
5790        JankPredictionError = 4,
5791        JankDisplayHal = 8,
5792        JankSfCpuDeadlineMissed = 16,
5793        JankSfGpuDeadlineMissed = 32,
5794        JankAppDeadlineMissed = 64,
5795        JankBufferStuffing = 128,
5796        JankUnknown = 256,
5797        JankSfStuffing = 512,
5798        JankDropped = 1024,
5799        JankNonAnimating = 2048,
5800        JankAppResyncedJitter = 4096,
5801        JankDisplayNotOn = 8192,
5802        JankDisplayModeChangeInProgress = 16384,
5803        JankDisplayPowerModeChangeInProgress = 32768,
5804    }
5805    impl JankType {
5806        /// String value of the enum field names used in the ProtoBuf definition.
5807        ///
5808        /// The values are not transformed in any way and thus are considered stable
5809        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5810        pub fn as_str_name(&self) -> &'static str {
5811            match self {
5812                JankType::JankUnspecified => "JANK_UNSPECIFIED",
5813                JankType::JankNone => "JANK_NONE",
5814                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
5815                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
5816                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
5817                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
5818                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
5819                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
5820                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
5821                JankType::JankUnknown => "JANK_UNKNOWN",
5822                JankType::JankSfStuffing => "JANK_SF_STUFFING",
5823                JankType::JankDropped => "JANK_DROPPED",
5824                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
5825                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
5826                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
5827                JankType::JankDisplayModeChangeInProgress => "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS",
5828                JankType::JankDisplayPowerModeChangeInProgress => "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS",
5829            }
5830        }
5831    }
5832    /// Specifies the severity of a jank.
5833    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5834    #[repr(i32)]
5835    pub enum JankSeverityType {
5836        SeverityUnknown = 0,
5837        SeverityNone = 1,
5838        SeverityPartial = 2,
5839        SeverityFull = 3,
5840    }
5841    impl JankSeverityType {
5842        /// String value of the enum field names used in the ProtoBuf definition.
5843        ///
5844        /// The values are not transformed in any way and thus are considered stable
5845        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5846        pub fn as_str_name(&self) -> &'static str {
5847            match self {
5848                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
5849                JankSeverityType::SeverityNone => "SEVERITY_NONE",
5850                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
5851                JankSeverityType::SeverityFull => "SEVERITY_FULL",
5852            }
5853        }
5854    }
5855    /// Specifies how a frame was presented on screen w.r.t. timing.
5856    /// Can be different for SurfaceFrame and DisplayFrame.
5857    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5858    #[repr(i32)]
5859    pub enum PresentType {
5860        PresentUnspecified = 0,
5861        PresentOnTime = 1,
5862        PresentLate = 2,
5863        PresentEarly = 3,
5864        PresentDropped = 4,
5865        PresentUnknown = 5,
5866    }
5867    impl PresentType {
5868        /// String value of the enum field names used in the ProtoBuf definition.
5869        ///
5870        /// The values are not transformed in any way and thus are considered stable
5871        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5872        pub fn as_str_name(&self) -> &'static str {
5873            match self {
5874                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
5875                PresentType::PresentOnTime => "PRESENT_ON_TIME",
5876                PresentType::PresentLate => "PRESENT_LATE",
5877                PresentType::PresentEarly => "PRESENT_EARLY",
5878                PresentType::PresentDropped => "PRESENT_DROPPED",
5879                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
5880            }
5881        }
5882    }
5883    /// Specifies if the predictions for the frame are still valid, expired or
5884    /// unknown.
5885    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5886    #[repr(i32)]
5887    pub enum PredictionType {
5888        PredictionUnspecified = 0,
5889        PredictionValid = 1,
5890        PredictionExpired = 2,
5891        PredictionUnknown = 3,
5892    }
5893    impl PredictionType {
5894        /// String value of the enum field names used in the ProtoBuf definition.
5895        ///
5896        /// The values are not transformed in any way and thus are considered stable
5897        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5898        pub fn as_str_name(&self) -> &'static str {
5899            match self {
5900                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
5901                PredictionType::PredictionValid => "PREDICTION_VALID",
5902                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
5903                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
5904            }
5905        }
5906    }
5907    #[derive(Clone, PartialEq, ::prost::Oneof)]
5908    pub enum Event {
5909        #[prost(message, tag="1")]
5910        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
5911        #[prost(message, tag="2")]
5912        ActualDisplayFrameStart(ActualDisplayFrameStart),
5913        #[prost(message, tag="3")]
5914        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
5915        #[prost(message, tag="4")]
5916        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
5917        #[prost(message, tag="5")]
5918        FrameEnd(FrameEnd),
5919    }
5920}
5921// End of protos/perfetto/trace/android/frame_timeline_event.proto
5922
5923// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
5924
5925/// Generated by Android's GpuService.
5926#[derive(Clone, PartialEq, ::prost::Message)]
5927pub struct GpuMemTotalEvent {
5928    #[prost(uint32, optional, tag="1")]
5929    pub gpu_id: ::core::option::Option<u32>,
5930    #[prost(uint32, optional, tag="2")]
5931    pub pid: ::core::option::Option<u32>,
5932    #[prost(uint64, optional, tag="3")]
5933    pub size: ::core::option::Option<u64>,
5934}
5935// End of protos/perfetto/trace/android/gpu_mem_event.proto
5936
5937// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
5938
5939/// Generated by Android's SurfaceFlinger.
5940#[derive(Clone, PartialEq, ::prost::Message)]
5941pub struct GraphicsFrameEvent {
5942    #[prost(message, optional, tag="1")]
5943    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
5944}
5945/// Nested message and enum types in `GraphicsFrameEvent`.
5946pub mod graphics_frame_event {
5947    #[derive(Clone, PartialEq, ::prost::Message)]
5948    pub struct BufferEvent {
5949        #[prost(uint32, optional, tag="1")]
5950        pub frame_number: ::core::option::Option<u32>,
5951        #[prost(enumeration="BufferEventType", optional, tag="2")]
5952        pub r#type: ::core::option::Option<i32>,
5953        #[prost(string, optional, tag="3")]
5954        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5955        /// If no duration is set, the event is an instant event.
5956        #[prost(uint64, optional, tag="4")]
5957        pub duration_ns: ::core::option::Option<u64>,
5958        /// Unique buffer identifier.
5959        #[prost(uint32, optional, tag="5")]
5960        pub buffer_id: ::core::option::Option<u32>,
5961    }
5962    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5963    #[repr(i32)]
5964    pub enum BufferEventType {
5965        Unspecified = 0,
5966        Dequeue = 1,
5967        Queue = 2,
5968        Post = 3,
5969        AcquireFence = 4,
5970        Latch = 5,
5971        /// HWC will compose this buffer
5972        HwcCompositionQueued = 6,
5973        /// renderEngine composition
5974        FallbackComposition = 7,
5975        PresentFence = 8,
5976        ReleaseFence = 9,
5977        Modify = 10,
5978        Detach = 11,
5979        Attach = 12,
5980        Cancel = 13,
5981    }
5982    impl BufferEventType {
5983        /// String value of the enum field names used in the ProtoBuf definition.
5984        ///
5985        /// The values are not transformed in any way and thus are considered stable
5986        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5987        pub fn as_str_name(&self) -> &'static str {
5988            match self {
5989                BufferEventType::Unspecified => "UNSPECIFIED",
5990                BufferEventType::Dequeue => "DEQUEUE",
5991                BufferEventType::Queue => "QUEUE",
5992                BufferEventType::Post => "POST",
5993                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
5994                BufferEventType::Latch => "LATCH",
5995                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
5996                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
5997                BufferEventType::PresentFence => "PRESENT_FENCE",
5998                BufferEventType::ReleaseFence => "RELEASE_FENCE",
5999                BufferEventType::Modify => "MODIFY",
6000                BufferEventType::Detach => "DETACH",
6001                BufferEventType::Attach => "ATTACH",
6002                BufferEventType::Cancel => "CANCEL",
6003            }
6004        }
6005    }
6006}
6007// End of protos/perfetto/trace/android/graphics_frame_event.proto
6008
6009// Begin of protos/perfetto/trace/android/initial_display_state.proto
6010
6011#[derive(Clone, PartialEq, ::prost::Message)]
6012pub struct InitialDisplayState {
6013    /// Same values as android.view.Display.STATE_*
6014    #[prost(int32, optional, tag="1")]
6015    pub display_state: ::core::option::Option<i32>,
6016    #[prost(double, optional, tag="2")]
6017    pub brightness: ::core::option::Option<f64>,
6018}
6019// End of protos/perfetto/trace/android/initial_display_state.proto
6020
6021// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
6022
6023#[derive(Clone, PartialEq, ::prost::Message)]
6024pub struct KernelWakelockData {
6025    /// This is only emitted when we encounter new wakelocks.
6026    #[prost(message, repeated, tag="1")]
6027    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
6028    /// Interning id.
6029    #[prost(uint32, repeated, tag="2")]
6030    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
6031    /// If we interned the wakelock name in this packet, this is the total time
6032    /// the wakelock has been held.
6033    /// If not, it's a delta from the last time we saw it.
6034    #[prost(uint64, repeated, tag="3")]
6035    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
6036    #[prost(uint64, optional, tag="4")]
6037    pub error_flags: ::core::option::Option<u64>,
6038}
6039/// Nested message and enum types in `KernelWakelockData`.
6040pub mod kernel_wakelock_data {
6041    #[derive(Clone, PartialEq, ::prost::Message)]
6042    pub struct Wakelock {
6043        /// Interning id.
6044        #[prost(uint32, optional, tag="1")]
6045        pub wakelock_id: ::core::option::Option<u32>,
6046        /// Name of the wakelock.
6047        #[prost(string, optional, tag="2")]
6048        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
6049        /// Type of the wakelock. We record data about both true kernel wakelocks
6050        /// and "native" wakelocks which are taken in userspace but are more
6051        /// conceptually similar to kernel wakelocks than normal userspace ones.
6052        #[prost(enumeration="wakelock::Type", optional, tag="3")]
6053        pub wakelock_type: ::core::option::Option<i32>,
6054    }
6055    /// Nested message and enum types in `Wakelock`.
6056    pub mod wakelock {
6057        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6058        #[repr(i32)]
6059        pub enum Type {
6060            WakelockTypeUnknown = 0,
6061            WakelockTypeKernel = 1,
6062            WakelockTypeNative = 2,
6063        }
6064        impl Type {
6065            /// String value of the enum field names used in the ProtoBuf definition.
6066            ///
6067            /// The values are not transformed in any way and thus are considered stable
6068            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6069            pub fn as_str_name(&self) -> &'static str {
6070                match self {
6071                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
6072                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
6073                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
6074                }
6075            }
6076        }
6077    }
6078}
6079/// NetworkPacketEvent records the details of a single packet sent or received
6080/// on the network (in Linux kernel terminology, one sk_buff struct).
6081#[derive(Clone, PartialEq, ::prost::Message)]
6082pub struct NetworkPacketEvent {
6083    /// The direction traffic is flowing for this event.
6084    #[prost(enumeration="TrafficDirection", optional, tag="1")]
6085    pub direction: ::core::option::Option<i32>,
6086    /// The name of the network interface if available (e.g. 'rmnet0').
6087    #[prost(string, optional, tag="2")]
6088    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
6089    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
6090    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
6091    /// NetworkPacketContext.
6092    #[prost(uint32, optional, tag="3")]
6093    pub length: ::core::option::Option<u32>,
6094    /// The Linux user id associated with the packet's socket.
6095    #[prost(uint32, optional, tag="4")]
6096    pub uid: ::core::option::Option<u32>,
6097    /// The Android network tag associated with the packet's socket.
6098    #[prost(uint32, optional, tag="5")]
6099    pub tag: ::core::option::Option<u32>,
6100    /// The packet's IP protocol (TCP=6, UDP=17, etc).
6101    #[prost(uint32, optional, tag="6")]
6102    pub ip_proto: ::core::option::Option<u32>,
6103    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
6104    #[prost(uint32, optional, tag="7")]
6105    pub tcp_flags: ::core::option::Option<u32>,
6106    /// The local udp/tcp port of the packet.
6107    #[prost(uint32, optional, tag="8")]
6108    pub local_port: ::core::option::Option<u32>,
6109    /// The remote udp/tcp port of the packet.
6110    #[prost(uint32, optional, tag="9")]
6111    pub remote_port: ::core::option::Option<u32>,
6112    /// The 1-byte ICMP type identifier.
6113    #[prost(uint32, optional, tag="10")]
6114    pub icmp_type: ::core::option::Option<u32>,
6115    /// The 1-byte ICMP code identifier.
6116    #[prost(uint32, optional, tag="11")]
6117    pub icmp_code: ::core::option::Option<u32>,
6118}
6119/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
6120#[derive(Clone, PartialEq, ::prost::Message)]
6121pub struct NetworkPacketBundle {
6122    /// The timestamp of the i-th packet encoded as the nanoseconds since the
6123    /// enclosing TracePacket's timestamp.
6124    #[prost(uint64, repeated, tag="3")]
6125    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
6126    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
6127    #[prost(uint32, repeated, tag="4")]
6128    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
6129    /// Total number of packets in the bundle (when above aggregation_threshold).
6130    #[prost(uint32, optional, tag="5")]
6131    pub total_packets: ::core::option::Option<u32>,
6132    /// Duration between first and last packet (when above aggregation_threshold).
6133    #[prost(uint64, optional, tag="6")]
6134    pub total_duration: ::core::option::Option<u64>,
6135    /// Total packet length in bytes (when above aggregation_threshold).
6136    #[prost(uint64, optional, tag="7")]
6137    pub total_length: ::core::option::Option<u64>,
6138    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
6139    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
6140}
6141/// Nested message and enum types in `NetworkPacketBundle`.
6142pub mod network_packet_bundle {
6143    #[derive(Clone, PartialEq, ::prost::Oneof)]
6144    pub enum PacketContext {
6145        /// The intern id for looking up the associated packet context.
6146        #[prost(uint64, tag="1")]
6147        Iid(u64),
6148        /// The inlined context for events in this bundle.
6149        #[prost(message, tag="2")]
6150        Ctx(super::NetworkPacketEvent),
6151    }
6152}
6153/// An internable packet context.
6154#[derive(Clone, PartialEq, ::prost::Message)]
6155pub struct NetworkPacketContext {
6156    #[prost(uint64, optional, tag="1")]
6157    pub iid: ::core::option::Option<u64>,
6158    #[prost(message, optional, tag="2")]
6159    pub ctx: ::core::option::Option<NetworkPacketEvent>,
6160}
6161// End of protos/perfetto/trace/android/network_trace.proto
6162
6163// Begin of protos/perfetto/trace/android/packages_list.proto
6164
6165#[derive(Clone, PartialEq, ::prost::Message)]
6166pub struct PackagesList {
6167    #[prost(message, repeated, tag="1")]
6168    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
6169    /// At least one error occurred parsing the packages.list.
6170    #[prost(bool, optional, tag="2")]
6171    pub parse_error: ::core::option::Option<bool>,
6172    /// Failed to open / read packages.list.
6173    #[prost(bool, optional, tag="3")]
6174    pub read_error: ::core::option::Option<bool>,
6175}
6176/// Nested message and enum types in `PackagesList`.
6177pub mod packages_list {
6178    #[derive(Clone, PartialEq, ::prost::Message)]
6179    pub struct PackageInfo {
6180        #[prost(string, optional, tag="1")]
6181        pub name: ::core::option::Option<::prost::alloc::string::String>,
6182        #[prost(uint64, optional, tag="2")]
6183        pub uid: ::core::option::Option<u64>,
6184        #[prost(bool, optional, tag="3")]
6185        pub debuggable: ::core::option::Option<bool>,
6186        #[prost(bool, optional, tag="4")]
6187        pub profileable_from_shell: ::core::option::Option<bool>,
6188        #[prost(int64, optional, tag="5")]
6189        pub version_code: ::core::option::Option<i64>,
6190    }
6191}
6192// End of protos/perfetto/trace/android/packages_list.proto
6193
6194// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
6195
6196#[derive(Clone, PartialEq, ::prost::Message)]
6197pub struct PixelModemEvents {
6198    /// Pigweed-format dehydrated events.
6199    #[prost(bytes="vec", repeated, tag="1")]
6200    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
6201    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
6202    /// timestamp is the absolute timestamp of the first event. Subsequent
6203    /// timestamps are deltas from the previous timestamp.
6204    /// The nth entry from `events` gets the nth entry here.
6205    #[prost(uint64, repeated, packed="false", tag="2")]
6206    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
6207}
6208/// NB: this is not emitted in the trace but can be prepended later.
6209#[derive(Clone, PartialEq, ::prost::Message)]
6210pub struct PixelModemTokenDatabase {
6211    /// Pigweed-format database to allow event rehydration.
6212    #[prost(bytes="vec", optional, tag="1")]
6213    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6214}
6215// End of protos/perfetto/trace/android/pixel_modem_events.proto
6216
6217// Begin of protos/perfetto/trace/android/protolog.proto
6218
6219/// represents a single log entry 
6220#[derive(Clone, PartialEq, ::prost::Message)]
6221pub struct ProtoLogMessage {
6222    /// log statement identifier, created from message string and log level. 
6223    #[prost(fixed64, optional, tag="1")]
6224    pub message_id: ::core::option::Option<u64>,
6225    /// string parameters passed to the log call that have been interned. 
6226    #[prost(uint32, repeated, packed="false", tag="2")]
6227    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
6228    /// integer parameters passed to the log call. 
6229    #[prost(sint64, repeated, packed="false", tag="3")]
6230    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
6231    /// floating point parameters passed to the log call. 
6232    #[prost(double, repeated, packed="false", tag="4")]
6233    pub double_params: ::prost::alloc::vec::Vec<f64>,
6234    /// boolean parameters passed to the log call. 
6235    #[prost(int32, repeated, packed="false", tag="5")]
6236    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
6237    /// id of the interned stacktrace string
6238    /// (only dumped if explicitly confuigured to do so)
6239    #[prost(uint32, optional, tag="6")]
6240    pub stacktrace_iid: ::core::option::Option<u32>,
6241}
6242/// contains all the data required to fully decode the protolog messages 
6243#[derive(Clone, PartialEq, ::prost::Message)]
6244pub struct ProtoLogViewerConfig {
6245    #[prost(message, repeated, tag="1")]
6246    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
6247    #[prost(message, repeated, tag="2")]
6248    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
6249}
6250/// Nested message and enum types in `ProtoLogViewerConfig`.
6251pub mod proto_log_viewer_config {
6252    #[derive(Clone, PartialEq, ::prost::Message)]
6253    pub struct MessageData {
6254        /// the id of the message that is logged in a ProtoLogMessage
6255        #[prost(fixed64, optional, tag="1")]
6256        pub message_id: ::core::option::Option<u64>,
6257        /// the string representation of the message
6258        #[prost(string, optional, tag="2")]
6259        pub message: ::core::option::Option<::prost::alloc::string::String>,
6260        /// the level of the message
6261        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
6262        pub level: ::core::option::Option<i32>,
6263        /// the id of the log group this message belongs to
6264        #[prost(uint32, optional, tag="4")]
6265        pub group_id: ::core::option::Option<u32>,
6266        /// path to the file where the message was logged
6267        #[prost(string, optional, tag="5")]
6268        pub location: ::core::option::Option<::prost::alloc::string::String>,
6269    }
6270    /// information about a ProtoLog log group 
6271    #[derive(Clone, PartialEq, ::prost::Message)]
6272    pub struct Group {
6273        #[prost(uint32, optional, tag="1")]
6274        pub id: ::core::option::Option<u32>,
6275        #[prost(string, optional, tag="2")]
6276        pub name: ::core::option::Option<::prost::alloc::string::String>,
6277        #[prost(string, optional, tag="3")]
6278        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6279    }
6280}
6281// End of protos/perfetto/trace/android/protolog.proto
6282
6283// Begin of protos/perfetto/trace/android/shell_transition.proto
6284
6285/// ShellTransition messages record information about the shell transitions in
6286/// the system. This is used to track the animations that are created and execute
6287/// through the shell transition system.
6288#[derive(Clone, PartialEq, ::prost::Message)]
6289pub struct ShellTransition {
6290    /// The unique identifier of the transition.
6291    #[prost(int32, optional, tag="1")]
6292    pub id: ::core::option::Option<i32>,
6293    /// The time the transition was created on the WM side
6294    /// (using SystemClock.elapsedRealtimeNanos())
6295    #[prost(int64, optional, tag="2")]
6296    pub create_time_ns: ::core::option::Option<i64>,
6297    /// The time the transition was sent from the WM side to shell
6298    /// (using SystemClock.elapsedRealtimeNanos())
6299    #[prost(int64, optional, tag="3")]
6300    pub send_time_ns: ::core::option::Option<i64>,
6301    /// The time the transition was dispatched by shell to execute
6302    /// (using SystemClock.elapsedRealtimeNanos())
6303    #[prost(int64, optional, tag="4")]
6304    pub dispatch_time_ns: ::core::option::Option<i64>,
6305    /// If the transition merge was accepted by the transition handler, this
6306    /// contains the time the transition was merged into transition with id
6307    /// `merge_target`.
6308    /// (using SystemClock.elapsedRealtimeNanos())
6309    #[prost(int64, optional, tag="5")]
6310    pub merge_time_ns: ::core::option::Option<i64>,
6311    /// The time shell proposed the transition should be merged to the transition
6312    /// handler into transition with id `merge_target`.
6313    /// (using SystemClock.elapsedRealtimeNanos()).
6314    #[prost(int64, optional, tag="6")]
6315    pub merge_request_time_ns: ::core::option::Option<i64>,
6316    /// If the transition was aborted on the shell side, this is the time that
6317    /// occurred.
6318    /// (using SystemClock.elapsedRealtimeNanos())
6319    #[prost(int64, optional, tag="7")]
6320    pub shell_abort_time_ns: ::core::option::Option<i64>,
6321    /// If the transition was aborted on the wm side, this is the time that
6322    /// occurred.
6323    /// (using SystemClock.elapsedRealtimeNanos())
6324    #[prost(int64, optional, tag="8")]
6325    pub wm_abort_time_ns: ::core::option::Option<i64>,
6326    /// The time WM considers the transition to be complete.
6327    /// (using SystemClock.elapsedRealtimeNanos())
6328    #[prost(int64, optional, tag="9")]
6329    pub finish_time_ns: ::core::option::Option<i64>,
6330    /// The id of the transaction that WM proposed to use as the starting
6331    /// transaction. It contains all the layer changes required to setup the
6332    /// transition and should be executed right at the start of the transition
6333    /// by the transition handler.
6334    #[prost(uint64, optional, tag="10")]
6335    pub start_transaction_id: ::core::option::Option<u64>,
6336    /// The if of the transaction that WM proposed to use as the finish
6337    /// transaction. It contains all the layer changes required to set the final
6338    /// state of the transition.
6339    #[prost(uint64, optional, tag="11")]
6340    pub finish_transaction_id: ::core::option::Option<u64>,
6341    /// The id of the handler that executed the transition. A HandlerMappings
6342    /// message in the trace will contain the mapping of id to a string
6343    /// representation of the handler.
6344    #[prost(int32, optional, tag="12")]
6345    pub handler: ::core::option::Option<i32>,
6346    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
6347    #[prost(int32, optional, tag="13")]
6348    pub r#type: ::core::option::Option<i32>,
6349    /// The list of targets that are part of this transition.
6350    #[prost(message, repeated, tag="14")]
6351    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
6352    /// The id of the transition we have requested to merge or have merged this
6353    /// transition into.
6354    #[prost(int32, optional, tag="15")]
6355    pub merge_target: ::core::option::Option<i32>,
6356    /// The flags set on this transition.
6357    #[prost(int32, optional, tag="16")]
6358    pub flags: ::core::option::Option<i32>,
6359    /// The time the starting window was removed. Tracked because this can
6360    /// happen after the transition finishes, but the app may not yet be visible
6361    /// until the starting window is removed. So in a sense the transition is not
6362    /// finished until the starting window is removed. (b/284302118)
6363    /// (using SystemClock.elapsedRealtimeNanos())
6364    #[prost(int64, optional, tag="17")]
6365    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
6366}
6367/// Nested message and enum types in `ShellTransition`.
6368pub mod shell_transition {
6369    /// Contains the information about the windows targeted in a transition.
6370    #[derive(Clone, PartialEq, ::prost::Message)]
6371    pub struct Target {
6372        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
6373        #[prost(int32, optional, tag="1")]
6374        pub mode: ::core::option::Option<i32>,
6375        /// The layer id of this target.
6376        #[prost(int32, optional, tag="2")]
6377        pub layer_id: ::core::option::Option<i32>,
6378        /// The window id of this target.
6379        #[prost(int32, optional, tag="3")]
6380        pub window_id: ::core::option::Option<i32>,
6381        /// The flags set on this target.
6382        #[prost(int32, optional, tag="4")]
6383        pub flags: ::core::option::Option<i32>,
6384    }
6385}
6386/// Contains mappings from handler ids to string representation of the handlers.
6387#[derive(Clone, PartialEq, ::prost::Message)]
6388pub struct ShellHandlerMappings {
6389    #[prost(message, repeated, tag="1")]
6390    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
6391}
6392#[derive(Clone, PartialEq, ::prost::Message)]
6393pub struct ShellHandlerMapping {
6394    /// The id of the handler used in the ShellTransition message.
6395    #[prost(int32, optional, tag="1")]
6396    pub id: ::core::option::Option<i32>,
6397    /// A human readable and meaningful string representation of the handler.
6398    #[prost(string, optional, tag="2")]
6399    pub name: ::core::option::Option<::prost::alloc::string::String>,
6400}
6401// End of protos/perfetto/trace/android/shell_transition.proto
6402
6403// Begin of protos/perfetto/trace/android/graphics/rect.proto
6404
6405#[derive(Clone, PartialEq, ::prost::Message)]
6406pub struct RectProto {
6407    #[prost(int32, optional, tag="1")]
6408    pub left: ::core::option::Option<i32>,
6409    #[prost(int32, optional, tag="2")]
6410    pub top: ::core::option::Option<i32>,
6411    #[prost(int32, optional, tag="3")]
6412    pub right: ::core::option::Option<i32>,
6413    #[prost(int32, optional, tag="4")]
6414    pub bottom: ::core::option::Option<i32>,
6415}
6416// End of protos/perfetto/trace/android/graphics/rect.proto
6417
6418// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
6419
6420#[derive(Clone, PartialEq, ::prost::Message)]
6421pub struct RegionProto {
6422    #[prost(message, repeated, tag="2")]
6423    pub rect: ::prost::alloc::vec::Vec<RectProto>,
6424}
6425#[derive(Clone, PartialEq, ::prost::Message)]
6426pub struct SizeProto {
6427    #[prost(int32, optional, tag="1")]
6428    pub w: ::core::option::Option<i32>,
6429    #[prost(int32, optional, tag="2")]
6430    pub h: ::core::option::Option<i32>,
6431}
6432#[derive(Clone, PartialEq, ::prost::Message)]
6433pub struct TransformProto {
6434    #[prost(float, optional, tag="1")]
6435    pub dsdx: ::core::option::Option<f32>,
6436    #[prost(float, optional, tag="2")]
6437    pub dtdx: ::core::option::Option<f32>,
6438    #[prost(float, optional, tag="3")]
6439    pub dsdy: ::core::option::Option<f32>,
6440    #[prost(float, optional, tag="4")]
6441    pub dtdy: ::core::option::Option<f32>,
6442    #[prost(int32, optional, tag="5")]
6443    pub r#type: ::core::option::Option<i32>,
6444}
6445#[derive(Clone, PartialEq, ::prost::Message)]
6446pub struct ColorProto {
6447    #[prost(float, optional, tag="1")]
6448    pub r: ::core::option::Option<f32>,
6449    #[prost(float, optional, tag="2")]
6450    pub g: ::core::option::Option<f32>,
6451    #[prost(float, optional, tag="3")]
6452    pub b: ::core::option::Option<f32>,
6453    #[prost(float, optional, tag="4")]
6454    pub a: ::core::option::Option<f32>,
6455}
6456#[derive(Clone, PartialEq, ::prost::Message)]
6457pub struct InputWindowInfoProto {
6458    #[prost(uint32, optional, tag="1")]
6459    pub layout_params_flags: ::core::option::Option<u32>,
6460    #[prost(int32, optional, tag="2")]
6461    pub layout_params_type: ::core::option::Option<i32>,
6462    #[prost(message, optional, tag="3")]
6463    pub frame: ::core::option::Option<RectProto>,
6464    #[prost(message, optional, tag="4")]
6465    pub touchable_region: ::core::option::Option<RegionProto>,
6466    #[prost(int32, optional, tag="5")]
6467    pub surface_inset: ::core::option::Option<i32>,
6468    #[prost(bool, optional, tag="6")]
6469    pub visible: ::core::option::Option<bool>,
6470    #[deprecated]
6471    #[prost(bool, optional, tag="7")]
6472    pub can_receive_keys: ::core::option::Option<bool>,
6473    #[prost(bool, optional, tag="8")]
6474    pub focusable: ::core::option::Option<bool>,
6475    #[prost(bool, optional, tag="9")]
6476    pub has_wallpaper: ::core::option::Option<bool>,
6477    #[prost(float, optional, tag="10")]
6478    pub global_scale_factor: ::core::option::Option<f32>,
6479    #[deprecated]
6480    #[prost(float, optional, tag="11")]
6481    pub window_x_scale: ::core::option::Option<f32>,
6482    #[deprecated]
6483    #[prost(float, optional, tag="12")]
6484    pub window_y_scale: ::core::option::Option<f32>,
6485    #[prost(int32, optional, tag="13")]
6486    pub crop_layer_id: ::core::option::Option<i32>,
6487    #[prost(bool, optional, tag="14")]
6488    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6489    #[prost(message, optional, tag="15")]
6490    pub touchable_region_crop: ::core::option::Option<RectProto>,
6491    #[prost(message, optional, tag="16")]
6492    pub transform: ::core::option::Option<TransformProto>,
6493    #[prost(uint32, optional, tag="17")]
6494    pub input_config: ::core::option::Option<u32>,
6495}
6496#[derive(Clone, PartialEq, ::prost::Message)]
6497pub struct BlurRegion {
6498    #[prost(uint32, optional, tag="1")]
6499    pub blur_radius: ::core::option::Option<u32>,
6500    #[deprecated]
6501    #[prost(uint32, optional, tag="2")]
6502    pub corner_radius_tl: ::core::option::Option<u32>,
6503    #[deprecated]
6504    #[prost(uint32, optional, tag="3")]
6505    pub corner_radius_tr: ::core::option::Option<u32>,
6506    #[deprecated]
6507    #[prost(uint32, optional, tag="4")]
6508    pub corner_radius_bl: ::core::option::Option<u32>,
6509    #[deprecated]
6510    #[prost(float, optional, tag="5")]
6511    pub corner_radius_br: ::core::option::Option<f32>,
6512    #[prost(float, optional, tag="11")]
6513    pub corner_radius_tlx: ::core::option::Option<f32>,
6514    #[prost(float, optional, tag="12")]
6515    pub corner_radius_tly: ::core::option::Option<f32>,
6516    #[prost(float, optional, tag="13")]
6517    pub corner_radius_trx: ::core::option::Option<f32>,
6518    #[prost(float, optional, tag="14")]
6519    pub corner_radius_try: ::core::option::Option<f32>,
6520    #[prost(float, optional, tag="15")]
6521    pub corner_radius_blx: ::core::option::Option<f32>,
6522    #[prost(float, optional, tag="16")]
6523    pub corner_radius_bly: ::core::option::Option<f32>,
6524    #[prost(float, optional, tag="17")]
6525    pub corner_radius_brx: ::core::option::Option<f32>,
6526    #[prost(float, optional, tag="18")]
6527    pub corner_radius_bry: ::core::option::Option<f32>,
6528    #[prost(float, optional, tag="6")]
6529    pub alpha: ::core::option::Option<f32>,
6530    #[prost(int32, optional, tag="7")]
6531    pub left: ::core::option::Option<i32>,
6532    #[prost(int32, optional, tag="8")]
6533    pub top: ::core::option::Option<i32>,
6534    #[prost(int32, optional, tag="9")]
6535    pub right: ::core::option::Option<i32>,
6536    #[prost(int32, optional, tag="10")]
6537    pub bottom: ::core::option::Option<i32>,
6538}
6539#[derive(Clone, PartialEq, ::prost::Message)]
6540pub struct ColorTransformProto {
6541    /// This will be a 4x4 matrix of float values
6542    #[prost(float, repeated, tag="1")]
6543    pub val: ::prost::alloc::vec::Vec<f32>,
6544}
6545#[derive(Clone, PartialEq, ::prost::Message)]
6546pub struct BoxShadowSettings {
6547    #[prost(message, repeated, tag="1")]
6548    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
6549}
6550/// Nested message and enum types in `BoxShadowSettings`.
6551pub mod box_shadow_settings {
6552    #[derive(Clone, PartialEq, ::prost::Message)]
6553    pub struct BoxShadowParams {
6554        #[prost(float, optional, tag="1")]
6555        pub blur_radius: ::core::option::Option<f32>,
6556        #[prost(float, optional, tag="2")]
6557        pub spread_radius: ::core::option::Option<f32>,
6558        #[prost(int32, optional, tag="3")]
6559        pub color: ::core::option::Option<i32>,
6560        #[prost(float, optional, tag="4")]
6561        pub offset_x: ::core::option::Option<f32>,
6562        #[prost(float, optional, tag="5")]
6563        pub offset_y: ::core::option::Option<f32>,
6564    }
6565}
6566#[derive(Clone, PartialEq, ::prost::Message)]
6567pub struct BorderSettings {
6568    #[prost(float, optional, tag="1")]
6569    pub stroke_width: ::core::option::Option<f32>,
6570    #[prost(int32, optional, tag="2")]
6571    pub color: ::core::option::Option<i32>,
6572}
6573// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
6574
6575/// Message used by Winscope to process legacy trace files.
6576/// Represents a file full of surface flinger trace entries.
6577/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
6578/// (.LYRTRACE), such that they can be easily identified.
6579#[derive(Clone, PartialEq, ::prost::Message)]
6580pub struct LayersTraceFileProto {
6581    /// Must be the first field, set to value in MagicNumber
6582    #[prost(fixed64, optional, tag="1")]
6583    pub magic_number: ::core::option::Option<u64>,
6584    #[prost(message, repeated, tag="2")]
6585    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
6586    /// Offset between real-time clock and elapsed time clock in nanoseconds.
6587    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6588    /// systemTime(SYSTEM_TIME_MONOTONIC)
6589    #[prost(fixed64, optional, tag="3")]
6590    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6591}
6592/// Nested message and enum types in `LayersTraceFileProto`.
6593pub mod layers_trace_file_proto {
6594    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6595    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6596    /// and there's no nice way to put 64bit constants into .proto files.
6597    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6598    #[repr(i32)]
6599    pub enum MagicNumber {
6600        Invalid = 0,
6601        /// LYRT (little-endian ASCII)
6602        L = 1414682956,
6603        /// RACE (little-endian ASCII)
6604        H = 1162035538,
6605    }
6606    impl MagicNumber {
6607        /// String value of the enum field names used in the ProtoBuf definition.
6608        ///
6609        /// The values are not transformed in any way and thus are considered stable
6610        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6611        pub fn as_str_name(&self) -> &'static str {
6612            match self {
6613                MagicNumber::Invalid => "INVALID",
6614                MagicNumber::L => "MAGIC_NUMBER_L",
6615                MagicNumber::H => "MAGIC_NUMBER_H",
6616            }
6617        }
6618    }
6619}
6620#[derive(Clone, PartialEq, ::prost::Message)]
6621pub struct LayersSnapshotProto {
6622    /// elapsed realtime in nanos since boot of when this entry was logged
6623    #[prost(sfixed64, optional, tag="1")]
6624    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6625    /// SurfaceFlinger's stage where the snapshot was triggered.
6626    /// Currently either "visibleRegionsDirty" or "bufferLatched".
6627    #[prost(string, optional, tag="2")]
6628    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
6629    #[prost(message, optional, tag="3")]
6630    pub layers: ::core::option::Option<LayersProto>,
6631    /// Blob for the current HWC information for all layers, reported by dumpsys.
6632    /// Example:
6633    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
6634    #[prost(string, optional, tag="4")]
6635    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
6636    /// Excludes state sent during composition like visible region and composition
6637    /// type.
6638    #[prost(bool, optional, tag="5")]
6639    pub excludes_composition_state: ::core::option::Option<bool>,
6640    /// Number of missed entries since the last entry was recorded.
6641    #[prost(uint32, optional, tag="6")]
6642    pub missed_entries: ::core::option::Option<u32>,
6643    #[prost(message, repeated, tag="7")]
6644    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
6645    #[prost(int64, optional, tag="8")]
6646    pub vsync_id: ::core::option::Option<i64>,
6647}
6648/// Contains a list of all layers.
6649#[derive(Clone, PartialEq, ::prost::Message)]
6650pub struct LayersProto {
6651    #[prost(message, repeated, tag="1")]
6652    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
6653}
6654#[derive(Clone, PartialEq, ::prost::Message)]
6655pub struct DisplayProto {
6656    #[prost(uint64, optional, tag="1")]
6657    pub id: ::core::option::Option<u64>,
6658    /// Display descriptor, e.g. "Built-In Screen"
6659    #[prost(string, optional, tag="2")]
6660    pub name: ::core::option::Option<::prost::alloc::string::String>,
6661    #[prost(uint32, optional, tag="3")]
6662    pub layer_stack: ::core::option::Option<u32>,
6663    #[prost(message, optional, tag="4")]
6664    pub size: ::core::option::Option<SizeProto>,
6665    #[prost(message, optional, tag="5")]
6666    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6667    #[prost(message, optional, tag="6")]
6668    pub transform: ::core::option::Option<TransformProto>,
6669    #[prost(bool, optional, tag="7")]
6670    pub is_virtual: ::core::option::Option<bool>,
6671    #[prost(double, optional, tag="8")]
6672    pub dpi_x: ::core::option::Option<f64>,
6673    #[prost(double, optional, tag="9")]
6674    pub dpi_y: ::core::option::Option<f64>,
6675}
6676/// Information about each layer.
6677#[derive(Clone, PartialEq, ::prost::Message)]
6678pub struct LayerProto {
6679    /// unique id per layer.
6680    #[prost(int32, optional, tag="1")]
6681    pub id: ::core::option::Option<i32>,
6682    /// unique name per layer.
6683    /// Example: "Wallpaper".
6684    #[prost(string, optional, tag="2")]
6685    pub name: ::core::option::Option<::prost::alloc::string::String>,
6686    /// list of children this layer may have. May be empty.
6687    #[prost(int32, repeated, tag="3")]
6688    pub children: ::prost::alloc::vec::Vec<i32>,
6689    /// list of layers that are z order relative to this layer.
6690    #[prost(int32, repeated, tag="4")]
6691    pub relatives: ::prost::alloc::vec::Vec<i32>,
6692    /// The type of layer.
6693    /// Examples: "ContainerLayer", "BufferStateLayer".
6694    #[prost(string, optional, tag="5")]
6695    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
6696    #[prost(message, optional, tag="6")]
6697    pub transparent_region: ::core::option::Option<RegionProto>,
6698    #[prost(message, optional, tag="7")]
6699    pub visible_region: ::core::option::Option<RegionProto>,
6700    #[prost(message, optional, tag="8")]
6701    pub damage_region: ::core::option::Option<RegionProto>,
6702    #[prost(uint32, optional, tag="9")]
6703    pub layer_stack: ::core::option::Option<u32>,
6704    /// The layer's z order. Can be z order in layer stack, relative to parent,
6705    /// or relative to another layer specified in zOrderRelative.
6706    #[prost(int32, optional, tag="10")]
6707    pub z: ::core::option::Option<i32>,
6708    /// The layer's position on the display.
6709    #[prost(message, optional, tag="11")]
6710    pub position: ::core::option::Option<PositionProto>,
6711    /// The layer's requested position.
6712    #[prost(message, optional, tag="12")]
6713    pub requested_position: ::core::option::Option<PositionProto>,
6714    /// The layer's size.
6715    #[prost(message, optional, tag="13")]
6716    pub size: ::core::option::Option<SizeProto>,
6717    /// The layer's crop in its own bounds.
6718    #[prost(message, optional, tag="14")]
6719    pub crop: ::core::option::Option<RectProto>,
6720    /// The layer's crop in its parent's bounds.
6721    #[deprecated]
6722    #[prost(message, optional, tag="15")]
6723    pub final_crop: ::core::option::Option<RectProto>,
6724    #[prost(bool, optional, tag="16")]
6725    pub is_opaque: ::core::option::Option<bool>,
6726    #[prost(bool, optional, tag="17")]
6727    pub invalidate: ::core::option::Option<bool>,
6728    /// Composition states's dataspace.
6729    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
6730    /// See full enum in
6731    /// frameworks/native/libs/nativewindow/include/android/data_space.h
6732    #[prost(string, optional, tag="18")]
6733    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
6734    /// Buffer's pixel format
6735    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
6736    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
6737    #[prost(string, optional, tag="19")]
6738    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
6739    /// The layer's actual color.
6740    #[prost(message, optional, tag="20")]
6741    pub color: ::core::option::Option<ColorProto>,
6742    /// The layer's requested color.
6743    #[prost(message, optional, tag="21")]
6744    pub requested_color: ::core::option::Option<ColorProto>,
6745    /// Can be any combination of
6746    ///     hidden = 0x01
6747    ///     opaque = 0x02,
6748    ///     secure = 0x80,
6749    #[prost(uint32, optional, tag="22")]
6750    pub flags: ::core::option::Option<u32>,
6751    /// The layer's actual transform
6752    #[prost(message, optional, tag="23")]
6753    pub transform: ::core::option::Option<TransformProto>,
6754    /// The layer's requested transform.
6755    #[prost(message, optional, tag="24")]
6756    pub requested_transform: ::core::option::Option<TransformProto>,
6757    /// The parent layer. This value can be null if there is no parent.
6758    #[prost(int32, optional, tag="25")]
6759    pub parent: ::core::option::Option<i32>,
6760    /// The layer that this layer has a z order relative to. This value can be
6761    /// null.
6762    #[prost(int32, optional, tag="26")]
6763    pub z_order_relative_of: ::core::option::Option<i32>,
6764    /// This value can be null if there's nothing to draw.
6765    #[prost(message, optional, tag="27")]
6766    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
6767    /// The number of frames available.
6768    #[prost(int32, optional, tag="28")]
6769    pub queued_frames: ::core::option::Option<i32>,
6770    #[prost(bool, optional, tag="29")]
6771    pub refresh_pending: ::core::option::Option<bool>,
6772    /// The layer's composer backend destination frame
6773    #[prost(message, optional, tag="30")]
6774    pub hwc_frame: ::core::option::Option<RectProto>,
6775    /// The layer's composer backend source crop
6776    #[prost(message, optional, tag="31")]
6777    pub hwc_crop: ::core::option::Option<FloatRectProto>,
6778    /// The layer's composer backend transform
6779    #[prost(int32, optional, tag="32")]
6780    pub hwc_transform: ::core::option::Option<i32>,
6781    #[deprecated]
6782    #[prost(int32, optional, tag="33")]
6783    pub window_type: ::core::option::Option<i32>,
6784    #[deprecated]
6785    #[prost(int32, optional, tag="34")]
6786    pub app_id: ::core::option::Option<i32>,
6787    /// The layer's composition type
6788    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
6789    pub hwc_composition_type: ::core::option::Option<i32>,
6790    /// If it's a buffer layer, indicate if the content is protected
6791    #[prost(bool, optional, tag="36")]
6792    pub is_protected: ::core::option::Option<bool>,
6793    /// Current frame number being rendered.
6794    #[prost(uint64, optional, tag="37")]
6795    pub curr_frame: ::core::option::Option<u64>,
6796    /// A list of barriers that the layer is waiting to update state.
6797    #[prost(message, repeated, tag="38")]
6798    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
6799    /// If active_buffer is not null, record its transform.
6800    #[prost(message, optional, tag="39")]
6801    pub buffer_transform: ::core::option::Option<TransformProto>,
6802    #[prost(int32, optional, tag="40")]
6803    pub effective_scaling_mode: ::core::option::Option<i32>,
6804    /// Layer's corner radius
6805    #[deprecated]
6806    #[prost(float, optional, tag="41")]
6807    pub corner_radius: ::core::option::Option<f32>,
6808    /// Metadata map. May be empty.
6809    #[prost(map="int32, bytes", tag="42")]
6810    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::vec::Vec<u8>>,
6811    #[prost(message, optional, tag="43")]
6812    pub effective_transform: ::core::option::Option<TransformProto>,
6813    #[prost(message, optional, tag="44")]
6814    pub source_bounds: ::core::option::Option<FloatRectProto>,
6815    #[prost(message, optional, tag="45")]
6816    pub bounds: ::core::option::Option<FloatRectProto>,
6817    #[prost(message, optional, tag="46")]
6818    pub screen_bounds: ::core::option::Option<FloatRectProto>,
6819    #[prost(message, optional, tag="47")]
6820    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
6821    /// Crop used to draw the rounded corner.
6822    #[prost(message, optional, tag="48")]
6823    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
6824    /// length of the shadow to draw around the layer, it may be set on the
6825    /// layer or set by a parent layer.
6826    #[prost(float, optional, tag="49")]
6827    pub shadow_radius: ::core::option::Option<f32>,
6828    #[prost(message, optional, tag="50")]
6829    pub color_transform: ::core::option::Option<ColorTransformProto>,
6830    #[prost(bool, optional, tag="51")]
6831    pub is_relative_of: ::core::option::Option<bool>,
6832    /// Layer's background blur radius in pixels.
6833    #[prost(int32, optional, tag="52")]
6834    pub background_blur_radius: ::core::option::Option<i32>,
6835    #[prost(uint32, optional, tag="53")]
6836    pub owner_uid: ::core::option::Option<u32>,
6837    /// Regions of a layer, where blur should be applied.
6838    #[prost(message, repeated, tag="54")]
6839    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6840    #[prost(bool, optional, tag="55")]
6841    pub is_trusted_overlay: ::core::option::Option<bool>,
6842    /// Corner radius explicitly set on layer rather than inherited
6843    #[deprecated]
6844    #[prost(float, optional, tag="56")]
6845    pub requested_corner_radius: ::core::option::Option<f32>,
6846    #[prost(message, optional, tag="57")]
6847    pub destination_frame: ::core::option::Option<RectProto>,
6848    #[prost(uint32, optional, tag="58")]
6849    pub original_id: ::core::option::Option<u32>,
6850    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
6851    pub trusted_overlay: ::core::option::Option<i32>,
6852    /// Layer's scale during background blur, relative to 1.0f=100%
6853    #[prost(float, optional, tag="60")]
6854    pub background_blur_scale: ::core::option::Option<f32>,
6855    /// Layer's corner radius.
6856    #[prost(message, optional, tag="61")]
6857    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
6858    /// Corner radius explicitly set on layer rather than inherited
6859    #[prost(message, optional, tag="62")]
6860    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
6861    /// Corner radius explicity set as drawn by client
6862    #[prost(message, optional, tag="63")]
6863    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
6864    /// Priority value of the layer set by the system.
6865    #[prost(int32, optional, tag="64")]
6866    pub system_content_priority: ::core::option::Option<i32>,
6867    /// Settings which specify how shadows should be drawn for a layer.
6868    #[prost(message, optional, tag="65")]
6869    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6870    /// Settings which specify how an outline should be drawn for a layer.
6871    #[prost(message, optional, tag="66")]
6872    pub border_settings: ::core::option::Option<BorderSettings>,
6873    /// "True" corner radii of the layer computed by SurfaceFlinger.
6874    #[prost(message, optional, tag="67")]
6875    pub effective_radii: ::core::option::Option<CornerRadiiProto>,
6876}
6877#[derive(Clone, PartialEq, ::prost::Message)]
6878pub struct PositionProto {
6879    #[prost(float, optional, tag="1")]
6880    pub x: ::core::option::Option<f32>,
6881    #[prost(float, optional, tag="2")]
6882    pub y: ::core::option::Option<f32>,
6883}
6884#[derive(Clone, PartialEq, ::prost::Message)]
6885pub struct FloatRectProto {
6886    #[prost(float, optional, tag="1")]
6887    pub left: ::core::option::Option<f32>,
6888    #[prost(float, optional, tag="2")]
6889    pub top: ::core::option::Option<f32>,
6890    #[prost(float, optional, tag="3")]
6891    pub right: ::core::option::Option<f32>,
6892    #[prost(float, optional, tag="4")]
6893    pub bottom: ::core::option::Option<f32>,
6894}
6895#[derive(Clone, PartialEq, ::prost::Message)]
6896pub struct CornerRadiiProto {
6897    #[prost(float, optional, tag="1")]
6898    pub tl: ::core::option::Option<f32>,
6899    #[prost(float, optional, tag="2")]
6900    pub tr: ::core::option::Option<f32>,
6901    #[prost(float, optional, tag="3")]
6902    pub bl: ::core::option::Option<f32>,
6903    #[prost(float, optional, tag="4")]
6904    pub br: ::core::option::Option<f32>,
6905}
6906#[derive(Clone, PartialEq, ::prost::Message)]
6907pub struct ActiveBufferProto {
6908    #[prost(uint32, optional, tag="1")]
6909    pub width: ::core::option::Option<u32>,
6910    #[prost(uint32, optional, tag="2")]
6911    pub height: ::core::option::Option<u32>,
6912    #[prost(uint32, optional, tag="3")]
6913    pub stride: ::core::option::Option<u32>,
6914    #[prost(int32, optional, tag="4")]
6915    pub format: ::core::option::Option<i32>,
6916    #[prost(uint64, optional, tag="5")]
6917    pub usage: ::core::option::Option<u64>,
6918}
6919#[derive(Clone, PartialEq, ::prost::Message)]
6920pub struct BarrierLayerProto {
6921    /// layer id the barrier is waiting on.
6922    #[prost(int32, optional, tag="1")]
6923    pub id: ::core::option::Option<i32>,
6924    /// frame number the barrier is waiting on.
6925    #[prost(uint64, optional, tag="2")]
6926    pub frame_number: ::core::option::Option<u64>,
6927}
6928// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
6929
6930// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6931
6932/// Message used by Winscope to process legacy trace files.
6933/// Represents a file full of surface flinger transactions.
6934/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
6935/// (.TNXTRACE), such that they can be easily identified.
6936#[derive(Clone, PartialEq, ::prost::Message)]
6937pub struct TransactionTraceFile {
6938    /// Must be the first field, set to value in MagicNumber
6939    #[prost(fixed64, optional, tag="1")]
6940    pub magic_number: ::core::option::Option<u64>,
6941    #[prost(message, repeated, tag="2")]
6942    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
6943    /// offset between real-time clock and elapsed time clock in nanoseconds.
6944    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6945    /// systemTime(SYSTEM_TIME_MONOTONIC)
6946    #[prost(fixed64, optional, tag="3")]
6947    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6948    #[prost(uint32, optional, tag="4")]
6949    pub version: ::core::option::Option<u32>,
6950}
6951/// Nested message and enum types in `TransactionTraceFile`.
6952pub mod transaction_trace_file {
6953    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6954    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6955    /// and there's no nice way to put 64bit constants into .proto files.
6956    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6957    #[repr(i32)]
6958    pub enum MagicNumber {
6959        Invalid = 0,
6960        /// TNXT (little-endian ASCII)
6961        L = 1415073364,
6962        /// RACE (little-endian ASCII)
6963        H = 1162035538,
6964    }
6965    impl MagicNumber {
6966        /// String value of the enum field names used in the ProtoBuf definition.
6967        ///
6968        /// The values are not transformed in any way and thus are considered stable
6969        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6970        pub fn as_str_name(&self) -> &'static str {
6971            match self {
6972                MagicNumber::Invalid => "INVALID",
6973                MagicNumber::L => "MAGIC_NUMBER_L",
6974                MagicNumber::H => "MAGIC_NUMBER_H",
6975            }
6976        }
6977    }
6978}
6979#[derive(Clone, PartialEq, ::prost::Message)]
6980pub struct TransactionTraceEntry {
6981    #[prost(int64, optional, tag="1")]
6982    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6983    #[prost(int64, optional, tag="2")]
6984    pub vsync_id: ::core::option::Option<i64>,
6985    #[prost(message, repeated, tag="3")]
6986    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
6987    #[prost(message, repeated, tag="4")]
6988    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
6989    #[prost(uint32, repeated, packed="false", tag="5")]
6990    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
6991    #[prost(message, repeated, tag="6")]
6992    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
6993    #[prost(int32, repeated, packed="false", tag="7")]
6994    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
6995    #[prost(uint32, repeated, packed="false", tag="8")]
6996    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
6997    #[prost(bool, optional, tag="9")]
6998    pub displays_changed: ::core::option::Option<bool>,
6999    #[prost(message, repeated, tag="10")]
7000    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
7001}
7002#[derive(Clone, PartialEq, ::prost::Message)]
7003pub struct DisplayInfo {
7004    #[prost(uint32, optional, tag="1")]
7005    pub layer_stack: ::core::option::Option<u32>,
7006    #[prost(int32, optional, tag="2")]
7007    pub display_id: ::core::option::Option<i32>,
7008    #[prost(int32, optional, tag="3")]
7009    pub logical_width: ::core::option::Option<i32>,
7010    #[prost(int32, optional, tag="4")]
7011    pub logical_height: ::core::option::Option<i32>,
7012    #[prost(message, optional, tag="5")]
7013    pub transform_inverse: ::core::option::Option<Transform>,
7014    #[prost(message, optional, tag="6")]
7015    pub transform: ::core::option::Option<Transform>,
7016    #[prost(bool, optional, tag="7")]
7017    pub receives_input: ::core::option::Option<bool>,
7018    #[prost(bool, optional, tag="8")]
7019    pub is_secure: ::core::option::Option<bool>,
7020    #[prost(bool, optional, tag="9")]
7021    pub is_primary: ::core::option::Option<bool>,
7022    #[prost(bool, optional, tag="10")]
7023    pub is_virtual: ::core::option::Option<bool>,
7024    #[prost(int32, optional, tag="11")]
7025    pub rotation_flags: ::core::option::Option<i32>,
7026    #[prost(int32, optional, tag="12")]
7027    pub transform_hint: ::core::option::Option<i32>,
7028}
7029#[derive(Clone, PartialEq, ::prost::Message)]
7030pub struct LayerCreationArgs {
7031    #[prost(uint32, optional, tag="1")]
7032    pub layer_id: ::core::option::Option<u32>,
7033    #[prost(string, optional, tag="2")]
7034    pub name: ::core::option::Option<::prost::alloc::string::String>,
7035    #[prost(uint32, optional, tag="3")]
7036    pub flags: ::core::option::Option<u32>,
7037    #[prost(uint32, optional, tag="4")]
7038    pub parent_id: ::core::option::Option<u32>,
7039    #[prost(uint32, optional, tag="5")]
7040    pub mirror_from_id: ::core::option::Option<u32>,
7041    #[prost(bool, optional, tag="6")]
7042    pub add_to_root: ::core::option::Option<bool>,
7043    #[prost(uint32, optional, tag="7")]
7044    pub layer_stack_to_mirror: ::core::option::Option<u32>,
7045}
7046#[derive(Clone, PartialEq, ::prost::Message)]
7047pub struct Transform {
7048    #[prost(float, optional, tag="1")]
7049    pub dsdx: ::core::option::Option<f32>,
7050    #[prost(float, optional, tag="2")]
7051    pub dtdx: ::core::option::Option<f32>,
7052    #[prost(float, optional, tag="3")]
7053    pub dtdy: ::core::option::Option<f32>,
7054    #[prost(float, optional, tag="4")]
7055    pub dsdy: ::core::option::Option<f32>,
7056    #[prost(float, optional, tag="5")]
7057    pub tx: ::core::option::Option<f32>,
7058    #[prost(float, optional, tag="6")]
7059    pub ty: ::core::option::Option<f32>,
7060}
7061#[derive(Clone, PartialEq, ::prost::Message)]
7062pub struct TransactionBarrier {
7063    #[prost(string, optional, tag="1")]
7064    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
7065    #[prost(uint32, optional, tag="2")]
7066    pub kind: ::core::option::Option<u32>,
7067}
7068#[derive(Clone, PartialEq, ::prost::Message)]
7069pub struct TransactionState {
7070    #[prost(int32, optional, tag="1")]
7071    pub pid: ::core::option::Option<i32>,
7072    #[prost(int32, optional, tag="2")]
7073    pub uid: ::core::option::Option<i32>,
7074    #[prost(int64, optional, tag="3")]
7075    pub vsync_id: ::core::option::Option<i64>,
7076    #[prost(int32, optional, tag="4")]
7077    pub input_event_id: ::core::option::Option<i32>,
7078    #[prost(int64, optional, tag="5")]
7079    pub post_time: ::core::option::Option<i64>,
7080    #[prost(uint64, optional, tag="6")]
7081    pub transaction_id: ::core::option::Option<u64>,
7082    #[prost(message, repeated, tag="7")]
7083    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
7084    #[prost(message, repeated, tag="8")]
7085    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
7086    #[prost(uint64, repeated, packed="false", tag="9")]
7087    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
7088    #[prost(uint64, optional, tag="10")]
7089    pub apply_token: ::core::option::Option<u64>,
7090    #[prost(message, repeated, tag="11")]
7091    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
7092}
7093/// Keep insync with layer_state_t
7094#[derive(Clone, PartialEq, ::prost::Message)]
7095pub struct LayerState {
7096    #[prost(uint32, optional, tag="1")]
7097    pub layer_id: ::core::option::Option<u32>,
7098    #[prost(uint64, optional, tag="2")]
7099    pub what: ::core::option::Option<u64>,
7100    #[prost(float, optional, tag="3")]
7101    pub x: ::core::option::Option<f32>,
7102    #[prost(float, optional, tag="4")]
7103    pub y: ::core::option::Option<f32>,
7104    #[prost(int32, optional, tag="5")]
7105    pub z: ::core::option::Option<i32>,
7106    #[prost(uint32, optional, tag="6")]
7107    pub w: ::core::option::Option<u32>,
7108    #[prost(uint32, optional, tag="7")]
7109    pub h: ::core::option::Option<u32>,
7110    #[prost(uint32, optional, tag="8")]
7111    pub layer_stack: ::core::option::Option<u32>,
7112    #[prost(uint32, optional, tag="9")]
7113    pub flags: ::core::option::Option<u32>,
7114    #[prost(uint32, optional, tag="10")]
7115    pub mask: ::core::option::Option<u32>,
7116    #[prost(message, optional, tag="11")]
7117    pub matrix: ::core::option::Option<layer_state::Matrix22>,
7118    #[deprecated]
7119    #[prost(float, optional, tag="12")]
7120    pub corner_radius: ::core::option::Option<f32>,
7121    #[prost(uint32, optional, tag="13")]
7122    pub background_blur_radius: ::core::option::Option<u32>,
7123    #[prost(uint32, optional, tag="14")]
7124    pub parent_id: ::core::option::Option<u32>,
7125    #[prost(uint32, optional, tag="15")]
7126    pub relative_parent_id: ::core::option::Option<u32>,
7127    #[prost(float, optional, tag="16")]
7128    pub alpha: ::core::option::Option<f32>,
7129    #[prost(message, optional, tag="17")]
7130    pub color: ::core::option::Option<layer_state::Color3>,
7131    #[prost(message, optional, tag="18")]
7132    pub transparent_region: ::core::option::Option<RegionProto>,
7133    #[prost(uint32, optional, tag="19")]
7134    pub transform: ::core::option::Option<u32>,
7135    #[prost(bool, optional, tag="20")]
7136    pub transform_to_display_inverse: ::core::option::Option<bool>,
7137    #[prost(message, optional, tag="21")]
7138    pub crop: ::core::option::Option<RectProto>,
7139    #[prost(message, optional, tag="22")]
7140    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
7141    #[prost(int32, optional, tag="23")]
7142    pub api: ::core::option::Option<i32>,
7143    #[prost(bool, optional, tag="24")]
7144    pub has_sideband_stream: ::core::option::Option<bool>,
7145    #[prost(message, optional, tag="25")]
7146    pub color_transform: ::core::option::Option<ColorTransformProto>,
7147    #[prost(message, repeated, tag="26")]
7148    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
7149    #[prost(message, optional, tag="27")]
7150    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
7151    #[prost(float, optional, tag="28")]
7152    pub bg_color_alpha: ::core::option::Option<f32>,
7153    #[prost(int32, optional, tag="29")]
7154    pub bg_color_dataspace: ::core::option::Option<i32>,
7155    #[prost(bool, optional, tag="30")]
7156    pub color_space_agnostic: ::core::option::Option<bool>,
7157    #[prost(float, optional, tag="31")]
7158    pub shadow_radius: ::core::option::Option<f32>,
7159    #[prost(int32, optional, tag="32")]
7160    pub frame_rate_selection_priority: ::core::option::Option<i32>,
7161    #[prost(float, optional, tag="33")]
7162    pub frame_rate: ::core::option::Option<f32>,
7163    #[prost(int32, optional, tag="34")]
7164    pub frame_rate_compatibility: ::core::option::Option<i32>,
7165    #[prost(int32, optional, tag="35")]
7166    pub change_frame_rate_strategy: ::core::option::Option<i32>,
7167    #[prost(uint32, optional, tag="36")]
7168    pub fixed_transform_hint: ::core::option::Option<u32>,
7169    #[prost(uint64, optional, tag="37")]
7170    pub frame_number: ::core::option::Option<u64>,
7171    #[prost(bool, optional, tag="38")]
7172    pub auto_refresh: ::core::option::Option<bool>,
7173    /// unused
7174    #[prost(bool, optional, tag="39")]
7175    pub is_trusted_overlay: ::core::option::Option<bool>,
7176    #[prost(message, optional, tag="40")]
7177    pub buffer_crop: ::core::option::Option<RectProto>,
7178    #[prost(message, optional, tag="41")]
7179    pub destination_frame: ::core::option::Option<RectProto>,
7180    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
7181    pub drop_input_mode: ::core::option::Option<i32>,
7182    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
7183    pub trusted_overlay: ::core::option::Option<i32>,
7184    #[prost(float, optional, tag="44")]
7185    pub background_blur_scale: ::core::option::Option<f32>,
7186    #[prost(message, optional, tag="45")]
7187    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7188    #[prost(message, optional, tag="46")]
7189    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7190    #[prost(int32, optional, tag="47")]
7191    pub system_content_priority: ::core::option::Option<i32>,
7192    #[prost(message, optional, tag="48")]
7193    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
7194    #[prost(message, optional, tag="49")]
7195    pub border_settings: ::core::option::Option<BorderSettings>,
7196}
7197/// Nested message and enum types in `LayerState`.
7198pub mod layer_state {
7199    #[derive(Clone, PartialEq, ::prost::Message)]
7200    pub struct Matrix22 {
7201        #[prost(float, optional, tag="1")]
7202        pub dsdx: ::core::option::Option<f32>,
7203        #[prost(float, optional, tag="2")]
7204        pub dtdx: ::core::option::Option<f32>,
7205        #[prost(float, optional, tag="3")]
7206        pub dtdy: ::core::option::Option<f32>,
7207        #[prost(float, optional, tag="4")]
7208        pub dsdy: ::core::option::Option<f32>,
7209    }
7210    #[derive(Clone, PartialEq, ::prost::Message)]
7211    pub struct CornerRadii {
7212        #[prost(float, optional, tag="1")]
7213        pub tl: ::core::option::Option<f32>,
7214        #[prost(float, optional, tag="2")]
7215        pub tr: ::core::option::Option<f32>,
7216        #[prost(float, optional, tag="3")]
7217        pub bl: ::core::option::Option<f32>,
7218        #[prost(float, optional, tag="4")]
7219        pub br: ::core::option::Option<f32>,
7220    }
7221    #[derive(Clone, PartialEq, ::prost::Message)]
7222    pub struct Color3 {
7223        #[prost(float, optional, tag="1")]
7224        pub r: ::core::option::Option<f32>,
7225        #[prost(float, optional, tag="2")]
7226        pub g: ::core::option::Option<f32>,
7227        #[prost(float, optional, tag="3")]
7228        pub b: ::core::option::Option<f32>,
7229    }
7230    #[derive(Clone, PartialEq, ::prost::Message)]
7231    pub struct BufferData {
7232        #[prost(uint64, optional, tag="1")]
7233        pub buffer_id: ::core::option::Option<u64>,
7234        #[prost(uint32, optional, tag="2")]
7235        pub width: ::core::option::Option<u32>,
7236        #[prost(uint32, optional, tag="3")]
7237        pub height: ::core::option::Option<u32>,
7238        #[prost(uint64, optional, tag="4")]
7239        pub frame_number: ::core::option::Option<u64>,
7240        #[prost(uint32, optional, tag="5")]
7241        pub flags: ::core::option::Option<u32>,
7242        #[prost(uint64, optional, tag="6")]
7243        pub cached_buffer_id: ::core::option::Option<u64>,
7244        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
7245        pub pixel_format: ::core::option::Option<i32>,
7246        #[prost(uint64, optional, tag="8")]
7247        pub usage: ::core::option::Option<u64>,
7248    }
7249    /// Nested message and enum types in `BufferData`.
7250    pub mod buffer_data {
7251        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7252        #[repr(i32)]
7253        pub enum BufferDataChange {
7254            None = 0,
7255            FenceChanged = 1,
7256            FrameNumberChanged = 2,
7257            CachedBufferChanged = 4,
7258        }
7259        impl BufferDataChange {
7260            /// String value of the enum field names used in the ProtoBuf definition.
7261            ///
7262            /// The values are not transformed in any way and thus are considered stable
7263            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7264            pub fn as_str_name(&self) -> &'static str {
7265                match self {
7266                    BufferDataChange::None => "BufferDataChangeNone",
7267                    BufferDataChange::FenceChanged => "fenceChanged",
7268                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
7269                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
7270                }
7271            }
7272        }
7273        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7274        #[repr(i32)]
7275        pub enum PixelFormat {
7276            Unknown = 0,
7277            Custom = -4,
7278            Translucent = -3,
7279            Transparent = -2,
7280            Opaque = -1,
7281            Rgba8888 = 1,
7282            Rgbx8888 = 2,
7283            Rgb888 = 3,
7284            Rgb565 = 4,
7285            Bgra8888 = 5,
7286            Rgba5551 = 6,
7287            Rgba4444 = 7,
7288            RgbaFp16 = 22,
7289            Rgba1010102 = 43,
7290            R8 = 56,
7291        }
7292        impl PixelFormat {
7293            /// String value of the enum field names used in the ProtoBuf definition.
7294            ///
7295            /// The values are not transformed in any way and thus are considered stable
7296            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7297            pub fn as_str_name(&self) -> &'static str {
7298                match self {
7299                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
7300                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
7301                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
7302                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
7303                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
7304                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
7305                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
7306                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
7307                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
7308                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
7309                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
7310                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
7311                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
7312                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
7313                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
7314                }
7315            }
7316        }
7317    }
7318    #[derive(Clone, PartialEq, ::prost::Message)]
7319    pub struct WindowInfo {
7320        #[prost(uint32, optional, tag="1")]
7321        pub layout_params_flags: ::core::option::Option<u32>,
7322        #[prost(int32, optional, tag="2")]
7323        pub layout_params_type: ::core::option::Option<i32>,
7324        #[prost(message, optional, tag="3")]
7325        pub touchable_region: ::core::option::Option<super::RegionProto>,
7326        #[prost(int32, optional, tag="4")]
7327        pub surface_inset: ::core::option::Option<i32>,
7328        /// unused
7329        #[prost(bool, optional, tag="5")]
7330        pub focusable: ::core::option::Option<bool>,
7331        /// unused
7332        #[prost(bool, optional, tag="6")]
7333        pub has_wallpaper: ::core::option::Option<bool>,
7334        #[prost(float, optional, tag="7")]
7335        pub global_scale_factor: ::core::option::Option<f32>,
7336        #[prost(uint32, optional, tag="8")]
7337        pub crop_layer_id: ::core::option::Option<u32>,
7338        #[prost(bool, optional, tag="9")]
7339        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
7340        #[prost(message, optional, tag="10")]
7341        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
7342        #[prost(message, optional, tag="11")]
7343        pub transform: ::core::option::Option<super::Transform>,
7344        #[prost(uint32, optional, tag="12")]
7345        pub input_config: ::core::option::Option<u32>,
7346    }
7347    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
7348    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
7349    /// enums have to be 32 bits and there's no nice way to put 64bit constants
7350    /// into .proto files.
7351    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7352    #[repr(i32)]
7353    pub enum ChangesLsb {
7354        EChangesLsbNone = 0,
7355        EPositionChanged = 1,
7356        ELayerChanged = 2,
7357        /// unused = 0x00000004;
7358        EAlphaChanged = 8,
7359        EMatrixChanged = 16,
7360        ETransparentRegionChanged = 32,
7361        EFlagsChanged = 64,
7362        ELayerStackChanged = 128,
7363        EReleaseBufferListenerChanged = 1024,
7364        EShadowRadiusChanged = 2048,
7365        EBufferCropChanged = 8192,
7366        ERelativeLayerChanged = 16384,
7367        EReparent = 32768,
7368        EColorChanged = 65536,
7369        EBufferTransformChanged = 262144,
7370        ETransformToDisplayInverseChanged = 524288,
7371        ECropChanged = 1048576,
7372        EBufferChanged = 2097152,
7373        EAcquireFenceChanged = 4194304,
7374        EDataspaceChanged = 8388608,
7375        EHdrMetadataChanged = 16777216,
7376        ESurfaceDamageRegionChanged = 33554432,
7377        EApiChanged = 67108864,
7378        ESidebandStreamChanged = 134217728,
7379        EColorTransformChanged = 268435456,
7380        EHasListenerCallbacksChanged = 536870912,
7381        EInputInfoChanged = 1073741824,
7382        /// 0x80000000; (proto stores enums as signed int)
7383        ECornerRadiusChanged = -2147483648,
7384    }
7385    impl ChangesLsb {
7386        /// String value of the enum field names used in the ProtoBuf definition.
7387        ///
7388        /// The values are not transformed in any way and thus are considered stable
7389        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7390        pub fn as_str_name(&self) -> &'static str {
7391            match self {
7392                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
7393                ChangesLsb::EPositionChanged => "ePositionChanged",
7394                ChangesLsb::ELayerChanged => "eLayerChanged",
7395                ChangesLsb::EAlphaChanged => "eAlphaChanged",
7396                ChangesLsb::EMatrixChanged => "eMatrixChanged",
7397                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
7398                ChangesLsb::EFlagsChanged => "eFlagsChanged",
7399                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
7400                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
7401                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
7402                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
7403                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
7404                ChangesLsb::EReparent => "eReparent",
7405                ChangesLsb::EColorChanged => "eColorChanged",
7406                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
7407                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
7408                ChangesLsb::ECropChanged => "eCropChanged",
7409                ChangesLsb::EBufferChanged => "eBufferChanged",
7410                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
7411                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
7412                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
7413                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
7414                ChangesLsb::EApiChanged => "eApiChanged",
7415                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
7416                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
7417                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
7418                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
7419                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
7420            }
7421        }
7422    }
7423    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7424    #[repr(i32)]
7425    pub enum ChangesMsb {
7426        EChangesMsbNone = 0,
7427        EDestinationFrameChanged = 1,
7428        ECachedBufferChanged = 2,
7429        EBackgroundColorChanged = 4,
7430        EMetadataChanged = 8,
7431        EColorSpaceAgnosticChanged = 16,
7432        EFrameRateSelectionPriority = 32,
7433        EFrameRateChanged = 64,
7434        EBackgroundBlurRadiusChanged = 128,
7435        EProducerDisconnect = 256,
7436        EFixedTransformHintChanged = 512,
7437        EFrameNumberChanged = 1024,
7438        EBlurRegionsChanged = 2048,
7439        EAutoRefreshChanged = 4096,
7440        EStretchChanged = 8192,
7441        ETrustedOverlayChanged = 16384,
7442        EDropInputModeChanged = 32768,
7443        EClientDrawnCornerRadiusChanged = 65536,
7444        ESystemContentPriorityChanged = 131072,
7445        EBoxShadowSettingsChanged = 262144,
7446        EBorderSettingsChanged = 524288,
7447    }
7448    impl ChangesMsb {
7449        /// String value of the enum field names used in the ProtoBuf definition.
7450        ///
7451        /// The values are not transformed in any way and thus are considered stable
7452        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7453        pub fn as_str_name(&self) -> &'static str {
7454            match self {
7455                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
7456                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
7457                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
7458                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
7459                ChangesMsb::EMetadataChanged => "eMetadataChanged",
7460                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
7461                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
7462                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
7463                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
7464                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
7465                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
7466                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
7467                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
7468                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
7469                ChangesMsb::EStretchChanged => "eStretchChanged",
7470                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
7471                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
7472                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
7473                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
7474                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
7475                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
7476            }
7477        }
7478    }
7479    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7480    #[repr(i32)]
7481    pub enum Flags {
7482        EFlagsNone = 0,
7483        ELayerHidden = 1,
7484        ELayerOpaque = 2,
7485        ELayerSkipScreenshot = 64,
7486        ELayerSecure = 128,
7487        EEnableBackpressure = 256,
7488        ELayerIsDisplayDecoration = 512,
7489    }
7490    impl Flags {
7491        /// String value of the enum field names used in the ProtoBuf definition.
7492        ///
7493        /// The values are not transformed in any way and thus are considered stable
7494        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7495        pub fn as_str_name(&self) -> &'static str {
7496            match self {
7497                Flags::EFlagsNone => "eFlagsNone",
7498                Flags::ELayerHidden => "eLayerHidden",
7499                Flags::ELayerOpaque => "eLayerOpaque",
7500                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
7501                Flags::ELayerSecure => "eLayerSecure",
7502                Flags::EEnableBackpressure => "eEnableBackpressure",
7503                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
7504            }
7505        }
7506    }
7507    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7508    #[repr(i32)]
7509    pub enum DropInputMode {
7510        None = 0,
7511        All = 1,
7512        Obscured = 2,
7513    }
7514    impl DropInputMode {
7515        /// String value of the enum field names used in the ProtoBuf definition.
7516        ///
7517        /// The values are not transformed in any way and thus are considered stable
7518        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7519        pub fn as_str_name(&self) -> &'static str {
7520            match self {
7521                DropInputMode::None => "NONE",
7522                DropInputMode::All => "ALL",
7523                DropInputMode::Obscured => "OBSCURED",
7524            }
7525        }
7526    }
7527}
7528#[derive(Clone, PartialEq, ::prost::Message)]
7529pub struct DisplayState {
7530    #[prost(int32, optional, tag="1")]
7531    pub id: ::core::option::Option<i32>,
7532    #[prost(uint32, optional, tag="2")]
7533    pub what: ::core::option::Option<u32>,
7534    #[prost(uint32, optional, tag="3")]
7535    pub flags: ::core::option::Option<u32>,
7536    #[prost(uint32, optional, tag="4")]
7537    pub layer_stack: ::core::option::Option<u32>,
7538    #[prost(uint32, optional, tag="5")]
7539    pub orientation: ::core::option::Option<u32>,
7540    #[prost(message, optional, tag="6")]
7541    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
7542    #[prost(message, optional, tag="7")]
7543    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
7544    #[prost(uint32, optional, tag="8")]
7545    pub width: ::core::option::Option<u32>,
7546    #[prost(uint32, optional, tag="9")]
7547    pub height: ::core::option::Option<u32>,
7548}
7549/// Nested message and enum types in `DisplayState`.
7550pub mod display_state {
7551    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7552    #[repr(i32)]
7553    pub enum Changes {
7554        EChangesNone = 0,
7555        ESurfaceChanged = 1,
7556        ELayerStackChanged = 2,
7557        EDisplayProjectionChanged = 4,
7558        EDisplaySizeChanged = 8,
7559        EFlagsChanged = 16,
7560    }
7561    impl Changes {
7562        /// String value of the enum field names used in the ProtoBuf definition.
7563        ///
7564        /// The values are not transformed in any way and thus are considered stable
7565        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7566        pub fn as_str_name(&self) -> &'static str {
7567            match self {
7568                Changes::EChangesNone => "eChangesNone",
7569                Changes::ESurfaceChanged => "eSurfaceChanged",
7570                Changes::ELayerStackChanged => "eLayerStackChanged",
7571                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
7572                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
7573                Changes::EFlagsChanged => "eFlagsChanged",
7574            }
7575        }
7576    }
7577}
7578// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7579
7580// Begin of protos/perfetto/trace/android/user_list.proto
7581
7582#[derive(Clone, PartialEq, ::prost::Message)]
7583pub struct AndroidUserList {
7584    #[prost(message, repeated, tag="1")]
7585    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7586    /// Error number
7587    #[prost(int32, optional, tag="2")]
7588    pub error: ::core::option::Option<i32>,
7589}
7590/// Nested message and enum types in `AndroidUserList`.
7591pub mod android_user_list {
7592    #[derive(Clone, PartialEq, ::prost::Message)]
7593    pub struct UserInfo {
7594        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7595        #[prost(string, optional, tag="1")]
7596        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7597        #[prost(int32, optional, tag="2")]
7598        pub uid: ::core::option::Option<i32>,
7599    }
7600}
7601// End of protos/perfetto/trace/android/user_list.proto
7602
7603// Begin of protos/perfetto/trace/android/winscope_extensions.proto
7604
7605#[derive(Clone, PartialEq, ::prost::Message)]
7606pub struct WinscopeExtensions {
7607}
7608// End of protos/perfetto/trace/android/winscope_extensions.proto
7609
7610// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7611
7612/// This message is not intended to be written by the chrome on the device.
7613/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7614/// part of the trace that's written by the telemetry tracing agent).
7615#[derive(Clone, PartialEq, ::prost::Message)]
7616pub struct ChromeBenchmarkMetadata {
7617    /// Time when the benchmark execution started (host unixtime in microseconds).
7618    #[prost(int64, optional, tag="1")]
7619    pub benchmark_start_time_us: ::core::option::Option<i64>,
7620    /// Time when this particular story was run (host unixtime in microseconds).
7621    #[prost(int64, optional, tag="2")]
7622    pub story_run_time_us: ::core::option::Option<i64>,
7623    /// Name of benchmark.
7624    #[prost(string, optional, tag="3")]
7625    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7626    /// Description of benchmark.
7627    #[prost(string, optional, tag="4")]
7628    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7629    /// Optional label.
7630    #[prost(string, optional, tag="5")]
7631    pub label: ::core::option::Option<::prost::alloc::string::String>,
7632    /// Name of story.
7633    #[prost(string, optional, tag="6")]
7634    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7635    /// List of story tags.
7636    #[prost(string, repeated, tag="7")]
7637    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7638    /// Index of the story run (>0 if the same story was run several times).
7639    #[prost(int32, optional, tag="8")]
7640    pub story_run_index: ::core::option::Option<i32>,
7641    /// Whether this run failed.
7642    #[prost(bool, optional, tag="9")]
7643    pub had_failures: ::core::option::Option<bool>,
7644}
7645// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7646
7647// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
7648
7649/// Metadata for chrome traces.
7650#[derive(Clone, PartialEq, ::prost::Message)]
7651pub struct ChromeMetadataPacket {
7652    #[prost(message, optional, tag="1")]
7653    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7654    /// Version code of Chrome used by Android's Play Store. This field is only set
7655    /// on Android.
7656    #[prost(int32, optional, tag="2")]
7657    pub chrome_version_code: ::core::option::Option<i32>,
7658    /// Comma separated list of enabled categories for tracing. The list of
7659    /// possible category strings are listed in code
7660    /// base/trace_event/builtin_categories.h.
7661    #[prost(string, optional, tag="3")]
7662    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7663    /// List of Finch study/groups that apply to this trace.
7664    #[prost(message, repeated, tag="4")]
7665    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7666    /// The package name of the app which is being traced. This field is only set
7667    /// on Android.
7668    #[prost(string, optional, tag="5")]
7669    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
7670}
7671/// Nested message and enum types in `ChromeMetadataPacket`.
7672pub mod chrome_metadata_packet {
7673    /// Finch name and group based on the ActiveGroupId.
7674    #[derive(Clone, PartialEq, ::prost::Message)]
7675    pub struct FinchHash {
7676        #[prost(uint32, optional, tag="1")]
7677        pub name: ::core::option::Option<u32>,
7678        #[prost(uint32, optional, tag="2")]
7679        pub group: ::core::option::Option<u32>,
7680    }
7681}
7682/// Metadata related to background tracing scenarios, states and triggers.
7683#[derive(Clone, PartialEq, ::prost::Message)]
7684pub struct BackgroundTracingMetadata {
7685    /// Specifies the rule that caused the trace to be uploaded.
7686    #[prost(message, optional, tag="1")]
7687    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7688    /// List of all active triggers in current session, when trace was triggered.
7689    #[prost(message, repeated, tag="2")]
7690    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7691    /// Hash of the scenario name.
7692    #[prost(fixed32, optional, tag="3")]
7693    pub scenario_name_hash: ::core::option::Option<u32>,
7694}
7695/// Nested message and enum types in `BackgroundTracingMetadata`.
7696pub mod background_tracing_metadata {
7697    /// Information about a trigger rule defined in the experiment config.
7698    #[derive(Clone, PartialEq, ::prost::Message)]
7699    pub struct TriggerRule {
7700        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
7701        pub trigger_type: ::core::option::Option<i32>,
7702        #[prost(message, optional, tag="2")]
7703        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7704        #[prost(message, optional, tag="3")]
7705        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7706        /// Hash of the rule name.
7707        #[prost(fixed32, optional, tag="4")]
7708        pub name_hash: ::core::option::Option<u32>,
7709    }
7710    /// Nested message and enum types in `TriggerRule`.
7711    pub mod trigger_rule {
7712        /// Configuration of histogram trigger.
7713        #[derive(Clone, PartialEq, ::prost::Message)]
7714        pub struct HistogramRule {
7715            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7716            #[prost(fixed64, optional, tag="1")]
7717            pub histogram_name_hash: ::core::option::Option<u64>,
7718            /// Range of values of the histogram that activates trigger.
7719            #[prost(int64, optional, tag="2")]
7720            pub histogram_min_trigger: ::core::option::Option<i64>,
7721            #[prost(int64, optional, tag="3")]
7722            pub histogram_max_trigger: ::core::option::Option<i64>,
7723        }
7724        /// Configuration of named trigger.
7725        #[derive(Clone, PartialEq, ::prost::Message)]
7726        pub struct NamedRule {
7727            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
7728            pub event_type: ::core::option::Option<i32>,
7729            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7730            /// content-trigger that actually fired.
7731            #[prost(fixed64, optional, tag="2")]
7732            pub content_trigger_name_hash: ::core::option::Option<u64>,
7733        }
7734        /// Nested message and enum types in `NamedRule`.
7735        pub mod named_rule {
7736            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7737            #[repr(i32)]
7738            pub enum EventType {
7739                Unspecified = 0,
7740                SessionRestore = 1,
7741                Navigation = 2,
7742                Startup = 3,
7743                ReachedCode = 4,
7744                ContentTrigger = 5,
7745                TestRule = 1000,
7746            }
7747            impl EventType {
7748                /// String value of the enum field names used in the ProtoBuf definition.
7749                ///
7750                /// The values are not transformed in any way and thus are considered stable
7751                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7752                pub fn as_str_name(&self) -> &'static str {
7753                    match self {
7754                        EventType::Unspecified => "UNSPECIFIED",
7755                        EventType::SessionRestore => "SESSION_RESTORE",
7756                        EventType::Navigation => "NAVIGATION",
7757                        EventType::Startup => "STARTUP",
7758                        EventType::ReachedCode => "REACHED_CODE",
7759                        EventType::ContentTrigger => "CONTENT_TRIGGER",
7760                        EventType::TestRule => "TEST_RULE",
7761                    }
7762                }
7763            }
7764        }
7765        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7766        #[repr(i32)]
7767        pub enum TriggerType {
7768            TriggerUnspecified = 0,
7769            /// Traces are triggered by specific range of values of an UMA histogram.
7770            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7771            /// Traces are triggered by specific named events in chromium codebase,
7772            /// like "second-update-failure".
7773            MonitorAndDumpWhenTriggerNamed = 2,
7774        }
7775        impl TriggerType {
7776            /// String value of the enum field names used in the ProtoBuf definition.
7777            ///
7778            /// The values are not transformed in any way and thus are considered stable
7779            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7780            pub fn as_str_name(&self) -> &'static str {
7781                match self {
7782                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7783                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
7784                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
7785                }
7786            }
7787        }
7788    }
7789}
7790// End of protos/perfetto/trace/chrome/chrome_metadata.proto
7791
7792// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
7793
7794#[derive(Clone, PartialEq, ::prost::Message)]
7795pub struct ChromeTracedValue {
7796    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
7797    pub nested_type: ::core::option::Option<i32>,
7798    #[prost(string, repeated, tag="2")]
7799    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7800    #[prost(message, repeated, tag="3")]
7801    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7802    #[prost(message, repeated, tag="4")]
7803    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7804    #[prost(int32, optional, tag="5")]
7805    pub int_value: ::core::option::Option<i32>,
7806    #[prost(double, optional, tag="6")]
7807    pub double_value: ::core::option::Option<f64>,
7808    #[prost(bool, optional, tag="7")]
7809    pub bool_value: ::core::option::Option<bool>,
7810    #[prost(string, optional, tag="8")]
7811    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7812}
7813/// Nested message and enum types in `ChromeTracedValue`.
7814pub mod chrome_traced_value {
7815    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7816    #[repr(i32)]
7817    pub enum NestedType {
7818        Dict = 0,
7819        Array = 1,
7820    }
7821    impl NestedType {
7822        /// String value of the enum field names used in the ProtoBuf definition.
7823        ///
7824        /// The values are not transformed in any way and thus are considered stable
7825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7826        pub fn as_str_name(&self) -> &'static str {
7827            match self {
7828                NestedType::Dict => "DICT",
7829                NestedType::Array => "ARRAY",
7830            }
7831        }
7832    }
7833}
7834#[derive(Clone, PartialEq, ::prost::Message)]
7835pub struct ChromeStringTableEntry {
7836    #[prost(string, optional, tag="1")]
7837    pub value: ::core::option::Option<::prost::alloc::string::String>,
7838    #[prost(int32, optional, tag="2")]
7839    pub index: ::core::option::Option<i32>,
7840}
7841/// Deprecated, use TrackEvent protos instead.
7842#[derive(Clone, PartialEq, ::prost::Message)]
7843pub struct ChromeTraceEvent {
7844    #[prost(string, optional, tag="1")]
7845    pub name: ::core::option::Option<::prost::alloc::string::String>,
7846    #[prost(int64, optional, tag="2")]
7847    pub timestamp: ::core::option::Option<i64>,
7848    #[prost(int32, optional, tag="3")]
7849    pub phase: ::core::option::Option<i32>,
7850    #[prost(int32, optional, tag="4")]
7851    pub thread_id: ::core::option::Option<i32>,
7852    #[prost(int64, optional, tag="5")]
7853    pub duration: ::core::option::Option<i64>,
7854    #[prost(int64, optional, tag="6")]
7855    pub thread_duration: ::core::option::Option<i64>,
7856    #[prost(string, optional, tag="7")]
7857    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7858    #[prost(uint64, optional, tag="8")]
7859    pub id: ::core::option::Option<u64>,
7860    #[prost(uint32, optional, tag="9")]
7861    pub flags: ::core::option::Option<u32>,
7862    #[prost(string, optional, tag="10")]
7863    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7864    #[prost(int32, optional, tag="11")]
7865    pub process_id: ::core::option::Option<i32>,
7866    #[prost(int64, optional, tag="12")]
7867    pub thread_timestamp: ::core::option::Option<i64>,
7868    #[prost(uint64, optional, tag="13")]
7869    pub bind_id: ::core::option::Option<u64>,
7870    #[prost(message, repeated, tag="14")]
7871    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7872    /// Takes precedence over respectively |name| and
7873    /// |category_group_name_index| if set,
7874    /// and are indices into |string_table|.
7875    #[prost(uint32, optional, tag="15")]
7876    pub name_index: ::core::option::Option<u32>,
7877    #[prost(uint32, optional, tag="16")]
7878    pub category_group_name_index: ::core::option::Option<u32>,
7879}
7880/// Nested message and enum types in `ChromeTraceEvent`.
7881pub mod chrome_trace_event {
7882    #[derive(Clone, PartialEq, ::prost::Message)]
7883    pub struct Arg {
7884        #[prost(string, optional, tag="1")]
7885        pub name: ::core::option::Option<::prost::alloc::string::String>,
7886        /// Takes precedence over |name| if set,
7887        /// and is an index into |string_table|.
7888        #[prost(uint32, optional, tag="9")]
7889        pub name_index: ::core::option::Option<u32>,
7890        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
7891        pub value: ::core::option::Option<arg::Value>,
7892    }
7893    /// Nested message and enum types in `Arg`.
7894    pub mod arg {
7895        #[derive(Clone, PartialEq, ::prost::Oneof)]
7896        pub enum Value {
7897            #[prost(bool, tag="2")]
7898            BoolValue(bool),
7899            #[prost(uint64, tag="3")]
7900            UintValue(u64),
7901            #[prost(int64, tag="4")]
7902            IntValue(i64),
7903            #[prost(double, tag="5")]
7904            DoubleValue(f64),
7905            #[prost(string, tag="6")]
7906            StringValue(::prost::alloc::string::String),
7907            /// Pointers are stored in a separate type as the JSON output treats them
7908            /// differently from other uint64 values.
7909            #[prost(uint64, tag="7")]
7910            PointerValue(u64),
7911            #[prost(string, tag="8")]
7912            JsonValue(::prost::alloc::string::String),
7913            #[prost(message, tag="10")]
7914            TracedValue(super::super::ChromeTracedValue),
7915        }
7916    }
7917}
7918#[derive(Clone, PartialEq, ::prost::Message)]
7919pub struct ChromeMetadata {
7920    #[prost(string, optional, tag="1")]
7921    pub name: ::core::option::Option<::prost::alloc::string::String>,
7922    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
7923    pub value: ::core::option::Option<chrome_metadata::Value>,
7924}
7925/// Nested message and enum types in `ChromeMetadata`.
7926pub mod chrome_metadata {
7927    #[derive(Clone, PartialEq, ::prost::Oneof)]
7928    pub enum Value {
7929        #[prost(string, tag="2")]
7930        StringValue(::prost::alloc::string::String),
7931        #[prost(bool, tag="3")]
7932        BoolValue(bool),
7933        #[prost(int64, tag="4")]
7934        IntValue(i64),
7935        #[prost(string, tag="5")]
7936        JsonValue(::prost::alloc::string::String),
7937    }
7938}
7939/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7940/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7941/// TODO(eseckler): Update these agents to become perfetto producers.
7942#[derive(Clone, PartialEq, ::prost::Message)]
7943pub struct ChromeLegacyJsonTrace {
7944    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
7945    pub r#type: ::core::option::Option<i32>,
7946    #[prost(string, optional, tag="2")]
7947    pub data: ::core::option::Option<::prost::alloc::string::String>,
7948}
7949/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7950pub mod chrome_legacy_json_trace {
7951    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7952    #[repr(i32)]
7953    pub enum TraceType {
7954        UserTrace = 0,
7955        /// Deprecated.
7956        SystemTrace = 1,
7957    }
7958    impl TraceType {
7959        /// String value of the enum field names used in the ProtoBuf definition.
7960        ///
7961        /// The values are not transformed in any way and thus are considered stable
7962        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7963        pub fn as_str_name(&self) -> &'static str {
7964            match self {
7965                TraceType::UserTrace => "USER_TRACE",
7966                TraceType::SystemTrace => "SYSTEM_TRACE",
7967            }
7968        }
7969    }
7970}
7971#[derive(Clone, PartialEq, ::prost::Message)]
7972pub struct ChromeEventBundle {
7973    /// Deprecated, use TrackEvent protos instead.
7974    #[deprecated]
7975    #[prost(message, repeated, tag="1")]
7976    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7977    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7978    /// which contains typed fields.
7979    #[prost(message, repeated, tag="2")]
7980    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7981    /// ftrace output from CrOS and Cast system tracing agents.
7982    /// TODO(eseckler): Replace system traces with native perfetto service.
7983    #[prost(string, repeated, tag="4")]
7984    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7985    #[prost(message, repeated, tag="5")]
7986    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7987    /// Contents of a string table that's valid for
7988    /// the whole ChromeEventBundle entry.
7989    #[deprecated]
7990    #[prost(message, repeated, tag="3")]
7991    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7992}
7993// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
7994
7995// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
7996
7997/// Information about a specific trigger during a background tracing scenario
7998/// Associated packet timestamps are useful to delimitate a scenario range in a
7999/// trace. Triggers are also useful for filtering traces.
8000#[derive(Clone, PartialEq, ::prost::Message)]
8001pub struct ChromeTrigger {
8002    /// Name of the trigger which was received.
8003    #[prost(string, optional, tag="1")]
8004    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
8005    /// SHA1 hash of the trigger name.
8006    #[prost(fixed32, optional, tag="2")]
8007    pub trigger_name_hash: ::core::option::Option<u32>,
8008    /// Flow id which should terminate on this trigger.
8009    #[prost(fixed64, optional, tag="3")]
8010    pub flow_id: ::core::option::Option<u64>,
8011}
8012// End of protos/perfetto/trace/chrome/chrome_trigger.proto
8013
8014// Begin of protos/perfetto/trace/chrome/v8.proto
8015
8016// These are the protos for the V8 data source.
8017//
8018// All events are associated to a V8 isolate instance. There can be multiple
8019// instances associated to a given thread, although this is rare.
8020//
8021// Generated code in V8 is allocated in the V8 heap (in a special executeable
8022// section), this means that code can be garbage collected (when no longer used)
8023// or can be moved around (e.g. during heap compactation). This means that a
8024// given callsite might correspond to function `A` at one point in time and to
8025// function `B` later on.
8026// In addition V8 code has various levels of optimization, so a function might
8027// have multiple associated code snippets.
8028//
8029// V8 does not track code deletion, so we have to indirectly infer it by
8030// detecting code overlaps, if a newer code creation event overlaps with older
8031// code we need to asume that the old code was deleted. Code moves are logged,
8032// and there is an event to track those.
8033
8034/// Strings used by V8 can have different encodings, instead of coverting to a
8035/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
8036/// "raw" string and do the convestion at trace ingestion time.
8037///
8038/// ATTENTION: There is some overhead in using a message (as opossed to having
8039/// the `oneof encoded_string`` direcly embedded in the message), so use this
8040/// message in places were these extra bytes don't matter that much.
8041/// Next id: 5
8042#[derive(Clone, PartialEq, ::prost::Message)]
8043pub struct V8String {
8044    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
8045    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
8046}
8047/// Nested message and enum types in `V8String`.
8048pub mod v8_string {
8049    #[derive(Clone, PartialEq, ::prost::Oneof)]
8050    pub enum EncodedString {
8051        /// ISO/IEC 8859-1:1998 encoding aka latin1
8052        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8053        #[prost(bytes, tag="1")]
8054        Latin1(::prost::alloc::vec::Vec<u8>),
8055        /// UTF-16 Little Endian Encoding
8056        #[prost(bytes, tag="2")]
8057        Utf16Le(::prost::alloc::vec::Vec<u8>),
8058        /// UTF-16 Big Endian Encoding
8059        #[prost(bytes, tag="3")]
8060        Utf16Be(::prost::alloc::vec::Vec<u8>),
8061    }
8062}
8063/// Interned version of V8String
8064#[derive(Clone, PartialEq, ::prost::Message)]
8065pub struct InternedV8String {
8066    #[prost(uint64, optional, tag="1")]
8067    pub iid: ::core::option::Option<u64>,
8068    /// We inline the fields in V8String here to save some bytes in the serialized
8069    /// proto format. Interning is about saving bytes so this makes sense here.
8070    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
8071    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
8072}
8073/// Nested message and enum types in `InternedV8String`.
8074pub mod interned_v8_string {
8075    /// We inline the fields in V8String here to save some bytes in the serialized
8076    /// proto format. Interning is about saving bytes so this makes sense here.
8077    #[derive(Clone, PartialEq, ::prost::Oneof)]
8078    pub enum EncodedString {
8079        /// ISO/IEC 8859-1:1998 encoding aka latin1
8080        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8081        #[prost(bytes, tag="2")]
8082        Latin1(::prost::alloc::vec::Vec<u8>),
8083        /// UTF-16 Little Endian Encoding
8084        #[prost(bytes, tag="3")]
8085        Utf16Le(::prost::alloc::vec::Vec<u8>),
8086        /// UTF-16 Big Endian Encoding
8087        #[prost(bytes, tag="4")]
8088        Utf16Be(::prost::alloc::vec::Vec<u8>),
8089    }
8090}
8091/// Represents a script that was compiled to generate code. Some V8 code is
8092/// generated out of scripts and will reference a V8Script other types of code
8093/// will not (e.g. builtins).
8094#[derive(Clone, PartialEq, ::prost::Message)]
8095pub struct InternedV8JsScript {
8096    #[prost(uint64, optional, tag="1")]
8097    pub iid: ::core::option::Option<u64>,
8098    /// Unique in a given isolate
8099    #[prost(int32, optional, tag="2")]
8100    pub script_id: ::core::option::Option<i32>,
8101    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
8102    pub r#type: ::core::option::Option<i32>,
8103    #[prost(message, optional, tag="4")]
8104    pub name: ::core::option::Option<V8String>,
8105    /// Actual source of the script
8106    #[prost(message, optional, tag="5")]
8107    pub source: ::core::option::Option<V8String>,
8108}
8109/// Nested message and enum types in `InternedV8JsScript`.
8110pub mod interned_v8_js_script {
8111    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8112    #[repr(i32)]
8113    pub enum Type {
8114        Unknown = 0,
8115        Normal = 1,
8116        Eval = 2,
8117        Module = 3,
8118        Native = 4,
8119        Extension = 5,
8120        Inspector = 6,
8121    }
8122    impl Type {
8123        /// String value of the enum field names used in the ProtoBuf definition.
8124        ///
8125        /// The values are not transformed in any way and thus are considered stable
8126        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8127        pub fn as_str_name(&self) -> &'static str {
8128            match self {
8129                Type::Unknown => "TYPE_UNKNOWN",
8130                Type::Normal => "TYPE_NORMAL",
8131                Type::Eval => "TYPE_EVAL",
8132                Type::Module => "TYPE_MODULE",
8133                Type::Native => "TYPE_NATIVE",
8134                Type::Extension => "TYPE_EXTENSION",
8135                Type::Inspector => "TYPE_INSPECTOR",
8136            }
8137        }
8138    }
8139}
8140#[derive(Clone, PartialEq, ::prost::Message)]
8141pub struct InternedV8WasmScript {
8142    #[prost(uint64, optional, tag="1")]
8143    pub iid: ::core::option::Option<u64>,
8144    /// Unique in a given isolate
8145    #[prost(int32, optional, tag="2")]
8146    pub script_id: ::core::option::Option<i32>,
8147    #[prost(string, optional, tag="3")]
8148    pub url: ::core::option::Option<::prost::alloc::string::String>,
8149    /// Raw transferred wasm native module wire bytes.
8150    #[prost(bytes="vec", optional, tag="4")]
8151    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8152}
8153#[derive(Clone, PartialEq, ::prost::Message)]
8154pub struct InternedV8JsFunction {
8155    #[prost(uint64, optional, tag="1")]
8156    pub iid: ::core::option::Option<u64>,
8157    #[prost(uint64, optional, tag="2")]
8158    pub v8_js_function_name_iid: ::core::option::Option<u64>,
8159    #[prost(uint64, optional, tag="3")]
8160    pub v8_js_script_iid: ::core::option::Option<u64>,
8161    #[prost(bool, optional, tag="4")]
8162    pub is_toplevel: ::core::option::Option<bool>,
8163    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
8164    pub kind: ::core::option::Option<i32>,
8165    /// Where in the script source this function is defined. This is counted in
8166    /// bytes not characters.
8167    #[prost(uint32, optional, tag="6")]
8168    pub byte_offset: ::core::option::Option<u32>,
8169    #[prost(uint32, optional, tag="7")]
8170    pub line: ::core::option::Option<u32>,
8171    #[prost(uint32, optional, tag="8")]
8172    pub column: ::core::option::Option<u32>,
8173}
8174/// Nested message and enum types in `InternedV8JsFunction`.
8175pub mod interned_v8_js_function {
8176    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8177    #[repr(i32)]
8178    pub enum Kind {
8179        Unknown = 0,
8180        NormalFunction = 1,
8181        Module = 2,
8182        AsyncModule = 3,
8183        BaseConstructor = 4,
8184        DefaultBaseConstructor = 5,
8185        DefaultDerivedConstructor = 6,
8186        DerivedConstructor = 7,
8187        GetterFunction = 8,
8188        StaticGetterFunction = 9,
8189        SetterFunction = 10,
8190        StaticSetterFunction = 11,
8191        ArrowFunction = 12,
8192        AsyncArrowFunction = 13,
8193        AsyncFunction = 14,
8194        AsyncConciseMethod = 15,
8195        StaticAsyncConciseMethod = 16,
8196        AsyncConciseGeneratorMethod = 17,
8197        StaticAsyncConciseGeneratorMethod = 18,
8198        AsyncGeneratorFunction = 19,
8199        GeneratorFunction = 20,
8200        ConciseGeneratorMethod = 21,
8201        StaticConciseGeneratorMethod = 22,
8202        ConciseMethod = 23,
8203        StaticConciseMethod = 24,
8204        ClassMembersInitializerFunction = 25,
8205        ClassStaticInitializerFunction = 26,
8206        Invalid = 27,
8207    }
8208    impl Kind {
8209        /// String value of the enum field names used in the ProtoBuf definition.
8210        ///
8211        /// The values are not transformed in any way and thus are considered stable
8212        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8213        pub fn as_str_name(&self) -> &'static str {
8214            match self {
8215                Kind::Unknown => "KIND_UNKNOWN",
8216                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
8217                Kind::Module => "KIND_MODULE",
8218                Kind::AsyncModule => "KIND_ASYNC_MODULE",
8219                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
8220                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
8221                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
8222                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
8223                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
8224                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
8225                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
8226                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
8227                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
8228                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
8229                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
8230                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
8231                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
8232                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
8233                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
8234                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
8235                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
8236                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
8237                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
8238                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
8239                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
8240                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
8241                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
8242                Kind::Invalid => "KIND_INVALID",
8243            }
8244        }
8245    }
8246}
8247/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
8248/// engine.
8249#[derive(Clone, PartialEq, ::prost::Message)]
8250pub struct InternedV8Isolate {
8251    #[prost(uint64, optional, tag="1")]
8252    pub iid: ::core::option::Option<u64>,
8253    #[prost(uint32, optional, tag="2")]
8254    pub pid: ::core::option::Option<u32>,
8255    /// Process unique isolate id.
8256    #[prost(int32, optional, tag="3")]
8257    pub isolate_id: ::core::option::Option<i32>,
8258    #[prost(message, optional, tag="4")]
8259    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8260    /// The embedded blob holds code for built in functions that are precompiled in
8261    /// the V8 library.
8262    #[prost(uint64, optional, tag="5")]
8263    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8264    #[prost(uint64, optional, tag="6")]
8265    pub embedded_blob_code_size: ::core::option::Option<u64>,
8266}
8267/// Nested message and enum types in `InternedV8Isolate`.
8268pub mod interned_v8_isolate {
8269    /// A code range is a virtual memory cage that may contain executable code.
8270    /// Depending on the Isolate settings the Isolate might have one or not.
8271    /// See:
8272    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
8273    /// If the isolate defines code range this will be tracked here.
8274    #[derive(Clone, PartialEq, ::prost::Message)]
8275    pub struct CodeRange {
8276        #[prost(uint64, optional, tag="1")]
8277        pub base_address: ::core::option::Option<u64>,
8278        #[prost(uint64, optional, tag="2")]
8279        pub size: ::core::option::Option<u64>,
8280        /// Used when short builtin calls are enabled, where embedded builtins are
8281        /// copied into the CodeRange so calls can be nearer.
8282        #[prost(uint64, optional, tag="3")]
8283        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
8284        /// Whether this code range is shared with other Isolates in the same process
8285        #[prost(bool, optional, tag="4")]
8286        pub is_process_wide: ::core::option::Option<bool>,
8287    }
8288}
8289#[derive(Clone, PartialEq, ::prost::Message)]
8290pub struct V8JsCode {
8291    #[prost(uint64, optional, tag="1")]
8292    pub v8_isolate_iid: ::core::option::Option<u64>,
8293    #[prost(uint32, optional, tag="2")]
8294    pub tid: ::core::option::Option<u32>,
8295    #[prost(uint64, optional, tag="3")]
8296    pub v8_js_function_iid: ::core::option::Option<u64>,
8297    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
8298    pub tier: ::core::option::Option<i32>,
8299    #[prost(uint64, optional, tag="5")]
8300    pub instruction_start: ::core::option::Option<u64>,
8301    #[prost(uint64, optional, tag="6")]
8302    pub instruction_size_bytes: ::core::option::Option<u64>,
8303    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
8304    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8305    #[prost(oneof="v8_js_code::SourceMap", tags="9, 10, 11")]
8306    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
8307}
8308/// Nested message and enum types in `V8JsCode`.
8309pub mod v8_js_code {
8310    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8311    #[repr(i32)]
8312    pub enum Tier {
8313        Unknown = 0,
8314        Ignition = 1,
8315        Sparkplug = 2,
8316        Maglev = 3,
8317        Turboshaft = 4,
8318        Turbofan = 5,
8319    }
8320    impl Tier {
8321        /// String value of the enum field names used in the ProtoBuf definition.
8322        ///
8323        /// The values are not transformed in any way and thus are considered stable
8324        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8325        pub fn as_str_name(&self) -> &'static str {
8326            match self {
8327                Tier::Unknown => "TIER_UNKNOWN",
8328                Tier::Ignition => "TIER_IGNITION",
8329                Tier::Sparkplug => "TIER_SPARKPLUG",
8330                Tier::Maglev => "TIER_MAGLEV",
8331                Tier::Turboshaft => "TIER_TURBOSHAFT",
8332                Tier::Turbofan => "TIER_TURBOFAN",
8333            }
8334        }
8335    }
8336    #[derive(Clone, PartialEq, ::prost::Oneof)]
8337    pub enum Instructions {
8338        #[prost(bytes, tag="7")]
8339        MachineCode(::prost::alloc::vec::Vec<u8>),
8340        #[prost(bytes, tag="8")]
8341        Bytecode(::prost::alloc::vec::Vec<u8>),
8342    }
8343    #[derive(Clone, PartialEq, ::prost::Oneof)]
8344    pub enum SourceMap {
8345        /// For Ignition / bytecode:
8346        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
8347        ///     related js function)
8348        #[prost(bytes, tag="9")]
8349        SourcePositions(::prost::alloc::vec::Vec<u8>),
8350        /// For Sparkplug code:
8351        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
8352        ///     ignition code object for the same js-function.
8353        #[prost(bytes, tag="10")]
8354        BytecodePositions(::prost::alloc::vec::Vec<u8>),
8355        /// For optimized code:
8356        /// - Maps machine-code-ranges to bytecode ranges in various
8357        ///    ignition code objects (inlining might happen from multiple functions)
8358        #[prost(bytes, tag="11")]
8359        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
8360    }
8361}
8362#[derive(Clone, PartialEq, ::prost::Message)]
8363pub struct V8InternalCode {
8364    #[prost(uint64, optional, tag="1")]
8365    pub v8_isolate_iid: ::core::option::Option<u64>,
8366    #[prost(uint32, optional, tag="2")]
8367    pub tid: ::core::option::Option<u32>,
8368    #[prost(string, optional, tag="3")]
8369    pub name: ::core::option::Option<::prost::alloc::string::String>,
8370    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
8371    pub r#type: ::core::option::Option<i32>,
8372    #[prost(int32, optional, tag="5")]
8373    pub builtin_id: ::core::option::Option<i32>,
8374    #[prost(uint64, optional, tag="6")]
8375    pub instruction_start: ::core::option::Option<u64>,
8376    #[prost(uint64, optional, tag="7")]
8377    pub instruction_size_bytes: ::core::option::Option<u64>,
8378    #[prost(bytes="vec", optional, tag="8")]
8379    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8380}
8381/// Nested message and enum types in `V8InternalCode`.
8382pub mod v8_internal_code {
8383    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8384    #[repr(i32)]
8385    pub enum Type {
8386        Unknown = 0,
8387        BytecodeHandler = 1,
8388        ForTesting = 2,
8389        Builtin = 3,
8390        WasmFunction = 4,
8391        WasmToCapiFunction = 5,
8392        WasmToJsFunction = 6,
8393        JsToWasmFunction = 7,
8394        JsToJsFunction = 8,
8395        CWasmEntry = 9,
8396    }
8397    impl Type {
8398        /// String value of the enum field names used in the ProtoBuf definition.
8399        ///
8400        /// The values are not transformed in any way and thus are considered stable
8401        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8402        pub fn as_str_name(&self) -> &'static str {
8403            match self {
8404                Type::Unknown => "TYPE_UNKNOWN",
8405                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8406                Type::ForTesting => "TYPE_FOR_TESTING",
8407                Type::Builtin => "TYPE_BUILTIN",
8408                Type::WasmFunction => "TYPE_WASM_FUNCTION",
8409                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8410                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8411                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8412                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8413                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
8414            }
8415        }
8416    }
8417}
8418#[derive(Clone, PartialEq, ::prost::Message)]
8419pub struct V8WasmCode {
8420    #[prost(uint64, optional, tag="1")]
8421    pub v8_isolate_iid: ::core::option::Option<u64>,
8422    #[prost(uint32, optional, tag="2")]
8423    pub tid: ::core::option::Option<u32>,
8424    #[prost(uint64, optional, tag="3")]
8425    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8426    #[prost(string, optional, tag="4")]
8427    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8428    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
8429    pub tier: ::core::option::Option<i32>,
8430    #[prost(int32, optional, tag="6")]
8431    pub code_offset_in_module: ::core::option::Option<i32>,
8432    #[prost(uint64, optional, tag="7")]
8433    pub instruction_start: ::core::option::Option<u64>,
8434    #[prost(uint64, optional, tag="8")]
8435    pub instruction_size_bytes: ::core::option::Option<u64>,
8436    #[prost(bytes="vec", optional, tag="9")]
8437    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8438}
8439/// Nested message and enum types in `V8WasmCode`.
8440pub mod v8_wasm_code {
8441    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8442    #[repr(i32)]
8443    pub enum Tier {
8444        Unknown = 0,
8445        Liftoff = 1,
8446        Turbofan = 2,
8447    }
8448    impl Tier {
8449        /// String value of the enum field names used in the ProtoBuf definition.
8450        ///
8451        /// The values are not transformed in any way and thus are considered stable
8452        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8453        pub fn as_str_name(&self) -> &'static str {
8454            match self {
8455                Tier::Unknown => "TIER_UNKNOWN",
8456                Tier::Liftoff => "TIER_LIFTOFF",
8457                Tier::Turbofan => "TIER_TURBOFAN",
8458            }
8459        }
8460    }
8461}
8462#[derive(Clone, PartialEq, ::prost::Message)]
8463pub struct V8RegExpCode {
8464    #[prost(uint64, optional, tag="1")]
8465    pub v8_isolate_iid: ::core::option::Option<u64>,
8466    #[prost(uint32, optional, tag="2")]
8467    pub tid: ::core::option::Option<u32>,
8468    #[prost(message, optional, tag="3")]
8469    pub pattern: ::core::option::Option<V8String>,
8470    #[prost(uint64, optional, tag="4")]
8471    pub instruction_start: ::core::option::Option<u64>,
8472    #[prost(uint64, optional, tag="5")]
8473    pub instruction_size_bytes: ::core::option::Option<u64>,
8474    #[prost(bytes="vec", optional, tag="6")]
8475    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8476}
8477/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8478/// memory by V8's GC.
8479#[derive(Clone, PartialEq, ::prost::Message)]
8480pub struct V8CodeMove {
8481    #[prost(uint64, optional, tag="1")]
8482    pub isolate_iid: ::core::option::Option<u64>,
8483    #[prost(uint32, optional, tag="2")]
8484    pub tid: ::core::option::Option<u32>,
8485    #[prost(uint64, optional, tag="3")]
8486    pub from_instruction_start_address: ::core::option::Option<u64>,
8487    #[prost(uint64, optional, tag="4")]
8488    pub to_instruction_start_address: ::core::option::Option<u64>,
8489    #[prost(uint64, optional, tag="5")]
8490    pub instruction_size_bytes: ::core::option::Option<u64>,
8491    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
8492    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
8493}
8494/// Nested message and enum types in `V8CodeMove`.
8495pub mod v8_code_move {
8496    #[derive(Clone, PartialEq, ::prost::Oneof)]
8497    pub enum ToInstructions {
8498        #[prost(bytes, tag="6")]
8499        ToMachineCode(::prost::alloc::vec::Vec<u8>),
8500        #[prost(bytes, tag="7")]
8501        ToBytecode(::prost::alloc::vec::Vec<u8>),
8502    }
8503}
8504#[derive(Clone, PartialEq, ::prost::Message)]
8505pub struct V8CodeDefaults {
8506    #[prost(uint32, optional, tag="1")]
8507    pub tid: ::core::option::Option<u32>,
8508}
8509// End of protos/perfetto/trace/chrome/v8.proto
8510
8511// Begin of protos/perfetto/trace/clock_snapshot.proto
8512
8513/// A snapshot of clock readings to allow for trace alignment.
8514#[derive(Clone, PartialEq, ::prost::Message)]
8515pub struct ClockSnapshot {
8516    #[prost(message, repeated, tag="1")]
8517    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8518    /// The authoritative clock domain for the trace. When set, this definitively
8519    /// overrides the trace time clock. If not set, the trace time clock remains
8520    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
8521    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
8522    /// snapshots). Trace processor will attempt to translate packet/event
8523    /// timestamps from various data sources (and their chosen clock domains) to
8524    /// this domain during import.
8525    #[prost(enumeration="BuiltinClock", optional, tag="2")]
8526    pub primary_trace_clock: ::core::option::Option<i32>,
8527}
8528/// Nested message and enum types in `ClockSnapshot`.
8529pub mod clock_snapshot {
8530    #[derive(Clone, PartialEq, ::prost::Message)]
8531    pub struct Clock {
8532        /// Clock IDs have the following semantic:
8533        /// [1, 63]:    Builtin types, see BuiltinClock from
8534        ///              ../common/builtin_clock.proto.
8535        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
8536        ///              are only valid within the same |trusted_packet_sequence_id|
8537        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8538        ///              that emitted the clock snapshot).
8539        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
8540        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8541        #[prost(uint32, optional, tag="1")]
8542        pub clock_id: ::core::option::Option<u32>,
8543        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8544        /// unit_multiplier_ns field below.
8545        #[prost(uint64, optional, tag="2")]
8546        pub timestamp: ::core::option::Option<u64>,
8547        /// When true each TracePacket's timestamp should be interpreted as a delta
8548        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8549        /// the same packet_sequence_id. Should only be used for user-defined
8550        /// sequence-local clocks. The first packet timestamp after each
8551        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8552        /// the ClockSnapshot.
8553        #[prost(bool, optional, tag="3")]
8554        pub is_incremental: ::core::option::Option<bool>,
8555        /// Allows to specify a custom unit different than the default (ns) for this
8556        /// clock domain.
8557        ///
8558        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8559        ///    as 3000 ns = 3 us.
8560        /// * All snapshots for the same clock within a trace need to use the same
8561        ///    unit.
8562        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8563        #[prost(uint64, optional, tag="4")]
8564        pub unit_multiplier_ns: ::core::option::Option<u64>,
8565    }
8566    /// Nested message and enum types in `Clock`.
8567    pub mod clock {
8568        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8569        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8570        #[repr(i32)]
8571        pub enum BuiltinClocks {
8572            Unknown = 0,
8573            Realtime = 1,
8574            RealtimeCoarse = 2,
8575            Monotonic = 3,
8576            MonotonicCoarse = 4,
8577            MonotonicRaw = 5,
8578            Boottime = 6,
8579            BuiltinClockMaxId = 63,
8580        }
8581        impl BuiltinClocks {
8582            /// String value of the enum field names used in the ProtoBuf definition.
8583            ///
8584            /// The values are not transformed in any way and thus are considered stable
8585            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8586            pub fn as_str_name(&self) -> &'static str {
8587                match self {
8588                    BuiltinClocks::Unknown => "UNKNOWN",
8589                    BuiltinClocks::Realtime => "REALTIME",
8590                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
8591                    BuiltinClocks::Monotonic => "MONOTONIC",
8592                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
8593                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
8594                    BuiltinClocks::Boottime => "BOOTTIME",
8595                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8596                }
8597            }
8598        }
8599    }
8600}
8601// End of protos/perfetto/trace/clock_snapshot.proto
8602
8603// Begin of protos/perfetto/trace/etw/etw.proto
8604
8605/// Proto definition based on the Thread_v2 CSwitch class definition
8606/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8607#[derive(Clone, PartialEq, ::prost::Message)]
8608pub struct CSwitchEtwEvent {
8609    /// New thread ID after the switch.
8610    #[prost(uint32, optional, tag="1")]
8611    pub new_thread_id: ::core::option::Option<u32>,
8612    /// Previous thread ID.
8613    #[prost(uint32, optional, tag="2")]
8614    pub old_thread_id: ::core::option::Option<u32>,
8615    /// Thread priority of the new thread.
8616    #[prost(sint32, optional, tag="3")]
8617    pub new_thread_priority: ::core::option::Option<i32>,
8618    /// Thread priority of the previous thread.
8619    #[prost(sint32, optional, tag="4")]
8620    pub old_thread_priority: ::core::option::Option<i32>,
8621    /// The index of the C-state that was last used by the processor. A value of 0
8622    /// represents the lightest idle state with higher values representing deeper
8623    /// C-states.
8624    #[prost(uint32, optional, tag="5")]
8625    pub previous_c_state: ::core::option::Option<u32>,
8626    /// Ideal wait time of the previous thread.
8627    #[prost(sint32, optional, tag="9")]
8628    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8629    /// Wait time for the new thread.
8630    #[prost(uint32, optional, tag="10")]
8631    pub new_thread_wait_time: ::core::option::Option<u32>,
8632    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
8633    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
8634    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
8635    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
8636    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
8637    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
8638}
8639/// Nested message and enum types in `CSwitchEtwEvent`.
8640pub mod c_switch_etw_event {
8641    /// Wait reason for the previous thread. The ordering is important as based on
8642    /// the OldThreadWaitReason definition from the link above. The following are
8643    /// the possible values:
8644    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8645    #[repr(i32)]
8646    pub enum OldThreadWaitReason {
8647        Executive = 0,
8648        FreePage = 1,
8649        PageIn = 2,
8650        PoolAllocation = 3,
8651        DelayExecution = 4,
8652        Suspend = 5,
8653        UserRequest = 6,
8654        WrExecutive = 7,
8655        WrFreePage = 8,
8656        WrPageIn = 9,
8657        WrPoolAllocation = 10,
8658        WrDelayExecution = 11,
8659        WrSuspended = 12,
8660        WrUserRequest = 13,
8661        WrEventPair = 14,
8662        WrQueue = 15,
8663        WrLpcReceiver = 16,
8664        WrLpcReply = 17,
8665        WrVirtualMemory = 18,
8666        WrPageOut = 19,
8667        WrRendezVous = 20,
8668        WrKeyedEvent = 21,
8669        WrTerminated = 22,
8670        WrProcessInSwap = 23,
8671        WrCpuRateControl = 24,
8672        WrCalloutStack = 25,
8673        WrKernel = 26,
8674        WrResource = 27,
8675        WrPushLock = 28,
8676        WrMutex = 29,
8677        WrQuantumEnd = 30,
8678        WrDispatchInt = 31,
8679        WrPreempted = 32,
8680        WrYieldExecution = 33,
8681        WrFastMutex = 34,
8682        WrGuardMutex = 35,
8683        WrRundown = 36,
8684        MaximumWaitReason = 37,
8685    }
8686    impl OldThreadWaitReason {
8687        /// String value of the enum field names used in the ProtoBuf definition.
8688        ///
8689        /// The values are not transformed in any way and thus are considered stable
8690        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8691        pub fn as_str_name(&self) -> &'static str {
8692            match self {
8693                OldThreadWaitReason::Executive => "EXECUTIVE",
8694                OldThreadWaitReason::FreePage => "FREE_PAGE",
8695                OldThreadWaitReason::PageIn => "PAGE_IN",
8696                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
8697                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
8698                OldThreadWaitReason::Suspend => "SUSPEND",
8699                OldThreadWaitReason::UserRequest => "USER_REQUEST",
8700                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
8701                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
8702                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
8703                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
8704                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
8705                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
8706                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
8707                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
8708                OldThreadWaitReason::WrQueue => "WR_QUEUE",
8709                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
8710                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
8711                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8712                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
8713                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
8714                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
8715                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
8716                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8717                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8718                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
8719                OldThreadWaitReason::WrKernel => "WR_KERNEL",
8720                OldThreadWaitReason::WrResource => "WR_RESOURCE",
8721                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
8722                OldThreadWaitReason::WrMutex => "WR_MUTEX",
8723                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
8724                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
8725                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
8726                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
8727                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
8728                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
8729                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
8730                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8731            }
8732        }
8733    }
8734    /// Wait mode for the previous thread. The ordering is important as based on
8735    /// the OldThreadWaitMode definition from the link above. The following are the
8736    /// possible values:
8737    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8738    #[repr(i32)]
8739    pub enum OldThreadWaitMode {
8740        KernelMode = 0,
8741        UserMode = 1,
8742    }
8743    impl OldThreadWaitMode {
8744        /// String value of the enum field names used in the ProtoBuf definition.
8745        ///
8746        /// The values are not transformed in any way and thus are considered stable
8747        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8748        pub fn as_str_name(&self) -> &'static str {
8749            match self {
8750                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
8751                OldThreadWaitMode::UserMode => "USER_MODE",
8752            }
8753        }
8754    }
8755    /// State of the previous thread. The ordering is important as based on the
8756    /// OldThreadState definition from the link above. The following are the
8757    /// possible state values:
8758    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8759    #[repr(i32)]
8760    pub enum OldThreadState {
8761        Initialized = 0,
8762        Ready = 1,
8763        Running = 2,
8764        Standby = 3,
8765        Terminated = 4,
8766        Waiting = 5,
8767        Transition = 6,
8768        DeferredReady = 7,
8769    }
8770    impl OldThreadState {
8771        /// String value of the enum field names used in the ProtoBuf definition.
8772        ///
8773        /// The values are not transformed in any way and thus are considered stable
8774        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8775        pub fn as_str_name(&self) -> &'static str {
8776            match self {
8777                OldThreadState::Initialized => "INITIALIZED",
8778                OldThreadState::Ready => "READY",
8779                OldThreadState::Running => "RUNNING",
8780                OldThreadState::Standby => "STANDBY",
8781                OldThreadState::Terminated => "TERMINATED",
8782                OldThreadState::Waiting => "WAITING",
8783                OldThreadState::Transition => "TRANSITION",
8784                OldThreadState::DeferredReady => "DEFERRED_READY",
8785            }
8786        }
8787    }
8788    #[derive(Clone, PartialEq, ::prost::Oneof)]
8789    pub enum OldThreadWaitReasonEnumOrInt {
8790        #[prost(enumeration="OldThreadWaitReason", tag="6")]
8791        OldThreadWaitReason(i32),
8792        #[prost(int32, tag="11")]
8793        OldThreadWaitReasonInt(i32),
8794    }
8795    #[derive(Clone, PartialEq, ::prost::Oneof)]
8796    pub enum OldThreadWaitModeEnumOrInt {
8797        #[prost(enumeration="OldThreadWaitMode", tag="7")]
8798        OldThreadWaitMode(i32),
8799        #[prost(int32, tag="12")]
8800        OldThreadWaitModeInt(i32),
8801    }
8802    #[derive(Clone, PartialEq, ::prost::Oneof)]
8803    pub enum OldThreadStateEnumOrInt {
8804        #[prost(enumeration="OldThreadState", tag="8")]
8805        OldThreadState(i32),
8806        #[prost(sint32, tag="13")]
8807        OldThreadStateInt(i32),
8808    }
8809}
8810/// Proto definition based on the Thread_v2 CSwitch class definition
8811/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8812#[derive(Clone, PartialEq, ::prost::Message)]
8813pub struct ReadyThreadEtwEvent {
8814    /// The thread identifier of the thread being readied for execution.
8815    #[prost(uint32, optional, tag="1")]
8816    pub t_thread_id: ::core::option::Option<u32>,
8817    ///   The value by which the priority is being adjusted.
8818    #[prost(sint32, optional, tag="3")]
8819    pub adjust_increment: ::core::option::Option<i32>,
8820    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
8821    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
8822    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
8823    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8824}
8825/// Nested message and enum types in `ReadyThreadEtwEvent`.
8826pub mod ready_thread_etw_event {
8827    /// The reason for the priority boost. The ordering is important as based on
8828    /// the AdjustReason definition from the link above.
8829    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8830    #[repr(i32)]
8831    pub enum AdjustReason {
8832        IgnoreTheIncrement = 0,
8833        /// Apply the increment, which will decay incrementally at the end of each
8834        /// quantum.
8835        ApplyIncrement = 1,
8836        /// Apply the increment as a boost that will decay in its entirety at quantum
8837        /// (typically for priority donation).
8838        ApplyIncrementBoost = 2,
8839    }
8840    impl AdjustReason {
8841        /// String value of the enum field names used in the ProtoBuf definition.
8842        ///
8843        /// The values are not transformed in any way and thus are considered stable
8844        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8845        pub fn as_str_name(&self) -> &'static str {
8846            match self {
8847                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8848                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
8849                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8850            }
8851        }
8852    }
8853    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8854    #[repr(i32)]
8855    pub enum TraceFlag {
8856        Unspecified = 0,
8857        /// The thread has been readied from DPC (deferred procedure call).
8858        ThreadReadied = 1,
8859        /// The kernel stack is currently swapped out.
8860        KernelStackSwappedOut = 2,
8861        /// The process address space is swapped out.
8862        ProcessAddressSwappedOut = 4,
8863    }
8864    impl TraceFlag {
8865        /// String value of the enum field names used in the ProtoBuf definition.
8866        ///
8867        /// The values are not transformed in any way and thus are considered stable
8868        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8869        pub fn as_str_name(&self) -> &'static str {
8870            match self {
8871                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8872                TraceFlag::ThreadReadied => "THREAD_READIED",
8873                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8874                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8875            }
8876        }
8877    }
8878    #[derive(Clone, PartialEq, ::prost::Oneof)]
8879    pub enum AdjustReasonEnumOrInt {
8880        #[prost(enumeration="AdjustReason", tag="2")]
8881        AdjustReason(i32),
8882        #[prost(int32, tag="5")]
8883        AdjustReasonInt(i32),
8884    }
8885    #[derive(Clone, PartialEq, ::prost::Oneof)]
8886    pub enum FlagEnumOrInt {
8887        #[prost(enumeration="TraceFlag", tag="4")]
8888        Flag(i32),
8889        #[prost(int32, tag="6")]
8890        FlagInt(i32),
8891    }
8892}
8893/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8894/// on local traces using tracerpt:
8895/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8896#[derive(Clone, PartialEq, ::prost::Message)]
8897pub struct MemInfoEtwEvent {
8898    /// Number of memory priorities on the system.
8899    #[prost(uint32, optional, tag="1")]
8900    pub priority_levels: ::core::option::Option<u32>,
8901    /// Number of pages in the zero list.
8902    #[prost(uint64, optional, tag="2")]
8903    pub zero_page_count: ::core::option::Option<u64>,
8904    /// Number of pages in the free list.
8905    #[prost(uint64, optional, tag="3")]
8906    pub free_page_count: ::core::option::Option<u64>,
8907    /// Number of pages in the modified list.
8908    #[prost(uint64, optional, tag="4")]
8909    pub modified_page_count: ::core::option::Option<u64>,
8910    /// Number of modified non-paged pool pages.
8911    #[prost(uint64, optional, tag="5")]
8912    pub modified_no_write_page_count: ::core::option::Option<u64>,
8913    /// Number of bad pages.
8914    #[prost(uint64, optional, tag="6")]
8915    pub bad_page_count: ::core::option::Option<u64>,
8916    /// Number of standby pages by memory priority.
8917    #[prost(uint64, repeated, packed="false", tag="7")]
8918    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8919    /// Number of repurposed pages by memory priority.
8920    #[prost(uint64, repeated, packed="false", tag="8")]
8921    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
8922    /// Modified paged pages.
8923    #[prost(uint64, optional, tag="9")]
8924    pub modified_page_count_page_file: ::core::option::Option<u64>,
8925    /// Pool page counts.
8926    #[prost(uint64, optional, tag="10")]
8927    pub paged_pool_page_count: ::core::option::Option<u64>,
8928    #[prost(uint64, optional, tag="11")]
8929    pub non_paged_pool_page_count: ::core::option::Option<u64>,
8930    /// Memory Descriptor List page count.
8931    #[prost(uint64, optional, tag="12")]
8932    pub mdl_page_count: ::core::option::Option<u64>,
8933    /// Commit weight.
8934    #[prost(uint64, optional, tag="13")]
8935    pub commit_page_count: ::core::option::Option<u64>,
8936}
8937/// Proto definition based on the `FileIo_Create` class definition.
8938#[derive(Clone, PartialEq, ::prost::Message)]
8939pub struct FileIoCreateEtwEvent {
8940    #[prost(uint64, optional, tag="1")]
8941    pub irp_ptr: ::core::option::Option<u64>,
8942    #[prost(uint64, optional, tag="2")]
8943    pub file_object: ::core::option::Option<u64>,
8944    #[prost(uint32, optional, tag="3")]
8945    pub ttid: ::core::option::Option<u32>,
8946    #[prost(uint32, optional, tag="4")]
8947    pub create_options: ::core::option::Option<u32>,
8948    #[prost(uint32, optional, tag="5")]
8949    pub file_attributes: ::core::option::Option<u32>,
8950    #[prost(uint32, optional, tag="6")]
8951    pub share_access: ::core::option::Option<u32>,
8952    #[prost(string, optional, tag="7")]
8953    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
8954}
8955/// Proto definition based on the `FileIo_DirEnum` class definition.
8956#[derive(Clone, PartialEq, ::prost::Message)]
8957pub struct FileIoDirEnumEtwEvent {
8958    #[prost(uint64, optional, tag="1")]
8959    pub irp_ptr: ::core::option::Option<u64>,
8960    #[prost(uint64, optional, tag="2")]
8961    pub file_object: ::core::option::Option<u64>,
8962    #[prost(uint64, optional, tag="3")]
8963    pub file_key: ::core::option::Option<u64>,
8964    #[prost(uint32, optional, tag="4")]
8965    pub ttid: ::core::option::Option<u32>,
8966    #[prost(uint32, optional, tag="5")]
8967    pub length: ::core::option::Option<u32>,
8968    #[prost(uint32, optional, tag="6")]
8969    pub info_class: ::core::option::Option<u32>,
8970    #[prost(uint32, optional, tag="7")]
8971    pub file_index: ::core::option::Option<u32>,
8972    #[prost(string, optional, tag="8")]
8973    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8974    #[prost(uint32, optional, tag="9")]
8975    pub opcode: ::core::option::Option<u32>,
8976}
8977/// Proto definition based on the `FileIo_Info` class definition.
8978#[derive(Clone, PartialEq, ::prost::Message)]
8979pub struct FileIoInfoEtwEvent {
8980    #[prost(uint64, optional, tag="1")]
8981    pub irp_ptr: ::core::option::Option<u64>,
8982    #[prost(uint64, optional, tag="2")]
8983    pub file_object: ::core::option::Option<u64>,
8984    #[prost(uint64, optional, tag="3")]
8985    pub file_key: ::core::option::Option<u64>,
8986    #[prost(uint64, optional, tag="4")]
8987    pub extra_info: ::core::option::Option<u64>,
8988    #[prost(uint32, optional, tag="5")]
8989    pub ttid: ::core::option::Option<u32>,
8990    #[prost(uint32, optional, tag="6")]
8991    pub info_class: ::core::option::Option<u32>,
8992    #[prost(uint32, optional, tag="7")]
8993    pub opcode: ::core::option::Option<u32>,
8994}
8995/// Proto definition based on the `FileIo_ReadWrite` class definition.
8996#[derive(Clone, PartialEq, ::prost::Message)]
8997pub struct FileIoReadWriteEtwEvent {
8998    #[prost(uint64, optional, tag="1")]
8999    pub offset: ::core::option::Option<u64>,
9000    #[prost(uint64, optional, tag="2")]
9001    pub irp_ptr: ::core::option::Option<u64>,
9002    #[prost(uint64, optional, tag="3")]
9003    pub file_object: ::core::option::Option<u64>,
9004    #[prost(uint64, optional, tag="4")]
9005    pub file_key: ::core::option::Option<u64>,
9006    #[prost(uint32, optional, tag="5")]
9007    pub ttid: ::core::option::Option<u32>,
9008    #[prost(uint32, optional, tag="6")]
9009    pub io_size: ::core::option::Option<u32>,
9010    #[prost(uint32, optional, tag="7")]
9011    pub io_flags: ::core::option::Option<u32>,
9012    #[prost(uint32, optional, tag="8")]
9013    pub opcode: ::core::option::Option<u32>,
9014}
9015/// Proto definition based on the `FileIo_SimpleOp` class definition.
9016#[derive(Clone, PartialEq, ::prost::Message)]
9017pub struct FileIoSimpleOpEtwEvent {
9018    #[prost(uint64, optional, tag="1")]
9019    pub irp_ptr: ::core::option::Option<u64>,
9020    #[prost(uint64, optional, tag="2")]
9021    pub file_object: ::core::option::Option<u64>,
9022    #[prost(uint64, optional, tag="3")]
9023    pub file_key: ::core::option::Option<u64>,
9024    #[prost(uint32, optional, tag="4")]
9025    pub ttid: ::core::option::Option<u32>,
9026    #[prost(uint32, optional, tag="5")]
9027    pub opcode: ::core::option::Option<u32>,
9028}
9029/// Proto definition based on the `FileIo_OpEnd` class definition.
9030#[derive(Clone, PartialEq, ::prost::Message)]
9031pub struct FileIoOpEndEtwEvent {
9032    #[prost(uint64, optional, tag="1")]
9033    pub irp_ptr: ::core::option::Option<u64>,
9034    #[prost(uint64, optional, tag="2")]
9035    pub extra_info: ::core::option::Option<u64>,
9036    #[prost(uint32, optional, tag="3")]
9037    pub nt_status: ::core::option::Option<u32>,
9038}
9039// End of protos/perfetto/trace/etw/etw.proto
9040
9041// Begin of protos/perfetto/trace/etw/etw_event.proto
9042
9043#[derive(Clone, PartialEq, ::prost::Message)]
9044pub struct EtwTraceEvent {
9045    #[prost(uint64, optional, tag="1")]
9046    pub timestamp: ::core::option::Option<u64>,
9047    #[prost(uint32, optional, tag="4")]
9048    pub cpu: ::core::option::Option<u32>,
9049    #[prost(uint32, optional, tag="5")]
9050    pub thread_id: ::core::option::Option<u32>,
9051    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12")]
9052    pub event: ::core::option::Option<etw_trace_event::Event>,
9053}
9054/// Nested message and enum types in `EtwTraceEvent`.
9055pub mod etw_trace_event {
9056    #[derive(Clone, PartialEq, ::prost::Oneof)]
9057    pub enum Event {
9058        #[prost(message, tag="2")]
9059        CSwitch(super::CSwitchEtwEvent),
9060        #[prost(message, tag="3")]
9061        ReadyThread(super::ReadyThreadEtwEvent),
9062        #[prost(message, tag="6")]
9063        MemInfo(super::MemInfoEtwEvent),
9064        #[prost(message, tag="7")]
9065        FileIoCreate(super::FileIoCreateEtwEvent),
9066        #[prost(message, tag="8")]
9067        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
9068        #[prost(message, tag="9")]
9069        FileIoInfo(super::FileIoInfoEtwEvent),
9070        #[prost(message, tag="10")]
9071        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
9072        #[prost(message, tag="11")]
9073        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
9074        #[prost(message, tag="12")]
9075        FileIoOpEnd(super::FileIoOpEndEtwEvent),
9076    }
9077}
9078// End of protos/perfetto/trace/etw/etw_event.proto
9079
9080// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
9081
9082/// The result of tracing one or more etw event uses per-processor buffers where
9083/// an in-use buffer is assigned to each processor at all times. Therefore,
9084/// collecting multiple events they should already be synchronized.
9085#[derive(Clone, PartialEq, ::prost::Message)]
9086pub struct EtwTraceEventBundle {
9087    #[prost(uint32, optional, tag="1")]
9088    pub cpu: ::core::option::Option<u32>,
9089    #[prost(message, repeated, tag="2")]
9090    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
9091}
9092// Begin of protos/perfetto/trace/evdev.proto
9093
9094/// Records an event in the evdev protocol, as used by Linux and some other *nix
9095/// kernels to report events from human interface devices.
9096///
9097/// Next ID: 5
9098#[derive(Clone, PartialEq, ::prost::Message)]
9099pub struct EvdevEvent {
9100    /// The device's unique ID number. This need not be the number of its
9101    /// /dev/input/event node.
9102    #[prost(uint32, optional, tag="1")]
9103    pub device_id: ::core::option::Option<u32>,
9104    #[prost(oneof="evdev_event::Event", tags="2, 3, 4")]
9105    pub event: ::core::option::Option<evdev_event::Event>,
9106}
9107/// Nested message and enum types in `EvdevEvent`.
9108pub mod evdev_event {
9109    /// Proto version of Linux's struct input_event. The meaning of types and codes
9110    /// are described in the Linux kernel documentation at
9111    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
9112    ///
9113    /// Next ID: 5
9114    #[derive(Clone, PartialEq, ::prost::Message)]
9115    pub struct InputEvent {
9116        /// The monotonic timestamp at which the event occurred, as reported by the
9117        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
9118        /// since the previous event.
9119        #[prost(uint64, optional, tag="1")]
9120        pub kernel_timestamp: ::core::option::Option<u64>,
9121        /// The code grouping for this event, used to distinguish signals, absolute
9122        /// and relative axis changes, and other types of event.
9123        #[prost(uint32, optional, tag="2")]
9124        pub r#type: ::core::option::Option<u32>,
9125        /// The precise type of the event, such as the axis code for absolute and
9126        /// relative events.
9127        #[prost(uint32, optional, tag="3")]
9128        pub code: ::core::option::Option<u32>,
9129        /// The new value of the axis described by type and code.
9130        #[prost(sint32, optional, tag="4")]
9131        pub value: ::core::option::Option<i32>,
9132    }
9133    /// Describes an evdev device being added to the system.
9134    ///
9135    /// Next ID: 2
9136    #[derive(Clone, PartialEq, ::prost::Message)]
9137    pub struct DeviceAddition {
9138        #[prost(message, optional, tag="1")]
9139        pub device: ::core::option::Option<super::EvdevDevice>,
9140    }
9141    /// Describes an evdev device being removed from the system.
9142    ///
9143    /// Next ID: 1
9144    ///
9145    /// Empty — we don't need to record any data other than the device ID for
9146    /// this event type.
9147    #[derive(Clone, PartialEq, ::prost::Message)]
9148    pub struct DeviceRemoval {
9149    }
9150    #[derive(Clone, PartialEq, ::prost::Oneof)]
9151    pub enum Event {
9152        #[prost(message, tag="2")]
9153        InputEvent(InputEvent),
9154        #[prost(message, tag="3")]
9155        AddEvent(DeviceAddition),
9156        #[prost(message, tag="4")]
9157        RemoveEvent(DeviceRemoval),
9158    }
9159}
9160/// The properties of an input device that don't change during the time that it's
9161/// connected, as well as the current values for all of its axes.
9162///
9163/// Next ID: 13
9164#[derive(Clone, PartialEq, ::prost::Message)]
9165pub struct EvdevDevice {
9166    /// The device's unique ID number. This need not be the number of its
9167    /// /dev/input/event node.
9168    #[prost(uint32, optional, tag="1")]
9169    pub device_id: ::core::option::Option<u32>,
9170    /// The number of the evdev device (i.e. from its /dev/input/eventX node path).
9171    #[prost(uint32, optional, tag="2")]
9172    pub device_num: ::core::option::Option<u32>,
9173    /// The device's name.
9174    #[prost(string, optional, tag="3")]
9175    pub name: ::core::option::Option<::prost::alloc::string::String>,
9176    /// The physical path to the device in the system hierarchy.
9177    #[prost(string, optional, tag="4")]
9178    pub phys: ::core::option::Option<::prost::alloc::string::String>,
9179    /// The unique identification code for the device (if it has one).
9180    #[prost(string, optional, tag="5")]
9181    pub uniq: ::core::option::Option<::prost::alloc::string::String>,
9182    /// The device's ID numbers.
9183    #[prost(message, optional, tag="6")]
9184    pub id: ::core::option::Option<evdev_device::Identifier>,
9185    /// A map of information for each of the device's absolute axes. Keys are the
9186    /// Linux ABS_* constants.
9187    #[prost(map="uint32, message", tag="7")]
9188    pub absolute_axis_infos: ::std::collections::HashMap<u32, evdev_device::AbsInfo>,
9189    /// Bitmask specifying which types of events the device declares.
9190    #[prost(bytes="vec", optional, tag="8")]
9191    pub ev_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9192    /// A map of bitmasks specifying which axes of each type the device declares.
9193    /// Keys are the Linux EV_* constants.
9194    #[prost(map="uint32, bytes", tag="9")]
9195    pub event_type_bitmasks: ::std::collections::HashMap<u32, ::prost::alloc::vec::Vec<u8>>,
9196    /// Bitmask of properties declared by the device.
9197    #[prost(bytes="vec", optional, tag="10")]
9198    pub prop_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9199    /// Current states of device axes.
9200    ///
9201    /// The keys are the Linux event type constants (e.g. EV_KEY, EV_ABS, etc.). We
9202    /// don't need to keep track of states for all axis types, only KEY, SW, LED,
9203    /// and ABS, so only those will have entries in this map. States for ABS_MT_*
9204    /// axes (which have multiple slots) will be kept in abs_mt_states instead.
9205    #[prost(map="uint32, message", tag="11")]
9206    pub axis_states: ::std::collections::HashMap<u32, evdev_device::AxisMap>,
9207    /// Current states of ABS_MT_* axes other than ABS_MT_SLOT. The keys are the
9208    /// ABS axis codes.
9209    #[prost(map="uint32, message", tag="12")]
9210    pub abs_mt_states: ::std::collections::HashMap<u32, evdev_device::SlotValuesMap>,
9211}
9212/// Nested message and enum types in `EvdevDevice`.
9213pub mod evdev_device {
9214    /// Proto version of Linux's struct input_id. Although uint32s are used for the
9215    /// fields, the kernel uses 16-bit ints so values will be less than 2^16.
9216    ///
9217    /// Next ID: 5
9218    #[derive(Clone, PartialEq, ::prost::Message)]
9219    pub struct Identifier {
9220        /// The bus that the device is connected to. Values will be one of Linux's
9221        /// BUS_* constants.
9222        #[prost(uint32, optional, tag="1")]
9223        pub bustype: ::core::option::Option<u32>,
9224        /// A number identifying the vendor of the device. Often a USB or Bluetooth
9225        /// vendor ID, but not always.
9226        #[prost(uint32, optional, tag="2")]
9227        pub vendor: ::core::option::Option<u32>,
9228        #[prost(uint32, optional, tag="3")]
9229        pub product: ::core::option::Option<u32>,
9230        #[prost(uint32, optional, tag="4")]
9231        pub version: ::core::option::Option<u32>,
9232    }
9233    /// Proto version of Linux's struct input_absinfo, excluding the value field
9234    /// (which is tracked elsewhere).
9235    ///
9236    /// Next ID: 6
9237    #[derive(Clone, PartialEq, ::prost::Message)]
9238    pub struct AbsInfo {
9239        #[prost(sint32, optional, tag="1")]
9240        pub minimum: ::core::option::Option<i32>,
9241        #[prost(sint32, optional, tag="2")]
9242        pub maximum: ::core::option::Option<i32>,
9243        #[prost(int32, optional, tag="3")]
9244        pub fuzz: ::core::option::Option<i32>,
9245        #[prost(int32, optional, tag="4")]
9246        pub flat: ::core::option::Option<i32>,
9247        #[prost(int32, optional, tag="5")]
9248        pub resolution: ::core::option::Option<i32>,
9249    }
9250    /// Contains the current values of all axes of a particular type (e.g. EV_ABS,
9251    /// EV_KEY, etc.).
9252    ///
9253    /// Next ID: 2
9254    #[derive(Clone, PartialEq, ::prost::Message)]
9255    pub struct AxisMap {
9256        /// Current values of all axes, other than ABS_MT_* axes (which have multiple
9257        /// slots), which are kept in abs_mt_states instead.
9258        ///
9259        /// The keys are the Linux axis codes, e.g. ABS_* for absolute axes. If there
9260        /// is no entry for a particular axis, assume that its value is 0.
9261        #[prost(map="uint32, sint32", tag="1")]
9262        pub axis_states: ::std::collections::HashMap<u32, i32>,
9263    }
9264    /// Contains the current values of a single ABS_MT_* axis across all of its
9265    /// slots.
9266    ///
9267    /// Next ID: 2
9268    #[derive(Clone, PartialEq, ::prost::Message)]
9269    pub struct SlotValuesMap {
9270        /// Current values for all slots.
9271        ///
9272        /// The keys are the slot numbers. If there is no entry for a particular
9273        /// slot, assume that its value is 0.
9274        #[prost(map="uint32, sint32", tag="1")]
9275        pub slot_values: ::std::collections::HashMap<u32, i32>,
9276    }
9277}
9278// End of protos/perfetto/trace/evdev.proto
9279
9280// Begin of protos/perfetto/common/descriptor.proto
9281
9282/// The protocol compiler can output a FileDescriptorSet containing the .proto
9283/// files it parses.
9284#[derive(Clone, PartialEq, ::prost::Message)]
9285pub struct FileDescriptorSet {
9286    #[prost(message, repeated, tag="1")]
9287    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
9288}
9289/// Describes a complete .proto file.
9290#[derive(Clone, PartialEq, ::prost::Message)]
9291pub struct FileDescriptorProto {
9292    /// file name, relative to root of source tree
9293    #[prost(string, optional, tag="1")]
9294    pub name: ::core::option::Option<::prost::alloc::string::String>,
9295    /// e.g. "foo", "foo.bar", etc.
9296    #[prost(string, optional, tag="2")]
9297    pub package: ::core::option::Option<::prost::alloc::string::String>,
9298    /// Names of files imported by this file.
9299    #[prost(string, repeated, tag="3")]
9300    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9301    /// Indexes of the public imported files in the dependency list above.
9302    #[prost(int32, repeated, packed="false", tag="10")]
9303    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
9304    /// Indexes of the weak imported files in the dependency list.
9305    /// For Google-internal migration only. Do not use.
9306    #[prost(int32, repeated, packed="false", tag="11")]
9307    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
9308    /// All top-level definitions in this file.
9309    #[prost(message, repeated, tag="4")]
9310    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9311    #[prost(message, repeated, tag="5")]
9312    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9313    #[prost(message, repeated, tag="7")]
9314    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9315}
9316/// Describes a message type.
9317#[derive(Clone, PartialEq, ::prost::Message)]
9318pub struct DescriptorProto {
9319    #[prost(string, optional, tag="1")]
9320    pub name: ::core::option::Option<::prost::alloc::string::String>,
9321    #[prost(message, repeated, tag="2")]
9322    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9323    #[prost(message, repeated, tag="6")]
9324    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9325    #[prost(message, repeated, tag="3")]
9326    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9327    #[prost(message, repeated, tag="4")]
9328    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9329    #[prost(message, repeated, tag="8")]
9330    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
9331    #[prost(message, repeated, tag="9")]
9332    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
9333    /// Reserved field names, which may not be used by fields in the same message.
9334    /// A given name may only be reserved once.
9335    #[prost(string, repeated, tag="10")]
9336    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9337}
9338/// Nested message and enum types in `DescriptorProto`.
9339pub mod descriptor_proto {
9340    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
9341    /// fields or extension ranges in the same message. Reserved ranges may
9342    /// not overlap.
9343    #[derive(Clone, PartialEq, ::prost::Message)]
9344    pub struct ReservedRange {
9345        /// Inclusive.
9346        #[prost(int32, optional, tag="1")]
9347        pub start: ::core::option::Option<i32>,
9348        /// Exclusive.
9349        #[prost(int32, optional, tag="2")]
9350        pub end: ::core::option::Option<i32>,
9351    }
9352}
9353/// A message representing a option the parser does not recognize. This only
9354/// appears in options protos created by the compiler::Parser class.
9355/// DescriptorPool resolves these when building Descriptor objects. Therefore,
9356/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
9357/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
9358/// in them.
9359#[derive(Clone, PartialEq, ::prost::Message)]
9360pub struct UninterpretedOption {
9361    #[prost(message, repeated, tag="2")]
9362    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
9363    /// The value of the uninterpreted option, in whatever type the tokenizer
9364    /// identified it as during parsing. Exactly one of these should be set.
9365    #[prost(string, optional, tag="3")]
9366    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
9367    #[prost(uint64, optional, tag="4")]
9368    pub positive_int_value: ::core::option::Option<u64>,
9369    #[prost(int64, optional, tag="5")]
9370    pub negative_int_value: ::core::option::Option<i64>,
9371    #[prost(double, optional, tag="6")]
9372    pub double_value: ::core::option::Option<f64>,
9373    #[prost(bytes="vec", optional, tag="7")]
9374    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9375    #[prost(string, optional, tag="8")]
9376    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
9377}
9378/// Nested message and enum types in `UninterpretedOption`.
9379pub mod uninterpreted_option {
9380    /// The name of the uninterpreted option.  Each string represents a segment in
9381    /// a dot-separated name.  is_extension is true iff a segment represents an
9382    /// extension (denoted with parentheses in options specs in .proto files).
9383    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
9384    /// "foo.(bar.baz).moo".
9385    #[derive(Clone, PartialEq, ::prost::Message)]
9386    pub struct NamePart {
9387        #[prost(string, optional, tag="1")]
9388        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
9389        #[prost(bool, optional, tag="2")]
9390        pub is_extension: ::core::option::Option<bool>,
9391    }
9392}
9393#[derive(Clone, PartialEq, ::prost::Message)]
9394pub struct FieldOptions {
9395    /// The packed option can be enabled for repeated primitive fields to enable
9396    /// a more efficient representation on the wire. Rather than repeatedly
9397    /// writing the tag and type for each element, the entire array is encoded as
9398    /// a single length-delimited blob. In proto3, only explicit setting it to
9399    /// false will avoid using packed encoding.
9400    #[prost(bool, optional, tag="2")]
9401    pub packed: ::core::option::Option<bool>,
9402    /// The parser stores options it doesn't recognize here. See above.
9403    #[prost(message, repeated, tag="999")]
9404    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
9405}
9406/// Describes a field within a message.
9407#[derive(Clone, PartialEq, ::prost::Message)]
9408pub struct FieldDescriptorProto {
9409    #[prost(string, optional, tag="1")]
9410    pub name: ::core::option::Option<::prost::alloc::string::String>,
9411    #[prost(int32, optional, tag="3")]
9412    pub number: ::core::option::Option<i32>,
9413    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
9414    pub label: ::core::option::Option<i32>,
9415    /// If type_name is set, this need not be set.  If both this and type_name
9416    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9417    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
9418    pub r#type: ::core::option::Option<i32>,
9419    /// For message and enum types, this is the name of the type.  If the name
9420    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9421    /// rules are used to find the type (i.e. first the nested types within this
9422    /// message are searched, then within the parent, on up to the root
9423    /// namespace).
9424    #[prost(string, optional, tag="6")]
9425    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9426    /// For extensions, this is the name of the type being extended.  It is
9427    /// resolved in the same manner as type_name.
9428    #[prost(string, optional, tag="2")]
9429    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9430    /// For numeric types, contains the original text representation of the value.
9431    /// For booleans, "true" or "false".
9432    /// For strings, contains the default text contents (not escaped in any way).
9433    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9434    /// TODO(kenton):  Base-64 encode?
9435    #[prost(string, optional, tag="7")]
9436    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9437    #[prost(message, optional, tag="8")]
9438    pub options: ::core::option::Option<FieldOptions>,
9439    /// If set, gives the index of a oneof in the containing type's oneof_decl
9440    /// list.  This field is a member of that oneof.
9441    #[prost(int32, optional, tag="9")]
9442    pub oneof_index: ::core::option::Option<i32>,
9443}
9444/// Nested message and enum types in `FieldDescriptorProto`.
9445pub mod field_descriptor_proto {
9446    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9447    #[repr(i32)]
9448    pub enum Type {
9449        /// 0 is reserved for errors.
9450        /// Order is weird for historical reasons.
9451        Double = 1,
9452        Float = 2,
9453        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9454        /// negative values are likely.
9455        Int64 = 3,
9456        Uint64 = 4,
9457        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9458        /// negative values are likely.
9459        Int32 = 5,
9460        Fixed64 = 6,
9461        Fixed32 = 7,
9462        Bool = 8,
9463        String = 9,
9464        /// Tag-delimited aggregate.
9465        /// Group type is deprecated and not supported in proto3. However, Proto3
9466        /// implementations should still be able to parse the group wire format and
9467        /// treat group fields as unknown fields.
9468        Group = 10,
9469        /// Length-delimited aggregate.
9470        Message = 11,
9471        /// New in version 2.
9472        Bytes = 12,
9473        Uint32 = 13,
9474        Enum = 14,
9475        Sfixed32 = 15,
9476        Sfixed64 = 16,
9477        /// Uses ZigZag encoding.
9478        Sint32 = 17,
9479        /// Uses ZigZag encoding.
9480        Sint64 = 18,
9481    }
9482    impl Type {
9483        /// String value of the enum field names used in the ProtoBuf definition.
9484        ///
9485        /// The values are not transformed in any way and thus are considered stable
9486        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9487        pub fn as_str_name(&self) -> &'static str {
9488            match self {
9489                Type::Double => "TYPE_DOUBLE",
9490                Type::Float => "TYPE_FLOAT",
9491                Type::Int64 => "TYPE_INT64",
9492                Type::Uint64 => "TYPE_UINT64",
9493                Type::Int32 => "TYPE_INT32",
9494                Type::Fixed64 => "TYPE_FIXED64",
9495                Type::Fixed32 => "TYPE_FIXED32",
9496                Type::Bool => "TYPE_BOOL",
9497                Type::String => "TYPE_STRING",
9498                Type::Group => "TYPE_GROUP",
9499                Type::Message => "TYPE_MESSAGE",
9500                Type::Bytes => "TYPE_BYTES",
9501                Type::Uint32 => "TYPE_UINT32",
9502                Type::Enum => "TYPE_ENUM",
9503                Type::Sfixed32 => "TYPE_SFIXED32",
9504                Type::Sfixed64 => "TYPE_SFIXED64",
9505                Type::Sint32 => "TYPE_SINT32",
9506                Type::Sint64 => "TYPE_SINT64",
9507            }
9508        }
9509    }
9510    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9511    #[repr(i32)]
9512    pub enum Label {
9513        /// 0 is reserved for errors
9514        Optional = 1,
9515        Required = 2,
9516        Repeated = 3,
9517    }
9518    impl Label {
9519        /// String value of the enum field names used in the ProtoBuf definition.
9520        ///
9521        /// The values are not transformed in any way and thus are considered stable
9522        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9523        pub fn as_str_name(&self) -> &'static str {
9524            match self {
9525                Label::Optional => "LABEL_OPTIONAL",
9526                Label::Required => "LABEL_REQUIRED",
9527                Label::Repeated => "LABEL_REPEATED",
9528            }
9529        }
9530    }
9531}
9532/// Describes a oneof.
9533#[derive(Clone, PartialEq, ::prost::Message)]
9534pub struct OneofDescriptorProto {
9535    #[prost(string, optional, tag="1")]
9536    pub name: ::core::option::Option<::prost::alloc::string::String>,
9537    #[prost(message, optional, tag="2")]
9538    pub options: ::core::option::Option<OneofOptions>,
9539}
9540/// Describes an enum type.
9541#[derive(Clone, PartialEq, ::prost::Message)]
9542pub struct EnumDescriptorProto {
9543    #[prost(string, optional, tag="1")]
9544    pub name: ::core::option::Option<::prost::alloc::string::String>,
9545    #[prost(message, repeated, tag="2")]
9546    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
9547    /// Reserved enum value names, which may not be reused. A given name may only
9548    /// be reserved once.
9549    #[prost(string, repeated, tag="5")]
9550    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9551}
9552/// Describes a value within an enum.
9553#[derive(Clone, PartialEq, ::prost::Message)]
9554pub struct EnumValueDescriptorProto {
9555    #[prost(string, optional, tag="1")]
9556    pub name: ::core::option::Option<::prost::alloc::string::String>,
9557    #[prost(int32, optional, tag="2")]
9558    pub number: ::core::option::Option<i32>,
9559}
9560#[derive(Clone, PartialEq, ::prost::Message)]
9561pub struct OneofOptions {
9562}
9563// End of protos/perfetto/common/descriptor.proto
9564
9565// Begin of protos/perfetto/trace/extension_descriptor.proto
9566
9567/// This message contains descriptors used to parse extension fields of
9568/// TrackEvent.
9569///
9570/// See docs/design-docs/extensions.md for more details.
9571#[derive(Clone, PartialEq, ::prost::Message)]
9572pub struct ExtensionDescriptor {
9573    /// Optional, for debugging only. The file name or path of the descriptor
9574    /// source. Can be omitted without affecting functionality.
9575    #[prost(string, optional, tag="3")]
9576    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9577    #[prost(oneof="extension_descriptor::Descriptor", tags="1, 2")]
9578    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
9579}
9580/// Nested message and enum types in `ExtensionDescriptor`.
9581pub mod extension_descriptor {
9582    #[derive(Clone, PartialEq, ::prost::Oneof)]
9583    pub enum Descriptor {
9584        #[prost(message, tag="1")]
9585        ExtensionSet(super::FileDescriptorSet),
9586        /// Same as extension_set, but gzip-compressed. This is used by the tracing
9587        /// service on Android to emit pre-compressed descriptor files from
9588        /// /etc/tracing_descriptors.gz without decompressing them first.
9589        #[prost(bytes, tag="2")]
9590        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
9591    }
9592}
9593// End of protos/perfetto/trace/extension_descriptor.proto
9594
9595// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
9596
9597/// Represents the mapping between inode numbers in a block device and their path
9598/// on the filesystem
9599#[derive(Clone, PartialEq, ::prost::Message)]
9600pub struct InodeFileMap {
9601    #[prost(uint64, optional, tag="1")]
9602    pub block_device_id: ::core::option::Option<u64>,
9603    /// The mount points of the block device, e.g. \["system"\].
9604    #[prost(string, repeated, tag="2")]
9605    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9606    /// The list of all the entries from the block device
9607    #[prost(message, repeated, tag="3")]
9608    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
9609}
9610/// Nested message and enum types in `InodeFileMap`.
9611pub mod inode_file_map {
9612    /// Representation of Entry
9613    #[derive(Clone, PartialEq, ::prost::Message)]
9614    pub struct Entry {
9615        #[prost(uint64, optional, tag="1")]
9616        pub inode_number: ::core::option::Option<u64>,
9617        /// The path to the file, e.g. "etc/file.xml"
9618        /// List of strings for multiple hardlinks
9619        #[prost(string, repeated, tag="2")]
9620        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9621        #[prost(enumeration="entry::Type", optional, tag="3")]
9622        pub r#type: ::core::option::Option<i32>,
9623    }
9624    /// Nested message and enum types in `Entry`.
9625    pub mod entry {
9626        /// The file type
9627        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9628        #[repr(i32)]
9629        pub enum Type {
9630            Unknown = 0,
9631            File = 1,
9632            Directory = 2,
9633        }
9634        impl Type {
9635            /// String value of the enum field names used in the ProtoBuf definition.
9636            ///
9637            /// The values are not transformed in any way and thus are considered stable
9638            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9639            pub fn as_str_name(&self) -> &'static str {
9640                match self {
9641                    Type::Unknown => "UNKNOWN",
9642                    Type::File => "FILE",
9643                    Type::Directory => "DIRECTORY",
9644                }
9645            }
9646        }
9647    }
9648}
9649// End of protos/perfetto/trace/filesystem/inode_file_map.proto
9650
9651// Begin of protos/perfetto/trace/ftrace/android_fs.proto
9652
9653#[derive(Clone, PartialEq, ::prost::Message)]
9654pub struct AndroidFsDatareadEndFtraceEvent {
9655    #[prost(int32, optional, tag="1")]
9656    pub bytes: ::core::option::Option<i32>,
9657    #[prost(uint64, optional, tag="2")]
9658    pub ino: ::core::option::Option<u64>,
9659    #[prost(int64, optional, tag="3")]
9660    pub offset: ::core::option::Option<i64>,
9661}
9662#[derive(Clone, PartialEq, ::prost::Message)]
9663pub struct AndroidFsDatareadStartFtraceEvent {
9664    #[prost(int32, optional, tag="1")]
9665    pub bytes: ::core::option::Option<i32>,
9666    #[prost(string, optional, tag="2")]
9667    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9668    #[prost(int64, optional, tag="3")]
9669    pub i_size: ::core::option::Option<i64>,
9670    #[prost(uint64, optional, tag="4")]
9671    pub ino: ::core::option::Option<u64>,
9672    #[prost(int64, optional, tag="5")]
9673    pub offset: ::core::option::Option<i64>,
9674    #[prost(string, optional, tag="6")]
9675    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9676    #[prost(int32, optional, tag="7")]
9677    pub pid: ::core::option::Option<i32>,
9678}
9679#[derive(Clone, PartialEq, ::prost::Message)]
9680pub struct AndroidFsDatawriteEndFtraceEvent {
9681    #[prost(int32, optional, tag="1")]
9682    pub bytes: ::core::option::Option<i32>,
9683    #[prost(uint64, optional, tag="2")]
9684    pub ino: ::core::option::Option<u64>,
9685    #[prost(int64, optional, tag="3")]
9686    pub offset: ::core::option::Option<i64>,
9687}
9688#[derive(Clone, PartialEq, ::prost::Message)]
9689pub struct AndroidFsDatawriteStartFtraceEvent {
9690    #[prost(int32, optional, tag="1")]
9691    pub bytes: ::core::option::Option<i32>,
9692    #[prost(string, optional, tag="2")]
9693    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9694    #[prost(int64, optional, tag="3")]
9695    pub i_size: ::core::option::Option<i64>,
9696    #[prost(uint64, optional, tag="4")]
9697    pub ino: ::core::option::Option<u64>,
9698    #[prost(int64, optional, tag="5")]
9699    pub offset: ::core::option::Option<i64>,
9700    #[prost(string, optional, tag="6")]
9701    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9702    #[prost(int32, optional, tag="7")]
9703    pub pid: ::core::option::Option<i32>,
9704}
9705#[derive(Clone, PartialEq, ::prost::Message)]
9706pub struct AndroidFsFsyncEndFtraceEvent {
9707    #[prost(int32, optional, tag="1")]
9708    pub bytes: ::core::option::Option<i32>,
9709    #[prost(uint64, optional, tag="2")]
9710    pub ino: ::core::option::Option<u64>,
9711    #[prost(int64, optional, tag="3")]
9712    pub offset: ::core::option::Option<i64>,
9713}
9714#[derive(Clone, PartialEq, ::prost::Message)]
9715pub struct AndroidFsFsyncStartFtraceEvent {
9716    #[prost(string, optional, tag="1")]
9717    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9718    #[prost(int64, optional, tag="2")]
9719    pub i_size: ::core::option::Option<i64>,
9720    #[prost(uint64, optional, tag="3")]
9721    pub ino: ::core::option::Option<u64>,
9722    #[prost(string, optional, tag="4")]
9723    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9724    #[prost(int32, optional, tag="5")]
9725    pub pid: ::core::option::Option<i32>,
9726}
9727// End of protos/perfetto/trace/ftrace/android_fs.proto
9728
9729// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
9730
9731#[derive(Clone, PartialEq, ::prost::Message)]
9732pub struct BclIrqTriggerFtraceEvent {
9733    #[prost(int32, optional, tag="1")]
9734    pub id: ::core::option::Option<i32>,
9735    #[prost(int32, optional, tag="2")]
9736    pub throttle: ::core::option::Option<i32>,
9737    #[prost(int32, optional, tag="3")]
9738    pub cpu0_limit: ::core::option::Option<i32>,
9739    #[prost(int32, optional, tag="4")]
9740    pub cpu1_limit: ::core::option::Option<i32>,
9741    #[prost(int32, optional, tag="5")]
9742    pub cpu2_limit: ::core::option::Option<i32>,
9743    #[prost(int32, optional, tag="6")]
9744    pub tpu_limit: ::core::option::Option<i32>,
9745    #[prost(int32, optional, tag="7")]
9746    pub gpu_limit: ::core::option::Option<i32>,
9747    #[prost(int32, optional, tag="8")]
9748    pub voltage: ::core::option::Option<i32>,
9749    #[prost(int32, optional, tag="9")]
9750    pub capacity: ::core::option::Option<i32>,
9751}
9752// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
9753
9754// Begin of protos/perfetto/trace/ftrace/binder.proto
9755
9756#[derive(Clone, PartialEq, ::prost::Message)]
9757pub struct BinderTransactionFtraceEvent {
9758    #[prost(int32, optional, tag="1")]
9759    pub debug_id: ::core::option::Option<i32>,
9760    #[prost(int32, optional, tag="2")]
9761    pub target_node: ::core::option::Option<i32>,
9762    #[prost(int32, optional, tag="3")]
9763    pub to_proc: ::core::option::Option<i32>,
9764    #[prost(int32, optional, tag="4")]
9765    pub to_thread: ::core::option::Option<i32>,
9766    #[prost(int32, optional, tag="5")]
9767    pub reply: ::core::option::Option<i32>,
9768    #[prost(uint32, optional, tag="6")]
9769    pub code: ::core::option::Option<u32>,
9770    #[prost(uint32, optional, tag="7")]
9771    pub flags: ::core::option::Option<u32>,
9772}
9773#[derive(Clone, PartialEq, ::prost::Message)]
9774pub struct BinderTransactionReceivedFtraceEvent {
9775    #[prost(int32, optional, tag="1")]
9776    pub debug_id: ::core::option::Option<i32>,
9777}
9778#[derive(Clone, PartialEq, ::prost::Message)]
9779pub struct BinderSetPriorityFtraceEvent {
9780    #[prost(int32, optional, tag="1")]
9781    pub proc: ::core::option::Option<i32>,
9782    #[prost(int32, optional, tag="2")]
9783    pub thread: ::core::option::Option<i32>,
9784    #[prost(uint32, optional, tag="3")]
9785    pub old_prio: ::core::option::Option<u32>,
9786    #[prost(uint32, optional, tag="4")]
9787    pub new_prio: ::core::option::Option<u32>,
9788    #[prost(uint32, optional, tag="5")]
9789    pub desired_prio: ::core::option::Option<u32>,
9790}
9791#[derive(Clone, PartialEq, ::prost::Message)]
9792pub struct BinderLockFtraceEvent {
9793    #[prost(string, optional, tag="1")]
9794    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9795}
9796#[derive(Clone, PartialEq, ::prost::Message)]
9797pub struct BinderLockedFtraceEvent {
9798    #[prost(string, optional, tag="1")]
9799    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9800}
9801#[derive(Clone, PartialEq, ::prost::Message)]
9802pub struct BinderUnlockFtraceEvent {
9803    #[prost(string, optional, tag="1")]
9804    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9805}
9806#[derive(Clone, PartialEq, ::prost::Message)]
9807pub struct BinderTransactionAllocBufFtraceEvent {
9808    #[prost(uint64, optional, tag="1")]
9809    pub data_size: ::core::option::Option<u64>,
9810    #[prost(int32, optional, tag="2")]
9811    pub debug_id: ::core::option::Option<i32>,
9812    #[prost(uint64, optional, tag="3")]
9813    pub offsets_size: ::core::option::Option<u64>,
9814    #[prost(uint64, optional, tag="4")]
9815    pub extra_buffers_size: ::core::option::Option<u64>,
9816}
9817#[derive(Clone, PartialEq, ::prost::Message)]
9818pub struct BinderCommandFtraceEvent {
9819    #[prost(uint32, optional, tag="1")]
9820    pub cmd: ::core::option::Option<u32>,
9821}
9822#[derive(Clone, PartialEq, ::prost::Message)]
9823pub struct BinderReturnFtraceEvent {
9824    #[prost(uint32, optional, tag="1")]
9825    pub cmd: ::core::option::Option<u32>,
9826}
9827// End of protos/perfetto/trace/ftrace/binder.proto
9828
9829// Begin of protos/perfetto/trace/ftrace/block.proto
9830
9831#[derive(Clone, PartialEq, ::prost::Message)]
9832pub struct BlockRqIssueFtraceEvent {
9833    #[prost(uint64, optional, tag="1")]
9834    pub dev: ::core::option::Option<u64>,
9835    #[prost(uint64, optional, tag="2")]
9836    pub sector: ::core::option::Option<u64>,
9837    #[prost(uint32, optional, tag="3")]
9838    pub nr_sector: ::core::option::Option<u32>,
9839    #[prost(uint32, optional, tag="4")]
9840    pub bytes: ::core::option::Option<u32>,
9841    #[prost(string, optional, tag="5")]
9842    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9843    #[prost(string, optional, tag="6")]
9844    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9845    #[prost(string, optional, tag="7")]
9846    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9847}
9848#[derive(Clone, PartialEq, ::prost::Message)]
9849pub struct BlockBioBackmergeFtraceEvent {
9850    #[prost(uint64, optional, tag="1")]
9851    pub dev: ::core::option::Option<u64>,
9852    #[prost(uint64, optional, tag="2")]
9853    pub sector: ::core::option::Option<u64>,
9854    #[prost(uint32, optional, tag="3")]
9855    pub nr_sector: ::core::option::Option<u32>,
9856    #[prost(string, optional, tag="4")]
9857    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9858    #[prost(string, optional, tag="5")]
9859    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9860}
9861#[derive(Clone, PartialEq, ::prost::Message)]
9862pub struct BlockBioBounceFtraceEvent {
9863    #[prost(uint64, optional, tag="1")]
9864    pub dev: ::core::option::Option<u64>,
9865    #[prost(uint64, optional, tag="2")]
9866    pub sector: ::core::option::Option<u64>,
9867    #[prost(uint32, optional, tag="3")]
9868    pub nr_sector: ::core::option::Option<u32>,
9869    #[prost(string, optional, tag="4")]
9870    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9871    #[prost(string, optional, tag="5")]
9872    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9873}
9874#[derive(Clone, PartialEq, ::prost::Message)]
9875pub struct BlockBioCompleteFtraceEvent {
9876    #[prost(uint64, optional, tag="1")]
9877    pub dev: ::core::option::Option<u64>,
9878    #[prost(uint64, optional, tag="2")]
9879    pub sector: ::core::option::Option<u64>,
9880    #[prost(uint32, optional, tag="3")]
9881    pub nr_sector: ::core::option::Option<u32>,
9882    #[prost(int32, optional, tag="4")]
9883    pub error: ::core::option::Option<i32>,
9884    #[prost(string, optional, tag="5")]
9885    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9886}
9887#[derive(Clone, PartialEq, ::prost::Message)]
9888pub struct BlockBioFrontmergeFtraceEvent {
9889    #[prost(uint64, optional, tag="1")]
9890    pub dev: ::core::option::Option<u64>,
9891    #[prost(uint64, optional, tag="2")]
9892    pub sector: ::core::option::Option<u64>,
9893    #[prost(uint32, optional, tag="3")]
9894    pub nr_sector: ::core::option::Option<u32>,
9895    #[prost(string, optional, tag="4")]
9896    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9897    #[prost(string, optional, tag="5")]
9898    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9899}
9900#[derive(Clone, PartialEq, ::prost::Message)]
9901pub struct BlockBioQueueFtraceEvent {
9902    #[prost(uint64, optional, tag="1")]
9903    pub dev: ::core::option::Option<u64>,
9904    #[prost(uint64, optional, tag="2")]
9905    pub sector: ::core::option::Option<u64>,
9906    #[prost(uint32, optional, tag="3")]
9907    pub nr_sector: ::core::option::Option<u32>,
9908    #[prost(string, optional, tag="4")]
9909    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9910    #[prost(string, optional, tag="5")]
9911    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9912}
9913#[derive(Clone, PartialEq, ::prost::Message)]
9914pub struct BlockBioRemapFtraceEvent {
9915    #[prost(uint64, optional, tag="1")]
9916    pub dev: ::core::option::Option<u64>,
9917    #[prost(uint64, optional, tag="2")]
9918    pub sector: ::core::option::Option<u64>,
9919    #[prost(uint32, optional, tag="3")]
9920    pub nr_sector: ::core::option::Option<u32>,
9921    #[prost(uint64, optional, tag="4")]
9922    pub old_dev: ::core::option::Option<u64>,
9923    #[prost(uint64, optional, tag="5")]
9924    pub old_sector: ::core::option::Option<u64>,
9925    #[prost(string, optional, tag="6")]
9926    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9927}
9928#[derive(Clone, PartialEq, ::prost::Message)]
9929pub struct BlockDirtyBufferFtraceEvent {
9930    #[prost(uint64, optional, tag="1")]
9931    pub dev: ::core::option::Option<u64>,
9932    #[prost(uint64, optional, tag="2")]
9933    pub sector: ::core::option::Option<u64>,
9934    #[prost(uint64, optional, tag="3")]
9935    pub size: ::core::option::Option<u64>,
9936}
9937#[derive(Clone, PartialEq, ::prost::Message)]
9938pub struct BlockGetrqFtraceEvent {
9939    #[prost(uint64, optional, tag="1")]
9940    pub dev: ::core::option::Option<u64>,
9941    #[prost(uint64, optional, tag="2")]
9942    pub sector: ::core::option::Option<u64>,
9943    #[prost(uint32, optional, tag="3")]
9944    pub nr_sector: ::core::option::Option<u32>,
9945    #[prost(string, optional, tag="4")]
9946    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9947    #[prost(string, optional, tag="5")]
9948    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9949}
9950#[derive(Clone, PartialEq, ::prost::Message)]
9951pub struct BlockPlugFtraceEvent {
9952    #[prost(string, optional, tag="1")]
9953    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9954}
9955#[derive(Clone, PartialEq, ::prost::Message)]
9956pub struct BlockRqAbortFtraceEvent {
9957    #[prost(uint64, optional, tag="1")]
9958    pub dev: ::core::option::Option<u64>,
9959    #[prost(uint64, optional, tag="2")]
9960    pub sector: ::core::option::Option<u64>,
9961    #[prost(uint32, optional, tag="3")]
9962    pub nr_sector: ::core::option::Option<u32>,
9963    #[prost(int32, optional, tag="4")]
9964    pub errors: ::core::option::Option<i32>,
9965    #[prost(string, optional, tag="5")]
9966    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9967    #[prost(string, optional, tag="6")]
9968    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9969}
9970#[derive(Clone, PartialEq, ::prost::Message)]
9971pub struct BlockRqCompleteFtraceEvent {
9972    #[prost(uint64, optional, tag="1")]
9973    pub dev: ::core::option::Option<u64>,
9974    #[prost(uint64, optional, tag="2")]
9975    pub sector: ::core::option::Option<u64>,
9976    #[prost(uint32, optional, tag="3")]
9977    pub nr_sector: ::core::option::Option<u32>,
9978    #[prost(int32, optional, tag="4")]
9979    pub errors: ::core::option::Option<i32>,
9980    #[prost(string, optional, tag="5")]
9981    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9982    #[prost(string, optional, tag="6")]
9983    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9984    #[prost(int32, optional, tag="7")]
9985    pub error: ::core::option::Option<i32>,
9986}
9987#[derive(Clone, PartialEq, ::prost::Message)]
9988pub struct BlockRqInsertFtraceEvent {
9989    #[prost(uint64, optional, tag="1")]
9990    pub dev: ::core::option::Option<u64>,
9991    #[prost(uint64, optional, tag="2")]
9992    pub sector: ::core::option::Option<u64>,
9993    #[prost(uint32, optional, tag="3")]
9994    pub nr_sector: ::core::option::Option<u32>,
9995    #[prost(uint32, optional, tag="4")]
9996    pub bytes: ::core::option::Option<u32>,
9997    #[prost(string, optional, tag="5")]
9998    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9999    #[prost(string, optional, tag="6")]
10000    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10001    #[prost(string, optional, tag="7")]
10002    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10003}
10004#[derive(Clone, PartialEq, ::prost::Message)]
10005pub struct BlockRqRemapFtraceEvent {
10006    #[prost(uint64, optional, tag="1")]
10007    pub dev: ::core::option::Option<u64>,
10008    #[prost(uint64, optional, tag="2")]
10009    pub sector: ::core::option::Option<u64>,
10010    #[prost(uint32, optional, tag="3")]
10011    pub nr_sector: ::core::option::Option<u32>,
10012    #[prost(uint64, optional, tag="4")]
10013    pub old_dev: ::core::option::Option<u64>,
10014    #[prost(uint64, optional, tag="5")]
10015    pub old_sector: ::core::option::Option<u64>,
10016    #[prost(uint32, optional, tag="6")]
10017    pub nr_bios: ::core::option::Option<u32>,
10018    #[prost(string, optional, tag="7")]
10019    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10020}
10021#[derive(Clone, PartialEq, ::prost::Message)]
10022pub struct BlockRqRequeueFtraceEvent {
10023    #[prost(uint64, optional, tag="1")]
10024    pub dev: ::core::option::Option<u64>,
10025    #[prost(uint64, optional, tag="2")]
10026    pub sector: ::core::option::Option<u64>,
10027    #[prost(uint32, optional, tag="3")]
10028    pub nr_sector: ::core::option::Option<u32>,
10029    #[prost(int32, optional, tag="4")]
10030    pub errors: ::core::option::Option<i32>,
10031    #[prost(string, optional, tag="5")]
10032    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10033    #[prost(string, optional, tag="6")]
10034    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10035}
10036#[derive(Clone, PartialEq, ::prost::Message)]
10037pub struct BlockSleeprqFtraceEvent {
10038    #[prost(uint64, optional, tag="1")]
10039    pub dev: ::core::option::Option<u64>,
10040    #[prost(uint64, optional, tag="2")]
10041    pub sector: ::core::option::Option<u64>,
10042    #[prost(uint32, optional, tag="3")]
10043    pub nr_sector: ::core::option::Option<u32>,
10044    #[prost(string, optional, tag="4")]
10045    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10046    #[prost(string, optional, tag="5")]
10047    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10048}
10049#[derive(Clone, PartialEq, ::prost::Message)]
10050pub struct BlockSplitFtraceEvent {
10051    #[prost(uint64, optional, tag="1")]
10052    pub dev: ::core::option::Option<u64>,
10053    #[prost(uint64, optional, tag="2")]
10054    pub sector: ::core::option::Option<u64>,
10055    #[prost(uint64, optional, tag="3")]
10056    pub new_sector: ::core::option::Option<u64>,
10057    #[prost(string, optional, tag="4")]
10058    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10059    #[prost(string, optional, tag="5")]
10060    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10061}
10062#[derive(Clone, PartialEq, ::prost::Message)]
10063pub struct BlockTouchBufferFtraceEvent {
10064    #[prost(uint64, optional, tag="1")]
10065    pub dev: ::core::option::Option<u64>,
10066    #[prost(uint64, optional, tag="2")]
10067    pub sector: ::core::option::Option<u64>,
10068    #[prost(uint64, optional, tag="3")]
10069    pub size: ::core::option::Option<u64>,
10070}
10071#[derive(Clone, PartialEq, ::prost::Message)]
10072pub struct BlockUnplugFtraceEvent {
10073    #[prost(int32, optional, tag="1")]
10074    pub nr_rq: ::core::option::Option<i32>,
10075    #[prost(string, optional, tag="2")]
10076    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10077}
10078#[derive(Clone, PartialEq, ::prost::Message)]
10079pub struct BlockIoStartFtraceEvent {
10080    #[prost(uint64, optional, tag="1")]
10081    pub dev: ::core::option::Option<u64>,
10082    #[prost(uint64, optional, tag="2")]
10083    pub sector: ::core::option::Option<u64>,
10084    #[prost(uint32, optional, tag="3")]
10085    pub nr_sector: ::core::option::Option<u32>,
10086    #[prost(uint32, optional, tag="4")]
10087    pub bytes: ::core::option::Option<u32>,
10088    #[prost(uint32, optional, tag="5")]
10089    pub ioprio: ::core::option::Option<u32>,
10090    #[prost(string, optional, tag="6")]
10091    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10092    #[prost(string, optional, tag="7")]
10093    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10094    #[prost(string, optional, tag="8")]
10095    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10096}
10097#[derive(Clone, PartialEq, ::prost::Message)]
10098pub struct BlockIoDoneFtraceEvent {
10099    #[prost(uint64, optional, tag="1")]
10100    pub dev: ::core::option::Option<u64>,
10101    #[prost(uint64, optional, tag="2")]
10102    pub sector: ::core::option::Option<u64>,
10103    #[prost(uint32, optional, tag="3")]
10104    pub nr_sector: ::core::option::Option<u32>,
10105    #[prost(uint32, optional, tag="4")]
10106    pub bytes: ::core::option::Option<u32>,
10107    #[prost(uint32, optional, tag="5")]
10108    pub ioprio: ::core::option::Option<u32>,
10109    #[prost(string, optional, tag="6")]
10110    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10111    #[prost(string, optional, tag="7")]
10112    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10113    #[prost(string, optional, tag="8")]
10114    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10115}
10116// End of protos/perfetto/trace/ftrace/block.proto
10117
10118// Begin of protos/perfetto/trace/ftrace/cgroup.proto
10119
10120#[derive(Clone, PartialEq, ::prost::Message)]
10121pub struct CgroupAttachTaskFtraceEvent {
10122    #[prost(int32, optional, tag="1")]
10123    pub dst_root: ::core::option::Option<i32>,
10124    #[prost(int32, optional, tag="2")]
10125    pub dst_id: ::core::option::Option<i32>,
10126    #[prost(int32, optional, tag="3")]
10127    pub pid: ::core::option::Option<i32>,
10128    #[prost(string, optional, tag="4")]
10129    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10130    #[prost(string, optional, tag="5")]
10131    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10132    #[prost(int32, optional, tag="6")]
10133    pub dst_level: ::core::option::Option<i32>,
10134    #[prost(string, optional, tag="7")]
10135    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10136}
10137#[derive(Clone, PartialEq, ::prost::Message)]
10138pub struct CgroupMkdirFtraceEvent {
10139    #[prost(int32, optional, tag="1")]
10140    pub root: ::core::option::Option<i32>,
10141    #[prost(int32, optional, tag="2")]
10142    pub id: ::core::option::Option<i32>,
10143    #[prost(string, optional, tag="3")]
10144    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10145    #[prost(int32, optional, tag="4")]
10146    pub level: ::core::option::Option<i32>,
10147    #[prost(string, optional, tag="5")]
10148    pub path: ::core::option::Option<::prost::alloc::string::String>,
10149}
10150#[derive(Clone, PartialEq, ::prost::Message)]
10151pub struct CgroupRemountFtraceEvent {
10152    #[prost(int32, optional, tag="1")]
10153    pub root: ::core::option::Option<i32>,
10154    #[prost(uint32, optional, tag="2")]
10155    pub ss_mask: ::core::option::Option<u32>,
10156    #[prost(string, optional, tag="3")]
10157    pub name: ::core::option::Option<::prost::alloc::string::String>,
10158}
10159#[derive(Clone, PartialEq, ::prost::Message)]
10160pub struct CgroupRmdirFtraceEvent {
10161    #[prost(int32, optional, tag="1")]
10162    pub root: ::core::option::Option<i32>,
10163    #[prost(int32, optional, tag="2")]
10164    pub id: ::core::option::Option<i32>,
10165    #[prost(string, optional, tag="3")]
10166    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10167    #[prost(int32, optional, tag="4")]
10168    pub level: ::core::option::Option<i32>,
10169    #[prost(string, optional, tag="5")]
10170    pub path: ::core::option::Option<::prost::alloc::string::String>,
10171}
10172#[derive(Clone, PartialEq, ::prost::Message)]
10173pub struct CgroupTransferTasksFtraceEvent {
10174    #[prost(int32, optional, tag="1")]
10175    pub dst_root: ::core::option::Option<i32>,
10176    #[prost(int32, optional, tag="2")]
10177    pub dst_id: ::core::option::Option<i32>,
10178    #[prost(int32, optional, tag="3")]
10179    pub pid: ::core::option::Option<i32>,
10180    #[prost(string, optional, tag="4")]
10181    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10182    #[prost(string, optional, tag="5")]
10183    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10184    #[prost(int32, optional, tag="6")]
10185    pub dst_level: ::core::option::Option<i32>,
10186    #[prost(string, optional, tag="7")]
10187    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10188}
10189#[derive(Clone, PartialEq, ::prost::Message)]
10190pub struct CgroupDestroyRootFtraceEvent {
10191    #[prost(int32, optional, tag="1")]
10192    pub root: ::core::option::Option<i32>,
10193    #[prost(uint32, optional, tag="2")]
10194    pub ss_mask: ::core::option::Option<u32>,
10195    #[prost(string, optional, tag="3")]
10196    pub name: ::core::option::Option<::prost::alloc::string::String>,
10197}
10198#[derive(Clone, PartialEq, ::prost::Message)]
10199pub struct CgroupReleaseFtraceEvent {
10200    #[prost(int32, optional, tag="1")]
10201    pub root: ::core::option::Option<i32>,
10202    #[prost(int32, optional, tag="2")]
10203    pub id: ::core::option::Option<i32>,
10204    #[prost(string, optional, tag="3")]
10205    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10206    #[prost(int32, optional, tag="4")]
10207    pub level: ::core::option::Option<i32>,
10208    #[prost(string, optional, tag="5")]
10209    pub path: ::core::option::Option<::prost::alloc::string::String>,
10210}
10211#[derive(Clone, PartialEq, ::prost::Message)]
10212pub struct CgroupRenameFtraceEvent {
10213    #[prost(int32, optional, tag="1")]
10214    pub root: ::core::option::Option<i32>,
10215    #[prost(int32, optional, tag="2")]
10216    pub id: ::core::option::Option<i32>,
10217    #[prost(string, optional, tag="3")]
10218    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10219    #[prost(int32, optional, tag="4")]
10220    pub level: ::core::option::Option<i32>,
10221    #[prost(string, optional, tag="5")]
10222    pub path: ::core::option::Option<::prost::alloc::string::String>,
10223}
10224#[derive(Clone, PartialEq, ::prost::Message)]
10225pub struct CgroupSetupRootFtraceEvent {
10226    #[prost(int32, optional, tag="1")]
10227    pub root: ::core::option::Option<i32>,
10228    #[prost(uint32, optional, tag="2")]
10229    pub ss_mask: ::core::option::Option<u32>,
10230    #[prost(string, optional, tag="3")]
10231    pub name: ::core::option::Option<::prost::alloc::string::String>,
10232}
10233// End of protos/perfetto/trace/ftrace/cgroup.proto
10234
10235// Begin of protos/perfetto/trace/ftrace/clk.proto
10236
10237#[derive(Clone, PartialEq, ::prost::Message)]
10238pub struct ClkEnableFtraceEvent {
10239    #[prost(string, optional, tag="1")]
10240    pub name: ::core::option::Option<::prost::alloc::string::String>,
10241}
10242#[derive(Clone, PartialEq, ::prost::Message)]
10243pub struct ClkDisableFtraceEvent {
10244    #[prost(string, optional, tag="1")]
10245    pub name: ::core::option::Option<::prost::alloc::string::String>,
10246}
10247#[derive(Clone, PartialEq, ::prost::Message)]
10248pub struct ClkSetRateFtraceEvent {
10249    #[prost(string, optional, tag="1")]
10250    pub name: ::core::option::Option<::prost::alloc::string::String>,
10251    #[prost(uint64, optional, tag="2")]
10252    pub rate: ::core::option::Option<u64>,
10253}
10254// End of protos/perfetto/trace/ftrace/clk.proto
10255
10256// Begin of protos/perfetto/trace/ftrace/cma.proto
10257
10258#[derive(Clone, PartialEq, ::prost::Message)]
10259pub struct CmaAllocStartFtraceEvent {
10260    #[prost(uint32, optional, tag="1")]
10261    pub align: ::core::option::Option<u32>,
10262    #[prost(uint32, optional, tag="2")]
10263    pub count: ::core::option::Option<u32>,
10264    #[prost(string, optional, tag="3")]
10265    pub name: ::core::option::Option<::prost::alloc::string::String>,
10266}
10267#[derive(Clone, PartialEq, ::prost::Message)]
10268pub struct CmaAllocInfoFtraceEvent {
10269    #[prost(uint32, optional, tag="1")]
10270    pub align: ::core::option::Option<u32>,
10271    #[prost(uint32, optional, tag="2")]
10272    pub count: ::core::option::Option<u32>,
10273    #[prost(uint32, optional, tag="3")]
10274    pub err_iso: ::core::option::Option<u32>,
10275    #[prost(uint32, optional, tag="4")]
10276    pub err_mig: ::core::option::Option<u32>,
10277    #[prost(uint32, optional, tag="5")]
10278    pub err_test: ::core::option::Option<u32>,
10279    #[prost(string, optional, tag="6")]
10280    pub name: ::core::option::Option<::prost::alloc::string::String>,
10281    #[prost(uint64, optional, tag="7")]
10282    pub nr_mapped: ::core::option::Option<u64>,
10283    #[prost(uint64, optional, tag="8")]
10284    pub nr_migrated: ::core::option::Option<u64>,
10285    #[prost(uint64, optional, tag="9")]
10286    pub nr_reclaimed: ::core::option::Option<u64>,
10287    #[prost(uint64, optional, tag="10")]
10288    pub pfn: ::core::option::Option<u64>,
10289}
10290#[derive(Clone, PartialEq, ::prost::Message)]
10291pub struct CmaAllocFinishFtraceEvent {
10292    #[prost(string, optional, tag="1")]
10293    pub name: ::core::option::Option<::prost::alloc::string::String>,
10294    #[prost(uint64, optional, tag="2")]
10295    pub pfn: ::core::option::Option<u64>,
10296    #[prost(uint64, optional, tag="3")]
10297    pub page: ::core::option::Option<u64>,
10298    #[prost(uint64, optional, tag="4")]
10299    pub count: ::core::option::Option<u64>,
10300    #[prost(uint32, optional, tag="5")]
10301    pub align: ::core::option::Option<u32>,
10302    #[prost(int32, optional, tag="6")]
10303    pub errorno: ::core::option::Option<i32>,
10304}
10305// End of protos/perfetto/trace/ftrace/cma.proto
10306
10307// Begin of protos/perfetto/trace/ftrace/compaction.proto
10308
10309#[derive(Clone, PartialEq, ::prost::Message)]
10310pub struct MmCompactionBeginFtraceEvent {
10311    #[prost(uint64, optional, tag="1")]
10312    pub zone_start: ::core::option::Option<u64>,
10313    #[prost(uint64, optional, tag="2")]
10314    pub migrate_pfn: ::core::option::Option<u64>,
10315    #[prost(uint64, optional, tag="3")]
10316    pub free_pfn: ::core::option::Option<u64>,
10317    #[prost(uint64, optional, tag="4")]
10318    pub zone_end: ::core::option::Option<u64>,
10319    #[prost(uint32, optional, tag="5")]
10320    pub sync: ::core::option::Option<u32>,
10321}
10322#[derive(Clone, PartialEq, ::prost::Message)]
10323pub struct MmCompactionDeferCompactionFtraceEvent {
10324    #[prost(int32, optional, tag="1")]
10325    pub nid: ::core::option::Option<i32>,
10326    #[prost(uint32, optional, tag="2")]
10327    pub idx: ::core::option::Option<u32>,
10328    #[prost(int32, optional, tag="3")]
10329    pub order: ::core::option::Option<i32>,
10330    #[prost(uint32, optional, tag="4")]
10331    pub considered: ::core::option::Option<u32>,
10332    #[prost(uint32, optional, tag="5")]
10333    pub defer_shift: ::core::option::Option<u32>,
10334    #[prost(int32, optional, tag="6")]
10335    pub order_failed: ::core::option::Option<i32>,
10336}
10337#[derive(Clone, PartialEq, ::prost::Message)]
10338pub struct MmCompactionDeferredFtraceEvent {
10339    #[prost(int32, optional, tag="1")]
10340    pub nid: ::core::option::Option<i32>,
10341    #[prost(uint32, optional, tag="2")]
10342    pub idx: ::core::option::Option<u32>,
10343    #[prost(int32, optional, tag="3")]
10344    pub order: ::core::option::Option<i32>,
10345    #[prost(uint32, optional, tag="4")]
10346    pub considered: ::core::option::Option<u32>,
10347    #[prost(uint32, optional, tag="5")]
10348    pub defer_shift: ::core::option::Option<u32>,
10349    #[prost(int32, optional, tag="6")]
10350    pub order_failed: ::core::option::Option<i32>,
10351}
10352#[derive(Clone, PartialEq, ::prost::Message)]
10353pub struct MmCompactionDeferResetFtraceEvent {
10354    #[prost(int32, optional, tag="1")]
10355    pub nid: ::core::option::Option<i32>,
10356    #[prost(uint32, optional, tag="2")]
10357    pub idx: ::core::option::Option<u32>,
10358    #[prost(int32, optional, tag="3")]
10359    pub order: ::core::option::Option<i32>,
10360    #[prost(uint32, optional, tag="4")]
10361    pub considered: ::core::option::Option<u32>,
10362    #[prost(uint32, optional, tag="5")]
10363    pub defer_shift: ::core::option::Option<u32>,
10364    #[prost(int32, optional, tag="6")]
10365    pub order_failed: ::core::option::Option<i32>,
10366}
10367#[derive(Clone, PartialEq, ::prost::Message)]
10368pub struct MmCompactionEndFtraceEvent {
10369    #[prost(uint64, optional, tag="1")]
10370    pub zone_start: ::core::option::Option<u64>,
10371    #[prost(uint64, optional, tag="2")]
10372    pub migrate_pfn: ::core::option::Option<u64>,
10373    #[prost(uint64, optional, tag="3")]
10374    pub free_pfn: ::core::option::Option<u64>,
10375    #[prost(uint64, optional, tag="4")]
10376    pub zone_end: ::core::option::Option<u64>,
10377    #[prost(uint32, optional, tag="5")]
10378    pub sync: ::core::option::Option<u32>,
10379    #[prost(int32, optional, tag="6")]
10380    pub status: ::core::option::Option<i32>,
10381}
10382#[derive(Clone, PartialEq, ::prost::Message)]
10383pub struct MmCompactionFinishedFtraceEvent {
10384    #[prost(int32, optional, tag="1")]
10385    pub nid: ::core::option::Option<i32>,
10386    #[prost(uint32, optional, tag="2")]
10387    pub idx: ::core::option::Option<u32>,
10388    #[prost(int32, optional, tag="3")]
10389    pub order: ::core::option::Option<i32>,
10390    #[prost(int32, optional, tag="4")]
10391    pub ret: ::core::option::Option<i32>,
10392}
10393#[derive(Clone, PartialEq, ::prost::Message)]
10394pub struct MmCompactionIsolateFreepagesFtraceEvent {
10395    #[prost(uint64, optional, tag="1")]
10396    pub start_pfn: ::core::option::Option<u64>,
10397    #[prost(uint64, optional, tag="2")]
10398    pub end_pfn: ::core::option::Option<u64>,
10399    #[prost(uint64, optional, tag="3")]
10400    pub nr_scanned: ::core::option::Option<u64>,
10401    #[prost(uint64, optional, tag="4")]
10402    pub nr_taken: ::core::option::Option<u64>,
10403}
10404#[derive(Clone, PartialEq, ::prost::Message)]
10405pub struct MmCompactionIsolateMigratepagesFtraceEvent {
10406    #[prost(uint64, optional, tag="1")]
10407    pub start_pfn: ::core::option::Option<u64>,
10408    #[prost(uint64, optional, tag="2")]
10409    pub end_pfn: ::core::option::Option<u64>,
10410    #[prost(uint64, optional, tag="3")]
10411    pub nr_scanned: ::core::option::Option<u64>,
10412    #[prost(uint64, optional, tag="4")]
10413    pub nr_taken: ::core::option::Option<u64>,
10414}
10415#[derive(Clone, PartialEq, ::prost::Message)]
10416pub struct MmCompactionKcompactdSleepFtraceEvent {
10417    #[prost(int32, optional, tag="1")]
10418    pub nid: ::core::option::Option<i32>,
10419}
10420#[derive(Clone, PartialEq, ::prost::Message)]
10421pub struct MmCompactionKcompactdWakeFtraceEvent {
10422    #[prost(int32, optional, tag="1")]
10423    pub nid: ::core::option::Option<i32>,
10424    #[prost(int32, optional, tag="2")]
10425    pub order: ::core::option::Option<i32>,
10426    #[prost(uint32, optional, tag="3")]
10427    pub classzone_idx: ::core::option::Option<u32>,
10428    #[prost(uint32, optional, tag="4")]
10429    pub highest_zoneidx: ::core::option::Option<u32>,
10430}
10431#[derive(Clone, PartialEq, ::prost::Message)]
10432pub struct MmCompactionMigratepagesFtraceEvent {
10433    #[prost(uint64, optional, tag="1")]
10434    pub nr_migrated: ::core::option::Option<u64>,
10435    #[prost(uint64, optional, tag="2")]
10436    pub nr_failed: ::core::option::Option<u64>,
10437}
10438#[derive(Clone, PartialEq, ::prost::Message)]
10439pub struct MmCompactionSuitableFtraceEvent {
10440    #[prost(int32, optional, tag="1")]
10441    pub nid: ::core::option::Option<i32>,
10442    #[prost(uint32, optional, tag="2")]
10443    pub idx: ::core::option::Option<u32>,
10444    #[prost(int32, optional, tag="3")]
10445    pub order: ::core::option::Option<i32>,
10446    #[prost(int32, optional, tag="4")]
10447    pub ret: ::core::option::Option<i32>,
10448}
10449#[derive(Clone, PartialEq, ::prost::Message)]
10450pub struct MmCompactionTryToCompactPagesFtraceEvent {
10451    #[prost(int32, optional, tag="1")]
10452    pub order: ::core::option::Option<i32>,
10453    #[prost(uint32, optional, tag="2")]
10454    pub gfp_mask: ::core::option::Option<u32>,
10455    #[prost(uint32, optional, tag="3")]
10456    pub mode: ::core::option::Option<u32>,
10457    #[prost(int32, optional, tag="4")]
10458    pub prio: ::core::option::Option<i32>,
10459}
10460#[derive(Clone, PartialEq, ::prost::Message)]
10461pub struct MmCompactionWakeupKcompactdFtraceEvent {
10462    #[prost(int32, optional, tag="1")]
10463    pub nid: ::core::option::Option<i32>,
10464    #[prost(int32, optional, tag="2")]
10465    pub order: ::core::option::Option<i32>,
10466    #[prost(uint32, optional, tag="3")]
10467    pub classzone_idx: ::core::option::Option<u32>,
10468    #[prost(uint32, optional, tag="4")]
10469    pub highest_zoneidx: ::core::option::Option<u32>,
10470}
10471// End of protos/perfetto/trace/ftrace/compaction.proto
10472
10473// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
10474
10475#[derive(Clone, PartialEq, ::prost::Message)]
10476pub struct ParamSetValueCpmFtraceEvent {
10477    #[prost(string, optional, tag="1")]
10478    pub body: ::core::option::Option<::prost::alloc::string::String>,
10479    #[prost(uint32, optional, tag="2")]
10480    pub value: ::core::option::Option<u32>,
10481    #[prost(int64, optional, tag="3")]
10482    pub timestamp: ::core::option::Option<i64>,
10483}
10484// End of protos/perfetto/trace/ftrace/cpm_trace.proto
10485
10486// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
10487
10488#[derive(Clone, PartialEq, ::prost::Message)]
10489pub struct CpuhpExitFtraceEvent {
10490    #[prost(uint32, optional, tag="1")]
10491    pub cpu: ::core::option::Option<u32>,
10492    #[prost(int32, optional, tag="2")]
10493    pub idx: ::core::option::Option<i32>,
10494    #[prost(int32, optional, tag="3")]
10495    pub ret: ::core::option::Option<i32>,
10496    #[prost(int32, optional, tag="4")]
10497    pub state: ::core::option::Option<i32>,
10498}
10499#[derive(Clone, PartialEq, ::prost::Message)]
10500pub struct CpuhpMultiEnterFtraceEvent {
10501    #[prost(uint32, optional, tag="1")]
10502    pub cpu: ::core::option::Option<u32>,
10503    #[prost(uint64, optional, tag="2")]
10504    pub fun: ::core::option::Option<u64>,
10505    #[prost(int32, optional, tag="3")]
10506    pub idx: ::core::option::Option<i32>,
10507    #[prost(int32, optional, tag="4")]
10508    pub target: ::core::option::Option<i32>,
10509}
10510#[derive(Clone, PartialEq, ::prost::Message)]
10511pub struct CpuhpEnterFtraceEvent {
10512    #[prost(uint32, optional, tag="1")]
10513    pub cpu: ::core::option::Option<u32>,
10514    #[prost(uint64, optional, tag="2")]
10515    pub fun: ::core::option::Option<u64>,
10516    #[prost(int32, optional, tag="3")]
10517    pub idx: ::core::option::Option<i32>,
10518    #[prost(int32, optional, tag="4")]
10519    pub target: ::core::option::Option<i32>,
10520}
10521#[derive(Clone, PartialEq, ::prost::Message)]
10522pub struct CpuhpLatencyFtraceEvent {
10523    #[prost(uint32, optional, tag="1")]
10524    pub cpu: ::core::option::Option<u32>,
10525    #[prost(int32, optional, tag="2")]
10526    pub ret: ::core::option::Option<i32>,
10527    #[prost(uint32, optional, tag="3")]
10528    pub state: ::core::option::Option<u32>,
10529    #[prost(uint64, optional, tag="4")]
10530    pub time: ::core::option::Option<u64>,
10531}
10532#[derive(Clone, PartialEq, ::prost::Message)]
10533pub struct CpuhpPauseFtraceEvent {
10534    #[prost(uint32, optional, tag="1")]
10535    pub active_cpus: ::core::option::Option<u32>,
10536    #[prost(uint32, optional, tag="2")]
10537    pub cpus: ::core::option::Option<u32>,
10538    #[prost(uint32, optional, tag="3")]
10539    pub pause: ::core::option::Option<u32>,
10540    #[prost(uint32, optional, tag="4")]
10541    pub time: ::core::option::Option<u32>,
10542}
10543// End of protos/perfetto/trace/ftrace/cpuhp.proto
10544
10545// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
10546
10547#[derive(Clone, PartialEq, ::prost::Message)]
10548pub struct CrosEcSensorhubDataFtraceEvent {
10549    #[prost(int64, optional, tag="1")]
10550    pub current_time: ::core::option::Option<i64>,
10551    #[prost(int64, optional, tag="2")]
10552    pub current_timestamp: ::core::option::Option<i64>,
10553    #[prost(int64, optional, tag="3")]
10554    pub delta: ::core::option::Option<i64>,
10555    #[prost(uint32, optional, tag="4")]
10556    pub ec_fifo_timestamp: ::core::option::Option<u32>,
10557    #[prost(uint32, optional, tag="5")]
10558    pub ec_sensor_num: ::core::option::Option<u32>,
10559    #[prost(int64, optional, tag="6")]
10560    pub fifo_timestamp: ::core::option::Option<i64>,
10561}
10562// End of protos/perfetto/trace/ftrace/cros_ec.proto
10563
10564// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
10565
10566#[derive(Clone, PartialEq, ::prost::Message)]
10567pub struct DcvshFreqFtraceEvent {
10568    #[prost(uint64, optional, tag="1")]
10569    pub cpu: ::core::option::Option<u64>,
10570    #[prost(uint64, optional, tag="2")]
10571    pub freq: ::core::option::Option<u64>,
10572}
10573// End of protos/perfetto/trace/ftrace/dcvsh.proto
10574
10575// Begin of protos/perfetto/trace/ftrace/devfreq.proto
10576
10577#[derive(Clone, PartialEq, ::prost::Message)]
10578pub struct DevfreqFrequencyFtraceEvent {
10579    #[prost(string, optional, tag="1")]
10580    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
10581    #[prost(uint64, optional, tag="2")]
10582    pub freq: ::core::option::Option<u64>,
10583    #[prost(uint64, optional, tag="3")]
10584    pub prev_freq: ::core::option::Option<u64>,
10585    #[prost(uint64, optional, tag="4")]
10586    pub busy_time: ::core::option::Option<u64>,
10587    #[prost(uint64, optional, tag="5")]
10588    pub total_time: ::core::option::Option<u64>,
10589}
10590// End of protos/perfetto/trace/ftrace/devfreq.proto
10591
10592// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
10593
10594#[derive(Clone, PartialEq, ::prost::Message)]
10595pub struct DmaFenceInitFtraceEvent {
10596    #[prost(uint32, optional, tag="1")]
10597    pub context: ::core::option::Option<u32>,
10598    #[prost(string, optional, tag="2")]
10599    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10600    #[prost(uint32, optional, tag="3")]
10601    pub seqno: ::core::option::Option<u32>,
10602    #[prost(string, optional, tag="4")]
10603    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10604}
10605#[derive(Clone, PartialEq, ::prost::Message)]
10606pub struct DmaFenceEmitFtraceEvent {
10607    #[prost(uint32, optional, tag="1")]
10608    pub context: ::core::option::Option<u32>,
10609    #[prost(string, optional, tag="2")]
10610    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10611    #[prost(uint32, optional, tag="3")]
10612    pub seqno: ::core::option::Option<u32>,
10613    #[prost(string, optional, tag="4")]
10614    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10615}
10616#[derive(Clone, PartialEq, ::prost::Message)]
10617pub struct DmaFenceSignaledFtraceEvent {
10618    #[prost(uint32, optional, tag="1")]
10619    pub context: ::core::option::Option<u32>,
10620    #[prost(string, optional, tag="2")]
10621    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10622    #[prost(uint32, optional, tag="3")]
10623    pub seqno: ::core::option::Option<u32>,
10624    #[prost(string, optional, tag="4")]
10625    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10626}
10627#[derive(Clone, PartialEq, ::prost::Message)]
10628pub struct DmaFenceWaitStartFtraceEvent {
10629    #[prost(uint32, optional, tag="1")]
10630    pub context: ::core::option::Option<u32>,
10631    #[prost(string, optional, tag="2")]
10632    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10633    #[prost(uint32, optional, tag="3")]
10634    pub seqno: ::core::option::Option<u32>,
10635    #[prost(string, optional, tag="4")]
10636    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10637}
10638#[derive(Clone, PartialEq, ::prost::Message)]
10639pub struct DmaFenceWaitEndFtraceEvent {
10640    #[prost(uint32, optional, tag="1")]
10641    pub context: ::core::option::Option<u32>,
10642    #[prost(string, optional, tag="2")]
10643    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10644    #[prost(uint32, optional, tag="3")]
10645    pub seqno: ::core::option::Option<u32>,
10646    #[prost(string, optional, tag="4")]
10647    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10648}
10649// End of protos/perfetto/trace/ftrace/dma_fence.proto
10650
10651// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10652
10653#[derive(Clone, PartialEq, ::prost::Message)]
10654pub struct DmaHeapStatFtraceEvent {
10655    #[prost(uint64, optional, tag="1")]
10656    pub inode: ::core::option::Option<u64>,
10657    #[prost(int64, optional, tag="2")]
10658    pub len: ::core::option::Option<i64>,
10659    #[prost(uint64, optional, tag="3")]
10660    pub total_allocated: ::core::option::Option<u64>,
10661}
10662// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10663
10664// Begin of protos/perfetto/trace/ftrace/dpu.proto
10665
10666#[derive(Clone, PartialEq, ::prost::Message)]
10667pub struct DpuTracingMarkWriteFtraceEvent {
10668    #[prost(int32, optional, tag="1")]
10669    pub pid: ::core::option::Option<i32>,
10670    #[prost(string, optional, tag="2")]
10671    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10672    #[prost(uint32, optional, tag="3")]
10673    pub trace_begin: ::core::option::Option<u32>,
10674    #[prost(string, optional, tag="4")]
10675    pub name: ::core::option::Option<::prost::alloc::string::String>,
10676    #[prost(uint32, optional, tag="5")]
10677    pub r#type: ::core::option::Option<u32>,
10678    #[prost(int32, optional, tag="6")]
10679    pub value: ::core::option::Option<i32>,
10680}
10681#[derive(Clone, PartialEq, ::prost::Message)]
10682pub struct DpuDsiCmdFifoStatusFtraceEvent {
10683    #[prost(uint32, optional, tag="1")]
10684    pub header: ::core::option::Option<u32>,
10685    #[prost(uint32, optional, tag="2")]
10686    pub payload: ::core::option::Option<u32>,
10687}
10688#[derive(Clone, PartialEq, ::prost::Message)]
10689pub struct DpuDsiRxFtraceEvent {
10690    #[prost(uint32, optional, tag="1")]
10691    pub cmd: ::core::option::Option<u32>,
10692    #[prost(bytes="vec", optional, tag="3")]
10693    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10694}
10695#[derive(Clone, PartialEq, ::prost::Message)]
10696pub struct DpuDsiTxFtraceEvent {
10697    #[prost(uint32, optional, tag="1")]
10698    pub r#type: ::core::option::Option<u32>,
10699    #[prost(uint32, optional, tag="3")]
10700    pub last: ::core::option::Option<u32>,
10701    #[prost(uint32, optional, tag="4")]
10702    pub delay_ms: ::core::option::Option<u32>,
10703    #[prost(bytes="vec", optional, tag="5")]
10704    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10705}
10706#[derive(Clone, PartialEq, ::prost::Message)]
10707pub struct DpuDispDpuUnderrunFtraceEvent {
10708    #[prost(int32, optional, tag="1")]
10709    pub id: ::core::option::Option<i32>,
10710    #[prost(int32, optional, tag="2")]
10711    pub frames_pending: ::core::option::Option<i32>,
10712    #[prost(int32, optional, tag="3")]
10713    pub vsync_count: ::core::option::Option<i32>,
10714}
10715#[derive(Clone, PartialEq, ::prost::Message)]
10716pub struct DpuDispVblankIrqEnableFtraceEvent {
10717    #[prost(int32, optional, tag="1")]
10718    pub id: ::core::option::Option<i32>,
10719    #[prost(int32, optional, tag="2")]
10720    pub output_id: ::core::option::Option<i32>,
10721    #[prost(int32, optional, tag="3")]
10722    pub enable: ::core::option::Option<i32>,
10723}
10724// End of protos/perfetto/trace/ftrace/dpu.proto
10725
10726// Begin of protos/perfetto/trace/ftrace/drm.proto
10727
10728#[derive(Clone, PartialEq, ::prost::Message)]
10729pub struct DrmVblankEventFtraceEvent {
10730    #[prost(int32, optional, tag="1")]
10731    pub crtc: ::core::option::Option<i32>,
10732    #[prost(uint32, optional, tag="2")]
10733    pub high_prec: ::core::option::Option<u32>,
10734    #[prost(uint32, optional, tag="3")]
10735    pub seq: ::core::option::Option<u32>,
10736    #[prost(int64, optional, tag="4")]
10737    pub time: ::core::option::Option<i64>,
10738}
10739#[derive(Clone, PartialEq, ::prost::Message)]
10740pub struct DrmVblankEventDeliveredFtraceEvent {
10741    #[prost(int32, optional, tag="1")]
10742    pub crtc: ::core::option::Option<i32>,
10743    #[prost(uint64, optional, tag="2")]
10744    pub file: ::core::option::Option<u64>,
10745    #[prost(uint32, optional, tag="3")]
10746    pub seq: ::core::option::Option<u32>,
10747}
10748// End of protos/perfetto/trace/ftrace/drm.proto
10749
10750// Begin of protos/perfetto/trace/ftrace/dwc3.proto
10751
10752#[derive(Clone, PartialEq, ::prost::Message)]
10753pub struct Dwc3AllocRequestFtraceEvent {
10754    #[prost(string, optional, tag="1")]
10755    pub name: ::core::option::Option<::prost::alloc::string::String>,
10756    #[prost(uint64, optional, tag="2")]
10757    pub req: ::core::option::Option<u64>,
10758    #[prost(uint32, optional, tag="3")]
10759    pub actual: ::core::option::Option<u32>,
10760    #[prost(uint32, optional, tag="4")]
10761    pub length: ::core::option::Option<u32>,
10762    #[prost(int32, optional, tag="5")]
10763    pub status: ::core::option::Option<i32>,
10764    #[prost(int32, optional, tag="6")]
10765    pub zero: ::core::option::Option<i32>,
10766    #[prost(int32, optional, tag="7")]
10767    pub short_not_ok: ::core::option::Option<i32>,
10768    #[prost(int32, optional, tag="8")]
10769    pub no_interrupt: ::core::option::Option<i32>,
10770}
10771#[derive(Clone, PartialEq, ::prost::Message)]
10772pub struct Dwc3CompleteTrbFtraceEvent {
10773    #[prost(string, optional, tag="1")]
10774    pub name: ::core::option::Option<::prost::alloc::string::String>,
10775    #[prost(uint64, optional, tag="2")]
10776    pub trb: ::core::option::Option<u64>,
10777    #[prost(uint32, optional, tag="3")]
10778    pub allocated: ::core::option::Option<u32>,
10779    #[prost(uint32, optional, tag="4")]
10780    pub queued: ::core::option::Option<u32>,
10781    #[prost(uint32, optional, tag="5")]
10782    pub bpl: ::core::option::Option<u32>,
10783    #[prost(uint32, optional, tag="6")]
10784    pub bph: ::core::option::Option<u32>,
10785    #[prost(uint32, optional, tag="7")]
10786    pub size: ::core::option::Option<u32>,
10787    #[prost(uint32, optional, tag="8")]
10788    pub ctrl: ::core::option::Option<u32>,
10789    #[prost(uint32, optional, tag="9")]
10790    pub r#type: ::core::option::Option<u32>,
10791    #[prost(uint32, optional, tag="10")]
10792    pub enqueue: ::core::option::Option<u32>,
10793    #[prost(uint32, optional, tag="11")]
10794    pub dequeue: ::core::option::Option<u32>,
10795}
10796#[derive(Clone, PartialEq, ::prost::Message)]
10797pub struct Dwc3CtrlReqFtraceEvent {
10798    #[prost(uint32, optional, tag="1")]
10799    pub b_request_type: ::core::option::Option<u32>,
10800    #[prost(uint32, optional, tag="2")]
10801    pub b_request: ::core::option::Option<u32>,
10802    #[prost(uint32, optional, tag="3")]
10803    pub w_value: ::core::option::Option<u32>,
10804    #[prost(uint32, optional, tag="4")]
10805    pub w_index: ::core::option::Option<u32>,
10806    #[prost(uint32, optional, tag="5")]
10807    pub w_length: ::core::option::Option<u32>,
10808    #[prost(string, optional, tag="6")]
10809    pub str: ::core::option::Option<::prost::alloc::string::String>,
10810}
10811#[derive(Clone, PartialEq, ::prost::Message)]
10812pub struct Dwc3EpDequeueFtraceEvent {
10813    #[prost(string, optional, tag="1")]
10814    pub name: ::core::option::Option<::prost::alloc::string::String>,
10815    #[prost(uint64, optional, tag="2")]
10816    pub req: ::core::option::Option<u64>,
10817    #[prost(uint32, optional, tag="3")]
10818    pub actual: ::core::option::Option<u32>,
10819    #[prost(uint32, optional, tag="4")]
10820    pub length: ::core::option::Option<u32>,
10821    #[prost(int32, optional, tag="5")]
10822    pub status: ::core::option::Option<i32>,
10823    #[prost(int32, optional, tag="6")]
10824    pub zero: ::core::option::Option<i32>,
10825    #[prost(int32, optional, tag="7")]
10826    pub short_not_ok: ::core::option::Option<i32>,
10827    #[prost(int32, optional, tag="8")]
10828    pub no_interrupt: ::core::option::Option<i32>,
10829}
10830#[derive(Clone, PartialEq, ::prost::Message)]
10831pub struct Dwc3EpQueueFtraceEvent {
10832    #[prost(string, optional, tag="1")]
10833    pub name: ::core::option::Option<::prost::alloc::string::String>,
10834    #[prost(uint64, optional, tag="2")]
10835    pub req: ::core::option::Option<u64>,
10836    #[prost(uint32, optional, tag="3")]
10837    pub actual: ::core::option::Option<u32>,
10838    #[prost(uint32, optional, tag="4")]
10839    pub length: ::core::option::Option<u32>,
10840    #[prost(int32, optional, tag="5")]
10841    pub status: ::core::option::Option<i32>,
10842    #[prost(int32, optional, tag="6")]
10843    pub zero: ::core::option::Option<i32>,
10844    #[prost(int32, optional, tag="7")]
10845    pub short_not_ok: ::core::option::Option<i32>,
10846    #[prost(int32, optional, tag="8")]
10847    pub no_interrupt: ::core::option::Option<i32>,
10848}
10849#[derive(Clone, PartialEq, ::prost::Message)]
10850pub struct Dwc3EventFtraceEvent {
10851    #[prost(uint32, optional, tag="1")]
10852    pub event: ::core::option::Option<u32>,
10853    #[prost(uint32, optional, tag="2")]
10854    pub ep0state: ::core::option::Option<u32>,
10855    #[prost(string, optional, tag="3")]
10856    pub str: ::core::option::Option<::prost::alloc::string::String>,
10857}
10858#[derive(Clone, PartialEq, ::prost::Message)]
10859pub struct Dwc3FreeRequestFtraceEvent {
10860    #[prost(string, optional, tag="1")]
10861    pub name: ::core::option::Option<::prost::alloc::string::String>,
10862    #[prost(uint64, optional, tag="2")]
10863    pub req: ::core::option::Option<u64>,
10864    #[prost(uint32, optional, tag="3")]
10865    pub actual: ::core::option::Option<u32>,
10866    #[prost(uint32, optional, tag="4")]
10867    pub length: ::core::option::Option<u32>,
10868    #[prost(int32, optional, tag="5")]
10869    pub status: ::core::option::Option<i32>,
10870    #[prost(int32, optional, tag="6")]
10871    pub zero: ::core::option::Option<i32>,
10872    #[prost(int32, optional, tag="7")]
10873    pub short_not_ok: ::core::option::Option<i32>,
10874    #[prost(int32, optional, tag="8")]
10875    pub no_interrupt: ::core::option::Option<i32>,
10876}
10877#[derive(Clone, PartialEq, ::prost::Message)]
10878pub struct Dwc3GadgetEpCmdFtraceEvent {
10879    #[prost(string, optional, tag="1")]
10880    pub name: ::core::option::Option<::prost::alloc::string::String>,
10881    #[prost(uint32, optional, tag="2")]
10882    pub cmd: ::core::option::Option<u32>,
10883    #[prost(uint32, optional, tag="3")]
10884    pub param0: ::core::option::Option<u32>,
10885    #[prost(uint32, optional, tag="4")]
10886    pub param1: ::core::option::Option<u32>,
10887    #[prost(uint32, optional, tag="5")]
10888    pub param2: ::core::option::Option<u32>,
10889    #[prost(int32, optional, tag="6")]
10890    pub cmd_status: ::core::option::Option<i32>,
10891}
10892#[derive(Clone, PartialEq, ::prost::Message)]
10893pub struct Dwc3GadgetEpDisableFtraceEvent {
10894    #[prost(string, optional, tag="1")]
10895    pub name: ::core::option::Option<::prost::alloc::string::String>,
10896    #[prost(uint32, optional, tag="2")]
10897    pub maxpacket: ::core::option::Option<u32>,
10898    #[prost(uint32, optional, tag="3")]
10899    pub maxpacket_limit: ::core::option::Option<u32>,
10900    #[prost(uint32, optional, tag="4")]
10901    pub max_streams: ::core::option::Option<u32>,
10902    #[prost(uint32, optional, tag="5")]
10903    pub maxburst: ::core::option::Option<u32>,
10904    #[prost(uint32, optional, tag="6")]
10905    pub flags: ::core::option::Option<u32>,
10906    #[prost(uint32, optional, tag="7")]
10907    pub direction: ::core::option::Option<u32>,
10908    #[prost(uint32, optional, tag="8")]
10909    pub trb_enqueue: ::core::option::Option<u32>,
10910    #[prost(uint32, optional, tag="9")]
10911    pub trb_dequeue: ::core::option::Option<u32>,
10912}
10913#[derive(Clone, PartialEq, ::prost::Message)]
10914pub struct Dwc3GadgetEpEnableFtraceEvent {
10915    #[prost(string, optional, tag="1")]
10916    pub name: ::core::option::Option<::prost::alloc::string::String>,
10917    #[prost(uint32, optional, tag="2")]
10918    pub maxpacket: ::core::option::Option<u32>,
10919    #[prost(uint32, optional, tag="3")]
10920    pub maxpacket_limit: ::core::option::Option<u32>,
10921    #[prost(uint32, optional, tag="4")]
10922    pub max_streams: ::core::option::Option<u32>,
10923    #[prost(uint32, optional, tag="5")]
10924    pub maxburst: ::core::option::Option<u32>,
10925    #[prost(uint32, optional, tag="6")]
10926    pub flags: ::core::option::Option<u32>,
10927    #[prost(uint32, optional, tag="7")]
10928    pub direction: ::core::option::Option<u32>,
10929    #[prost(uint32, optional, tag="8")]
10930    pub trb_enqueue: ::core::option::Option<u32>,
10931    #[prost(uint32, optional, tag="9")]
10932    pub trb_dequeue: ::core::option::Option<u32>,
10933}
10934#[derive(Clone, PartialEq, ::prost::Message)]
10935pub struct Dwc3GadgetGenericCmdFtraceEvent {
10936    #[prost(uint32, optional, tag="1")]
10937    pub cmd: ::core::option::Option<u32>,
10938    #[prost(uint32, optional, tag="2")]
10939    pub param: ::core::option::Option<u32>,
10940    #[prost(int32, optional, tag="3")]
10941    pub status: ::core::option::Option<i32>,
10942}
10943#[derive(Clone, PartialEq, ::prost::Message)]
10944pub struct Dwc3GadgetGivebackFtraceEvent {
10945    #[prost(string, optional, tag="1")]
10946    pub name: ::core::option::Option<::prost::alloc::string::String>,
10947    #[prost(uint64, optional, tag="2")]
10948    pub req: ::core::option::Option<u64>,
10949    #[prost(uint32, optional, tag="3")]
10950    pub actual: ::core::option::Option<u32>,
10951    #[prost(uint32, optional, tag="4")]
10952    pub length: ::core::option::Option<u32>,
10953    #[prost(int32, optional, tag="5")]
10954    pub status: ::core::option::Option<i32>,
10955    #[prost(int32, optional, tag="6")]
10956    pub zero: ::core::option::Option<i32>,
10957    #[prost(int32, optional, tag="7")]
10958    pub short_not_ok: ::core::option::Option<i32>,
10959    #[prost(int32, optional, tag="8")]
10960    pub no_interrupt: ::core::option::Option<i32>,
10961}
10962#[derive(Clone, PartialEq, ::prost::Message)]
10963pub struct Dwc3PrepareTrbFtraceEvent {
10964    #[prost(string, optional, tag="1")]
10965    pub name: ::core::option::Option<::prost::alloc::string::String>,
10966    #[prost(uint64, optional, tag="2")]
10967    pub trb: ::core::option::Option<u64>,
10968    #[prost(uint32, optional, tag="3")]
10969    pub allocated: ::core::option::Option<u32>,
10970    #[prost(uint32, optional, tag="4")]
10971    pub queued: ::core::option::Option<u32>,
10972    #[prost(uint32, optional, tag="5")]
10973    pub bpl: ::core::option::Option<u32>,
10974    #[prost(uint32, optional, tag="6")]
10975    pub bph: ::core::option::Option<u32>,
10976    #[prost(uint32, optional, tag="7")]
10977    pub size: ::core::option::Option<u32>,
10978    #[prost(uint32, optional, tag="8")]
10979    pub ctrl: ::core::option::Option<u32>,
10980    #[prost(uint32, optional, tag="9")]
10981    pub r#type: ::core::option::Option<u32>,
10982    #[prost(uint32, optional, tag="10")]
10983    pub enqueue: ::core::option::Option<u32>,
10984    #[prost(uint32, optional, tag="11")]
10985    pub dequeue: ::core::option::Option<u32>,
10986}
10987#[derive(Clone, PartialEq, ::prost::Message)]
10988pub struct Dwc3ReadlFtraceEvent {
10989    #[prost(uint64, optional, tag="1")]
10990    pub base: ::core::option::Option<u64>,
10991    #[prost(uint32, optional, tag="2")]
10992    pub offset: ::core::option::Option<u32>,
10993    #[prost(uint32, optional, tag="3")]
10994    pub value: ::core::option::Option<u32>,
10995    #[prost(string, optional, tag="4")]
10996    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10997}
10998#[derive(Clone, PartialEq, ::prost::Message)]
10999pub struct Dwc3WritelFtraceEvent {
11000    #[prost(uint64, optional, tag="1")]
11001    pub base: ::core::option::Option<u64>,
11002    #[prost(uint32, optional, tag="2")]
11003    pub offset: ::core::option::Option<u32>,
11004    #[prost(uint32, optional, tag="3")]
11005    pub value: ::core::option::Option<u32>,
11006    #[prost(string, optional, tag="4")]
11007    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11008}
11009// End of protos/perfetto/trace/ftrace/dwc3.proto
11010
11011// Begin of protos/perfetto/trace/ftrace/ext4.proto
11012
11013#[derive(Clone, PartialEq, ::prost::Message)]
11014pub struct Ext4DaWriteBeginFtraceEvent {
11015    #[prost(uint64, optional, tag="1")]
11016    pub dev: ::core::option::Option<u64>,
11017    #[prost(uint64, optional, tag="2")]
11018    pub ino: ::core::option::Option<u64>,
11019    #[prost(int64, optional, tag="3")]
11020    pub pos: ::core::option::Option<i64>,
11021    #[prost(uint32, optional, tag="4")]
11022    pub len: ::core::option::Option<u32>,
11023    #[prost(uint32, optional, tag="5")]
11024    pub flags: ::core::option::Option<u32>,
11025}
11026#[derive(Clone, PartialEq, ::prost::Message)]
11027pub struct Ext4DaWriteEndFtraceEvent {
11028    #[prost(uint64, optional, tag="1")]
11029    pub dev: ::core::option::Option<u64>,
11030    #[prost(uint64, optional, tag="2")]
11031    pub ino: ::core::option::Option<u64>,
11032    #[prost(int64, optional, tag="3")]
11033    pub pos: ::core::option::Option<i64>,
11034    #[prost(uint32, optional, tag="4")]
11035    pub len: ::core::option::Option<u32>,
11036    #[prost(uint32, optional, tag="5")]
11037    pub copied: ::core::option::Option<u32>,
11038}
11039#[derive(Clone, PartialEq, ::prost::Message)]
11040pub struct Ext4SyncFileEnterFtraceEvent {
11041    #[prost(uint64, optional, tag="1")]
11042    pub dev: ::core::option::Option<u64>,
11043    #[prost(uint64, optional, tag="2")]
11044    pub ino: ::core::option::Option<u64>,
11045    #[prost(uint64, optional, tag="3")]
11046    pub parent: ::core::option::Option<u64>,
11047    #[prost(int32, optional, tag="4")]
11048    pub datasync: ::core::option::Option<i32>,
11049}
11050#[derive(Clone, PartialEq, ::prost::Message)]
11051pub struct Ext4SyncFileExitFtraceEvent {
11052    #[prost(uint64, optional, tag="1")]
11053    pub dev: ::core::option::Option<u64>,
11054    #[prost(uint64, optional, tag="2")]
11055    pub ino: ::core::option::Option<u64>,
11056    #[prost(int32, optional, tag="3")]
11057    pub ret: ::core::option::Option<i32>,
11058}
11059#[derive(Clone, PartialEq, ::prost::Message)]
11060pub struct Ext4AllocDaBlocksFtraceEvent {
11061    #[prost(uint64, optional, tag="1")]
11062    pub dev: ::core::option::Option<u64>,
11063    #[prost(uint64, optional, tag="2")]
11064    pub ino: ::core::option::Option<u64>,
11065    #[prost(uint32, optional, tag="3")]
11066    pub data_blocks: ::core::option::Option<u32>,
11067    #[prost(uint32, optional, tag="4")]
11068    pub meta_blocks: ::core::option::Option<u32>,
11069}
11070#[derive(Clone, PartialEq, ::prost::Message)]
11071pub struct Ext4AllocateBlocksFtraceEvent {
11072    #[prost(uint64, optional, tag="1")]
11073    pub dev: ::core::option::Option<u64>,
11074    #[prost(uint64, optional, tag="2")]
11075    pub ino: ::core::option::Option<u64>,
11076    #[prost(uint64, optional, tag="3")]
11077    pub block: ::core::option::Option<u64>,
11078    #[prost(uint32, optional, tag="4")]
11079    pub len: ::core::option::Option<u32>,
11080    #[prost(uint32, optional, tag="5")]
11081    pub logical: ::core::option::Option<u32>,
11082    #[prost(uint32, optional, tag="6")]
11083    pub lleft: ::core::option::Option<u32>,
11084    #[prost(uint32, optional, tag="7")]
11085    pub lright: ::core::option::Option<u32>,
11086    #[prost(uint64, optional, tag="8")]
11087    pub goal: ::core::option::Option<u64>,
11088    #[prost(uint64, optional, tag="9")]
11089    pub pleft: ::core::option::Option<u64>,
11090    #[prost(uint64, optional, tag="10")]
11091    pub pright: ::core::option::Option<u64>,
11092    #[prost(uint32, optional, tag="11")]
11093    pub flags: ::core::option::Option<u32>,
11094}
11095#[derive(Clone, PartialEq, ::prost::Message)]
11096pub struct Ext4AllocateInodeFtraceEvent {
11097    #[prost(uint64, optional, tag="1")]
11098    pub dev: ::core::option::Option<u64>,
11099    #[prost(uint64, optional, tag="2")]
11100    pub ino: ::core::option::Option<u64>,
11101    #[prost(uint64, optional, tag="3")]
11102    pub dir: ::core::option::Option<u64>,
11103    #[prost(uint32, optional, tag="4")]
11104    pub mode: ::core::option::Option<u32>,
11105}
11106#[derive(Clone, PartialEq, ::prost::Message)]
11107pub struct Ext4BeginOrderedTruncateFtraceEvent {
11108    #[prost(uint64, optional, tag="1")]
11109    pub dev: ::core::option::Option<u64>,
11110    #[prost(uint64, optional, tag="2")]
11111    pub ino: ::core::option::Option<u64>,
11112    #[prost(int64, optional, tag="3")]
11113    pub new_size: ::core::option::Option<i64>,
11114}
11115#[derive(Clone, PartialEq, ::prost::Message)]
11116pub struct Ext4CollapseRangeFtraceEvent {
11117    #[prost(uint64, optional, tag="1")]
11118    pub dev: ::core::option::Option<u64>,
11119    #[prost(uint64, optional, tag="2")]
11120    pub ino: ::core::option::Option<u64>,
11121    #[prost(int64, optional, tag="3")]
11122    pub offset: ::core::option::Option<i64>,
11123    #[prost(int64, optional, tag="4")]
11124    pub len: ::core::option::Option<i64>,
11125}
11126#[derive(Clone, PartialEq, ::prost::Message)]
11127pub struct Ext4DaReleaseSpaceFtraceEvent {
11128    #[prost(uint64, optional, tag="1")]
11129    pub dev: ::core::option::Option<u64>,
11130    #[prost(uint64, optional, tag="2")]
11131    pub ino: ::core::option::Option<u64>,
11132    #[prost(uint64, optional, tag="3")]
11133    pub i_blocks: ::core::option::Option<u64>,
11134    #[prost(int32, optional, tag="4")]
11135    pub freed_blocks: ::core::option::Option<i32>,
11136    #[prost(int32, optional, tag="5")]
11137    pub reserved_data_blocks: ::core::option::Option<i32>,
11138    #[prost(int32, optional, tag="6")]
11139    pub reserved_meta_blocks: ::core::option::Option<i32>,
11140    #[prost(int32, optional, tag="7")]
11141    pub allocated_meta_blocks: ::core::option::Option<i32>,
11142    #[prost(uint32, optional, tag="8")]
11143    pub mode: ::core::option::Option<u32>,
11144}
11145#[derive(Clone, PartialEq, ::prost::Message)]
11146pub struct Ext4DaReserveSpaceFtraceEvent {
11147    #[prost(uint64, optional, tag="1")]
11148    pub dev: ::core::option::Option<u64>,
11149    #[prost(uint64, optional, tag="2")]
11150    pub ino: ::core::option::Option<u64>,
11151    #[prost(uint64, optional, tag="3")]
11152    pub i_blocks: ::core::option::Option<u64>,
11153    #[prost(int32, optional, tag="4")]
11154    pub reserved_data_blocks: ::core::option::Option<i32>,
11155    #[prost(int32, optional, tag="5")]
11156    pub reserved_meta_blocks: ::core::option::Option<i32>,
11157    #[prost(uint32, optional, tag="6")]
11158    pub mode: ::core::option::Option<u32>,
11159    #[prost(int32, optional, tag="7")]
11160    pub md_needed: ::core::option::Option<i32>,
11161}
11162#[derive(Clone, PartialEq, ::prost::Message)]
11163pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
11164    #[prost(uint64, optional, tag="1")]
11165    pub dev: ::core::option::Option<u64>,
11166    #[prost(uint64, optional, tag="2")]
11167    pub ino: ::core::option::Option<u64>,
11168    #[prost(uint64, optional, tag="3")]
11169    pub i_blocks: ::core::option::Option<u64>,
11170    #[prost(int32, optional, tag="4")]
11171    pub used_blocks: ::core::option::Option<i32>,
11172    #[prost(int32, optional, tag="5")]
11173    pub reserved_data_blocks: ::core::option::Option<i32>,
11174    #[prost(int32, optional, tag="6")]
11175    pub reserved_meta_blocks: ::core::option::Option<i32>,
11176    #[prost(int32, optional, tag="7")]
11177    pub allocated_meta_blocks: ::core::option::Option<i32>,
11178    #[prost(int32, optional, tag="8")]
11179    pub quota_claim: ::core::option::Option<i32>,
11180    #[prost(uint32, optional, tag="9")]
11181    pub mode: ::core::option::Option<u32>,
11182}
11183#[derive(Clone, PartialEq, ::prost::Message)]
11184pub struct Ext4DaWritePagesFtraceEvent {
11185    #[prost(uint64, optional, tag="1")]
11186    pub dev: ::core::option::Option<u64>,
11187    #[prost(uint64, optional, tag="2")]
11188    pub ino: ::core::option::Option<u64>,
11189    #[prost(uint64, optional, tag="3")]
11190    pub first_page: ::core::option::Option<u64>,
11191    #[prost(int64, optional, tag="4")]
11192    pub nr_to_write: ::core::option::Option<i64>,
11193    #[prost(int32, optional, tag="5")]
11194    pub sync_mode: ::core::option::Option<i32>,
11195    #[prost(uint64, optional, tag="6")]
11196    pub b_blocknr: ::core::option::Option<u64>,
11197    #[prost(uint32, optional, tag="7")]
11198    pub b_size: ::core::option::Option<u32>,
11199    #[prost(uint32, optional, tag="8")]
11200    pub b_state: ::core::option::Option<u32>,
11201    #[prost(int32, optional, tag="9")]
11202    pub io_done: ::core::option::Option<i32>,
11203    #[prost(int32, optional, tag="10")]
11204    pub pages_written: ::core::option::Option<i32>,
11205}
11206#[derive(Clone, PartialEq, ::prost::Message)]
11207pub struct Ext4DaWritePagesExtentFtraceEvent {
11208    #[prost(uint64, optional, tag="1")]
11209    pub dev: ::core::option::Option<u64>,
11210    #[prost(uint64, optional, tag="2")]
11211    pub ino: ::core::option::Option<u64>,
11212    #[prost(uint64, optional, tag="3")]
11213    pub lblk: ::core::option::Option<u64>,
11214    #[prost(uint32, optional, tag="4")]
11215    pub len: ::core::option::Option<u32>,
11216    #[prost(uint32, optional, tag="5")]
11217    pub flags: ::core::option::Option<u32>,
11218}
11219#[derive(Clone, PartialEq, ::prost::Message)]
11220pub struct Ext4DirectIoEnterFtraceEvent {
11221    #[prost(uint64, optional, tag="1")]
11222    pub dev: ::core::option::Option<u64>,
11223    #[prost(uint64, optional, tag="2")]
11224    pub ino: ::core::option::Option<u64>,
11225    #[prost(int64, optional, tag="3")]
11226    pub pos: ::core::option::Option<i64>,
11227    #[prost(uint64, optional, tag="4")]
11228    pub len: ::core::option::Option<u64>,
11229    #[prost(int32, optional, tag="5")]
11230    pub rw: ::core::option::Option<i32>,
11231}
11232#[derive(Clone, PartialEq, ::prost::Message)]
11233pub struct Ext4DirectIoExitFtraceEvent {
11234    #[prost(uint64, optional, tag="1")]
11235    pub dev: ::core::option::Option<u64>,
11236    #[prost(uint64, optional, tag="2")]
11237    pub ino: ::core::option::Option<u64>,
11238    #[prost(int64, optional, tag="3")]
11239    pub pos: ::core::option::Option<i64>,
11240    #[prost(uint64, optional, tag="4")]
11241    pub len: ::core::option::Option<u64>,
11242    #[prost(int32, optional, tag="5")]
11243    pub rw: ::core::option::Option<i32>,
11244    #[prost(int32, optional, tag="6")]
11245    pub ret: ::core::option::Option<i32>,
11246}
11247#[derive(Clone, PartialEq, ::prost::Message)]
11248pub struct Ext4DiscardBlocksFtraceEvent {
11249    #[prost(uint64, optional, tag="1")]
11250    pub dev: ::core::option::Option<u64>,
11251    #[prost(uint64, optional, tag="2")]
11252    pub blk: ::core::option::Option<u64>,
11253    #[prost(uint64, optional, tag="3")]
11254    pub count: ::core::option::Option<u64>,
11255}
11256#[derive(Clone, PartialEq, ::prost::Message)]
11257pub struct Ext4DiscardPreallocationsFtraceEvent {
11258    #[prost(uint64, optional, tag="1")]
11259    pub dev: ::core::option::Option<u64>,
11260    #[prost(uint64, optional, tag="2")]
11261    pub ino: ::core::option::Option<u64>,
11262    #[prost(uint32, optional, tag="3")]
11263    pub len: ::core::option::Option<u32>,
11264    #[prost(uint32, optional, tag="4")]
11265    pub needed: ::core::option::Option<u32>,
11266}
11267#[derive(Clone, PartialEq, ::prost::Message)]
11268pub struct Ext4DropInodeFtraceEvent {
11269    #[prost(uint64, optional, tag="1")]
11270    pub dev: ::core::option::Option<u64>,
11271    #[prost(uint64, optional, tag="2")]
11272    pub ino: ::core::option::Option<u64>,
11273    #[prost(int32, optional, tag="3")]
11274    pub drop: ::core::option::Option<i32>,
11275}
11276#[derive(Clone, PartialEq, ::prost::Message)]
11277pub struct Ext4EsCacheExtentFtraceEvent {
11278    #[prost(uint64, optional, tag="1")]
11279    pub dev: ::core::option::Option<u64>,
11280    #[prost(uint64, optional, tag="2")]
11281    pub ino: ::core::option::Option<u64>,
11282    #[prost(uint32, optional, tag="3")]
11283    pub lblk: ::core::option::Option<u32>,
11284    #[prost(uint32, optional, tag="4")]
11285    pub len: ::core::option::Option<u32>,
11286    #[prost(uint64, optional, tag="5")]
11287    pub pblk: ::core::option::Option<u64>,
11288    #[prost(uint32, optional, tag="6")]
11289    pub status: ::core::option::Option<u32>,
11290}
11291#[derive(Clone, PartialEq, ::prost::Message)]
11292pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
11293    #[prost(uint64, optional, tag="1")]
11294    pub dev: ::core::option::Option<u64>,
11295    #[prost(uint64, optional, tag="2")]
11296    pub ino: ::core::option::Option<u64>,
11297    #[prost(uint32, optional, tag="3")]
11298    pub lblk: ::core::option::Option<u32>,
11299}
11300#[derive(Clone, PartialEq, ::prost::Message)]
11301pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
11302    #[prost(uint64, optional, tag="1")]
11303    pub dev: ::core::option::Option<u64>,
11304    #[prost(uint64, optional, tag="2")]
11305    pub ino: ::core::option::Option<u64>,
11306    #[prost(uint32, optional, tag="3")]
11307    pub lblk: ::core::option::Option<u32>,
11308    #[prost(uint32, optional, tag="4")]
11309    pub len: ::core::option::Option<u32>,
11310    #[prost(uint64, optional, tag="5")]
11311    pub pblk: ::core::option::Option<u64>,
11312    #[prost(uint64, optional, tag="6")]
11313    pub status: ::core::option::Option<u64>,
11314}
11315#[derive(Clone, PartialEq, ::prost::Message)]
11316pub struct Ext4EsInsertExtentFtraceEvent {
11317    #[prost(uint64, optional, tag="1")]
11318    pub dev: ::core::option::Option<u64>,
11319    #[prost(uint64, optional, tag="2")]
11320    pub ino: ::core::option::Option<u64>,
11321    #[prost(uint32, optional, tag="3")]
11322    pub lblk: ::core::option::Option<u32>,
11323    #[prost(uint32, optional, tag="4")]
11324    pub len: ::core::option::Option<u32>,
11325    #[prost(uint64, optional, tag="5")]
11326    pub pblk: ::core::option::Option<u64>,
11327    #[prost(uint64, optional, tag="6")]
11328    pub status: ::core::option::Option<u64>,
11329}
11330#[derive(Clone, PartialEq, ::prost::Message)]
11331pub struct Ext4EsLookupExtentEnterFtraceEvent {
11332    #[prost(uint64, optional, tag="1")]
11333    pub dev: ::core::option::Option<u64>,
11334    #[prost(uint64, optional, tag="2")]
11335    pub ino: ::core::option::Option<u64>,
11336    #[prost(uint32, optional, tag="3")]
11337    pub lblk: ::core::option::Option<u32>,
11338}
11339#[derive(Clone, PartialEq, ::prost::Message)]
11340pub struct Ext4EsLookupExtentExitFtraceEvent {
11341    #[prost(uint64, optional, tag="1")]
11342    pub dev: ::core::option::Option<u64>,
11343    #[prost(uint64, optional, tag="2")]
11344    pub ino: ::core::option::Option<u64>,
11345    #[prost(uint32, optional, tag="3")]
11346    pub lblk: ::core::option::Option<u32>,
11347    #[prost(uint32, optional, tag="4")]
11348    pub len: ::core::option::Option<u32>,
11349    #[prost(uint64, optional, tag="5")]
11350    pub pblk: ::core::option::Option<u64>,
11351    #[prost(uint64, optional, tag="6")]
11352    pub status: ::core::option::Option<u64>,
11353    #[prost(int32, optional, tag="7")]
11354    pub found: ::core::option::Option<i32>,
11355}
11356#[derive(Clone, PartialEq, ::prost::Message)]
11357pub struct Ext4EsRemoveExtentFtraceEvent {
11358    #[prost(uint64, optional, tag="1")]
11359    pub dev: ::core::option::Option<u64>,
11360    #[prost(uint64, optional, tag="2")]
11361    pub ino: ::core::option::Option<u64>,
11362    #[prost(int64, optional, tag="3")]
11363    pub lblk: ::core::option::Option<i64>,
11364    #[prost(int64, optional, tag="4")]
11365    pub len: ::core::option::Option<i64>,
11366}
11367#[derive(Clone, PartialEq, ::prost::Message)]
11368pub struct Ext4EsShrinkFtraceEvent {
11369    #[prost(uint64, optional, tag="1")]
11370    pub dev: ::core::option::Option<u64>,
11371    #[prost(int32, optional, tag="2")]
11372    pub nr_shrunk: ::core::option::Option<i32>,
11373    #[prost(uint64, optional, tag="3")]
11374    pub scan_time: ::core::option::Option<u64>,
11375    #[prost(int32, optional, tag="4")]
11376    pub nr_skipped: ::core::option::Option<i32>,
11377    #[prost(int32, optional, tag="5")]
11378    pub retried: ::core::option::Option<i32>,
11379}
11380#[derive(Clone, PartialEq, ::prost::Message)]
11381pub struct Ext4EsShrinkCountFtraceEvent {
11382    #[prost(uint64, optional, tag="1")]
11383    pub dev: ::core::option::Option<u64>,
11384    #[prost(int32, optional, tag="2")]
11385    pub nr_to_scan: ::core::option::Option<i32>,
11386    #[prost(int32, optional, tag="3")]
11387    pub cache_cnt: ::core::option::Option<i32>,
11388}
11389#[derive(Clone, PartialEq, ::prost::Message)]
11390pub struct Ext4EsShrinkScanEnterFtraceEvent {
11391    #[prost(uint64, optional, tag="1")]
11392    pub dev: ::core::option::Option<u64>,
11393    #[prost(int32, optional, tag="2")]
11394    pub nr_to_scan: ::core::option::Option<i32>,
11395    #[prost(int32, optional, tag="3")]
11396    pub cache_cnt: ::core::option::Option<i32>,
11397}
11398#[derive(Clone, PartialEq, ::prost::Message)]
11399pub struct Ext4EsShrinkScanExitFtraceEvent {
11400    #[prost(uint64, optional, tag="1")]
11401    pub dev: ::core::option::Option<u64>,
11402    #[prost(int32, optional, tag="2")]
11403    pub nr_shrunk: ::core::option::Option<i32>,
11404    #[prost(int32, optional, tag="3")]
11405    pub cache_cnt: ::core::option::Option<i32>,
11406}
11407#[derive(Clone, PartialEq, ::prost::Message)]
11408pub struct Ext4EvictInodeFtraceEvent {
11409    #[prost(uint64, optional, tag="1")]
11410    pub dev: ::core::option::Option<u64>,
11411    #[prost(uint64, optional, tag="2")]
11412    pub ino: ::core::option::Option<u64>,
11413    #[prost(int32, optional, tag="3")]
11414    pub nlink: ::core::option::Option<i32>,
11415}
11416#[derive(Clone, PartialEq, ::prost::Message)]
11417pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
11418    #[prost(uint64, optional, tag="1")]
11419    pub dev: ::core::option::Option<u64>,
11420    #[prost(uint64, optional, tag="2")]
11421    pub ino: ::core::option::Option<u64>,
11422    #[prost(uint32, optional, tag="3")]
11423    pub m_lblk: ::core::option::Option<u32>,
11424    #[prost(uint32, optional, tag="4")]
11425    pub m_len: ::core::option::Option<u32>,
11426    #[prost(uint32, optional, tag="5")]
11427    pub u_lblk: ::core::option::Option<u32>,
11428    #[prost(uint32, optional, tag="6")]
11429    pub u_len: ::core::option::Option<u32>,
11430    #[prost(uint64, optional, tag="7")]
11431    pub u_pblk: ::core::option::Option<u64>,
11432}
11433#[derive(Clone, PartialEq, ::prost::Message)]
11434pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
11435    #[prost(uint64, optional, tag="1")]
11436    pub dev: ::core::option::Option<u64>,
11437    #[prost(uint64, optional, tag="2")]
11438    pub ino: ::core::option::Option<u64>,
11439    #[prost(uint32, optional, tag="3")]
11440    pub m_lblk: ::core::option::Option<u32>,
11441    #[prost(uint32, optional, tag="4")]
11442    pub m_len: ::core::option::Option<u32>,
11443    #[prost(uint32, optional, tag="5")]
11444    pub u_lblk: ::core::option::Option<u32>,
11445    #[prost(uint32, optional, tag="6")]
11446    pub u_len: ::core::option::Option<u32>,
11447    #[prost(uint64, optional, tag="7")]
11448    pub u_pblk: ::core::option::Option<u64>,
11449    #[prost(uint32, optional, tag="8")]
11450    pub i_lblk: ::core::option::Option<u32>,
11451    #[prost(uint32, optional, tag="9")]
11452    pub i_len: ::core::option::Option<u32>,
11453    #[prost(uint64, optional, tag="10")]
11454    pub i_pblk: ::core::option::Option<u64>,
11455}
11456#[derive(Clone, PartialEq, ::prost::Message)]
11457pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
11458    #[prost(uint64, optional, tag="1")]
11459    pub dev: ::core::option::Option<u64>,
11460    #[prost(uint64, optional, tag="2")]
11461    pub ino: ::core::option::Option<u64>,
11462    #[prost(int32, optional, tag="3")]
11463    pub flags: ::core::option::Option<i32>,
11464    #[prost(uint32, optional, tag="4")]
11465    pub lblk: ::core::option::Option<u32>,
11466    #[prost(uint64, optional, tag="5")]
11467    pub pblk: ::core::option::Option<u64>,
11468    #[prost(uint32, optional, tag="6")]
11469    pub len: ::core::option::Option<u32>,
11470    #[prost(uint32, optional, tag="7")]
11471    pub allocated: ::core::option::Option<u32>,
11472    #[prost(uint64, optional, tag="8")]
11473    pub newblk: ::core::option::Option<u64>,
11474}
11475#[derive(Clone, PartialEq, ::prost::Message)]
11476pub struct Ext4ExtInCacheFtraceEvent {
11477    #[prost(uint64, optional, tag="1")]
11478    pub dev: ::core::option::Option<u64>,
11479    #[prost(uint64, optional, tag="2")]
11480    pub ino: ::core::option::Option<u64>,
11481    #[prost(uint32, optional, tag="3")]
11482    pub lblk: ::core::option::Option<u32>,
11483    #[prost(int32, optional, tag="4")]
11484    pub ret: ::core::option::Option<i32>,
11485}
11486#[derive(Clone, PartialEq, ::prost::Message)]
11487pub struct Ext4ExtLoadExtentFtraceEvent {
11488    #[prost(uint64, optional, tag="1")]
11489    pub dev: ::core::option::Option<u64>,
11490    #[prost(uint64, optional, tag="2")]
11491    pub ino: ::core::option::Option<u64>,
11492    #[prost(uint64, optional, tag="3")]
11493    pub pblk: ::core::option::Option<u64>,
11494    #[prost(uint32, optional, tag="4")]
11495    pub lblk: ::core::option::Option<u32>,
11496}
11497#[derive(Clone, PartialEq, ::prost::Message)]
11498pub struct Ext4ExtMapBlocksEnterFtraceEvent {
11499    #[prost(uint64, optional, tag="1")]
11500    pub dev: ::core::option::Option<u64>,
11501    #[prost(uint64, optional, tag="2")]
11502    pub ino: ::core::option::Option<u64>,
11503    #[prost(uint32, optional, tag="3")]
11504    pub lblk: ::core::option::Option<u32>,
11505    #[prost(uint32, optional, tag="4")]
11506    pub len: ::core::option::Option<u32>,
11507    #[prost(uint32, optional, tag="5")]
11508    pub flags: ::core::option::Option<u32>,
11509}
11510#[derive(Clone, PartialEq, ::prost::Message)]
11511pub struct Ext4ExtMapBlocksExitFtraceEvent {
11512    #[prost(uint64, optional, tag="1")]
11513    pub dev: ::core::option::Option<u64>,
11514    #[prost(uint64, optional, tag="2")]
11515    pub ino: ::core::option::Option<u64>,
11516    #[prost(uint32, optional, tag="3")]
11517    pub flags: ::core::option::Option<u32>,
11518    #[prost(uint64, optional, tag="4")]
11519    pub pblk: ::core::option::Option<u64>,
11520    #[prost(uint32, optional, tag="5")]
11521    pub lblk: ::core::option::Option<u32>,
11522    #[prost(uint32, optional, tag="6")]
11523    pub len: ::core::option::Option<u32>,
11524    #[prost(uint32, optional, tag="7")]
11525    pub mflags: ::core::option::Option<u32>,
11526    #[prost(int32, optional, tag="8")]
11527    pub ret: ::core::option::Option<i32>,
11528}
11529#[derive(Clone, PartialEq, ::prost::Message)]
11530pub struct Ext4ExtPutInCacheFtraceEvent {
11531    #[prost(uint64, optional, tag="1")]
11532    pub dev: ::core::option::Option<u64>,
11533    #[prost(uint64, optional, tag="2")]
11534    pub ino: ::core::option::Option<u64>,
11535    #[prost(uint32, optional, tag="3")]
11536    pub lblk: ::core::option::Option<u32>,
11537    #[prost(uint32, optional, tag="4")]
11538    pub len: ::core::option::Option<u32>,
11539    #[prost(uint64, optional, tag="5")]
11540    pub start: ::core::option::Option<u64>,
11541}
11542#[derive(Clone, PartialEq, ::prost::Message)]
11543pub struct Ext4ExtRemoveSpaceFtraceEvent {
11544    #[prost(uint64, optional, tag="1")]
11545    pub dev: ::core::option::Option<u64>,
11546    #[prost(uint64, optional, tag="2")]
11547    pub ino: ::core::option::Option<u64>,
11548    #[prost(uint32, optional, tag="3")]
11549    pub start: ::core::option::Option<u32>,
11550    #[prost(uint32, optional, tag="4")]
11551    pub end: ::core::option::Option<u32>,
11552    #[prost(int32, optional, tag="5")]
11553    pub depth: ::core::option::Option<i32>,
11554}
11555#[derive(Clone, PartialEq, ::prost::Message)]
11556pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
11557    #[prost(uint64, optional, tag="1")]
11558    pub dev: ::core::option::Option<u64>,
11559    #[prost(uint64, optional, tag="2")]
11560    pub ino: ::core::option::Option<u64>,
11561    #[prost(uint32, optional, tag="3")]
11562    pub start: ::core::option::Option<u32>,
11563    #[prost(uint32, optional, tag="4")]
11564    pub end: ::core::option::Option<u32>,
11565    #[prost(int32, optional, tag="5")]
11566    pub depth: ::core::option::Option<i32>,
11567    #[prost(int64, optional, tag="6")]
11568    pub partial: ::core::option::Option<i64>,
11569    #[prost(uint32, optional, tag="7")]
11570    pub eh_entries: ::core::option::Option<u32>,
11571    #[prost(uint32, optional, tag="8")]
11572    pub pc_lblk: ::core::option::Option<u32>,
11573    #[prost(uint64, optional, tag="9")]
11574    pub pc_pclu: ::core::option::Option<u64>,
11575    #[prost(int32, optional, tag="10")]
11576    pub pc_state: ::core::option::Option<i32>,
11577}
11578#[derive(Clone, PartialEq, ::prost::Message)]
11579pub struct Ext4ExtRmIdxFtraceEvent {
11580    #[prost(uint64, optional, tag="1")]
11581    pub dev: ::core::option::Option<u64>,
11582    #[prost(uint64, optional, tag="2")]
11583    pub ino: ::core::option::Option<u64>,
11584    #[prost(uint64, optional, tag="3")]
11585    pub pblk: ::core::option::Option<u64>,
11586}
11587#[derive(Clone, PartialEq, ::prost::Message)]
11588pub struct Ext4ExtRmLeafFtraceEvent {
11589    #[prost(uint64, optional, tag="1")]
11590    pub dev: ::core::option::Option<u64>,
11591    #[prost(uint64, optional, tag="2")]
11592    pub ino: ::core::option::Option<u64>,
11593    #[prost(int64, optional, tag="3")]
11594    pub partial: ::core::option::Option<i64>,
11595    #[prost(uint32, optional, tag="4")]
11596    pub start: ::core::option::Option<u32>,
11597    #[prost(uint32, optional, tag="5")]
11598    pub ee_lblk: ::core::option::Option<u32>,
11599    #[prost(uint64, optional, tag="6")]
11600    pub ee_pblk: ::core::option::Option<u64>,
11601    #[prost(int32, optional, tag="7")]
11602    pub ee_len: ::core::option::Option<i32>,
11603    #[prost(uint32, optional, tag="8")]
11604    pub pc_lblk: ::core::option::Option<u32>,
11605    #[prost(uint64, optional, tag="9")]
11606    pub pc_pclu: ::core::option::Option<u64>,
11607    #[prost(int32, optional, tag="10")]
11608    pub pc_state: ::core::option::Option<i32>,
11609}
11610#[derive(Clone, PartialEq, ::prost::Message)]
11611pub struct Ext4ExtShowExtentFtraceEvent {
11612    #[prost(uint64, optional, tag="1")]
11613    pub dev: ::core::option::Option<u64>,
11614    #[prost(uint64, optional, tag="2")]
11615    pub ino: ::core::option::Option<u64>,
11616    #[prost(uint64, optional, tag="3")]
11617    pub pblk: ::core::option::Option<u64>,
11618    #[prost(uint32, optional, tag="4")]
11619    pub lblk: ::core::option::Option<u32>,
11620    #[prost(uint32, optional, tag="5")]
11621    pub len: ::core::option::Option<u32>,
11622}
11623#[derive(Clone, PartialEq, ::prost::Message)]
11624pub struct Ext4FallocateEnterFtraceEvent {
11625    #[prost(uint64, optional, tag="1")]
11626    pub dev: ::core::option::Option<u64>,
11627    #[prost(uint64, optional, tag="2")]
11628    pub ino: ::core::option::Option<u64>,
11629    #[prost(int64, optional, tag="3")]
11630    pub offset: ::core::option::Option<i64>,
11631    #[prost(int64, optional, tag="4")]
11632    pub len: ::core::option::Option<i64>,
11633    #[prost(int32, optional, tag="5")]
11634    pub mode: ::core::option::Option<i32>,
11635    #[prost(int64, optional, tag="6")]
11636    pub pos: ::core::option::Option<i64>,
11637}
11638#[derive(Clone, PartialEq, ::prost::Message)]
11639pub struct Ext4FallocateExitFtraceEvent {
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(int64, optional, tag="3")]
11645    pub pos: ::core::option::Option<i64>,
11646    #[prost(uint32, optional, tag="4")]
11647    pub blocks: ::core::option::Option<u32>,
11648    #[prost(int32, optional, tag="5")]
11649    pub ret: ::core::option::Option<i32>,
11650}
11651#[derive(Clone, PartialEq, ::prost::Message)]
11652pub struct Ext4FindDelallocRangeFtraceEvent {
11653    #[prost(uint64, optional, tag="1")]
11654    pub dev: ::core::option::Option<u64>,
11655    #[prost(uint64, optional, tag="2")]
11656    pub ino: ::core::option::Option<u64>,
11657    #[prost(uint32, optional, tag="3")]
11658    pub from: ::core::option::Option<u32>,
11659    #[prost(uint32, optional, tag="4")]
11660    pub to: ::core::option::Option<u32>,
11661    #[prost(int32, optional, tag="5")]
11662    pub reverse: ::core::option::Option<i32>,
11663    #[prost(int32, optional, tag="6")]
11664    pub found: ::core::option::Option<i32>,
11665    #[prost(uint32, optional, tag="7")]
11666    pub found_blk: ::core::option::Option<u32>,
11667}
11668#[derive(Clone, PartialEq, ::prost::Message)]
11669pub struct Ext4ForgetFtraceEvent {
11670    #[prost(uint64, optional, tag="1")]
11671    pub dev: ::core::option::Option<u64>,
11672    #[prost(uint64, optional, tag="2")]
11673    pub ino: ::core::option::Option<u64>,
11674    #[prost(uint64, optional, tag="3")]
11675    pub block: ::core::option::Option<u64>,
11676    #[prost(int32, optional, tag="4")]
11677    pub is_metadata: ::core::option::Option<i32>,
11678    #[prost(uint32, optional, tag="5")]
11679    pub mode: ::core::option::Option<u32>,
11680}
11681#[derive(Clone, PartialEq, ::prost::Message)]
11682pub struct Ext4FreeBlocksFtraceEvent {
11683    #[prost(uint64, optional, tag="1")]
11684    pub dev: ::core::option::Option<u64>,
11685    #[prost(uint64, optional, tag="2")]
11686    pub ino: ::core::option::Option<u64>,
11687    #[prost(uint64, optional, tag="3")]
11688    pub block: ::core::option::Option<u64>,
11689    #[prost(uint64, optional, tag="4")]
11690    pub count: ::core::option::Option<u64>,
11691    #[prost(int32, optional, tag="5")]
11692    pub flags: ::core::option::Option<i32>,
11693    #[prost(uint32, optional, tag="6")]
11694    pub mode: ::core::option::Option<u32>,
11695}
11696#[derive(Clone, PartialEq, ::prost::Message)]
11697pub struct Ext4FreeInodeFtraceEvent {
11698    #[prost(uint64, optional, tag="1")]
11699    pub dev: ::core::option::Option<u64>,
11700    #[prost(uint64, optional, tag="2")]
11701    pub ino: ::core::option::Option<u64>,
11702    #[prost(uint32, optional, tag="3")]
11703    pub uid: ::core::option::Option<u32>,
11704    #[prost(uint32, optional, tag="4")]
11705    pub gid: ::core::option::Option<u32>,
11706    #[prost(uint64, optional, tag="5")]
11707    pub blocks: ::core::option::Option<u64>,
11708    #[prost(uint32, optional, tag="6")]
11709    pub mode: ::core::option::Option<u32>,
11710}
11711#[derive(Clone, PartialEq, ::prost::Message)]
11712pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11713    #[prost(uint64, optional, tag="1")]
11714    pub dev: ::core::option::Option<u64>,
11715    #[prost(uint32, optional, tag="2")]
11716    pub flags: ::core::option::Option<u32>,
11717    #[prost(uint32, optional, tag="3")]
11718    pub lblk: ::core::option::Option<u32>,
11719    #[prost(uint64, optional, tag="4")]
11720    pub pblk: ::core::option::Option<u64>,
11721    #[prost(uint32, optional, tag="5")]
11722    pub len: ::core::option::Option<u32>,
11723    #[prost(int32, optional, tag="6")]
11724    pub ret: ::core::option::Option<i32>,
11725}
11726#[derive(Clone, PartialEq, ::prost::Message)]
11727pub struct Ext4GetReservedClusterAllocFtraceEvent {
11728    #[prost(uint64, optional, tag="1")]
11729    pub dev: ::core::option::Option<u64>,
11730    #[prost(uint64, optional, tag="2")]
11731    pub ino: ::core::option::Option<u64>,
11732    #[prost(uint32, optional, tag="3")]
11733    pub lblk: ::core::option::Option<u32>,
11734    #[prost(uint32, optional, tag="4")]
11735    pub len: ::core::option::Option<u32>,
11736}
11737#[derive(Clone, PartialEq, ::prost::Message)]
11738pub struct Ext4IndMapBlocksEnterFtraceEvent {
11739    #[prost(uint64, optional, tag="1")]
11740    pub dev: ::core::option::Option<u64>,
11741    #[prost(uint64, optional, tag="2")]
11742    pub ino: ::core::option::Option<u64>,
11743    #[prost(uint32, optional, tag="3")]
11744    pub lblk: ::core::option::Option<u32>,
11745    #[prost(uint32, optional, tag="4")]
11746    pub len: ::core::option::Option<u32>,
11747    #[prost(uint32, optional, tag="5")]
11748    pub flags: ::core::option::Option<u32>,
11749}
11750#[derive(Clone, PartialEq, ::prost::Message)]
11751pub struct Ext4IndMapBlocksExitFtraceEvent {
11752    #[prost(uint64, optional, tag="1")]
11753    pub dev: ::core::option::Option<u64>,
11754    #[prost(uint64, optional, tag="2")]
11755    pub ino: ::core::option::Option<u64>,
11756    #[prost(uint32, optional, tag="3")]
11757    pub flags: ::core::option::Option<u32>,
11758    #[prost(uint64, optional, tag="4")]
11759    pub pblk: ::core::option::Option<u64>,
11760    #[prost(uint32, optional, tag="5")]
11761    pub lblk: ::core::option::Option<u32>,
11762    #[prost(uint32, optional, tag="6")]
11763    pub len: ::core::option::Option<u32>,
11764    #[prost(uint32, optional, tag="7")]
11765    pub mflags: ::core::option::Option<u32>,
11766    #[prost(int32, optional, tag="8")]
11767    pub ret: ::core::option::Option<i32>,
11768}
11769#[derive(Clone, PartialEq, ::prost::Message)]
11770pub struct Ext4InsertRangeFtraceEvent {
11771    #[prost(uint64, optional, tag="1")]
11772    pub dev: ::core::option::Option<u64>,
11773    #[prost(uint64, optional, tag="2")]
11774    pub ino: ::core::option::Option<u64>,
11775    #[prost(int64, optional, tag="3")]
11776    pub offset: ::core::option::Option<i64>,
11777    #[prost(int64, optional, tag="4")]
11778    pub len: ::core::option::Option<i64>,
11779}
11780#[derive(Clone, PartialEq, ::prost::Message)]
11781pub struct Ext4InvalidatepageFtraceEvent {
11782    #[prost(uint64, optional, tag="1")]
11783    pub dev: ::core::option::Option<u64>,
11784    #[prost(uint64, optional, tag="2")]
11785    pub ino: ::core::option::Option<u64>,
11786    #[prost(uint64, optional, tag="3")]
11787    pub index: ::core::option::Option<u64>,
11788    #[prost(uint64, optional, tag="4")]
11789    pub offset: ::core::option::Option<u64>,
11790    #[prost(uint32, optional, tag="5")]
11791    pub length: ::core::option::Option<u32>,
11792}
11793#[derive(Clone, PartialEq, ::prost::Message)]
11794pub struct Ext4JournalStartFtraceEvent {
11795    #[prost(uint64, optional, tag="1")]
11796    pub dev: ::core::option::Option<u64>,
11797    #[prost(uint64, optional, tag="2")]
11798    pub ip: ::core::option::Option<u64>,
11799    #[prost(int32, optional, tag="3")]
11800    pub blocks: ::core::option::Option<i32>,
11801    #[prost(int32, optional, tag="4")]
11802    pub rsv_blocks: ::core::option::Option<i32>,
11803    #[prost(int32, optional, tag="5")]
11804    pub nblocks: ::core::option::Option<i32>,
11805    #[prost(int32, optional, tag="6")]
11806    pub revoke_creds: ::core::option::Option<i32>,
11807}
11808#[derive(Clone, PartialEq, ::prost::Message)]
11809pub struct Ext4JournalStartReservedFtraceEvent {
11810    #[prost(uint64, optional, tag="1")]
11811    pub dev: ::core::option::Option<u64>,
11812    #[prost(uint64, optional, tag="2")]
11813    pub ip: ::core::option::Option<u64>,
11814    #[prost(int32, optional, tag="3")]
11815    pub blocks: ::core::option::Option<i32>,
11816}
11817#[derive(Clone, PartialEq, ::prost::Message)]
11818pub struct Ext4JournalledInvalidatepageFtraceEvent {
11819    #[prost(uint64, optional, tag="1")]
11820    pub dev: ::core::option::Option<u64>,
11821    #[prost(uint64, optional, tag="2")]
11822    pub ino: ::core::option::Option<u64>,
11823    #[prost(uint64, optional, tag="3")]
11824    pub index: ::core::option::Option<u64>,
11825    #[prost(uint64, optional, tag="4")]
11826    pub offset: ::core::option::Option<u64>,
11827    #[prost(uint32, optional, tag="5")]
11828    pub length: ::core::option::Option<u32>,
11829}
11830#[derive(Clone, PartialEq, ::prost::Message)]
11831pub struct Ext4JournalledWriteEndFtraceEvent {
11832    #[prost(uint64, optional, tag="1")]
11833    pub dev: ::core::option::Option<u64>,
11834    #[prost(uint64, optional, tag="2")]
11835    pub ino: ::core::option::Option<u64>,
11836    #[prost(int64, optional, tag="3")]
11837    pub pos: ::core::option::Option<i64>,
11838    #[prost(uint32, optional, tag="4")]
11839    pub len: ::core::option::Option<u32>,
11840    #[prost(uint32, optional, tag="5")]
11841    pub copied: ::core::option::Option<u32>,
11842}
11843#[derive(Clone, PartialEq, ::prost::Message)]
11844pub struct Ext4LoadInodeFtraceEvent {
11845    #[prost(uint64, optional, tag="1")]
11846    pub dev: ::core::option::Option<u64>,
11847    #[prost(uint64, optional, tag="2")]
11848    pub ino: ::core::option::Option<u64>,
11849}
11850#[derive(Clone, PartialEq, ::prost::Message)]
11851pub struct Ext4LoadInodeBitmapFtraceEvent {
11852    #[prost(uint64, optional, tag="1")]
11853    pub dev: ::core::option::Option<u64>,
11854    #[prost(uint32, optional, tag="2")]
11855    pub group: ::core::option::Option<u32>,
11856}
11857#[derive(Clone, PartialEq, ::prost::Message)]
11858pub struct Ext4MarkInodeDirtyFtraceEvent {
11859    #[prost(uint64, optional, tag="1")]
11860    pub dev: ::core::option::Option<u64>,
11861    #[prost(uint64, optional, tag="2")]
11862    pub ino: ::core::option::Option<u64>,
11863    #[prost(uint64, optional, tag="3")]
11864    pub ip: ::core::option::Option<u64>,
11865}
11866#[derive(Clone, PartialEq, ::prost::Message)]
11867pub struct Ext4MbBitmapLoadFtraceEvent {
11868    #[prost(uint64, optional, tag="1")]
11869    pub dev: ::core::option::Option<u64>,
11870    #[prost(uint32, optional, tag="2")]
11871    pub group: ::core::option::Option<u32>,
11872}
11873#[derive(Clone, PartialEq, ::prost::Message)]
11874pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11875    #[prost(uint64, optional, tag="1")]
11876    pub dev: ::core::option::Option<u64>,
11877    #[prost(uint32, optional, tag="2")]
11878    pub group: ::core::option::Option<u32>,
11879}
11880#[derive(Clone, PartialEq, ::prost::Message)]
11881pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11882    #[prost(uint64, optional, tag="1")]
11883    pub dev: ::core::option::Option<u64>,
11884    #[prost(int32, optional, tag="2")]
11885    pub needed: ::core::option::Option<i32>,
11886}
11887#[derive(Clone, PartialEq, ::prost::Message)]
11888pub struct Ext4MbNewGroupPaFtraceEvent {
11889    #[prost(uint64, optional, tag="1")]
11890    pub dev: ::core::option::Option<u64>,
11891    #[prost(uint64, optional, tag="2")]
11892    pub ino: ::core::option::Option<u64>,
11893    #[prost(uint64, optional, tag="3")]
11894    pub pa_pstart: ::core::option::Option<u64>,
11895    #[prost(uint64, optional, tag="4")]
11896    pub pa_lstart: ::core::option::Option<u64>,
11897    #[prost(uint32, optional, tag="5")]
11898    pub pa_len: ::core::option::Option<u32>,
11899}
11900#[derive(Clone, PartialEq, ::prost::Message)]
11901pub struct Ext4MbNewInodePaFtraceEvent {
11902    #[prost(uint64, optional, tag="1")]
11903    pub dev: ::core::option::Option<u64>,
11904    #[prost(uint64, optional, tag="2")]
11905    pub ino: ::core::option::Option<u64>,
11906    #[prost(uint64, optional, tag="3")]
11907    pub pa_pstart: ::core::option::Option<u64>,
11908    #[prost(uint64, optional, tag="4")]
11909    pub pa_lstart: ::core::option::Option<u64>,
11910    #[prost(uint32, optional, tag="5")]
11911    pub pa_len: ::core::option::Option<u32>,
11912}
11913#[derive(Clone, PartialEq, ::prost::Message)]
11914pub struct Ext4MbReleaseGroupPaFtraceEvent {
11915    #[prost(uint64, optional, tag="1")]
11916    pub dev: ::core::option::Option<u64>,
11917    #[prost(uint64, optional, tag="2")]
11918    pub pa_pstart: ::core::option::Option<u64>,
11919    #[prost(uint32, optional, tag="3")]
11920    pub pa_len: ::core::option::Option<u32>,
11921}
11922#[derive(Clone, PartialEq, ::prost::Message)]
11923pub struct Ext4MbReleaseInodePaFtraceEvent {
11924    #[prost(uint64, optional, tag="1")]
11925    pub dev: ::core::option::Option<u64>,
11926    #[prost(uint64, optional, tag="2")]
11927    pub ino: ::core::option::Option<u64>,
11928    #[prost(uint64, optional, tag="3")]
11929    pub block: ::core::option::Option<u64>,
11930    #[prost(uint32, optional, tag="4")]
11931    pub count: ::core::option::Option<u32>,
11932}
11933#[derive(Clone, PartialEq, ::prost::Message)]
11934pub struct Ext4MballocAllocFtraceEvent {
11935    #[prost(uint64, optional, tag="1")]
11936    pub dev: ::core::option::Option<u64>,
11937    #[prost(uint64, optional, tag="2")]
11938    pub ino: ::core::option::Option<u64>,
11939    #[prost(uint32, optional, tag="3")]
11940    pub orig_logical: ::core::option::Option<u32>,
11941    #[prost(int32, optional, tag="4")]
11942    pub orig_start: ::core::option::Option<i32>,
11943    #[prost(uint32, optional, tag="5")]
11944    pub orig_group: ::core::option::Option<u32>,
11945    #[prost(int32, optional, tag="6")]
11946    pub orig_len: ::core::option::Option<i32>,
11947    #[prost(uint32, optional, tag="7")]
11948    pub goal_logical: ::core::option::Option<u32>,
11949    #[prost(int32, optional, tag="8")]
11950    pub goal_start: ::core::option::Option<i32>,
11951    #[prost(uint32, optional, tag="9")]
11952    pub goal_group: ::core::option::Option<u32>,
11953    #[prost(int32, optional, tag="10")]
11954    pub goal_len: ::core::option::Option<i32>,
11955    #[prost(uint32, optional, tag="11")]
11956    pub result_logical: ::core::option::Option<u32>,
11957    #[prost(int32, optional, tag="12")]
11958    pub result_start: ::core::option::Option<i32>,
11959    #[prost(uint32, optional, tag="13")]
11960    pub result_group: ::core::option::Option<u32>,
11961    #[prost(int32, optional, tag="14")]
11962    pub result_len: ::core::option::Option<i32>,
11963    #[prost(uint32, optional, tag="15")]
11964    pub found: ::core::option::Option<u32>,
11965    #[prost(uint32, optional, tag="16")]
11966    pub groups: ::core::option::Option<u32>,
11967    #[prost(uint32, optional, tag="17")]
11968    pub buddy: ::core::option::Option<u32>,
11969    #[prost(uint32, optional, tag="18")]
11970    pub flags: ::core::option::Option<u32>,
11971    #[prost(uint32, optional, tag="19")]
11972    pub tail: ::core::option::Option<u32>,
11973    #[prost(uint32, optional, tag="20")]
11974    pub cr: ::core::option::Option<u32>,
11975}
11976#[derive(Clone, PartialEq, ::prost::Message)]
11977pub struct Ext4MballocDiscardFtraceEvent {
11978    #[prost(uint64, optional, tag="1")]
11979    pub dev: ::core::option::Option<u64>,
11980    #[prost(uint64, optional, tag="2")]
11981    pub ino: ::core::option::Option<u64>,
11982    #[prost(int32, optional, tag="3")]
11983    pub result_start: ::core::option::Option<i32>,
11984    #[prost(uint32, optional, tag="4")]
11985    pub result_group: ::core::option::Option<u32>,
11986    #[prost(int32, optional, tag="5")]
11987    pub result_len: ::core::option::Option<i32>,
11988}
11989#[derive(Clone, PartialEq, ::prost::Message)]
11990pub struct Ext4MballocFreeFtraceEvent {
11991    #[prost(uint64, optional, tag="1")]
11992    pub dev: ::core::option::Option<u64>,
11993    #[prost(uint64, optional, tag="2")]
11994    pub ino: ::core::option::Option<u64>,
11995    #[prost(int32, optional, tag="3")]
11996    pub result_start: ::core::option::Option<i32>,
11997    #[prost(uint32, optional, tag="4")]
11998    pub result_group: ::core::option::Option<u32>,
11999    #[prost(int32, optional, tag="5")]
12000    pub result_len: ::core::option::Option<i32>,
12001}
12002#[derive(Clone, PartialEq, ::prost::Message)]
12003pub struct Ext4MballocPreallocFtraceEvent {
12004    #[prost(uint64, optional, tag="1")]
12005    pub dev: ::core::option::Option<u64>,
12006    #[prost(uint64, optional, tag="2")]
12007    pub ino: ::core::option::Option<u64>,
12008    #[prost(uint32, optional, tag="3")]
12009    pub orig_logical: ::core::option::Option<u32>,
12010    #[prost(int32, optional, tag="4")]
12011    pub orig_start: ::core::option::Option<i32>,
12012    #[prost(uint32, optional, tag="5")]
12013    pub orig_group: ::core::option::Option<u32>,
12014    #[prost(int32, optional, tag="6")]
12015    pub orig_len: ::core::option::Option<i32>,
12016    #[prost(uint32, optional, tag="7")]
12017    pub result_logical: ::core::option::Option<u32>,
12018    #[prost(int32, optional, tag="8")]
12019    pub result_start: ::core::option::Option<i32>,
12020    #[prost(uint32, optional, tag="9")]
12021    pub result_group: ::core::option::Option<u32>,
12022    #[prost(int32, optional, tag="10")]
12023    pub result_len: ::core::option::Option<i32>,
12024}
12025#[derive(Clone, PartialEq, ::prost::Message)]
12026pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
12027    #[prost(uint64, optional, tag="1")]
12028    pub dev: ::core::option::Option<u64>,
12029    #[prost(uint64, optional, tag="2")]
12030    pub ino: ::core::option::Option<u64>,
12031    #[prost(uint64, optional, tag="3")]
12032    pub orig_ino: ::core::option::Option<u64>,
12033    #[prost(uint32, optional, tag="4")]
12034    pub uid: ::core::option::Option<u32>,
12035    #[prost(uint32, optional, tag="5")]
12036    pub gid: ::core::option::Option<u32>,
12037    #[prost(uint32, optional, tag="6")]
12038    pub mode: ::core::option::Option<u32>,
12039}
12040#[derive(Clone, PartialEq, ::prost::Message)]
12041pub struct Ext4PunchHoleFtraceEvent {
12042    #[prost(uint64, optional, tag="1")]
12043    pub dev: ::core::option::Option<u64>,
12044    #[prost(uint64, optional, tag="2")]
12045    pub ino: ::core::option::Option<u64>,
12046    #[prost(int64, optional, tag="3")]
12047    pub offset: ::core::option::Option<i64>,
12048    #[prost(int64, optional, tag="4")]
12049    pub len: ::core::option::Option<i64>,
12050    #[prost(int32, optional, tag="5")]
12051    pub mode: ::core::option::Option<i32>,
12052}
12053#[derive(Clone, PartialEq, ::prost::Message)]
12054pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
12055    #[prost(uint64, optional, tag="1")]
12056    pub dev: ::core::option::Option<u64>,
12057    #[prost(uint32, optional, tag="2")]
12058    pub group: ::core::option::Option<u32>,
12059    #[prost(uint32, optional, tag="3")]
12060    pub prefetch: ::core::option::Option<u32>,
12061}
12062#[derive(Clone, PartialEq, ::prost::Message)]
12063pub struct Ext4ReadpageFtraceEvent {
12064    #[prost(uint64, optional, tag="1")]
12065    pub dev: ::core::option::Option<u64>,
12066    #[prost(uint64, optional, tag="2")]
12067    pub ino: ::core::option::Option<u64>,
12068    #[prost(uint64, optional, tag="3")]
12069    pub index: ::core::option::Option<u64>,
12070}
12071#[derive(Clone, PartialEq, ::prost::Message)]
12072pub struct Ext4ReleasepageFtraceEvent {
12073    #[prost(uint64, optional, tag="1")]
12074    pub dev: ::core::option::Option<u64>,
12075    #[prost(uint64, optional, tag="2")]
12076    pub ino: ::core::option::Option<u64>,
12077    #[prost(uint64, optional, tag="3")]
12078    pub index: ::core::option::Option<u64>,
12079}
12080#[derive(Clone, PartialEq, ::prost::Message)]
12081pub struct Ext4RemoveBlocksFtraceEvent {
12082    #[prost(uint64, optional, tag="1")]
12083    pub dev: ::core::option::Option<u64>,
12084    #[prost(uint64, optional, tag="2")]
12085    pub ino: ::core::option::Option<u64>,
12086    #[prost(uint32, optional, tag="3")]
12087    pub from: ::core::option::Option<u32>,
12088    #[prost(uint32, optional, tag="4")]
12089    pub to: ::core::option::Option<u32>,
12090    #[prost(int64, optional, tag="5")]
12091    pub partial: ::core::option::Option<i64>,
12092    #[prost(uint64, optional, tag="6")]
12093    pub ee_pblk: ::core::option::Option<u64>,
12094    #[prost(uint32, optional, tag="7")]
12095    pub ee_lblk: ::core::option::Option<u32>,
12096    #[prost(uint32, optional, tag="8")]
12097    pub ee_len: ::core::option::Option<u32>,
12098    #[prost(uint32, optional, tag="9")]
12099    pub pc_lblk: ::core::option::Option<u32>,
12100    #[prost(uint64, optional, tag="10")]
12101    pub pc_pclu: ::core::option::Option<u64>,
12102    #[prost(int32, optional, tag="11")]
12103    pub pc_state: ::core::option::Option<i32>,
12104}
12105#[derive(Clone, PartialEq, ::prost::Message)]
12106pub struct Ext4RequestBlocksFtraceEvent {
12107    #[prost(uint64, optional, tag="1")]
12108    pub dev: ::core::option::Option<u64>,
12109    #[prost(uint64, optional, tag="2")]
12110    pub ino: ::core::option::Option<u64>,
12111    #[prost(uint32, optional, tag="3")]
12112    pub len: ::core::option::Option<u32>,
12113    #[prost(uint32, optional, tag="4")]
12114    pub logical: ::core::option::Option<u32>,
12115    #[prost(uint32, optional, tag="5")]
12116    pub lleft: ::core::option::Option<u32>,
12117    #[prost(uint32, optional, tag="6")]
12118    pub lright: ::core::option::Option<u32>,
12119    #[prost(uint64, optional, tag="7")]
12120    pub goal: ::core::option::Option<u64>,
12121    #[prost(uint64, optional, tag="8")]
12122    pub pleft: ::core::option::Option<u64>,
12123    #[prost(uint64, optional, tag="9")]
12124    pub pright: ::core::option::Option<u64>,
12125    #[prost(uint32, optional, tag="10")]
12126    pub flags: ::core::option::Option<u32>,
12127}
12128#[derive(Clone, PartialEq, ::prost::Message)]
12129pub struct Ext4RequestInodeFtraceEvent {
12130    #[prost(uint64, optional, tag="1")]
12131    pub dev: ::core::option::Option<u64>,
12132    #[prost(uint64, optional, tag="2")]
12133    pub dir: ::core::option::Option<u64>,
12134    #[prost(uint32, optional, tag="3")]
12135    pub mode: ::core::option::Option<u32>,
12136}
12137#[derive(Clone, PartialEq, ::prost::Message)]
12138pub struct Ext4SyncFsFtraceEvent {
12139    #[prost(uint64, optional, tag="1")]
12140    pub dev: ::core::option::Option<u64>,
12141    #[prost(int32, optional, tag="2")]
12142    pub wait: ::core::option::Option<i32>,
12143}
12144#[derive(Clone, PartialEq, ::prost::Message)]
12145pub struct Ext4TrimAllFreeFtraceEvent {
12146    #[prost(int32, optional, tag="1")]
12147    pub dev_major: ::core::option::Option<i32>,
12148    #[prost(int32, optional, tag="2")]
12149    pub dev_minor: ::core::option::Option<i32>,
12150    #[prost(uint32, optional, tag="3")]
12151    pub group: ::core::option::Option<u32>,
12152    #[prost(int32, optional, tag="4")]
12153    pub start: ::core::option::Option<i32>,
12154    #[prost(int32, optional, tag="5")]
12155    pub len: ::core::option::Option<i32>,
12156}
12157#[derive(Clone, PartialEq, ::prost::Message)]
12158pub struct Ext4TrimExtentFtraceEvent {
12159    #[prost(int32, optional, tag="1")]
12160    pub dev_major: ::core::option::Option<i32>,
12161    #[prost(int32, optional, tag="2")]
12162    pub dev_minor: ::core::option::Option<i32>,
12163    #[prost(uint32, optional, tag="3")]
12164    pub group: ::core::option::Option<u32>,
12165    #[prost(int32, optional, tag="4")]
12166    pub start: ::core::option::Option<i32>,
12167    #[prost(int32, optional, tag="5")]
12168    pub len: ::core::option::Option<i32>,
12169}
12170#[derive(Clone, PartialEq, ::prost::Message)]
12171pub struct Ext4TruncateEnterFtraceEvent {
12172    #[prost(uint64, optional, tag="1")]
12173    pub dev: ::core::option::Option<u64>,
12174    #[prost(uint64, optional, tag="2")]
12175    pub ino: ::core::option::Option<u64>,
12176    #[prost(uint64, optional, tag="3")]
12177    pub blocks: ::core::option::Option<u64>,
12178}
12179#[derive(Clone, PartialEq, ::prost::Message)]
12180pub struct Ext4TruncateExitFtraceEvent {
12181    #[prost(uint64, optional, tag="1")]
12182    pub dev: ::core::option::Option<u64>,
12183    #[prost(uint64, optional, tag="2")]
12184    pub ino: ::core::option::Option<u64>,
12185    #[prost(uint64, optional, tag="3")]
12186    pub blocks: ::core::option::Option<u64>,
12187}
12188#[derive(Clone, PartialEq, ::prost::Message)]
12189pub struct Ext4UnlinkEnterFtraceEvent {
12190    #[prost(uint64, optional, tag="1")]
12191    pub dev: ::core::option::Option<u64>,
12192    #[prost(uint64, optional, tag="2")]
12193    pub ino: ::core::option::Option<u64>,
12194    #[prost(uint64, optional, tag="3")]
12195    pub parent: ::core::option::Option<u64>,
12196    #[prost(int64, optional, tag="4")]
12197    pub size: ::core::option::Option<i64>,
12198}
12199#[derive(Clone, PartialEq, ::prost::Message)]
12200pub struct Ext4UnlinkExitFtraceEvent {
12201    #[prost(uint64, optional, tag="1")]
12202    pub dev: ::core::option::Option<u64>,
12203    #[prost(uint64, optional, tag="2")]
12204    pub ino: ::core::option::Option<u64>,
12205    #[prost(int32, optional, tag="3")]
12206    pub ret: ::core::option::Option<i32>,
12207}
12208#[derive(Clone, PartialEq, ::prost::Message)]
12209pub struct Ext4WriteBeginFtraceEvent {
12210    #[prost(uint64, optional, tag="1")]
12211    pub dev: ::core::option::Option<u64>,
12212    #[prost(uint64, optional, tag="2")]
12213    pub ino: ::core::option::Option<u64>,
12214    #[prost(int64, optional, tag="3")]
12215    pub pos: ::core::option::Option<i64>,
12216    #[prost(uint32, optional, tag="4")]
12217    pub len: ::core::option::Option<u32>,
12218    #[prost(uint32, optional, tag="5")]
12219    pub flags: ::core::option::Option<u32>,
12220}
12221#[derive(Clone, PartialEq, ::prost::Message)]
12222pub struct Ext4WriteEndFtraceEvent {
12223    #[prost(uint64, optional, tag="1")]
12224    pub dev: ::core::option::Option<u64>,
12225    #[prost(uint64, optional, tag="2")]
12226    pub ino: ::core::option::Option<u64>,
12227    #[prost(int64, optional, tag="3")]
12228    pub pos: ::core::option::Option<i64>,
12229    #[prost(uint32, optional, tag="4")]
12230    pub len: ::core::option::Option<u32>,
12231    #[prost(uint32, optional, tag="5")]
12232    pub copied: ::core::option::Option<u32>,
12233}
12234#[derive(Clone, PartialEq, ::prost::Message)]
12235pub struct Ext4WritepageFtraceEvent {
12236    #[prost(uint64, optional, tag="1")]
12237    pub dev: ::core::option::Option<u64>,
12238    #[prost(uint64, optional, tag="2")]
12239    pub ino: ::core::option::Option<u64>,
12240    #[prost(uint64, optional, tag="3")]
12241    pub index: ::core::option::Option<u64>,
12242}
12243#[derive(Clone, PartialEq, ::prost::Message)]
12244pub struct Ext4WritepagesFtraceEvent {
12245    #[prost(uint64, optional, tag="1")]
12246    pub dev: ::core::option::Option<u64>,
12247    #[prost(uint64, optional, tag="2")]
12248    pub ino: ::core::option::Option<u64>,
12249    #[prost(int64, optional, tag="3")]
12250    pub nr_to_write: ::core::option::Option<i64>,
12251    #[prost(int64, optional, tag="4")]
12252    pub pages_skipped: ::core::option::Option<i64>,
12253    #[prost(int64, optional, tag="5")]
12254    pub range_start: ::core::option::Option<i64>,
12255    #[prost(int64, optional, tag="6")]
12256    pub range_end: ::core::option::Option<i64>,
12257    #[prost(uint64, optional, tag="7")]
12258    pub writeback_index: ::core::option::Option<u64>,
12259    #[prost(int32, optional, tag="8")]
12260    pub sync_mode: ::core::option::Option<i32>,
12261    #[prost(uint32, optional, tag="9")]
12262    pub for_kupdate: ::core::option::Option<u32>,
12263    #[prost(uint32, optional, tag="10")]
12264    pub range_cyclic: ::core::option::Option<u32>,
12265}
12266#[derive(Clone, PartialEq, ::prost::Message)]
12267pub struct Ext4WritepagesResultFtraceEvent {
12268    #[prost(uint64, optional, tag="1")]
12269    pub dev: ::core::option::Option<u64>,
12270    #[prost(uint64, optional, tag="2")]
12271    pub ino: ::core::option::Option<u64>,
12272    #[prost(int32, optional, tag="3")]
12273    pub ret: ::core::option::Option<i32>,
12274    #[prost(int32, optional, tag="4")]
12275    pub pages_written: ::core::option::Option<i32>,
12276    #[prost(int64, optional, tag="5")]
12277    pub pages_skipped: ::core::option::Option<i64>,
12278    #[prost(uint64, optional, tag="6")]
12279    pub writeback_index: ::core::option::Option<u64>,
12280    #[prost(int32, optional, tag="7")]
12281    pub sync_mode: ::core::option::Option<i32>,
12282}
12283#[derive(Clone, PartialEq, ::prost::Message)]
12284pub struct Ext4ZeroRangeFtraceEvent {
12285    #[prost(uint64, optional, tag="1")]
12286    pub dev: ::core::option::Option<u64>,
12287    #[prost(uint64, optional, tag="2")]
12288    pub ino: ::core::option::Option<u64>,
12289    #[prost(int64, optional, tag="3")]
12290    pub offset: ::core::option::Option<i64>,
12291    #[prost(int64, optional, tag="4")]
12292    pub len: ::core::option::Option<i64>,
12293    #[prost(int32, optional, tag="5")]
12294    pub mode: ::core::option::Option<i32>,
12295}
12296// End of protos/perfetto/trace/ftrace/ext4.proto
12297
12298// Begin of protos/perfetto/trace/ftrace/f2fs.proto
12299
12300#[derive(Clone, PartialEq, ::prost::Message)]
12301pub struct F2fsDoSubmitBioFtraceEvent {
12302    #[prost(uint64, optional, tag="1")]
12303    pub dev: ::core::option::Option<u64>,
12304    #[prost(int32, optional, tag="2")]
12305    pub btype: ::core::option::Option<i32>,
12306    #[prost(uint32, optional, tag="3")]
12307    pub sync: ::core::option::Option<u32>,
12308    #[prost(uint64, optional, tag="4")]
12309    pub sector: ::core::option::Option<u64>,
12310    #[prost(uint32, optional, tag="5")]
12311    pub size: ::core::option::Option<u32>,
12312}
12313#[derive(Clone, PartialEq, ::prost::Message)]
12314pub struct F2fsEvictInodeFtraceEvent {
12315    #[prost(uint64, optional, tag="1")]
12316    pub dev: ::core::option::Option<u64>,
12317    #[prost(uint64, optional, tag="2")]
12318    pub ino: ::core::option::Option<u64>,
12319    #[prost(uint64, optional, tag="3")]
12320    pub pino: ::core::option::Option<u64>,
12321    #[prost(uint32, optional, tag="4")]
12322    pub mode: ::core::option::Option<u32>,
12323    #[prost(int64, optional, tag="5")]
12324    pub size: ::core::option::Option<i64>,
12325    #[prost(uint32, optional, tag="6")]
12326    pub nlink: ::core::option::Option<u32>,
12327    #[prost(uint64, optional, tag="7")]
12328    pub blocks: ::core::option::Option<u64>,
12329    #[prost(uint32, optional, tag="8")]
12330    pub advise: ::core::option::Option<u32>,
12331}
12332#[derive(Clone, PartialEq, ::prost::Message)]
12333pub struct F2fsFallocateFtraceEvent {
12334    #[prost(uint64, optional, tag="1")]
12335    pub dev: ::core::option::Option<u64>,
12336    #[prost(uint64, optional, tag="2")]
12337    pub ino: ::core::option::Option<u64>,
12338    #[prost(int32, optional, tag="3")]
12339    pub mode: ::core::option::Option<i32>,
12340    #[prost(int64, optional, tag="4")]
12341    pub offset: ::core::option::Option<i64>,
12342    #[prost(int64, optional, tag="5")]
12343    pub len: ::core::option::Option<i64>,
12344    #[prost(int64, optional, tag="6")]
12345    pub size: ::core::option::Option<i64>,
12346    #[prost(uint64, optional, tag="7")]
12347    pub blocks: ::core::option::Option<u64>,
12348    #[prost(int32, optional, tag="8")]
12349    pub ret: ::core::option::Option<i32>,
12350}
12351#[derive(Clone, PartialEq, ::prost::Message)]
12352pub struct F2fsGetDataBlockFtraceEvent {
12353    #[prost(uint64, optional, tag="1")]
12354    pub dev: ::core::option::Option<u64>,
12355    #[prost(uint64, optional, tag="2")]
12356    pub ino: ::core::option::Option<u64>,
12357    #[prost(uint64, optional, tag="3")]
12358    pub iblock: ::core::option::Option<u64>,
12359    #[prost(uint64, optional, tag="4")]
12360    pub bh_start: ::core::option::Option<u64>,
12361    #[prost(uint64, optional, tag="5")]
12362    pub bh_size: ::core::option::Option<u64>,
12363    #[prost(int32, optional, tag="6")]
12364    pub ret: ::core::option::Option<i32>,
12365}
12366#[derive(Clone, PartialEq, ::prost::Message)]
12367pub struct F2fsGetVictimFtraceEvent {
12368    #[prost(uint64, optional, tag="1")]
12369    pub dev: ::core::option::Option<u64>,
12370    #[prost(int32, optional, tag="2")]
12371    pub r#type: ::core::option::Option<i32>,
12372    #[prost(int32, optional, tag="3")]
12373    pub gc_type: ::core::option::Option<i32>,
12374    #[prost(int32, optional, tag="4")]
12375    pub alloc_mode: ::core::option::Option<i32>,
12376    #[prost(int32, optional, tag="5")]
12377    pub gc_mode: ::core::option::Option<i32>,
12378    #[prost(uint32, optional, tag="6")]
12379    pub victim: ::core::option::Option<u32>,
12380    #[prost(uint32, optional, tag="7")]
12381    pub ofs_unit: ::core::option::Option<u32>,
12382    #[prost(uint32, optional, tag="8")]
12383    pub pre_victim: ::core::option::Option<u32>,
12384    #[prost(uint32, optional, tag="9")]
12385    pub prefree: ::core::option::Option<u32>,
12386    #[prost(uint32, optional, tag="10")]
12387    pub free: ::core::option::Option<u32>,
12388    #[prost(uint32, optional, tag="11")]
12389    pub cost: ::core::option::Option<u32>,
12390}
12391#[derive(Clone, PartialEq, ::prost::Message)]
12392pub struct F2fsIgetFtraceEvent {
12393    #[prost(uint64, optional, tag="1")]
12394    pub dev: ::core::option::Option<u64>,
12395    #[prost(uint64, optional, tag="2")]
12396    pub ino: ::core::option::Option<u64>,
12397    #[prost(uint64, optional, tag="3")]
12398    pub pino: ::core::option::Option<u64>,
12399    #[prost(uint32, optional, tag="4")]
12400    pub mode: ::core::option::Option<u32>,
12401    #[prost(int64, optional, tag="5")]
12402    pub size: ::core::option::Option<i64>,
12403    #[prost(uint32, optional, tag="6")]
12404    pub nlink: ::core::option::Option<u32>,
12405    #[prost(uint64, optional, tag="7")]
12406    pub blocks: ::core::option::Option<u64>,
12407    #[prost(uint32, optional, tag="8")]
12408    pub advise: ::core::option::Option<u32>,
12409}
12410#[derive(Clone, PartialEq, ::prost::Message)]
12411pub struct F2fsIgetExitFtraceEvent {
12412    #[prost(uint64, optional, tag="1")]
12413    pub dev: ::core::option::Option<u64>,
12414    #[prost(uint64, optional, tag="2")]
12415    pub ino: ::core::option::Option<u64>,
12416    #[prost(int32, optional, tag="3")]
12417    pub ret: ::core::option::Option<i32>,
12418}
12419#[derive(Clone, PartialEq, ::prost::Message)]
12420pub struct F2fsNewInodeFtraceEvent {
12421    #[prost(uint64, optional, tag="1")]
12422    pub dev: ::core::option::Option<u64>,
12423    #[prost(uint64, optional, tag="2")]
12424    pub ino: ::core::option::Option<u64>,
12425    #[prost(int32, optional, tag="3")]
12426    pub ret: ::core::option::Option<i32>,
12427}
12428#[derive(Clone, PartialEq, ::prost::Message)]
12429pub struct F2fsReadpageFtraceEvent {
12430    #[prost(uint64, optional, tag="1")]
12431    pub dev: ::core::option::Option<u64>,
12432    #[prost(uint64, optional, tag="2")]
12433    pub ino: ::core::option::Option<u64>,
12434    #[prost(uint64, optional, tag="3")]
12435    pub index: ::core::option::Option<u64>,
12436    #[prost(uint64, optional, tag="4")]
12437    pub blkaddr: ::core::option::Option<u64>,
12438    #[prost(int32, optional, tag="5")]
12439    pub r#type: ::core::option::Option<i32>,
12440    #[prost(int32, optional, tag="6")]
12441    pub dir: ::core::option::Option<i32>,
12442    #[prost(int32, optional, tag="7")]
12443    pub dirty: ::core::option::Option<i32>,
12444    #[prost(int32, optional, tag="8")]
12445    pub uptodate: ::core::option::Option<i32>,
12446}
12447#[derive(Clone, PartialEq, ::prost::Message)]
12448pub struct F2fsReserveNewBlockFtraceEvent {
12449    #[prost(uint64, optional, tag="1")]
12450    pub dev: ::core::option::Option<u64>,
12451    #[prost(uint32, optional, tag="2")]
12452    pub nid: ::core::option::Option<u32>,
12453    #[prost(uint32, optional, tag="3")]
12454    pub ofs_in_node: ::core::option::Option<u32>,
12455}
12456#[derive(Clone, PartialEq, ::prost::Message)]
12457pub struct F2fsSetPageDirtyFtraceEvent {
12458    #[prost(uint64, optional, tag="1")]
12459    pub dev: ::core::option::Option<u64>,
12460    #[prost(uint64, optional, tag="2")]
12461    pub ino: ::core::option::Option<u64>,
12462    #[prost(int32, optional, tag="3")]
12463    pub r#type: ::core::option::Option<i32>,
12464    #[prost(int32, optional, tag="4")]
12465    pub dir: ::core::option::Option<i32>,
12466    #[prost(uint64, optional, tag="5")]
12467    pub index: ::core::option::Option<u64>,
12468    #[prost(int32, optional, tag="6")]
12469    pub dirty: ::core::option::Option<i32>,
12470    #[prost(int32, optional, tag="7")]
12471    pub uptodate: ::core::option::Option<i32>,
12472}
12473#[derive(Clone, PartialEq, ::prost::Message)]
12474pub struct F2fsSubmitWritePageFtraceEvent {
12475    #[prost(uint64, optional, tag="1")]
12476    pub dev: ::core::option::Option<u64>,
12477    #[prost(uint64, optional, tag="2")]
12478    pub ino: ::core::option::Option<u64>,
12479    #[prost(int32, optional, tag="3")]
12480    pub r#type: ::core::option::Option<i32>,
12481    #[prost(uint64, optional, tag="4")]
12482    pub index: ::core::option::Option<u64>,
12483    #[prost(uint32, optional, tag="5")]
12484    pub block: ::core::option::Option<u32>,
12485}
12486#[derive(Clone, PartialEq, ::prost::Message)]
12487pub struct F2fsSyncFileEnterFtraceEvent {
12488    #[prost(uint64, optional, tag="1")]
12489    pub dev: ::core::option::Option<u64>,
12490    #[prost(uint64, optional, tag="2")]
12491    pub ino: ::core::option::Option<u64>,
12492    #[prost(uint64, optional, tag="3")]
12493    pub pino: ::core::option::Option<u64>,
12494    #[prost(uint32, optional, tag="4")]
12495    pub mode: ::core::option::Option<u32>,
12496    #[prost(int64, optional, tag="5")]
12497    pub size: ::core::option::Option<i64>,
12498    #[prost(uint32, optional, tag="6")]
12499    pub nlink: ::core::option::Option<u32>,
12500    #[prost(uint64, optional, tag="7")]
12501    pub blocks: ::core::option::Option<u64>,
12502    #[prost(uint32, optional, tag="8")]
12503    pub advise: ::core::option::Option<u32>,
12504}
12505#[derive(Clone, PartialEq, ::prost::Message)]
12506pub struct F2fsSyncFileExitFtraceEvent {
12507    #[prost(uint64, optional, tag="1")]
12508    pub dev: ::core::option::Option<u64>,
12509    #[prost(uint64, optional, tag="2")]
12510    pub ino: ::core::option::Option<u64>,
12511    #[prost(uint32, optional, tag="3")]
12512    pub need_cp: ::core::option::Option<u32>,
12513    #[prost(int32, optional, tag="4")]
12514    pub datasync: ::core::option::Option<i32>,
12515    #[prost(int32, optional, tag="5")]
12516    pub ret: ::core::option::Option<i32>,
12517    #[prost(int32, optional, tag="6")]
12518    pub cp_reason: ::core::option::Option<i32>,
12519}
12520#[derive(Clone, PartialEq, ::prost::Message)]
12521pub struct F2fsSyncFsFtraceEvent {
12522    #[prost(uint64, optional, tag="1")]
12523    pub dev: ::core::option::Option<u64>,
12524    #[prost(int32, optional, tag="2")]
12525    pub dirty: ::core::option::Option<i32>,
12526    #[prost(int32, optional, tag="3")]
12527    pub wait: ::core::option::Option<i32>,
12528}
12529#[derive(Clone, PartialEq, ::prost::Message)]
12530pub struct F2fsTruncateFtraceEvent {
12531    #[prost(uint64, optional, tag="1")]
12532    pub dev: ::core::option::Option<u64>,
12533    #[prost(uint64, optional, tag="2")]
12534    pub ino: ::core::option::Option<u64>,
12535    #[prost(uint64, optional, tag="3")]
12536    pub pino: ::core::option::Option<u64>,
12537    #[prost(uint32, optional, tag="4")]
12538    pub mode: ::core::option::Option<u32>,
12539    #[prost(int64, optional, tag="5")]
12540    pub size: ::core::option::Option<i64>,
12541    #[prost(uint32, optional, tag="6")]
12542    pub nlink: ::core::option::Option<u32>,
12543    #[prost(uint64, optional, tag="7")]
12544    pub blocks: ::core::option::Option<u64>,
12545    #[prost(uint32, optional, tag="8")]
12546    pub advise: ::core::option::Option<u32>,
12547}
12548#[derive(Clone, PartialEq, ::prost::Message)]
12549pub struct F2fsTruncateBlocksEnterFtraceEvent {
12550    #[prost(uint64, optional, tag="1")]
12551    pub dev: ::core::option::Option<u64>,
12552    #[prost(uint64, optional, tag="2")]
12553    pub ino: ::core::option::Option<u64>,
12554    #[prost(int64, optional, tag="3")]
12555    pub size: ::core::option::Option<i64>,
12556    #[prost(uint64, optional, tag="4")]
12557    pub blocks: ::core::option::Option<u64>,
12558    #[prost(uint64, optional, tag="5")]
12559    pub from: ::core::option::Option<u64>,
12560}
12561#[derive(Clone, PartialEq, ::prost::Message)]
12562pub struct F2fsTruncateBlocksExitFtraceEvent {
12563    #[prost(uint64, optional, tag="1")]
12564    pub dev: ::core::option::Option<u64>,
12565    #[prost(uint64, optional, tag="2")]
12566    pub ino: ::core::option::Option<u64>,
12567    #[prost(int32, optional, tag="3")]
12568    pub ret: ::core::option::Option<i32>,
12569}
12570#[derive(Clone, PartialEq, ::prost::Message)]
12571pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
12572    #[prost(uint64, optional, tag="1")]
12573    pub dev: ::core::option::Option<u64>,
12574    #[prost(uint64, optional, tag="2")]
12575    pub ino: ::core::option::Option<u64>,
12576    #[prost(uint32, optional, tag="3")]
12577    pub nid: ::core::option::Option<u32>,
12578    #[prost(uint32, optional, tag="4")]
12579    pub ofs: ::core::option::Option<u32>,
12580    #[prost(int32, optional, tag="5")]
12581    pub free: ::core::option::Option<i32>,
12582}
12583#[derive(Clone, PartialEq, ::prost::Message)]
12584pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
12585    #[prost(uint64, optional, tag="1")]
12586    pub dev: ::core::option::Option<u64>,
12587    #[prost(uint64, optional, tag="2")]
12588    pub ino: ::core::option::Option<u64>,
12589    #[prost(int64, optional, tag="3")]
12590    pub size: ::core::option::Option<i64>,
12591    #[prost(uint64, optional, tag="4")]
12592    pub blocks: ::core::option::Option<u64>,
12593    #[prost(uint64, optional, tag="5")]
12594    pub from: ::core::option::Option<u64>,
12595}
12596#[derive(Clone, PartialEq, ::prost::Message)]
12597pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
12598    #[prost(uint64, optional, tag="1")]
12599    pub dev: ::core::option::Option<u64>,
12600    #[prost(uint64, optional, tag="2")]
12601    pub ino: ::core::option::Option<u64>,
12602    #[prost(int32, optional, tag="3")]
12603    pub ret: ::core::option::Option<i32>,
12604}
12605#[derive(Clone, PartialEq, ::prost::Message)]
12606pub struct F2fsTruncateNodeFtraceEvent {
12607    #[prost(uint64, optional, tag="1")]
12608    pub dev: ::core::option::Option<u64>,
12609    #[prost(uint64, optional, tag="2")]
12610    pub ino: ::core::option::Option<u64>,
12611    #[prost(uint32, optional, tag="3")]
12612    pub nid: ::core::option::Option<u32>,
12613    #[prost(uint32, optional, tag="4")]
12614    pub blk_addr: ::core::option::Option<u32>,
12615}
12616#[derive(Clone, PartialEq, ::prost::Message)]
12617pub struct F2fsTruncateNodesEnterFtraceEvent {
12618    #[prost(uint64, optional, tag="1")]
12619    pub dev: ::core::option::Option<u64>,
12620    #[prost(uint64, optional, tag="2")]
12621    pub ino: ::core::option::Option<u64>,
12622    #[prost(uint32, optional, tag="3")]
12623    pub nid: ::core::option::Option<u32>,
12624    #[prost(uint32, optional, tag="4")]
12625    pub blk_addr: ::core::option::Option<u32>,
12626}
12627#[derive(Clone, PartialEq, ::prost::Message)]
12628pub struct F2fsTruncateNodesExitFtraceEvent {
12629    #[prost(uint64, optional, tag="1")]
12630    pub dev: ::core::option::Option<u64>,
12631    #[prost(uint64, optional, tag="2")]
12632    pub ino: ::core::option::Option<u64>,
12633    #[prost(int32, optional, tag="3")]
12634    pub ret: ::core::option::Option<i32>,
12635}
12636#[derive(Clone, PartialEq, ::prost::Message)]
12637pub struct F2fsTruncatePartialNodesFtraceEvent {
12638    #[prost(uint64, optional, tag="1")]
12639    pub dev: ::core::option::Option<u64>,
12640    #[prost(uint64, optional, tag="2")]
12641    pub ino: ::core::option::Option<u64>,
12642    #[prost(uint32, optional, tag="3")]
12643    pub nid: ::core::option::Option<u32>,
12644    #[prost(int32, optional, tag="4")]
12645    pub depth: ::core::option::Option<i32>,
12646    #[prost(int32, optional, tag="5")]
12647    pub err: ::core::option::Option<i32>,
12648}
12649#[derive(Clone, PartialEq, ::prost::Message)]
12650pub struct F2fsUnlinkEnterFtraceEvent {
12651    #[prost(uint64, optional, tag="1")]
12652    pub dev: ::core::option::Option<u64>,
12653    #[prost(uint64, optional, tag="2")]
12654    pub ino: ::core::option::Option<u64>,
12655    #[prost(int64, optional, tag="3")]
12656    pub size: ::core::option::Option<i64>,
12657    #[prost(uint64, optional, tag="4")]
12658    pub blocks: ::core::option::Option<u64>,
12659    #[prost(string, optional, tag="5")]
12660    pub name: ::core::option::Option<::prost::alloc::string::String>,
12661}
12662#[derive(Clone, PartialEq, ::prost::Message)]
12663pub struct F2fsUnlinkExitFtraceEvent {
12664    #[prost(uint64, optional, tag="1")]
12665    pub dev: ::core::option::Option<u64>,
12666    #[prost(uint64, optional, tag="2")]
12667    pub ino: ::core::option::Option<u64>,
12668    #[prost(int32, optional, tag="3")]
12669    pub ret: ::core::option::Option<i32>,
12670}
12671#[derive(Clone, PartialEq, ::prost::Message)]
12672pub struct F2fsVmPageMkwriteFtraceEvent {
12673    #[prost(uint64, optional, tag="1")]
12674    pub dev: ::core::option::Option<u64>,
12675    #[prost(uint64, optional, tag="2")]
12676    pub ino: ::core::option::Option<u64>,
12677    #[prost(int32, optional, tag="3")]
12678    pub r#type: ::core::option::Option<i32>,
12679    #[prost(int32, optional, tag="4")]
12680    pub dir: ::core::option::Option<i32>,
12681    #[prost(uint64, optional, tag="5")]
12682    pub index: ::core::option::Option<u64>,
12683    #[prost(int32, optional, tag="6")]
12684    pub dirty: ::core::option::Option<i32>,
12685    #[prost(int32, optional, tag="7")]
12686    pub uptodate: ::core::option::Option<i32>,
12687}
12688#[derive(Clone, PartialEq, ::prost::Message)]
12689pub struct F2fsWriteBeginFtraceEvent {
12690    #[prost(uint64, optional, tag="1")]
12691    pub dev: ::core::option::Option<u64>,
12692    #[prost(uint64, optional, tag="2")]
12693    pub ino: ::core::option::Option<u64>,
12694    #[prost(int64, optional, tag="3")]
12695    pub pos: ::core::option::Option<i64>,
12696    #[prost(uint32, optional, tag="4")]
12697    pub len: ::core::option::Option<u32>,
12698    #[prost(uint32, optional, tag="5")]
12699    pub flags: ::core::option::Option<u32>,
12700}
12701#[derive(Clone, PartialEq, ::prost::Message)]
12702pub struct F2fsWriteCheckpointFtraceEvent {
12703    #[prost(uint64, optional, tag="1")]
12704    pub dev: ::core::option::Option<u64>,
12705    #[prost(uint32, optional, tag="2")]
12706    pub is_umount: ::core::option::Option<u32>,
12707    #[prost(string, optional, tag="3")]
12708    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12709    #[prost(int32, optional, tag="4")]
12710    pub reason: ::core::option::Option<i32>,
12711    #[prost(uint32, optional, tag="5")]
12712    pub phase: ::core::option::Option<u32>,
12713}
12714#[derive(Clone, PartialEq, ::prost::Message)]
12715pub struct F2fsWriteEndFtraceEvent {
12716    #[prost(uint64, optional, tag="1")]
12717    pub dev: ::core::option::Option<u64>,
12718    #[prost(uint64, optional, tag="2")]
12719    pub ino: ::core::option::Option<u64>,
12720    #[prost(int64, optional, tag="3")]
12721    pub pos: ::core::option::Option<i64>,
12722    #[prost(uint32, optional, tag="4")]
12723    pub len: ::core::option::Option<u32>,
12724    #[prost(uint32, optional, tag="5")]
12725    pub copied: ::core::option::Option<u32>,
12726}
12727#[derive(Clone, PartialEq, ::prost::Message)]
12728pub struct F2fsIostatFtraceEvent {
12729    #[prost(uint64, optional, tag="1")]
12730    pub app_bio: ::core::option::Option<u64>,
12731    #[prost(uint64, optional, tag="2")]
12732    pub app_brio: ::core::option::Option<u64>,
12733    #[prost(uint64, optional, tag="3")]
12734    pub app_dio: ::core::option::Option<u64>,
12735    #[prost(uint64, optional, tag="4")]
12736    pub app_drio: ::core::option::Option<u64>,
12737    #[prost(uint64, optional, tag="5")]
12738    pub app_mio: ::core::option::Option<u64>,
12739    #[prost(uint64, optional, tag="6")]
12740    pub app_mrio: ::core::option::Option<u64>,
12741    #[prost(uint64, optional, tag="7")]
12742    pub app_rio: ::core::option::Option<u64>,
12743    #[prost(uint64, optional, tag="8")]
12744    pub app_wio: ::core::option::Option<u64>,
12745    #[prost(uint64, optional, tag="9")]
12746    pub dev: ::core::option::Option<u64>,
12747    #[prost(uint64, optional, tag="10")]
12748    pub fs_cdrio: ::core::option::Option<u64>,
12749    #[prost(uint64, optional, tag="11")]
12750    pub fs_cp_dio: ::core::option::Option<u64>,
12751    #[prost(uint64, optional, tag="12")]
12752    pub fs_cp_mio: ::core::option::Option<u64>,
12753    #[prost(uint64, optional, tag="13")]
12754    pub fs_cp_nio: ::core::option::Option<u64>,
12755    #[prost(uint64, optional, tag="14")]
12756    pub fs_dio: ::core::option::Option<u64>,
12757    #[prost(uint64, optional, tag="15")]
12758    pub fs_discard: ::core::option::Option<u64>,
12759    #[prost(uint64, optional, tag="16")]
12760    pub fs_drio: ::core::option::Option<u64>,
12761    #[prost(uint64, optional, tag="17")]
12762    pub fs_gc_dio: ::core::option::Option<u64>,
12763    #[prost(uint64, optional, tag="18")]
12764    pub fs_gc_nio: ::core::option::Option<u64>,
12765    #[prost(uint64, optional, tag="19")]
12766    pub fs_gdrio: ::core::option::Option<u64>,
12767    #[prost(uint64, optional, tag="20")]
12768    pub fs_mio: ::core::option::Option<u64>,
12769    #[prost(uint64, optional, tag="21")]
12770    pub fs_mrio: ::core::option::Option<u64>,
12771    #[prost(uint64, optional, tag="22")]
12772    pub fs_nio: ::core::option::Option<u64>,
12773    #[prost(uint64, optional, tag="23")]
12774    pub fs_nrio: ::core::option::Option<u64>,
12775}
12776#[derive(Clone, PartialEq, ::prost::Message)]
12777pub struct F2fsIostatLatencyFtraceEvent {
12778    #[prost(uint32, optional, tag="1")]
12779    pub d_rd_avg: ::core::option::Option<u32>,
12780    #[prost(uint32, optional, tag="2")]
12781    pub d_rd_cnt: ::core::option::Option<u32>,
12782    #[prost(uint32, optional, tag="3")]
12783    pub d_rd_peak: ::core::option::Option<u32>,
12784    #[prost(uint32, optional, tag="4")]
12785    pub d_wr_as_avg: ::core::option::Option<u32>,
12786    #[prost(uint32, optional, tag="5")]
12787    pub d_wr_as_cnt: ::core::option::Option<u32>,
12788    #[prost(uint32, optional, tag="6")]
12789    pub d_wr_as_peak: ::core::option::Option<u32>,
12790    #[prost(uint32, optional, tag="7")]
12791    pub d_wr_s_avg: ::core::option::Option<u32>,
12792    #[prost(uint32, optional, tag="8")]
12793    pub d_wr_s_cnt: ::core::option::Option<u32>,
12794    #[prost(uint32, optional, tag="9")]
12795    pub d_wr_s_peak: ::core::option::Option<u32>,
12796    #[prost(uint64, optional, tag="10")]
12797    pub dev: ::core::option::Option<u64>,
12798    #[prost(uint32, optional, tag="11")]
12799    pub m_rd_avg: ::core::option::Option<u32>,
12800    #[prost(uint32, optional, tag="12")]
12801    pub m_rd_cnt: ::core::option::Option<u32>,
12802    #[prost(uint32, optional, tag="13")]
12803    pub m_rd_peak: ::core::option::Option<u32>,
12804    #[prost(uint32, optional, tag="14")]
12805    pub m_wr_as_avg: ::core::option::Option<u32>,
12806    #[prost(uint32, optional, tag="15")]
12807    pub m_wr_as_cnt: ::core::option::Option<u32>,
12808    #[prost(uint32, optional, tag="16")]
12809    pub m_wr_as_peak: ::core::option::Option<u32>,
12810    #[prost(uint32, optional, tag="17")]
12811    pub m_wr_s_avg: ::core::option::Option<u32>,
12812    #[prost(uint32, optional, tag="18")]
12813    pub m_wr_s_cnt: ::core::option::Option<u32>,
12814    #[prost(uint32, optional, tag="19")]
12815    pub m_wr_s_peak: ::core::option::Option<u32>,
12816    #[prost(uint32, optional, tag="20")]
12817    pub n_rd_avg: ::core::option::Option<u32>,
12818    #[prost(uint32, optional, tag="21")]
12819    pub n_rd_cnt: ::core::option::Option<u32>,
12820    #[prost(uint32, optional, tag="22")]
12821    pub n_rd_peak: ::core::option::Option<u32>,
12822    #[prost(uint32, optional, tag="23")]
12823    pub n_wr_as_avg: ::core::option::Option<u32>,
12824    #[prost(uint32, optional, tag="24")]
12825    pub n_wr_as_cnt: ::core::option::Option<u32>,
12826    #[prost(uint32, optional, tag="25")]
12827    pub n_wr_as_peak: ::core::option::Option<u32>,
12828    #[prost(uint32, optional, tag="26")]
12829    pub n_wr_s_avg: ::core::option::Option<u32>,
12830    #[prost(uint32, optional, tag="27")]
12831    pub n_wr_s_cnt: ::core::option::Option<u32>,
12832    #[prost(uint32, optional, tag="28")]
12833    pub n_wr_s_peak: ::core::option::Option<u32>,
12834}
12835#[derive(Clone, PartialEq, ::prost::Message)]
12836pub struct F2fsBackgroundGcFtraceEvent {
12837    #[prost(uint64, optional, tag="1")]
12838    pub dev: ::core::option::Option<u64>,
12839    #[prost(uint32, optional, tag="2")]
12840    pub wait_ms: ::core::option::Option<u32>,
12841    #[prost(uint32, optional, tag="3")]
12842    pub prefree: ::core::option::Option<u32>,
12843    #[prost(uint32, optional, tag="4")]
12844    pub free: ::core::option::Option<u32>,
12845}
12846#[derive(Clone, PartialEq, ::prost::Message)]
12847pub struct F2fsGcBeginFtraceEvent {
12848    #[prost(uint64, optional, tag="1")]
12849    pub dev: ::core::option::Option<u64>,
12850    #[prost(uint32, optional, tag="2")]
12851    pub sync: ::core::option::Option<u32>,
12852    #[prost(uint32, optional, tag="3")]
12853    pub background: ::core::option::Option<u32>,
12854    #[prost(int64, optional, tag="4")]
12855    pub dirty_nodes: ::core::option::Option<i64>,
12856    #[prost(int64, optional, tag="5")]
12857    pub dirty_dents: ::core::option::Option<i64>,
12858    #[prost(int64, optional, tag="6")]
12859    pub dirty_imeta: ::core::option::Option<i64>,
12860    #[prost(uint32, optional, tag="7")]
12861    pub free_sec: ::core::option::Option<u32>,
12862    #[prost(uint32, optional, tag="8")]
12863    pub free_seg: ::core::option::Option<u32>,
12864    #[prost(int32, optional, tag="9")]
12865    pub reserved_seg: ::core::option::Option<i32>,
12866    #[prost(uint32, optional, tag="10")]
12867    pub prefree_seg: ::core::option::Option<u32>,
12868    #[prost(int32, optional, tag="11")]
12869    pub gc_type: ::core::option::Option<i32>,
12870    #[prost(uint32, optional, tag="12")]
12871    pub no_bg_gc: ::core::option::Option<u32>,
12872    #[prost(uint32, optional, tag="13")]
12873    pub nr_free_secs: ::core::option::Option<u32>,
12874}
12875#[derive(Clone, PartialEq, ::prost::Message)]
12876pub struct F2fsGcEndFtraceEvent {
12877    #[prost(uint64, optional, tag="1")]
12878    pub dev: ::core::option::Option<u64>,
12879    #[prost(int32, optional, tag="2")]
12880    pub ret: ::core::option::Option<i32>,
12881    #[prost(int32, optional, tag="3")]
12882    pub seg_freed: ::core::option::Option<i32>,
12883    #[prost(int32, optional, tag="4")]
12884    pub sec_freed: ::core::option::Option<i32>,
12885    #[prost(int64, optional, tag="5")]
12886    pub dirty_nodes: ::core::option::Option<i64>,
12887    #[prost(int64, optional, tag="6")]
12888    pub dirty_dents: ::core::option::Option<i64>,
12889    #[prost(int64, optional, tag="7")]
12890    pub dirty_imeta: ::core::option::Option<i64>,
12891    #[prost(uint32, optional, tag="8")]
12892    pub free_sec: ::core::option::Option<u32>,
12893    #[prost(uint32, optional, tag="9")]
12894    pub free_seg: ::core::option::Option<u32>,
12895    #[prost(int32, optional, tag="10")]
12896    pub reserved_seg: ::core::option::Option<i32>,
12897    #[prost(uint32, optional, tag="11")]
12898    pub prefree_seg: ::core::option::Option<u32>,
12899}
12900// End of protos/perfetto/trace/ftrace/f2fs.proto
12901
12902// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
12903
12904#[derive(Clone, PartialEq, ::prost::Message)]
12905pub struct FastrpcDmaStatFtraceEvent {
12906    #[prost(int32, optional, tag="1")]
12907    pub cid: ::core::option::Option<i32>,
12908    #[prost(int64, optional, tag="2")]
12909    pub len: ::core::option::Option<i64>,
12910    #[prost(uint64, optional, tag="3")]
12911    pub total_allocated: ::core::option::Option<u64>,
12912}
12913#[derive(Clone, PartialEq, ::prost::Message)]
12914pub struct FastrpcDmaFreeFtraceEvent {
12915    #[prost(int32, optional, tag="1")]
12916    pub cid: ::core::option::Option<i32>,
12917    #[prost(uint64, optional, tag="2")]
12918    pub phys: ::core::option::Option<u64>,
12919    #[prost(uint64, optional, tag="3")]
12920    pub size: ::core::option::Option<u64>,
12921}
12922#[derive(Clone, PartialEq, ::prost::Message)]
12923pub struct FastrpcDmaAllocFtraceEvent {
12924    #[prost(int32, optional, tag="1")]
12925    pub cid: ::core::option::Option<i32>,
12926    #[prost(uint64, optional, tag="2")]
12927    pub phys: ::core::option::Option<u64>,
12928    #[prost(uint64, optional, tag="3")]
12929    pub size: ::core::option::Option<u64>,
12930    #[prost(uint64, optional, tag="4")]
12931    pub attr: ::core::option::Option<u64>,
12932    #[prost(int32, optional, tag="5")]
12933    pub mflags: ::core::option::Option<i32>,
12934}
12935#[derive(Clone, PartialEq, ::prost::Message)]
12936pub struct FastrpcDmaUnmapFtraceEvent {
12937    #[prost(int32, optional, tag="1")]
12938    pub cid: ::core::option::Option<i32>,
12939    #[prost(uint64, optional, tag="2")]
12940    pub phys: ::core::option::Option<u64>,
12941    #[prost(uint64, optional, tag="3")]
12942    pub size: ::core::option::Option<u64>,
12943}
12944#[derive(Clone, PartialEq, ::prost::Message)]
12945pub struct FastrpcDmaMapFtraceEvent {
12946    #[prost(int32, optional, tag="1")]
12947    pub cid: ::core::option::Option<i32>,
12948    #[prost(int32, optional, tag="2")]
12949    pub fd: ::core::option::Option<i32>,
12950    #[prost(uint64, optional, tag="3")]
12951    pub phys: ::core::option::Option<u64>,
12952    #[prost(uint64, optional, tag="4")]
12953    pub size: ::core::option::Option<u64>,
12954    #[prost(uint64, optional, tag="5")]
12955    pub len: ::core::option::Option<u64>,
12956    #[prost(uint32, optional, tag="6")]
12957    pub attr: ::core::option::Option<u32>,
12958    #[prost(int32, optional, tag="7")]
12959    pub mflags: ::core::option::Option<i32>,
12960}
12961// End of protos/perfetto/trace/ftrace/fastrpc.proto
12962
12963// Begin of protos/perfetto/trace/ftrace/fence.proto
12964
12965#[derive(Clone, PartialEq, ::prost::Message)]
12966pub struct FenceInitFtraceEvent {
12967    #[prost(uint32, optional, tag="1")]
12968    pub context: ::core::option::Option<u32>,
12969    #[prost(string, optional, tag="2")]
12970    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12971    #[prost(uint32, optional, tag="3")]
12972    pub seqno: ::core::option::Option<u32>,
12973    #[prost(string, optional, tag="4")]
12974    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12975}
12976#[derive(Clone, PartialEq, ::prost::Message)]
12977pub struct FenceDestroyFtraceEvent {
12978    #[prost(uint32, optional, tag="1")]
12979    pub context: ::core::option::Option<u32>,
12980    #[prost(string, optional, tag="2")]
12981    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12982    #[prost(uint32, optional, tag="3")]
12983    pub seqno: ::core::option::Option<u32>,
12984    #[prost(string, optional, tag="4")]
12985    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12986}
12987#[derive(Clone, PartialEq, ::prost::Message)]
12988pub struct FenceEnableSignalFtraceEvent {
12989    #[prost(uint32, optional, tag="1")]
12990    pub context: ::core::option::Option<u32>,
12991    #[prost(string, optional, tag="2")]
12992    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12993    #[prost(uint32, optional, tag="3")]
12994    pub seqno: ::core::option::Option<u32>,
12995    #[prost(string, optional, tag="4")]
12996    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12997}
12998#[derive(Clone, PartialEq, ::prost::Message)]
12999pub struct FenceSignaledFtraceEvent {
13000    #[prost(uint32, optional, tag="1")]
13001    pub context: ::core::option::Option<u32>,
13002    #[prost(string, optional, tag="2")]
13003    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13004    #[prost(uint32, optional, tag="3")]
13005    pub seqno: ::core::option::Option<u32>,
13006    #[prost(string, optional, tag="4")]
13007    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13008}
13009// End of protos/perfetto/trace/ftrace/fence.proto
13010
13011// Begin of protos/perfetto/trace/ftrace/filemap.proto
13012
13013#[derive(Clone, PartialEq, ::prost::Message)]
13014pub struct MmFilemapAddToPageCacheFtraceEvent {
13015    #[prost(uint64, optional, tag="1")]
13016    pub pfn: ::core::option::Option<u64>,
13017    #[prost(uint64, optional, tag="2")]
13018    pub i_ino: ::core::option::Option<u64>,
13019    #[prost(uint64, optional, tag="3")]
13020    pub index: ::core::option::Option<u64>,
13021    #[prost(uint64, optional, tag="4")]
13022    pub s_dev: ::core::option::Option<u64>,
13023    #[prost(uint64, optional, tag="5")]
13024    pub page: ::core::option::Option<u64>,
13025}
13026#[derive(Clone, PartialEq, ::prost::Message)]
13027pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
13028    #[prost(uint64, optional, tag="1")]
13029    pub pfn: ::core::option::Option<u64>,
13030    #[prost(uint64, optional, tag="2")]
13031    pub i_ino: ::core::option::Option<u64>,
13032    #[prost(uint64, optional, tag="3")]
13033    pub index: ::core::option::Option<u64>,
13034    #[prost(uint64, optional, tag="4")]
13035    pub s_dev: ::core::option::Option<u64>,
13036    #[prost(uint64, optional, tag="5")]
13037    pub page: ::core::option::Option<u64>,
13038}
13039// End of protos/perfetto/trace/ftrace/filemap.proto
13040
13041// Begin of protos/perfetto/trace/ftrace/fs.proto
13042
13043#[derive(Clone, PartialEq, ::prost::Message)]
13044pub struct DoSysOpenFtraceEvent {
13045    #[prost(string, optional, tag="1")]
13046    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13047    #[prost(int32, optional, tag="2")]
13048    pub flags: ::core::option::Option<i32>,
13049    #[prost(int32, optional, tag="3")]
13050    pub mode: ::core::option::Option<i32>,
13051}
13052#[derive(Clone, PartialEq, ::prost::Message)]
13053pub struct OpenExecFtraceEvent {
13054    #[prost(string, optional, tag="1")]
13055    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13056}
13057// End of protos/perfetto/trace/ftrace/fs.proto
13058
13059// Begin of protos/perfetto/trace/ftrace/ftrace.proto
13060
13061#[derive(Clone, PartialEq, ::prost::Message)]
13062pub struct PrintFtraceEvent {
13063    #[prost(uint64, optional, tag="1")]
13064    pub ip: ::core::option::Option<u64>,
13065    #[prost(string, optional, tag="2")]
13066    pub buf: ::core::option::Option<::prost::alloc::string::String>,
13067}
13068#[derive(Clone, PartialEq, ::prost::Message)]
13069pub struct FuncgraphEntryFtraceEvent {
13070    #[prost(int32, optional, tag="1")]
13071    pub depth: ::core::option::Option<i32>,
13072    #[prost(uint64, optional, tag="2")]
13073    pub func: ::core::option::Option<u64>,
13074}
13075#[derive(Clone, PartialEq, ::prost::Message)]
13076pub struct FuncgraphExitFtraceEvent {
13077    #[prost(uint64, optional, tag="1")]
13078    pub calltime: ::core::option::Option<u64>,
13079    #[prost(int32, optional, tag="2")]
13080    pub depth: ::core::option::Option<i32>,
13081    #[prost(uint64, optional, tag="3")]
13082    pub func: ::core::option::Option<u64>,
13083    #[prost(uint64, optional, tag="4")]
13084    pub overrun: ::core::option::Option<u64>,
13085    #[prost(uint64, optional, tag="5")]
13086    pub rettime: ::core::option::Option<u64>,
13087}
13088// End of protos/perfetto/trace/ftrace/ftrace.proto
13089
13090// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13091
13092#[derive(Clone, PartialEq, ::prost::Message)]
13093pub struct FwtpPerfettoCounterFtraceEvent {
13094    #[prost(uint64, optional, tag="1")]
13095    pub timestamp: ::core::option::Option<u64>,
13096    #[prost(uint32, optional, tag="2")]
13097    pub track_id: ::core::option::Option<u32>,
13098    #[prost(string, optional, tag="3")]
13099    pub category: ::core::option::Option<::prost::alloc::string::String>,
13100    #[prost(string, optional, tag="4")]
13101    pub name: ::core::option::Option<::prost::alloc::string::String>,
13102    #[prost(uint32, optional, tag="5")]
13103    pub value: ::core::option::Option<u32>,
13104}
13105#[derive(Clone, PartialEq, ::prost::Message)]
13106pub struct FwtpPerfettoSliceFtraceEvent {
13107    #[prost(uint64, optional, tag="1")]
13108    pub timestamp: ::core::option::Option<u64>,
13109    #[prost(uint32, optional, tag="2")]
13110    pub track_id: ::core::option::Option<u32>,
13111    #[prost(string, optional, tag="3")]
13112    pub category: ::core::option::Option<::prost::alloc::string::String>,
13113    #[prost(string, optional, tag="4")]
13114    pub name: ::core::option::Option<::prost::alloc::string::String>,
13115    #[prost(uint32, optional, tag="5")]
13116    pub begin: ::core::option::Option<u32>,
13117}
13118// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13119
13120// Begin of protos/perfetto/trace/ftrace/g2d.proto
13121
13122#[derive(Clone, PartialEq, ::prost::Message)]
13123pub struct G2dTracingMarkWriteFtraceEvent {
13124    #[prost(int32, optional, tag="1")]
13125    pub pid: ::core::option::Option<i32>,
13126    #[prost(string, optional, tag="4")]
13127    pub name: ::core::option::Option<::prost::alloc::string::String>,
13128    #[prost(uint32, optional, tag="5")]
13129    pub r#type: ::core::option::Option<u32>,
13130    #[prost(int32, optional, tag="6")]
13131    pub value: ::core::option::Option<i32>,
13132}
13133// End of protos/perfetto/trace/ftrace/g2d.proto
13134
13135// Begin of protos/perfetto/trace/ftrace/generic.proto
13136
13137/// This generic proto is used to output events in the trace
13138/// when a specific proto for that event does not exist.
13139#[derive(Clone, PartialEq, ::prost::Message)]
13140pub struct GenericFtraceEvent {
13141    #[prost(string, optional, tag="1")]
13142    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
13143    #[prost(message, repeated, tag="2")]
13144    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
13145}
13146/// Nested message and enum types in `GenericFtraceEvent`.
13147pub mod generic_ftrace_event {
13148    #[derive(Clone, PartialEq, ::prost::Message)]
13149    pub struct Field {
13150        #[prost(string, optional, tag="1")]
13151        pub name: ::core::option::Option<::prost::alloc::string::String>,
13152        #[prost(oneof="field::Value", tags="3, 4, 5")]
13153        pub value: ::core::option::Option<field::Value>,
13154    }
13155    /// Nested message and enum types in `Field`.
13156    pub mod field {
13157        #[derive(Clone, PartialEq, ::prost::Oneof)]
13158        pub enum Value {
13159            #[prost(string, tag="3")]
13160            StrValue(::prost::alloc::string::String),
13161            #[prost(int64, tag="4")]
13162            IntValue(i64),
13163            #[prost(uint64, tag="5")]
13164            UintValue(u64),
13165        }
13166    }
13167}
13168#[derive(Clone, PartialEq, ::prost::Message)]
13169pub struct KprobeEvent {
13170    #[prost(string, optional, tag="1")]
13171    pub name: ::core::option::Option<::prost::alloc::string::String>,
13172    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
13173    pub r#type: ::core::option::Option<i32>,
13174}
13175/// Nested message and enum types in `KprobeEvent`.
13176pub mod kprobe_event {
13177    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
13178    #[repr(i32)]
13179    pub enum KprobeType {
13180        Unknown = 0,
13181        Begin = 1,
13182        End = 2,
13183        Instant = 3,
13184    }
13185    impl KprobeType {
13186        /// String value of the enum field names used in the ProtoBuf definition.
13187        ///
13188        /// The values are not transformed in any way and thus are considered stable
13189        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13190        pub fn as_str_name(&self) -> &'static str {
13191            match self {
13192                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
13193                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
13194                KprobeType::End => "KPROBE_TYPE_END",
13195                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
13196            }
13197        }
13198    }
13199}
13200// End of protos/perfetto/trace/ftrace/generic.proto
13201
13202// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
13203
13204#[derive(Clone, PartialEq, ::prost::Message)]
13205pub struct GoogleIccEventFtraceEvent {
13206    #[prost(string, optional, tag="1")]
13207    pub event: ::core::option::Option<::prost::alloc::string::String>,
13208    #[prost(uint64, optional, tag="2")]
13209    pub timestamp: ::core::option::Option<u64>,
13210}
13211// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
13212
13213// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
13214
13215#[derive(Clone, PartialEq, ::prost::Message)]
13216pub struct GoogleIrmEventFtraceEvent {
13217    #[prost(string, optional, tag="1")]
13218    pub event: ::core::option::Option<::prost::alloc::string::String>,
13219    #[prost(uint64, optional, tag="2")]
13220    pub timestamp: ::core::option::Option<u64>,
13221}
13222// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
13223
13224// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
13225
13226#[derive(Clone, PartialEq, ::prost::Message)]
13227pub struct GpuMemTotalFtraceEvent {
13228    #[prost(uint32, optional, tag="1")]
13229    pub gpu_id: ::core::option::Option<u32>,
13230    #[prost(uint32, optional, tag="2")]
13231    pub pid: ::core::option::Option<u32>,
13232    #[prost(uint64, optional, tag="3")]
13233    pub size: ::core::option::Option<u64>,
13234}
13235// End of protos/perfetto/trace/ftrace/gpu_mem.proto
13236
13237// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13238
13239#[derive(Clone, PartialEq, ::prost::Message)]
13240pub struct DrmSchedJobFtraceEvent {
13241    #[prost(uint64, optional, tag="1")]
13242    pub entity: ::core::option::Option<u64>,
13243    #[prost(uint64, optional, tag="2")]
13244    pub fence: ::core::option::Option<u64>,
13245    #[prost(int32, optional, tag="3")]
13246    pub hw_job_count: ::core::option::Option<i32>,
13247    #[prost(uint64, optional, tag="4")]
13248    pub id: ::core::option::Option<u64>,
13249    #[prost(uint32, optional, tag="5")]
13250    pub job_count: ::core::option::Option<u32>,
13251    #[prost(string, optional, tag="6")]
13252    pub name: ::core::option::Option<::prost::alloc::string::String>,
13253}
13254#[derive(Clone, PartialEq, ::prost::Message)]
13255pub struct DrmRunJobFtraceEvent {
13256    #[prost(uint64, optional, tag="1")]
13257    pub entity: ::core::option::Option<u64>,
13258    #[prost(uint64, optional, tag="2")]
13259    pub fence: ::core::option::Option<u64>,
13260    #[prost(int32, optional, tag="3")]
13261    pub hw_job_count: ::core::option::Option<i32>,
13262    #[prost(uint64, optional, tag="4")]
13263    pub id: ::core::option::Option<u64>,
13264    #[prost(uint32, optional, tag="5")]
13265    pub job_count: ::core::option::Option<u32>,
13266    #[prost(string, optional, tag="6")]
13267    pub name: ::core::option::Option<::prost::alloc::string::String>,
13268}
13269#[derive(Clone, PartialEq, ::prost::Message)]
13270pub struct DrmSchedProcessJobFtraceEvent {
13271    #[prost(uint64, optional, tag="1")]
13272    pub fence: ::core::option::Option<u64>,
13273}
13274#[derive(Clone, PartialEq, ::prost::Message)]
13275pub struct DrmSchedJobAddDepFtraceEvent {
13276    #[prost(uint64, optional, tag="1")]
13277    pub fence_context: ::core::option::Option<u64>,
13278    #[prost(uint64, optional, tag="2")]
13279    pub fence_seqno: ::core::option::Option<u64>,
13280    #[prost(uint64, optional, tag="3")]
13281    pub ctx: ::core::option::Option<u64>,
13282    #[prost(uint64, optional, tag="4")]
13283    pub seqno: ::core::option::Option<u64>,
13284}
13285#[derive(Clone, PartialEq, ::prost::Message)]
13286pub struct DrmSchedJobDoneFtraceEvent {
13287    #[prost(uint64, optional, tag="1")]
13288    pub fence_context: ::core::option::Option<u64>,
13289    #[prost(uint64, optional, tag="2")]
13290    pub fence_seqno: ::core::option::Option<u64>,
13291}
13292#[derive(Clone, PartialEq, ::prost::Message)]
13293pub struct DrmSchedJobQueueFtraceEvent {
13294    #[prost(string, optional, tag="1")]
13295    pub name: ::core::option::Option<::prost::alloc::string::String>,
13296    #[prost(uint32, optional, tag="2")]
13297    pub job_count: ::core::option::Option<u32>,
13298    #[prost(int32, optional, tag="3")]
13299    pub hw_job_count: ::core::option::Option<i32>,
13300    #[prost(string, optional, tag="4")]
13301    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13302    #[prost(uint64, optional, tag="5")]
13303    pub fence_context: ::core::option::Option<u64>,
13304    #[prost(uint64, optional, tag="6")]
13305    pub fence_seqno: ::core::option::Option<u64>,
13306    #[prost(uint64, optional, tag="7")]
13307    pub client_id: ::core::option::Option<u64>,
13308}
13309#[derive(Clone, PartialEq, ::prost::Message)]
13310pub struct DrmSchedJobRunFtraceEvent {
13311    #[prost(string, optional, tag="1")]
13312    pub name: ::core::option::Option<::prost::alloc::string::String>,
13313    #[prost(uint32, optional, tag="2")]
13314    pub job_count: ::core::option::Option<u32>,
13315    #[prost(int32, optional, tag="3")]
13316    pub hw_job_count: ::core::option::Option<i32>,
13317    #[prost(string, optional, tag="4")]
13318    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13319    #[prost(uint64, optional, tag="5")]
13320    pub fence_context: ::core::option::Option<u64>,
13321    #[prost(uint64, optional, tag="6")]
13322    pub fence_seqno: ::core::option::Option<u64>,
13323    #[prost(uint64, optional, tag="7")]
13324    pub client_id: ::core::option::Option<u64>,
13325}
13326#[derive(Clone, PartialEq, ::prost::Message)]
13327pub struct DrmSchedJobUnschedulableFtraceEvent {
13328    #[prost(uint64, optional, tag="1")]
13329    pub fence_context: ::core::option::Option<u64>,
13330    #[prost(uint64, optional, tag="2")]
13331    pub fence_seqno: ::core::option::Option<u64>,
13332    #[prost(uint64, optional, tag="3")]
13333    pub ctx: ::core::option::Option<u64>,
13334    #[prost(uint64, optional, tag="4")]
13335    pub seqno: ::core::option::Option<u64>,
13336}
13337// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13338
13339// Begin of protos/perfetto/trace/ftrace/hyp.proto
13340
13341#[derive(Clone, PartialEq, ::prost::Message)]
13342pub struct HypEnterFtraceEvent {
13343}
13344#[derive(Clone, PartialEq, ::prost::Message)]
13345pub struct HypExitFtraceEvent {
13346}
13347#[derive(Clone, PartialEq, ::prost::Message)]
13348pub struct HostHcallFtraceEvent {
13349    #[prost(uint32, optional, tag="1")]
13350    pub id: ::core::option::Option<u32>,
13351    #[prost(uint32, optional, tag="2")]
13352    pub invalid: ::core::option::Option<u32>,
13353}
13354#[derive(Clone, PartialEq, ::prost::Message)]
13355pub struct HostSmcFtraceEvent {
13356    #[prost(uint64, optional, tag="1")]
13357    pub id: ::core::option::Option<u64>,
13358    #[prost(uint32, optional, tag="2")]
13359    pub forwarded: ::core::option::Option<u32>,
13360}
13361#[derive(Clone, PartialEq, ::prost::Message)]
13362pub struct HostMemAbortFtraceEvent {
13363    #[prost(uint64, optional, tag="1")]
13364    pub esr: ::core::option::Option<u64>,
13365    #[prost(uint64, optional, tag="2")]
13366    pub addr: ::core::option::Option<u64>,
13367}
13368#[derive(Clone, PartialEq, ::prost::Message)]
13369pub struct HostFfaCallFtraceEvent {
13370    #[prost(uint64, optional, tag="1")]
13371    pub func_id: ::core::option::Option<u64>,
13372    #[prost(uint64, optional, tag="2")]
13373    pub res_a1: ::core::option::Option<u64>,
13374    #[prost(uint64, optional, tag="3")]
13375    pub res_a2: ::core::option::Option<u64>,
13376    #[prost(uint64, optional, tag="4")]
13377    pub res_a3: ::core::option::Option<u64>,
13378    #[prost(uint64, optional, tag="5")]
13379    pub res_a4: ::core::option::Option<u64>,
13380    #[prost(int32, optional, tag="6")]
13381    pub handled: ::core::option::Option<i32>,
13382    #[prost(int32, optional, tag="7")]
13383    pub err: ::core::option::Option<i32>,
13384}
13385#[derive(Clone, PartialEq, ::prost::Message)]
13386pub struct IommuIdmapFtraceEvent {
13387    #[prost(uint64, optional, tag="1")]
13388    pub from: ::core::option::Option<u64>,
13389    #[prost(uint64, optional, tag="2")]
13390    pub to: ::core::option::Option<u64>,
13391    #[prost(int32, optional, tag="3")]
13392    pub prot: ::core::option::Option<i32>,
13393}
13394#[derive(Clone, PartialEq, ::prost::Message)]
13395pub struct PsciMemProtectFtraceEvent {
13396    #[prost(uint64, optional, tag="1")]
13397    pub count: ::core::option::Option<u64>,
13398    #[prost(uint64, optional, tag="2")]
13399    pub was: ::core::option::Option<u64>,
13400}
13401// End of protos/perfetto/trace/ftrace/hyp.proto
13402
13403// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
13404
13405#[derive(Clone, PartialEq, ::prost::Message)]
13406pub struct HypervisorHostHcallFtraceEvent {
13407    #[prost(uint32, optional, tag="1")]
13408    pub id: ::core::option::Option<u32>,
13409    #[prost(uint32, optional, tag="2")]
13410    pub invalid: ::core::option::Option<u32>,
13411}
13412#[derive(Clone, PartialEq, ::prost::Message)]
13413pub struct HypervisorHostSmcFtraceEvent {
13414    #[prost(uint64, optional, tag="1")]
13415    pub id: ::core::option::Option<u64>,
13416    #[prost(uint32, optional, tag="2")]
13417    pub forwarded: ::core::option::Option<u32>,
13418}
13419#[derive(Clone, PartialEq, ::prost::Message)]
13420pub struct HypervisorHypExitFtraceEvent {
13421}
13422#[derive(Clone, PartialEq, ::prost::Message)]
13423pub struct HypervisorIommuIdmapFtraceEvent {
13424    #[prost(uint64, optional, tag="1")]
13425    pub from: ::core::option::Option<u64>,
13426    #[prost(uint64, optional, tag="2")]
13427    pub to: ::core::option::Option<u64>,
13428    #[prost(int32, optional, tag="3")]
13429    pub prot: ::core::option::Option<i32>,
13430}
13431#[derive(Clone, PartialEq, ::prost::Message)]
13432pub struct HypervisorPsciMemProtectFtraceEvent {
13433    #[prost(uint64, optional, tag="1")]
13434    pub count: ::core::option::Option<u64>,
13435    #[prost(uint64, optional, tag="2")]
13436    pub was: ::core::option::Option<u64>,
13437}
13438#[derive(Clone, PartialEq, ::prost::Message)]
13439pub struct HypervisorHostMemAbortFtraceEvent {
13440    #[prost(uint64, optional, tag="1")]
13441    pub esr: ::core::option::Option<u64>,
13442    #[prost(uint64, optional, tag="2")]
13443    pub addr: ::core::option::Option<u64>,
13444}
13445#[derive(Clone, PartialEq, ::prost::Message)]
13446pub struct HypervisorHypEnterFtraceEvent {
13447}
13448#[derive(Clone, PartialEq, ::prost::Message)]
13449pub struct HypervisorIommuIdmapCompleteFtraceEvent {
13450    #[prost(uint32, optional, tag="1")]
13451    pub map: ::core::option::Option<u32>,
13452}
13453#[derive(Clone, PartialEq, ::prost::Message)]
13454pub struct HypervisorVcpuIllegalTrapFtraceEvent {
13455    #[prost(uint64, optional, tag="1")]
13456    pub esr: ::core::option::Option<u64>,
13457}
13458// End of protos/perfetto/trace/ftrace/hypervisor.proto
13459
13460// Begin of protos/perfetto/trace/ftrace/i2c.proto
13461
13462#[derive(Clone, PartialEq, ::prost::Message)]
13463pub struct I2cReadFtraceEvent {
13464    #[prost(int32, optional, tag="1")]
13465    pub adapter_nr: ::core::option::Option<i32>,
13466    #[prost(uint32, optional, tag="2")]
13467    pub msg_nr: ::core::option::Option<u32>,
13468    #[prost(uint32, optional, tag="3")]
13469    pub addr: ::core::option::Option<u32>,
13470    #[prost(uint32, optional, tag="4")]
13471    pub flags: ::core::option::Option<u32>,
13472    #[prost(uint32, optional, tag="5")]
13473    pub len: ::core::option::Option<u32>,
13474}
13475#[derive(Clone, PartialEq, ::prost::Message)]
13476pub struct I2cWriteFtraceEvent {
13477    #[prost(int32, optional, tag="1")]
13478    pub adapter_nr: ::core::option::Option<i32>,
13479    #[prost(uint32, optional, tag="2")]
13480    pub msg_nr: ::core::option::Option<u32>,
13481    #[prost(uint32, optional, tag="3")]
13482    pub addr: ::core::option::Option<u32>,
13483    #[prost(uint32, optional, tag="4")]
13484    pub flags: ::core::option::Option<u32>,
13485    #[prost(uint32, optional, tag="5")]
13486    pub len: ::core::option::Option<u32>,
13487    #[prost(bytes="vec", optional, tag="7")]
13488    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13489}
13490#[derive(Clone, PartialEq, ::prost::Message)]
13491pub struct I2cResultFtraceEvent {
13492    #[prost(int32, optional, tag="1")]
13493    pub adapter_nr: ::core::option::Option<i32>,
13494    #[prost(uint32, optional, tag="2")]
13495    pub nr_msgs: ::core::option::Option<u32>,
13496    #[prost(int32, optional, tag="3")]
13497    pub ret: ::core::option::Option<i32>,
13498}
13499#[derive(Clone, PartialEq, ::prost::Message)]
13500pub struct I2cReplyFtraceEvent {
13501    #[prost(int32, optional, tag="1")]
13502    pub adapter_nr: ::core::option::Option<i32>,
13503    #[prost(uint32, optional, tag="2")]
13504    pub msg_nr: ::core::option::Option<u32>,
13505    #[prost(uint32, optional, tag="3")]
13506    pub addr: ::core::option::Option<u32>,
13507    #[prost(uint32, optional, tag="4")]
13508    pub flags: ::core::option::Option<u32>,
13509    #[prost(uint32, optional, tag="5")]
13510    pub len: ::core::option::Option<u32>,
13511    #[prost(bytes="vec", optional, tag="7")]
13512    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13513}
13514#[derive(Clone, PartialEq, ::prost::Message)]
13515pub struct SmbusReadFtraceEvent {
13516    #[prost(int32, optional, tag="1")]
13517    pub adapter_nr: ::core::option::Option<i32>,
13518    #[prost(uint32, optional, tag="2")]
13519    pub flags: ::core::option::Option<u32>,
13520    #[prost(uint32, optional, tag="3")]
13521    pub addr: ::core::option::Option<u32>,
13522    #[prost(uint32, optional, tag="4")]
13523    pub command: ::core::option::Option<u32>,
13524    #[prost(uint32, optional, tag="5")]
13525    pub protocol: ::core::option::Option<u32>,
13526}
13527#[derive(Clone, PartialEq, ::prost::Message)]
13528pub struct SmbusWriteFtraceEvent {
13529    #[prost(int32, optional, tag="1")]
13530    pub adapter_nr: ::core::option::Option<i32>,
13531    #[prost(uint32, optional, tag="2")]
13532    pub addr: ::core::option::Option<u32>,
13533    #[prost(uint32, optional, tag="3")]
13534    pub flags: ::core::option::Option<u32>,
13535    #[prost(uint32, optional, tag="4")]
13536    pub command: ::core::option::Option<u32>,
13537    #[prost(uint32, optional, tag="5")]
13538    pub len: ::core::option::Option<u32>,
13539    #[prost(uint32, optional, tag="6")]
13540    pub protocol: ::core::option::Option<u32>,
13541}
13542#[derive(Clone, PartialEq, ::prost::Message)]
13543pub struct SmbusResultFtraceEvent {
13544    #[prost(int32, optional, tag="1")]
13545    pub adapter_nr: ::core::option::Option<i32>,
13546    #[prost(uint32, optional, tag="2")]
13547    pub addr: ::core::option::Option<u32>,
13548    #[prost(uint32, optional, tag="3")]
13549    pub flags: ::core::option::Option<u32>,
13550    #[prost(uint32, optional, tag="4")]
13551    pub read_write: ::core::option::Option<u32>,
13552    #[prost(uint32, optional, tag="5")]
13553    pub command: ::core::option::Option<u32>,
13554    #[prost(int32, optional, tag="6")]
13555    pub res: ::core::option::Option<i32>,
13556    #[prost(uint32, optional, tag="7")]
13557    pub protocol: ::core::option::Option<u32>,
13558}
13559#[derive(Clone, PartialEq, ::prost::Message)]
13560pub struct SmbusReplyFtraceEvent {
13561    #[prost(int32, optional, tag="1")]
13562    pub adapter_nr: ::core::option::Option<i32>,
13563    #[prost(uint32, optional, tag="2")]
13564    pub addr: ::core::option::Option<u32>,
13565    #[prost(uint32, optional, tag="3")]
13566    pub flags: ::core::option::Option<u32>,
13567    #[prost(uint32, optional, tag="4")]
13568    pub command: ::core::option::Option<u32>,
13569    #[prost(uint32, optional, tag="5")]
13570    pub len: ::core::option::Option<u32>,
13571    #[prost(uint32, optional, tag="6")]
13572    pub protocol: ::core::option::Option<u32>,
13573}
13574// End of protos/perfetto/trace/ftrace/i2c.proto
13575
13576// Begin of protos/perfetto/trace/ftrace/ion.proto
13577
13578#[derive(Clone, PartialEq, ::prost::Message)]
13579pub struct IonStatFtraceEvent {
13580    #[prost(uint32, optional, tag="1")]
13581    pub buffer_id: ::core::option::Option<u32>,
13582    #[prost(int64, optional, tag="2")]
13583    pub len: ::core::option::Option<i64>,
13584    #[prost(uint64, optional, tag="3")]
13585    pub total_allocated: ::core::option::Option<u64>,
13586}
13587// End of protos/perfetto/trace/ftrace/ion.proto
13588
13589// Begin of protos/perfetto/trace/ftrace/ipi.proto
13590
13591#[derive(Clone, PartialEq, ::prost::Message)]
13592pub struct IpiEntryFtraceEvent {
13593    #[prost(string, optional, tag="1")]
13594    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13595}
13596#[derive(Clone, PartialEq, ::prost::Message)]
13597pub struct IpiExitFtraceEvent {
13598    #[prost(string, optional, tag="1")]
13599    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13600}
13601#[derive(Clone, PartialEq, ::prost::Message)]
13602pub struct IpiRaiseFtraceEvent {
13603    #[prost(uint32, optional, tag="1")]
13604    pub target_cpus: ::core::option::Option<u32>,
13605    #[prost(string, optional, tag="2")]
13606    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13607}
13608// End of protos/perfetto/trace/ftrace/ipi.proto
13609
13610// Begin of protos/perfetto/trace/ftrace/irq.proto
13611
13612#[derive(Clone, PartialEq, ::prost::Message)]
13613pub struct SoftirqEntryFtraceEvent {
13614    #[prost(uint32, optional, tag="1")]
13615    pub vec: ::core::option::Option<u32>,
13616}
13617#[derive(Clone, PartialEq, ::prost::Message)]
13618pub struct SoftirqExitFtraceEvent {
13619    #[prost(uint32, optional, tag="1")]
13620    pub vec: ::core::option::Option<u32>,
13621}
13622#[derive(Clone, PartialEq, ::prost::Message)]
13623pub struct SoftirqRaiseFtraceEvent {
13624    #[prost(uint32, optional, tag="1")]
13625    pub vec: ::core::option::Option<u32>,
13626}
13627#[derive(Clone, PartialEq, ::prost::Message)]
13628pub struct IrqHandlerEntryFtraceEvent {
13629    #[prost(int32, optional, tag="1")]
13630    pub irq: ::core::option::Option<i32>,
13631    #[prost(string, optional, tag="2")]
13632    pub name: ::core::option::Option<::prost::alloc::string::String>,
13633    #[prost(uint32, optional, tag="3")]
13634    pub handler: ::core::option::Option<u32>,
13635}
13636#[derive(Clone, PartialEq, ::prost::Message)]
13637pub struct IrqHandlerExitFtraceEvent {
13638    #[prost(int32, optional, tag="1")]
13639    pub irq: ::core::option::Option<i32>,
13640    #[prost(int32, optional, tag="2")]
13641    pub ret: ::core::option::Option<i32>,
13642}
13643// End of protos/perfetto/trace/ftrace/irq.proto
13644
13645// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
13646
13647#[derive(Clone, PartialEq, ::prost::Message)]
13648pub struct LocalTimerEntryFtraceEvent {
13649    #[prost(int32, optional, tag="1")]
13650    pub vector: ::core::option::Option<i32>,
13651}
13652#[derive(Clone, PartialEq, ::prost::Message)]
13653pub struct LocalTimerExitFtraceEvent {
13654    #[prost(int32, optional, tag="1")]
13655    pub vector: ::core::option::Option<i32>,
13656}
13657// End of protos/perfetto/trace/ftrace/irq_vectors.proto
13658
13659// Begin of protos/perfetto/trace/ftrace/kgsl.proto
13660
13661#[derive(Clone, PartialEq, ::prost::Message)]
13662pub struct KgslGpuFrequencyFtraceEvent {
13663    #[prost(uint32, optional, tag="1")]
13664    pub gpu_freq: ::core::option::Option<u32>,
13665    #[prost(uint32, optional, tag="2")]
13666    pub gpu_id: ::core::option::Option<u32>,
13667}
13668#[derive(Clone, PartialEq, ::prost::Message)]
13669pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
13670    #[prost(uint32, optional, tag="1")]
13671    pub id: ::core::option::Option<u32>,
13672    #[prost(uint32, optional, tag="2")]
13673    pub timestamp: ::core::option::Option<u32>,
13674    #[prost(uint32, optional, tag="3")]
13675    pub queued: ::core::option::Option<u32>,
13676    #[prost(uint32, optional, tag="4")]
13677    pub flags: ::core::option::Option<u32>,
13678    #[prost(uint32, optional, tag="5")]
13679    pub prio: ::core::option::Option<u32>,
13680}
13681#[derive(Clone, PartialEq, ::prost::Message)]
13682pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13683    #[prost(uint32, optional, tag="1")]
13684    pub id: ::core::option::Option<u32>,
13685    #[prost(uint32, optional, tag="2")]
13686    pub timestamp: ::core::option::Option<u32>,
13687    #[prost(int64, optional, tag="3")]
13688    pub inflight: ::core::option::Option<i64>,
13689    #[prost(uint32, optional, tag="4")]
13690    pub flags: ::core::option::Option<u32>,
13691    #[prost(uint64, optional, tag="5")]
13692    pub ticks: ::core::option::Option<u64>,
13693    #[prost(uint64, optional, tag="6")]
13694    pub secs: ::core::option::Option<u64>,
13695    #[prost(uint64, optional, tag="7")]
13696    pub usecs: ::core::option::Option<u64>,
13697    #[prost(int32, optional, tag="8")]
13698    pub prio: ::core::option::Option<i32>,
13699    #[prost(int32, optional, tag="9")]
13700    pub rb_id: ::core::option::Option<i32>,
13701    #[prost(uint32, optional, tag="10")]
13702    pub rptr: ::core::option::Option<u32>,
13703    #[prost(uint32, optional, tag="11")]
13704    pub wptr: ::core::option::Option<u32>,
13705    #[prost(int32, optional, tag="12")]
13706    pub q_inflight: ::core::option::Option<i32>,
13707    #[prost(int32, optional, tag="13")]
13708    pub dispatch_queue: ::core::option::Option<i32>,
13709}
13710#[derive(Clone, PartialEq, ::prost::Message)]
13711pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13712    #[prost(uint32, optional, tag="1")]
13713    pub id: ::core::option::Option<u32>,
13714    #[prost(uint32, optional, tag="2")]
13715    pub timestamp: ::core::option::Option<u32>,
13716    #[prost(uint64, optional, tag="3")]
13717    pub ticks: ::core::option::Option<u64>,
13718    #[prost(int32, optional, tag="4")]
13719    pub prio: ::core::option::Option<i32>,
13720}
13721#[derive(Clone, PartialEq, ::prost::Message)]
13722pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13723    #[prost(uint32, optional, tag="1")]
13724    pub id: ::core::option::Option<u32>,
13725    #[prost(uint32, optional, tag="2")]
13726    pub timestamp: ::core::option::Option<u32>,
13727    #[prost(int64, optional, tag="3")]
13728    pub inflight: ::core::option::Option<i64>,
13729    #[prost(uint32, optional, tag="4")]
13730    pub recovery: ::core::option::Option<u32>,
13731    #[prost(uint32, optional, tag="5")]
13732    pub flags: ::core::option::Option<u32>,
13733    #[prost(uint64, optional, tag="6")]
13734    pub start: ::core::option::Option<u64>,
13735    #[prost(uint64, optional, tag="7")]
13736    pub retire: ::core::option::Option<u64>,
13737    #[prost(int32, optional, tag="8")]
13738    pub prio: ::core::option::Option<i32>,
13739    #[prost(int32, optional, tag="9")]
13740    pub rb_id: ::core::option::Option<i32>,
13741    #[prost(uint32, optional, tag="10")]
13742    pub rptr: ::core::option::Option<u32>,
13743    #[prost(uint32, optional, tag="11")]
13744    pub wptr: ::core::option::Option<u32>,
13745    #[prost(int32, optional, tag="12")]
13746    pub q_inflight: ::core::option::Option<i32>,
13747    #[prost(uint64, optional, tag="13")]
13748    pub fault_recovery: ::core::option::Option<u64>,
13749    #[prost(uint32, optional, tag="14")]
13750    pub dispatch_queue: ::core::option::Option<u32>,
13751    #[prost(uint64, optional, tag="15")]
13752    pub submitted_to_rb: ::core::option::Option<u64>,
13753    #[prost(uint64, optional, tag="16")]
13754    pub retired_on_gmu: ::core::option::Option<u64>,
13755    #[prost(uint64, optional, tag="17")]
13756    pub active: ::core::option::Option<u64>,
13757}
13758// End of protos/perfetto/trace/ftrace/kgsl.proto
13759
13760// Begin of protos/perfetto/trace/ftrace/kmem.proto
13761
13762#[derive(Clone, PartialEq, ::prost::Message)]
13763pub struct AllocPagesIommuEndFtraceEvent {
13764    #[prost(uint32, optional, tag="1")]
13765    pub gfp_flags: ::core::option::Option<u32>,
13766    #[prost(uint32, optional, tag="2")]
13767    pub order: ::core::option::Option<u32>,
13768}
13769#[derive(Clone, PartialEq, ::prost::Message)]
13770pub struct AllocPagesIommuFailFtraceEvent {
13771    #[prost(uint32, optional, tag="1")]
13772    pub gfp_flags: ::core::option::Option<u32>,
13773    #[prost(uint32, optional, tag="2")]
13774    pub order: ::core::option::Option<u32>,
13775}
13776#[derive(Clone, PartialEq, ::prost::Message)]
13777pub struct AllocPagesIommuStartFtraceEvent {
13778    #[prost(uint32, optional, tag="1")]
13779    pub gfp_flags: ::core::option::Option<u32>,
13780    #[prost(uint32, optional, tag="2")]
13781    pub order: ::core::option::Option<u32>,
13782}
13783#[derive(Clone, PartialEq, ::prost::Message)]
13784pub struct AllocPagesSysEndFtraceEvent {
13785    #[prost(uint32, optional, tag="1")]
13786    pub gfp_flags: ::core::option::Option<u32>,
13787    #[prost(uint32, optional, tag="2")]
13788    pub order: ::core::option::Option<u32>,
13789}
13790#[derive(Clone, PartialEq, ::prost::Message)]
13791pub struct AllocPagesSysFailFtraceEvent {
13792    #[prost(uint32, optional, tag="1")]
13793    pub gfp_flags: ::core::option::Option<u32>,
13794    #[prost(uint32, optional, tag="2")]
13795    pub order: ::core::option::Option<u32>,
13796}
13797#[derive(Clone, PartialEq, ::prost::Message)]
13798pub struct AllocPagesSysStartFtraceEvent {
13799    #[prost(uint32, optional, tag="1")]
13800    pub gfp_flags: ::core::option::Option<u32>,
13801    #[prost(uint32, optional, tag="2")]
13802    pub order: ::core::option::Option<u32>,
13803}
13804#[derive(Clone, PartialEq, ::prost::Message)]
13805pub struct DmaAllocContiguousRetryFtraceEvent {
13806    #[prost(int32, optional, tag="1")]
13807    pub tries: ::core::option::Option<i32>,
13808}
13809#[derive(Clone, PartialEq, ::prost::Message)]
13810pub struct IommuMapRangeFtraceEvent {
13811    #[prost(uint64, optional, tag="1")]
13812    pub chunk_size: ::core::option::Option<u64>,
13813    #[prost(uint64, optional, tag="2")]
13814    pub len: ::core::option::Option<u64>,
13815    #[prost(uint64, optional, tag="3")]
13816    pub pa: ::core::option::Option<u64>,
13817    #[prost(uint64, optional, tag="4")]
13818    pub va: ::core::option::Option<u64>,
13819}
13820#[derive(Clone, PartialEq, ::prost::Message)]
13821pub struct IommuSecPtblMapRangeEndFtraceEvent {
13822    #[prost(uint64, optional, tag="1")]
13823    pub len: ::core::option::Option<u64>,
13824    #[prost(int32, optional, tag="2")]
13825    pub num: ::core::option::Option<i32>,
13826    #[prost(uint32, optional, tag="3")]
13827    pub pa: ::core::option::Option<u32>,
13828    #[prost(int32, optional, tag="4")]
13829    pub sec_id: ::core::option::Option<i32>,
13830    #[prost(uint64, optional, tag="5")]
13831    pub va: ::core::option::Option<u64>,
13832}
13833#[derive(Clone, PartialEq, ::prost::Message)]
13834pub struct IommuSecPtblMapRangeStartFtraceEvent {
13835    #[prost(uint64, optional, tag="1")]
13836    pub len: ::core::option::Option<u64>,
13837    #[prost(int32, optional, tag="2")]
13838    pub num: ::core::option::Option<i32>,
13839    #[prost(uint32, optional, tag="3")]
13840    pub pa: ::core::option::Option<u32>,
13841    #[prost(int32, optional, tag="4")]
13842    pub sec_id: ::core::option::Option<i32>,
13843    #[prost(uint64, optional, tag="5")]
13844    pub va: ::core::option::Option<u64>,
13845}
13846#[derive(Clone, PartialEq, ::prost::Message)]
13847pub struct IonAllocBufferEndFtraceEvent {
13848    #[prost(string, optional, tag="1")]
13849    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13850    #[prost(uint32, optional, tag="2")]
13851    pub flags: ::core::option::Option<u32>,
13852    #[prost(string, optional, tag="3")]
13853    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13854    #[prost(uint64, optional, tag="4")]
13855    pub len: ::core::option::Option<u64>,
13856    #[prost(uint32, optional, tag="5")]
13857    pub mask: ::core::option::Option<u32>,
13858}
13859#[derive(Clone, PartialEq, ::prost::Message)]
13860pub struct IonAllocBufferFailFtraceEvent {
13861    #[prost(string, optional, tag="1")]
13862    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13863    #[prost(int64, optional, tag="2")]
13864    pub error: ::core::option::Option<i64>,
13865    #[prost(uint32, optional, tag="3")]
13866    pub flags: ::core::option::Option<u32>,
13867    #[prost(string, optional, tag="4")]
13868    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13869    #[prost(uint64, optional, tag="5")]
13870    pub len: ::core::option::Option<u64>,
13871    #[prost(uint32, optional, tag="6")]
13872    pub mask: ::core::option::Option<u32>,
13873}
13874#[derive(Clone, PartialEq, ::prost::Message)]
13875pub struct IonAllocBufferFallbackFtraceEvent {
13876    #[prost(string, optional, tag="1")]
13877    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13878    #[prost(int64, optional, tag="2")]
13879    pub error: ::core::option::Option<i64>,
13880    #[prost(uint32, optional, tag="3")]
13881    pub flags: ::core::option::Option<u32>,
13882    #[prost(string, optional, tag="4")]
13883    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13884    #[prost(uint64, optional, tag="5")]
13885    pub len: ::core::option::Option<u64>,
13886    #[prost(uint32, optional, tag="6")]
13887    pub mask: ::core::option::Option<u32>,
13888}
13889#[derive(Clone, PartialEq, ::prost::Message)]
13890pub struct IonAllocBufferStartFtraceEvent {
13891    #[prost(string, optional, tag="1")]
13892    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13893    #[prost(uint32, optional, tag="2")]
13894    pub flags: ::core::option::Option<u32>,
13895    #[prost(string, optional, tag="3")]
13896    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13897    #[prost(uint64, optional, tag="4")]
13898    pub len: ::core::option::Option<u64>,
13899    #[prost(uint32, optional, tag="5")]
13900    pub mask: ::core::option::Option<u32>,
13901}
13902#[derive(Clone, PartialEq, ::prost::Message)]
13903pub struct IonCpAllocRetryFtraceEvent {
13904    #[prost(int32, optional, tag="1")]
13905    pub tries: ::core::option::Option<i32>,
13906}
13907#[derive(Clone, PartialEq, ::prost::Message)]
13908pub struct IonCpSecureBufferEndFtraceEvent {
13909    #[prost(uint64, optional, tag="1")]
13910    pub align: ::core::option::Option<u64>,
13911    #[prost(uint64, optional, tag="2")]
13912    pub flags: ::core::option::Option<u64>,
13913    #[prost(string, optional, tag="3")]
13914    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13915    #[prost(uint64, optional, tag="4")]
13916    pub len: ::core::option::Option<u64>,
13917}
13918#[derive(Clone, PartialEq, ::prost::Message)]
13919pub struct IonCpSecureBufferStartFtraceEvent {
13920    #[prost(uint64, optional, tag="1")]
13921    pub align: ::core::option::Option<u64>,
13922    #[prost(uint64, optional, tag="2")]
13923    pub flags: ::core::option::Option<u64>,
13924    #[prost(string, optional, tag="3")]
13925    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13926    #[prost(uint64, optional, tag="4")]
13927    pub len: ::core::option::Option<u64>,
13928}
13929#[derive(Clone, PartialEq, ::prost::Message)]
13930pub struct IonPrefetchingFtraceEvent {
13931    #[prost(uint64, optional, tag="1")]
13932    pub len: ::core::option::Option<u64>,
13933}
13934#[derive(Clone, PartialEq, ::prost::Message)]
13935pub struct IonSecureCmaAddToPoolEndFtraceEvent {
13936    #[prost(uint32, optional, tag="1")]
13937    pub is_prefetch: ::core::option::Option<u32>,
13938    #[prost(uint64, optional, tag="2")]
13939    pub len: ::core::option::Option<u64>,
13940    #[prost(int32, optional, tag="3")]
13941    pub pool_total: ::core::option::Option<i32>,
13942}
13943#[derive(Clone, PartialEq, ::prost::Message)]
13944pub struct IonSecureCmaAddToPoolStartFtraceEvent {
13945    #[prost(uint32, optional, tag="1")]
13946    pub is_prefetch: ::core::option::Option<u32>,
13947    #[prost(uint64, optional, tag="2")]
13948    pub len: ::core::option::Option<u64>,
13949    #[prost(int32, optional, tag="3")]
13950    pub pool_total: ::core::option::Option<i32>,
13951}
13952#[derive(Clone, PartialEq, ::prost::Message)]
13953pub struct IonSecureCmaAllocateEndFtraceEvent {
13954    #[prost(uint64, optional, tag="1")]
13955    pub align: ::core::option::Option<u64>,
13956    #[prost(uint64, optional, tag="2")]
13957    pub flags: ::core::option::Option<u64>,
13958    #[prost(string, optional, tag="3")]
13959    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13960    #[prost(uint64, optional, tag="4")]
13961    pub len: ::core::option::Option<u64>,
13962}
13963#[derive(Clone, PartialEq, ::prost::Message)]
13964pub struct IonSecureCmaAllocateStartFtraceEvent {
13965    #[prost(uint64, optional, tag="1")]
13966    pub align: ::core::option::Option<u64>,
13967    #[prost(uint64, optional, tag="2")]
13968    pub flags: ::core::option::Option<u64>,
13969    #[prost(string, optional, tag="3")]
13970    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13971    #[prost(uint64, optional, tag="4")]
13972    pub len: ::core::option::Option<u64>,
13973}
13974#[derive(Clone, PartialEq, ::prost::Message)]
13975pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
13976    #[prost(uint64, optional, tag="1")]
13977    pub drained_size: ::core::option::Option<u64>,
13978    #[prost(uint64, optional, tag="2")]
13979    pub skipped_size: ::core::option::Option<u64>,
13980}
13981#[derive(Clone, PartialEq, ::prost::Message)]
13982pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
13983    #[prost(uint64, optional, tag="1")]
13984    pub drained_size: ::core::option::Option<u64>,
13985    #[prost(uint64, optional, tag="2")]
13986    pub skipped_size: ::core::option::Option<u64>,
13987}
13988#[derive(Clone, PartialEq, ::prost::Message)]
13989pub struct KfreeFtraceEvent {
13990    #[prost(uint64, optional, tag="1")]
13991    pub call_site: ::core::option::Option<u64>,
13992    #[prost(uint64, optional, tag="2")]
13993    pub ptr: ::core::option::Option<u64>,
13994}
13995#[derive(Clone, PartialEq, ::prost::Message)]
13996pub struct KmallocFtraceEvent {
13997    #[prost(uint64, optional, tag="1")]
13998    pub bytes_alloc: ::core::option::Option<u64>,
13999    #[prost(uint64, optional, tag="2")]
14000    pub bytes_req: ::core::option::Option<u64>,
14001    #[prost(uint64, optional, tag="3")]
14002    pub call_site: ::core::option::Option<u64>,
14003    #[prost(uint32, optional, tag="4")]
14004    pub gfp_flags: ::core::option::Option<u32>,
14005    #[prost(uint64, optional, tag="5")]
14006    pub ptr: ::core::option::Option<u64>,
14007}
14008#[derive(Clone, PartialEq, ::prost::Message)]
14009pub struct KmallocNodeFtraceEvent {
14010    #[prost(uint64, optional, tag="1")]
14011    pub bytes_alloc: ::core::option::Option<u64>,
14012    #[prost(uint64, optional, tag="2")]
14013    pub bytes_req: ::core::option::Option<u64>,
14014    #[prost(uint64, optional, tag="3")]
14015    pub call_site: ::core::option::Option<u64>,
14016    #[prost(uint32, optional, tag="4")]
14017    pub gfp_flags: ::core::option::Option<u32>,
14018    #[prost(int32, optional, tag="5")]
14019    pub node: ::core::option::Option<i32>,
14020    #[prost(uint64, optional, tag="6")]
14021    pub ptr: ::core::option::Option<u64>,
14022}
14023#[derive(Clone, PartialEq, ::prost::Message)]
14024pub struct KmemCacheAllocFtraceEvent {
14025    #[prost(uint64, optional, tag="1")]
14026    pub bytes_alloc: ::core::option::Option<u64>,
14027    #[prost(uint64, optional, tag="2")]
14028    pub bytes_req: ::core::option::Option<u64>,
14029    #[prost(uint64, optional, tag="3")]
14030    pub call_site: ::core::option::Option<u64>,
14031    #[prost(uint32, optional, tag="4")]
14032    pub gfp_flags: ::core::option::Option<u32>,
14033    #[prost(uint64, optional, tag="5")]
14034    pub ptr: ::core::option::Option<u64>,
14035}
14036#[derive(Clone, PartialEq, ::prost::Message)]
14037pub struct KmemCacheAllocNodeFtraceEvent {
14038    #[prost(uint64, optional, tag="1")]
14039    pub bytes_alloc: ::core::option::Option<u64>,
14040    #[prost(uint64, optional, tag="2")]
14041    pub bytes_req: ::core::option::Option<u64>,
14042    #[prost(uint64, optional, tag="3")]
14043    pub call_site: ::core::option::Option<u64>,
14044    #[prost(uint32, optional, tag="4")]
14045    pub gfp_flags: ::core::option::Option<u32>,
14046    #[prost(int32, optional, tag="5")]
14047    pub node: ::core::option::Option<i32>,
14048    #[prost(uint64, optional, tag="6")]
14049    pub ptr: ::core::option::Option<u64>,
14050}
14051#[derive(Clone, PartialEq, ::prost::Message)]
14052pub struct KmemCacheFreeFtraceEvent {
14053    #[prost(uint64, optional, tag="1")]
14054    pub call_site: ::core::option::Option<u64>,
14055    #[prost(uint64, optional, tag="2")]
14056    pub ptr: ::core::option::Option<u64>,
14057}
14058#[derive(Clone, PartialEq, ::prost::Message)]
14059pub struct MigratePagesEndFtraceEvent {
14060    #[prost(int32, optional, tag="1")]
14061    pub mode: ::core::option::Option<i32>,
14062}
14063#[derive(Clone, PartialEq, ::prost::Message)]
14064pub struct MigratePagesStartFtraceEvent {
14065    #[prost(int32, optional, tag="1")]
14066    pub mode: ::core::option::Option<i32>,
14067}
14068#[derive(Clone, PartialEq, ::prost::Message)]
14069pub struct MigrateRetryFtraceEvent {
14070    #[prost(int32, optional, tag="1")]
14071    pub tries: ::core::option::Option<i32>,
14072}
14073#[derive(Clone, PartialEq, ::prost::Message)]
14074pub struct MmPageAllocFtraceEvent {
14075    #[prost(uint32, optional, tag="1")]
14076    pub gfp_flags: ::core::option::Option<u32>,
14077    #[prost(int32, optional, tag="2")]
14078    pub migratetype: ::core::option::Option<i32>,
14079    #[prost(uint32, optional, tag="3")]
14080    pub order: ::core::option::Option<u32>,
14081    #[prost(uint64, optional, tag="4")]
14082    pub page: ::core::option::Option<u64>,
14083    #[prost(uint64, optional, tag="5")]
14084    pub pfn: ::core::option::Option<u64>,
14085}
14086#[derive(Clone, PartialEq, ::prost::Message)]
14087pub struct MmPageAllocExtfragFtraceEvent {
14088    #[prost(int32, optional, tag="1")]
14089    pub alloc_migratetype: ::core::option::Option<i32>,
14090    #[prost(int32, optional, tag="2")]
14091    pub alloc_order: ::core::option::Option<i32>,
14092    #[prost(int32, optional, tag="3")]
14093    pub fallback_migratetype: ::core::option::Option<i32>,
14094    #[prost(int32, optional, tag="4")]
14095    pub fallback_order: ::core::option::Option<i32>,
14096    #[prost(uint64, optional, tag="5")]
14097    pub page: ::core::option::Option<u64>,
14098    #[prost(int32, optional, tag="6")]
14099    pub change_ownership: ::core::option::Option<i32>,
14100    #[prost(uint64, optional, tag="7")]
14101    pub pfn: ::core::option::Option<u64>,
14102}
14103#[derive(Clone, PartialEq, ::prost::Message)]
14104pub struct MmPageAllocZoneLockedFtraceEvent {
14105    #[prost(int32, optional, tag="1")]
14106    pub migratetype: ::core::option::Option<i32>,
14107    #[prost(uint32, optional, tag="2")]
14108    pub order: ::core::option::Option<u32>,
14109    #[prost(uint64, optional, tag="3")]
14110    pub page: ::core::option::Option<u64>,
14111    #[prost(uint64, optional, tag="4")]
14112    pub pfn: ::core::option::Option<u64>,
14113}
14114#[derive(Clone, PartialEq, ::prost::Message)]
14115pub struct MmPageFreeFtraceEvent {
14116    #[prost(uint32, optional, tag="1")]
14117    pub order: ::core::option::Option<u32>,
14118    #[prost(uint64, optional, tag="2")]
14119    pub page: ::core::option::Option<u64>,
14120    #[prost(uint64, optional, tag="3")]
14121    pub pfn: ::core::option::Option<u64>,
14122}
14123#[derive(Clone, PartialEq, ::prost::Message)]
14124pub struct MmPageFreeBatchedFtraceEvent {
14125    #[prost(int32, optional, tag="1")]
14126    pub cold: ::core::option::Option<i32>,
14127    #[prost(uint64, optional, tag="2")]
14128    pub page: ::core::option::Option<u64>,
14129    #[prost(uint64, optional, tag="3")]
14130    pub pfn: ::core::option::Option<u64>,
14131}
14132#[derive(Clone, PartialEq, ::prost::Message)]
14133pub struct MmPagePcpuDrainFtraceEvent {
14134    #[prost(int32, optional, tag="1")]
14135    pub migratetype: ::core::option::Option<i32>,
14136    #[prost(uint32, optional, tag="2")]
14137    pub order: ::core::option::Option<u32>,
14138    #[prost(uint64, optional, tag="3")]
14139    pub page: ::core::option::Option<u64>,
14140    #[prost(uint64, optional, tag="4")]
14141    pub pfn: ::core::option::Option<u64>,
14142}
14143#[derive(Clone, PartialEq, ::prost::Message)]
14144pub struct RssStatFtraceEvent {
14145    #[prost(int32, optional, tag="1")]
14146    pub member: ::core::option::Option<i32>,
14147    #[prost(int64, optional, tag="2")]
14148    pub size: ::core::option::Option<i64>,
14149    #[prost(uint32, optional, tag="3")]
14150    pub curr: ::core::option::Option<u32>,
14151    #[prost(uint32, optional, tag="4")]
14152    pub mm_id: ::core::option::Option<u32>,
14153}
14154#[derive(Clone, PartialEq, ::prost::Message)]
14155pub struct IonHeapShrinkFtraceEvent {
14156    #[prost(string, optional, tag="1")]
14157    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14158    #[prost(uint64, optional, tag="2")]
14159    pub len: ::core::option::Option<u64>,
14160    #[prost(int64, optional, tag="3")]
14161    pub total_allocated: ::core::option::Option<i64>,
14162}
14163#[derive(Clone, PartialEq, ::prost::Message)]
14164pub struct IonHeapGrowFtraceEvent {
14165    #[prost(string, optional, tag="1")]
14166    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14167    #[prost(uint64, optional, tag="2")]
14168    pub len: ::core::option::Option<u64>,
14169    #[prost(int64, optional, tag="3")]
14170    pub total_allocated: ::core::option::Option<i64>,
14171}
14172#[derive(Clone, PartialEq, ::prost::Message)]
14173pub struct IonBufferCreateFtraceEvent {
14174    #[prost(uint64, optional, tag="1")]
14175    pub addr: ::core::option::Option<u64>,
14176    #[prost(uint64, optional, tag="2")]
14177    pub len: ::core::option::Option<u64>,
14178}
14179#[derive(Clone, PartialEq, ::prost::Message)]
14180pub struct IonBufferDestroyFtraceEvent {
14181    #[prost(uint64, optional, tag="1")]
14182    pub addr: ::core::option::Option<u64>,
14183    #[prost(uint64, optional, tag="2")]
14184    pub len: ::core::option::Option<u64>,
14185}
14186#[derive(Clone, PartialEq, ::prost::Message)]
14187pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
14188    #[prost(uint64, optional, tag="1")]
14189    pub start: ::core::option::Option<u64>,
14190    #[prost(uint64, optional, tag="2")]
14191    pub end: ::core::option::Option<u64>,
14192    #[prost(uint64, optional, tag="3")]
14193    pub nr_migrated: ::core::option::Option<u64>,
14194    #[prost(uint64, optional, tag="4")]
14195    pub nr_reclaimed: ::core::option::Option<u64>,
14196    #[prost(uint64, optional, tag="5")]
14197    pub nr_mapped: ::core::option::Option<u64>,
14198    #[prost(int32, optional, tag="6")]
14199    pub migratetype: ::core::option::Option<i32>,
14200}
14201#[derive(Clone, PartialEq, ::prost::Message)]
14202pub struct DmabufRssStatFtraceEvent {
14203    #[prost(uint64, optional, tag="1")]
14204    pub rss: ::core::option::Option<u64>,
14205    #[prost(int64, optional, tag="2")]
14206    pub rss_delta: ::core::option::Option<i64>,
14207    #[prost(uint64, optional, tag="3")]
14208    pub i_ino: ::core::option::Option<u64>,
14209}
14210// End of protos/perfetto/trace/ftrace/kmem.proto
14211
14212// Begin of protos/perfetto/trace/ftrace/kvm.proto
14213
14214#[derive(Clone, PartialEq, ::prost::Message)]
14215pub struct KvmAccessFaultFtraceEvent {
14216    #[prost(uint64, optional, tag="1")]
14217    pub ipa: ::core::option::Option<u64>,
14218}
14219#[derive(Clone, PartialEq, ::prost::Message)]
14220pub struct KvmAckIrqFtraceEvent {
14221    #[prost(uint32, optional, tag="1")]
14222    pub irqchip: ::core::option::Option<u32>,
14223    #[prost(uint32, optional, tag="2")]
14224    pub pin: ::core::option::Option<u32>,
14225}
14226#[derive(Clone, PartialEq, ::prost::Message)]
14227pub struct KvmAgeHvaFtraceEvent {
14228    #[prost(uint64, optional, tag="1")]
14229    pub end: ::core::option::Option<u64>,
14230    #[prost(uint64, optional, tag="2")]
14231    pub start: ::core::option::Option<u64>,
14232}
14233#[derive(Clone, PartialEq, ::prost::Message)]
14234pub struct KvmAgePageFtraceEvent {
14235    #[prost(uint64, optional, tag="1")]
14236    pub gfn: ::core::option::Option<u64>,
14237    #[prost(uint64, optional, tag="2")]
14238    pub hva: ::core::option::Option<u64>,
14239    #[prost(uint32, optional, tag="3")]
14240    pub level: ::core::option::Option<u32>,
14241    #[prost(uint32, optional, tag="4")]
14242    pub referenced: ::core::option::Option<u32>,
14243}
14244#[derive(Clone, PartialEq, ::prost::Message)]
14245pub struct KvmArmClearDebugFtraceEvent {
14246    #[prost(uint32, optional, tag="1")]
14247    pub guest_debug: ::core::option::Option<u32>,
14248}
14249#[derive(Clone, PartialEq, ::prost::Message)]
14250pub struct KvmArmSetDreg32FtraceEvent {
14251    #[prost(string, optional, tag="1")]
14252    pub name: ::core::option::Option<::prost::alloc::string::String>,
14253    #[prost(uint32, optional, tag="2")]
14254    pub value: ::core::option::Option<u32>,
14255}
14256#[derive(Clone, PartialEq, ::prost::Message)]
14257pub struct KvmArmSetRegsetFtraceEvent {
14258    #[prost(int32, optional, tag="1")]
14259    pub len: ::core::option::Option<i32>,
14260    #[prost(string, optional, tag="2")]
14261    pub name: ::core::option::Option<::prost::alloc::string::String>,
14262}
14263#[derive(Clone, PartialEq, ::prost::Message)]
14264pub struct KvmArmSetupDebugFtraceEvent {
14265    #[prost(uint32, optional, tag="1")]
14266    pub guest_debug: ::core::option::Option<u32>,
14267    #[prost(uint64, optional, tag="2")]
14268    pub vcpu: ::core::option::Option<u64>,
14269}
14270#[derive(Clone, PartialEq, ::prost::Message)]
14271pub struct KvmEntryFtraceEvent {
14272    #[prost(uint64, optional, tag="1")]
14273    pub vcpu_pc: ::core::option::Option<u64>,
14274}
14275#[derive(Clone, PartialEq, ::prost::Message)]
14276pub struct KvmExitFtraceEvent {
14277    #[prost(uint32, optional, tag="1")]
14278    pub esr_ec: ::core::option::Option<u32>,
14279    #[prost(int32, optional, tag="2")]
14280    pub ret: ::core::option::Option<i32>,
14281    #[prost(uint64, optional, tag="3")]
14282    pub vcpu_pc: ::core::option::Option<u64>,
14283}
14284#[derive(Clone, PartialEq, ::prost::Message)]
14285pub struct KvmFpuFtraceEvent {
14286    #[prost(uint32, optional, tag="1")]
14287    pub load: ::core::option::Option<u32>,
14288}
14289#[derive(Clone, PartialEq, ::prost::Message)]
14290pub struct KvmGetTimerMapFtraceEvent {
14291    #[prost(int32, optional, tag="1")]
14292    pub direct_ptimer: ::core::option::Option<i32>,
14293    #[prost(int32, optional, tag="2")]
14294    pub direct_vtimer: ::core::option::Option<i32>,
14295    #[prost(int32, optional, tag="3")]
14296    pub emul_ptimer: ::core::option::Option<i32>,
14297    #[prost(uint64, optional, tag="4")]
14298    pub vcpu_id: ::core::option::Option<u64>,
14299}
14300#[derive(Clone, PartialEq, ::prost::Message)]
14301pub struct KvmGuestFaultFtraceEvent {
14302    #[prost(uint64, optional, tag="1")]
14303    pub hsr: ::core::option::Option<u64>,
14304    #[prost(uint64, optional, tag="2")]
14305    pub hxfar: ::core::option::Option<u64>,
14306    #[prost(uint64, optional, tag="3")]
14307    pub ipa: ::core::option::Option<u64>,
14308    #[prost(uint64, optional, tag="4")]
14309    pub vcpu_pc: ::core::option::Option<u64>,
14310}
14311#[derive(Clone, PartialEq, ::prost::Message)]
14312pub struct KvmHandleSysRegFtraceEvent {
14313    #[prost(uint64, optional, tag="1")]
14314    pub hsr: ::core::option::Option<u64>,
14315}
14316#[derive(Clone, PartialEq, ::prost::Message)]
14317pub struct KvmHvcArm64FtraceEvent {
14318    #[prost(uint64, optional, tag="1")]
14319    pub imm: ::core::option::Option<u64>,
14320    #[prost(uint64, optional, tag="2")]
14321    pub r0: ::core::option::Option<u64>,
14322    #[prost(uint64, optional, tag="3")]
14323    pub vcpu_pc: ::core::option::Option<u64>,
14324}
14325#[derive(Clone, PartialEq, ::prost::Message)]
14326pub struct KvmIrqLineFtraceEvent {
14327    #[prost(int32, optional, tag="1")]
14328    pub irq_num: ::core::option::Option<i32>,
14329    #[prost(int32, optional, tag="2")]
14330    pub level: ::core::option::Option<i32>,
14331    #[prost(uint32, optional, tag="3")]
14332    pub r#type: ::core::option::Option<u32>,
14333    #[prost(int32, optional, tag="4")]
14334    pub vcpu_idx: ::core::option::Option<i32>,
14335}
14336#[derive(Clone, PartialEq, ::prost::Message)]
14337pub struct KvmMmioFtraceEvent {
14338    #[prost(uint64, optional, tag="1")]
14339    pub gpa: ::core::option::Option<u64>,
14340    #[prost(uint32, optional, tag="2")]
14341    pub len: ::core::option::Option<u32>,
14342    #[prost(uint32, optional, tag="3")]
14343    pub r#type: ::core::option::Option<u32>,
14344    #[prost(uint64, optional, tag="4")]
14345    pub val: ::core::option::Option<u64>,
14346}
14347#[derive(Clone, PartialEq, ::prost::Message)]
14348pub struct KvmMmioEmulateFtraceEvent {
14349    #[prost(uint64, optional, tag="1")]
14350    pub cpsr: ::core::option::Option<u64>,
14351    #[prost(uint64, optional, tag="2")]
14352    pub instr: ::core::option::Option<u64>,
14353    #[prost(uint64, optional, tag="3")]
14354    pub vcpu_pc: ::core::option::Option<u64>,
14355}
14356#[derive(Clone, PartialEq, ::prost::Message)]
14357pub struct KvmSetGuestDebugFtraceEvent {
14358    #[prost(uint32, optional, tag="1")]
14359    pub guest_debug: ::core::option::Option<u32>,
14360    #[prost(uint64, optional, tag="2")]
14361    pub vcpu: ::core::option::Option<u64>,
14362}
14363#[derive(Clone, PartialEq, ::prost::Message)]
14364pub struct KvmSetIrqFtraceEvent {
14365    #[prost(uint32, optional, tag="1")]
14366    pub gsi: ::core::option::Option<u32>,
14367    #[prost(int32, optional, tag="2")]
14368    pub irq_source_id: ::core::option::Option<i32>,
14369    #[prost(int32, optional, tag="3")]
14370    pub level: ::core::option::Option<i32>,
14371}
14372#[derive(Clone, PartialEq, ::prost::Message)]
14373pub struct KvmSetSpteHvaFtraceEvent {
14374    #[prost(uint64, optional, tag="1")]
14375    pub hva: ::core::option::Option<u64>,
14376}
14377#[derive(Clone, PartialEq, ::prost::Message)]
14378pub struct KvmSetWayFlushFtraceEvent {
14379    #[prost(uint32, optional, tag="1")]
14380    pub cache: ::core::option::Option<u32>,
14381    #[prost(uint64, optional, tag="2")]
14382    pub vcpu_pc: ::core::option::Option<u64>,
14383}
14384#[derive(Clone, PartialEq, ::prost::Message)]
14385pub struct KvmSysAccessFtraceEvent {
14386    #[prost(uint32, optional, tag="1")]
14387    pub c_rm: ::core::option::Option<u32>,
14388    #[prost(uint32, optional, tag="2")]
14389    pub c_rn: ::core::option::Option<u32>,
14390    #[prost(uint32, optional, tag="3")]
14391    pub op0: ::core::option::Option<u32>,
14392    #[prost(uint32, optional, tag="4")]
14393    pub op1: ::core::option::Option<u32>,
14394    #[prost(uint32, optional, tag="5")]
14395    pub op2: ::core::option::Option<u32>,
14396    #[prost(uint32, optional, tag="6")]
14397    pub is_write: ::core::option::Option<u32>,
14398    #[prost(string, optional, tag="7")]
14399    pub name: ::core::option::Option<::prost::alloc::string::String>,
14400    #[prost(uint64, optional, tag="8")]
14401    pub vcpu_pc: ::core::option::Option<u64>,
14402}
14403#[derive(Clone, PartialEq, ::prost::Message)]
14404pub struct KvmTestAgeHvaFtraceEvent {
14405    #[prost(uint64, optional, tag="1")]
14406    pub hva: ::core::option::Option<u64>,
14407}
14408#[derive(Clone, PartialEq, ::prost::Message)]
14409pub struct KvmTimerEmulateFtraceEvent {
14410    #[prost(uint32, optional, tag="1")]
14411    pub should_fire: ::core::option::Option<u32>,
14412    #[prost(int32, optional, tag="2")]
14413    pub timer_idx: ::core::option::Option<i32>,
14414}
14415#[derive(Clone, PartialEq, ::prost::Message)]
14416pub struct KvmTimerHrtimerExpireFtraceEvent {
14417    #[prost(int32, optional, tag="1")]
14418    pub timer_idx: ::core::option::Option<i32>,
14419}
14420#[derive(Clone, PartialEq, ::prost::Message)]
14421pub struct KvmTimerRestoreStateFtraceEvent {
14422    #[prost(uint64, optional, tag="1")]
14423    pub ctl: ::core::option::Option<u64>,
14424    #[prost(uint64, optional, tag="2")]
14425    pub cval: ::core::option::Option<u64>,
14426    #[prost(int32, optional, tag="3")]
14427    pub timer_idx: ::core::option::Option<i32>,
14428}
14429#[derive(Clone, PartialEq, ::prost::Message)]
14430pub struct KvmTimerSaveStateFtraceEvent {
14431    #[prost(uint64, optional, tag="1")]
14432    pub ctl: ::core::option::Option<u64>,
14433    #[prost(uint64, optional, tag="2")]
14434    pub cval: ::core::option::Option<u64>,
14435    #[prost(int32, optional, tag="3")]
14436    pub timer_idx: ::core::option::Option<i32>,
14437}
14438#[derive(Clone, PartialEq, ::prost::Message)]
14439pub struct KvmTimerUpdateIrqFtraceEvent {
14440    #[prost(uint32, optional, tag="1")]
14441    pub irq: ::core::option::Option<u32>,
14442    #[prost(int32, optional, tag="2")]
14443    pub level: ::core::option::Option<i32>,
14444    #[prost(uint64, optional, tag="3")]
14445    pub vcpu_id: ::core::option::Option<u64>,
14446}
14447#[derive(Clone, PartialEq, ::prost::Message)]
14448pub struct KvmToggleCacheFtraceEvent {
14449    #[prost(uint32, optional, tag="1")]
14450    pub now: ::core::option::Option<u32>,
14451    #[prost(uint64, optional, tag="2")]
14452    pub vcpu_pc: ::core::option::Option<u64>,
14453    #[prost(uint32, optional, tag="3")]
14454    pub was: ::core::option::Option<u32>,
14455}
14456#[derive(Clone, PartialEq, ::prost::Message)]
14457pub struct KvmUnmapHvaRangeFtraceEvent {
14458    #[prost(uint64, optional, tag="1")]
14459    pub end: ::core::option::Option<u64>,
14460    #[prost(uint64, optional, tag="2")]
14461    pub start: ::core::option::Option<u64>,
14462}
14463#[derive(Clone, PartialEq, ::prost::Message)]
14464pub struct KvmUserspaceExitFtraceEvent {
14465    #[prost(uint32, optional, tag="1")]
14466    pub reason: ::core::option::Option<u32>,
14467}
14468#[derive(Clone, PartialEq, ::prost::Message)]
14469pub struct KvmVcpuWakeupFtraceEvent {
14470    #[prost(uint64, optional, tag="1")]
14471    pub ns: ::core::option::Option<u64>,
14472    #[prost(uint32, optional, tag="2")]
14473    pub valid: ::core::option::Option<u32>,
14474    #[prost(uint32, optional, tag="3")]
14475    pub waited: ::core::option::Option<u32>,
14476}
14477#[derive(Clone, PartialEq, ::prost::Message)]
14478pub struct KvmWfxArm64FtraceEvent {
14479    #[prost(uint32, optional, tag="1")]
14480    pub is_wfe: ::core::option::Option<u32>,
14481    #[prost(uint64, optional, tag="2")]
14482    pub vcpu_pc: ::core::option::Option<u64>,
14483}
14484#[derive(Clone, PartialEq, ::prost::Message)]
14485pub struct TrapRegFtraceEvent {
14486    #[prost(string, optional, tag="1")]
14487    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
14488    #[prost(uint32, optional, tag="2")]
14489    pub is_write: ::core::option::Option<u32>,
14490    #[prost(int32, optional, tag="3")]
14491    pub reg: ::core::option::Option<i32>,
14492    #[prost(uint64, optional, tag="4")]
14493    pub write_value: ::core::option::Option<u64>,
14494}
14495#[derive(Clone, PartialEq, ::prost::Message)]
14496pub struct VgicUpdateIrqPendingFtraceEvent {
14497    #[prost(uint32, optional, tag="1")]
14498    pub irq: ::core::option::Option<u32>,
14499    #[prost(uint32, optional, tag="2")]
14500    pub level: ::core::option::Option<u32>,
14501    #[prost(uint64, optional, tag="3")]
14502    pub vcpu_id: ::core::option::Option<u64>,
14503}
14504// End of protos/perfetto/trace/ftrace/kvm.proto
14505
14506// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14507
14508#[derive(Clone, PartialEq, ::prost::Message)]
14509pub struct LowmemoryKillFtraceEvent {
14510    #[prost(string, optional, tag="1")]
14511    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14512    #[prost(int32, optional, tag="2")]
14513    pub pid: ::core::option::Option<i32>,
14514    #[prost(int64, optional, tag="3")]
14515    pub pagecache_size: ::core::option::Option<i64>,
14516    #[prost(int64, optional, tag="4")]
14517    pub pagecache_limit: ::core::option::Option<i64>,
14518    #[prost(int64, optional, tag="5")]
14519    pub free: ::core::option::Option<i64>,
14520}
14521// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14522
14523// Begin of protos/perfetto/trace/ftrace/lwis.proto
14524
14525#[derive(Clone, PartialEq, ::prost::Message)]
14526pub struct LwisTracingMarkWriteFtraceEvent {
14527    #[prost(string, optional, tag="1")]
14528    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
14529    #[prost(uint32, optional, tag="2")]
14530    pub r#type: ::core::option::Option<u32>,
14531    #[prost(int32, optional, tag="3")]
14532    pub pid: ::core::option::Option<i32>,
14533    #[prost(string, optional, tag="4")]
14534    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
14535    #[prost(int64, optional, tag="5")]
14536    pub value: ::core::option::Option<i64>,
14537}
14538// End of protos/perfetto/trace/ftrace/lwis.proto
14539
14540// Begin of protos/perfetto/trace/ftrace/mali.proto
14541
14542#[derive(Clone, PartialEq, ::prost::Message)]
14543pub struct MaliTracingMarkWriteFtraceEvent {
14544    #[prost(string, optional, tag="1")]
14545    pub name: ::core::option::Option<::prost::alloc::string::String>,
14546    #[prost(int32, optional, tag="2")]
14547    pub pid: ::core::option::Option<i32>,
14548    #[prost(uint32, optional, tag="3")]
14549    pub r#type: ::core::option::Option<u32>,
14550    #[prost(int32, optional, tag="4")]
14551    pub value: ::core::option::Option<i32>,
14552}
14553#[derive(Clone, PartialEq, ::prost::Message)]
14554pub struct MaliMaliKcpucqssetFtraceEvent {
14555    #[prost(uint32, optional, tag="1")]
14556    pub id: ::core::option::Option<u32>,
14557    #[prost(uint64, optional, tag="2")]
14558    pub info_val1: ::core::option::Option<u64>,
14559    #[prost(uint64, optional, tag="3")]
14560    pub info_val2: ::core::option::Option<u64>,
14561    #[prost(uint32, optional, tag="4")]
14562    pub kctx_id: ::core::option::Option<u32>,
14563    #[prost(int32, optional, tag="5")]
14564    pub kctx_tgid: ::core::option::Option<i32>,
14565}
14566#[derive(Clone, PartialEq, ::prost::Message)]
14567pub struct MaliMaliKcpucqswaitstartFtraceEvent {
14568    #[prost(uint32, optional, tag="1")]
14569    pub id: ::core::option::Option<u32>,
14570    #[prost(uint64, optional, tag="2")]
14571    pub info_val1: ::core::option::Option<u64>,
14572    #[prost(uint64, optional, tag="3")]
14573    pub info_val2: ::core::option::Option<u64>,
14574    #[prost(uint32, optional, tag="4")]
14575    pub kctx_id: ::core::option::Option<u32>,
14576    #[prost(int32, optional, tag="5")]
14577    pub kctx_tgid: ::core::option::Option<i32>,
14578}
14579#[derive(Clone, PartialEq, ::prost::Message)]
14580pub struct MaliMaliKcpucqswaitendFtraceEvent {
14581    #[prost(uint32, optional, tag="1")]
14582    pub id: ::core::option::Option<u32>,
14583    #[prost(uint64, optional, tag="2")]
14584    pub info_val1: ::core::option::Option<u64>,
14585    #[prost(uint64, optional, tag="3")]
14586    pub info_val2: ::core::option::Option<u64>,
14587    #[prost(uint32, optional, tag="4")]
14588    pub kctx_id: ::core::option::Option<u32>,
14589    #[prost(int32, optional, tag="5")]
14590    pub kctx_tgid: ::core::option::Option<i32>,
14591}
14592#[derive(Clone, PartialEq, ::prost::Message)]
14593pub struct MaliMaliKcpufencesignalFtraceEvent {
14594    #[prost(uint64, optional, tag="1")]
14595    pub info_val1: ::core::option::Option<u64>,
14596    #[prost(uint64, optional, tag="2")]
14597    pub info_val2: ::core::option::Option<u64>,
14598    #[prost(int32, optional, tag="3")]
14599    pub kctx_tgid: ::core::option::Option<i32>,
14600    #[prost(uint32, optional, tag="4")]
14601    pub kctx_id: ::core::option::Option<u32>,
14602    #[prost(uint32, optional, tag="5")]
14603    pub id: ::core::option::Option<u32>,
14604}
14605#[derive(Clone, PartialEq, ::prost::Message)]
14606pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14607    #[prost(uint64, optional, tag="1")]
14608    pub info_val1: ::core::option::Option<u64>,
14609    #[prost(uint64, optional, tag="2")]
14610    pub info_val2: ::core::option::Option<u64>,
14611    #[prost(int32, optional, tag="3")]
14612    pub kctx_tgid: ::core::option::Option<i32>,
14613    #[prost(uint32, optional, tag="4")]
14614    pub kctx_id: ::core::option::Option<u32>,
14615    #[prost(uint32, optional, tag="5")]
14616    pub id: ::core::option::Option<u32>,
14617}
14618#[derive(Clone, PartialEq, ::prost::Message)]
14619pub struct MaliMaliKcpufencewaitendFtraceEvent {
14620    #[prost(uint64, optional, tag="1")]
14621    pub info_val1: ::core::option::Option<u64>,
14622    #[prost(uint64, optional, tag="2")]
14623    pub info_val2: ::core::option::Option<u64>,
14624    #[prost(int32, optional, tag="3")]
14625    pub kctx_tgid: ::core::option::Option<i32>,
14626    #[prost(uint32, optional, tag="4")]
14627    pub kctx_id: ::core::option::Option<u32>,
14628    #[prost(uint32, optional, tag="5")]
14629    pub id: ::core::option::Option<u32>,
14630}
14631#[derive(Clone, PartialEq, ::prost::Message)]
14632pub struct MaliMaliCsfinterruptstartFtraceEvent {
14633    #[prost(int32, optional, tag="1")]
14634    pub kctx_tgid: ::core::option::Option<i32>,
14635    #[prost(uint32, optional, tag="2")]
14636    pub kctx_id: ::core::option::Option<u32>,
14637    #[prost(uint64, optional, tag="3")]
14638    pub info_val: ::core::option::Option<u64>,
14639}
14640#[derive(Clone, PartialEq, ::prost::Message)]
14641pub struct MaliMaliCsfinterruptendFtraceEvent {
14642    #[prost(int32, optional, tag="1")]
14643    pub kctx_tgid: ::core::option::Option<i32>,
14644    #[prost(uint32, optional, tag="2")]
14645    pub kctx_id: ::core::option::Option<u32>,
14646    #[prost(uint64, optional, tag="3")]
14647    pub info_val: ::core::option::Option<u64>,
14648}
14649#[derive(Clone, PartialEq, ::prost::Message)]
14650pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
14651    #[prost(int32, optional, tag="1")]
14652    pub kctx_tgid: ::core::option::Option<i32>,
14653    #[prost(uint32, optional, tag="2")]
14654    pub kctx_id: ::core::option::Option<u32>,
14655    #[prost(uint64, optional, tag="3")]
14656    pub info_val: ::core::option::Option<u64>,
14657}
14658#[derive(Clone, PartialEq, ::prost::Message)]
14659pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
14660    #[prost(int32, optional, tag="1")]
14661    pub kctx_tgid: ::core::option::Option<i32>,
14662    #[prost(uint32, optional, tag="2")]
14663    pub kctx_id: ::core::option::Option<u32>,
14664    #[prost(uint64, optional, tag="3")]
14665    pub info_val: ::core::option::Option<u64>,
14666}
14667#[derive(Clone, PartialEq, ::prost::Message)]
14668pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
14669    #[prost(int32, optional, tag="1")]
14670    pub kctx_tgid: ::core::option::Option<i32>,
14671    #[prost(uint32, optional, tag="2")]
14672    pub kctx_id: ::core::option::Option<u32>,
14673    #[prost(uint64, optional, tag="3")]
14674    pub info_val: ::core::option::Option<u64>,
14675}
14676#[derive(Clone, PartialEq, ::prost::Message)]
14677pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14678    #[prost(int32, optional, tag="1")]
14679    pub kctx_tgid: ::core::option::Option<i32>,
14680    #[prost(uint32, optional, tag="2")]
14681    pub kctx_id: ::core::option::Option<u32>,
14682    #[prost(uint64, optional, tag="3")]
14683    pub info_val: ::core::option::Option<u64>,
14684}
14685#[derive(Clone, PartialEq, ::prost::Message)]
14686pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14687    #[prost(int32, optional, tag="1")]
14688    pub kctx_tgid: ::core::option::Option<i32>,
14689    #[prost(uint32, optional, tag="2")]
14690    pub kctx_id: ::core::option::Option<u32>,
14691    #[prost(uint64, optional, tag="3")]
14692    pub info_val: ::core::option::Option<u64>,
14693}
14694#[derive(Clone, PartialEq, ::prost::Message)]
14695pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14696    #[prost(int32, optional, tag="1")]
14697    pub kctx_tgid: ::core::option::Option<i32>,
14698    #[prost(uint32, optional, tag="2")]
14699    pub kctx_id: ::core::option::Option<u32>,
14700    #[prost(uint64, optional, tag="3")]
14701    pub info_val: ::core::option::Option<u64>,
14702}
14703#[derive(Clone, PartialEq, ::prost::Message)]
14704pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14705    #[prost(int32, optional, tag="1")]
14706    pub kctx_tgid: ::core::option::Option<i32>,
14707    #[prost(uint32, optional, tag="2")]
14708    pub kctx_id: ::core::option::Option<u32>,
14709    #[prost(uint64, optional, tag="3")]
14710    pub info_val: ::core::option::Option<u64>,
14711}
14712#[derive(Clone, PartialEq, ::prost::Message)]
14713pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14714    #[prost(int32, optional, tag="1")]
14715    pub kctx_tgid: ::core::option::Option<i32>,
14716    #[prost(uint32, optional, tag="2")]
14717    pub kctx_id: ::core::option::Option<u32>,
14718    #[prost(uint64, optional, tag="3")]
14719    pub info_val: ::core::option::Option<u64>,
14720}
14721#[derive(Clone, PartialEq, ::prost::Message)]
14722pub struct MaliMaliPmmcuinsleepFtraceEvent {
14723    #[prost(int32, optional, tag="1")]
14724    pub kctx_tgid: ::core::option::Option<i32>,
14725    #[prost(uint32, optional, tag="2")]
14726    pub kctx_id: ::core::option::Option<u32>,
14727    #[prost(uint64, optional, tag="3")]
14728    pub info_val: ::core::option::Option<u64>,
14729}
14730#[derive(Clone, PartialEq, ::prost::Message)]
14731pub struct MaliMaliPmmcuoffFtraceEvent {
14732    #[prost(int32, optional, tag="1")]
14733    pub kctx_tgid: ::core::option::Option<i32>,
14734    #[prost(uint32, optional, tag="2")]
14735    pub kctx_id: ::core::option::Option<u32>,
14736    #[prost(uint64, optional, tag="3")]
14737    pub info_val: ::core::option::Option<u64>,
14738}
14739#[derive(Clone, PartialEq, ::prost::Message)]
14740pub struct MaliMaliPmmcuonFtraceEvent {
14741    #[prost(int32, optional, tag="1")]
14742    pub kctx_tgid: ::core::option::Option<i32>,
14743    #[prost(uint32, optional, tag="2")]
14744    pub kctx_id: ::core::option::Option<u32>,
14745    #[prost(uint64, optional, tag="3")]
14746    pub info_val: ::core::option::Option<u64>,
14747}
14748#[derive(Clone, PartialEq, ::prost::Message)]
14749pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14750    #[prost(int32, optional, tag="1")]
14751    pub kctx_tgid: ::core::option::Option<i32>,
14752    #[prost(uint32, optional, tag="2")]
14753    pub kctx_id: ::core::option::Option<u32>,
14754    #[prost(uint64, optional, tag="3")]
14755    pub info_val: ::core::option::Option<u64>,
14756}
14757#[derive(Clone, PartialEq, ::prost::Message)]
14758pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14759    #[prost(int32, optional, tag="1")]
14760    pub kctx_tgid: ::core::option::Option<i32>,
14761    #[prost(uint32, optional, tag="2")]
14762    pub kctx_id: ::core::option::Option<u32>,
14763    #[prost(uint64, optional, tag="3")]
14764    pub info_val: ::core::option::Option<u64>,
14765}
14766#[derive(Clone, PartialEq, ::prost::Message)]
14767pub struct MaliMaliPmmcuonhaltFtraceEvent {
14768    #[prost(int32, optional, tag="1")]
14769    pub kctx_tgid: ::core::option::Option<i32>,
14770    #[prost(uint32, optional, tag="2")]
14771    pub kctx_id: ::core::option::Option<u32>,
14772    #[prost(uint64, optional, tag="3")]
14773    pub info_val: ::core::option::Option<u64>,
14774}
14775#[derive(Clone, PartialEq, ::prost::Message)]
14776pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14777    #[prost(int32, optional, tag="1")]
14778    pub kctx_tgid: ::core::option::Option<i32>,
14779    #[prost(uint32, optional, tag="2")]
14780    pub kctx_id: ::core::option::Option<u32>,
14781    #[prost(uint64, optional, tag="3")]
14782    pub info_val: ::core::option::Option<u64>,
14783}
14784#[derive(Clone, PartialEq, ::prost::Message)]
14785pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14786    #[prost(int32, optional, tag="1")]
14787    pub kctx_tgid: ::core::option::Option<i32>,
14788    #[prost(uint32, optional, tag="2")]
14789    pub kctx_id: ::core::option::Option<u32>,
14790    #[prost(uint64, optional, tag="3")]
14791    pub info_val: ::core::option::Option<u64>,
14792}
14793#[derive(Clone, PartialEq, ::prost::Message)]
14794pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14795    #[prost(int32, optional, tag="1")]
14796    pub kctx_tgid: ::core::option::Option<i32>,
14797    #[prost(uint32, optional, tag="2")]
14798    pub kctx_id: ::core::option::Option<u32>,
14799    #[prost(uint64, optional, tag="3")]
14800    pub info_val: ::core::option::Option<u64>,
14801}
14802#[derive(Clone, PartialEq, ::prost::Message)]
14803pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14804    #[prost(int32, optional, tag="1")]
14805    pub kctx_tgid: ::core::option::Option<i32>,
14806    #[prost(uint32, optional, tag="2")]
14807    pub kctx_id: ::core::option::Option<u32>,
14808    #[prost(uint64, optional, tag="3")]
14809    pub info_val: ::core::option::Option<u64>,
14810}
14811#[derive(Clone, PartialEq, ::prost::Message)]
14812pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14813    #[prost(int32, optional, tag="1")]
14814    pub kctx_tgid: ::core::option::Option<i32>,
14815    #[prost(uint32, optional, tag="2")]
14816    pub kctx_id: ::core::option::Option<u32>,
14817    #[prost(uint64, optional, tag="3")]
14818    pub info_val: ::core::option::Option<u64>,
14819}
14820#[derive(Clone, PartialEq, ::prost::Message)]
14821pub struct MaliMaliPmmcupendoffFtraceEvent {
14822    #[prost(int32, optional, tag="1")]
14823    pub kctx_tgid: ::core::option::Option<i32>,
14824    #[prost(uint32, optional, tag="2")]
14825    pub kctx_id: ::core::option::Option<u32>,
14826    #[prost(uint64, optional, tag="3")]
14827    pub info_val: ::core::option::Option<u64>,
14828}
14829#[derive(Clone, PartialEq, ::prost::Message)]
14830pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14831    #[prost(int32, optional, tag="1")]
14832    pub kctx_tgid: ::core::option::Option<i32>,
14833    #[prost(uint32, optional, tag="2")]
14834    pub kctx_id: ::core::option::Option<u32>,
14835    #[prost(uint64, optional, tag="3")]
14836    pub info_val: ::core::option::Option<u64>,
14837}
14838#[derive(Clone, PartialEq, ::prost::Message)]
14839pub struct MaliMaliPmmcupowerdownFtraceEvent {
14840    #[prost(int32, optional, tag="1")]
14841    pub kctx_tgid: ::core::option::Option<i32>,
14842    #[prost(uint32, optional, tag="2")]
14843    pub kctx_id: ::core::option::Option<u32>,
14844    #[prost(uint64, optional, tag="3")]
14845    pub info_val: ::core::option::Option<u64>,
14846}
14847#[derive(Clone, PartialEq, ::prost::Message)]
14848pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14849    #[prost(int32, optional, tag="1")]
14850    pub kctx_tgid: ::core::option::Option<i32>,
14851    #[prost(uint32, optional, tag="2")]
14852    pub kctx_id: ::core::option::Option<u32>,
14853    #[prost(uint64, optional, tag="3")]
14854    pub info_val: ::core::option::Option<u64>,
14855}
14856#[derive(Clone, PartialEq, ::prost::Message)]
14857pub struct MaliGpuPowerStateFtraceEvent {
14858    #[prost(uint64, optional, tag="1")]
14859    pub change_ns: ::core::option::Option<u64>,
14860    #[prost(int32, optional, tag="2")]
14861    pub from_state: ::core::option::Option<i32>,
14862    #[prost(int32, optional, tag="3")]
14863    pub to_state: ::core::option::Option<i32>,
14864}
14865// End of protos/perfetto/trace/ftrace/mali.proto
14866
14867// Begin of protos/perfetto/trace/ftrace/mdss.proto
14868
14869#[derive(Clone, PartialEq, ::prost::Message)]
14870pub struct MdpCmdKickoffFtraceEvent {
14871    #[prost(uint32, optional, tag="1")]
14872    pub ctl_num: ::core::option::Option<u32>,
14873    #[prost(int32, optional, tag="2")]
14874    pub kickoff_cnt: ::core::option::Option<i32>,
14875}
14876#[derive(Clone, PartialEq, ::prost::Message)]
14877pub struct MdpCommitFtraceEvent {
14878    #[prost(uint32, optional, tag="1")]
14879    pub num: ::core::option::Option<u32>,
14880    #[prost(uint32, optional, tag="2")]
14881    pub play_cnt: ::core::option::Option<u32>,
14882    #[prost(uint32, optional, tag="3")]
14883    pub clk_rate: ::core::option::Option<u32>,
14884    #[prost(uint64, optional, tag="4")]
14885    pub bandwidth: ::core::option::Option<u64>,
14886}
14887#[derive(Clone, PartialEq, ::prost::Message)]
14888pub struct MdpPerfSetOtFtraceEvent {
14889    #[prost(uint32, optional, tag="1")]
14890    pub pnum: ::core::option::Option<u32>,
14891    #[prost(uint32, optional, tag="2")]
14892    pub xin_id: ::core::option::Option<u32>,
14893    #[prost(uint32, optional, tag="3")]
14894    pub rd_lim: ::core::option::Option<u32>,
14895    #[prost(uint32, optional, tag="4")]
14896    pub is_vbif_rt: ::core::option::Option<u32>,
14897}
14898#[derive(Clone, PartialEq, ::prost::Message)]
14899pub struct MdpSsppChangeFtraceEvent {
14900    #[prost(uint32, optional, tag="1")]
14901    pub num: ::core::option::Option<u32>,
14902    #[prost(uint32, optional, tag="2")]
14903    pub play_cnt: ::core::option::Option<u32>,
14904    #[prost(uint32, optional, tag="3")]
14905    pub mixer: ::core::option::Option<u32>,
14906    #[prost(uint32, optional, tag="4")]
14907    pub stage: ::core::option::Option<u32>,
14908    #[prost(uint32, optional, tag="5")]
14909    pub flags: ::core::option::Option<u32>,
14910    #[prost(uint32, optional, tag="6")]
14911    pub format: ::core::option::Option<u32>,
14912    #[prost(uint32, optional, tag="7")]
14913    pub img_w: ::core::option::Option<u32>,
14914    #[prost(uint32, optional, tag="8")]
14915    pub img_h: ::core::option::Option<u32>,
14916    #[prost(uint32, optional, tag="9")]
14917    pub src_x: ::core::option::Option<u32>,
14918    #[prost(uint32, optional, tag="10")]
14919    pub src_y: ::core::option::Option<u32>,
14920    #[prost(uint32, optional, tag="11")]
14921    pub src_w: ::core::option::Option<u32>,
14922    #[prost(uint32, optional, tag="12")]
14923    pub src_h: ::core::option::Option<u32>,
14924    #[prost(uint32, optional, tag="13")]
14925    pub dst_x: ::core::option::Option<u32>,
14926    #[prost(uint32, optional, tag="14")]
14927    pub dst_y: ::core::option::Option<u32>,
14928    #[prost(uint32, optional, tag="15")]
14929    pub dst_w: ::core::option::Option<u32>,
14930    #[prost(uint32, optional, tag="16")]
14931    pub dst_h: ::core::option::Option<u32>,
14932}
14933#[derive(Clone, PartialEq, ::prost::Message)]
14934pub struct TracingMarkWriteFtraceEvent {
14935    #[prost(int32, optional, tag="1")]
14936    pub pid: ::core::option::Option<i32>,
14937    #[prost(string, optional, tag="2")]
14938    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14939    #[prost(uint32, optional, tag="3")]
14940    pub trace_begin: ::core::option::Option<u32>,
14941}
14942#[derive(Clone, PartialEq, ::prost::Message)]
14943pub struct MdpCmdPingpongDoneFtraceEvent {
14944    #[prost(uint32, optional, tag="1")]
14945    pub ctl_num: ::core::option::Option<u32>,
14946    #[prost(uint32, optional, tag="2")]
14947    pub intf_num: ::core::option::Option<u32>,
14948    #[prost(uint32, optional, tag="3")]
14949    pub pp_num: ::core::option::Option<u32>,
14950    #[prost(int32, optional, tag="4")]
14951    pub koff_cnt: ::core::option::Option<i32>,
14952}
14953#[derive(Clone, PartialEq, ::prost::Message)]
14954pub struct MdpCompareBwFtraceEvent {
14955    #[prost(uint64, optional, tag="1")]
14956    pub new_ab: ::core::option::Option<u64>,
14957    #[prost(uint64, optional, tag="2")]
14958    pub new_ib: ::core::option::Option<u64>,
14959    #[prost(uint64, optional, tag="3")]
14960    pub new_wb: ::core::option::Option<u64>,
14961    #[prost(uint64, optional, tag="4")]
14962    pub old_ab: ::core::option::Option<u64>,
14963    #[prost(uint64, optional, tag="5")]
14964    pub old_ib: ::core::option::Option<u64>,
14965    #[prost(uint64, optional, tag="6")]
14966    pub old_wb: ::core::option::Option<u64>,
14967    #[prost(uint32, optional, tag="7")]
14968    pub params_changed: ::core::option::Option<u32>,
14969    #[prost(uint32, optional, tag="8")]
14970    pub update_bw: ::core::option::Option<u32>,
14971}
14972#[derive(Clone, PartialEq, ::prost::Message)]
14973pub struct MdpPerfSetPanicLutsFtraceEvent {
14974    #[prost(uint32, optional, tag="1")]
14975    pub pnum: ::core::option::Option<u32>,
14976    #[prost(uint32, optional, tag="2")]
14977    pub fmt: ::core::option::Option<u32>,
14978    #[prost(uint32, optional, tag="3")]
14979    pub mode: ::core::option::Option<u32>,
14980    #[prost(uint32, optional, tag="4")]
14981    pub panic_lut: ::core::option::Option<u32>,
14982    #[prost(uint32, optional, tag="5")]
14983    pub robust_lut: ::core::option::Option<u32>,
14984}
14985#[derive(Clone, PartialEq, ::prost::Message)]
14986pub struct MdpSsppSetFtraceEvent {
14987    #[prost(uint32, optional, tag="1")]
14988    pub num: ::core::option::Option<u32>,
14989    #[prost(uint32, optional, tag="2")]
14990    pub play_cnt: ::core::option::Option<u32>,
14991    #[prost(uint32, optional, tag="3")]
14992    pub mixer: ::core::option::Option<u32>,
14993    #[prost(uint32, optional, tag="4")]
14994    pub stage: ::core::option::Option<u32>,
14995    #[prost(uint32, optional, tag="5")]
14996    pub flags: ::core::option::Option<u32>,
14997    #[prost(uint32, optional, tag="6")]
14998    pub format: ::core::option::Option<u32>,
14999    #[prost(uint32, optional, tag="7")]
15000    pub img_w: ::core::option::Option<u32>,
15001    #[prost(uint32, optional, tag="8")]
15002    pub img_h: ::core::option::Option<u32>,
15003    #[prost(uint32, optional, tag="9")]
15004    pub src_x: ::core::option::Option<u32>,
15005    #[prost(uint32, optional, tag="10")]
15006    pub src_y: ::core::option::Option<u32>,
15007    #[prost(uint32, optional, tag="11")]
15008    pub src_w: ::core::option::Option<u32>,
15009    #[prost(uint32, optional, tag="12")]
15010    pub src_h: ::core::option::Option<u32>,
15011    #[prost(uint32, optional, tag="13")]
15012    pub dst_x: ::core::option::Option<u32>,
15013    #[prost(uint32, optional, tag="14")]
15014    pub dst_y: ::core::option::Option<u32>,
15015    #[prost(uint32, optional, tag="15")]
15016    pub dst_w: ::core::option::Option<u32>,
15017    #[prost(uint32, optional, tag="16")]
15018    pub dst_h: ::core::option::Option<u32>,
15019}
15020#[derive(Clone, PartialEq, ::prost::Message)]
15021pub struct MdpCmdReadptrDoneFtraceEvent {
15022    #[prost(uint32, optional, tag="1")]
15023    pub ctl_num: ::core::option::Option<u32>,
15024    #[prost(int32, optional, tag="2")]
15025    pub koff_cnt: ::core::option::Option<i32>,
15026}
15027#[derive(Clone, PartialEq, ::prost::Message)]
15028pub struct MdpMisrCrcFtraceEvent {
15029    #[prost(uint32, optional, tag="1")]
15030    pub block_id: ::core::option::Option<u32>,
15031    #[prost(uint32, optional, tag="2")]
15032    pub vsync_cnt: ::core::option::Option<u32>,
15033    #[prost(uint32, optional, tag="3")]
15034    pub crc: ::core::option::Option<u32>,
15035}
15036#[derive(Clone, PartialEq, ::prost::Message)]
15037pub struct MdpPerfSetQosLutsFtraceEvent {
15038    #[prost(uint32, optional, tag="1")]
15039    pub pnum: ::core::option::Option<u32>,
15040    #[prost(uint32, optional, tag="2")]
15041    pub fmt: ::core::option::Option<u32>,
15042    #[prost(uint32, optional, tag="3")]
15043    pub intf: ::core::option::Option<u32>,
15044    #[prost(uint32, optional, tag="4")]
15045    pub rot: ::core::option::Option<u32>,
15046    #[prost(uint32, optional, tag="5")]
15047    pub fl: ::core::option::Option<u32>,
15048    #[prost(uint32, optional, tag="6")]
15049    pub lut: ::core::option::Option<u32>,
15050    #[prost(uint32, optional, tag="7")]
15051    pub linear: ::core::option::Option<u32>,
15052}
15053#[derive(Clone, PartialEq, ::prost::Message)]
15054pub struct MdpTraceCounterFtraceEvent {
15055    #[prost(int32, optional, tag="1")]
15056    pub pid: ::core::option::Option<i32>,
15057    #[prost(string, optional, tag="2")]
15058    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
15059    #[prost(int32, optional, tag="3")]
15060    pub value: ::core::option::Option<i32>,
15061}
15062#[derive(Clone, PartialEq, ::prost::Message)]
15063pub struct MdpCmdReleaseBwFtraceEvent {
15064    #[prost(uint32, optional, tag="1")]
15065    pub ctl_num: ::core::option::Option<u32>,
15066}
15067#[derive(Clone, PartialEq, ::prost::Message)]
15068pub struct MdpMixerUpdateFtraceEvent {
15069    #[prost(uint32, optional, tag="1")]
15070    pub mixer_num: ::core::option::Option<u32>,
15071}
15072#[derive(Clone, PartialEq, ::prost::Message)]
15073pub struct MdpPerfSetWmLevelsFtraceEvent {
15074    #[prost(uint32, optional, tag="1")]
15075    pub pnum: ::core::option::Option<u32>,
15076    #[prost(uint32, optional, tag="2")]
15077    pub use_space: ::core::option::Option<u32>,
15078    #[prost(uint32, optional, tag="3")]
15079    pub priority_bytes: ::core::option::Option<u32>,
15080    #[prost(uint32, optional, tag="4")]
15081    pub wm0: ::core::option::Option<u32>,
15082    #[prost(uint32, optional, tag="5")]
15083    pub wm1: ::core::option::Option<u32>,
15084    #[prost(uint32, optional, tag="6")]
15085    pub wm2: ::core::option::Option<u32>,
15086    #[prost(uint32, optional, tag="7")]
15087    pub mb_cnt: ::core::option::Option<u32>,
15088    #[prost(uint32, optional, tag="8")]
15089    pub mb_size: ::core::option::Option<u32>,
15090}
15091#[derive(Clone, PartialEq, ::prost::Message)]
15092pub struct MdpVideoUnderrunDoneFtraceEvent {
15093    #[prost(uint32, optional, tag="1")]
15094    pub ctl_num: ::core::option::Option<u32>,
15095    #[prost(uint32, optional, tag="2")]
15096    pub underrun_cnt: ::core::option::Option<u32>,
15097}
15098#[derive(Clone, PartialEq, ::prost::Message)]
15099pub struct MdpCmdWaitPingpongFtraceEvent {
15100    #[prost(uint32, optional, tag="1")]
15101    pub ctl_num: ::core::option::Option<u32>,
15102    #[prost(int32, optional, tag="2")]
15103    pub kickoff_cnt: ::core::option::Option<i32>,
15104}
15105#[derive(Clone, PartialEq, ::prost::Message)]
15106pub struct MdpPerfPrefillCalcFtraceEvent {
15107    #[prost(uint32, optional, tag="1")]
15108    pub pnum: ::core::option::Option<u32>,
15109    #[prost(uint32, optional, tag="2")]
15110    pub latency_buf: ::core::option::Option<u32>,
15111    #[prost(uint32, optional, tag="3")]
15112    pub ot: ::core::option::Option<u32>,
15113    #[prost(uint32, optional, tag="4")]
15114    pub y_buf: ::core::option::Option<u32>,
15115    #[prost(uint32, optional, tag="5")]
15116    pub y_scaler: ::core::option::Option<u32>,
15117    #[prost(uint32, optional, tag="6")]
15118    pub pp_lines: ::core::option::Option<u32>,
15119    #[prost(uint32, optional, tag="7")]
15120    pub pp_bytes: ::core::option::Option<u32>,
15121    #[prost(uint32, optional, tag="8")]
15122    pub post_sc: ::core::option::Option<u32>,
15123    #[prost(uint32, optional, tag="9")]
15124    pub fbc_bytes: ::core::option::Option<u32>,
15125    #[prost(uint32, optional, tag="10")]
15126    pub prefill_bytes: ::core::option::Option<u32>,
15127}
15128#[derive(Clone, PartialEq, ::prost::Message)]
15129pub struct MdpPerfUpdateBusFtraceEvent {
15130    #[prost(int32, optional, tag="1")]
15131    pub client: ::core::option::Option<i32>,
15132    #[prost(uint64, optional, tag="2")]
15133    pub ab_quota: ::core::option::Option<u64>,
15134    #[prost(uint64, optional, tag="3")]
15135    pub ib_quota: ::core::option::Option<u64>,
15136}
15137#[derive(Clone, PartialEq, ::prost::Message)]
15138pub struct RotatorBwAoAsContextFtraceEvent {
15139    #[prost(uint32, optional, tag="1")]
15140    pub state: ::core::option::Option<u32>,
15141}
15142// End of protos/perfetto/trace/ftrace/mdss.proto
15143
15144// Begin of protos/perfetto/trace/ftrace/mm_event.proto
15145
15146#[derive(Clone, PartialEq, ::prost::Message)]
15147pub struct MmEventRecordFtraceEvent {
15148    #[prost(uint32, optional, tag="1")]
15149    pub avg_lat: ::core::option::Option<u32>,
15150    #[prost(uint32, optional, tag="2")]
15151    pub count: ::core::option::Option<u32>,
15152    #[prost(uint32, optional, tag="3")]
15153    pub max_lat: ::core::option::Option<u32>,
15154    #[prost(uint32, optional, tag="4")]
15155    pub r#type: ::core::option::Option<u32>,
15156}
15157// End of protos/perfetto/trace/ftrace/mm_event.proto
15158
15159// Begin of protos/perfetto/trace/ftrace/net.proto
15160
15161#[derive(Clone, PartialEq, ::prost::Message)]
15162pub struct NetifReceiveSkbFtraceEvent {
15163    #[prost(uint32, optional, tag="1")]
15164    pub len: ::core::option::Option<u32>,
15165    #[prost(string, optional, tag="2")]
15166    pub name: ::core::option::Option<::prost::alloc::string::String>,
15167    #[prost(uint64, optional, tag="3")]
15168    pub skbaddr: ::core::option::Option<u64>,
15169}
15170#[derive(Clone, PartialEq, ::prost::Message)]
15171pub struct NetDevXmitFtraceEvent {
15172    #[prost(uint32, optional, tag="1")]
15173    pub len: ::core::option::Option<u32>,
15174    #[prost(string, optional, tag="2")]
15175    pub name: ::core::option::Option<::prost::alloc::string::String>,
15176    #[prost(int32, optional, tag="3")]
15177    pub rc: ::core::option::Option<i32>,
15178    #[prost(uint64, optional, tag="4")]
15179    pub skbaddr: ::core::option::Option<u64>,
15180}
15181#[derive(Clone, PartialEq, ::prost::Message)]
15182pub struct NapiGroReceiveEntryFtraceEvent {
15183    #[prost(uint32, optional, tag="1")]
15184    pub data_len: ::core::option::Option<u32>,
15185    #[prost(uint32, optional, tag="2")]
15186    pub gso_size: ::core::option::Option<u32>,
15187    #[prost(uint32, optional, tag="3")]
15188    pub gso_type: ::core::option::Option<u32>,
15189    #[prost(uint32, optional, tag="4")]
15190    pub hash: ::core::option::Option<u32>,
15191    #[prost(uint32, optional, tag="5")]
15192    pub ip_summed: ::core::option::Option<u32>,
15193    #[prost(uint32, optional, tag="6")]
15194    pub l4_hash: ::core::option::Option<u32>,
15195    #[prost(uint32, optional, tag="7")]
15196    pub len: ::core::option::Option<u32>,
15197    #[prost(int32, optional, tag="8")]
15198    pub mac_header: ::core::option::Option<i32>,
15199    #[prost(uint32, optional, tag="9")]
15200    pub mac_header_valid: ::core::option::Option<u32>,
15201    #[prost(string, optional, tag="10")]
15202    pub name: ::core::option::Option<::prost::alloc::string::String>,
15203    #[prost(uint32, optional, tag="11")]
15204    pub napi_id: ::core::option::Option<u32>,
15205    #[prost(uint32, optional, tag="12")]
15206    pub nr_frags: ::core::option::Option<u32>,
15207    #[prost(uint32, optional, tag="13")]
15208    pub protocol: ::core::option::Option<u32>,
15209    #[prost(uint32, optional, tag="14")]
15210    pub queue_mapping: ::core::option::Option<u32>,
15211    #[prost(uint64, optional, tag="15")]
15212    pub skbaddr: ::core::option::Option<u64>,
15213    #[prost(uint32, optional, tag="16")]
15214    pub truesize: ::core::option::Option<u32>,
15215    #[prost(uint32, optional, tag="17")]
15216    pub vlan_proto: ::core::option::Option<u32>,
15217    #[prost(uint32, optional, tag="18")]
15218    pub vlan_tagged: ::core::option::Option<u32>,
15219    #[prost(uint32, optional, tag="19")]
15220    pub vlan_tci: ::core::option::Option<u32>,
15221}
15222#[derive(Clone, PartialEq, ::prost::Message)]
15223pub struct NapiGroReceiveExitFtraceEvent {
15224    #[prost(int32, optional, tag="1")]
15225    pub ret: ::core::option::Option<i32>,
15226}
15227// End of protos/perfetto/trace/ftrace/net.proto
15228
15229// Begin of protos/perfetto/trace/ftrace/oom.proto
15230
15231#[derive(Clone, PartialEq, ::prost::Message)]
15232pub struct OomScoreAdjUpdateFtraceEvent {
15233    #[prost(string, optional, tag="1")]
15234    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15235    #[prost(int32, optional, tag="2")]
15236    pub oom_score_adj: ::core::option::Option<i32>,
15237    #[prost(int32, optional, tag="3")]
15238    pub pid: ::core::option::Option<i32>,
15239}
15240#[derive(Clone, PartialEq, ::prost::Message)]
15241pub struct MarkVictimFtraceEvent {
15242    #[prost(int32, optional, tag="1")]
15243    pub pid: ::core::option::Option<i32>,
15244}
15245// End of protos/perfetto/trace/ftrace/oom.proto
15246
15247// Begin of protos/perfetto/trace/ftrace/panel.proto
15248
15249#[derive(Clone, PartialEq, ::prost::Message)]
15250pub struct DsiCmdFifoStatusFtraceEvent {
15251    #[prost(uint32, optional, tag="1")]
15252    pub header: ::core::option::Option<u32>,
15253    #[prost(uint32, optional, tag="2")]
15254    pub payload: ::core::option::Option<u32>,
15255}
15256#[derive(Clone, PartialEq, ::prost::Message)]
15257pub struct DsiRxFtraceEvent {
15258    #[prost(uint32, optional, tag="1")]
15259    pub cmd: ::core::option::Option<u32>,
15260    #[prost(bytes="vec", optional, tag="3")]
15261    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15262}
15263#[derive(Clone, PartialEq, ::prost::Message)]
15264pub struct DsiTxFtraceEvent {
15265    #[prost(uint32, optional, tag="1")]
15266    pub last: ::core::option::Option<u32>,
15267    #[prost(uint32, optional, tag="3")]
15268    pub r#type: ::core::option::Option<u32>,
15269    #[prost(bytes="vec", optional, tag="4")]
15270    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15271}
15272#[derive(Clone, PartialEq, ::prost::Message)]
15273pub struct PanelWriteGenericFtraceEvent {
15274    #[prost(int32, optional, tag="1")]
15275    pub pid: ::core::option::Option<i32>,
15276    #[prost(string, optional, tag="2")]
15277    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15278    #[prost(uint32, optional, tag="3")]
15279    pub trace_begin: ::core::option::Option<u32>,
15280    #[prost(string, optional, tag="4")]
15281    pub name: ::core::option::Option<::prost::alloc::string::String>,
15282    #[prost(uint32, optional, tag="5")]
15283    pub r#type: ::core::option::Option<u32>,
15284    #[prost(int32, optional, tag="6")]
15285    pub value: ::core::option::Option<i32>,
15286}
15287#[derive(Clone, PartialEq, ::prost::Message)]
15288pub struct GramCollisionFtraceEvent {
15289    #[prost(int32, optional, tag="1")]
15290    pub panel_index: ::core::option::Option<i32>,
15291    #[prost(uint32, optional, tag="2")]
15292    pub collision_cnt: ::core::option::Option<u32>,
15293}
15294// End of protos/perfetto/trace/ftrace/panel.proto
15295
15296// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15297
15298#[derive(Clone, PartialEq, ::prost::Message)]
15299pub struct SchedSwitchWithCtrsFtraceEvent {
15300    #[prost(int32, optional, tag="1")]
15301    pub old_pid: ::core::option::Option<i32>,
15302    #[prost(int32, optional, tag="2")]
15303    pub new_pid: ::core::option::Option<i32>,
15304    #[prost(uint64, optional, tag="3")]
15305    pub cctr: ::core::option::Option<u64>,
15306    #[prost(uint64, optional, tag="4")]
15307    pub ctr0: ::core::option::Option<u64>,
15308    #[prost(uint64, optional, tag="5")]
15309    pub ctr1: ::core::option::Option<u64>,
15310    #[prost(uint64, optional, tag="6")]
15311    pub ctr2: ::core::option::Option<u64>,
15312    #[prost(uint64, optional, tag="7")]
15313    pub ctr3: ::core::option::Option<u64>,
15314    #[prost(uint32, optional, tag="8")]
15315    pub lctr0: ::core::option::Option<u32>,
15316    #[prost(uint32, optional, tag="9")]
15317    pub lctr1: ::core::option::Option<u32>,
15318    #[prost(uint64, optional, tag="10")]
15319    pub ctr4: ::core::option::Option<u64>,
15320    #[prost(uint64, optional, tag="11")]
15321    pub ctr5: ::core::option::Option<u64>,
15322    #[prost(string, optional, tag="12")]
15323    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15324    #[prost(int32, optional, tag="13")]
15325    pub prev_pid: ::core::option::Option<i32>,
15326    #[prost(uint32, optional, tag="14")]
15327    pub cyc: ::core::option::Option<u32>,
15328    #[prost(uint32, optional, tag="15")]
15329    pub inst: ::core::option::Option<u32>,
15330    #[prost(uint32, optional, tag="16")]
15331    pub stallbm: ::core::option::Option<u32>,
15332    #[prost(uint32, optional, tag="17")]
15333    pub l3dm: ::core::option::Option<u32>,
15334    #[prost(int32, optional, tag="18")]
15335    pub next_pid: ::core::option::Option<i32>,
15336    #[prost(string, optional, tag="19")]
15337    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15338    #[prost(int64, optional, tag="20")]
15339    pub prev_state: ::core::option::Option<i64>,
15340    #[prost(uint64, optional, tag="21")]
15341    pub amu0: ::core::option::Option<u64>,
15342    #[prost(uint64, optional, tag="22")]
15343    pub amu1: ::core::option::Option<u64>,
15344    #[prost(uint64, optional, tag="23")]
15345    pub amu2: ::core::option::Option<u64>,
15346}
15347// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15348
15349// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
15350
15351#[derive(Clone, PartialEq, ::prost::Message)]
15352pub struct PixelMmKswapdWakeFtraceEvent {
15353    #[prost(int32, optional, tag="1")]
15354    pub whatever: ::core::option::Option<i32>,
15355}
15356#[derive(Clone, PartialEq, ::prost::Message)]
15357pub struct PixelMmKswapdDoneFtraceEvent {
15358    #[prost(uint64, optional, tag="1")]
15359    pub delta_nr_scanned: ::core::option::Option<u64>,
15360    #[prost(uint64, optional, tag="2")]
15361    pub delta_nr_reclaimed: ::core::option::Option<u64>,
15362    #[prost(uint64, optional, tag="3")]
15363    pub delta_nr_allocated: ::core::option::Option<u64>,
15364    #[prost(uint64, optional, tag="4")]
15365    pub duration_ns: ::core::option::Option<u64>,
15366}
15367// End of protos/perfetto/trace/ftrace/pixel_mm.proto
15368
15369// Begin of protos/perfetto/trace/ftrace/power.proto
15370
15371#[derive(Clone, PartialEq, ::prost::Message)]
15372pub struct CpuFrequencyFtraceEvent {
15373    #[prost(uint32, optional, tag="1")]
15374    pub state: ::core::option::Option<u32>,
15375    #[prost(uint32, optional, tag="2")]
15376    pub cpu_id: ::core::option::Option<u32>,
15377}
15378#[derive(Clone, PartialEq, ::prost::Message)]
15379pub struct CpuFrequencyLimitsFtraceEvent {
15380    #[prost(uint32, optional, tag="1")]
15381    pub min_freq: ::core::option::Option<u32>,
15382    #[prost(uint32, optional, tag="2")]
15383    pub max_freq: ::core::option::Option<u32>,
15384    #[prost(uint32, optional, tag="3")]
15385    pub cpu_id: ::core::option::Option<u32>,
15386}
15387#[derive(Clone, PartialEq, ::prost::Message)]
15388pub struct CpuIdleFtraceEvent {
15389    #[prost(uint32, optional, tag="1")]
15390    pub state: ::core::option::Option<u32>,
15391    #[prost(uint32, optional, tag="2")]
15392    pub cpu_id: ::core::option::Option<u32>,
15393}
15394#[derive(Clone, PartialEq, ::prost::Message)]
15395pub struct ClockEnableFtraceEvent {
15396    #[prost(string, optional, tag="1")]
15397    pub name: ::core::option::Option<::prost::alloc::string::String>,
15398    #[prost(uint64, optional, tag="2")]
15399    pub state: ::core::option::Option<u64>,
15400    #[prost(uint64, optional, tag="3")]
15401    pub cpu_id: ::core::option::Option<u64>,
15402}
15403#[derive(Clone, PartialEq, ::prost::Message)]
15404pub struct ClockDisableFtraceEvent {
15405    #[prost(string, optional, tag="1")]
15406    pub name: ::core::option::Option<::prost::alloc::string::String>,
15407    #[prost(uint64, optional, tag="2")]
15408    pub state: ::core::option::Option<u64>,
15409    #[prost(uint64, optional, tag="3")]
15410    pub cpu_id: ::core::option::Option<u64>,
15411}
15412#[derive(Clone, PartialEq, ::prost::Message)]
15413pub struct ClockSetRateFtraceEvent {
15414    #[prost(string, optional, tag="1")]
15415    pub name: ::core::option::Option<::prost::alloc::string::String>,
15416    #[prost(uint64, optional, tag="2")]
15417    pub state: ::core::option::Option<u64>,
15418    #[prost(uint64, optional, tag="3")]
15419    pub cpu_id: ::core::option::Option<u64>,
15420}
15421#[derive(Clone, PartialEq, ::prost::Message)]
15422pub struct SuspendResumeFtraceEvent {
15423    #[prost(string, optional, tag="1")]
15424    pub action: ::core::option::Option<::prost::alloc::string::String>,
15425    #[prost(int32, optional, tag="2")]
15426    pub val: ::core::option::Option<i32>,
15427    #[prost(uint32, optional, tag="3")]
15428    pub start: ::core::option::Option<u32>,
15429}
15430#[derive(Clone, PartialEq, ::prost::Message)]
15431pub struct GpuFrequencyFtraceEvent {
15432    #[prost(uint32, optional, tag="1")]
15433    pub gpu_id: ::core::option::Option<u32>,
15434    #[prost(uint32, optional, tag="2")]
15435    pub state: ::core::option::Option<u32>,
15436}
15437#[derive(Clone, PartialEq, ::prost::Message)]
15438pub struct WakeupSourceActivateFtraceEvent {
15439    #[prost(string, optional, tag="1")]
15440    pub name: ::core::option::Option<::prost::alloc::string::String>,
15441    #[prost(uint64, optional, tag="2")]
15442    pub state: ::core::option::Option<u64>,
15443}
15444#[derive(Clone, PartialEq, ::prost::Message)]
15445pub struct WakeupSourceDeactivateFtraceEvent {
15446    #[prost(string, optional, tag="1")]
15447    pub name: ::core::option::Option<::prost::alloc::string::String>,
15448    #[prost(uint64, optional, tag="2")]
15449    pub state: ::core::option::Option<u64>,
15450}
15451#[derive(Clone, PartialEq, ::prost::Message)]
15452pub struct GpuWorkPeriodFtraceEvent {
15453    #[prost(uint32, optional, tag="1")]
15454    pub gpu_id: ::core::option::Option<u32>,
15455    #[prost(uint32, optional, tag="2")]
15456    pub uid: ::core::option::Option<u32>,
15457    #[prost(uint64, optional, tag="3")]
15458    pub start_time_ns: ::core::option::Option<u64>,
15459    #[prost(uint64, optional, tag="4")]
15460    pub end_time_ns: ::core::option::Option<u64>,
15461    #[prost(uint64, optional, tag="5")]
15462    pub total_active_duration_ns: ::core::option::Option<u64>,
15463}
15464#[derive(Clone, PartialEq, ::prost::Message)]
15465pub struct DevicePmCallbackStartFtraceEvent {
15466    #[prost(string, optional, tag="1")]
15467    pub device: ::core::option::Option<::prost::alloc::string::String>,
15468    #[prost(string, optional, tag="2")]
15469    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15470    #[prost(string, optional, tag="3")]
15471    pub parent: ::core::option::Option<::prost::alloc::string::String>,
15472    #[prost(string, optional, tag="4")]
15473    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
15474    #[prost(int32, optional, tag="5")]
15475    pub event: ::core::option::Option<i32>,
15476}
15477#[derive(Clone, PartialEq, ::prost::Message)]
15478pub struct DevicePmCallbackEndFtraceEvent {
15479    #[prost(string, optional, tag="1")]
15480    pub device: ::core::option::Option<::prost::alloc::string::String>,
15481    #[prost(string, optional, tag="2")]
15482    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15483    #[prost(int32, optional, tag="3")]
15484    pub error: ::core::option::Option<i32>,
15485}
15486#[derive(Clone, PartialEq, ::prost::Message)]
15487pub struct GpuPowerStateFtraceEvent {
15488    #[prost(int32, optional, tag="1")]
15489    pub old_state: ::core::option::Option<i32>,
15490    #[prost(int32, optional, tag="2")]
15491    pub new_state: ::core::option::Option<i32>,
15492}
15493// End of protos/perfetto/trace/ftrace/power.proto
15494
15495// Begin of protos/perfetto/trace/ftrace/printk.proto
15496
15497#[derive(Clone, PartialEq, ::prost::Message)]
15498pub struct ConsoleFtraceEvent {
15499    #[prost(string, optional, tag="1")]
15500    pub msg: ::core::option::Option<::prost::alloc::string::String>,
15501}
15502// End of protos/perfetto/trace/ftrace/printk.proto
15503
15504// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
15505
15506#[derive(Clone, PartialEq, ::prost::Message)]
15507pub struct SysEnterFtraceEvent {
15508    #[prost(int64, optional, tag="1")]
15509    pub id: ::core::option::Option<i64>,
15510    #[prost(uint64, repeated, packed="false", tag="2")]
15511    pub args: ::prost::alloc::vec::Vec<u64>,
15512}
15513#[derive(Clone, PartialEq, ::prost::Message)]
15514pub struct SysExitFtraceEvent {
15515    #[prost(int64, optional, tag="1")]
15516    pub id: ::core::option::Option<i64>,
15517    #[prost(int64, optional, tag="2")]
15518    pub ret: ::core::option::Option<i64>,
15519}
15520// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
15521
15522// Begin of protos/perfetto/trace/ftrace/regulator.proto
15523
15524#[derive(Clone, PartialEq, ::prost::Message)]
15525pub struct RegulatorDisableFtraceEvent {
15526    #[prost(string, optional, tag="1")]
15527    pub name: ::core::option::Option<::prost::alloc::string::String>,
15528}
15529#[derive(Clone, PartialEq, ::prost::Message)]
15530pub struct RegulatorDisableCompleteFtraceEvent {
15531    #[prost(string, optional, tag="1")]
15532    pub name: ::core::option::Option<::prost::alloc::string::String>,
15533}
15534#[derive(Clone, PartialEq, ::prost::Message)]
15535pub struct RegulatorEnableFtraceEvent {
15536    #[prost(string, optional, tag="1")]
15537    pub name: ::core::option::Option<::prost::alloc::string::String>,
15538}
15539#[derive(Clone, PartialEq, ::prost::Message)]
15540pub struct RegulatorEnableCompleteFtraceEvent {
15541    #[prost(string, optional, tag="1")]
15542    pub name: ::core::option::Option<::prost::alloc::string::String>,
15543}
15544#[derive(Clone, PartialEq, ::prost::Message)]
15545pub struct RegulatorEnableDelayFtraceEvent {
15546    #[prost(string, optional, tag="1")]
15547    pub name: ::core::option::Option<::prost::alloc::string::String>,
15548}
15549#[derive(Clone, PartialEq, ::prost::Message)]
15550pub struct RegulatorSetVoltageFtraceEvent {
15551    #[prost(string, optional, tag="1")]
15552    pub name: ::core::option::Option<::prost::alloc::string::String>,
15553    #[prost(int32, optional, tag="2")]
15554    pub min: ::core::option::Option<i32>,
15555    #[prost(int32, optional, tag="3")]
15556    pub max: ::core::option::Option<i32>,
15557}
15558#[derive(Clone, PartialEq, ::prost::Message)]
15559pub struct RegulatorSetVoltageCompleteFtraceEvent {
15560    #[prost(string, optional, tag="1")]
15561    pub name: ::core::option::Option<::prost::alloc::string::String>,
15562    #[prost(uint32, optional, tag="2")]
15563    pub val: ::core::option::Option<u32>,
15564}
15565// End of protos/perfetto/trace/ftrace/regulator.proto
15566
15567// Begin of protos/perfetto/trace/ftrace/rpm.proto
15568
15569#[derive(Clone, PartialEq, ::prost::Message)]
15570pub struct RpmStatusFtraceEvent {
15571    #[prost(string, optional, tag="1")]
15572    pub name: ::core::option::Option<::prost::alloc::string::String>,
15573    #[prost(int32, optional, tag="2")]
15574    pub status: ::core::option::Option<i32>,
15575}
15576// End of protos/perfetto/trace/ftrace/rpm.proto
15577
15578// Begin of protos/perfetto/trace/ftrace/samsung.proto
15579
15580#[derive(Clone, PartialEq, ::prost::Message)]
15581pub struct SamsungTracingMarkWriteFtraceEvent {
15582    #[prost(int32, optional, tag="1")]
15583    pub pid: ::core::option::Option<i32>,
15584    #[prost(string, optional, tag="2")]
15585    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15586    #[prost(uint32, optional, tag="3")]
15587    pub trace_begin: ::core::option::Option<u32>,
15588    #[prost(uint32, optional, tag="4")]
15589    pub trace_type: ::core::option::Option<u32>,
15590    #[prost(int32, optional, tag="5")]
15591    pub value: ::core::option::Option<i32>,
15592}
15593// End of protos/perfetto/trace/ftrace/samsung.proto
15594
15595// Begin of protos/perfetto/trace/ftrace/sched.proto
15596
15597#[derive(Clone, PartialEq, ::prost::Message)]
15598pub struct SchedSwitchFtraceEvent {
15599    #[prost(string, optional, tag="1")]
15600    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15601    #[prost(int32, optional, tag="2")]
15602    pub prev_pid: ::core::option::Option<i32>,
15603    #[prost(int32, optional, tag="3")]
15604    pub prev_prio: ::core::option::Option<i32>,
15605    #[prost(int64, optional, tag="4")]
15606    pub prev_state: ::core::option::Option<i64>,
15607    #[prost(string, optional, tag="5")]
15608    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15609    #[prost(int32, optional, tag="6")]
15610    pub next_pid: ::core::option::Option<i32>,
15611    #[prost(int32, optional, tag="7")]
15612    pub next_prio: ::core::option::Option<i32>,
15613}
15614#[derive(Clone, PartialEq, ::prost::Message)]
15615pub struct SchedWakeupFtraceEvent {
15616    #[prost(string, optional, tag="1")]
15617    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15618    #[prost(int32, optional, tag="2")]
15619    pub pid: ::core::option::Option<i32>,
15620    #[prost(int32, optional, tag="3")]
15621    pub prio: ::core::option::Option<i32>,
15622    #[prost(int32, optional, tag="4")]
15623    pub success: ::core::option::Option<i32>,
15624    #[prost(int32, optional, tag="5")]
15625    pub target_cpu: ::core::option::Option<i32>,
15626}
15627#[derive(Clone, PartialEq, ::prost::Message)]
15628pub struct SchedBlockedReasonFtraceEvent {
15629    #[prost(int32, optional, tag="1")]
15630    pub pid: ::core::option::Option<i32>,
15631    #[prost(uint64, optional, tag="2")]
15632    pub caller: ::core::option::Option<u64>,
15633    #[prost(uint32, optional, tag="3")]
15634    pub io_wait: ::core::option::Option<u32>,
15635}
15636#[derive(Clone, PartialEq, ::prost::Message)]
15637pub struct SchedCpuHotplugFtraceEvent {
15638    #[prost(int32, optional, tag="1")]
15639    pub affected_cpu: ::core::option::Option<i32>,
15640    #[prost(int32, optional, tag="2")]
15641    pub error: ::core::option::Option<i32>,
15642    #[prost(int32, optional, tag="3")]
15643    pub status: ::core::option::Option<i32>,
15644}
15645#[derive(Clone, PartialEq, ::prost::Message)]
15646pub struct SchedWakingFtraceEvent {
15647    #[prost(string, optional, tag="1")]
15648    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15649    #[prost(int32, optional, tag="2")]
15650    pub pid: ::core::option::Option<i32>,
15651    #[prost(int32, optional, tag="3")]
15652    pub prio: ::core::option::Option<i32>,
15653    #[prost(int32, optional, tag="4")]
15654    pub success: ::core::option::Option<i32>,
15655    #[prost(int32, optional, tag="5")]
15656    pub target_cpu: ::core::option::Option<i32>,
15657}
15658#[derive(Clone, PartialEq, ::prost::Message)]
15659pub struct SchedWakeupNewFtraceEvent {
15660    #[prost(string, optional, tag="1")]
15661    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15662    #[prost(int32, optional, tag="2")]
15663    pub pid: ::core::option::Option<i32>,
15664    #[prost(int32, optional, tag="3")]
15665    pub prio: ::core::option::Option<i32>,
15666    #[prost(int32, optional, tag="4")]
15667    pub success: ::core::option::Option<i32>,
15668    #[prost(int32, optional, tag="5")]
15669    pub target_cpu: ::core::option::Option<i32>,
15670}
15671#[derive(Clone, PartialEq, ::prost::Message)]
15672pub struct SchedProcessExecFtraceEvent {
15673    #[prost(string, optional, tag="1")]
15674    pub filename: ::core::option::Option<::prost::alloc::string::String>,
15675    #[prost(int32, optional, tag="2")]
15676    pub pid: ::core::option::Option<i32>,
15677    #[prost(int32, optional, tag="3")]
15678    pub old_pid: ::core::option::Option<i32>,
15679}
15680#[derive(Clone, PartialEq, ::prost::Message)]
15681pub struct SchedProcessExitFtraceEvent {
15682    #[prost(string, optional, tag="1")]
15683    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15684    #[prost(int32, optional, tag="2")]
15685    pub pid: ::core::option::Option<i32>,
15686    #[prost(int32, optional, tag="3")]
15687    pub tgid: ::core::option::Option<i32>,
15688    #[prost(int32, optional, tag="4")]
15689    pub prio: ::core::option::Option<i32>,
15690}
15691#[derive(Clone, PartialEq, ::prost::Message)]
15692pub struct SchedProcessForkFtraceEvent {
15693    #[prost(string, optional, tag="1")]
15694    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15695    #[prost(int32, optional, tag="2")]
15696    pub parent_pid: ::core::option::Option<i32>,
15697    #[prost(string, optional, tag="3")]
15698    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15699    #[prost(int32, optional, tag="4")]
15700    pub child_pid: ::core::option::Option<i32>,
15701}
15702#[derive(Clone, PartialEq, ::prost::Message)]
15703pub struct SchedProcessFreeFtraceEvent {
15704    #[prost(string, optional, tag="1")]
15705    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15706    #[prost(int32, optional, tag="2")]
15707    pub pid: ::core::option::Option<i32>,
15708    #[prost(int32, optional, tag="3")]
15709    pub prio: ::core::option::Option<i32>,
15710}
15711#[derive(Clone, PartialEq, ::prost::Message)]
15712pub struct SchedProcessHangFtraceEvent {
15713    #[prost(string, optional, tag="1")]
15714    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15715    #[prost(int32, optional, tag="2")]
15716    pub pid: ::core::option::Option<i32>,
15717}
15718#[derive(Clone, PartialEq, ::prost::Message)]
15719pub struct SchedProcessWaitFtraceEvent {
15720    #[prost(string, optional, tag="1")]
15721    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15722    #[prost(int32, optional, tag="2")]
15723    pub pid: ::core::option::Option<i32>,
15724    #[prost(int32, optional, tag="3")]
15725    pub prio: ::core::option::Option<i32>,
15726}
15727#[derive(Clone, PartialEq, ::prost::Message)]
15728pub struct SchedPiSetprioFtraceEvent {
15729    #[prost(string, optional, tag="1")]
15730    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15731    #[prost(int32, optional, tag="2")]
15732    pub newprio: ::core::option::Option<i32>,
15733    #[prost(int32, optional, tag="3")]
15734    pub oldprio: ::core::option::Option<i32>,
15735    #[prost(int32, optional, tag="4")]
15736    pub pid: ::core::option::Option<i32>,
15737}
15738#[derive(Clone, PartialEq, ::prost::Message)]
15739pub struct SchedCpuUtilCfsFtraceEvent {
15740    #[prost(int32, optional, tag="1")]
15741    pub active: ::core::option::Option<i32>,
15742    #[prost(uint64, optional, tag="2")]
15743    pub capacity: ::core::option::Option<u64>,
15744    #[prost(uint64, optional, tag="3")]
15745    pub capacity_orig: ::core::option::Option<u64>,
15746    #[prost(uint32, optional, tag="4")]
15747    pub cpu: ::core::option::Option<u32>,
15748    #[prost(uint64, optional, tag="5")]
15749    pub cpu_importance: ::core::option::Option<u64>,
15750    #[prost(uint64, optional, tag="6")]
15751    pub cpu_util: ::core::option::Option<u64>,
15752    #[prost(uint32, optional, tag="7")]
15753    pub exit_lat: ::core::option::Option<u32>,
15754    #[prost(uint64, optional, tag="8")]
15755    pub group_capacity: ::core::option::Option<u64>,
15756    #[prost(uint32, optional, tag="9")]
15757    pub grp_overutilized: ::core::option::Option<u32>,
15758    #[prost(uint32, optional, tag="10")]
15759    pub idle_cpu: ::core::option::Option<u32>,
15760    #[prost(uint32, optional, tag="11")]
15761    pub nr_running: ::core::option::Option<u32>,
15762    #[prost(int64, optional, tag="12")]
15763    pub spare_cap: ::core::option::Option<i64>,
15764    #[prost(uint32, optional, tag="13")]
15765    pub task_fits: ::core::option::Option<u32>,
15766    #[prost(uint64, optional, tag="14")]
15767    pub wake_group_util: ::core::option::Option<u64>,
15768    #[prost(uint64, optional, tag="15")]
15769    pub wake_util: ::core::option::Option<u64>,
15770}
15771#[derive(Clone, PartialEq, ::prost::Message)]
15772pub struct SchedMigrateTaskFtraceEvent {
15773    #[prost(string, optional, tag="1")]
15774    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15775    #[prost(int32, optional, tag="2")]
15776    pub pid: ::core::option::Option<i32>,
15777    #[prost(int32, optional, tag="3")]
15778    pub prio: ::core::option::Option<i32>,
15779    #[prost(int32, optional, tag="4")]
15780    pub orig_cpu: ::core::option::Option<i32>,
15781    #[prost(int32, optional, tag="5")]
15782    pub dest_cpu: ::core::option::Option<i32>,
15783    #[prost(int32, optional, tag="6")]
15784    pub running: ::core::option::Option<i32>,
15785    #[prost(uint32, optional, tag="7")]
15786    pub load: ::core::option::Option<u32>,
15787}
15788#[derive(Clone, PartialEq, ::prost::Message)]
15789pub struct SchedWakeupTaskAttrFtraceEvent {
15790    #[prost(int32, optional, tag="1")]
15791    pub pid: ::core::option::Option<i32>,
15792    #[prost(uint64, optional, tag="2")]
15793    pub cpu_affinity: ::core::option::Option<u64>,
15794    #[prost(uint64, optional, tag="3")]
15795    pub task_util: ::core::option::Option<u64>,
15796    #[prost(uint64, optional, tag="4")]
15797    pub uclamp_min: ::core::option::Option<u64>,
15798    #[prost(uint64, optional, tag="5")]
15799    pub vruntime: ::core::option::Option<u64>,
15800}
15801// End of protos/perfetto/trace/ftrace/sched.proto
15802
15803// Begin of protos/perfetto/trace/ftrace/scm.proto
15804
15805#[derive(Clone, PartialEq, ::prost::Message)]
15806pub struct ScmCallStartFtraceEvent {
15807    #[prost(uint32, optional, tag="1")]
15808    pub arginfo: ::core::option::Option<u32>,
15809    #[prost(uint64, optional, tag="2")]
15810    pub x0: ::core::option::Option<u64>,
15811    #[prost(uint64, optional, tag="3")]
15812    pub x5: ::core::option::Option<u64>,
15813}
15814#[derive(Clone, PartialEq, ::prost::Message)]
15815pub struct ScmCallEndFtraceEvent {
15816}
15817// End of protos/perfetto/trace/ftrace/scm.proto
15818
15819// Begin of protos/perfetto/trace/ftrace/scsi.proto
15820
15821#[derive(Clone, PartialEq, ::prost::Message)]
15822pub struct ScsiDispatchCmdErrorFtraceEvent {
15823    #[prost(uint32, optional, tag="1")]
15824    pub host_no: ::core::option::Option<u32>,
15825    #[prost(uint32, optional, tag="2")]
15826    pub channel: ::core::option::Option<u32>,
15827    #[prost(uint32, optional, tag="3")]
15828    pub id: ::core::option::Option<u32>,
15829    #[prost(uint32, optional, tag="4")]
15830    pub lun: ::core::option::Option<u32>,
15831    #[prost(int32, optional, tag="5")]
15832    pub rtn: ::core::option::Option<i32>,
15833    #[prost(uint32, optional, tag="6")]
15834    pub opcode: ::core::option::Option<u32>,
15835    #[prost(uint32, optional, tag="7")]
15836    pub cmd_len: ::core::option::Option<u32>,
15837    #[prost(uint32, optional, tag="8")]
15838    pub data_sglen: ::core::option::Option<u32>,
15839    #[prost(uint32, optional, tag="9")]
15840    pub prot_sglen: ::core::option::Option<u32>,
15841    #[prost(uint32, optional, tag="10")]
15842    pub prot_op: ::core::option::Option<u32>,
15843    #[prost(int32, optional, tag="12")]
15844    pub driver_tag: ::core::option::Option<i32>,
15845    #[prost(int32, optional, tag="13")]
15846    pub scheduler_tag: ::core::option::Option<i32>,
15847    #[prost(bytes="vec", optional, tag="14")]
15848    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15849}
15850#[derive(Clone, PartialEq, ::prost::Message)]
15851pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15852    #[prost(uint32, optional, tag="1")]
15853    pub host_no: ::core::option::Option<u32>,
15854    #[prost(uint32, optional, tag="2")]
15855    pub channel: ::core::option::Option<u32>,
15856    #[prost(uint32, optional, tag="3")]
15857    pub id: ::core::option::Option<u32>,
15858    #[prost(uint32, optional, tag="4")]
15859    pub lun: ::core::option::Option<u32>,
15860    #[prost(int32, optional, tag="5")]
15861    pub result: ::core::option::Option<i32>,
15862    #[prost(uint32, optional, tag="6")]
15863    pub opcode: ::core::option::Option<u32>,
15864    #[prost(uint32, optional, tag="7")]
15865    pub cmd_len: ::core::option::Option<u32>,
15866    #[prost(uint32, optional, tag="8")]
15867    pub data_sglen: ::core::option::Option<u32>,
15868    #[prost(uint32, optional, tag="9")]
15869    pub prot_sglen: ::core::option::Option<u32>,
15870    #[prost(uint32, optional, tag="10")]
15871    pub prot_op: ::core::option::Option<u32>,
15872    #[prost(int32, optional, tag="12")]
15873    pub driver_tag: ::core::option::Option<i32>,
15874    #[prost(int32, optional, tag="13")]
15875    pub scheduler_tag: ::core::option::Option<i32>,
15876    #[prost(uint32, optional, tag="14")]
15877    pub sense_key: ::core::option::Option<u32>,
15878    #[prost(uint32, optional, tag="15")]
15879    pub asc: ::core::option::Option<u32>,
15880    #[prost(uint32, optional, tag="16")]
15881    pub ascq: ::core::option::Option<u32>,
15882    #[prost(bytes="vec", optional, tag="17")]
15883    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15884}
15885#[derive(Clone, PartialEq, ::prost::Message)]
15886pub struct ScsiEhWakeupFtraceEvent {
15887    #[prost(uint32, optional, tag="1")]
15888    pub host_no: ::core::option::Option<u32>,
15889}
15890// End of protos/perfetto/trace/ftrace/scsi.proto
15891
15892// Begin of protos/perfetto/trace/ftrace/sde.proto
15893
15894#[derive(Clone, PartialEq, ::prost::Message)]
15895pub struct SdeTracingMarkWriteFtraceEvent {
15896    #[prost(int32, optional, tag="1")]
15897    pub pid: ::core::option::Option<i32>,
15898    #[prost(string, optional, tag="2")]
15899    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15900    #[prost(uint32, optional, tag="3")]
15901    pub trace_type: ::core::option::Option<u32>,
15902    #[prost(int32, optional, tag="4")]
15903    pub value: ::core::option::Option<i32>,
15904    #[prost(uint32, optional, tag="5")]
15905    pub trace_begin: ::core::option::Option<u32>,
15906}
15907#[derive(Clone, PartialEq, ::prost::Message)]
15908pub struct SdeSdeEvtlogFtraceEvent {
15909    #[prost(string, optional, tag="1")]
15910    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
15911    #[prost(int32, optional, tag="2")]
15912    pub pid: ::core::option::Option<i32>,
15913    #[prost(uint32, optional, tag="3")]
15914    pub tag_id: ::core::option::Option<u32>,
15915}
15916#[derive(Clone, PartialEq, ::prost::Message)]
15917pub struct SdeSdePerfCalcCrtcFtraceEvent {
15918    #[prost(uint64, optional, tag="1")]
15919    pub bw_ctl_ebi: ::core::option::Option<u64>,
15920    #[prost(uint64, optional, tag="2")]
15921    pub bw_ctl_llcc: ::core::option::Option<u64>,
15922    #[prost(uint64, optional, tag="3")]
15923    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15924    #[prost(uint32, optional, tag="4")]
15925    pub core_clk_rate: ::core::option::Option<u32>,
15926    #[prost(uint32, optional, tag="5")]
15927    pub crtc: ::core::option::Option<u32>,
15928    #[prost(uint64, optional, tag="6")]
15929    pub ib_ebi: ::core::option::Option<u64>,
15930    #[prost(uint64, optional, tag="7")]
15931    pub ib_llcc: ::core::option::Option<u64>,
15932    #[prost(uint64, optional, tag="8")]
15933    pub ib_mnoc: ::core::option::Option<u64>,
15934}
15935#[derive(Clone, PartialEq, ::prost::Message)]
15936pub struct SdeSdePerfCrtcUpdateFtraceEvent {
15937    #[prost(uint64, optional, tag="1")]
15938    pub bw_ctl_ebi: ::core::option::Option<u64>,
15939    #[prost(uint64, optional, tag="2")]
15940    pub bw_ctl_llcc: ::core::option::Option<u64>,
15941    #[prost(uint64, optional, tag="3")]
15942    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15943    #[prost(uint32, optional, tag="4")]
15944    pub core_clk_rate: ::core::option::Option<u32>,
15945    #[prost(uint32, optional, tag="5")]
15946    pub crtc: ::core::option::Option<u32>,
15947    #[prost(int32, optional, tag="6")]
15948    pub params: ::core::option::Option<i32>,
15949    #[prost(uint64, optional, tag="7")]
15950    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
15951    #[prost(uint64, optional, tag="8")]
15952    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
15953    #[prost(uint64, optional, tag="9")]
15954    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
15955    #[prost(uint32, optional, tag="10")]
15956    pub stop_req: ::core::option::Option<u32>,
15957    #[prost(uint32, optional, tag="11")]
15958    pub update_bus: ::core::option::Option<u32>,
15959    #[prost(uint32, optional, tag="12")]
15960    pub update_clk: ::core::option::Option<u32>,
15961}
15962#[derive(Clone, PartialEq, ::prost::Message)]
15963pub struct SdeSdePerfSetQosLutsFtraceEvent {
15964    #[prost(uint32, optional, tag="1")]
15965    pub fl: ::core::option::Option<u32>,
15966    #[prost(uint32, optional, tag="2")]
15967    pub fmt: ::core::option::Option<u32>,
15968    #[prost(uint64, optional, tag="3")]
15969    pub lut: ::core::option::Option<u64>,
15970    #[prost(uint32, optional, tag="4")]
15971    pub lut_usage: ::core::option::Option<u32>,
15972    #[prost(uint32, optional, tag="5")]
15973    pub pnum: ::core::option::Option<u32>,
15974    #[prost(uint32, optional, tag="6")]
15975    pub rt: ::core::option::Option<u32>,
15976}
15977#[derive(Clone, PartialEq, ::prost::Message)]
15978pub struct SdeSdePerfUpdateBusFtraceEvent {
15979    #[prost(uint64, optional, tag="1")]
15980    pub ab_quota: ::core::option::Option<u64>,
15981    #[prost(uint32, optional, tag="2")]
15982    pub bus_id: ::core::option::Option<u32>,
15983    #[prost(int32, optional, tag="3")]
15984    pub client: ::core::option::Option<i32>,
15985    #[prost(uint64, optional, tag="4")]
15986    pub ib_quota: ::core::option::Option<u64>,
15987}
15988// End of protos/perfetto/trace/ftrace/sde.proto
15989
15990// Begin of protos/perfetto/trace/ftrace/signal.proto
15991
15992#[derive(Clone, PartialEq, ::prost::Message)]
15993pub struct SignalDeliverFtraceEvent {
15994    #[prost(int32, optional, tag="1")]
15995    pub code: ::core::option::Option<i32>,
15996    #[prost(uint64, optional, tag="2")]
15997    pub sa_flags: ::core::option::Option<u64>,
15998    #[prost(int32, optional, tag="3")]
15999    pub sig: ::core::option::Option<i32>,
16000}
16001#[derive(Clone, PartialEq, ::prost::Message)]
16002pub struct SignalGenerateFtraceEvent {
16003    #[prost(int32, optional, tag="1")]
16004    pub code: ::core::option::Option<i32>,
16005    #[prost(string, optional, tag="2")]
16006    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16007    #[prost(int32, optional, tag="3")]
16008    pub group: ::core::option::Option<i32>,
16009    #[prost(int32, optional, tag="4")]
16010    pub pid: ::core::option::Option<i32>,
16011    #[prost(int32, optional, tag="5")]
16012    pub result: ::core::option::Option<i32>,
16013    #[prost(int32, optional, tag="6")]
16014    pub sig: ::core::option::Option<i32>,
16015}
16016// End of protos/perfetto/trace/ftrace/signal.proto
16017
16018// Begin of protos/perfetto/trace/ftrace/skb.proto
16019
16020#[derive(Clone, PartialEq, ::prost::Message)]
16021pub struct KfreeSkbFtraceEvent {
16022    #[prost(uint64, optional, tag="1")]
16023    pub location: ::core::option::Option<u64>,
16024    #[prost(uint32, optional, tag="2")]
16025    pub protocol: ::core::option::Option<u32>,
16026    #[prost(uint64, optional, tag="3")]
16027    pub skbaddr: ::core::option::Option<u64>,
16028}
16029// End of protos/perfetto/trace/ftrace/skb.proto
16030
16031// Begin of protos/perfetto/trace/ftrace/sock.proto
16032
16033#[derive(Clone, PartialEq, ::prost::Message)]
16034pub struct InetSockSetStateFtraceEvent {
16035    #[prost(uint32, optional, tag="1")]
16036    pub daddr: ::core::option::Option<u32>,
16037    #[prost(uint32, optional, tag="2")]
16038    pub dport: ::core::option::Option<u32>,
16039    #[prost(uint32, optional, tag="3")]
16040    pub family: ::core::option::Option<u32>,
16041    #[prost(int32, optional, tag="4")]
16042    pub newstate: ::core::option::Option<i32>,
16043    #[prost(int32, optional, tag="5")]
16044    pub oldstate: ::core::option::Option<i32>,
16045    #[prost(uint32, optional, tag="6")]
16046    pub protocol: ::core::option::Option<u32>,
16047    #[prost(uint32, optional, tag="7")]
16048    pub saddr: ::core::option::Option<u32>,
16049    #[prost(uint64, optional, tag="8")]
16050    pub skaddr: ::core::option::Option<u64>,
16051    #[prost(uint32, optional, tag="9")]
16052    pub sport: ::core::option::Option<u32>,
16053}
16054// End of protos/perfetto/trace/ftrace/sock.proto
16055
16056// Begin of protos/perfetto/trace/ftrace/sync.proto
16057
16058#[derive(Clone, PartialEq, ::prost::Message)]
16059pub struct SyncPtFtraceEvent {
16060    #[prost(string, optional, tag="1")]
16061    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
16062    #[prost(string, optional, tag="2")]
16063    pub value: ::core::option::Option<::prost::alloc::string::String>,
16064}
16065#[derive(Clone, PartialEq, ::prost::Message)]
16066pub struct SyncTimelineFtraceEvent {
16067    #[prost(string, optional, tag="1")]
16068    pub name: ::core::option::Option<::prost::alloc::string::String>,
16069    #[prost(string, optional, tag="2")]
16070    pub value: ::core::option::Option<::prost::alloc::string::String>,
16071}
16072#[derive(Clone, PartialEq, ::prost::Message)]
16073pub struct SyncWaitFtraceEvent {
16074    #[prost(string, optional, tag="1")]
16075    pub name: ::core::option::Option<::prost::alloc::string::String>,
16076    #[prost(int32, optional, tag="2")]
16077    pub status: ::core::option::Option<i32>,
16078    #[prost(uint32, optional, tag="3")]
16079    pub begin: ::core::option::Option<u32>,
16080}
16081// End of protos/perfetto/trace/ftrace/sync.proto
16082
16083// Begin of protos/perfetto/trace/ftrace/synthetic.proto
16084
16085#[derive(Clone, PartialEq, ::prost::Message)]
16086pub struct RssStatThrottledFtraceEvent {
16087    #[prost(uint32, optional, tag="1")]
16088    pub curr: ::core::option::Option<u32>,
16089    #[prost(int32, optional, tag="2")]
16090    pub member: ::core::option::Option<i32>,
16091    #[prost(uint32, optional, tag="3")]
16092    pub mm_id: ::core::option::Option<u32>,
16093    #[prost(int64, optional, tag="4")]
16094    pub size: ::core::option::Option<i64>,
16095}
16096#[derive(Clone, PartialEq, ::prost::Message)]
16097pub struct SuspendResumeMinimalFtraceEvent {
16098    #[prost(uint32, optional, tag="1")]
16099    pub start: ::core::option::Option<u32>,
16100}
16101// End of protos/perfetto/trace/ftrace/synthetic.proto
16102
16103// Begin of protos/perfetto/trace/ftrace/systrace.proto
16104
16105#[derive(Clone, PartialEq, ::prost::Message)]
16106pub struct ZeroFtraceEvent {
16107    #[prost(int32, optional, tag="1")]
16108    pub flag: ::core::option::Option<i32>,
16109    #[prost(string, optional, tag="2")]
16110    pub name: ::core::option::Option<::prost::alloc::string::String>,
16111    #[prost(int32, optional, tag="3")]
16112    pub pid: ::core::option::Option<i32>,
16113    #[prost(int64, optional, tag="4")]
16114    pub value: ::core::option::Option<i64>,
16115}
16116// End of protos/perfetto/trace/ftrace/systrace.proto
16117
16118// Begin of protos/perfetto/trace/ftrace/task.proto
16119
16120#[derive(Clone, PartialEq, ::prost::Message)]
16121pub struct TaskNewtaskFtraceEvent {
16122    #[prost(int32, optional, tag="1")]
16123    pub pid: ::core::option::Option<i32>,
16124    #[prost(string, optional, tag="2")]
16125    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16126    #[prost(uint64, optional, tag="3")]
16127    pub clone_flags: ::core::option::Option<u64>,
16128    #[prost(int32, optional, tag="4")]
16129    pub oom_score_adj: ::core::option::Option<i32>,
16130}
16131#[derive(Clone, PartialEq, ::prost::Message)]
16132pub struct TaskRenameFtraceEvent {
16133    #[prost(int32, optional, tag="1")]
16134    pub pid: ::core::option::Option<i32>,
16135    #[prost(string, optional, tag="2")]
16136    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
16137    #[prost(string, optional, tag="3")]
16138    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
16139    #[prost(int32, optional, tag="4")]
16140    pub oom_score_adj: ::core::option::Option<i32>,
16141}
16142// End of protos/perfetto/trace/ftrace/task.proto
16143
16144// Begin of protos/perfetto/trace/ftrace/tcp.proto
16145
16146#[derive(Clone, PartialEq, ::prost::Message)]
16147pub struct TcpRetransmitSkbFtraceEvent {
16148    #[prost(uint32, optional, tag="1")]
16149    pub daddr: ::core::option::Option<u32>,
16150    #[prost(uint32, optional, tag="2")]
16151    pub dport: ::core::option::Option<u32>,
16152    #[prost(uint32, optional, tag="3")]
16153    pub saddr: ::core::option::Option<u32>,
16154    #[prost(uint64, optional, tag="4")]
16155    pub skaddr: ::core::option::Option<u64>,
16156    #[prost(uint64, optional, tag="5")]
16157    pub skbaddr: ::core::option::Option<u64>,
16158    #[prost(uint32, optional, tag="6")]
16159    pub sport: ::core::option::Option<u32>,
16160    #[prost(int32, optional, tag="7")]
16161    pub state: ::core::option::Option<i32>,
16162}
16163// End of protos/perfetto/trace/ftrace/tcp.proto
16164
16165// Begin of protos/perfetto/trace/ftrace/thermal.proto
16166
16167#[derive(Clone, PartialEq, ::prost::Message)]
16168pub struct ThermalTemperatureFtraceEvent {
16169    #[prost(int32, optional, tag="1")]
16170    pub id: ::core::option::Option<i32>,
16171    #[prost(int32, optional, tag="2")]
16172    pub temp: ::core::option::Option<i32>,
16173    #[prost(int32, optional, tag="3")]
16174    pub temp_prev: ::core::option::Option<i32>,
16175    #[prost(string, optional, tag="4")]
16176    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
16177}
16178#[derive(Clone, PartialEq, ::prost::Message)]
16179pub struct CdevUpdateFtraceEvent {
16180    #[prost(uint64, optional, tag="1")]
16181    pub target: ::core::option::Option<u64>,
16182    #[prost(string, optional, tag="2")]
16183    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
16184}
16185// End of protos/perfetto/trace/ftrace/thermal.proto
16186
16187// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
16188
16189#[derive(Clone, PartialEq, ::prost::Message)]
16190pub struct ThermalExynosAcpmBulkFtraceEvent {
16191    #[prost(uint32, optional, tag="1")]
16192    pub tz_id: ::core::option::Option<u32>,
16193    #[prost(uint32, optional, tag="2")]
16194    pub current_temp: ::core::option::Option<u32>,
16195    #[prost(uint32, optional, tag="3")]
16196    pub ctrl_temp: ::core::option::Option<u32>,
16197    #[prost(uint32, optional, tag="4")]
16198    pub cdev_state: ::core::option::Option<u32>,
16199    #[prost(int32, optional, tag="5")]
16200    pub pid_et_p: ::core::option::Option<i32>,
16201    #[prost(int32, optional, tag="6")]
16202    pub pid_power_range: ::core::option::Option<i32>,
16203    #[prost(int32, optional, tag="7")]
16204    pub pid_p: ::core::option::Option<i32>,
16205    #[prost(int32, optional, tag="8")]
16206    pub pid_i: ::core::option::Option<i32>,
16207    #[prost(int32, optional, tag="9")]
16208    pub k_p: ::core::option::Option<i32>,
16209    #[prost(int32, optional, tag="10")]
16210    pub k_i: ::core::option::Option<i32>,
16211    #[prost(uint64, optional, tag="11")]
16212    pub timestamp: ::core::option::Option<u64>,
16213}
16214#[derive(Clone, PartialEq, ::prost::Message)]
16215pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
16216    #[prost(int32, optional, tag="1")]
16217    pub tz_id: ::core::option::Option<i32>,
16218    #[prost(uint32, optional, tag="2")]
16219    pub current_temp: ::core::option::Option<u32>,
16220    #[prost(uint32, optional, tag="3")]
16221    pub ctrl_temp: ::core::option::Option<u32>,
16222    #[prost(uint32, optional, tag="4")]
16223    pub cdev_state: ::core::option::Option<u32>,
16224    #[prost(int32, optional, tag="5")]
16225    pub pid_et_p: ::core::option::Option<i32>,
16226    #[prost(int32, optional, tag="6")]
16227    pub k_p: ::core::option::Option<i32>,
16228    #[prost(int32, optional, tag="7")]
16229    pub k_i: ::core::option::Option<i32>,
16230}
16231// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
16232
16233// Begin of protos/perfetto/trace/ftrace/timer.proto
16234
16235#[derive(Clone, PartialEq, ::prost::Message)]
16236pub struct HrtimerStartFtraceEvent {
16237    #[prost(uint64, optional, tag="1")]
16238    pub hrtimer: ::core::option::Option<u64>,
16239    #[prost(uint64, optional, tag="2")]
16240    pub function: ::core::option::Option<u64>,
16241    #[prost(int64, optional, tag="3")]
16242    pub expires: ::core::option::Option<i64>,
16243    #[prost(int64, optional, tag="4")]
16244    pub softexpires: ::core::option::Option<i64>,
16245    #[prost(uint32, optional, tag="5")]
16246    pub mode: ::core::option::Option<u32>,
16247}
16248#[derive(Clone, PartialEq, ::prost::Message)]
16249pub struct HrtimerCancelFtraceEvent {
16250    #[prost(uint64, optional, tag="1")]
16251    pub hrtimer: ::core::option::Option<u64>,
16252}
16253#[derive(Clone, PartialEq, ::prost::Message)]
16254pub struct HrtimerExpireEntryFtraceEvent {
16255    #[prost(uint64, optional, tag="1")]
16256    pub hrtimer: ::core::option::Option<u64>,
16257    #[prost(int64, optional, tag="2")]
16258    pub now: ::core::option::Option<i64>,
16259    #[prost(uint64, optional, tag="3")]
16260    pub function: ::core::option::Option<u64>,
16261}
16262#[derive(Clone, PartialEq, ::prost::Message)]
16263pub struct HrtimerExpireExitFtraceEvent {
16264    #[prost(uint64, optional, tag="1")]
16265    pub hrtimer: ::core::option::Option<u64>,
16266}
16267#[derive(Clone, PartialEq, ::prost::Message)]
16268pub struct TimerStartFtraceEvent {
16269    #[prost(uint64, optional, tag="1")]
16270    pub timer: ::core::option::Option<u64>,
16271    #[prost(uint64, optional, tag="2")]
16272    pub function: ::core::option::Option<u64>,
16273    #[prost(uint64, optional, tag="3")]
16274    pub expires: ::core::option::Option<u64>,
16275    #[prost(uint64, optional, tag="4")]
16276    pub now: ::core::option::Option<u64>,
16277    #[prost(uint32, optional, tag="5")]
16278    pub deferrable: ::core::option::Option<u32>,
16279    #[prost(uint32, optional, tag="6")]
16280    pub flags: ::core::option::Option<u32>,
16281    #[prost(uint64, optional, tag="7")]
16282    pub bucket_expiry: ::core::option::Option<u64>,
16283}
16284#[derive(Clone, PartialEq, ::prost::Message)]
16285pub struct TimerCancelFtraceEvent {
16286    #[prost(uint64, optional, tag="1")]
16287    pub timer: ::core::option::Option<u64>,
16288}
16289#[derive(Clone, PartialEq, ::prost::Message)]
16290pub struct TimerExpireEntryFtraceEvent {
16291    #[prost(uint64, optional, tag="1")]
16292    pub timer: ::core::option::Option<u64>,
16293    #[prost(uint64, optional, tag="2")]
16294    pub now: ::core::option::Option<u64>,
16295    #[prost(uint64, optional, tag="3")]
16296    pub function: ::core::option::Option<u64>,
16297    #[prost(uint64, optional, tag="4")]
16298    pub baseclk: ::core::option::Option<u64>,
16299}
16300#[derive(Clone, PartialEq, ::prost::Message)]
16301pub struct TimerExpireExitFtraceEvent {
16302    #[prost(uint64, optional, tag="1")]
16303    pub timer: ::core::option::Option<u64>,
16304}
16305// End of protos/perfetto/trace/ftrace/timer.proto
16306
16307// Begin of protos/perfetto/trace/ftrace/trusty.proto
16308
16309#[derive(Clone, PartialEq, ::prost::Message)]
16310pub struct TrustySmcFtraceEvent {
16311    #[prost(uint64, optional, tag="1")]
16312    pub r0: ::core::option::Option<u64>,
16313    #[prost(uint64, optional, tag="2")]
16314    pub r1: ::core::option::Option<u64>,
16315    #[prost(uint64, optional, tag="3")]
16316    pub r2: ::core::option::Option<u64>,
16317    #[prost(uint64, optional, tag="4")]
16318    pub r3: ::core::option::Option<u64>,
16319}
16320#[derive(Clone, PartialEq, ::prost::Message)]
16321pub struct TrustySmcDoneFtraceEvent {
16322    #[prost(uint64, optional, tag="1")]
16323    pub ret: ::core::option::Option<u64>,
16324}
16325#[derive(Clone, PartialEq, ::prost::Message)]
16326pub struct TrustyStdCall32FtraceEvent {
16327    #[prost(uint64, optional, tag="1")]
16328    pub r0: ::core::option::Option<u64>,
16329    #[prost(uint64, optional, tag="2")]
16330    pub r1: ::core::option::Option<u64>,
16331    #[prost(uint64, optional, tag="3")]
16332    pub r2: ::core::option::Option<u64>,
16333    #[prost(uint64, optional, tag="4")]
16334    pub r3: ::core::option::Option<u64>,
16335}
16336#[derive(Clone, PartialEq, ::prost::Message)]
16337pub struct TrustyStdCall32DoneFtraceEvent {
16338    #[prost(int64, optional, tag="1")]
16339    pub ret: ::core::option::Option<i64>,
16340}
16341#[derive(Clone, PartialEq, ::prost::Message)]
16342pub struct TrustyShareMemoryFtraceEvent {
16343    #[prost(uint64, optional, tag="1")]
16344    pub len: ::core::option::Option<u64>,
16345    #[prost(uint32, optional, tag="2")]
16346    pub lend: ::core::option::Option<u32>,
16347    #[prost(uint32, optional, tag="3")]
16348    pub nents: ::core::option::Option<u32>,
16349}
16350#[derive(Clone, PartialEq, ::prost::Message)]
16351pub struct TrustyShareMemoryDoneFtraceEvent {
16352    #[prost(uint64, optional, tag="1")]
16353    pub handle: ::core::option::Option<u64>,
16354    #[prost(uint64, optional, tag="2")]
16355    pub len: ::core::option::Option<u64>,
16356    #[prost(uint32, optional, tag="3")]
16357    pub lend: ::core::option::Option<u32>,
16358    #[prost(uint32, optional, tag="4")]
16359    pub nents: ::core::option::Option<u32>,
16360    #[prost(int32, optional, tag="5")]
16361    pub ret: ::core::option::Option<i32>,
16362}
16363#[derive(Clone, PartialEq, ::prost::Message)]
16364pub struct TrustyReclaimMemoryFtraceEvent {
16365    #[prost(uint64, optional, tag="1")]
16366    pub id: ::core::option::Option<u64>,
16367}
16368#[derive(Clone, PartialEq, ::prost::Message)]
16369pub struct TrustyReclaimMemoryDoneFtraceEvent {
16370    #[prost(uint64, optional, tag="1")]
16371    pub id: ::core::option::Option<u64>,
16372    #[prost(int32, optional, tag="2")]
16373    pub ret: ::core::option::Option<i32>,
16374}
16375#[derive(Clone, PartialEq, ::prost::Message)]
16376pub struct TrustyIrqFtraceEvent {
16377    #[prost(int32, optional, tag="1")]
16378    pub irq: ::core::option::Option<i32>,
16379}
16380#[derive(Clone, PartialEq, ::prost::Message)]
16381pub struct TrustyIpcHandleEventFtraceEvent {
16382    #[prost(uint32, optional, tag="1")]
16383    pub chan: ::core::option::Option<u32>,
16384    #[prost(uint32, optional, tag="2")]
16385    pub event_id: ::core::option::Option<u32>,
16386    #[prost(string, optional, tag="3")]
16387    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16388}
16389#[derive(Clone, PartialEq, ::prost::Message)]
16390pub struct TrustyIpcConnectFtraceEvent {
16391    #[prost(uint32, optional, tag="1")]
16392    pub chan: ::core::option::Option<u32>,
16393    #[prost(string, optional, tag="2")]
16394    pub port: ::core::option::Option<::prost::alloc::string::String>,
16395    #[prost(int32, optional, tag="3")]
16396    pub state: ::core::option::Option<i32>,
16397}
16398#[derive(Clone, PartialEq, ::prost::Message)]
16399pub struct TrustyIpcConnectEndFtraceEvent {
16400    #[prost(uint32, optional, tag="1")]
16401    pub chan: ::core::option::Option<u32>,
16402    #[prost(int32, optional, tag="2")]
16403    pub err: ::core::option::Option<i32>,
16404    #[prost(int32, optional, tag="3")]
16405    pub state: ::core::option::Option<i32>,
16406}
16407#[derive(Clone, PartialEq, ::prost::Message)]
16408pub struct TrustyIpcWriteFtraceEvent {
16409    #[prost(uint64, optional, tag="1")]
16410    pub buf_id: ::core::option::Option<u64>,
16411    #[prost(uint32, optional, tag="2")]
16412    pub chan: ::core::option::Option<u32>,
16413    #[prost(int32, optional, tag="3")]
16414    pub kind_shm: ::core::option::Option<i32>,
16415    #[prost(int32, optional, tag="4")]
16416    pub len_or_err: ::core::option::Option<i32>,
16417    #[prost(uint64, optional, tag="5")]
16418    pub shm_cnt: ::core::option::Option<u64>,
16419    #[prost(string, optional, tag="6")]
16420    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16421}
16422#[derive(Clone, PartialEq, ::prost::Message)]
16423pub struct TrustyIpcPollFtraceEvent {
16424    #[prost(uint32, optional, tag="1")]
16425    pub chan: ::core::option::Option<u32>,
16426    #[prost(uint32, optional, tag="2")]
16427    pub poll_mask: ::core::option::Option<u32>,
16428    #[prost(string, optional, tag="3")]
16429    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16430}
16431#[derive(Clone, PartialEq, ::prost::Message)]
16432pub struct TrustyIpcReadFtraceEvent {
16433    #[prost(uint32, optional, tag="1")]
16434    pub chan: ::core::option::Option<u32>,
16435    #[prost(string, optional, tag="2")]
16436    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16437}
16438#[derive(Clone, PartialEq, ::prost::Message)]
16439pub struct TrustyIpcReadEndFtraceEvent {
16440    #[prost(uint64, optional, tag="1")]
16441    pub buf_id: ::core::option::Option<u64>,
16442    #[prost(uint32, optional, tag="2")]
16443    pub chan: ::core::option::Option<u32>,
16444    #[prost(int32, optional, tag="3")]
16445    pub len_or_err: ::core::option::Option<i32>,
16446    #[prost(uint64, optional, tag="4")]
16447    pub shm_cnt: ::core::option::Option<u64>,
16448    #[prost(string, optional, tag="5")]
16449    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16450}
16451#[derive(Clone, PartialEq, ::prost::Message)]
16452pub struct TrustyIpcRxFtraceEvent {
16453    #[prost(uint64, optional, tag="1")]
16454    pub buf_id: ::core::option::Option<u64>,
16455    #[prost(uint32, optional, tag="2")]
16456    pub chan: ::core::option::Option<u32>,
16457    #[prost(string, optional, tag="3")]
16458    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16459}
16460#[derive(Clone, PartialEq, ::prost::Message)]
16461pub struct TrustyEnqueueNopFtraceEvent {
16462    #[prost(uint32, optional, tag="1")]
16463    pub arg1: ::core::option::Option<u32>,
16464    #[prost(uint32, optional, tag="2")]
16465    pub arg2: ::core::option::Option<u32>,
16466    #[prost(uint32, optional, tag="3")]
16467    pub arg3: ::core::option::Option<u32>,
16468}
16469// End of protos/perfetto/trace/ftrace/trusty.proto
16470
16471// Begin of protos/perfetto/trace/ftrace/ufs.proto
16472
16473#[derive(Clone, PartialEq, ::prost::Message)]
16474pub struct UfshcdCommandFtraceEvent {
16475    #[prost(string, optional, tag="1")]
16476    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16477    #[prost(uint32, optional, tag="2")]
16478    pub doorbell: ::core::option::Option<u32>,
16479    #[prost(uint32, optional, tag="3")]
16480    pub intr: ::core::option::Option<u32>,
16481    #[prost(uint64, optional, tag="4")]
16482    pub lba: ::core::option::Option<u64>,
16483    #[prost(uint32, optional, tag="5")]
16484    pub opcode: ::core::option::Option<u32>,
16485    #[prost(string, optional, tag="6")]
16486    pub str: ::core::option::Option<::prost::alloc::string::String>,
16487    #[prost(uint32, optional, tag="7")]
16488    pub tag: ::core::option::Option<u32>,
16489    #[prost(int32, optional, tag="8")]
16490    pub transfer_len: ::core::option::Option<i32>,
16491    #[prost(uint32, optional, tag="9")]
16492    pub group_id: ::core::option::Option<u32>,
16493    #[prost(uint32, optional, tag="10")]
16494    pub str_t: ::core::option::Option<u32>,
16495}
16496#[derive(Clone, PartialEq, ::prost::Message)]
16497pub struct UfshcdClkGatingFtraceEvent {
16498    #[prost(string, optional, tag="1")]
16499    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16500    #[prost(int32, optional, tag="2")]
16501    pub state: ::core::option::Option<i32>,
16502}
16503// End of protos/perfetto/trace/ftrace/ufs.proto
16504
16505// Begin of protos/perfetto/trace/ftrace/v4l2.proto
16506
16507#[derive(Clone, PartialEq, ::prost::Message)]
16508pub struct V4l2QbufFtraceEvent {
16509    #[prost(uint32, optional, tag="1")]
16510    pub bytesused: ::core::option::Option<u32>,
16511    #[prost(uint32, optional, tag="2")]
16512    pub field: ::core::option::Option<u32>,
16513    #[prost(uint32, optional, tag="3")]
16514    pub flags: ::core::option::Option<u32>,
16515    #[prost(uint32, optional, tag="4")]
16516    pub index: ::core::option::Option<u32>,
16517    #[prost(int32, optional, tag="5")]
16518    pub minor: ::core::option::Option<i32>,
16519    #[prost(uint32, optional, tag="6")]
16520    pub sequence: ::core::option::Option<u32>,
16521    #[prost(uint32, optional, tag="7")]
16522    pub timecode_flags: ::core::option::Option<u32>,
16523    #[prost(uint32, optional, tag="8")]
16524    pub timecode_frames: ::core::option::Option<u32>,
16525    #[prost(uint32, optional, tag="9")]
16526    pub timecode_hours: ::core::option::Option<u32>,
16527    #[prost(uint32, optional, tag="10")]
16528    pub timecode_minutes: ::core::option::Option<u32>,
16529    #[prost(uint32, optional, tag="11")]
16530    pub timecode_seconds: ::core::option::Option<u32>,
16531    #[prost(uint32, optional, tag="12")]
16532    pub timecode_type: ::core::option::Option<u32>,
16533    #[prost(uint32, optional, tag="13")]
16534    pub timecode_userbits0: ::core::option::Option<u32>,
16535    #[prost(uint32, optional, tag="14")]
16536    pub timecode_userbits1: ::core::option::Option<u32>,
16537    #[prost(uint32, optional, tag="15")]
16538    pub timecode_userbits2: ::core::option::Option<u32>,
16539    #[prost(uint32, optional, tag="16")]
16540    pub timecode_userbits3: ::core::option::Option<u32>,
16541    #[prost(int64, optional, tag="17")]
16542    pub timestamp: ::core::option::Option<i64>,
16543    #[prost(uint32, optional, tag="18")]
16544    pub r#type: ::core::option::Option<u32>,
16545}
16546#[derive(Clone, PartialEq, ::prost::Message)]
16547pub struct V4l2DqbufFtraceEvent {
16548    #[prost(uint32, optional, tag="1")]
16549    pub bytesused: ::core::option::Option<u32>,
16550    #[prost(uint32, optional, tag="2")]
16551    pub field: ::core::option::Option<u32>,
16552    #[prost(uint32, optional, tag="3")]
16553    pub flags: ::core::option::Option<u32>,
16554    #[prost(uint32, optional, tag="4")]
16555    pub index: ::core::option::Option<u32>,
16556    #[prost(int32, optional, tag="5")]
16557    pub minor: ::core::option::Option<i32>,
16558    #[prost(uint32, optional, tag="6")]
16559    pub sequence: ::core::option::Option<u32>,
16560    #[prost(uint32, optional, tag="7")]
16561    pub timecode_flags: ::core::option::Option<u32>,
16562    #[prost(uint32, optional, tag="8")]
16563    pub timecode_frames: ::core::option::Option<u32>,
16564    #[prost(uint32, optional, tag="9")]
16565    pub timecode_hours: ::core::option::Option<u32>,
16566    #[prost(uint32, optional, tag="10")]
16567    pub timecode_minutes: ::core::option::Option<u32>,
16568    #[prost(uint32, optional, tag="11")]
16569    pub timecode_seconds: ::core::option::Option<u32>,
16570    #[prost(uint32, optional, tag="12")]
16571    pub timecode_type: ::core::option::Option<u32>,
16572    #[prost(uint32, optional, tag="13")]
16573    pub timecode_userbits0: ::core::option::Option<u32>,
16574    #[prost(uint32, optional, tag="14")]
16575    pub timecode_userbits1: ::core::option::Option<u32>,
16576    #[prost(uint32, optional, tag="15")]
16577    pub timecode_userbits2: ::core::option::Option<u32>,
16578    #[prost(uint32, optional, tag="16")]
16579    pub timecode_userbits3: ::core::option::Option<u32>,
16580    #[prost(int64, optional, tag="17")]
16581    pub timestamp: ::core::option::Option<i64>,
16582    #[prost(uint32, optional, tag="18")]
16583    pub r#type: ::core::option::Option<u32>,
16584}
16585#[derive(Clone, PartialEq, ::prost::Message)]
16586pub struct Vb2V4l2BufQueueFtraceEvent {
16587    #[prost(uint32, optional, tag="1")]
16588    pub field: ::core::option::Option<u32>,
16589    #[prost(uint32, optional, tag="2")]
16590    pub flags: ::core::option::Option<u32>,
16591    #[prost(int32, optional, tag="3")]
16592    pub minor: ::core::option::Option<i32>,
16593    #[prost(uint32, optional, tag="4")]
16594    pub sequence: ::core::option::Option<u32>,
16595    #[prost(uint32, optional, tag="5")]
16596    pub timecode_flags: ::core::option::Option<u32>,
16597    #[prost(uint32, optional, tag="6")]
16598    pub timecode_frames: ::core::option::Option<u32>,
16599    #[prost(uint32, optional, tag="7")]
16600    pub timecode_hours: ::core::option::Option<u32>,
16601    #[prost(uint32, optional, tag="8")]
16602    pub timecode_minutes: ::core::option::Option<u32>,
16603    #[prost(uint32, optional, tag="9")]
16604    pub timecode_seconds: ::core::option::Option<u32>,
16605    #[prost(uint32, optional, tag="10")]
16606    pub timecode_type: ::core::option::Option<u32>,
16607    #[prost(uint32, optional, tag="11")]
16608    pub timecode_userbits0: ::core::option::Option<u32>,
16609    #[prost(uint32, optional, tag="12")]
16610    pub timecode_userbits1: ::core::option::Option<u32>,
16611    #[prost(uint32, optional, tag="13")]
16612    pub timecode_userbits2: ::core::option::Option<u32>,
16613    #[prost(uint32, optional, tag="14")]
16614    pub timecode_userbits3: ::core::option::Option<u32>,
16615    #[prost(int64, optional, tag="15")]
16616    pub timestamp: ::core::option::Option<i64>,
16617}
16618#[derive(Clone, PartialEq, ::prost::Message)]
16619pub struct Vb2V4l2BufDoneFtraceEvent {
16620    #[prost(uint32, optional, tag="1")]
16621    pub field: ::core::option::Option<u32>,
16622    #[prost(uint32, optional, tag="2")]
16623    pub flags: ::core::option::Option<u32>,
16624    #[prost(int32, optional, tag="3")]
16625    pub minor: ::core::option::Option<i32>,
16626    #[prost(uint32, optional, tag="4")]
16627    pub sequence: ::core::option::Option<u32>,
16628    #[prost(uint32, optional, tag="5")]
16629    pub timecode_flags: ::core::option::Option<u32>,
16630    #[prost(uint32, optional, tag="6")]
16631    pub timecode_frames: ::core::option::Option<u32>,
16632    #[prost(uint32, optional, tag="7")]
16633    pub timecode_hours: ::core::option::Option<u32>,
16634    #[prost(uint32, optional, tag="8")]
16635    pub timecode_minutes: ::core::option::Option<u32>,
16636    #[prost(uint32, optional, tag="9")]
16637    pub timecode_seconds: ::core::option::Option<u32>,
16638    #[prost(uint32, optional, tag="10")]
16639    pub timecode_type: ::core::option::Option<u32>,
16640    #[prost(uint32, optional, tag="11")]
16641    pub timecode_userbits0: ::core::option::Option<u32>,
16642    #[prost(uint32, optional, tag="12")]
16643    pub timecode_userbits1: ::core::option::Option<u32>,
16644    #[prost(uint32, optional, tag="13")]
16645    pub timecode_userbits2: ::core::option::Option<u32>,
16646    #[prost(uint32, optional, tag="14")]
16647    pub timecode_userbits3: ::core::option::Option<u32>,
16648    #[prost(int64, optional, tag="15")]
16649    pub timestamp: ::core::option::Option<i64>,
16650}
16651#[derive(Clone, PartialEq, ::prost::Message)]
16652pub struct Vb2V4l2QbufFtraceEvent {
16653    #[prost(uint32, optional, tag="1")]
16654    pub field: ::core::option::Option<u32>,
16655    #[prost(uint32, optional, tag="2")]
16656    pub flags: ::core::option::Option<u32>,
16657    #[prost(int32, optional, tag="3")]
16658    pub minor: ::core::option::Option<i32>,
16659    #[prost(uint32, optional, tag="4")]
16660    pub sequence: ::core::option::Option<u32>,
16661    #[prost(uint32, optional, tag="5")]
16662    pub timecode_flags: ::core::option::Option<u32>,
16663    #[prost(uint32, optional, tag="6")]
16664    pub timecode_frames: ::core::option::Option<u32>,
16665    #[prost(uint32, optional, tag="7")]
16666    pub timecode_hours: ::core::option::Option<u32>,
16667    #[prost(uint32, optional, tag="8")]
16668    pub timecode_minutes: ::core::option::Option<u32>,
16669    #[prost(uint32, optional, tag="9")]
16670    pub timecode_seconds: ::core::option::Option<u32>,
16671    #[prost(uint32, optional, tag="10")]
16672    pub timecode_type: ::core::option::Option<u32>,
16673    #[prost(uint32, optional, tag="11")]
16674    pub timecode_userbits0: ::core::option::Option<u32>,
16675    #[prost(uint32, optional, tag="12")]
16676    pub timecode_userbits1: ::core::option::Option<u32>,
16677    #[prost(uint32, optional, tag="13")]
16678    pub timecode_userbits2: ::core::option::Option<u32>,
16679    #[prost(uint32, optional, tag="14")]
16680    pub timecode_userbits3: ::core::option::Option<u32>,
16681    #[prost(int64, optional, tag="15")]
16682    pub timestamp: ::core::option::Option<i64>,
16683}
16684#[derive(Clone, PartialEq, ::prost::Message)]
16685pub struct Vb2V4l2DqbufFtraceEvent {
16686    #[prost(uint32, optional, tag="1")]
16687    pub field: ::core::option::Option<u32>,
16688    #[prost(uint32, optional, tag="2")]
16689    pub flags: ::core::option::Option<u32>,
16690    #[prost(int32, optional, tag="3")]
16691    pub minor: ::core::option::Option<i32>,
16692    #[prost(uint32, optional, tag="4")]
16693    pub sequence: ::core::option::Option<u32>,
16694    #[prost(uint32, optional, tag="5")]
16695    pub timecode_flags: ::core::option::Option<u32>,
16696    #[prost(uint32, optional, tag="6")]
16697    pub timecode_frames: ::core::option::Option<u32>,
16698    #[prost(uint32, optional, tag="7")]
16699    pub timecode_hours: ::core::option::Option<u32>,
16700    #[prost(uint32, optional, tag="8")]
16701    pub timecode_minutes: ::core::option::Option<u32>,
16702    #[prost(uint32, optional, tag="9")]
16703    pub timecode_seconds: ::core::option::Option<u32>,
16704    #[prost(uint32, optional, tag="10")]
16705    pub timecode_type: ::core::option::Option<u32>,
16706    #[prost(uint32, optional, tag="11")]
16707    pub timecode_userbits0: ::core::option::Option<u32>,
16708    #[prost(uint32, optional, tag="12")]
16709    pub timecode_userbits1: ::core::option::Option<u32>,
16710    #[prost(uint32, optional, tag="13")]
16711    pub timecode_userbits2: ::core::option::Option<u32>,
16712    #[prost(uint32, optional, tag="14")]
16713    pub timecode_userbits3: ::core::option::Option<u32>,
16714    #[prost(int64, optional, tag="15")]
16715    pub timestamp: ::core::option::Option<i64>,
16716}
16717// End of protos/perfetto/trace/ftrace/v4l2.proto
16718
16719// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
16720
16721#[derive(Clone, PartialEq, ::prost::Message)]
16722pub struct VirtioGpuCmdQueueFtraceEvent {
16723    #[prost(uint32, optional, tag="1")]
16724    pub ctx_id: ::core::option::Option<u32>,
16725    #[prost(int32, optional, tag="2")]
16726    pub dev: ::core::option::Option<i32>,
16727    #[prost(uint64, optional, tag="3")]
16728    pub fence_id: ::core::option::Option<u64>,
16729    #[prost(uint32, optional, tag="4")]
16730    pub flags: ::core::option::Option<u32>,
16731    #[prost(string, optional, tag="5")]
16732    pub name: ::core::option::Option<::prost::alloc::string::String>,
16733    #[prost(uint32, optional, tag="6")]
16734    pub num_free: ::core::option::Option<u32>,
16735    #[prost(uint32, optional, tag="7")]
16736    pub seqno: ::core::option::Option<u32>,
16737    #[prost(uint32, optional, tag="8")]
16738    pub r#type: ::core::option::Option<u32>,
16739    #[prost(uint32, optional, tag="9")]
16740    pub vq: ::core::option::Option<u32>,
16741}
16742#[derive(Clone, PartialEq, ::prost::Message)]
16743pub struct VirtioGpuCmdResponseFtraceEvent {
16744    #[prost(uint32, optional, tag="1")]
16745    pub ctx_id: ::core::option::Option<u32>,
16746    #[prost(int32, optional, tag="2")]
16747    pub dev: ::core::option::Option<i32>,
16748    #[prost(uint64, optional, tag="3")]
16749    pub fence_id: ::core::option::Option<u64>,
16750    #[prost(uint32, optional, tag="4")]
16751    pub flags: ::core::option::Option<u32>,
16752    #[prost(string, optional, tag="5")]
16753    pub name: ::core::option::Option<::prost::alloc::string::String>,
16754    #[prost(uint32, optional, tag="6")]
16755    pub num_free: ::core::option::Option<u32>,
16756    #[prost(uint32, optional, tag="7")]
16757    pub seqno: ::core::option::Option<u32>,
16758    #[prost(uint32, optional, tag="8")]
16759    pub r#type: ::core::option::Option<u32>,
16760    #[prost(uint32, optional, tag="9")]
16761    pub vq: ::core::option::Option<u32>,
16762}
16763// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
16764
16765// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
16766
16767#[derive(Clone, PartialEq, ::prost::Message)]
16768pub struct VirtioVideoCmdFtraceEvent {
16769    #[prost(uint32, optional, tag="1")]
16770    pub stream_id: ::core::option::Option<u32>,
16771    #[prost(uint32, optional, tag="2")]
16772    pub r#type: ::core::option::Option<u32>,
16773}
16774#[derive(Clone, PartialEq, ::prost::Message)]
16775pub struct VirtioVideoCmdDoneFtraceEvent {
16776    #[prost(uint32, optional, tag="1")]
16777    pub stream_id: ::core::option::Option<u32>,
16778    #[prost(uint32, optional, tag="2")]
16779    pub r#type: ::core::option::Option<u32>,
16780}
16781#[derive(Clone, PartialEq, ::prost::Message)]
16782pub struct VirtioVideoResourceQueueFtraceEvent {
16783    #[prost(uint32, optional, tag="1")]
16784    pub data_size0: ::core::option::Option<u32>,
16785    #[prost(uint32, optional, tag="2")]
16786    pub data_size1: ::core::option::Option<u32>,
16787    #[prost(uint32, optional, tag="3")]
16788    pub data_size2: ::core::option::Option<u32>,
16789    #[prost(uint32, optional, tag="4")]
16790    pub data_size3: ::core::option::Option<u32>,
16791    #[prost(uint32, optional, tag="5")]
16792    pub queue_type: ::core::option::Option<u32>,
16793    #[prost(int32, optional, tag="6")]
16794    pub resource_id: ::core::option::Option<i32>,
16795    #[prost(int32, optional, tag="7")]
16796    pub stream_id: ::core::option::Option<i32>,
16797    #[prost(uint64, optional, tag="8")]
16798    pub timestamp: ::core::option::Option<u64>,
16799}
16800#[derive(Clone, PartialEq, ::prost::Message)]
16801pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16802    #[prost(uint32, optional, tag="1")]
16803    pub data_size0: ::core::option::Option<u32>,
16804    #[prost(uint32, optional, tag="2")]
16805    pub data_size1: ::core::option::Option<u32>,
16806    #[prost(uint32, optional, tag="3")]
16807    pub data_size2: ::core::option::Option<u32>,
16808    #[prost(uint32, optional, tag="4")]
16809    pub data_size3: ::core::option::Option<u32>,
16810    #[prost(uint32, optional, tag="5")]
16811    pub queue_type: ::core::option::Option<u32>,
16812    #[prost(int32, optional, tag="6")]
16813    pub resource_id: ::core::option::Option<i32>,
16814    #[prost(int32, optional, tag="7")]
16815    pub stream_id: ::core::option::Option<i32>,
16816    #[prost(uint64, optional, tag="8")]
16817    pub timestamp: ::core::option::Option<u64>,
16818}
16819// End of protos/perfetto/trace/ftrace/virtio_video.proto
16820
16821// Begin of protos/perfetto/trace/ftrace/vmscan.proto
16822
16823#[derive(Clone, PartialEq, ::prost::Message)]
16824pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16825    #[prost(int32, optional, tag="1")]
16826    pub order: ::core::option::Option<i32>,
16827    #[prost(int32, optional, tag="2")]
16828    pub may_writepage: ::core::option::Option<i32>,
16829    #[prost(uint32, optional, tag="3")]
16830    pub gfp_flags: ::core::option::Option<u32>,
16831}
16832#[derive(Clone, PartialEq, ::prost::Message)]
16833pub struct MmVmscanDirectReclaimEndFtraceEvent {
16834    #[prost(uint64, optional, tag="1")]
16835    pub nr_reclaimed: ::core::option::Option<u64>,
16836}
16837#[derive(Clone, PartialEq, ::prost::Message)]
16838pub struct MmVmscanKswapdWakeFtraceEvent {
16839    #[prost(int32, optional, tag="1")]
16840    pub nid: ::core::option::Option<i32>,
16841    #[prost(int32, optional, tag="2")]
16842    pub order: ::core::option::Option<i32>,
16843    #[prost(int32, optional, tag="3")]
16844    pub zid: ::core::option::Option<i32>,
16845}
16846#[derive(Clone, PartialEq, ::prost::Message)]
16847pub struct MmVmscanKswapdSleepFtraceEvent {
16848    #[prost(int32, optional, tag="1")]
16849    pub nid: ::core::option::Option<i32>,
16850}
16851#[derive(Clone, PartialEq, ::prost::Message)]
16852pub struct MmShrinkSlabStartFtraceEvent {
16853    #[prost(uint64, optional, tag="1")]
16854    pub cache_items: ::core::option::Option<u64>,
16855    #[prost(uint64, optional, tag="2")]
16856    pub delta: ::core::option::Option<u64>,
16857    #[prost(uint32, optional, tag="3")]
16858    pub gfp_flags: ::core::option::Option<u32>,
16859    #[prost(uint64, optional, tag="4")]
16860    pub lru_pgs: ::core::option::Option<u64>,
16861    #[prost(int64, optional, tag="5")]
16862    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16863    #[prost(uint64, optional, tag="6")]
16864    pub pgs_scanned: ::core::option::Option<u64>,
16865    #[prost(uint64, optional, tag="7")]
16866    pub shr: ::core::option::Option<u64>,
16867    #[prost(uint64, optional, tag="8")]
16868    pub shrink: ::core::option::Option<u64>,
16869    #[prost(uint64, optional, tag="9")]
16870    pub total_scan: ::core::option::Option<u64>,
16871    #[prost(int32, optional, tag="10")]
16872    pub nid: ::core::option::Option<i32>,
16873    #[prost(int32, optional, tag="11")]
16874    pub priority: ::core::option::Option<i32>,
16875}
16876#[derive(Clone, PartialEq, ::prost::Message)]
16877pub struct MmShrinkSlabEndFtraceEvent {
16878    #[prost(int64, optional, tag="1")]
16879    pub new_scan: ::core::option::Option<i64>,
16880    #[prost(int32, optional, tag="2")]
16881    pub retval: ::core::option::Option<i32>,
16882    #[prost(uint64, optional, tag="3")]
16883    pub shr: ::core::option::Option<u64>,
16884    #[prost(uint64, optional, tag="4")]
16885    pub shrink: ::core::option::Option<u64>,
16886    #[prost(int64, optional, tag="5")]
16887    pub total_scan: ::core::option::Option<i64>,
16888    #[prost(int64, optional, tag="6")]
16889    pub unused_scan: ::core::option::Option<i64>,
16890    #[prost(int32, optional, tag="7")]
16891    pub nid: ::core::option::Option<i32>,
16892}
16893// End of protos/perfetto/trace/ftrace/vmscan.proto
16894
16895// Begin of protos/perfetto/trace/ftrace/workqueue.proto
16896
16897#[derive(Clone, PartialEq, ::prost::Message)]
16898pub struct WorkqueueActivateWorkFtraceEvent {
16899    #[prost(uint64, optional, tag="1")]
16900    pub work: ::core::option::Option<u64>,
16901    #[prost(uint64, optional, tag="2")]
16902    pub function: ::core::option::Option<u64>,
16903}
16904#[derive(Clone, PartialEq, ::prost::Message)]
16905pub struct WorkqueueExecuteEndFtraceEvent {
16906    #[prost(uint64, optional, tag="1")]
16907    pub work: ::core::option::Option<u64>,
16908    #[prost(uint64, optional, tag="2")]
16909    pub function: ::core::option::Option<u64>,
16910}
16911#[derive(Clone, PartialEq, ::prost::Message)]
16912pub struct WorkqueueExecuteStartFtraceEvent {
16913    #[prost(uint64, optional, tag="1")]
16914    pub work: ::core::option::Option<u64>,
16915    #[prost(uint64, optional, tag="2")]
16916    pub function: ::core::option::Option<u64>,
16917}
16918#[derive(Clone, PartialEq, ::prost::Message)]
16919pub struct WorkqueueQueueWorkFtraceEvent {
16920    #[prost(uint64, optional, tag="1")]
16921    pub work: ::core::option::Option<u64>,
16922    #[prost(uint64, optional, tag="2")]
16923    pub function: ::core::option::Option<u64>,
16924    #[prost(int32, optional, tag="4")]
16925    pub req_cpu: ::core::option::Option<i32>,
16926    #[prost(int32, optional, tag="5")]
16927    pub cpu: ::core::option::Option<i32>,
16928    #[prost(string, optional, tag="6")]
16929    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
16930}
16931// End of protos/perfetto/trace/ftrace/workqueue.proto
16932
16933// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
16934
16935#[derive(Clone, PartialEq, ::prost::Message)]
16936pub struct FtraceEvent {
16937    /// Timestamp in nanoseconds using .../tracing/trace_clock.
16938    #[prost(uint64, optional, tag="1")]
16939    pub timestamp: ::core::option::Option<u64>,
16940    /// Kernel pid (do not confuse with userspace pid aka tgid).
16941    #[prost(uint32, optional, tag="2")]
16942    pub pid: ::core::option::Option<u32>,
16943    /// Not populated in actual traces. Wire format might change.
16944    /// Placeholder declaration so that the ftrace parsing code accepts the
16945    /// existence of this common field. If this becomes needed for all events:
16946    /// consider merging with common_preempt_count to avoid extra proto tags.
16947    #[prost(uint32, optional, tag="5")]
16948    pub common_flags: ::core::option::Option<u32>,
16949    #[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")]
16950    pub event: ::core::option::Option<ftrace_event::Event>,
16951}
16952/// Nested message and enum types in `FtraceEvent`.
16953pub mod ftrace_event {
16954    #[derive(Clone, PartialEq, ::prost::Oneof)]
16955    pub enum Event {
16956        #[prost(message, tag="3")]
16957        Print(super::PrintFtraceEvent),
16958        #[prost(message, tag="4")]
16959        SchedSwitch(super::SchedSwitchFtraceEvent),
16960        /// removed field with id 5;
16961        /// removed field with id 6;
16962        /// removed field with id 7;
16963        /// removed field with id 8;
16964        /// removed field with id 9;
16965        /// removed field with id 10;
16966        #[prost(message, tag="11")]
16967        CpuFrequency(super::CpuFrequencyFtraceEvent),
16968        #[prost(message, tag="12")]
16969        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
16970        #[prost(message, tag="13")]
16971        CpuIdle(super::CpuIdleFtraceEvent),
16972        #[prost(message, tag="14")]
16973        ClockEnable(super::ClockEnableFtraceEvent),
16974        #[prost(message, tag="15")]
16975        ClockDisable(super::ClockDisableFtraceEvent),
16976        #[prost(message, tag="16")]
16977        ClockSetRate(super::ClockSetRateFtraceEvent),
16978        #[prost(message, tag="17")]
16979        SchedWakeup(super::SchedWakeupFtraceEvent),
16980        #[prost(message, tag="18")]
16981        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
16982        #[prost(message, tag="19")]
16983        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
16984        #[prost(message, tag="20")]
16985        SchedWaking(super::SchedWakingFtraceEvent),
16986        #[prost(message, tag="21")]
16987        IpiEntry(super::IpiEntryFtraceEvent),
16988        #[prost(message, tag="22")]
16989        IpiExit(super::IpiExitFtraceEvent),
16990        #[prost(message, tag="23")]
16991        IpiRaise(super::IpiRaiseFtraceEvent),
16992        #[prost(message, tag="24")]
16993        SoftirqEntry(super::SoftirqEntryFtraceEvent),
16994        #[prost(message, tag="25")]
16995        SoftirqExit(super::SoftirqExitFtraceEvent),
16996        #[prost(message, tag="26")]
16997        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
16998        #[prost(message, tag="27")]
16999        I2cRead(super::I2cReadFtraceEvent),
17000        #[prost(message, tag="28")]
17001        I2cWrite(super::I2cWriteFtraceEvent),
17002        #[prost(message, tag="29")]
17003        I2cResult(super::I2cResultFtraceEvent),
17004        #[prost(message, tag="30")]
17005        I2cReply(super::I2cReplyFtraceEvent),
17006        #[prost(message, tag="31")]
17007        SmbusRead(super::SmbusReadFtraceEvent),
17008        #[prost(message, tag="32")]
17009        SmbusWrite(super::SmbusWriteFtraceEvent),
17010        #[prost(message, tag="33")]
17011        SmbusResult(super::SmbusResultFtraceEvent),
17012        #[prost(message, tag="34")]
17013        SmbusReply(super::SmbusReplyFtraceEvent),
17014        #[prost(message, tag="35")]
17015        LowmemoryKill(super::LowmemoryKillFtraceEvent),
17016        #[prost(message, tag="36")]
17017        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
17018        #[prost(message, tag="37")]
17019        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
17020        #[prost(message, tag="38")]
17021        SyncPt(super::SyncPtFtraceEvent),
17022        #[prost(message, tag="39")]
17023        SyncTimeline(super::SyncTimelineFtraceEvent),
17024        #[prost(message, tag="40")]
17025        SyncWait(super::SyncWaitFtraceEvent),
17026        #[prost(message, tag="41")]
17027        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
17028        #[prost(message, tag="42")]
17029        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
17030        #[prost(message, tag="43")]
17031        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
17032        #[prost(message, tag="44")]
17033        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
17034        #[prost(message, tag="45")]
17035        BlockRqIssue(super::BlockRqIssueFtraceEvent),
17036        #[prost(message, tag="46")]
17037        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
17038        #[prost(message, tag="47")]
17039        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
17040        #[prost(message, tag="48")]
17041        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
17042        #[prost(message, tag="49")]
17043        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
17044        #[prost(message, tag="50")]
17045        BinderTransaction(super::BinderTransactionFtraceEvent),
17046        #[prost(message, tag="51")]
17047        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
17048        #[prost(message, tag="52")]
17049        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
17050        #[prost(message, tag="53")]
17051        BinderLock(super::BinderLockFtraceEvent),
17052        #[prost(message, tag="54")]
17053        BinderLocked(super::BinderLockedFtraceEvent),
17054        #[prost(message, tag="55")]
17055        BinderUnlock(super::BinderUnlockFtraceEvent),
17056        #[prost(message, tag="56")]
17057        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
17058        #[prost(message, tag="57")]
17059        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
17060        #[prost(message, tag="58")]
17061        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
17062        #[prost(message, tag="59")]
17063        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
17064        #[prost(message, tag="60")]
17065        RegulatorDisable(super::RegulatorDisableFtraceEvent),
17066        #[prost(message, tag="61")]
17067        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
17068        #[prost(message, tag="62")]
17069        RegulatorEnable(super::RegulatorEnableFtraceEvent),
17070        #[prost(message, tag="63")]
17071        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
17072        #[prost(message, tag="64")]
17073        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
17074        #[prost(message, tag="65")]
17075        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
17076        #[prost(message, tag="66")]
17077        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
17078        #[prost(message, tag="67")]
17079        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
17080        #[prost(message, tag="68")]
17081        CgroupMkdir(super::CgroupMkdirFtraceEvent),
17082        #[prost(message, tag="69")]
17083        CgroupRemount(super::CgroupRemountFtraceEvent),
17084        #[prost(message, tag="70")]
17085        CgroupRmdir(super::CgroupRmdirFtraceEvent),
17086        #[prost(message, tag="71")]
17087        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
17088        #[prost(message, tag="72")]
17089        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
17090        #[prost(message, tag="73")]
17091        CgroupRelease(super::CgroupReleaseFtraceEvent),
17092        #[prost(message, tag="74")]
17093        CgroupRename(super::CgroupRenameFtraceEvent),
17094        #[prost(message, tag="75")]
17095        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
17096        #[prost(message, tag="76")]
17097        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
17098        #[prost(message, tag="77")]
17099        MdpCommit(super::MdpCommitFtraceEvent),
17100        #[prost(message, tag="78")]
17101        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
17102        #[prost(message, tag="79")]
17103        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
17104        #[prost(message, tag="80")]
17105        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
17106        #[prost(message, tag="81")]
17107        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
17108        #[prost(message, tag="82")]
17109        MdpCompareBw(super::MdpCompareBwFtraceEvent),
17110        #[prost(message, tag="83")]
17111        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
17112        #[prost(message, tag="84")]
17113        MdpSsppSet(super::MdpSsppSetFtraceEvent),
17114        #[prost(message, tag="85")]
17115        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
17116        #[prost(message, tag="86")]
17117        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
17118        #[prost(message, tag="87")]
17119        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
17120        #[prost(message, tag="88")]
17121        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
17122        #[prost(message, tag="89")]
17123        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
17124        #[prost(message, tag="90")]
17125        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
17126        #[prost(message, tag="91")]
17127        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
17128        #[prost(message, tag="92")]
17129        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
17130        #[prost(message, tag="93")]
17131        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
17132        #[prost(message, tag="94")]
17133        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
17134        #[prost(message, tag="95")]
17135        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
17136        #[prost(message, tag="96")]
17137        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
17138        #[prost(message, tag="97")]
17139        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
17140        #[prost(message, tag="98")]
17141        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
17142        #[prost(message, tag="99")]
17143        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
17144        #[prost(message, tag="100")]
17145        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
17146        #[prost(message, tag="101")]
17147        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
17148        #[prost(message, tag="102")]
17149        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
17150        #[prost(message, tag="103")]
17151        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
17152        #[prost(message, tag="104")]
17153        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
17154        #[prost(message, tag="105")]
17155        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
17156        #[prost(message, tag="106")]
17157        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
17158        #[prost(message, tag="107")]
17159        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
17160        #[prost(message, tag="108")]
17161        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
17162        #[prost(message, tag="109")]
17163        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
17164        #[prost(message, tag="110")]
17165        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
17166        #[prost(message, tag="111")]
17167        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
17168        #[prost(message, tag="112")]
17169        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
17170        #[prost(message, tag="113")]
17171        SuspendResume(super::SuspendResumeFtraceEvent),
17172        #[prost(message, tag="114")]
17173        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
17174        #[prost(message, tag="115")]
17175        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
17176        #[prost(message, tag="116")]
17177        BlockBioBounce(super::BlockBioBounceFtraceEvent),
17178        #[prost(message, tag="117")]
17179        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
17180        #[prost(message, tag="118")]
17181        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
17182        #[prost(message, tag="119")]
17183        BlockBioQueue(super::BlockBioQueueFtraceEvent),
17184        #[prost(message, tag="120")]
17185        BlockBioRemap(super::BlockBioRemapFtraceEvent),
17186        #[prost(message, tag="121")]
17187        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
17188        #[prost(message, tag="122")]
17189        BlockGetrq(super::BlockGetrqFtraceEvent),
17190        #[prost(message, tag="123")]
17191        BlockPlug(super::BlockPlugFtraceEvent),
17192        #[prost(message, tag="124")]
17193        BlockRqAbort(super::BlockRqAbortFtraceEvent),
17194        #[prost(message, tag="125")]
17195        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
17196        #[prost(message, tag="126")]
17197        BlockRqInsert(super::BlockRqInsertFtraceEvent),
17198        /// removed field with id 127;
17199        #[prost(message, tag="128")]
17200        BlockRqRemap(super::BlockRqRemapFtraceEvent),
17201        #[prost(message, tag="129")]
17202        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
17203        #[prost(message, tag="130")]
17204        BlockSleeprq(super::BlockSleeprqFtraceEvent),
17205        #[prost(message, tag="131")]
17206        BlockSplit(super::BlockSplitFtraceEvent),
17207        #[prost(message, tag="132")]
17208        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
17209        #[prost(message, tag="133")]
17210        BlockUnplug(super::BlockUnplugFtraceEvent),
17211        #[prost(message, tag="134")]
17212        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
17213        #[prost(message, tag="135")]
17214        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
17215        #[prost(message, tag="136")]
17216        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
17217        #[prost(message, tag="137")]
17218        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
17219        #[prost(message, tag="138")]
17220        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
17221        #[prost(message, tag="139")]
17222        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
17223        #[prost(message, tag="140")]
17224        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
17225        #[prost(message, tag="141")]
17226        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
17227        #[prost(message, tag="142")]
17228        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
17229        #[prost(message, tag="143")]
17230        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
17231        #[prost(message, tag="144")]
17232        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
17233        #[prost(message, tag="145")]
17234        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
17235        #[prost(message, tag="146")]
17236        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
17237        #[prost(message, tag="147")]
17238        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
17239        #[prost(message, tag="148")]
17240        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
17241        #[prost(message, tag="149")]
17242        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
17243        #[prost(message, tag="150")]
17244        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
17245        #[prost(message, tag="151")]
17246        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
17247        #[prost(message, tag="152")]
17248        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
17249        #[prost(message, tag="153")]
17250        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
17251        #[prost(message, tag="154")]
17252        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
17253        #[prost(message, tag="155")]
17254        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
17255        #[prost(message, tag="156")]
17256        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
17257        #[prost(message, tag="157")]
17258        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
17259        #[prost(message, tag="158")]
17260        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
17261        #[prost(message, tag="159")]
17262        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
17263        #[prost(message, tag="160")]
17264        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
17265        #[prost(message, tag="161")]
17266        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
17267        #[prost(message, tag="162")]
17268        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
17269        #[prost(message, tag="163")]
17270        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
17271        #[prost(message, tag="164")]
17272        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
17273        #[prost(message, tag="165")]
17274        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
17275        #[prost(message, tag="166")]
17276        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
17277        #[prost(message, tag="167")]
17278        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
17279        #[prost(message, tag="168")]
17280        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
17281        #[prost(message, tag="169")]
17282        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
17283        #[prost(message, tag="170")]
17284        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
17285        #[prost(message, tag="171")]
17286        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
17287        #[prost(message, tag="172")]
17288        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
17289        #[prost(message, tag="173")]
17290        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
17291        #[prost(message, tag="174")]
17292        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
17293        #[prost(message, tag="175")]
17294        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
17295        #[prost(message, tag="176")]
17296        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
17297        #[prost(message, tag="177")]
17298        Ext4Forget(super::Ext4ForgetFtraceEvent),
17299        #[prost(message, tag="178")]
17300        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
17301        #[prost(message, tag="179")]
17302        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
17303        #[prost(message, tag="180")]
17304        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
17305        #[prost(message, tag="181")]
17306        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
17307        #[prost(message, tag="182")]
17308        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
17309        #[prost(message, tag="183")]
17310        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
17311        #[prost(message, tag="184")]
17312        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
17313        #[prost(message, tag="185")]
17314        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
17315        #[prost(message, tag="186")]
17316        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
17317        #[prost(message, tag="187")]
17318        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
17319        #[prost(message, tag="188")]
17320        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
17321        #[prost(message, tag="189")]
17322        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
17323        #[prost(message, tag="190")]
17324        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
17325        #[prost(message, tag="191")]
17326        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
17327        #[prost(message, tag="192")]
17328        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
17329        #[prost(message, tag="193")]
17330        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
17331        #[prost(message, tag="194")]
17332        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
17333        #[prost(message, tag="195")]
17334        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
17335        #[prost(message, tag="196")]
17336        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
17337        #[prost(message, tag="197")]
17338        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
17339        #[prost(message, tag="198")]
17340        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
17341        #[prost(message, tag="199")]
17342        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
17343        #[prost(message, tag="200")]
17344        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
17345        #[prost(message, tag="201")]
17346        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
17347        #[prost(message, tag="202")]
17348        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
17349        #[prost(message, tag="203")]
17350        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
17351        #[prost(message, tag="204")]
17352        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
17353        #[prost(message, tag="205")]
17354        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
17355        #[prost(message, tag="206")]
17356        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
17357        #[prost(message, tag="207")]
17358        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
17359        #[prost(message, tag="208")]
17360        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
17361        #[prost(message, tag="209")]
17362        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
17363        #[prost(message, tag="210")]
17364        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
17365        #[prost(message, tag="211")]
17366        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
17367        #[prost(message, tag="212")]
17368        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
17369        #[prost(message, tag="213")]
17370        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
17371        #[prost(message, tag="214")]
17372        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
17373        #[prost(message, tag="215")]
17374        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
17375        #[prost(message, tag="216")]
17376        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
17377        #[prost(message, tag="217")]
17378        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
17379        #[prost(message, tag="218")]
17380        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
17381        #[prost(message, tag="219")]
17382        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
17383        /// removed field with id 220;
17384        /// removed field with id 221;
17385        /// removed field with id 222;
17386        /// removed field with id 223;
17387        /// removed field with id 224;
17388        /// removed field with id 225;
17389        /// removed field with id 226;
17390        /// removed field with id 227;
17391        /// removed field with id 228;
17392        /// removed field with id 229;
17393        #[prost(message, tag="230")]
17394        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
17395        #[prost(message, tag="231")]
17396        Ext4Writepage(super::Ext4WritepageFtraceEvent),
17397        #[prost(message, tag="232")]
17398        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
17399        #[prost(message, tag="233")]
17400        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
17401        #[prost(message, tag="234")]
17402        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
17403        #[prost(message, tag="235")]
17404        TaskNewtask(super::TaskNewtaskFtraceEvent),
17405        #[prost(message, tag="236")]
17406        TaskRename(super::TaskRenameFtraceEvent),
17407        #[prost(message, tag="237")]
17408        SchedProcessExec(super::SchedProcessExecFtraceEvent),
17409        #[prost(message, tag="238")]
17410        SchedProcessExit(super::SchedProcessExitFtraceEvent),
17411        #[prost(message, tag="239")]
17412        SchedProcessFork(super::SchedProcessForkFtraceEvent),
17413        #[prost(message, tag="240")]
17414        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
17415        #[prost(message, tag="241")]
17416        SchedProcessHang(super::SchedProcessHangFtraceEvent),
17417        #[prost(message, tag="242")]
17418        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
17419        #[prost(message, tag="243")]
17420        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
17421        #[prost(message, tag="244")]
17422        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
17423        #[prost(message, tag="245")]
17424        F2fsFallocate(super::F2fsFallocateFtraceEvent),
17425        #[prost(message, tag="246")]
17426        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
17427        #[prost(message, tag="247")]
17428        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
17429        #[prost(message, tag="248")]
17430        F2fsIget(super::F2fsIgetFtraceEvent),
17431        #[prost(message, tag="249")]
17432        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
17433        #[prost(message, tag="250")]
17434        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
17435        #[prost(message, tag="251")]
17436        F2fsReadpage(super::F2fsReadpageFtraceEvent),
17437        #[prost(message, tag="252")]
17438        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
17439        #[prost(message, tag="253")]
17440        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
17441        #[prost(message, tag="254")]
17442        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
17443        #[prost(message, tag="255")]
17444        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
17445        #[prost(message, tag="256")]
17446        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
17447        #[prost(message, tag="257")]
17448        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
17449        #[prost(message, tag="258")]
17450        F2fsTruncate(super::F2fsTruncateFtraceEvent),
17451        #[prost(message, tag="259")]
17452        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
17453        #[prost(message, tag="260")]
17454        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
17455        #[prost(message, tag="261")]
17456        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
17457        #[prost(message, tag="262")]
17458        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
17459        #[prost(message, tag="263")]
17460        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
17461        #[prost(message, tag="264")]
17462        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
17463        #[prost(message, tag="265")]
17464        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
17465        #[prost(message, tag="266")]
17466        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
17467        #[prost(message, tag="267")]
17468        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
17469        #[prost(message, tag="268")]
17470        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
17471        #[prost(message, tag="269")]
17472        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
17473        #[prost(message, tag="270")]
17474        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
17475        #[prost(message, tag="271")]
17476        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
17477        #[prost(message, tag="272")]
17478        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
17479        #[prost(message, tag="273")]
17480        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
17481        #[prost(message, tag="274")]
17482        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
17483        #[prost(message, tag="275")]
17484        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
17485        #[prost(message, tag="276")]
17486        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
17487        #[prost(message, tag="277")]
17488        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
17489        #[prost(message, tag="278")]
17490        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
17491        #[prost(message, tag="279")]
17492        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
17493        #[prost(message, tag="280")]
17494        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
17495        #[prost(message, tag="281")]
17496        IommuMapRange(super::IommuMapRangeFtraceEvent),
17497        #[prost(message, tag="282")]
17498        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
17499        #[prost(message, tag="283")]
17500        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
17501        #[prost(message, tag="284")]
17502        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17503        #[prost(message, tag="285")]
17504        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17505        #[prost(message, tag="286")]
17506        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17507        #[prost(message, tag="287")]
17508        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17509        #[prost(message, tag="288")]
17510        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17511        #[prost(message, tag="289")]
17512        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17513        #[prost(message, tag="290")]
17514        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17515        #[prost(message, tag="291")]
17516        IonPrefetching(super::IonPrefetchingFtraceEvent),
17517        #[prost(message, tag="292")]
17518        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17519        #[prost(message, tag="293")]
17520        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17521        #[prost(message, tag="294")]
17522        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17523        #[prost(message, tag="295")]
17524        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17525        #[prost(message, tag="296")]
17526        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17527        #[prost(message, tag="297")]
17528        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17529        #[prost(message, tag="298")]
17530        Kfree(super::KfreeFtraceEvent),
17531        #[prost(message, tag="299")]
17532        Kmalloc(super::KmallocFtraceEvent),
17533        #[prost(message, tag="300")]
17534        KmallocNode(super::KmallocNodeFtraceEvent),
17535        #[prost(message, tag="301")]
17536        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17537        #[prost(message, tag="302")]
17538        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17539        #[prost(message, tag="303")]
17540        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17541        #[prost(message, tag="304")]
17542        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17543        #[prost(message, tag="305")]
17544        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17545        #[prost(message, tag="306")]
17546        MigrateRetry(super::MigrateRetryFtraceEvent),
17547        #[prost(message, tag="307")]
17548        MmPageAlloc(super::MmPageAllocFtraceEvent),
17549        #[prost(message, tag="308")]
17550        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17551        #[prost(message, tag="309")]
17552        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17553        #[prost(message, tag="310")]
17554        MmPageFree(super::MmPageFreeFtraceEvent),
17555        #[prost(message, tag="311")]
17556        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17557        #[prost(message, tag="312")]
17558        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17559        #[prost(message, tag="313")]
17560        RssStat(super::RssStatFtraceEvent),
17561        #[prost(message, tag="314")]
17562        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17563        #[prost(message, tag="315")]
17564        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17565        #[prost(message, tag="316")]
17566        FenceInit(super::FenceInitFtraceEvent),
17567        #[prost(message, tag="317")]
17568        FenceDestroy(super::FenceDestroyFtraceEvent),
17569        #[prost(message, tag="318")]
17570        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17571        #[prost(message, tag="319")]
17572        FenceSignaled(super::FenceSignaledFtraceEvent),
17573        #[prost(message, tag="320")]
17574        ClkEnable(super::ClkEnableFtraceEvent),
17575        #[prost(message, tag="321")]
17576        ClkDisable(super::ClkDisableFtraceEvent),
17577        #[prost(message, tag="322")]
17578        ClkSetRate(super::ClkSetRateFtraceEvent),
17579        #[prost(message, tag="323")]
17580        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17581        #[prost(message, tag="324")]
17582        SignalDeliver(super::SignalDeliverFtraceEvent),
17583        #[prost(message, tag="325")]
17584        SignalGenerate(super::SignalGenerateFtraceEvent),
17585        #[prost(message, tag="326")]
17586        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17587        #[prost(message, tag="327")]
17588        Generic(super::GenericFtraceEvent),
17589        #[prost(message, tag="328")]
17590        MmEventRecord(super::MmEventRecordFtraceEvent),
17591        #[prost(message, tag="329")]
17592        SysEnter(super::SysEnterFtraceEvent),
17593        #[prost(message, tag="330")]
17594        SysExit(super::SysExitFtraceEvent),
17595        #[prost(message, tag="331")]
17596        Zero(super::ZeroFtraceEvent),
17597        #[prost(message, tag="332")]
17598        GpuFrequency(super::GpuFrequencyFtraceEvent),
17599        #[prost(message, tag="333")]
17600        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
17601        #[prost(message, tag="334")]
17602        MarkVictim(super::MarkVictimFtraceEvent),
17603        #[prost(message, tag="335")]
17604        IonStat(super::IonStatFtraceEvent),
17605        #[prost(message, tag="336")]
17606        IonBufferCreate(super::IonBufferCreateFtraceEvent),
17607        #[prost(message, tag="337")]
17608        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
17609        #[prost(message, tag="338")]
17610        ScmCallStart(super::ScmCallStartFtraceEvent),
17611        #[prost(message, tag="339")]
17612        ScmCallEnd(super::ScmCallEndFtraceEvent),
17613        #[prost(message, tag="340")]
17614        GpuMemTotal(super::GpuMemTotalFtraceEvent),
17615        #[prost(message, tag="341")]
17616        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
17617        #[prost(message, tag="342")]
17618        CdevUpdate(super::CdevUpdateFtraceEvent),
17619        #[prost(message, tag="343")]
17620        CpuhpExit(super::CpuhpExitFtraceEvent),
17621        #[prost(message, tag="344")]
17622        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
17623        #[prost(message, tag="345")]
17624        CpuhpEnter(super::CpuhpEnterFtraceEvent),
17625        #[prost(message, tag="346")]
17626        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
17627        #[prost(message, tag="347")]
17628        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
17629        #[prost(message, tag="348")]
17630        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
17631        #[prost(message, tag="349")]
17632        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
17633        #[prost(message, tag="350")]
17634        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
17635        #[prost(message, tag="351")]
17636        DmaHeapStat(super::DmaHeapStatFtraceEvent),
17637        #[prost(message, tag="352")]
17638        CpuhpPause(super::CpuhpPauseFtraceEvent),
17639        #[prost(message, tag="353")]
17640        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
17641        #[prost(message, tag="354")]
17642        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
17643        #[prost(message, tag="355")]
17644        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
17645        #[prost(message, tag="356")]
17646        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
17647        #[prost(message, tag="357")]
17648        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
17649        #[prost(message, tag="358")]
17650        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
17651        #[prost(message, tag="359")]
17652        RssStatThrottled(super::RssStatThrottledFtraceEvent),
17653        #[prost(message, tag="360")]
17654        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
17655        #[prost(message, tag="361")]
17656        NetDevXmit(super::NetDevXmitFtraceEvent),
17657        #[prost(message, tag="362")]
17658        InetSockSetState(super::InetSockSetStateFtraceEvent),
17659        #[prost(message, tag="363")]
17660        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
17661        #[prost(message, tag="364")]
17662        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
17663        #[prost(message, tag="365")]
17664        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
17665        #[prost(message, tag="366")]
17666        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
17667        #[prost(message, tag="367")]
17668        KfreeSkb(super::KfreeSkbFtraceEvent),
17669        #[prost(message, tag="368")]
17670        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
17671        #[prost(message, tag="369")]
17672        KvmAckIrq(super::KvmAckIrqFtraceEvent),
17673        #[prost(message, tag="370")]
17674        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
17675        #[prost(message, tag="371")]
17676        KvmAgePage(super::KvmAgePageFtraceEvent),
17677        #[prost(message, tag="372")]
17678        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
17679        #[prost(message, tag="373")]
17680        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
17681        #[prost(message, tag="374")]
17682        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
17683        #[prost(message, tag="375")]
17684        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
17685        #[prost(message, tag="376")]
17686        KvmEntry(super::KvmEntryFtraceEvent),
17687        #[prost(message, tag="377")]
17688        KvmExit(super::KvmExitFtraceEvent),
17689        #[prost(message, tag="378")]
17690        KvmFpu(super::KvmFpuFtraceEvent),
17691        #[prost(message, tag="379")]
17692        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17693        #[prost(message, tag="380")]
17694        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17695        #[prost(message, tag="381")]
17696        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17697        #[prost(message, tag="382")]
17698        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17699        #[prost(message, tag="383")]
17700        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17701        #[prost(message, tag="384")]
17702        KvmMmio(super::KvmMmioFtraceEvent),
17703        #[prost(message, tag="385")]
17704        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17705        #[prost(message, tag="386")]
17706        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17707        #[prost(message, tag="387")]
17708        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17709        #[prost(message, tag="388")]
17710        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17711        #[prost(message, tag="389")]
17712        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17713        #[prost(message, tag="390")]
17714        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17715        #[prost(message, tag="391")]
17716        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17717        #[prost(message, tag="392")]
17718        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17719        #[prost(message, tag="393")]
17720        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17721        #[prost(message, tag="394")]
17722        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17723        #[prost(message, tag="395")]
17724        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17725        #[prost(message, tag="396")]
17726        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17727        #[prost(message, tag="397")]
17728        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17729        #[prost(message, tag="398")]
17730        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17731        #[prost(message, tag="399")]
17732        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17733        #[prost(message, tag="400")]
17734        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17735        #[prost(message, tag="401")]
17736        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17737        #[prost(message, tag="402")]
17738        TrapReg(super::TrapRegFtraceEvent),
17739        #[prost(message, tag="403")]
17740        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17741        #[prost(message, tag="404")]
17742        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17743        #[prost(message, tag="405")]
17744        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17745        #[prost(message, tag="406")]
17746        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17747        #[prost(message, tag="407")]
17748        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17749        #[prost(message, tag="408")]
17750        Console(super::ConsoleFtraceEvent),
17751        #[prost(message, tag="409")]
17752        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17753        #[prost(message, tag="410")]
17754        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17755        #[prost(message, tag="411")]
17756        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17757        #[prost(message, tag="412")]
17758        DrmRunJob(super::DrmRunJobFtraceEvent),
17759        #[prost(message, tag="413")]
17760        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17761        #[prost(message, tag="414")]
17762        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17763        #[prost(message, tag="415")]
17764        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17765        #[prost(message, tag="416")]
17766        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17767        #[prost(message, tag="417")]
17768        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17769        #[prost(message, tag="418")]
17770        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17771        #[prost(message, tag="419")]
17772        F2fsIostat(super::F2fsIostatFtraceEvent),
17773        #[prost(message, tag="420")]
17774        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17775        #[prost(message, tag="421")]
17776        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17777        #[prost(message, tag="422")]
17778        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17779        #[prost(message, tag="423")]
17780        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17781        #[prost(message, tag="424")]
17782        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17783        #[prost(message, tag="425")]
17784        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17785        #[prost(message, tag="426")]
17786        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17787        #[prost(message, tag="427")]
17788        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17789        #[prost(message, tag="428")]
17790        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17791        #[prost(message, tag="429")]
17792        DsiRx(super::DsiRxFtraceEvent),
17793        #[prost(message, tag="430")]
17794        DsiTx(super::DsiTxFtraceEvent),
17795        #[prost(message, tag="431")]
17796        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17797        #[prost(message, tag="432")]
17798        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17799        #[prost(message, tag="433")]
17800        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17801        #[prost(message, tag="434")]
17802        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17803        #[prost(message, tag="435")]
17804        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17805        #[prost(message, tag="436")]
17806        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17807        #[prost(message, tag="437")]
17808        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17809        #[prost(message, tag="438")]
17810        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17811        #[prost(message, tag="439")]
17812        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17813        #[prost(message, tag="440")]
17814        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17815        #[prost(message, tag="441")]
17816        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17817        #[prost(message, tag="442")]
17818        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17819        #[prost(message, tag="443")]
17820        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17821        #[prost(message, tag="444")]
17822        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17823        #[prost(message, tag="445")]
17824        TrustySmc(super::TrustySmcFtraceEvent),
17825        #[prost(message, tag="446")]
17826        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17827        #[prost(message, tag="447")]
17828        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17829        #[prost(message, tag="448")]
17830        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17831        #[prost(message, tag="449")]
17832        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17833        #[prost(message, tag="450")]
17834        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17835        #[prost(message, tag="451")]
17836        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17837        #[prost(message, tag="452")]
17838        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17839        #[prost(message, tag="453")]
17840        TrustyIrq(super::TrustyIrqFtraceEvent),
17841        #[prost(message, tag="454")]
17842        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17843        #[prost(message, tag="455")]
17844        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17845        #[prost(message, tag="456")]
17846        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17847        #[prost(message, tag="457")]
17848        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17849        #[prost(message, tag="458")]
17850        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17851        /// removed field with id 459;
17852        #[prost(message, tag="460")]
17853        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17854        #[prost(message, tag="461")]
17855        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17856        #[prost(message, tag="462")]
17857        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17858        /// removed field with id 463;
17859        #[prost(message, tag="464")]
17860        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17861        #[prost(message, tag="465")]
17862        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17863        #[prost(message, tag="466")]
17864        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17865        #[prost(message, tag="467")]
17866        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17867        #[prost(message, tag="468")]
17868        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17869        #[prost(message, tag="469")]
17870        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17871        #[prost(message, tag="470")]
17872        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17873        #[prost(message, tag="471")]
17874        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17875        #[prost(message, tag="472")]
17876        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17877        #[prost(message, tag="473")]
17878        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17879        #[prost(message, tag="474")]
17880        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17881        #[prost(message, tag="475")]
17882        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
17883        #[prost(message, tag="476")]
17884        HypEnter(super::HypEnterFtraceEvent),
17885        #[prost(message, tag="477")]
17886        HypExit(super::HypExitFtraceEvent),
17887        #[prost(message, tag="478")]
17888        HostHcall(super::HostHcallFtraceEvent),
17889        #[prost(message, tag="479")]
17890        HostSmc(super::HostSmcFtraceEvent),
17891        #[prost(message, tag="480")]
17892        HostMemAbort(super::HostMemAbortFtraceEvent),
17893        #[prost(message, tag="481")]
17894        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
17895        #[prost(message, tag="482")]
17896        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
17897        #[prost(message, tag="483")]
17898        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
17899        #[prost(message, tag="484")]
17900        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
17901        #[prost(message, tag="485")]
17902        BinderCommand(super::BinderCommandFtraceEvent),
17903        #[prost(message, tag="486")]
17904        BinderReturn(super::BinderReturnFtraceEvent),
17905        #[prost(message, tag="487")]
17906        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
17907        #[prost(message, tag="488")]
17908        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
17909        #[prost(message, tag="489")]
17910        RpmStatus(super::RpmStatusFtraceEvent),
17911        #[prost(message, tag="490")]
17912        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
17913        #[prost(message, tag="491")]
17914        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
17915        #[prost(message, tag="492")]
17916        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
17917        #[prost(message, tag="493")]
17918        DpuDsiRx(super::DpuDsiRxFtraceEvent),
17919        #[prost(message, tag="494")]
17920        DpuDsiTx(super::DpuDsiTxFtraceEvent),
17921        #[prost(message, tag="495")]
17922        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
17923        #[prost(message, tag="496")]
17924        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
17925        #[prost(message, tag="497")]
17926        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
17927        #[prost(message, tag="498")]
17928        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
17929        #[prost(message, tag="499")]
17930        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
17931        #[prost(message, tag="500")]
17932        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
17933        #[prost(message, tag="501")]
17934        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
17935        #[prost(message, tag="502")]
17936        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
17937        #[prost(message, tag="503")]
17938        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
17939        #[prost(message, tag="504")]
17940        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
17941        #[prost(message, tag="505")]
17942        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
17943        #[prost(message, tag="506")]
17944        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
17945        #[prost(message, tag="507")]
17946        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
17947        #[prost(message, tag="508")]
17948        DcvshFreq(super::DcvshFreqFtraceEvent),
17949        #[prost(message, tag="509")]
17950        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
17951        #[prost(message, tag="510")]
17952        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
17953        #[prost(message, tag="511")]
17954        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
17955        #[prost(message, tag="512")]
17956        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
17957        #[prost(message, tag="513")]
17958        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
17959        #[prost(message, tag="514")]
17960        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
17961        #[prost(message, tag="515")]
17962        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
17963        #[prost(message, tag="516")]
17964        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
17965        #[prost(message, tag="517")]
17966        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
17967        #[prost(message, tag="518")]
17968        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
17969        #[prost(message, tag="519")]
17970        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
17971        #[prost(message, tag="520")]
17972        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
17973        #[prost(message, tag="521")]
17974        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
17975        #[prost(message, tag="522")]
17976        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
17977        #[prost(message, tag="523")]
17978        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
17979        #[prost(message, tag="524")]
17980        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
17981        #[prost(message, tag="525")]
17982        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
17983        #[prost(message, tag="526")]
17984        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
17985        #[prost(message, tag="527")]
17986        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
17987        #[prost(message, tag="528")]
17988        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
17989        #[prost(message, tag="529")]
17990        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
17991        #[prost(message, tag="530")]
17992        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
17993        #[prost(message, tag="531")]
17994        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
17995        #[prost(message, tag="532")]
17996        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
17997        #[prost(message, tag="533")]
17998        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
17999        #[prost(message, tag="534")]
18000        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
18001        #[prost(message, tag="535")]
18002        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
18003        #[prost(message, tag="536")]
18004        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
18005        #[prost(message, tag="537")]
18006        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
18007        #[prost(message, tag="538")]
18008        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
18009        #[prost(message, tag="539")]
18010        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
18011        #[prost(message, tag="540")]
18012        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
18013        #[prost(message, tag="541")]
18014        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
18015        #[prost(message, tag="542")]
18016        KprobeEvent(super::KprobeEvent),
18017        #[prost(message, tag="543")]
18018        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
18019        #[prost(message, tag="544")]
18020        DoSysOpen(super::DoSysOpenFtraceEvent),
18021        #[prost(message, tag="545")]
18022        OpenExec(super::OpenExecFtraceEvent),
18023        #[prost(message, tag="546")]
18024        BlockIoStart(super::BlockIoStartFtraceEvent),
18025        #[prost(message, tag="547")]
18026        BlockIoDone(super::BlockIoDoneFtraceEvent),
18027        #[prost(message, tag="548")]
18028        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
18029        #[prost(message, tag="549")]
18030        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
18031        #[prost(message, tag="550")]
18032        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
18033        #[prost(message, tag="551")]
18034        HrtimerStart(super::HrtimerStartFtraceEvent),
18035        #[prost(message, tag="552")]
18036        HrtimerCancel(super::HrtimerCancelFtraceEvent),
18037        #[prost(message, tag="553")]
18038        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
18039        #[prost(message, tag="554")]
18040        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
18041        #[prost(message, tag="555")]
18042        TimerStart(super::TimerStartFtraceEvent),
18043        #[prost(message, tag="556")]
18044        TimerCancel(super::TimerCancelFtraceEvent),
18045        #[prost(message, tag="557")]
18046        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
18047        #[prost(message, tag="558")]
18048        TimerExpireExit(super::TimerExpireExitFtraceEvent),
18049        #[prost(message, tag="559")]
18050        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
18051        #[prost(message, tag="560")]
18052        LocalTimerExit(super::LocalTimerExitFtraceEvent),
18053        #[prost(message, tag="561")]
18054        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
18055        #[prost(message, tag="562")]
18056        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
18057        #[prost(message, tag="563")]
18058        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
18059        #[prost(message, tag="564")]
18060        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
18061        #[prost(message, tag="565")]
18062        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
18063        #[prost(message, tag="566")]
18064        Dwc3Event(super::Dwc3EventFtraceEvent),
18065        #[prost(message, tag="567")]
18066        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
18067        #[prost(message, tag="568")]
18068        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
18069        #[prost(message, tag="569")]
18070        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
18071        #[prost(message, tag="570")]
18072        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
18073        #[prost(message, tag="571")]
18074        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
18075        #[prost(message, tag="572")]
18076        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
18077        #[prost(message, tag="573")]
18078        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
18079        #[prost(message, tag="574")]
18080        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
18081        #[prost(message, tag="575")]
18082        Dwc3Writel(super::Dwc3WritelFtraceEvent),
18083        #[prost(message, tag="576")]
18084        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
18085        #[prost(message, tag="577")]
18086        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
18087        #[prost(message, tag="578")]
18088        HostFfaCall(super::HostFfaCallFtraceEvent),
18089        #[prost(message, tag="579")]
18090        DmabufRssStat(super::DmabufRssStatFtraceEvent),
18091        #[prost(message, tag="580")]
18092        IommuIdmap(super::IommuIdmapFtraceEvent),
18093        #[prost(message, tag="581")]
18094        PsciMemProtect(super::PsciMemProtectFtraceEvent),
18095        #[prost(message, tag="582")]
18096        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
18097        #[prost(message, tag="583")]
18098        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
18099        #[prost(message, tag="584")]
18100        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
18101        #[prost(message, tag="585")]
18102        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
18103        #[prost(message, tag="586")]
18104        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
18105        #[prost(message, tag="587")]
18106        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
18107        #[prost(message, tag="588")]
18108        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
18109        #[prost(message, tag="589")]
18110        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
18111        #[prost(message, tag="590")]
18112        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
18113        #[prost(message, tag="591")]
18114        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
18115        #[prost(message, tag="592")]
18116        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
18117        #[prost(message, tag="593")]
18118        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
18119        #[prost(message, tag="594")]
18120        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
18121        #[prost(message, tag="595")]
18122        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
18123        #[prost(message, tag="596")]
18124        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
18125        #[prost(message, tag="597")]
18126        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
18127        #[prost(message, tag="598")]
18128        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
18129        #[prost(message, tag="599")]
18130        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
18131        #[prost(message, tag="600")]
18132        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
18133        #[prost(message, tag="601")]
18134        GpuPowerState(super::GpuPowerStateFtraceEvent),
18135        #[prost(message, tag="602")]
18136        GramCollision(super::GramCollisionFtraceEvent),
18137    }
18138}
18139// End of protos/perfetto/trace/ftrace/ftrace_event.proto
18140
18141// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
18142
18143/// Per-CPU kernel buffer stats for the ftrace data source gathered from
18144/// /sys/kernel/tracing/per_cpu/cpuX/stats.
18145#[derive(Clone, PartialEq, ::prost::Message)]
18146pub struct FtraceCpuStats {
18147    /// CPU index.
18148    #[prost(uint64, optional, tag="1")]
18149    pub cpu: ::core::option::Option<u64>,
18150    /// Number of entries currently in the kernel buffer.
18151    #[prost(uint64, optional, tag="2")]
18152    pub entries: ::core::option::Option<u64>,
18153    /// Number of events lost in kernel buffers due to overwriting of old events
18154    /// before userspace had a chance to drain them. Valid if the buffer is in
18155    /// "overwrite" mode, otherwise see |dropped_events|.
18156    #[prost(uint64, optional, tag="3")]
18157    pub overrun: ::core::option::Option<u64>,
18158    /// This should always be zero. If not the buffer size is way too small or
18159    /// something went wrong with the tracer. Quoting the kernel: "number of
18160    /// commits failing due to the buffer wrapping around while there are
18161    /// uncommitted events, such as during an interrupt storm".
18162    #[prost(uint64, optional, tag="4")]
18163    pub commit_overrun: ::core::option::Option<u64>,
18164    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
18165    /// The field should be named "bytes", but is misnamed for historical reasons.
18166    /// This value has known inaccuracies before Linux v6.6:
18167    /// <https://github.com/torvalds/linux/commit/45d99ea>
18168    #[prost(uint64, optional, tag="5")]
18169    pub bytes_read: ::core::option::Option<u64>,
18170    /// The timestamp for the oldest event still in the ring buffer.
18171    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18172    #[prost(double, optional, tag="6")]
18173    pub oldest_event_ts: ::core::option::Option<f64>,
18174    /// The current timestamp.
18175    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18176    #[prost(double, optional, tag="7")]
18177    pub now_ts: ::core::option::Option<f64>,
18178    /// If the kernel buffer has overwrite mode disabled, this will show the number
18179    /// of new events that were lost because the buffer was full. This is similar
18180    /// to |overrun| but only for the overwrite=false case.
18181    #[prost(uint64, optional, tag="8")]
18182    pub dropped_events: ::core::option::Option<u64>,
18183    /// The number of events read (consumed) from the buffer by userspace.
18184    #[prost(uint64, optional, tag="9")]
18185    pub read_events: ::core::option::Option<u64>,
18186}
18187/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
18188#[derive(Clone, PartialEq, ::prost::Message)]
18189pub struct FtraceKprobeStats {
18190    /// Cumulative number of kprobe events generated for this function
18191    #[prost(int64, optional, tag="1")]
18192    pub hits: ::core::option::Option<i64>,
18193    /// Cumulative number of kprobe events that could not be generated for this
18194    /// function and were missed.  This happens when too much nesting
18195    /// happens between a kprobe and its kretprobe, overflowing the
18196    /// maxactives buffer.
18197    #[prost(int64, optional, tag="2")]
18198    pub misses: ::core::option::Option<i64>,
18199}
18200/// Errors and kernel buffer stats for the ftrace data source.
18201#[derive(Clone, PartialEq, ::prost::Message)]
18202pub struct FtraceStats {
18203    /// A pair of FtraceStats is written on every trace flush:
18204    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
18205    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
18206    ///                   before this packet was written. For simple traces this
18207    ///                   will be once at the end of the trace.
18208    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
18209    pub phase: ::core::option::Option<i32>,
18210    /// Per-CPU stats (one entry for each CPU).
18211    #[prost(message, repeated, tag="2")]
18212    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
18213    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
18214    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
18215    /// trace or not. It can be used to debug kptr_restrict or security-related
18216    /// errors.
18217    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
18218    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
18219    #[prost(uint32, optional, tag="3")]
18220    pub kernel_symbols_parsed: ::core::option::Option<u32>,
18221    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
18222    #[prost(uint32, optional, tag="4")]
18223    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
18224    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
18225    /// one or more atrace categories not available on the device.
18226    #[prost(string, optional, tag="5")]
18227    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
18228    /// Error message due to exclusivity violation of a single-tenant feature.
18229    #[prost(string, optional, tag="13")]
18230    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
18231    /// Ftrace events requested by the config but not present on device.
18232    #[prost(string, repeated, tag="6")]
18233    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18234    /// Ftrace events requested by the config and present on device, but which we
18235    /// failed to enable due to permissions, or due to a conflicting option
18236    /// (currently FtraceConfig.disable_generic_events).
18237    #[prost(string, repeated, tag="7")]
18238    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18239    /// The data source was configured to preserve existing events in the ftrace
18240    /// buffer before the start of the trace.
18241    #[prost(bool, optional, tag="8")]
18242    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
18243    /// Unique errors encountered during reading and parsing of the raw ftrace
18244    /// data. Ring buffer ABI related errors will also be recorded in the
18245    /// affected FtraceEventBundles with a timestamp.
18246    /// Any traces with entries in this field should be investigated, as they
18247    /// indicate a bug in perfetto or the kernel.
18248    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
18249    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
18250    /// Kprobe profile stats for functions hits and misses
18251    #[prost(message, optional, tag="10")]
18252    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
18253    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
18254    /// Added in: perfetto v52.
18255    #[prost(uint32, optional, tag="11")]
18256    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
18257    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
18258    /// on the value we're writing into the tracefs control file. Might not be
18259    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
18260    /// scratch pages (and/or other factors). Added in: perfetto v52.
18261    #[prost(uint32, optional, tag="12")]
18262    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
18263}
18264/// Nested message and enum types in `FtraceStats`.
18265pub mod ftrace_stats {
18266    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18267    #[repr(i32)]
18268    pub enum Phase {
18269        Unspecified = 0,
18270        StartOfTrace = 1,
18271        EndOfTrace = 2,
18272    }
18273    impl Phase {
18274        /// String value of the enum field names used in the ProtoBuf definition.
18275        ///
18276        /// The values are not transformed in any way and thus are considered stable
18277        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18278        pub fn as_str_name(&self) -> &'static str {
18279            match self {
18280                Phase::Unspecified => "UNSPECIFIED",
18281                Phase::StartOfTrace => "START_OF_TRACE",
18282                Phase::EndOfTrace => "END_OF_TRACE",
18283            }
18284        }
18285    }
18286}
18287// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
18288
18289// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18290
18291/// The result of tracing one or more ftrace data pages from a single per-cpu
18292/// kernel ring buffer. If collating multiple pages' worth of events, all of
18293/// them come from contiguous pages, with no kernel data loss in between.
18294#[derive(Clone, PartialEq, ::prost::Message)]
18295pub struct FtraceEventBundle {
18296    #[prost(uint32, optional, tag="1")]
18297    pub cpu: ::core::option::Option<u32>,
18298    #[prost(message, repeated, tag="2")]
18299    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
18300    /// Set to true if there was data loss between the last time we've read from
18301    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
18302    /// in this bundle.
18303    #[prost(bool, optional, tag="3")]
18304    pub lost_events: ::core::option::Option<bool>,
18305    #[prost(message, optional, tag="4")]
18306    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
18307    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
18308    /// timestamps as that counts during suspend, is available to userspace, and
18309    /// is coherent across cpus.
18310    ///
18311    /// If this field is set, it means that a different clock was used during
18312    /// recording. Either because the boot clock is unavailable (e.g. old kernels
18313    /// before 3.x), or the trace config has set an incompatible option
18314    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
18315    /// trace_processor will do best-effort clock alignment using timestamp pairs
18316    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
18317    /// when the ftrace clock is "boot", as that is the default assumption.
18318    ///
18319    /// Some clocks (local/global) are technically per-cpu, but we make a
18320    /// simplifying assumption that they are global, as their inter-cpu skew
18321    /// should be reasonably bounded on modern systems.
18322    ///
18323    /// Added in: perfetto v19. Android T (13).
18324    #[prost(enumeration="FtraceClock", optional, tag="5")]
18325    pub ftrace_clock: ::core::option::Option<i32>,
18326    /// The timestamp according to the ftrace clock, taken at the same instant as
18327    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
18328    /// will be in the future relative to the data covered by this bundle.
18329    /// Implementation note: Populated by reading the 'now ts:' field in
18330    /// tracefs/per_cpu/cpu0/stat.
18331    ///
18332    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18333    #[prost(int64, optional, tag="6")]
18334    pub ftrace_timestamp: ::core::option::Option<i64>,
18335    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
18336    /// |ftrace_timestamp|.
18337    ///
18338    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18339    #[prost(int64, optional, tag="7")]
18340    pub boot_timestamp: ::core::option::Option<i64>,
18341    #[prost(message, repeated, tag="8")]
18342    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
18343    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
18344    /// primary difference is that this field tracked the last timestamp read from
18345    /// the per-cpu buffer, while the newer field tracks events that get
18346    /// serialised into the trace.
18347    /// Added in: perfetto v44.
18348    #[prost(uint64, optional, tag="9")]
18349    pub last_read_event_timestamp: ::core::option::Option<u64>,
18350    /// The timestamp (using ftrace clock) of the last event written into this
18351    /// data source on this cpu. In other words: the last event in the previous
18352    /// bundle.
18353    /// Lets the trace processing find an initial timestamp after which ftrace
18354    /// data is known to be valid across all cpus. Of particular importance when
18355    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
18356    /// oldest bundles can skew the first valid timestamp per cpu significantly.
18357    /// Added in: perfetto v47.
18358    #[prost(uint64, optional, tag="10")]
18359    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
18360    #[prost(message, repeated, tag="11")]
18361    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
18362    /// Written only on android builds if the config sets |debug_ftrace_abi|.
18363    /// Contains the raw ring buffer tracing page that the implementation could
18364    /// not parse.
18365    /// Addded in: perfetto v50.
18366    #[prost(bytes="vec", optional, tag="512")]
18367    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18368}
18369/// Nested message and enum types in `FtraceEventBundle`.
18370pub mod ftrace_event_bundle {
18371    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
18372    /// a subset of events & their fields is recorded.
18373    /// All fields (except comms) are stored in a structure-of-arrays form, one
18374    /// entry in each repeated field per event.
18375    #[derive(Clone, PartialEq, ::prost::Message)]
18376    pub struct CompactSched {
18377        /// Interned table of unique strings for this bundle.
18378        #[prost(string, repeated, tag="5")]
18379        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18380        /// Delta-encoded timestamps across all sched_switch events within this
18381        /// bundle. The first is absolute, each next one is relative to its
18382        /// predecessor.
18383        #[prost(uint64, repeated, tag="1")]
18384        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
18385        #[prost(int64, repeated, tag="2")]
18386        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
18387        #[prost(int32, repeated, tag="3")]
18388        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
18389        #[prost(int32, repeated, tag="4")]
18390        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
18391        /// One per event, index into |intern_table| corresponding to the
18392        /// next_comm field of the event.
18393        #[prost(uint32, repeated, tag="6")]
18394        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
18395        /// Delta-encoded timestamps across all sched_waking events within this
18396        /// bundle. The first is absolute, each next one is relative to its
18397        /// predecessor.
18398        #[prost(uint64, repeated, tag="7")]
18399        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
18400        #[prost(int32, repeated, tag="8")]
18401        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
18402        #[prost(int32, repeated, tag="9")]
18403        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
18404        #[prost(int32, repeated, tag="10")]
18405        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
18406        /// One per event, index into |intern_table| corresponding to the
18407        /// comm field of the event.
18408        #[prost(uint32, repeated, tag="11")]
18409        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
18410        #[prost(uint32, repeated, tag="12")]
18411        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
18412    }
18413    /// Errors encountered during parsing of the raw ftrace data. In case of ring
18414    /// buffer layout errors, the parser skips the rest of the offending kernel
18415    /// buffer page and continues from the next page.
18416    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
18417    /// seen within the duration of the trace (even if the affected bundles get
18418    /// overwritten in ring buffer mode).
18419    #[derive(Clone, PartialEq, ::prost::Message)]
18420    pub struct FtraceError {
18421        /// Timestamp of the data that we're unable to parse, in the ftrace clock
18422        /// domain. Currently, we use the base timestamp of the tracing page
18423        /// containing the bad record rather than the time of the record itself.
18424        #[prost(uint64, optional, tag="1")]
18425        pub timestamp: ::core::option::Option<u64>,
18426        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
18427        pub status: ::core::option::Option<i32>,
18428    }
18429    /// Describes the serialised |FtraceEvent| protos for events not known at
18430    /// compile time, when using the |denser_generic_event_encoding| option.
18431    /// Addded in: perfetto v50.
18432    #[derive(Clone, PartialEq, ::prost::Message)]
18433    pub struct GenericEventDescriptor {
18434        /// submessage id within FtraceEvent described by |event_descriptor|.
18435        #[prost(int32, optional, tag="1")]
18436        pub field_id: ::core::option::Option<i32>,
18437        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
18438        /// The event name itself is in |event_descriptor.name|.
18439        #[prost(string, optional, tag="3")]
18440        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
18441        /// serialised DescriptorProto.
18442        #[prost(bytes="vec", optional, tag="2")]
18443        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18444    }
18445}
18446// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18447
18448// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
18449
18450/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
18451/// frequency change events in a generic kernel implementation.
18452#[derive(Clone, PartialEq, ::prost::Message)]
18453pub struct GenericKernelCpuFrequencyEvent {
18454    /// CPU in which the event occurred.
18455    #[prost(int32, optional, tag="1")]
18456    pub cpu: ::core::option::Option<i32>,
18457    /// Frequency (Hz) of the CPU.
18458    #[prost(int64, optional, tag="2")]
18459    pub freq_hz: ::core::option::Option<i64>,
18460}
18461// End of protos/perfetto/trace/generic_kernel/generic_power.proto
18462
18463// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
18464
18465/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18466/// change events in a generic kernel implementation. This is mainly for the
18467/// case where scheduler events are not directly supported in the kernel's
18468/// tracing mechanism.
18469///
18470/// By capturing these task state events Perfetto is able to infer higher-level
18471/// events such as context switches and task waking events, providing as much
18472/// parity as possible with established tracing frameworks such as
18473/// Linux's ftrace.
18474#[derive(Clone, PartialEq, ::prost::Message)]
18475pub struct GenericKernelTaskStateEvent {
18476    /// CPU in which the event occurred.
18477    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18478    /// no specific meaning to the cpu field in a non-running state event.
18479    #[prost(int32, optional, tag="1")]
18480    pub cpu: ::core::option::Option<i32>,
18481    /// Command name for the thread.
18482    #[prost(string, optional, tag="2")]
18483    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18484    /// Thread id.
18485    #[prost(int64, optional, tag="3")]
18486    pub tid: ::core::option::Option<i64>,
18487    /// New state of the thread.
18488    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
18489    pub state: ::core::option::Option<i32>,
18490    /// Priority of the thread.
18491    /// This value is OS agnostic and should only be interpreted based on the
18492    /// kernel who emitted the message.
18493    #[prost(int32, optional, tag="5")]
18494    pub prio: ::core::option::Option<i32>,
18495}
18496/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18497pub mod generic_kernel_task_state_event {
18498    /// TaskStateEnum represents the valid states of a thread.
18499    /// These states are a generic representation of the actual thread state and
18500    /// don't necessarily map one-to-one to the states the actual OS kernel
18501    /// tracks internally.
18502    ///
18503    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18504    /// an error resulting in potential data loss.
18505    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18506    #[repr(i32)]
18507    pub enum TaskStateEnum {
18508        TaskStateUnknown = 0,
18509        TaskStateCreated = 1,
18510        TaskStateRunnable = 2,
18511        TaskStateRunning = 3,
18512        TaskStateInterruptibleSleep = 4,
18513        TaskStateUninterruptibleSleep = 5,
18514        TaskStateStopped = 6,
18515        TaskStateDead = 7,
18516        TaskStateDestroyed = 8,
18517    }
18518    impl TaskStateEnum {
18519        /// String value of the enum field names used in the ProtoBuf definition.
18520        ///
18521        /// The values are not transformed in any way and thus are considered stable
18522        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18523        pub fn as_str_name(&self) -> &'static str {
18524            match self {
18525                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18526                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
18527                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18528                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
18529                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18530                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18531                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
18532                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
18533                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18534            }
18535        }
18536    }
18537}
18538/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18539/// of a thread.
18540#[derive(Clone, PartialEq, ::prost::Message)]
18541pub struct GenericKernelTaskRenameEvent {
18542    /// Thread id.
18543    #[prost(int64, optional, tag="1")]
18544    pub tid: ::core::option::Option<i64>,
18545    /// New command name for the thread.
18546    #[prost(string, optional, tag="2")]
18547    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18548}
18549/// Metadata about the processes and threads in the trace.
18550/// The main goal of this proto is to provide a generic kernel
18551/// implementation a mechanism to outline its process structure.
18552#[derive(Clone, PartialEq, ::prost::Message)]
18553pub struct GenericKernelProcessTree {
18554    /// List of processes and threads in the kernel. These lists are incremental
18555    /// and not exhaustive. A process and its threads might show up separately in
18556    /// different ProcessTree messages. A thread might not show up at all, if
18557    /// no sched switch activity was detected, for instance:
18558    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
18559    /// #1 { threads: [{tid: 12, pid: 10}] }
18560    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
18561    #[prost(message, repeated, tag="1")]
18562    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18563    #[prost(message, repeated, tag="2")]
18564    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18565}
18566/// Nested message and enum types in `GenericKernelProcessTree`.
18567pub mod generic_kernel_process_tree {
18568    /// Representation of a thread.
18569    #[derive(Clone, PartialEq, ::prost::Message)]
18570    pub struct Thread {
18571        /// Thread id.
18572        #[prost(int64, optional, tag="1")]
18573        pub tid: ::core::option::Option<i64>,
18574        /// Id of the parent process.
18575        #[prost(int64, optional, tag="2")]
18576        pub pid: ::core::option::Option<i64>,
18577        /// The command name of the thread.
18578        #[prost(string, optional, tag="3")]
18579        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18580        /// True if thread is the main thread.
18581        #[prost(bool, optional, tag="4")]
18582        pub is_main_thread: ::core::option::Option<bool>,
18583        /// True if thread is an idle thread.
18584        #[prost(bool, optional, tag="5")]
18585        pub is_idle: ::core::option::Option<bool>,
18586    }
18587    /// Representation of a process.
18588    #[derive(Clone, PartialEq, ::prost::Message)]
18589    pub struct Process {
18590        /// Process id.
18591        #[prost(int64, optional, tag="1")]
18592        pub pid: ::core::option::Option<i64>,
18593        /// Parent process id.
18594        #[prost(int64, optional, tag="2")]
18595        pub ppid: ::core::option::Option<i64>,
18596        /// The command line of the process.
18597        /// If the cmdline has spaces in it, then we use the characters from
18598        /// position 0 to the first instance of the space char (' ') as the name
18599        /// of the process. If no spaces are present, then the entire cmdline is
18600        /// used as the name.
18601        #[prost(string, optional, tag="3")]
18602        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
18603    }
18604}
18605// End of protos/perfetto/trace/generic_kernel/generic_task.proto
18606
18607// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
18608
18609#[derive(Clone, PartialEq, ::prost::Message)]
18610pub struct GpuCounterEvent {
18611    /// The first trace packet of each session should include counter_spec.
18612    #[prost(message, optional, tag="1")]
18613    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
18614    #[prost(message, repeated, tag="2")]
18615    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
18616    /// optional. Identifier for GPU in a multi-gpu device.
18617    #[prost(int32, optional, tag="3")]
18618    pub gpu_id: ::core::option::Option<i32>,
18619}
18620/// Nested message and enum types in `GpuCounterEvent`.
18621pub mod gpu_counter_event {
18622    #[derive(Clone, PartialEq, ::prost::Message)]
18623    pub struct GpuCounter {
18624        /// required. Identifier for counter.
18625        #[prost(uint32, optional, tag="1")]
18626        pub counter_id: ::core::option::Option<u32>,
18627        /// required. Value of the counter.
18628        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
18629        pub value: ::core::option::Option<gpu_counter::Value>,
18630    }
18631    /// Nested message and enum types in `GpuCounter`.
18632    pub mod gpu_counter {
18633        /// required. Value of the counter.
18634        #[derive(Clone, PartialEq, ::prost::Oneof)]
18635        pub enum Value {
18636            #[prost(int64, tag="2")]
18637            IntValue(i64),
18638            #[prost(double, tag="3")]
18639            DoubleValue(f64),
18640        }
18641    }
18642}
18643// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
18644
18645// Begin of protos/perfetto/trace/gpu/gpu_log.proto
18646
18647/// Message for logging events GPU data producer.
18648#[derive(Clone, PartialEq, ::prost::Message)]
18649pub struct GpuLog {
18650    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
18651    pub severity: ::core::option::Option<i32>,
18652    #[prost(string, optional, tag="2")]
18653    pub tag: ::core::option::Option<::prost::alloc::string::String>,
18654    #[prost(string, optional, tag="3")]
18655    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
18656}
18657/// Nested message and enum types in `GpuLog`.
18658pub mod gpu_log {
18659    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18660    #[repr(i32)]
18661    pub enum Severity {
18662        LogSeverityUnspecified = 0,
18663        LogSeverityVerbose = 1,
18664        LogSeverityDebug = 2,
18665        LogSeverityInfo = 3,
18666        LogSeverityWarning = 4,
18667        LogSeverityError = 5,
18668    }
18669    impl Severity {
18670        /// String value of the enum field names used in the ProtoBuf definition.
18671        ///
18672        /// The values are not transformed in any way and thus are considered stable
18673        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18674        pub fn as_str_name(&self) -> &'static str {
18675            match self {
18676                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
18677                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
18678                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
18679                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
18680                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
18681                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
18682            }
18683        }
18684    }
18685}
18686// End of protos/perfetto/trace/gpu/gpu_log.proto
18687
18688// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18689
18690/// next id: 15
18691#[derive(Clone, PartialEq, ::prost::Message)]
18692pub struct GpuRenderStageEvent {
18693    /// required. Unique ID for the event.
18694    #[prost(uint64, optional, tag="1")]
18695    pub event_id: ::core::option::Option<u64>,
18696    /// optional. Duration of the event in nanoseconds. If unset, this is a
18697    /// single time point event.
18698    #[prost(uint64, optional, tag="2")]
18699    pub duration: ::core::option::Option<u64>,
18700    /// required. ID to a hardware queue description in the specifications.
18701    /// InternedGpuRenderStageSpecification
18702    #[prost(uint64, optional, tag="13")]
18703    pub hw_queue_iid: ::core::option::Option<u64>,
18704    /// required. ID to a render stage description in the specifications.
18705    /// InternedGpuRenderStageSpecification
18706    #[prost(uint64, optional, tag="14")]
18707    pub stage_iid: ::core::option::Option<u64>,
18708    /// optional. Identifier for GPU in a multi-gpu device.
18709    #[prost(int32, optional, tag="11")]
18710    pub gpu_id: ::core::option::Option<i32>,
18711    /// required. Graphics context for the event.
18712    /// For OpenGL, this is the GL context.
18713    /// For Vulkan, this is the VkDevice.
18714    #[prost(uint64, optional, tag="5")]
18715    pub context: ::core::option::Option<u64>,
18716    /// optional. The render target for this event.
18717    /// For OpenGL, this is the GL frame buffer handle.
18718    /// For Vulkan, this is the VkFrameBuffer handle.
18719    #[prost(uint64, optional, tag="8")]
18720    pub render_target_handle: ::core::option::Option<u64>,
18721    /// optional. Submission ID generated by the UMD.
18722    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
18723    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
18724    /// to a single API submission should share the same ID.
18725    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18726    #[prost(uint32, optional, tag="10")]
18727    pub submission_id: ::core::option::Option<u32>,
18728    #[prost(message, repeated, tag="6")]
18729    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18730    // VULKAN SPECIFICS
18731
18732    /// optional. The Vulkan render pass handle.
18733    #[prost(uint64, optional, tag="9")]
18734    pub render_pass_handle: ::core::option::Option<u64>,
18735    /// optional. An ID for the render pass instance. This is used to correlate
18736    /// different events on different queues produced by the same Vulkan render
18737    /// pass instance.
18738    #[prost(uint64, optional, tag="16")]
18739    pub render_pass_instance_id: ::core::option::Option<u64>,
18740    /// optional. A bit mask representing which render subpasses contributed to
18741    /// this render stage event.  Subpass index 0 is represented by setting the
18742    /// LSB of the mask.  Additional mask can be added for subpass index greater
18743    /// than 63.
18744    #[prost(uint64, repeated, packed="false", tag="15")]
18745    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18746    /// optional. The Vulkan command buffer handle.
18747    #[prost(uint64, optional, tag="12")]
18748    pub command_buffer_handle: ::core::option::Option<u64>,
18749    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18750    /// InternedGpuRenderStageSpecification instead.
18751    #[deprecated]
18752    #[prost(message, optional, tag="7")]
18753    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18754    /// Deprecated. Use hw_queue_iid instead;
18755    #[deprecated]
18756    #[prost(int32, optional, tag="3")]
18757    pub hw_queue_id: ::core::option::Option<i32>,
18758    /// Deprecated. Use stage_iid instead;
18759    #[deprecated]
18760    #[prost(int32, optional, tag="4")]
18761    pub stage_id: ::core::option::Option<i32>,
18762}
18763/// Nested message and enum types in `GpuRenderStageEvent`.
18764pub mod gpu_render_stage_event {
18765    /// optional. Additional data for the user. This may include attributes for
18766    /// the event like resource ids, shaders, etc.
18767    #[derive(Clone, PartialEq, ::prost::Message)]
18768    pub struct ExtraData {
18769        #[prost(string, optional, tag="1")]
18770        pub name: ::core::option::Option<::prost::alloc::string::String>,
18771        #[prost(string, optional, tag="2")]
18772        pub value: ::core::option::Option<::prost::alloc::string::String>,
18773    }
18774    // DEPRECATED
18775
18776    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18777    /// The first trace packet of each session should include a Specifications
18778    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18779    /// must be earlier than all other packets. Only one packet with Specifications
18780    /// is expected.
18781    #[derive(Clone, PartialEq, ::prost::Message)]
18782    pub struct Specifications {
18783        #[prost(message, optional, tag="1")]
18784        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18785        /// Labels to categorize the hw Queue this event goes on.
18786        #[prost(message, repeated, tag="2")]
18787        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18788        /// Labels to categorize render stage(binning, render, compute etc).
18789        #[prost(message, repeated, tag="3")]
18790        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18791    }
18792    /// Nested message and enum types in `Specifications`.
18793    pub mod specifications {
18794        #[derive(Clone, PartialEq, ::prost::Message)]
18795        pub struct ContextSpec {
18796            #[prost(uint64, optional, tag="1")]
18797            pub context: ::core::option::Option<u64>,
18798            #[prost(int32, optional, tag="2")]
18799            pub pid: ::core::option::Option<i32>,
18800        }
18801        #[derive(Clone, PartialEq, ::prost::Message)]
18802        pub struct Description {
18803            #[prost(string, optional, tag="1")]
18804            pub name: ::core::option::Option<::prost::alloc::string::String>,
18805            #[prost(string, optional, tag="2")]
18806            pub description: ::core::option::Option<::prost::alloc::string::String>,
18807        }
18808    }
18809}
18810// Interned data.
18811
18812/// The iid is the numeric value of either the GL Context or the VkDevice
18813/// handle.
18814#[derive(Clone, PartialEq, ::prost::Message)]
18815pub struct InternedGraphicsContext {
18816    #[prost(uint64, optional, tag="1")]
18817    pub iid: ::core::option::Option<u64>,
18818    #[prost(int32, optional, tag="2")]
18819    pub pid: ::core::option::Option<i32>,
18820    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
18821    pub api: ::core::option::Option<i32>,
18822}
18823/// Nested message and enum types in `InternedGraphicsContext`.
18824pub mod interned_graphics_context {
18825    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18826    #[repr(i32)]
18827    pub enum Api {
18828        Undefined = 0,
18829        OpenGl = 1,
18830        Vulkan = 2,
18831        OpenCl = 3,
18832    }
18833    impl Api {
18834        /// String value of the enum field names used in the ProtoBuf definition.
18835        ///
18836        /// The values are not transformed in any way and thus are considered stable
18837        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18838        pub fn as_str_name(&self) -> &'static str {
18839            match self {
18840                Api::Undefined => "UNDEFINED",
18841                Api::OpenGl => "OPEN_GL",
18842                Api::Vulkan => "VULKAN",
18843                Api::OpenCl => "OPEN_CL",
18844            }
18845        }
18846    }
18847}
18848#[derive(Clone, PartialEq, ::prost::Message)]
18849pub struct InternedGpuRenderStageSpecification {
18850    #[prost(uint64, optional, tag="1")]
18851    pub iid: ::core::option::Option<u64>,
18852    #[prost(string, optional, tag="2")]
18853    pub name: ::core::option::Option<::prost::alloc::string::String>,
18854    #[prost(string, optional, tag="3")]
18855    pub description: ::core::option::Option<::prost::alloc::string::String>,
18856    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
18857    pub category: ::core::option::Option<i32>,
18858}
18859/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
18860pub mod interned_gpu_render_stage_specification {
18861    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18862    #[repr(i32)]
18863    pub enum RenderStageCategory {
18864        Other = 0,
18865        Graphics = 1,
18866        Compute = 2,
18867    }
18868    impl RenderStageCategory {
18869        /// String value of the enum field names used in the ProtoBuf definition.
18870        ///
18871        /// The values are not transformed in any way and thus are considered stable
18872        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18873        pub fn as_str_name(&self) -> &'static str {
18874            match self {
18875                RenderStageCategory::Other => "OTHER",
18876                RenderStageCategory::Graphics => "GRAPHICS",
18877                RenderStageCategory::Compute => "COMPUTE",
18878            }
18879        }
18880    }
18881}
18882// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18883
18884// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
18885
18886/// Message for recording the Vulkan call.
18887#[derive(Clone, PartialEq, ::prost::Message)]
18888pub struct VulkanApiEvent {
18889    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
18890    pub event: ::core::option::Option<vulkan_api_event::Event>,
18891}
18892/// Nested message and enum types in `VulkanApiEvent`.
18893pub mod vulkan_api_event {
18894    /// For recording vkSetDebugUtilsObjectNameEXT and
18895    /// vkDebugMarkerSetObjectNameEXT
18896    #[derive(Clone, PartialEq, ::prost::Message)]
18897    pub struct VkDebugUtilsObjectName {
18898        #[prost(uint32, optional, tag="1")]
18899        pub pid: ::core::option::Option<u32>,
18900        #[prost(uint64, optional, tag="2")]
18901        pub vk_device: ::core::option::Option<u64>,
18902        /// VkObjectType.  Value must match
18903        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
18904        #[prost(int32, optional, tag="3")]
18905        pub object_type: ::core::option::Option<i32>,
18906        #[prost(uint64, optional, tag="4")]
18907        pub object: ::core::option::Option<u64>,
18908        #[prost(string, optional, tag="5")]
18909        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
18910    }
18911    /// For recording vkQueueSubmit call.
18912    #[derive(Clone, PartialEq, ::prost::Message)]
18913    pub struct VkQueueSubmit {
18914        #[prost(uint64, optional, tag="1")]
18915        pub duration_ns: ::core::option::Option<u64>,
18916        #[prost(uint32, optional, tag="2")]
18917        pub pid: ::core::option::Option<u32>,
18918        #[prost(uint32, optional, tag="3")]
18919        pub tid: ::core::option::Option<u32>,
18920        #[prost(uint64, optional, tag="4")]
18921        pub vk_queue: ::core::option::Option<u64>,
18922        #[prost(uint64, repeated, packed="false", tag="5")]
18923        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
18924        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
18925        /// submission_id must match GpuRenderStageEvent.submission_id if the
18926        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
18927        #[prost(uint32, optional, tag="6")]
18928        pub submission_id: ::core::option::Option<u32>,
18929    }
18930    #[derive(Clone, PartialEq, ::prost::Oneof)]
18931    pub enum Event {
18932        #[prost(message, tag="1")]
18933        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
18934        #[prost(message, tag="2")]
18935        VkQueueSubmit(VkQueueSubmit),
18936    }
18937}
18938// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
18939
18940// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18941
18942/// All the information that cannot be sent within a VulkanMemoryEvent message,
18943/// are sent as annotations to the main memory event. One example is the
18944/// properties of the object that consumes the allocated memory, for example, a
18945/// buffer or an image.
18946/// key_iid and string_iid are both interned strings. Original string value is
18947/// stored in vulkan_memory_keys from
18948/// protos/perfetto/trace/interned_data/interned_data.proto.
18949#[derive(Clone, PartialEq, ::prost::Message)]
18950pub struct VulkanMemoryEventAnnotation {
18951    #[prost(uint64, optional, tag="1")]
18952    pub key_iid: ::core::option::Option<u64>,
18953    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
18954    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
18955}
18956/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
18957pub mod vulkan_memory_event_annotation {
18958    #[derive(Clone, PartialEq, ::prost::Oneof)]
18959    pub enum Value {
18960        #[prost(int64, tag="2")]
18961        IntValue(i64),
18962        #[prost(double, tag="3")]
18963        DoubleValue(f64),
18964        #[prost(uint64, tag="4")]
18965        StringIid(u64),
18966    }
18967}
18968/// Each VulkanMemoryEvent encompasses information regarding one single function
18969/// call that results in reserving, binding or freeing host or GPU memory. There
18970/// is a special message type, ANNOTATIONS, which is used to communicate
18971/// information that are not directly related to a memory event, nonetheless are
18972/// essential to understand the memory usage. An example is the size and memory
18973/// types of the memory heaps.
18974///
18975/// Next reserved id: 10 (up to 15).
18976/// Next id: 21.
18977#[derive(Clone, PartialEq, ::prost::Message)]
18978pub struct VulkanMemoryEvent {
18979    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
18980    pub source: ::core::option::Option<i32>,
18981    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
18982    pub operation: ::core::option::Option<i32>,
18983    #[prost(int64, optional, tag="3")]
18984    pub timestamp: ::core::option::Option<i64>,
18985    #[prost(uint32, optional, tag="4")]
18986    pub pid: ::core::option::Option<u32>,
18987    #[prost(fixed64, optional, tag="5")]
18988    pub memory_address: ::core::option::Option<u64>,
18989    #[prost(uint64, optional, tag="6")]
18990    pub memory_size: ::core::option::Option<u64>,
18991    /// Interned string. Original string value is stored in function_names from
18992    /// protos/perfetto/trace/interned_data/interned_data.proto.
18993    #[prost(uint64, optional, tag="7")]
18994    pub caller_iid: ::core::option::Option<u64>,
18995    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
18996    pub allocation_scope: ::core::option::Option<i32>,
18997    /// Extra related information, e.g., create configs, etc.
18998    #[prost(message, repeated, tag="9")]
18999    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
19000    /// Field IDs used for device memory (low sampling rate)
19001    #[prost(fixed64, optional, tag="16")]
19002    pub device: ::core::option::Option<u64>,
19003    #[prost(fixed64, optional, tag="17")]
19004    pub device_memory: ::core::option::Option<u64>,
19005    #[prost(uint32, optional, tag="18")]
19006    pub memory_type: ::core::option::Option<u32>,
19007    #[prost(uint32, optional, tag="19")]
19008    pub heap: ::core::option::Option<u32>,
19009    #[prost(fixed64, optional, tag="20")]
19010    pub object_handle: ::core::option::Option<u64>,
19011}
19012/// Nested message and enum types in `VulkanMemoryEvent`.
19013pub mod vulkan_memory_event {
19014    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19015    #[repr(i32)]
19016    pub enum Source {
19017        Unspecified = 0,
19018        Driver = 1,
19019        Device = 2,
19020        DeviceMemory = 3,
19021        Buffer = 4,
19022        Image = 5,
19023    }
19024    impl Source {
19025        /// String value of the enum field names used in the ProtoBuf definition.
19026        ///
19027        /// The values are not transformed in any way and thus are considered stable
19028        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19029        pub fn as_str_name(&self) -> &'static str {
19030            match self {
19031                Source::Unspecified => "SOURCE_UNSPECIFIED",
19032                Source::Driver => "SOURCE_DRIVER",
19033                Source::Device => "SOURCE_DEVICE",
19034                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
19035                Source::Buffer => "SOURCE_BUFFER",
19036                Source::Image => "SOURCE_IMAGE",
19037            }
19038        }
19039    }
19040    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19041    #[repr(i32)]
19042    pub enum Operation {
19043        OpUnspecified = 0,
19044        /// alloc, create
19045        OpCreate = 1,
19046        /// free, destroy(non-bound)
19047        OpDestroy = 2,
19048        /// bind buffer and image
19049        OpBind = 3,
19050        /// destroy (bound)
19051        OpDestroyBound = 4,
19052        /// only annotations
19053        OpAnnotations = 5,
19054    }
19055    impl Operation {
19056        /// String value of the enum field names used in the ProtoBuf definition.
19057        ///
19058        /// The values are not transformed in any way and thus are considered stable
19059        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19060        pub fn as_str_name(&self) -> &'static str {
19061            match self {
19062                Operation::OpUnspecified => "OP_UNSPECIFIED",
19063                Operation::OpCreate => "OP_CREATE",
19064                Operation::OpDestroy => "OP_DESTROY",
19065                Operation::OpBind => "OP_BIND",
19066                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
19067                Operation::OpAnnotations => "OP_ANNOTATIONS",
19068            }
19069        }
19070    }
19071    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19072    #[repr(i32)]
19073    pub enum AllocationScope {
19074        ScopeUnspecified = 0,
19075        ScopeCommand = 1,
19076        ScopeObject = 2,
19077        ScopeCache = 3,
19078        ScopeDevice = 4,
19079        ScopeInstance = 5,
19080    }
19081    impl AllocationScope {
19082        /// String value of the enum field names used in the ProtoBuf definition.
19083        ///
19084        /// The values are not transformed in any way and thus are considered stable
19085        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19086        pub fn as_str_name(&self) -> &'static str {
19087            match self {
19088                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19089                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
19090                AllocationScope::ScopeObject => "SCOPE_OBJECT",
19091                AllocationScope::ScopeCache => "SCOPE_CACHE",
19092                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
19093                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
19094            }
19095        }
19096    }
19097}
19098// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
19099
19100// Begin of protos/perfetto/trace/profiling/profile_common.proto
19101
19102/// The interning fields in this file can refer to 2 different intern tables,
19103/// depending on the message they are used in. If the interned fields are present
19104/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
19105/// should be used. If the intered fields are present in the
19106/// StreamingProfilePacket proto, then the intern tables included in all of the
19107/// previous InternedData message with same sequence ID should be used.
19108/// TODO(fmayer): Move to the intern tables to a common location.
19109#[derive(Clone, PartialEq, ::prost::Message)]
19110pub struct InternedString {
19111    /// Interning key. Starts from 1, 0 is the same as "not set".
19112    #[prost(uint64, optional, tag="1")]
19113    pub iid: ::core::option::Option<u64>,
19114    /// The actual string.
19115    #[prost(bytes="vec", optional, tag="2")]
19116    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19117}
19118/// Source line info.
19119#[derive(Clone, PartialEq, ::prost::Message)]
19120pub struct Line {
19121    #[prost(string, optional, tag="1")]
19122    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19123    #[prost(string, optional, tag="2")]
19124    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
19125    #[prost(uint32, optional, tag="3")]
19126    pub line_number: ::core::option::Option<u32>,
19127}
19128/// Symbols for a given address in a module.
19129#[derive(Clone, PartialEq, ::prost::Message)]
19130pub struct AddressSymbols {
19131    #[prost(uint64, optional, tag="1")]
19132    pub address: ::core::option::Option<u64>,
19133    /// Source lines that correspond to this address.
19134    ///
19135    /// These are repeated because when inlining happens, multiple functions'
19136    /// frames can be at a single address. Imagine function Foo calling the
19137    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
19138    /// both Foo and the std::vector<int> constructor when we symbolize the
19139    /// address.
19140    #[prost(message, repeated, tag="2")]
19141    pub lines: ::prost::alloc::vec::Vec<Line>,
19142}
19143/// Symbols for addresses seen in a module.
19144/// Used in re-symbolisation of complete traces.
19145#[derive(Clone, PartialEq, ::prost::Message)]
19146pub struct ModuleSymbols {
19147    /// Fully qualified path to the mapping.
19148    /// E.g. /system/lib64/libc.so.
19149    #[prost(string, optional, tag="1")]
19150    pub path: ::core::option::Option<::prost::alloc::string::String>,
19151    /// .note.gnu.build-id on Linux (not hex encoded).
19152    /// uuid on MacOS.
19153    /// Module GUID on Windows.
19154    #[prost(string, optional, tag="2")]
19155    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
19156    #[prost(message, repeated, tag="3")]
19157    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
19158}
19159#[derive(Clone, PartialEq, ::prost::Message)]
19160pub struct Mapping {
19161    /// Interning key.
19162    /// Starts from 1, 0 is the same as "not set".
19163    #[prost(uint64, optional, tag="1")]
19164    pub iid: ::core::option::Option<u64>,
19165    /// Interning key.
19166    /// Starts from 1, 0 is the same as "not set".
19167    #[prost(uint64, optional, tag="2")]
19168    pub build_id: ::core::option::Option<u64>,
19169    // The linker may create multiple memory mappings for the same shared
19170    // library.
19171    // This is so that the ELF header is mapped as read only, while the
19172    // executable memory is mapped as executable only.
19173    // The details of this depend on the linker, a possible mapping of an ELF
19174    // file is this:
19175    //          +----------------------+
19176    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
19177    //          +---------+------------+
19178    //          |         |
19179    //          | read    | executable
19180    //          v mapping v mapping
19181    //          +----------------------+
19182    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
19183    //          +------------------+---+
19184    //          ^         ^        ^
19185    //          +         +        +
19186    //        start     exact    relpc
19187    //        offset   offset    0x1800
19188    //        0x0000   0x1000
19189    //
19190    // exact_offset is the offset into the library file of this mapping.
19191    // start_offset is the offset into the library file of the first mapping
19192    // for that library. For native libraries (.so files) this should be 0.
19193
19194    /// This is not set on Android 10.
19195    #[prost(uint64, optional, tag="8")]
19196    pub exact_offset: ::core::option::Option<u64>,
19197    #[prost(uint64, optional, tag="3")]
19198    pub start_offset: ::core::option::Option<u64>,
19199    #[prost(uint64, optional, tag="4")]
19200    pub start: ::core::option::Option<u64>,
19201    #[prost(uint64, optional, tag="5")]
19202    pub end: ::core::option::Option<u64>,
19203    /// Libunwindstack-specific concept, not to be confused with bionic linker's
19204    /// notion of load_bias. Needed to correct relative pc addresses (as produced
19205    /// by libunwindstack) when doing offline resymbolisation.
19206    ///
19207    /// For an executable ELF PT_LOAD segment, this is:
19208    ///    p_vaddr - p_offset
19209    ///
19210    /// Where p_offset means that the code is at that offset into the ELF file on
19211    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
19212    /// to where the linker loads the ELF into the address space. For most ELFs,
19213    /// the two values are identical and therefore load_bias is zero.
19214    #[prost(uint64, optional, tag="6")]
19215    pub load_bias: ::core::option::Option<u64>,
19216    /// E.g. ["system", "lib64", "libc.so"]
19217    /// id of string.
19218    #[prost(uint64, repeated, packed="false", tag="7")]
19219    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
19220}
19221#[derive(Clone, PartialEq, ::prost::Message)]
19222pub struct Frame {
19223    /// Interning key. Starts from 1, 0 is the same as "not set".
19224    #[prost(uint64, optional, tag="1")]
19225    pub iid: ::core::option::Option<u64>,
19226    /// E.g. "fopen"
19227    /// id of string.
19228    #[prost(uint64, optional, tag="2")]
19229    pub function_name_id: ::core::option::Option<u64>,
19230    /// The mapping in which this frame's instruction pointer resides.
19231    /// iid of Mapping.iid.
19232    ///
19233    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
19234    /// this frame has no associated memory mapping (e.g., symbolized frames
19235    /// without address information).
19236    ///
19237    /// Starts from 1, 0 is the same as "not set".
19238    #[prost(uint64, optional, tag="3")]
19239    pub mapping_id: ::core::option::Option<u64>,
19240    /// Instruction pointer relative to the start of the mapping.
19241    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
19242    #[prost(uint64, optional, tag="4")]
19243    pub rel_pc: ::core::option::Option<u64>,
19244    /// Source file path for this frame.
19245    /// This is typically set during online symbolization when symbol information
19246    /// is available at trace collection time. If not set, source file paths may be
19247    /// added later via offline symbolization (see ModuleSymbols).
19248    ///
19249    /// Starts from 1, 0 is the same as "not set".
19250    ///
19251    /// iid of InternedData.source_paths.
19252    #[prost(uint64, optional, tag="5")]
19253    pub source_path_iid: ::core::option::Option<u64>,
19254    /// Line number in the source file for this frame.
19255    /// This is typically set during online symbolization when symbol information
19256    /// is available at trace collection time. If not set, line numbers may be
19257    /// added later via offline symbolization (see ModuleSymbols).
19258    #[prost(uint32, optional, tag="6")]
19259    pub line_number: ::core::option::Option<u32>,
19260}
19261#[derive(Clone, PartialEq, ::prost::Message)]
19262pub struct Callstack {
19263    /// Interning key. Starts from 1, 0 is the same as "not set".
19264    #[prost(uint64, optional, tag="1")]
19265    pub iid: ::core::option::Option<u64>,
19266    /// Frames of this callstack. Bottom frame first.
19267    #[prost(uint64, repeated, packed="false", tag="2")]
19268    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
19269}
19270// End of protos/perfetto/trace/profiling/profile_common.proto
19271
19272// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
19273
19274#[derive(Clone, PartialEq, ::prost::Message)]
19275pub struct HistogramName {
19276    #[prost(uint64, optional, tag="1")]
19277    pub iid: ::core::option::Option<u64>,
19278    #[prost(string, optional, tag="2")]
19279    pub name: ::core::option::Option<::prost::alloc::string::String>,
19280}
19281/// An individual histogram sample logged via Chrome's UMA metrics system.
19282#[derive(Clone, PartialEq, ::prost::Message)]
19283pub struct ChromeHistogramSample {
19284    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
19285    /// both must be present.
19286    #[prost(uint64, optional, tag="1")]
19287    pub name_hash: ::core::option::Option<u64>,
19288    #[prost(string, optional, tag="2")]
19289    pub name: ::core::option::Option<::prost::alloc::string::String>,
19290    #[prost(int64, optional, tag="3")]
19291    pub sample: ::core::option::Option<i64>,
19292    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
19293    #[prost(uint64, optional, tag="4")]
19294    pub name_iid: ::core::option::Option<u64>,
19295}
19296// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
19297
19298// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
19299
19300/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
19301/// macros. Users of the Perfetto SDK should prefer to use the
19302/// perfetto::TracedValue API to fill these protos, rather than filling them
19303/// manually.
19304///
19305/// Debug annotations are intended for debug use and are not considered a stable
19306/// API of the trace contents. Trace-based metrics that use debug annotation
19307/// values are prone to breakage, so please rely on typed TrackEvent fields for
19308/// these instead.
19309///
19310/// DebugAnnotations support nested arrays and dictionaries. Each entry is
19311/// encoded as a single DebugAnnotation message. Only dictionary entries
19312/// set the "name" field. The TrackEvent message forms an implicit root
19313/// dictionary.
19314///
19315/// Example TrackEvent with nested annotations:
19316///    track_event {
19317///      debug_annotations {
19318///        name: "foo"
19319///        dict_entries {
19320///          name: "a"
19321///          bool_value: true
19322///        }
19323///        dict_entries {
19324///          name: "b"
19325///          int_value: 123
19326///        }
19327///      }
19328///      debug_annotations {
19329///        name: "bar"
19330///        array_values {
19331///          string_value: "hello"
19332///        }
19333///        array_values {
19334///          string_value: "world"
19335///        }
19336///      }
19337///    }
19338///
19339/// Next ID: 18.
19340/// Reserved ID: 15
19341#[derive(Clone, PartialEq, ::prost::Message)]
19342pub struct DebugAnnotation {
19343    #[prost(bytes="vec", optional, tag="14")]
19344    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19345    #[prost(message, repeated, tag="11")]
19346    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
19347    #[prost(message, repeated, tag="12")]
19348    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
19349    /// Name fields are set only for dictionary entries.
19350    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
19351    pub name_field: ::core::option::Option<debug_annotation::NameField>,
19352    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
19353    pub value: ::core::option::Option<debug_annotation::Value>,
19354    /// Used to embed arbitrary proto messages (which are also typically used to
19355    /// represent typed TrackEvent arguments). |proto_type_name| or
19356    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19357    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19358    /// proto messages. See |TracedValue::WriteProto| for more details.
19359    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
19360    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
19361}
19362/// Nested message and enum types in `DebugAnnotation`.
19363pub mod debug_annotation {
19364    /// Deprecated legacy way to use nested values. Only kept for
19365    /// backwards-compatibility in TraceProcessor. May be removed in the future -
19366    /// code filling protos should use |dict_entries| and |array_values| instead.
19367    #[derive(Clone, PartialEq, ::prost::Message)]
19368    pub struct NestedValue {
19369        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
19370        pub nested_type: ::core::option::Option<i32>,
19371        #[prost(string, repeated, tag="2")]
19372        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19373        #[prost(message, repeated, tag="3")]
19374        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
19375        #[prost(message, repeated, tag="4")]
19376        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
19377        #[prost(int64, optional, tag="5")]
19378        pub int_value: ::core::option::Option<i64>,
19379        #[prost(double, optional, tag="6")]
19380        pub double_value: ::core::option::Option<f64>,
19381        #[prost(bool, optional, tag="7")]
19382        pub bool_value: ::core::option::Option<bool>,
19383        #[prost(string, optional, tag="8")]
19384        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
19385    }
19386    /// Nested message and enum types in `NestedValue`.
19387    pub mod nested_value {
19388        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19389        #[repr(i32)]
19390        pub enum NestedType {
19391            /// leaf value.
19392            Unspecified = 0,
19393            Dict = 1,
19394            Array = 2,
19395        }
19396        impl NestedType {
19397            /// String value of the enum field names used in the ProtoBuf definition.
19398            ///
19399            /// The values are not transformed in any way and thus are considered stable
19400            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19401            pub fn as_str_name(&self) -> &'static str {
19402                match self {
19403                    NestedType::Unspecified => "UNSPECIFIED",
19404                    NestedType::Dict => "DICT",
19405                    NestedType::Array => "ARRAY",
19406                }
19407            }
19408        }
19409    }
19410    /// Name fields are set only for dictionary entries.
19411    #[derive(Clone, PartialEq, ::prost::Oneof)]
19412    pub enum NameField {
19413        /// interned DebugAnnotationName.
19414        #[prost(uint64, tag="1")]
19415        NameIid(u64),
19416        /// non-interned variant.
19417        #[prost(string, tag="10")]
19418        Name(::prost::alloc::string::String),
19419    }
19420    #[derive(Clone, PartialEq, ::prost::Oneof)]
19421    pub enum Value {
19422        #[prost(bool, tag="2")]
19423        BoolValue(bool),
19424        #[prost(uint64, tag="3")]
19425        UintValue(u64),
19426        #[prost(int64, tag="4")]
19427        IntValue(i64),
19428        #[prost(double, tag="5")]
19429        DoubleValue(f64),
19430        /// Pointers are stored in a separate type as the JSON output treats them
19431        /// differently from other uint64 values.
19432        #[prost(uint64, tag="7")]
19433        PointerValue(u64),
19434        /// Deprecated. Use dict_entries / array_values instead.
19435        #[prost(message, tag="8")]
19436        NestedValue(NestedValue),
19437        /// Legacy instrumentation may not support conversion of nested data to
19438        /// NestedValue yet.
19439        #[prost(string, tag="9")]
19440        LegacyJsonValue(::prost::alloc::string::String),
19441        /// interned and non-interned variants of strings.
19442        #[prost(string, tag="6")]
19443        StringValue(::prost::alloc::string::String),
19444        /// Corresponds to |debug_annotation_string_values| field in InternedData.
19445        #[prost(uint64, tag="17")]
19446        StringValueIid(u64),
19447    }
19448    /// Used to embed arbitrary proto messages (which are also typically used to
19449    /// represent typed TrackEvent arguments). |proto_type_name| or
19450    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19451    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19452    /// proto messages. See |TracedValue::WriteProto| for more details.
19453    #[derive(Clone, PartialEq, ::prost::Oneof)]
19454    pub enum ProtoTypeDescriptor {
19455        #[prost(string, tag="16")]
19456        ProtoTypeName(::prost::alloc::string::String),
19457        /// interned DebugAnnotationValueTypeName.
19458        #[prost(uint64, tag="13")]
19459        ProtoTypeNameIid(u64),
19460    }
19461}
19462// --------------------
19463// Interned data types:
19464// --------------------
19465
19466#[derive(Clone, PartialEq, ::prost::Message)]
19467pub struct DebugAnnotationName {
19468    #[prost(uint64, optional, tag="1")]
19469    pub iid: ::core::option::Option<u64>,
19470    #[prost(string, optional, tag="2")]
19471    pub name: ::core::option::Option<::prost::alloc::string::String>,
19472}
19473/// See the |proto_type_descriptor| comment.
19474#[derive(Clone, PartialEq, ::prost::Message)]
19475pub struct DebugAnnotationValueTypeName {
19476    #[prost(uint64, optional, tag="1")]
19477    pub iid: ::core::option::Option<u64>,
19478    #[prost(string, optional, tag="2")]
19479    pub name: ::core::option::Option<::prost::alloc::string::String>,
19480}
19481// End of protos/perfetto/trace/track_event/debug_annotation.proto
19482
19483// Begin of protos/perfetto/trace/track_event/log_message.proto
19484
19485#[derive(Clone, PartialEq, ::prost::Message)]
19486pub struct LogMessage {
19487    /// interned SourceLocation.
19488    #[prost(uint64, optional, tag="1")]
19489    pub source_location_iid: ::core::option::Option<u64>,
19490    /// interned LogMessageBody.
19491    #[prost(uint64, optional, tag="2")]
19492    pub body_iid: ::core::option::Option<u64>,
19493    #[prost(enumeration="log_message::Priority", optional, tag="3")]
19494    pub prio: ::core::option::Option<i32>,
19495}
19496/// Nested message and enum types in `LogMessage`.
19497pub mod log_message {
19498    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19499    #[repr(i32)]
19500    pub enum Priority {
19501        PrioUnspecified = 0,
19502        PrioUnused = 1,
19503        PrioVerbose = 2,
19504        PrioDebug = 3,
19505        PrioInfo = 4,
19506        PrioWarn = 5,
19507        PrioError = 6,
19508        PrioFatal = 7,
19509    }
19510    impl Priority {
19511        /// String value of the enum field names used in the ProtoBuf definition.
19512        ///
19513        /// The values are not transformed in any way and thus are considered stable
19514        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19515        pub fn as_str_name(&self) -> &'static str {
19516            match self {
19517                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
19518                Priority::PrioUnused => "PRIO_UNUSED",
19519                Priority::PrioVerbose => "PRIO_VERBOSE",
19520                Priority::PrioDebug => "PRIO_DEBUG",
19521                Priority::PrioInfo => "PRIO_INFO",
19522                Priority::PrioWarn => "PRIO_WARN",
19523                Priority::PrioError => "PRIO_ERROR",
19524                Priority::PrioFatal => "PRIO_FATAL",
19525            }
19526        }
19527    }
19528}
19529// --------------------
19530// Interned data types:
19531// --------------------
19532
19533#[derive(Clone, PartialEq, ::prost::Message)]
19534pub struct LogMessageBody {
19535    #[prost(uint64, optional, tag="1")]
19536    pub iid: ::core::option::Option<u64>,
19537    #[prost(string, optional, tag="2")]
19538    pub body: ::core::option::Option<::prost::alloc::string::String>,
19539}
19540// End of protos/perfetto/trace/track_event/log_message.proto
19541
19542// Begin of protos/perfetto/trace/track_event/source_location.proto
19543
19544// --------------------
19545// Interned data types:
19546// --------------------
19547
19548/// A source location, represented as a native symbol.
19549/// This is similar to `message Frame` from
19550/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
19551/// source code locations (for example in track event args), not stack frames.
19552#[derive(Clone, PartialEq, ::prost::Message)]
19553pub struct UnsymbolizedSourceLocation {
19554    #[prost(uint64, optional, tag="1")]
19555    pub iid: ::core::option::Option<u64>,
19556    #[prost(uint64, optional, tag="2")]
19557    pub mapping_id: ::core::option::Option<u64>,
19558    #[prost(uint64, optional, tag="3")]
19559    pub rel_pc: ::core::option::Option<u64>,
19560}
19561#[derive(Clone, PartialEq, ::prost::Message)]
19562pub struct SourceLocation {
19563    #[prost(uint64, optional, tag="1")]
19564    pub iid: ::core::option::Option<u64>,
19565    #[prost(string, optional, tag="2")]
19566    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
19567    #[prost(string, optional, tag="3")]
19568    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19569    #[prost(uint32, optional, tag="4")]
19570    pub line_number: ::core::option::Option<u32>,
19571}
19572// End of protos/perfetto/trace/track_event/source_location.proto
19573
19574// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
19575
19576/// A list of processes connected to the tracing service.
19577#[derive(Clone, PartialEq, ::prost::Message)]
19578pub struct ChromeActiveProcesses {
19579    #[prost(int32, repeated, packed="false", tag="1")]
19580    pub pid: ::prost::alloc::vec::Vec<i32>,
19581}
19582// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
19583
19584/// Trace event arguments for application state changes.
19585#[derive(Clone, PartialEq, ::prost::Message)]
19586pub struct ChromeApplicationStateInfo {
19587    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
19588    pub application_state: ::core::option::Option<i32>,
19589}
19590/// Nested message and enum types in `ChromeApplicationStateInfo`.
19591pub mod chrome_application_state_info {
19592    /// Enum definition taken from:
19593    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
19594    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19595    #[repr(i32)]
19596    pub enum ChromeApplicationState {
19597        ApplicationStateUnknown = 0,
19598        ApplicationStateHasRunningActivities = 1,
19599        ApplicationStateHasPausedActivities = 2,
19600        ApplicationStateHasStoppedActivities = 3,
19601        ApplicationStateHasDestroyedActivities = 4,
19602    }
19603    impl ChromeApplicationState {
19604        /// String value of the enum field names used in the ProtoBuf definition.
19605        ///
19606        /// The values are not transformed in any way and thus are considered stable
19607        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19608        pub fn as_str_name(&self) -> &'static str {
19609            match self {
19610                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
19611                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
19612                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
19613                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
19614                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
19615            }
19616        }
19617    }
19618}
19619/// Next id: 18
19620#[derive(Clone, PartialEq, ::prost::Message)]
19621pub struct ChromeCompositorSchedulerState {
19622    #[prost(message, optional, tag="1")]
19623    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
19624    #[prost(bool, optional, tag="2")]
19625    pub observing_begin_frame_source: ::core::option::Option<bool>,
19626    #[prost(bool, optional, tag="3")]
19627    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
19628    #[prost(bool, optional, tag="4")]
19629    pub pending_begin_frame_task: ::core::option::Option<bool>,
19630    #[prost(bool, optional, tag="5")]
19631    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
19632    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
19633    pub inside_action: ::core::option::Option<i32>,
19634    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
19635    pub deadline_mode: ::core::option::Option<i32>,
19636    #[prost(int64, optional, tag="9")]
19637    pub deadline_us: ::core::option::Option<i64>,
19638    #[prost(int64, optional, tag="10")]
19639    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
19640    #[prost(int64, optional, tag="11")]
19641    pub now_us: ::core::option::Option<i64>,
19642    #[prost(int64, optional, tag="12")]
19643    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
19644    #[prost(int64, optional, tag="13")]
19645    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
19646    #[prost(message, optional, tag="14")]
19647    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
19648    #[prost(message, optional, tag="15")]
19649    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
19650    #[prost(message, optional, tag="16")]
19651    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
19652    #[prost(message, optional, tag="17")]
19653    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
19654}
19655/// Nested message and enum types in `ChromeCompositorSchedulerState`.
19656pub mod chrome_compositor_scheduler_state {
19657    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19658    #[repr(i32)]
19659    pub enum BeginImplFrameDeadlineMode {
19660        DeadlineModeUnspecified = 0,
19661        DeadlineModeNone = 1,
19662        DeadlineModeImmediate = 2,
19663        DeadlineModeRegular = 3,
19664        DeadlineModeLate = 4,
19665        DeadlineModeBlocked = 5,
19666    }
19667    impl BeginImplFrameDeadlineMode {
19668        /// String value of the enum field names used in the ProtoBuf definition.
19669        ///
19670        /// The values are not transformed in any way and thus are considered stable
19671        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19672        pub fn as_str_name(&self) -> &'static str {
19673            match self {
19674                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
19675                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
19676                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
19677                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
19678                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
19679                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
19680            }
19681        }
19682    }
19683}
19684/// Describes the current values stored in the Chrome Compositor state machine.
19685/// Next id: 3
19686#[derive(Clone, PartialEq, ::prost::Message)]
19687pub struct ChromeCompositorStateMachine {
19688    #[prost(message, optional, tag="1")]
19689    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
19690    #[prost(message, optional, tag="2")]
19691    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
19692}
19693/// Nested message and enum types in `ChromeCompositorStateMachine`.
19694pub mod chrome_compositor_state_machine {
19695    /// Next id: 6
19696    #[derive(Clone, PartialEq, ::prost::Message)]
19697    pub struct MajorState {
19698        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
19699        pub next_action: ::core::option::Option<i32>,
19700        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
19701        pub begin_impl_frame_state: ::core::option::Option<i32>,
19702        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
19703        pub begin_main_frame_state: ::core::option::Option<i32>,
19704        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
19705        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
19706        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
19707        pub forced_redraw_state: ::core::option::Option<i32>,
19708    }
19709    /// Nested message and enum types in `MajorState`.
19710    pub mod major_state {
19711        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19712        #[repr(i32)]
19713        pub enum BeginImplFrameState {
19714            BeginImplFrameUnspecified = 0,
19715            BeginImplFrameIdle = 1,
19716            BeginImplFrameInsideBeginFrame = 2,
19717            BeginImplFrameInsideDeadline = 3,
19718        }
19719        impl BeginImplFrameState {
19720            /// String value of the enum field names used in the ProtoBuf definition.
19721            ///
19722            /// The values are not transformed in any way and thus are considered stable
19723            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19724            pub fn as_str_name(&self) -> &'static str {
19725                match self {
19726                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
19727                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
19728                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
19729                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
19730                }
19731            }
19732        }
19733        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19734        #[repr(i32)]
19735        pub enum BeginMainFrameState {
19736            BeginMainFrameUnspecified = 0,
19737            BeginMainFrameIdle = 1,
19738            BeginMainFrameSent = 2,
19739            BeginMainFrameReadyToCommit = 3,
19740        }
19741        impl BeginMainFrameState {
19742            /// String value of the enum field names used in the ProtoBuf definition.
19743            ///
19744            /// The values are not transformed in any way and thus are considered stable
19745            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19746            pub fn as_str_name(&self) -> &'static str {
19747                match self {
19748                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
19749                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
19750                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
19751                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
19752                }
19753            }
19754        }
19755        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19756        #[repr(i32)]
19757        pub enum LayerTreeFrameSinkState {
19758            LayerTreeFrameUnspecified = 0,
19759            LayerTreeFrameNone = 1,
19760            LayerTreeFrameActive = 2,
19761            LayerTreeFrameCreating = 3,
19762            LayerTreeFrameWaitingForFirstCommit = 4,
19763            LayerTreeFrameWaitingForFirstActivation = 5,
19764        }
19765        impl LayerTreeFrameSinkState {
19766            /// String value of the enum field names used in the ProtoBuf definition.
19767            ///
19768            /// The values are not transformed in any way and thus are considered stable
19769            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19770            pub fn as_str_name(&self) -> &'static str {
19771                match self {
19772                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
19773                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
19774                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
19775                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
19776                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
19777                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
19778                }
19779            }
19780        }
19781        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19782        #[repr(i32)]
19783        pub enum ForcedRedrawOnTimeoutState {
19784            ForcedRedrawUnspecified = 0,
19785            ForcedRedrawIdle = 1,
19786            ForcedRedrawWaitingForCommit = 2,
19787            ForcedRedrawWaitingForActivation = 3,
19788            ForcedRedrawWaitingForDraw = 4,
19789        }
19790        impl ForcedRedrawOnTimeoutState {
19791            /// String value of the enum field names used in the ProtoBuf definition.
19792            ///
19793            /// The values are not transformed in any way and thus are considered stable
19794            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19795            pub fn as_str_name(&self) -> &'static str {
19796                match self {
19797                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
19798                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
19799                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
19800                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
19801                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
19802                }
19803            }
19804        }
19805    }
19806    /// Next id: 47
19807    #[derive(Clone, PartialEq, ::prost::Message)]
19808    pub struct MinorState {
19809        #[prost(int32, optional, tag="1")]
19810        pub commit_count: ::core::option::Option<i32>,
19811        #[prost(int32, optional, tag="2")]
19812        pub current_frame_number: ::core::option::Option<i32>,
19813        #[prost(int32, optional, tag="3")]
19814        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
19815        #[prost(int32, optional, tag="4")]
19816        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
19817        #[prost(int32, optional, tag="5")]
19818        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
19819        #[prost(bool, optional, tag="6")]
19820        pub did_draw: ::core::option::Option<bool>,
19821        #[prost(bool, optional, tag="7")]
19822        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
19823        #[prost(bool, optional, tag="8")]
19824        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
19825        #[prost(bool, optional, tag="9")]
19826        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
19827        #[prost(bool, optional, tag="10")]
19828        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
19829        #[prost(bool, optional, tag="11")]
19830        pub did_commit_during_frame: ::core::option::Option<bool>,
19831        #[prost(bool, optional, tag="12")]
19832        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
19833        #[prost(bool, optional, tag="13")]
19834        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
19835        #[prost(bool, optional, tag="14")]
19836        pub did_prepare_tiles: ::core::option::Option<bool>,
19837        #[prost(int32, optional, tag="15")]
19838        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
19839        #[prost(int32, optional, tag="16")]
19840        pub pending_submit_frames: ::core::option::Option<i32>,
19841        #[prost(int32, optional, tag="17")]
19842        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
19843        #[prost(bool, optional, tag="18")]
19844        pub needs_redraw: ::core::option::Option<bool>,
19845        #[prost(bool, optional, tag="19")]
19846        pub needs_prepare_tiles: ::core::option::Option<bool>,
19847        #[prost(bool, optional, tag="20")]
19848        pub needs_begin_main_frame: ::core::option::Option<bool>,
19849        #[prost(bool, optional, tag="21")]
19850        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
19851        #[prost(bool, optional, tag="22")]
19852        pub visible: ::core::option::Option<bool>,
19853        #[prost(bool, optional, tag="23")]
19854        pub begin_frame_source_paused: ::core::option::Option<bool>,
19855        #[prost(bool, optional, tag="24")]
19856        pub can_draw: ::core::option::Option<bool>,
19857        #[prost(bool, optional, tag="25")]
19858        pub resourceless_draw: ::core::option::Option<bool>,
19859        #[prost(bool, optional, tag="26")]
19860        pub has_pending_tree: ::core::option::Option<bool>,
19861        #[prost(bool, optional, tag="27")]
19862        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
19863        #[prost(bool, optional, tag="28")]
19864        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
19865        #[prost(bool, optional, tag="29")]
19866        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
19867        #[prost(bool, optional, tag="30")]
19868        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
19869        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
19870        pub tree_priority: ::core::option::Option<i32>,
19871        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
19872        pub scroll_handler_state: ::core::option::Option<i32>,
19873        #[prost(bool, optional, tag="33")]
19874        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
19875        #[prost(bool, optional, tag="34")]
19876        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
19877        #[prost(bool, optional, tag="36")]
19878        pub video_needs_begin_frames: ::core::option::Option<bool>,
19879        #[prost(bool, optional, tag="37")]
19880        pub defer_begin_main_frame: ::core::option::Option<bool>,
19881        #[prost(bool, optional, tag="38")]
19882        pub last_commit_had_no_updates: ::core::option::Option<bool>,
19883        #[prost(bool, optional, tag="39")]
19884        pub did_draw_in_last_frame: ::core::option::Option<bool>,
19885        #[prost(bool, optional, tag="40")]
19886        pub did_submit_in_last_frame: ::core::option::Option<bool>,
19887        #[prost(bool, optional, tag="41")]
19888        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
19889        #[prost(bool, optional, tag="42")]
19890        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
19891        #[prost(bool, optional, tag="43")]
19892        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
19893        #[prost(bool, optional, tag="44")]
19894        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
19895        #[prost(bool, optional, tag="45")]
19896        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
19897        #[prost(bool, optional, tag="46")]
19898        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
19899    }
19900    /// Nested message and enum types in `MinorState`.
19901    pub mod minor_state {
19902        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19903        #[repr(i32)]
19904        pub enum TreePriority {
19905            Unspecified = 0,
19906            SamePriorityForBothTrees = 1,
19907            SmoothnessTakesPriority = 2,
19908            NewContentTakesPriority = 3,
19909        }
19910        impl TreePriority {
19911            /// String value of the enum field names used in the ProtoBuf definition.
19912            ///
19913            /// The values are not transformed in any way and thus are considered stable
19914            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19915            pub fn as_str_name(&self) -> &'static str {
19916                match self {
19917                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
19918                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
19919                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
19920                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
19921                }
19922            }
19923        }
19924        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19925        #[repr(i32)]
19926        pub enum ScrollHandlerState {
19927            ScrollHandlerUnspecified = 0,
19928            ScrollAffectsScrollHandler = 1,
19929            ScrollDoesNotAffectScrollHandler = 2,
19930        }
19931        impl ScrollHandlerState {
19932            /// String value of the enum field names used in the ProtoBuf definition.
19933            ///
19934            /// The values are not transformed in any way and thus are considered stable
19935            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19936            pub fn as_str_name(&self) -> &'static str {
19937                match self {
19938                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
19939                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
19940                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
19941                }
19942            }
19943        }
19944    }
19945}
19946/// Next id: 13
19947#[derive(Clone, PartialEq, ::prost::Message)]
19948pub struct BeginFrameArgs {
19949    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
19950    pub r#type: ::core::option::Option<i32>,
19951    #[prost(uint64, optional, tag="2")]
19952    pub source_id: ::core::option::Option<u64>,
19953    #[prost(uint64, optional, tag="3")]
19954    pub sequence_number: ::core::option::Option<u64>,
19955    #[prost(int64, optional, tag="4")]
19956    pub frame_time_us: ::core::option::Option<i64>,
19957    #[prost(int64, optional, tag="5")]
19958    pub deadline_us: ::core::option::Option<i64>,
19959    #[prost(int64, optional, tag="6")]
19960    pub interval_delta_us: ::core::option::Option<i64>,
19961    #[prost(bool, optional, tag="7")]
19962    pub on_critical_path: ::core::option::Option<bool>,
19963    #[prost(bool, optional, tag="8")]
19964    pub animate_only: ::core::option::Option<bool>,
19965    #[prost(int64, optional, tag="12")]
19966    pub frames_throttled_since_last: ::core::option::Option<i64>,
19967    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
19968    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
19969}
19970/// Nested message and enum types in `BeginFrameArgs`.
19971pub mod begin_frame_args {
19972    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
19973    /// drop this in the proto representation, and instead make the JSON format
19974    /// "subtype" field become the type field.
19975    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19976    #[repr(i32)]
19977    pub enum BeginFrameArgsType {
19978        Unspecified = 0,
19979        Invalid = 1,
19980        Normal = 2,
19981        Missed = 3,
19982    }
19983    impl BeginFrameArgsType {
19984        /// String value of the enum field names used in the ProtoBuf definition.
19985        ///
19986        /// The values are not transformed in any way and thus are considered stable
19987        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19988        pub fn as_str_name(&self) -> &'static str {
19989            match self {
19990                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
19991                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
19992                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
19993                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
19994            }
19995        }
19996    }
19997    #[derive(Clone, PartialEq, ::prost::Oneof)]
19998    pub enum CreatedFrom {
19999        /// The interned SourceLocation.
20000        #[prost(uint64, tag="9")]
20001        SourceLocationIid(u64),
20002        /// The SourceLocation that this args was created from.
20003        /// TODO(nuskos): Eventually we will support interning inside of
20004        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
20005        /// since we can emit it as part of the InternedData message. When we can
20006        /// remove this |source_location|.
20007        #[prost(message, tag="10")]
20008        SourceLocation(super::SourceLocation),
20009    }
20010}
20011/// Next id: 7
20012#[derive(Clone, PartialEq, ::prost::Message)]
20013pub struct BeginImplFrameArgs {
20014    #[prost(int64, optional, tag="1")]
20015    pub updated_at_us: ::core::option::Option<i64>,
20016    #[prost(int64, optional, tag="2")]
20017    pub finished_at_us: ::core::option::Option<i64>,
20018    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
20019    pub state: ::core::option::Option<i32>,
20020    #[prost(message, optional, tag="6")]
20021    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
20022    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
20023    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
20024}
20025/// Nested message and enum types in `BeginImplFrameArgs`.
20026pub mod begin_impl_frame_args {
20027    #[derive(Clone, PartialEq, ::prost::Message)]
20028    pub struct TimestampsInUs {
20029        #[prost(int64, optional, tag="1")]
20030        pub interval_delta: ::core::option::Option<i64>,
20031        #[prost(int64, optional, tag="2")]
20032        pub now_to_deadline_delta: ::core::option::Option<i64>,
20033        #[prost(int64, optional, tag="3")]
20034        pub frame_time_to_now_delta: ::core::option::Option<i64>,
20035        #[prost(int64, optional, tag="4")]
20036        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
20037        #[prost(int64, optional, tag="5")]
20038        pub now: ::core::option::Option<i64>,
20039        #[prost(int64, optional, tag="6")]
20040        pub frame_time: ::core::option::Option<i64>,
20041        #[prost(int64, optional, tag="7")]
20042        pub deadline: ::core::option::Option<i64>,
20043    }
20044    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20045    #[repr(i32)]
20046    pub enum State {
20047        BeginFrameFinished = 0,
20048        BeginFrameUsing = 1,
20049    }
20050    impl State {
20051        /// String value of the enum field names used in the ProtoBuf definition.
20052        ///
20053        /// The values are not transformed in any way and thus are considered stable
20054        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20055        pub fn as_str_name(&self) -> &'static str {
20056            match self {
20057                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
20058                State::BeginFrameUsing => "BEGIN_FRAME_USING",
20059            }
20060        }
20061    }
20062    #[derive(Clone, PartialEq, ::prost::Oneof)]
20063    pub enum Args {
20064        /// Only set if |state| is BEGIN_FRAME_FINISHED.
20065        #[prost(message, tag="4")]
20066        CurrentArgs(super::BeginFrameArgs),
20067        /// Only set if |state| is BEGIN_FRAME_USING.
20068        #[prost(message, tag="5")]
20069        LastArgs(super::BeginFrameArgs),
20070    }
20071}
20072#[derive(Clone, PartialEq, ::prost::Message)]
20073pub struct BeginFrameObserverState {
20074    #[prost(int64, optional, tag="1")]
20075    pub dropped_begin_frame_args: ::core::option::Option<i64>,
20076    #[prost(message, optional, tag="2")]
20077    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20078}
20079#[derive(Clone, PartialEq, ::prost::Message)]
20080pub struct BeginFrameSourceState {
20081    #[prost(uint32, optional, tag="1")]
20082    pub source_id: ::core::option::Option<u32>,
20083    #[prost(bool, optional, tag="2")]
20084    pub paused: ::core::option::Option<bool>,
20085    #[prost(uint32, optional, tag="3")]
20086    pub num_observers: ::core::option::Option<u32>,
20087    #[prost(message, optional, tag="4")]
20088    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20089}
20090#[derive(Clone, PartialEq, ::prost::Message)]
20091pub struct CompositorTimingHistory {
20092    #[prost(int64, optional, tag="1")]
20093    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
20094    #[prost(int64, optional, tag="2")]
20095    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
20096    #[prost(int64, optional, tag="3")]
20097    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
20098    #[prost(int64, optional, tag="4")]
20099    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
20100    #[prost(int64, optional, tag="5")]
20101    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
20102    #[prost(int64, optional, tag="6")]
20103    pub activate_estimate_delta_us: ::core::option::Option<i64>,
20104    #[prost(int64, optional, tag="7")]
20105    pub draw_estimate_delta_us: ::core::option::Option<i64>,
20106}
20107// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
20108
20109// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
20110
20111/// Details about ContentSettings trace events.
20112#[derive(Clone, PartialEq, ::prost::Message)]
20113pub struct ChromeContentSettingsEventInfo {
20114    /// The number of user defined hostname patterns for content settings at
20115    /// browser start. Similar to UMA histogram
20116    /// 'ContentSettings.NumberOfExceptions'.
20117    #[prost(uint32, optional, tag="1")]
20118    pub number_of_exceptions: ::core::option::Option<u32>,
20119}
20120// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20121
20122/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
20123/// in
20124/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20125/// instead.
20126#[derive(Clone, PartialEq, ::prost::Message)]
20127pub struct ChromeFrameReporter {
20128    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
20129    pub state: ::core::option::Option<i32>,
20130    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
20131    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
20132    pub reason: ::core::option::Option<i32>,
20133    #[prost(uint64, optional, tag="3")]
20134    pub frame_source: ::core::option::Option<u64>,
20135    #[prost(uint64, optional, tag="4")]
20136    pub frame_sequence: ::core::option::Option<u64>,
20137    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
20138    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
20139    /// smoothness.
20140    #[prost(bool, optional, tag="5")]
20141    pub affects_smoothness: ::core::option::Option<bool>,
20142    /// The type of active scroll.
20143    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
20144    pub scroll_state: ::core::option::Option<i32>,
20145    /// If any main thread animation is active during this frame.
20146    #[prost(bool, optional, tag="7")]
20147    pub has_main_animation: ::core::option::Option<bool>,
20148    /// If any compositor thread animation is active during this frame.
20149    #[prost(bool, optional, tag="8")]
20150    pub has_compositor_animation: ::core::option::Option<bool>,
20151    /// If any touch-driven UX (not scroll) is active during this frame.
20152    #[prost(bool, optional, tag="9")]
20153    pub has_smooth_input_main: ::core::option::Option<bool>,
20154    /// Whether the frame contained any missing content (i.e. whether there was
20155    /// checkerboarding in the frame).  If has_missing_content,
20156    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
20157    /// values, has_missing_content should equal checkerboarded_needs_raster ||
20158    /// checkerboarded_needs_record.
20159    #[prost(bool, optional, tag="10")]
20160    pub has_missing_content: ::core::option::Option<bool>,
20161    /// The id of layer_tree_host that the frame has been produced for.
20162    #[prost(uint64, optional, tag="11")]
20163    pub layer_tree_host_id: ::core::option::Option<u64>,
20164    /// If total latency of PipelineReporter exceeds a certain limit.
20165    #[prost(bool, optional, tag="12")]
20166    pub has_high_latency: ::core::option::Option<bool>,
20167    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
20168    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
20169    /// (i.e. dropped frames when there are no partial compositor updates).
20170    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
20171    pub frame_type: ::core::option::Option<i32>,
20172    /// The breakdown stage of PipelineReporter that is most likely accountable for
20173    /// high latency.
20174    #[prost(string, repeated, tag="14")]
20175    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20176    /// Whether the frame contained any content that is not fully rastered.
20177    #[prost(bool, optional, tag="15")]
20178    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
20179    /// Whether the frame contained any content that is not fully recorded.
20180    #[prost(bool, optional, tag="16")]
20181    pub checkerboarded_needs_record: ::core::option::Option<bool>,
20182    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
20183    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
20184    #[prost(int64, optional, tag="17")]
20185    pub surface_frame_trace_id: ::core::option::Option<i64>,
20186    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
20187    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
20188    #[prost(int64, optional, tag="18")]
20189    pub display_trace_id: ::core::option::Option<i64>,
20190}
20191/// Nested message and enum types in `ChromeFrameReporter`.
20192pub mod chrome_frame_reporter {
20193    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20194    #[repr(i32)]
20195    pub enum State {
20196        /// The frame did not have any updates to present.
20197        NoUpdateDesired = 0,
20198        /// The frame presented all the desired updates (i.e. any updates requested
20199        /// from both the compositor thread and main-threads were handled).
20200        PresentedAll = 1,
20201        /// The frame was presented with some updates, but also missed some updates
20202        /// (e.g. missed updates from the main-thread, but included updates from the
20203        /// compositor thread).
20204        PresentedPartial = 2,
20205        /// The frame was dropped, i.e. some updates were desired for the frame, but
20206        /// was not presented.
20207        Dropped = 3,
20208    }
20209    impl State {
20210        /// String value of the enum field names used in the ProtoBuf definition.
20211        ///
20212        /// The values are not transformed in any way and thus are considered stable
20213        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20214        pub fn as_str_name(&self) -> &'static str {
20215            match self {
20216                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
20217                State::PresentedAll => "STATE_PRESENTED_ALL",
20218                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
20219                State::Dropped => "STATE_DROPPED",
20220            }
20221        }
20222    }
20223    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20224    #[repr(i32)]
20225    pub enum FrameDropReason {
20226        ReasonUnspecified = 0,
20227        /// Frame was dropped by the display-compositor.
20228        /// The display-compositor may drop a frame some times (e.g. the frame missed
20229        /// the deadline, or was blocked on surface-sync, etc.)
20230        ReasonDisplayCompositor = 1,
20231        /// Frame was dropped because of the main-thread.
20232        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
20233        /// is running expensive javascript, or doing a lot of layout updates, etc.
20234        ReasonMainThread = 2,
20235        /// Frame was dropped by the client compositor.
20236        /// The client compositor can drop some frames too (e.g. attempting to
20237        /// recover latency, missing the deadline, etc.).
20238        ReasonClientCompositor = 3,
20239    }
20240    impl FrameDropReason {
20241        /// String value of the enum field names used in the ProtoBuf definition.
20242        ///
20243        /// The values are not transformed in any way and thus are considered stable
20244        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20245        pub fn as_str_name(&self) -> &'static str {
20246            match self {
20247                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
20248                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
20249                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
20250                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
20251            }
20252        }
20253    }
20254    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20255    #[repr(i32)]
20256    pub enum ScrollState {
20257        ScrollNone = 0,
20258        ScrollMainThread = 1,
20259        ScrollCompositorThread = 2,
20260        ScrollRaster = 3,
20261        /// Used when it can't be determined whether a scroll is in progress or not.
20262        ScrollUnknown = 4,
20263    }
20264    impl ScrollState {
20265        /// String value of the enum field names used in the ProtoBuf definition.
20266        ///
20267        /// The values are not transformed in any way and thus are considered stable
20268        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20269        pub fn as_str_name(&self) -> &'static str {
20270            match self {
20271                ScrollState::ScrollNone => "SCROLL_NONE",
20272                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
20273                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
20274                ScrollState::ScrollRaster => "SCROLL_RASTER",
20275                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
20276            }
20277        }
20278    }
20279    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20280    #[repr(i32)]
20281    pub enum FrameType {
20282        Forked = 0,
20283        Backfill = 1,
20284    }
20285    impl FrameType {
20286        /// String value of the enum field names used in the ProtoBuf definition.
20287        ///
20288        /// The values are not transformed in any way and thus are considered stable
20289        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20290        pub fn as_str_name(&self) -> &'static str {
20291            match self {
20292                FrameType::Forked => "FORKED",
20293                FrameType::Backfill => "BACKFILL",
20294            }
20295        }
20296    }
20297}
20298// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20299
20300// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20301
20302/// Details about one of Chrome's keyed services associated with the event.
20303#[derive(Clone, PartialEq, ::prost::Message)]
20304pub struct ChromeKeyedService {
20305    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
20306    /// Chrome, these are static strings known at compile time).
20307    #[prost(string, optional, tag="1")]
20308    pub name: ::core::option::Option<::prost::alloc::string::String>,
20309}
20310// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20311
20312// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
20313
20314#[derive(Clone, PartialEq, ::prost::Message)]
20315pub struct ChromeLatencyInfo {
20316    #[prost(int64, optional, tag="1")]
20317    pub trace_id: ::core::option::Option<i64>,
20318    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
20319    pub step: ::core::option::Option<i32>,
20320    #[prost(int32, optional, tag="3")]
20321    pub frame_tree_node_id: ::core::option::Option<i32>,
20322    #[prost(message, repeated, tag="4")]
20323    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
20324    #[prost(bool, optional, tag="5")]
20325    pub is_coalesced: ::core::option::Option<bool>,
20326    #[prost(int64, optional, tag="6")]
20327    pub gesture_scroll_id: ::core::option::Option<i64>,
20328    #[prost(int64, optional, tag="7")]
20329    pub touch_id: ::core::option::Option<i64>,
20330    /// The type of input corresponding to this `ChromeLatencyInfo`.
20331    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
20332    pub input_type: ::core::option::Option<i32>,
20333}
20334/// Nested message and enum types in `ChromeLatencyInfo`.
20335pub mod chrome_latency_info {
20336    #[derive(Clone, PartialEq, ::prost::Message)]
20337    pub struct ComponentInfo {
20338        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
20339        pub component_type: ::core::option::Option<i32>,
20340        /// Microsecond timestamp in CLOCK_MONOTONIC domain
20341        #[prost(uint64, optional, tag="2")]
20342        pub time_us: ::core::option::Option<u64>,
20343    }
20344    /// NEXT ID: 12
20345    /// All step are optional but the enum is ordered (not by number) below in the
20346    /// order we expect them to appear if they are emitted in trace in a blocking
20347    /// fashion.
20348    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20349    #[repr(i32)]
20350    pub enum Step {
20351        Unspecified = 0,
20352        /// Emitted on the browser main thread.
20353        SendInputEventUi = 3,
20354        /// Happens on the renderer's compositor.
20355        HandleInputEventImpl = 5,
20356        DidHandleInputAndOverscroll = 8,
20357        /// Occurs on the Renderer's main thread.
20358        HandleInputEventMain = 4,
20359        MainThreadScrollUpdate = 2,
20360        HandleInputEventMainCommit = 1,
20361        /// Could be emitted on both the renderer's main OR compositor.
20362        HandledInputEventMainOrImpl = 9,
20363        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
20364        /// renderer's compositor and this will be emitted.
20365        HandledInputEventImpl = 10,
20366        /// Renderer's compositor.
20367        SwapBuffers = 6,
20368        /// Happens on the VizCompositor in the GPU process.
20369        DrawAndSwap = 7,
20370        /// Happens on the GPU main thread after the swap has completed.
20371        ///
20372        /// See above for NEXT ID, enum steps are not ordered by tag number.
20373        FinishedSwapBuffers = 11,
20374    }
20375    impl Step {
20376        /// String value of the enum field names used in the ProtoBuf definition.
20377        ///
20378        /// The values are not transformed in any way and thus are considered stable
20379        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20380        pub fn as_str_name(&self) -> &'static str {
20381            match self {
20382                Step::Unspecified => "STEP_UNSPECIFIED",
20383                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
20384                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
20385                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
20386                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
20387                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
20388                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
20389                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
20390                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
20391                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
20392                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
20393                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
20394            }
20395        }
20396    }
20397    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
20398    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
20399    /// practices.
20400    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20401    #[repr(i32)]
20402    pub enum LatencyComponentType {
20403        ComponentUnspecified = 0,
20404        ComponentInputEventLatencyBeginRwh = 1,
20405        ComponentInputEventLatencyScrollUpdateOriginal = 2,
20406        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
20407        ComponentInputEventLatencyOriginal = 4,
20408        ComponentInputEventLatencyUi = 5,
20409        ComponentInputEventLatencyRendererMain = 6,
20410        ComponentInputEventLatencyRenderingScheduledMain = 7,
20411        ComponentInputEventLatencyRenderingScheduledImpl = 8,
20412        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
20413        ComponentInputEventLatencyAckRwh = 10,
20414        ComponentInputEventLatencyRendererSwap = 11,
20415        ComponentDisplayCompositorReceivedFrame = 12,
20416        ComponentInputEventGpuSwapBuffer = 13,
20417        ComponentInputEventLatencyFrameSwap = 14,
20418    }
20419    impl LatencyComponentType {
20420        /// String value of the enum field names used in the ProtoBuf definition.
20421        ///
20422        /// The values are not transformed in any way and thus are considered stable
20423        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20424        pub fn as_str_name(&self) -> &'static str {
20425            match self {
20426                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
20427                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
20428                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
20429                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
20430                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
20431                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
20432                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
20433                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
20434                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
20435                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
20436                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
20437                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
20438                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
20439                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
20440                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
20441            }
20442        }
20443    }
20444    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20445    #[repr(i32)]
20446    pub enum InputType {
20447        UnspecifiedOrOther = 0,
20448        TouchMoved = 1,
20449        GestureScrollBegin = 2,
20450        GestureScrollUpdate = 3,
20451        GestureScrollEnd = 4,
20452        GestureTap = 5,
20453        GestureTapCancel = 6,
20454    }
20455    impl InputType {
20456        /// String value of the enum field names used in the ProtoBuf definition.
20457        ///
20458        /// The values are not transformed in any way and thus are considered stable
20459        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20460        pub fn as_str_name(&self) -> &'static str {
20461            match self {
20462                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
20463                InputType::TouchMoved => "TOUCH_MOVED",
20464                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
20465                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
20466                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
20467                InputType::GestureTap => "GESTURE_TAP",
20468                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
20469            }
20470        }
20471    }
20472}
20473// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
20474
20475// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20476
20477/// Details about a legacy Chrome IPC message that is either sent by the event.
20478/// TODO(eseckler): Also use this message on the receiving side?
20479#[derive(Clone, PartialEq, ::prost::Message)]
20480pub struct ChromeLegacyIpc {
20481    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
20482    /// enum, e.g. FrameMsgStart,
20483    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
20484    pub message_class: ::core::option::Option<i32>,
20485    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
20486    /// IPC_MESSAGE_START macros.
20487    #[prost(uint32, optional, tag="2")]
20488    pub message_line: ::core::option::Option<u32>,
20489}
20490/// Nested message and enum types in `ChromeLegacyIpc`.
20491pub mod chrome_legacy_ipc {
20492    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20493    #[repr(i32)]
20494    pub enum MessageClass {
20495        ClassUnspecified = 0,
20496        ClassAutomation = 1,
20497        ClassFrame = 2,
20498        ClassPage = 3,
20499        ClassView = 4,
20500        ClassWidget = 5,
20501        ClassInput = 6,
20502        ClassTest = 7,
20503        ClassWorker = 8,
20504        ClassNacl = 9,
20505        ClassGpuChannel = 10,
20506        ClassMedia = 11,
20507        ClassPpapi = 12,
20508        ClassChrome = 13,
20509        ClassDrag = 14,
20510        ClassPrint = 15,
20511        ClassExtension = 16,
20512        ClassTextInputClient = 17,
20513        ClassBlinkTest = 18,
20514        ClassAccessibility = 19,
20515        ClassPrerender = 20,
20516        ClassChromoting = 21,
20517        ClassBrowserPlugin = 22,
20518        ClassAndroidWebView = 23,
20519        ClassNaclHost = 24,
20520        ClassEncryptedMedia = 25,
20521        ClassCast = 26,
20522        ClassGinJavaBridge = 27,
20523        ClassChromeUtilityPrinting = 28,
20524        ClassOzoneGpu = 29,
20525        ClassWebTest = 30,
20526        ClassNetworkHints = 31,
20527        ClassExtensionsGuestView = 32,
20528        ClassGuestView = 33,
20529        ClassMediaPlayerDelegate = 34,
20530        ClassExtensionWorker = 35,
20531        ClassSubresourceFilter = 36,
20532        ClassUnfreezableFrame = 37,
20533    }
20534    impl MessageClass {
20535        /// String value of the enum field names used in the ProtoBuf definition.
20536        ///
20537        /// The values are not transformed in any way and thus are considered stable
20538        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20539        pub fn as_str_name(&self) -> &'static str {
20540            match self {
20541                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
20542                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
20543                MessageClass::ClassFrame => "CLASS_FRAME",
20544                MessageClass::ClassPage => "CLASS_PAGE",
20545                MessageClass::ClassView => "CLASS_VIEW",
20546                MessageClass::ClassWidget => "CLASS_WIDGET",
20547                MessageClass::ClassInput => "CLASS_INPUT",
20548                MessageClass::ClassTest => "CLASS_TEST",
20549                MessageClass::ClassWorker => "CLASS_WORKER",
20550                MessageClass::ClassNacl => "CLASS_NACL",
20551                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
20552                MessageClass::ClassMedia => "CLASS_MEDIA",
20553                MessageClass::ClassPpapi => "CLASS_PPAPI",
20554                MessageClass::ClassChrome => "CLASS_CHROME",
20555                MessageClass::ClassDrag => "CLASS_DRAG",
20556                MessageClass::ClassPrint => "CLASS_PRINT",
20557                MessageClass::ClassExtension => "CLASS_EXTENSION",
20558                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
20559                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
20560                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
20561                MessageClass::ClassPrerender => "CLASS_PRERENDER",
20562                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
20563                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
20564                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
20565                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
20566                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
20567                MessageClass::ClassCast => "CLASS_CAST",
20568                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
20569                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
20570                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
20571                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
20572                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
20573                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
20574                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
20575                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
20576                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
20577                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
20578                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
20579            }
20580        }
20581    }
20582}
20583// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20584
20585// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
20586
20587/// Details about Chrome message pump events
20588#[derive(Clone, PartialEq, ::prost::Message)]
20589pub struct ChromeMessagePump {
20590    /// True if there are sent messages in the queue.
20591    #[prost(bool, optional, tag="1")]
20592    pub sent_messages_in_queue: ::core::option::Option<bool>,
20593    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
20594    /// invoke.
20595    #[prost(uint64, optional, tag="2")]
20596    pub io_handler_location_iid: ::core::option::Option<u64>,
20597}
20598// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
20599
20600// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
20601
20602/// Contains information to identify mojo handling events. The trace events in
20603/// mojo are common for all mojo interfaces and this information is used to
20604/// identify who is the caller or callee.
20605#[derive(Clone, PartialEq, ::prost::Message)]
20606pub struct ChromeMojoEventInfo {
20607    /// Contains the interface name or the file name of the creator of a mojo
20608    /// handle watcher, recorded when an event if notified to the watcher. The code
20609    /// that runs within the track event belongs to the interface.
20610    #[prost(string, optional, tag="1")]
20611    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20612    /// The hash of the IPC message that is being handled.
20613    #[prost(uint32, optional, tag="2")]
20614    pub ipc_hash: ::core::option::Option<u32>,
20615    /// A static string representing the mojo interface name of the message that is
20616    /// being handled.
20617    #[prost(string, optional, tag="3")]
20618    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20619    /// Refers to an interned UnsymbolizedSourceLocation.
20620    /// The UnsymbolizedSourceLocation contains the interface method that's being
20621    /// handled, represented as a native symbol.
20622    /// The native symbol can be symbolized after the trace is recorded.
20623    /// Not using a symbolized source location for official Chromium builds to
20624    /// reduce binary size - emitting file/function names as strings into the
20625    /// trace requires storing them in the binary, which causes a significant
20626    /// binary size bloat for Chromium.
20627    #[prost(uint64, optional, tag="4")]
20628    pub mojo_interface_method_iid: ::core::option::Option<u64>,
20629    /// Indicate whether this is a message or reply.
20630    #[prost(bool, optional, tag="5")]
20631    pub is_reply: ::core::option::Option<bool>,
20632    /// The payload size of the message being sent through mojo messages.
20633    #[prost(uint64, optional, tag="6")]
20634    pub payload_size: ::core::option::Option<u64>,
20635    /// Represents the size of the message. Includes all headers and user payload.
20636    #[prost(uint64, optional, tag="7")]
20637    pub data_num_bytes: ::core::option::Option<u64>,
20638}
20639#[derive(Clone, PartialEq, ::prost::Message)]
20640pub struct ChromeRendererSchedulerState {
20641    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
20642    pub rail_mode: ::core::option::Option<i32>,
20643    #[prost(bool, optional, tag="2")]
20644    pub is_backgrounded: ::core::option::Option<bool>,
20645    #[prost(bool, optional, tag="3")]
20646    pub is_hidden: ::core::option::Option<bool>,
20647}
20648// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
20649
20650// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
20651
20652/// Details about a UI interaction initiated by the user, such as opening or
20653/// closing a tab or a context menu.
20654#[derive(Clone, PartialEq, ::prost::Message)]
20655pub struct ChromeUserEvent {
20656    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
20657    /// Chrome, these are usually static strings known at compile time, or
20658    /// concatenations of multiple such static strings).
20659    #[prost(string, optional, tag="1")]
20660    pub action: ::core::option::Option<::prost::alloc::string::String>,
20661    /// MD5 hash of the action string.
20662    #[prost(uint64, optional, tag="2")]
20663    pub action_hash: ::core::option::Option<u64>,
20664}
20665// End of protos/perfetto/trace/track_event/chrome_user_event.proto
20666
20667// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20668
20669/// Details about HWNDMessageHandler trace events.
20670#[derive(Clone, PartialEq, ::prost::Message)]
20671pub struct ChromeWindowHandleEventInfo {
20672    #[prost(uint32, optional, tag="1")]
20673    pub dpi: ::core::option::Option<u32>,
20674    #[prost(uint32, optional, tag="2")]
20675    pub message_id: ::core::option::Option<u32>,
20676    #[prost(fixed64, optional, tag="3")]
20677    pub hwnd_ptr: ::core::option::Option<u64>,
20678}
20679// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20680
20681// Begin of protos/perfetto/trace/track_event/screenshot.proto
20682
20683#[derive(Clone, PartialEq, ::prost::Message)]
20684pub struct Screenshot {
20685    #[prost(bytes="vec", optional, tag="1")]
20686    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20687}
20688// End of protos/perfetto/trace/track_event/screenshot.proto
20689
20690// Begin of protos/perfetto/trace/track_event/task_execution.proto
20691
20692/// TrackEvent arguments describing the execution of a task.
20693#[derive(Clone, PartialEq, ::prost::Message)]
20694pub struct TaskExecution {
20695    /// Source location that the task was posted from.
20696    /// interned SourceLocation.
20697    #[prost(uint64, optional, tag="1")]
20698    pub posted_from_iid: ::core::option::Option<u64>,
20699}
20700// Begin of protos/perfetto/trace/track_event/track_event.proto
20701
20702// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
20703// protos are still subject to change. Don't depend on them staying as they are.
20704
20705/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
20706/// which describe activity on a track, such as a thread or asynchronous event
20707/// track. The track is specified using separate TrackDescriptor messages and
20708/// referred to via the track's UUID.
20709///
20710/// A simple TrackEvent packet specifies a timestamp, category, name and type:
20711/// ```protobuf
20712///    trace_packet {
20713///      timestamp: 1000
20714///      track_event {
20715///        categories: \["my_cat"\]
20716///        name: "my_event"
20717///        type: TYPE_INSTANT
20718///       }
20719///     }
20720/// ```
20721///
20722/// To associate an event with a custom track (e.g. a thread), the track is
20723/// defined in a separate packet and referred to from the TrackEvent by its UUID:
20724/// ```protobuf
20725///    trace_packet {
20726///      track_descriptor {
20727///        track_uuid: 1234
20728///        name: "my_track"
20729///
20730///        // Optionally, associate the track with a thread.
20731///        thread_descriptor {
20732///          pid: 10
20733///          tid: 10
20734///          ..
20735///        }
20736///      }
20737///    }
20738/// ```
20739///
20740/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
20741///
20742/// ```protobuf
20743///    trace_packet {
20744///      timestamp: 1200
20745///      track_event {
20746///        track_uuid: 1234
20747///        categories: \["my_cat"\]
20748///        name: "my_slice"
20749///        type: TYPE_SLICE_BEGIN
20750///      }
20751///    }
20752///    trace_packet {
20753///      timestamp: 1400
20754///      track_event {
20755///        track_uuid: 1234
20756///        type: TYPE_SLICE_END
20757///      }
20758///    }
20759/// ```
20760/// TrackEvents also support optimizations to reduce data repetition and encoded
20761/// data size, e.g. through data interning (names, categories, ...) and delta
20762/// encoding of timestamps/counters. For details, see the InternedData message.
20763/// Further, default values for attributes of events on the same sequence (e.g.
20764/// their default track association) can be emitted as part of a
20765/// TrackEventDefaults message.
20766///
20767/// Next reserved id: 13 (up to 15). Next id: 57.
20768#[derive(Clone, PartialEq, ::prost::Message)]
20769pub struct TrackEvent {
20770    /// Names of categories of the event. In the client library, categories are a
20771    /// way to turn groups of individual events on or off.
20772    /// interned EventCategoryName.
20773    #[prost(uint64, repeated, packed="false", tag="3")]
20774    pub category_iids: ::prost::alloc::vec::Vec<u64>,
20775    /// non-interned variant.
20776    #[prost(string, repeated, tag="22")]
20777    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20778    #[prost(enumeration="track_event::Type", optional, tag="9")]
20779    pub r#type: ::core::option::Option<i32>,
20780    /// Identifies the track of the event. The default value may be overridden
20781    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
20782    /// sequence (in most cases sequence = one thread). If no value is specified
20783    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
20784    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
20785    #[prost(uint64, optional, tag="11")]
20786    pub track_uuid: ::core::option::Option<u64>,
20787    /// To encode counter values more efficiently, we support attaching additional
20788    /// counter values to a TrackEvent of any type. All values will share the same
20789    /// timestamp specified in the TracePacket. The value at
20790    /// extra_counter_values\[N\] is for the counter track referenced by
20791    /// extra_counter_track_uuids\[N\].
20792    ///
20793    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
20794    /// should always be equal or more uuids than values. It is valid to set more
20795    /// uuids (e.g. via defaults) than values. If uuids are specified in
20796    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
20797    /// default uuid list.
20798    ///
20799    /// For example, this allows snapshotting the thread time clock at each
20800    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
20801    #[prost(uint64, repeated, packed="false", tag="31")]
20802    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20803    #[prost(int64, repeated, packed="false", tag="12")]
20804    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
20805    /// Counter snapshots using floating point instead of integer values.
20806    #[prost(uint64, repeated, packed="false", tag="45")]
20807    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20808    #[prost(double, repeated, packed="false", tag="46")]
20809    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
20810    /// IDs of flows originating, passing through, or ending at this event.
20811    /// Flow IDs are global within a trace.
20812    ///
20813    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
20814    /// an input event may be handled on one thread but cause another event on
20815    /// a different thread - a flow between the two events can associate them.
20816    ///
20817    /// The direction of the flows between events is inferred from the events'
20818    /// timestamps. The earliest event with the same flow ID becomes the source
20819    /// of the flow. Any events thereafter are intermediate steps of the flow,
20820    /// until the flow terminates at the last event with the flow ID.
20821    ///
20822    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
20823    /// that the same ID can later be reused for another flow.
20824    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
20825    #[deprecated]
20826    #[prost(uint64, repeated, packed="false", tag="36")]
20827    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20828    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
20829    /// consumption.
20830    #[prost(fixed64, repeated, packed="false", tag="47")]
20831    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
20832    /// List of flow ids which should terminate on this event, otherwise same as
20833    /// |flow_ids|.
20834    /// Any one flow ID should be either listed as part of |flow_ids| OR
20835    /// |terminating_flow_ids|, not both.
20836    /// DEPRECATED. Only kept for backwards compatibility.  Use
20837    /// |terminating_flow_ids|.
20838    #[deprecated]
20839    #[prost(uint64, repeated, packed="false", tag="42")]
20840    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20841    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
20842    /// "terminating_flow_ids" to reduce memory consumption.
20843    #[prost(fixed64, repeated, packed="false", tag="48")]
20844    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
20845    /// Debug annotations associated with this event. These are arbitrary key-value
20846    /// pairs that can be used to attach additional information to the event.
20847    /// See DebugAnnotation message for details on supported value types.
20848    ///
20849    /// For example, debug annotations can be used to attach a URL or resource
20850    /// identifier to a network request event. Arrays, dictionaries and full
20851    /// nested structures (e.g. arrays of dictionaries of dictionaries)
20852    /// are supported.
20853    #[prost(message, repeated, tag="4")]
20854    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
20855    // ---------------------------------------------------------------------------
20856    // TrackEvent arguments:
20857    // ---------------------------------------------------------------------------
20858    //
20859    // NOTE: The fields below this point are NOT part of the stable public API.
20860    // They are primarily intended for internal use by Chrome and Android. These
20861    // fields may change or be removed without notice. For custom/synthetic
20862    // traces, prefer using the fields above (name, categories, type, flows,
20863    // correlation_id, callstack, etc.) along with custom debug_annotations.
20864
20865    /// Typed event arguments:
20866    #[prost(message, optional, tag="5")]
20867    pub task_execution: ::core::option::Option<TaskExecution>,
20868    #[prost(message, optional, tag="21")]
20869    pub log_message: ::core::option::Option<LogMessage>,
20870    #[prost(message, optional, tag="24")]
20871    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
20872    #[prost(message, optional, tag="25")]
20873    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
20874    #[prost(message, optional, tag="26")]
20875    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
20876    #[prost(message, optional, tag="27")]
20877    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
20878    #[prost(message, optional, tag="28")]
20879    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
20880    #[prost(message, optional, tag="29")]
20881    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
20882    /// DEPRECATED. Only kept for backwards compatibility. Use the
20883    /// |ChromeTrackEvent.frame_reporter| extension in
20884    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20885    /// instead.
20886    #[deprecated]
20887    #[prost(message, optional, tag="32")]
20888    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
20889    #[prost(message, optional, tag="39")]
20890    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
20891    #[prost(message, optional, tag="40")]
20892    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
20893    #[prost(message, optional, tag="41")]
20894    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
20895    #[prost(message, optional, tag="43")]
20896    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
20897    #[prost(message, optional, tag="49")]
20898    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
20899    #[prost(message, optional, tag="50")]
20900    pub screenshot: ::core::option::Option<Screenshot>,
20901    #[prost(message, optional, tag="35")]
20902    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
20903    #[prost(message, optional, tag="38")]
20904    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
20905    #[prost(message, optional, tag="6")]
20906    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
20907    /// Optional name of the event for its display in trace viewer. May be left
20908    /// unspecified for events with typed arguments.
20909    ///
20910    /// Note that metrics should not rely on event names, as they are prone to
20911    /// changing. Instead, they should use typed arguments to identify the events
20912    /// they are interested in.
20913    #[prost(oneof="track_event::NameField", tags="10, 23")]
20914    pub name_field: ::core::option::Option<track_event::NameField>,
20915    /// A new value for a counter track. |track_uuid| should refer to a track with
20916    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20917    /// efficient encoding of counter values that are sampled at the beginning/end
20918    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20919    /// Counter values can optionally be encoded in as delta values (positive or
20920    /// negative) on each packet sequence (see CounterIncrementalBase).
20921    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
20922    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
20923    /// An opaque identifier to correlate this slice with other slices that are
20924    /// considered part of the same logical operation, even if they are not
20925    /// causally connected. Examples uses of a correlation id might be the number
20926    /// of frame going through various stages of rendering in a GPU, the id for an
20927    /// RPC request going through a distributed system, or the id of a network
20928    /// request going through various stages of processing by the kernel.
20929    ///
20930    /// NOTE: if the events *are* causually connected, you probably want to use
20931    /// flows instead of OR in addition to correlation ids.
20932    ///
20933    /// UIs can use this identifier to visually link these slices, for instance,
20934    /// by assigning them a consistent color or highlighting the entire correlated
20935    /// set when one slice is hovered.
20936    ///
20937    /// Only one field within this 'oneof' should be set to define the correlation.
20938    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
20939    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
20940    /// Callstack associated with this event. This captures the program stack at
20941    /// the time the event occurred, useful for understanding what code path led
20942    /// to the event.
20943    ///
20944    /// Two variants are supported:
20945    /// - callstack: Inline callstack data (simpler when trace size is not a
20946    ///    concern or callstacks are unique)
20947    /// - callstack_iid: Reference to an interned Callstack in InternedData
20948    ///    (efficient for repeated callstacks)
20949    ///
20950    /// Only one of these fields should be set.
20951    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
20952    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
20953    /// This field is used only if the source location represents the function that
20954    /// executes during this event.
20955    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
20956    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
20957    // ---------------------------------------------------------------------------
20958    // Deprecated / legacy event fields, which will be removed in the future:
20959    // ---------------------------------------------------------------------------
20960
20961    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20962    /// TracePacket instead.
20963    ///
20964    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20965    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
20966    pub timestamp: ::core::option::Option<track_event::Timestamp>,
20967    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20968    /// encode thread time instead.
20969    ///
20970    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20971    /// microseconds.
20972    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
20973    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
20974    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20975    /// encode thread instruction count instead.
20976    ///
20977    /// Value of the instruction counter for the current thread.
20978    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
20979    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
20980}
20981/// Nested message and enum types in `TrackEvent`.
20982pub mod track_event {
20983    /// Inline callstack for TrackEvents when interning is not needed.
20984    /// This is a simplified version of the profiling Callstack/Frame messages,
20985    /// designed for cases where trace size is not critical or callstacks are
20986    /// unique.
20987    ///
20988    /// Use this for simple callstacks with function names and source locations.
20989    /// For binary/library information (mappings, build IDs, relative PCs), use
20990    /// interned callstacks via callstack_iid instead.
20991    #[derive(Clone, PartialEq, ::prost::Message)]
20992    pub struct Callstack {
20993        /// Frames of this callstack, ordered from bottom (outermost) to top
20994        /// (innermost). For example, if main() calls foo() which calls bar(), the
20995        /// frames would be: [main, foo, bar]
20996        #[prost(message, repeated, tag="1")]
20997        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
20998    }
20999    /// Nested message and enum types in `Callstack`.
21000    pub mod callstack {
21001        /// Frame within an inline callstack.
21002        #[derive(Clone, PartialEq, ::prost::Message)]
21003        pub struct Frame {
21004            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
21005            #[prost(string, optional, tag="1")]
21006            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
21007            /// Optional: Source file path, e.g., "/src/foo.cc"
21008            #[prost(string, optional, tag="2")]
21009            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
21010            /// Optional: Line number in the source file
21011            #[prost(uint32, optional, tag="3")]
21012            pub line_number: ::core::option::Option<u32>,
21013        }
21014    }
21015    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
21016    /// event attributes are initially simply proxied for conversion to a JSON
21017    /// trace. We intend to gradually transition these attributes to similar native
21018    /// features in TrackEvent (e.g. async + flow events), or deprecate them
21019    /// without replacement where transition is unsuitable.
21020    ///
21021    /// Next reserved id: 16 (up to 16).
21022    /// Next id: 20.
21023    #[derive(Clone, PartialEq, ::prost::Message)]
21024    pub struct LegacyEvent {
21025        /// Deprecated, use TrackEvent::name(_iid) instead.
21026        /// interned EventName.
21027        #[prost(uint64, optional, tag="1")]
21028        pub name_iid: ::core::option::Option<u64>,
21029        #[prost(int32, optional, tag="2")]
21030        pub phase: ::core::option::Option<i32>,
21031        #[prost(int64, optional, tag="3")]
21032        pub duration_us: ::core::option::Option<i64>,
21033        #[prost(int64, optional, tag="4")]
21034        pub thread_duration_us: ::core::option::Option<i64>,
21035        /// Elapsed retired instruction count during the event.
21036        #[prost(int64, optional, tag="15")]
21037        pub thread_instruction_delta: ::core::option::Option<i64>,
21038        /// Additional optional scope for |id|.
21039        #[prost(string, optional, tag="7")]
21040        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
21041        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
21042        #[prost(bool, optional, tag="9")]
21043        pub use_async_tts: ::core::option::Option<bool>,
21044        /// Idenfifies a flow. Flow events with the same bind_id are connected.
21045        #[prost(uint64, optional, tag="8")]
21046        pub bind_id: ::core::option::Option<u64>,
21047        /// Use the enclosing slice as binding point for a flow end event instead of
21048        /// the next slice. Flow start/step events always bind to the enclosing
21049        /// slice.
21050        #[prost(bool, optional, tag="12")]
21051        pub bind_to_enclosing: ::core::option::Option<bool>,
21052        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
21053        pub flow_direction: ::core::option::Option<i32>,
21054        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
21055        pub instant_event_scope: ::core::option::Option<i32>,
21056        /// Override the pid/tid if the writer needs to emit events on behalf of
21057        /// another process/thread. This should be the exception. Normally, the
21058        /// pid+tid from ThreadDescriptor is used.
21059        #[prost(int32, optional, tag="18")]
21060        pub pid_override: ::core::option::Option<i32>,
21061        #[prost(int32, optional, tag="19")]
21062        pub tid_override: ::core::option::Option<i32>,
21063        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
21064        pub id: ::core::option::Option<legacy_event::Id>,
21065    }
21066    /// Nested message and enum types in `LegacyEvent`.
21067    pub mod legacy_event {
21068        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21069        #[repr(i32)]
21070        pub enum FlowDirection {
21071            FlowUnspecified = 0,
21072            FlowIn = 1,
21073            FlowOut = 2,
21074            FlowInout = 3,
21075        }
21076        impl FlowDirection {
21077            /// String value of the enum field names used in the ProtoBuf definition.
21078            ///
21079            /// The values are not transformed in any way and thus are considered stable
21080            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21081            pub fn as_str_name(&self) -> &'static str {
21082                match self {
21083                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
21084                    FlowDirection::FlowIn => "FLOW_IN",
21085                    FlowDirection::FlowOut => "FLOW_OUT",
21086                    FlowDirection::FlowInout => "FLOW_INOUT",
21087                }
21088            }
21089        }
21090        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21091        #[repr(i32)]
21092        pub enum InstantEventScope {
21093            ScopeUnspecified = 0,
21094            ScopeGlobal = 1,
21095            ScopeProcess = 2,
21096            ScopeThread = 3,
21097        }
21098        impl InstantEventScope {
21099            /// String value of the enum field names used in the ProtoBuf definition.
21100            ///
21101            /// The values are not transformed in any way and thus are considered stable
21102            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21103            pub fn as_str_name(&self) -> &'static str {
21104                match self {
21105                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
21106                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
21107                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
21108                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
21109                }
21110            }
21111        }
21112        #[derive(Clone, PartialEq, ::prost::Oneof)]
21113        pub enum Id {
21114            #[prost(uint64, tag="6")]
21115            UnscopedId(u64),
21116            #[prost(uint64, tag="10")]
21117            LocalId(u64),
21118            #[prost(uint64, tag="11")]
21119            GlobalId(u64),
21120        }
21121    }
21122    // TODO(eseckler): Support using binary symbols for category/event names.
21123
21124    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
21125    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21126    #[repr(i32)]
21127    pub enum Type {
21128        Unspecified = 0,
21129        /// Slice events are events that have a begin and end timestamp, i.e. a
21130        /// duration. They can be nested similar to a callstack: If, on the same
21131        /// track, event B begins after event A, but before A ends, B is a child
21132        /// event of A and will be drawn as a nested event underneath A in the UI.
21133        /// Note that child events should always end before their parents (e.g. B
21134        /// before A).
21135        ///
21136        /// Each slice event is formed by a pair of BEGIN + END events. The END event
21137        /// does not need to repeat any TrackEvent fields it has in common with its
21138        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
21139        /// END pair will be merged during trace import.
21140        ///
21141        /// Note that we deliberately chose not to support COMPLETE events (which
21142        /// would specify a duration directly) since clients would need to delay
21143        /// writing them until the slice is completed, which can result in reordered
21144        /// events in the trace and loss of unfinished events at the end of a trace.
21145        SliceBegin = 1,
21146        SliceEnd = 2,
21147        /// Instant events are nestable events without duration. They can be children
21148        /// of slice events on the same track.
21149        Instant = 3,
21150        /// Event that provides a value for a counter track. |track_uuid| should
21151        /// refer to a counter track and |counter_value| set to the new value. Note
21152        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
21153        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
21154        Counter = 4,
21155    }
21156    impl Type {
21157        /// String value of the enum field names used in the ProtoBuf definition.
21158        ///
21159        /// The values are not transformed in any way and thus are considered stable
21160        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21161        pub fn as_str_name(&self) -> &'static str {
21162            match self {
21163                Type::Unspecified => "TYPE_UNSPECIFIED",
21164                Type::SliceBegin => "TYPE_SLICE_BEGIN",
21165                Type::SliceEnd => "TYPE_SLICE_END",
21166                Type::Instant => "TYPE_INSTANT",
21167                Type::Counter => "TYPE_COUNTER",
21168            }
21169        }
21170    }
21171    /// Optional name of the event for its display in trace viewer. May be left
21172    /// unspecified for events with typed arguments.
21173    ///
21174    /// Note that metrics should not rely on event names, as they are prone to
21175    /// changing. Instead, they should use typed arguments to identify the events
21176    /// they are interested in.
21177    #[derive(Clone, PartialEq, ::prost::Oneof)]
21178    pub enum NameField {
21179        /// interned EventName.
21180        #[prost(uint64, tag="10")]
21181        NameIid(u64),
21182        /// non-interned variant.
21183        #[prost(string, tag="23")]
21184        Name(::prost::alloc::string::String),
21185    }
21186    /// A new value for a counter track. |track_uuid| should refer to a track with
21187    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
21188    /// efficient encoding of counter values that are sampled at the beginning/end
21189    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
21190    /// Counter values can optionally be encoded in as delta values (positive or
21191    /// negative) on each packet sequence (see CounterIncrementalBase).
21192    #[derive(Clone, PartialEq, ::prost::Oneof)]
21193    pub enum CounterValueField {
21194        #[prost(int64, tag="30")]
21195        CounterValue(i64),
21196        #[prost(double, tag="44")]
21197        DoubleCounterValue(f64),
21198    }
21199    /// An opaque identifier to correlate this slice with other slices that are
21200    /// considered part of the same logical operation, even if they are not
21201    /// causally connected. Examples uses of a correlation id might be the number
21202    /// of frame going through various stages of rendering in a GPU, the id for an
21203    /// RPC request going through a distributed system, or the id of a network
21204    /// request going through various stages of processing by the kernel.
21205    ///
21206    /// NOTE: if the events *are* causually connected, you probably want to use
21207    /// flows instead of OR in addition to correlation ids.
21208    ///
21209    /// UIs can use this identifier to visually link these slices, for instance,
21210    /// by assigning them a consistent color or highlighting the entire correlated
21211    /// set when one slice is hovered.
21212    ///
21213    /// Only one field within this 'oneof' should be set to define the correlation.
21214    #[derive(Clone, PartialEq, ::prost::Oneof)]
21215    pub enum CorrelationIdField {
21216        /// A 64-bit unsigned integer used as the correlation ID.
21217        ///
21218        /// Best for performance and compact traces if the identifier is naturally
21219        /// numerical or can be easily mapped to one by the trace producer.
21220        #[prost(uint64, tag="52")]
21221        CorrelationId(u64),
21222        /// A string value used as the correlation ID.
21223        ///
21224        /// Offers maximum flexibility for human-readable or complex identifiers
21225        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
21226        /// size. For frequently repeated string identifiers, consider
21227        /// 'correlation_id_string_iid'.
21228        #[prost(string, tag="53")]
21229        CorrelationIdStr(::prost::alloc::string::String),
21230        /// An interned string identifier (an IID) for correlation.
21231        ///
21232        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
21233        /// field within the packet sequence's InternedData. This approach combines
21234        /// the descriptiveness and uniqueness of strings with the efficiency of
21235        /// integer IDs for storage and comparison, especially for identifiers that
21236        /// repeat across many events.
21237        #[prost(uint64, tag="54")]
21238        CorrelationIdStrIid(u64),
21239    }
21240    /// Callstack associated with this event. This captures the program stack at
21241    /// the time the event occurred, useful for understanding what code path led
21242    /// to the event.
21243    ///
21244    /// Two variants are supported:
21245    /// - callstack: Inline callstack data (simpler when trace size is not a
21246    ///    concern or callstacks are unique)
21247    /// - callstack_iid: Reference to an interned Callstack in InternedData
21248    ///    (efficient for repeated callstacks)
21249    ///
21250    /// Only one of these fields should be set.
21251    #[derive(Clone, PartialEq, ::prost::Oneof)]
21252    pub enum CallstackField {
21253        /// Inline callstack data. Use this for simplicity when interning is not
21254        /// needed (e.g., for unique callstacks or when trace size is not critical).
21255        #[prost(message, tag="55")]
21256        Callstack(Callstack),
21257        /// Reference to interned Callstack (see InternedData.callstacks).
21258        /// This is the efficient option when callstacks are repeated.
21259        ///
21260        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
21261        #[prost(uint64, tag="56")]
21262        CallstackIid(u64),
21263    }
21264    /// This field is used only if the source location represents the function that
21265    /// executes during this event.
21266    #[derive(Clone, PartialEq, ::prost::Oneof)]
21267    pub enum SourceLocationField {
21268        /// Non-interned field.
21269        #[prost(message, tag="33")]
21270        SourceLocation(super::SourceLocation),
21271        /// Interned field.
21272        #[prost(uint64, tag="34")]
21273        SourceLocationIid(u64),
21274    }
21275    // ---------------------------------------------------------------------------
21276    // Deprecated / legacy event fields, which will be removed in the future:
21277    // ---------------------------------------------------------------------------
21278
21279    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
21280    /// TracePacket instead.
21281    ///
21282    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
21283    #[derive(Clone, PartialEq, ::prost::Oneof)]
21284    pub enum Timestamp {
21285        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21286        /// calculate the absolute timestamp value, sum up all delta values of the
21287        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21288        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21289        /// be positive.
21290        #[prost(int64, tag="1")]
21291        TimestampDeltaUs(i64),
21292        /// Absolute value (e.g. a manually specified timestamp in the macro).
21293        /// This is a one-off value that does not affect delta timestamp computation
21294        /// in subsequent TrackEvents.
21295        #[prost(int64, tag="16")]
21296        TimestampAbsoluteUs(i64),
21297    }
21298    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21299    /// encode thread time instead.
21300    ///
21301    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
21302    /// microseconds.
21303    #[derive(Clone, PartialEq, ::prost::Oneof)]
21304    pub enum ThreadTime {
21305        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21306        /// calculate the absolute timestamp value, sum up all delta values of the
21307        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21308        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21309        /// be positive.
21310        #[prost(int64, tag="2")]
21311        ThreadTimeDeltaUs(i64),
21312        /// This is a one-off absolute value that does not affect delta timestamp
21313        /// computation in subsequent TrackEvents.
21314        #[prost(int64, tag="17")]
21315        ThreadTimeAbsoluteUs(i64),
21316    }
21317    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21318    /// encode thread instruction count instead.
21319    ///
21320    /// Value of the instruction counter for the current thread.
21321    #[derive(Clone, PartialEq, ::prost::Oneof)]
21322    pub enum ThreadInstructionCount {
21323        /// Same encoding as |thread_time| field above.
21324        #[prost(int64, tag="8")]
21325        ThreadInstructionCountDelta(i64),
21326        #[prost(int64, tag="20")]
21327        ThreadInstructionCountAbsolute(i64),
21328    }
21329}
21330/// Default values for fields of all TrackEvents on the same packet sequence.
21331/// Should be emitted as part of TracePacketDefaults whenever incremental state
21332/// is cleared. It's defined here because field IDs should match those of the
21333/// corresponding fields in TrackEvent.
21334#[derive(Clone, PartialEq, ::prost::Message)]
21335pub struct TrackEventDefaults {
21336    #[prost(uint64, optional, tag="11")]
21337    pub track_uuid: ::core::option::Option<u64>,
21338    #[prost(uint64, repeated, packed="false", tag="31")]
21339    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21340    #[prost(uint64, repeated, packed="false", tag="45")]
21341    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21342}
21343// --------------------
21344// Interned data types:
21345// --------------------
21346
21347#[derive(Clone, PartialEq, ::prost::Message)]
21348pub struct EventCategory {
21349    #[prost(uint64, optional, tag="1")]
21350    pub iid: ::core::option::Option<u64>,
21351    #[prost(string, optional, tag="2")]
21352    pub name: ::core::option::Option<::prost::alloc::string::String>,
21353}
21354#[derive(Clone, PartialEq, ::prost::Message)]
21355pub struct EventName {
21356    #[prost(uint64, optional, tag="1")]
21357    pub iid: ::core::option::Option<u64>,
21358    #[prost(string, optional, tag="2")]
21359    pub name: ::core::option::Option<::prost::alloc::string::String>,
21360}
21361// End of protos/perfetto/trace/track_event/track_event.proto
21362
21363// Begin of protos/perfetto/trace/interned_data/interned_data.proto
21364
21365// ------------------------------ DATA INTERNING: ------------------------------
21366// Interning indexes are built up gradually by adding the entries contained in
21367// each TracePacket of the same packet sequence (packets emitted by the same
21368// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
21369// can only refer to interned data from other packets in the same sequence.
21370//
21371// The writer will emit new entries when it encounters new internable values
21372// that aren't yet in the index. Data in current and subsequent TracePackets can
21373// then refer to the entry by its position (interning ID, abbreviated "iid") in
21374// its index. An interning ID with value 0 is considered invalid (not set).
21375//
21376// Because of the incremental build-up, the interning index will miss data when
21377// TracePackets are lost, e.g. because a chunk was overridden in the central
21378// ring buffer. To avoid invalidation of the whole trace in such a case, the
21379// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
21380// When packet loss occurs, the reader will only lose interning data up to the
21381// next reset.
21382// -----------------------------------------------------------------------------
21383
21384/// Message that contains new entries for the interning indices of a packet
21385/// sequence.
21386///
21387/// The writer will usually emit new entries in the same TracePacket that first
21388/// refers to them (since the last reset of interning state). They may also be
21389/// emitted proactively in advance of referring to them in later packets.
21390///
21391/// Next reserved id: 8 (up to 15).
21392/// Next id: 45.
21393///
21394/// TODO(eseckler): Replace iid fields inside interned messages with
21395/// map<iid, message> type fields in InternedData.
21396#[derive(Clone, PartialEq, ::prost::Message)]
21397pub struct InternedData {
21398    /// Each field's message type needs to specify an |iid| field, which is the ID
21399    /// of the entry in the field's interning index. Each field constructs its own
21400    /// index, thus interning IDs are scoped to the tracing session and field
21401    /// (usually as a counter for efficient var-int encoding), and optionally to
21402    /// the incremental state generation of the packet sequence.
21403    #[prost(message, repeated, tag="1")]
21404    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
21405    #[prost(message, repeated, tag="2")]
21406    pub event_names: ::prost::alloc::vec::Vec<EventName>,
21407    #[prost(message, repeated, tag="3")]
21408    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
21409    #[prost(message, repeated, tag="27")]
21410    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
21411    #[prost(message, repeated, tag="4")]
21412    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
21413    #[prost(message, repeated, tag="28")]
21414    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
21415    #[prost(message, repeated, tag="20")]
21416    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
21417    #[prost(message, repeated, tag="25")]
21418    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
21419    // Note: field IDs up to 15 should be used for frequent data only.
21420
21421    /// Build IDs of exectuable files.
21422    #[prost(message, repeated, tag="16")]
21423    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
21424    /// Paths to executable files.
21425    #[prost(message, repeated, tag="17")]
21426    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
21427    /// Paths to source files.
21428    #[prost(message, repeated, tag="18")]
21429    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
21430    /// Names of functions used in frames below.
21431    #[prost(message, repeated, tag="5")]
21432    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
21433    /// Executable files mapped into processes.
21434    #[prost(message, repeated, tag="19")]
21435    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21436    /// Frames of callstacks of a program.
21437    #[prost(message, repeated, tag="6")]
21438    pub frames: ::prost::alloc::vec::Vec<Frame>,
21439    /// A callstack of a program.
21440    #[prost(message, repeated, tag="7")]
21441    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21442    /// Additional Vulkan information sent in a VulkanMemoryEvent message
21443    #[prost(message, repeated, tag="22")]
21444    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
21445    /// Graphics context of a render stage event.  This represent the GL
21446    /// context for an OpenGl app or the VkDevice for a Vulkan app.
21447    #[prost(message, repeated, tag="23")]
21448    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
21449    /// Description of a GPU hardware queue or render stage.
21450    #[prost(message, repeated, tag="24")]
21451    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
21452    /// This is set when FtraceConfig.symbolize_ksyms = true.
21453    /// The id of each symbol the number that will be reported in ftrace events
21454    /// like sched_block_reason.caller and is obtained from a monotonic counter.
21455    /// The same symbol can have different indexes in different bundles.
21456    /// This is is NOT the real address. This is to avoid disclosing KASLR through
21457    /// traces.
21458    #[prost(message, repeated, tag="26")]
21459    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
21460    /// Interned string values in the DebugAnnotation proto.
21461    #[prost(message, repeated, tag="29")]
21462    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
21463    /// Interned packet context for android.network_packets.
21464    #[prost(message, repeated, tag="30")]
21465    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
21466    /// Interned name of a js function. We only intern js functions as there is a
21467    /// lot of duplication for them, but less so for other strings in the V8 data
21468    /// source.
21469    #[prost(message, repeated, tag="31")]
21470    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
21471    /// Js functions can be emitted multiple times for various compilation tiers,
21472    /// so it makes sense to deduplicate all this.
21473    #[prost(message, repeated, tag="32")]
21474    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
21475    /// Interned JS script (there is one associated with each JS function)
21476    #[prost(message, repeated, tag="33")]
21477    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
21478    /// Interned Wasm script (there is one associated with each Wasm function)
21479    #[prost(message, repeated, tag="34")]
21480    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
21481    /// Every V8 event is associated with an isolate, intern the isolate to remove
21482    /// duplication.
21483    #[prost(message, repeated, tag="35")]
21484    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
21485    /// Interned protolog strings args.
21486    #[prost(message, repeated, tag="36")]
21487    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
21488    /// Interned protolog stacktraces.
21489    #[prost(message, repeated, tag="37")]
21490    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
21491    /// viewcapture
21492    #[prost(message, repeated, tag="38")]
21493    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
21494    #[prost(message, repeated, tag="39")]
21495    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
21496    #[prost(message, repeated, tag="40")]
21497    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
21498    #[prost(message, repeated, tag="41")]
21499    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
21500    #[prost(message, repeated, tag="45")]
21501    pub viewcapture_content_description: ::prost::alloc::vec::Vec<InternedString>,
21502    #[prost(message, repeated, tag="46")]
21503    pub viewcapture_text: ::prost::alloc::vec::Vec<InternedString>,
21504    /// Interned context for android.app_wakelocks.
21505    #[prost(message, repeated, tag="42")]
21506    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
21507    /// Interned correlation ids in track_event.
21508    #[prost(message, repeated, tag="43")]
21509    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
21510    /// Interned job names for Android Job Names. These are separate from
21511    /// other strings because they are under app control.
21512    #[prost(message, repeated, tag="44")]
21513    pub android_job_name: ::prost::alloc::vec::Vec<AndroidJobName>,
21514}
21515#[derive(Clone, PartialEq, ::prost::Message)]
21516pub struct AndroidJobName {
21517    #[prost(uint64, optional, tag="1")]
21518    pub iid: ::core::option::Option<u64>,
21519    #[prost(string, optional, tag="2")]
21520    pub name: ::core::option::Option<::prost::alloc::string::String>,
21521}
21522// End of protos/perfetto/trace/interned_data/interned_data.proto
21523
21524// Begin of protos/perfetto/trace/memory_graph.proto
21525
21526// Message definitions for app-reported memory breakdowns. At the moment, this
21527// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
21528// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
21529// This is unrelated to the native or java heap profilers (those protos live
21530// in //protos/perfetto/trace/profiling/).
21531
21532#[derive(Clone, PartialEq, ::prost::Message)]
21533pub struct MemoryTrackerSnapshot {
21534    /// Unique ID that represents the global memory dump.
21535    #[prost(uint64, optional, tag="1")]
21536    pub global_dump_id: ::core::option::Option<u64>,
21537    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
21538    pub level_of_detail: ::core::option::Option<i32>,
21539    #[prost(message, repeated, tag="3")]
21540    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
21541}
21542/// Nested message and enum types in `MemoryTrackerSnapshot`.
21543pub mod memory_tracker_snapshot {
21544    /// Memory snapshot of a process. The snapshot contains memory data that is
21545    /// from 2 different sources, namely system stats and instrumentation stats.
21546    /// The system memory usage stats come from the OS based on standard API
21547    /// available in the platform to query memory usage. The instrumentation stats
21548    /// are added by instrumenting specific piece of code which tracks memory
21549    /// allocations and deallocations made by a small sub-system within the
21550    /// application.
21551    /// The system stats of the global memory snapshot are recorded as part of
21552    /// ProcessStats and SmapsPacket fields in trace packet with the same
21553    /// timestamp.
21554    #[derive(Clone, PartialEq, ::prost::Message)]
21555    pub struct ProcessSnapshot {
21556        /// Process ID of the process
21557        #[prost(int32, optional, tag="1")]
21558        pub pid: ::core::option::Option<i32>,
21559        #[prost(message, repeated, tag="2")]
21560        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
21561        #[prost(message, repeated, tag="3")]
21562        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
21563    }
21564    /// Nested message and enum types in `ProcessSnapshot`.
21565    pub mod process_snapshot {
21566        // Memory dumps are represented as a graph of memory nodes which contain
21567        // statistics. To avoid double counting the same memory across different
21568        // nodes, edges are used to mark nodes that account for the same memory. See
21569        // this doc for examples of the usage:
21570        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
21571
21572        /// A single node in the memory graph.
21573        #[derive(Clone, PartialEq, ::prost::Message)]
21574        pub struct MemoryNode {
21575            /// Unique ID of the node across all processes involved in the global
21576            /// memory dump. The ID is only unique within this particular global dump
21577            /// identified by GlobalMemoryDumpPacket.global_dump_id.
21578            #[prost(uint64, optional, tag="1")]
21579            pub id: ::core::option::Option<u64>,
21580            /// Absolute name is a unique name for the memory node within the process
21581            /// with ProcessMemoryDump.pid. The name can contain multiple parts
21582            /// separated by '/', which traces the edges of the node from the root
21583            /// node.
21584            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
21585            /// node "buffer1" in a graph structure of:
21586            ///    root -> partition_allocator -> array_buffers -> buffer1.
21587            #[prost(string, optional, tag="2")]
21588            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
21589            /// A weak node means that the instrumentation that added the current node
21590            /// is unsure about the existence of the actual memory. Unless a "strong"
21591            /// (non-weak is default) node that has an edge to the current node exists
21592            /// in the current global dump, the current node will be discarded.
21593            #[prost(bool, optional, tag="3")]
21594            pub weak: ::core::option::Option<bool>,
21595            /// Size of the node in bytes, used to compute the effective size of the
21596            /// nodes without double counting.
21597            #[prost(uint64, optional, tag="4")]
21598            pub size_bytes: ::core::option::Option<u64>,
21599            #[prost(message, repeated, tag="5")]
21600            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
21601        }
21602        /// Nested message and enum types in `MemoryNode`.
21603        pub mod memory_node {
21604            /// Entries in the memory node that contain statistics and additional
21605            /// debuggable information about the memory. The size of the node is
21606            /// tracked separately in the |size_bytes| field.
21607            #[derive(Clone, PartialEq, ::prost::Message)]
21608            pub struct MemoryNodeEntry {
21609                #[prost(string, optional, tag="1")]
21610                pub name: ::core::option::Option<::prost::alloc::string::String>,
21611                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
21612                pub units: ::core::option::Option<i32>,
21613                /// Contains either one of uint64 or string value.
21614                #[prost(uint64, optional, tag="3")]
21615                pub value_uint64: ::core::option::Option<u64>,
21616                #[prost(string, optional, tag="4")]
21617                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
21618            }
21619            /// Nested message and enum types in `MemoryNodeEntry`.
21620            pub mod memory_node_entry {
21621                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21622                #[repr(i32)]
21623                pub enum Units {
21624                    Unspecified = 0,
21625                    Bytes = 1,
21626                    Count = 2,
21627                }
21628                impl Units {
21629                    /// String value of the enum field names used in the ProtoBuf definition.
21630                    ///
21631                    /// The values are not transformed in any way and thus are considered stable
21632                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21633                    pub fn as_str_name(&self) -> &'static str {
21634                        match self {
21635                            Units::Unspecified => "UNSPECIFIED",
21636                            Units::Bytes => "BYTES",
21637                            Units::Count => "COUNT",
21638                        }
21639                    }
21640                }
21641            }
21642        }
21643        /// A directed edge that connects any 2 nodes in the graph above. These are
21644        /// in addition to the inherent edges added due to the tree structure of the
21645        /// node's absolute names.
21646        /// Node with id |source_id| owns the node with id |target_id|, and has the
21647        /// effect of attributing the memory usage of target to source. |importance|
21648        /// is optional and relevant only for the cases of co-ownership, where it
21649        /// acts as a z-index: the owner with the highest importance will be
21650        /// attributed target's memory.
21651        #[derive(Clone, PartialEq, ::prost::Message)]
21652        pub struct MemoryEdge {
21653            #[prost(uint64, optional, tag="1")]
21654            pub source_id: ::core::option::Option<u64>,
21655            #[prost(uint64, optional, tag="2")]
21656            pub target_id: ::core::option::Option<u64>,
21657            #[prost(uint32, optional, tag="3")]
21658            pub importance: ::core::option::Option<u32>,
21659            #[prost(bool, optional, tag="4")]
21660            pub overridable: ::core::option::Option<bool>,
21661        }
21662    }
21663    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21664    #[repr(i32)]
21665    pub enum LevelOfDetail {
21666        DetailFull = 0,
21667        DetailLight = 1,
21668        DetailBackground = 2,
21669    }
21670    impl LevelOfDetail {
21671        /// String value of the enum field names used in the ProtoBuf definition.
21672        ///
21673        /// The values are not transformed in any way and thus are considered stable
21674        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21675        pub fn as_str_name(&self) -> &'static str {
21676            match self {
21677                LevelOfDetail::DetailFull => "DETAIL_FULL",
21678                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
21679                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
21680            }
21681        }
21682    }
21683}
21684// End of protos/perfetto/trace/memory_graph.proto
21685
21686// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21687
21688/// Used to trace the execution of perfetto itself.
21689#[derive(Clone, PartialEq, ::prost::Message)]
21690pub struct PerfettoMetatrace {
21691    /// Only when using |event_id|.
21692    #[prost(uint64, optional, tag="3")]
21693    pub event_duration_ns: ::core::option::Option<u64>,
21694    /// Only when using |counter_id|.
21695    #[prost(int32, optional, tag="4")]
21696    pub counter_value: ::core::option::Option<i32>,
21697    /// ID of the thread that emitted the event.
21698    #[prost(uint32, optional, tag="5")]
21699    pub thread_id: ::core::option::Option<u32>,
21700    /// If true the meta-tracing ring buffer had overruns and hence some data is
21701    /// missing from this point.
21702    #[prost(bool, optional, tag="6")]
21703    pub has_overruns: ::core::option::Option<bool>,
21704    /// Args for the event.
21705    #[prost(message, repeated, tag="7")]
21706    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
21707    #[prost(message, repeated, tag="10")]
21708    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
21709    /// See base/metatrace_events.h for definitions.
21710    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
21711    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
21712}
21713/// Nested message and enum types in `PerfettoMetatrace`.
21714pub mod perfetto_metatrace {
21715    #[derive(Clone, PartialEq, ::prost::Message)]
21716    pub struct Arg {
21717        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
21718        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
21719        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
21720        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
21721    }
21722    /// Nested message and enum types in `Arg`.
21723    pub mod arg {
21724        #[derive(Clone, PartialEq, ::prost::Oneof)]
21725        pub enum KeyOrInternedKey {
21726            #[prost(string, tag="1")]
21727            Key(::prost::alloc::string::String),
21728            #[prost(uint64, tag="3")]
21729            KeyIid(u64),
21730        }
21731        #[derive(Clone, PartialEq, ::prost::Oneof)]
21732        pub enum ValueOrInternedValue {
21733            #[prost(string, tag="2")]
21734            Value(::prost::alloc::string::String),
21735            #[prost(uint64, tag="4")]
21736            ValueIid(u64),
21737        }
21738    }
21739    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
21740    /// |value_iid| above.
21741    #[derive(Clone, PartialEq, ::prost::Message)]
21742    pub struct InternedString {
21743        #[prost(uint64, optional, tag="1")]
21744        pub iid: ::core::option::Option<u64>,
21745        #[prost(string, optional, tag="2")]
21746        pub value: ::core::option::Option<::prost::alloc::string::String>,
21747    }
21748    /// See base/metatrace_events.h for definitions.
21749    #[derive(Clone, PartialEq, ::prost::Oneof)]
21750    pub enum RecordType {
21751        #[prost(uint32, tag="1")]
21752        EventId(u32),
21753        #[prost(uint32, tag="2")]
21754        CounterId(u32),
21755        /// For trace processor metatracing.
21756        #[prost(string, tag="8")]
21757        EventName(::prost::alloc::string::String),
21758        #[prost(uint64, tag="11")]
21759        EventNameIid(u64),
21760        #[prost(string, tag="9")]
21761        CounterName(::prost::alloc::string::String),
21762    }
21763}
21764// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21765
21766// Begin of protos/perfetto/trace/perfetto/trace_provenance.proto
21767
21768#[derive(Clone, PartialEq, ::prost::Message)]
21769pub struct TraceProvenance {
21770    #[prost(message, repeated, tag="2")]
21771    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
21772}
21773/// Nested message and enum types in `TraceProvenance`.
21774pub mod trace_provenance {
21775    #[derive(Clone, PartialEq, ::prost::Message)]
21776    pub struct Sequence {
21777        /// The trusted_packet_sequence_id reported in each TracePacket.
21778        #[prost(uint32, optional, tag="1")]
21779        pub id: ::core::option::Option<u32>,
21780        /// ID of the producer, as per Producer.id.
21781        #[prost(int32, optional, tag="2")]
21782        pub producer_id: ::core::option::Option<i32>,
21783    }
21784    /// Describes a trace buffer and all the sequences writing to it.
21785    #[derive(Clone, PartialEq, ::prost::Message)]
21786    pub struct Buffer {
21787        #[prost(message, repeated, tag="1")]
21788        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
21789    }
21790}
21791// End of protos/perfetto/trace/perfetto/trace_provenance.proto
21792
21793// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
21794
21795/// Events emitted by the tracing service.
21796/// Next id: 12.
21797#[derive(Clone, PartialEq, ::prost::Message)]
21798pub struct TracingServiceEvent {
21799    /// When each of the following booleans are set to true, they report the
21800    /// point in time (through TracePacket's timestamp) where the condition
21801    /// they describe happened.
21802    /// The order of the booleans below matches the timestamp ordering
21803    /// they would generally be expected to have.
21804    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
21805    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
21806}
21807/// Nested message and enum types in `TracingServiceEvent`.
21808pub mod tracing_service_event {
21809    #[derive(Clone, PartialEq, ::prost::Message)]
21810    pub struct DataSources {
21811        #[prost(message, repeated, tag="1")]
21812        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
21813    }
21814    /// Nested message and enum types in `DataSources`.
21815    pub mod data_sources {
21816        #[derive(Clone, PartialEq, ::prost::Message)]
21817        pub struct DataSource {
21818            #[prost(string, optional, tag="1")]
21819            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
21820            #[prost(string, optional, tag="2")]
21821            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21822        }
21823    }
21824    /// When each of the following booleans are set to true, they report the
21825    /// point in time (through TracePacket's timestamp) where the condition
21826    /// they describe happened.
21827    /// The order of the booleans below matches the timestamp ordering
21828    /// they would generally be expected to have.
21829    #[derive(Clone, PartialEq, ::prost::Oneof)]
21830    pub enum EventType {
21831        /// Emitted when we start tracing and specifically, this will be before any
21832        /// producer is notified about the existence of this trace. This is always
21833        /// emitted before the all_data_sources_started event. This event is also
21834        /// guaranteed to be seen (byte-offset wise) before any data packets from
21835        /// producers.
21836        #[prost(bool, tag="2")]
21837        TracingStarted(bool),
21838        /// Emitted after all data sources saw the start event and ACKed it.
21839        /// This identifies the point in time when it's safe to assume that all data
21840        /// sources have been recording events.
21841        #[prost(bool, tag="1")]
21842        AllDataSourcesStarted(bool),
21843        /// Emitted when a flush is started.
21844        #[prost(bool, tag="9")]
21845        FlushStarted(bool),
21846        /// Emitted when all data sources have been flushed successfully or with an
21847        /// error (including timeouts). This can generally happen many times over the
21848        /// course of the trace.
21849        #[prost(bool, tag="3")]
21850        AllDataSourcesFlushed(bool),
21851        /// Emitted when reading back the central tracing buffers has been completed.
21852        /// If |write_into_file| is specified, this can happen many times over the
21853        /// course of the trace.
21854        #[prost(bool, tag="4")]
21855        ReadTracingBuffersCompleted(bool),
21856        /// Emitted after tracing has been disabled and specifically, this will be
21857        /// after all packets from producers have been included in the central
21858        /// tracing buffer.
21859        #[prost(bool, tag="5")]
21860        TracingDisabled(bool),
21861        /// Emitted if perfetto --save-for-bugreport was invoked while the current
21862        /// tracing session was running and it had the highest bugreport_score. In
21863        /// this case the original consumer will see a nearly empty trace, because
21864        /// the contents are routed onto the bugreport file. This event flags the
21865        /// situation explicitly. Traces that contain this marker should be discarded
21866        /// by test infrastructures / pipelines.
21867        /// Deprecated since Android U, where --save-for-bugreport uses
21868        /// non-destructive cloning.
21869        #[prost(bool, tag="6")]
21870        SeizedForBugreport(bool),
21871        /// Emitted when not all data sources in all producers reply to a start
21872        /// request after some time.
21873        #[prost(message, tag="7")]
21874        SlowStartingDataSources(DataSources),
21875        /// Emitted when the last flush request has failed. Lists data sources that
21876        /// did not reply on time.
21877        #[prost(message, tag="8")]
21878        LastFlushSlowDataSources(DataSources),
21879        /// If this was a cloned tracing session, emitted when the tracing serice
21880        /// started the clone operation.
21881        #[prost(bool, tag="10")]
21882        CloneStarted(bool),
21883        /// If this was a cloned tracing session, emitted when the tracing service
21884        /// finished the clone operation (for a specific buffer).
21885        #[prost(uint32, tag="11")]
21886        BufferCloned(u32),
21887    }
21888}
21889// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
21890
21891// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
21892
21893/// Energy consumer based on aidl class:
21894/// android.hardware.power.stats.EnergyConsumer.
21895#[derive(Clone, PartialEq, ::prost::Message)]
21896pub struct AndroidEnergyConsumer {
21897    /// Unique ID of this energy consumer.  Matches the ID in a
21898    /// AndroidEnergyEstimationBreakdown.
21899    #[prost(int32, optional, tag="1")]
21900    pub energy_consumer_id: ::core::option::Option<i32>,
21901    /// For a group of energy consumers of the same logical type, sorting by
21902    /// ordinal gives their physical order. Ordinals must be consecutive integers
21903    /// starting from 0.
21904    #[prost(int32, optional, tag="2")]
21905    pub ordinal: ::core::option::Option<i32>,
21906    /// Type of this energy consumer.
21907    #[prost(string, optional, tag="3")]
21908    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
21909    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
21910    /// framework.
21911    #[prost(string, optional, tag="4")]
21912    pub name: ::core::option::Option<::prost::alloc::string::String>,
21913}
21914#[derive(Clone, PartialEq, ::prost::Message)]
21915pub struct AndroidEnergyConsumerDescriptor {
21916    #[prost(message, repeated, tag="1")]
21917    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
21918}
21919// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
21920
21921// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21922
21923/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
21924/// This proto represents the aidl class:
21925/// android.hardware.power.stats.EnergyConsumerResult.
21926#[derive(Clone, PartialEq, ::prost::Message)]
21927pub struct AndroidEnergyEstimationBreakdown {
21928    /// The first trace packet of each session should include a energy consumer
21929    /// descriptor.
21930    #[prost(message, optional, tag="1")]
21931    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
21932    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
21933    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
21934    /// should be sent at the beginning of a trace.
21935    #[prost(int32, optional, tag="2")]
21936    pub energy_consumer_id: ::core::option::Option<i32>,
21937    /// Total accumulated energy since boot in microwatt-seconds (uWs)
21938    #[prost(int64, optional, tag="3")]
21939    pub energy_uws: ::core::option::Option<i64>,
21940    /// Optional attributed energy per Android ID / Linux UID for this
21941    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
21942    /// to total accumulated energy.
21943    #[prost(message, repeated, tag="4")]
21944    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
21945}
21946/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
21947pub mod android_energy_estimation_breakdown {
21948    #[derive(Clone, PartialEq, ::prost::Message)]
21949    pub struct EnergyUidBreakdown {
21950        /// Android ID/Linux UID, the accumulated energy is attributed to.
21951        #[prost(int32, optional, tag="1")]
21952        pub uid: ::core::option::Option<i32>,
21953        /// Accumulated energy since boot in microwatt-seconds (uWs).
21954        #[prost(int64, optional, tag="2")]
21955        pub energy_uws: ::core::option::Option<i64>,
21956    }
21957}
21958// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21959
21960// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
21961
21962#[derive(Clone, PartialEq, ::prost::Message)]
21963pub struct EntityStateResidency {
21964    /// This is only emitted at the beginning of the trace.
21965    #[prost(message, repeated, tag="1")]
21966    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
21967    #[prost(message, repeated, tag="2")]
21968    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
21969}
21970/// Nested message and enum types in `EntityStateResidency`.
21971pub mod entity_state_residency {
21972    #[derive(Clone, PartialEq, ::prost::Message)]
21973    pub struct PowerEntityState {
21974        /// Index corresponding to the entity
21975        #[prost(int32, optional, tag="1")]
21976        pub entity_index: ::core::option::Option<i32>,
21977        /// Index corresponding to the state
21978        #[prost(int32, optional, tag="2")]
21979        pub state_index: ::core::option::Option<i32>,
21980        /// Name of the entity. This is device-specific, determined by the PowerStats
21981        /// HAL, and cannot be configured by the user. An example would be
21982        /// "Bluetooth".
21983        #[prost(string, optional, tag="3")]
21984        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
21985        /// Name of the state. This is device-specific, determined by the PowerStats
21986        /// HAL, and cannot be configured by the user. An example would be
21987        /// "Active".
21988        #[prost(string, optional, tag="4")]
21989        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
21990    }
21991    #[derive(Clone, PartialEq, ::prost::Message)]
21992    pub struct StateResidency {
21993        /// Index corresponding to PowerEntityState.entity_index
21994        #[prost(int32, optional, tag="1")]
21995        pub entity_index: ::core::option::Option<i32>,
21996        /// Index corresponding to PowerEntityState.state_index
21997        #[prost(int32, optional, tag="2")]
21998        pub state_index: ::core::option::Option<i32>,
21999        /// Time since boot that this entity has been in this state
22000        #[prost(uint64, optional, tag="3")]
22001        pub total_time_in_state_ms: ::core::option::Option<u64>,
22002        /// Total number of times since boot that the entity has entered this state
22003        #[prost(uint64, optional, tag="4")]
22004        pub total_state_entry_count: ::core::option::Option<u64>,
22005        /// Timestamp of the last time the entity entered this state
22006        #[prost(uint64, optional, tag="5")]
22007        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
22008    }
22009}
22010// End of protos/perfetto/trace/power/android_entity_state_residency.proto
22011
22012// Begin of protos/perfetto/trace/power/battery_counters.proto
22013
22014#[derive(Clone, PartialEq, ::prost::Message)]
22015pub struct BatteryCounters {
22016    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
22017    #[prost(int64, optional, tag="1")]
22018    pub charge_counter_uah: ::core::option::Option<i64>,
22019    /// Remaining battery capacity percentage of total capacity
22020    #[prost(float, optional, tag="2")]
22021    pub capacity_percent: ::core::option::Option<f32>,
22022    /// Instantaneous battery current in microamperes(µA).
22023    /// Negative values indicate current being drained from the battery and
22024    /// positive values indicate current feeding the battery from a charge source
22025    /// (USB).
22026    ///
22027    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
22028    #[prost(int64, optional, tag="3")]
22029    pub current_ua: ::core::option::Option<i64>,
22030    /// Instantaneous battery current in microamperes(µA).
22031    #[prost(int64, optional, tag="4")]
22032    pub current_avg_ua: ::core::option::Option<i64>,
22033    /// Battery name, emitted only on multiple batteries.
22034    #[prost(string, optional, tag="5")]
22035    pub name: ::core::option::Option<::prost::alloc::string::String>,
22036    /// Battery capacity in microwatt-hours(µWh).
22037    #[prost(int64, optional, tag="6")]
22038    pub energy_counter_uwh: ::core::option::Option<i64>,
22039    /// Battery voltage in microvolts(µV).
22040    #[prost(int64, optional, tag="7")]
22041    pub voltage_uv: ::core::option::Option<i64>,
22042}
22043// End of protos/perfetto/trace/power/battery_counters.proto
22044
22045// Begin of protos/perfetto/trace/power/power_rails.proto
22046
22047#[derive(Clone, PartialEq, ::prost::Message)]
22048pub struct PowerRails {
22049    /// This is only emitted at the beginning of the trace.
22050    #[prost(message, repeated, tag="1")]
22051    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
22052    #[prost(message, repeated, tag="2")]
22053    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
22054    /// A unique session id that can be used to match energy data to sets of
22055    /// descriptors. The indices used by rail descriptors and energy data packets
22056    /// are meant to be unique to a given session uuid. When multiple data sources
22057    /// are running in parallel, each data source should use a unique id.
22058    #[prost(uint64, optional, tag="3")]
22059    pub session_uuid: ::core::option::Option<u64>,
22060}
22061/// Nested message and enum types in `PowerRails`.
22062pub mod power_rails {
22063    #[derive(Clone, PartialEq, ::prost::Message)]
22064    pub struct RailDescriptor {
22065        /// Index corresponding to the rail
22066        #[prost(uint32, optional, tag="1")]
22067        pub index: ::core::option::Option<u32>,
22068        /// Name of the rail
22069        #[prost(string, optional, tag="2")]
22070        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
22071        /// Name of the subsystem to which this rail belongs
22072        #[prost(string, optional, tag="3")]
22073        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
22074        /// Hardware sampling rate (Hz).
22075        #[prost(uint32, optional, tag="4")]
22076        pub sampling_rate: ::core::option::Option<u32>,
22077    }
22078    #[derive(Clone, PartialEq, ::prost::Message)]
22079    pub struct EnergyData {
22080        /// Index corresponding to RailDescriptor.index
22081        #[prost(uint32, optional, tag="1")]
22082        pub index: ::core::option::Option<u32>,
22083        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
22084        #[prost(uint64, optional, tag="2")]
22085        pub timestamp_ms: ::core::option::Option<u64>,
22086        /// Accumulated energy since device boot in microwatt-seconds (uWs).
22087        #[prost(uint64, optional, tag="3")]
22088        pub energy: ::core::option::Option<u64>,
22089    }
22090}
22091// End of protos/perfetto/trace/power/power_rails.proto
22092
22093// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
22094
22095#[derive(Clone, PartialEq, ::prost::Message)]
22096pub struct ObfuscatedMember {
22097    /// This is the obfuscated field name relative to the class containing the
22098    /// ObfuscatedMember.
22099    #[prost(string, optional, tag="1")]
22100    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22101    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
22102    /// field name including its class. Otherwise, this is this the unqualified
22103    /// deobfuscated field name relative to the class containing this
22104    /// ObfuscatedMember.
22105    #[prost(string, optional, tag="2")]
22106    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22107    /// R8 inline method support: line number ranges for disambiguation.
22108    /// When multiple methods map to the same obfuscated name, the line number
22109    /// from the stack frame is used to select the correct mapping.
22110    ///
22111    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
22112    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
22113    /// - source_line_start/end = 10:12 (line range in original source)
22114    ///
22115    /// Methods with the same obfuscated_name and overlapping obfuscated line
22116    /// ranges form an inline chain, ordered innermost (inlined) first.
22117    #[prost(uint32, optional, tag="3")]
22118    pub obfuscated_line_start: ::core::option::Option<u32>,
22119    #[prost(uint32, optional, tag="4")]
22120    pub obfuscated_line_end: ::core::option::Option<u32>,
22121    #[prost(uint32, optional, tag="5")]
22122    pub source_line_start: ::core::option::Option<u32>,
22123    #[prost(uint32, optional, tag="6")]
22124    pub source_line_end: ::core::option::Option<u32>,
22125}
22126#[derive(Clone, PartialEq, ::prost::Message)]
22127pub struct ObfuscatedClass {
22128    #[prost(string, optional, tag="1")]
22129    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22130    #[prost(string, optional, tag="2")]
22131    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22132    /// fields.
22133    #[prost(message, repeated, tag="3")]
22134    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22135    #[prost(message, repeated, tag="4")]
22136    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22137}
22138#[derive(Clone, PartialEq, ::prost::Message)]
22139pub struct DeobfuscationMapping {
22140    #[prost(string, optional, tag="1")]
22141    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
22142    #[prost(int64, optional, tag="2")]
22143    pub version_code: ::core::option::Option<i64>,
22144    #[prost(message, repeated, tag="3")]
22145    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
22146}
22147// Begin of protos/perfetto/trace/profiling/heap_graph.proto
22148
22149#[derive(Clone, PartialEq, ::prost::Message)]
22150pub struct HeapGraphRoot {
22151    /// Objects retained by this root.
22152    #[prost(uint64, repeated, tag="1")]
22153    pub object_ids: ::prost::alloc::vec::Vec<u64>,
22154    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
22155    pub root_type: ::core::option::Option<i32>,
22156}
22157/// Nested message and enum types in `HeapGraphRoot`.
22158pub mod heap_graph_root {
22159    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22160    #[repr(i32)]
22161    pub enum Type {
22162        RootUnknown = 0,
22163        RootJniGlobal = 1,
22164        RootJniLocal = 2,
22165        RootJavaFrame = 3,
22166        RootNativeStack = 4,
22167        RootStickyClass = 5,
22168        RootThreadBlock = 6,
22169        RootMonitorUsed = 7,
22170        RootThreadObject = 8,
22171        RootInternedString = 9,
22172        RootFinalizing = 10,
22173        RootDebugger = 11,
22174        RootReferenceCleanup = 12,
22175        RootVmInternal = 13,
22176        RootJniMonitor = 14,
22177    }
22178    impl Type {
22179        /// String value of the enum field names used in the ProtoBuf definition.
22180        ///
22181        /// The values are not transformed in any way and thus are considered stable
22182        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22183        pub fn as_str_name(&self) -> &'static str {
22184            match self {
22185                Type::RootUnknown => "ROOT_UNKNOWN",
22186                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
22187                Type::RootJniLocal => "ROOT_JNI_LOCAL",
22188                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
22189                Type::RootNativeStack => "ROOT_NATIVE_STACK",
22190                Type::RootStickyClass => "ROOT_STICKY_CLASS",
22191                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
22192                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
22193                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
22194                Type::RootInternedString => "ROOT_INTERNED_STRING",
22195                Type::RootFinalizing => "ROOT_FINALIZING",
22196                Type::RootDebugger => "ROOT_DEBUGGER",
22197                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
22198                Type::RootVmInternal => "ROOT_VM_INTERNAL",
22199                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
22200            }
22201        }
22202    }
22203}
22204#[derive(Clone, PartialEq, ::prost::Message)]
22205pub struct HeapGraphType {
22206    /// TODO(fmayer): Consider removing this and using the index in the repeaed
22207    /// field to save space.
22208    #[prost(uint64, optional, tag="1")]
22209    pub id: ::core::option::Option<u64>,
22210    #[prost(uint64, optional, tag="2")]
22211    pub location_id: ::core::option::Option<u64>,
22212    #[prost(string, optional, tag="3")]
22213    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
22214    /// Size of objects of this type.
22215    #[prost(uint64, optional, tag="4")]
22216    pub object_size: ::core::option::Option<u64>,
22217    #[prost(uint64, optional, tag="5")]
22218    pub superclass_id: ::core::option::Option<u64>,
22219    /// Indices for InternedData.field_names for the names of the fields of
22220    /// instances of this class. This does NOT include the fields from
22221    /// superclasses. The consumer of this data needs to walk all super
22222    /// classes to get a full lists of fields. Objects always write the
22223    /// fields in order of most specific class to the furthest up superclass.
22224    #[prost(uint64, repeated, tag="6")]
22225    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
22226    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
22227    pub kind: ::core::option::Option<i32>,
22228    #[prost(uint64, optional, tag="8")]
22229    pub classloader_id: ::core::option::Option<u64>,
22230}
22231/// Nested message and enum types in `HeapGraphType`.
22232pub mod heap_graph_type {
22233    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22234    #[repr(i32)]
22235    pub enum Kind {
22236        Unknown = 0,
22237        Normal = 1,
22238        Noreferences = 2,
22239        String = 3,
22240        Array = 4,
22241        Class = 5,
22242        Classloader = 6,
22243        Dexcache = 7,
22244        SoftReference = 8,
22245        WeakReference = 9,
22246        FinalizerReference = 10,
22247        PhantomReference = 11,
22248    }
22249    impl Kind {
22250        /// String value of the enum field names used in the ProtoBuf definition.
22251        ///
22252        /// The values are not transformed in any way and thus are considered stable
22253        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22254        pub fn as_str_name(&self) -> &'static str {
22255            match self {
22256                Kind::Unknown => "KIND_UNKNOWN",
22257                Kind::Normal => "KIND_NORMAL",
22258                Kind::Noreferences => "KIND_NOREFERENCES",
22259                Kind::String => "KIND_STRING",
22260                Kind::Array => "KIND_ARRAY",
22261                Kind::Class => "KIND_CLASS",
22262                Kind::Classloader => "KIND_CLASSLOADER",
22263                Kind::Dexcache => "KIND_DEXCACHE",
22264                Kind::SoftReference => "KIND_SOFT_REFERENCE",
22265                Kind::WeakReference => "KIND_WEAK_REFERENCE",
22266                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
22267                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
22268            }
22269        }
22270    }
22271}
22272#[derive(Clone, PartialEq, ::prost::Message)]
22273pub struct HeapGraphObject {
22274    /// Index for InternedData.types for the name of the type of this object.
22275    #[prost(uint64, optional, tag="2")]
22276    pub type_id: ::core::option::Option<u64>,
22277    /// Bytes occupied by this objects.
22278    #[prost(uint64, optional, tag="3")]
22279    pub self_size: ::core::option::Option<u64>,
22280    /// Add this to all non-zero values in reference_object_id. This is used to
22281    /// get more compact varint encoding.
22282    ///
22283    /// The name is confusing, but this has always been used as a base for
22284    /// reference_object_id. The field should be named reference_object_id_base.
22285    #[prost(uint64, optional, tag="6")]
22286    pub reference_field_id_base: ::core::option::Option<u64>,
22287    /// Indices for InternedData.field_names for the name of the field referring
22288    /// to the object. For Android S+ and for instances of normal classes (e.g.
22289    /// not instances of java.lang.Class or arrays), this is instead set in the
22290    /// corresponding HeapGraphType, and this is left empty.
22291    #[prost(uint64, repeated, tag="4")]
22292    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
22293    /// Ids of the Object that is referred to.
22294    #[prost(uint64, repeated, tag="5")]
22295    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
22296    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
22297    /// the value of the `size` field.
22298    ///
22299    /// N.B. This is not the native size of this object.
22300    #[prost(int64, optional, tag="8")]
22301    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
22302    /// To reduce the space required we only emit the heap type if it has changed
22303    /// from the previous object we recorded.
22304    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
22305    pub heap_type_delta: ::core::option::Option<i32>,
22306    /// Ids of the Objects referred by this object, not via fields, but via
22307    /// internal runtime structures.
22308    #[prost(uint64, repeated, tag="10")]
22309    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
22310    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
22311    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
22312}
22313/// Nested message and enum types in `HeapGraphObject`.
22314pub mod heap_graph_object {
22315    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22316    #[repr(i32)]
22317    pub enum HeapType {
22318        Unknown = 0,
22319        App = 1,
22320        Zygote = 2,
22321        BootImage = 3,
22322    }
22323    impl HeapType {
22324        /// String value of the enum field names used in the ProtoBuf definition.
22325        ///
22326        /// The values are not transformed in any way and thus are considered stable
22327        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22328        pub fn as_str_name(&self) -> &'static str {
22329            match self {
22330                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
22331                HeapType::App => "HEAP_TYPE_APP",
22332                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
22333                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
22334            }
22335        }
22336    }
22337    #[derive(Clone, PartialEq, ::prost::Oneof)]
22338    pub enum Identifier {
22339        #[prost(uint64, tag="1")]
22340        Id(u64),
22341        #[prost(uint64, tag="7")]
22342        IdDelta(u64),
22343    }
22344}
22345#[derive(Clone, PartialEq, ::prost::Message)]
22346pub struct HeapGraph {
22347    #[prost(int32, optional, tag="1")]
22348    pub pid: ::core::option::Option<i32>,
22349    /// This contains all objects at the time this dump was taken. Some of these
22350    /// will be live, some of those unreachable (garbage). To find the live
22351    /// objects, the client needs to build the transitive closure of objects
22352    /// reachable from |roots|.
22353    /// All objects not contained within that transitive closure are garbage that
22354    /// has not yet been collected.
22355    #[prost(message, repeated, tag="2")]
22356    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
22357    /// Roots at the time this dump was taken.
22358    /// All live objects are reachable from the roots. All other objects are
22359    /// garbage.
22360    #[prost(message, repeated, tag="7")]
22361    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
22362    /// Types used in HeapGraphObjects.
22363    #[prost(message, repeated, tag="9")]
22364    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
22365    /// Field names for references in managed heap graph.
22366    #[prost(message, repeated, tag="4")]
22367    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
22368    /// Paths of files used in managed heap graph.
22369    #[prost(message, repeated, tag="8")]
22370    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
22371    #[prost(bool, optional, tag="5")]
22372    pub continued: ::core::option::Option<bool>,
22373    #[prost(uint64, optional, tag="6")]
22374    pub index: ::core::option::Option<u64>,
22375}
22376// End of protos/perfetto/trace/profiling/heap_graph.proto
22377
22378// Begin of protos/perfetto/trace/profiling/profile_packet.proto
22379
22380// This file contains a mixture of messages emitted by various sampling
22381// profilers:
22382//
22383// Memory allocator profiling
22384// ----------------
22385// ProfilePacket:
22386//    The packet emitted by heapprofd, which started off as a native heap
22387//    (malloc/free) profiler, but now supports custom allocators as well. Each
22388//    packet contains a preaggregated state of the heap at snapshot time, which
22389//    report the total allocated/free bytes per callstack (plus other info such
22390//    as the number of samples).
22391// StreamingAllocation/StreamingFree:
22392//    Emitted by heapprofd when configured in streaming mode (i.e. when
22393//    stream_allocations = true). This is only for local testing, and doesn't
22394//    report callstacks (only address time and size of each alloc/free). It can
22395//    lead to enormous traces, as it contains the stream of each alloc/free call.
22396//
22397// Callstack sampling
22398// ------------------
22399// StreamingProfilePacket:
22400//    The packet emitted by the chromium in-process sampling profiler, which is
22401//    based on periodically sending a signal to itself, and unwinding the stack
22402//    in the signal handler. Each packet contains a series of individual stack
22403//    samples for a Chromium thread.
22404//
22405// Callstack and performance counter sampling
22406// ---------------------
22407// PerfSample:
22408//    The packet emitted by traced_perf sampling performance profiler based on
22409//    the perf_event_open syscall. Each packet represents an individual sample
22410//    of a performance counter (which might be a timer), and optionally a
22411//    callstack of the process that was scheduled at the time of the sample.
22412//
22413
22414/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
22415/// involve more than one ProfilePacket if the snapshot is big (when |continued|
22416/// is true). The cardinality and grouping is as follows:
22417/// A ProfilePacket contains:
22418///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
22419///     one heap per process (the main malloc/free heap), but there can be more if
22420///     the process is using the heapprofd API to profile custom allocators.
22421///   - Globally interned strings, mappings and frames (to allow de-duplicating
22422///     frames/mapping in common between different processes).
22423/// A ProcessHeapSamples contains:
22424///   - The process and heap identifier.
22425///   - A number of HeapSample, one for each callsite that had some alloc/frees.
22426///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
22427/// A HeapSample contains statistics about callsites:
22428///   - Total number of bytes allocated and freed from that callsite.
22429///   - Total number of alloc/free calls sampled.
22430///   - Stats at the local maximum when dump_at_max = true.
22431/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
22432#[derive(Clone, PartialEq, ::prost::Message)]
22433pub struct ProfilePacket {
22434    /// The following interning tables are only used in Android version Q.
22435    /// In newer versions, these tables are in InternedData
22436    /// (see protos/perfetto/trace/interned_data) and are shared across
22437    /// multiple ProfilePackets.
22438    /// For backwards compatibility, consumers need to first look up interned
22439    /// data in the tables within the ProfilePacket, and then, if they are empty,
22440    /// look up in the InternedData instead.
22441    #[prost(message, repeated, tag="1")]
22442    pub strings: ::prost::alloc::vec::Vec<InternedString>,
22443    #[prost(message, repeated, tag="4")]
22444    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22445    #[prost(message, repeated, tag="2")]
22446    pub frames: ::prost::alloc::vec::Vec<Frame>,
22447    #[prost(message, repeated, tag="3")]
22448    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22449    #[prost(message, repeated, tag="5")]
22450    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
22451    /// If this is true, the next ProfilePacket in this package_sequence_id is a
22452    /// continuation of this one.
22453    /// To get all samples for a process, accummulate its
22454    /// ProcessHeapSamples.samples until you see continued=false.
22455    #[prost(bool, optional, tag="6")]
22456    pub continued: ::core::option::Option<bool>,
22457    /// Index of this ProfilePacket on its package_sequence_id. Can be used
22458    /// to detect dropped data.
22459    /// Verify these are consecutive.
22460    #[prost(uint64, optional, tag="7")]
22461    pub index: ::core::option::Option<u64>,
22462}
22463/// Nested message and enum types in `ProfilePacket`.
22464pub mod profile_packet {
22465    /// Next ID: 9
22466    #[derive(Clone, PartialEq, ::prost::Message)]
22467    pub struct HeapSample {
22468        #[prost(uint64, optional, tag="1")]
22469        pub callstack_id: ::core::option::Option<u64>,
22470        /// bytes allocated at this callstack.
22471        #[prost(uint64, optional, tag="2")]
22472        pub self_allocated: ::core::option::Option<u64>,
22473        /// bytes allocated at this callstack that have been freed.
22474        #[prost(uint64, optional, tag="3")]
22475        pub self_freed: ::core::option::Option<u64>,
22476        /// Bytes allocated by this callstack but not freed at the time the malloc
22477        /// heap usage of this process was maximal. This is only set if dump_at_max
22478        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
22479        /// self_idle will not be set.
22480        #[prost(uint64, optional, tag="8")]
22481        pub self_max: ::core::option::Option<u64>,
22482        /// Number of allocations that were sampled at this callstack but not freed
22483        /// at the time the malloc heap usage of this process was maximal. This is
22484        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
22485        /// self_allocated, self_freed and self_idle will not be set.
22486        #[prost(uint64, optional, tag="9")]
22487        pub self_max_count: ::core::option::Option<u64>,
22488        /// timestamp \[opt\]
22489        #[prost(uint64, optional, tag="4")]
22490        pub timestamp: ::core::option::Option<u64>,
22491        /// Number of allocations that were sampled at this callstack.
22492        #[prost(uint64, optional, tag="5")]
22493        pub alloc_count: ::core::option::Option<u64>,
22494        /// Number of allocations that were sampled at this callstack that have been
22495        /// freed.
22496        #[prost(uint64, optional, tag="6")]
22497        pub free_count: ::core::option::Option<u64>,
22498    }
22499    #[derive(Clone, PartialEq, ::prost::Message)]
22500    pub struct Histogram {
22501        #[prost(message, repeated, tag="1")]
22502        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
22503    }
22504    /// Nested message and enum types in `Histogram`.
22505    pub mod histogram {
22506        #[derive(Clone, PartialEq, ::prost::Message)]
22507        pub struct Bucket {
22508            /// This bucket counts values from the previous bucket's (or -infinity if
22509            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
22510            /// (exclusive).
22511            #[prost(uint64, optional, tag="1")]
22512            pub upper_limit: ::core::option::Option<u64>,
22513            /// This is the highest bucket. This is set instead of the upper_limit. Any
22514            /// values larger or equal to the previous bucket's upper_limit are counted
22515            /// in this bucket.
22516            #[prost(bool, optional, tag="2")]
22517            pub max_bucket: ::core::option::Option<bool>,
22518            /// Number of values that fall into this range.
22519            #[prost(uint64, optional, tag="3")]
22520            pub count: ::core::option::Option<u64>,
22521        }
22522    }
22523    #[derive(Clone, PartialEq, ::prost::Message)]
22524    pub struct ProcessStats {
22525        #[prost(uint64, optional, tag="1")]
22526        pub unwinding_errors: ::core::option::Option<u64>,
22527        #[prost(uint64, optional, tag="2")]
22528        pub heap_samples: ::core::option::Option<u64>,
22529        #[prost(uint64, optional, tag="3")]
22530        pub map_reparses: ::core::option::Option<u64>,
22531        #[prost(message, optional, tag="4")]
22532        pub unwinding_time_us: ::core::option::Option<Histogram>,
22533        #[prost(uint64, optional, tag="5")]
22534        pub total_unwinding_time_us: ::core::option::Option<u64>,
22535        #[prost(uint64, optional, tag="6")]
22536        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
22537    }
22538    #[derive(Clone, PartialEq, ::prost::Message)]
22539    pub struct ProcessHeapSamples {
22540        #[prost(uint64, optional, tag="1")]
22541        pub pid: ::core::option::Option<u64>,
22542        /// This process was profiled from startup.
22543        /// If false, this process was already running when profiling started.
22544        #[prost(bool, optional, tag="3")]
22545        pub from_startup: ::core::option::Option<bool>,
22546        /// This process was not profiled because a concurrent session was active.
22547        /// If this is true, samples will be empty.
22548        #[prost(bool, optional, tag="4")]
22549        pub rejected_concurrent: ::core::option::Option<bool>,
22550        /// This process disconnected while it was profiled.
22551        /// If false, the process outlived the profiling session.
22552        #[prost(bool, optional, tag="6")]
22553        pub disconnected: ::core::option::Option<bool>,
22554        /// If disconnected, this disconnect was caused by the client overrunning
22555        /// the buffer.
22556        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
22557        /// on new S builds.
22558        #[prost(bool, optional, tag="7")]
22559        pub buffer_overran: ::core::option::Option<bool>,
22560        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
22561        pub client_error: ::core::option::Option<i32>,
22562        /// If disconnected, this disconnected was caused by the shared memory
22563        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
22564        /// MEMORY CORRUPTION.
22565        #[prost(bool, optional, tag="8")]
22566        pub buffer_corrupted: ::core::option::Option<bool>,
22567        /// If disconnected, this disconnect was caused by heapprofd exceeding
22568        /// guardrails during this profiling session.
22569        #[prost(bool, optional, tag="10")]
22570        pub hit_guardrail: ::core::option::Option<bool>,
22571        #[prost(string, optional, tag="11")]
22572        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
22573        #[prost(uint64, optional, tag="12")]
22574        pub sampling_interval_bytes: ::core::option::Option<u64>,
22575        #[prost(uint64, optional, tag="13")]
22576        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
22577        /// Timestamp of the state of the target process that this dump represents.
22578        /// This can be different to the timestamp of the TracePackets for various
22579        /// reasons:
22580        /// * If disconnected is set above, this is the timestamp of last state
22581        ///    heapprofd had of the process before it disconnected.
22582        /// * Otherwise, if the rate of events produced by the process is high,
22583        ///    heapprofd might be behind.
22584        ///
22585        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
22586        ///                to have a type enum that we can reuse here.
22587        #[prost(uint64, optional, tag="9")]
22588        pub timestamp: ::core::option::Option<u64>,
22589        /// Metadata about heapprofd.
22590        #[prost(message, optional, tag="5")]
22591        pub stats: ::core::option::Option<ProcessStats>,
22592        #[prost(message, repeated, tag="2")]
22593        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
22594    }
22595    /// Nested message and enum types in `ProcessHeapSamples`.
22596    pub mod process_heap_samples {
22597        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22598        #[repr(i32)]
22599        pub enum ClientError {
22600            None = 0,
22601            HitTimeout = 1,
22602            InvalidStackBounds = 2,
22603        }
22604        impl ClientError {
22605            /// String value of the enum field names used in the ProtoBuf definition.
22606            ///
22607            /// The values are not transformed in any way and thus are considered stable
22608            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22609            pub fn as_str_name(&self) -> &'static str {
22610                match self {
22611                    ClientError::None => "CLIENT_ERROR_NONE",
22612                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
22613                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
22614                }
22615            }
22616        }
22617    }
22618}
22619/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22620/// testing. Doesn't report the callsite.
22621#[derive(Clone, PartialEq, ::prost::Message)]
22622pub struct StreamingAllocation {
22623    /// TODO(fmayer): Add callstack.
22624    #[prost(uint64, repeated, packed="false", tag="1")]
22625    pub address: ::prost::alloc::vec::Vec<u64>,
22626    #[prost(uint64, repeated, packed="false", tag="2")]
22627    pub size: ::prost::alloc::vec::Vec<u64>,
22628    #[prost(uint64, repeated, packed="false", tag="3")]
22629    pub sample_size: ::prost::alloc::vec::Vec<u64>,
22630    #[prost(uint64, repeated, packed="false", tag="4")]
22631    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
22632    #[prost(uint32, repeated, packed="false", tag="5")]
22633    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22634    #[prost(uint64, repeated, packed="false", tag="6")]
22635    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22636}
22637/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22638/// testing. Doesn't report the callsite.
22639#[derive(Clone, PartialEq, ::prost::Message)]
22640pub struct StreamingFree {
22641    /// TODO(fmayer): Add callstack.
22642    #[prost(uint64, repeated, packed="false", tag="1")]
22643    pub address: ::prost::alloc::vec::Vec<u64>,
22644    #[prost(uint32, repeated, packed="false", tag="2")]
22645    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22646    #[prost(uint64, repeated, packed="false", tag="3")]
22647    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22648}
22649/// Packet emitted by the chromium in-process signal-based callstack sampler.
22650/// Represents a series of individual stack samples (sampled at discrete points
22651/// in time), rather than aggregated over an interval.
22652#[derive(Clone, PartialEq, ::prost::Message)]
22653pub struct StreamingProfilePacket {
22654    /// Index into InternedData.callstacks
22655    #[prost(uint64, repeated, packed="false", tag="1")]
22656    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
22657    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
22658    /// this with ClockSnapshot-based delta encoding instead.
22659    #[prost(int64, repeated, packed="false", tag="2")]
22660    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
22661    #[prost(int32, optional, tag="3")]
22662    pub process_priority: ::core::option::Option<i32>,
22663}
22664/// Namespace for the contained enums.
22665#[derive(Clone, PartialEq, ::prost::Message)]
22666pub struct Profiling {
22667}
22668/// Nested message and enum types in `Profiling`.
22669pub mod profiling {
22670    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22671    #[repr(i32)]
22672    pub enum CpuMode {
22673        ModeUnknown = 0,
22674        ModeKernel = 1,
22675        ModeUser = 2,
22676        /// The following values aren't expected, but included for completeness:
22677        ModeHypervisor = 3,
22678        ModeGuestKernel = 4,
22679        ModeGuestUser = 5,
22680    }
22681    impl CpuMode {
22682        /// String value of the enum field names used in the ProtoBuf definition.
22683        ///
22684        /// The values are not transformed in any way and thus are considered stable
22685        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22686        pub fn as_str_name(&self) -> &'static str {
22687            match self {
22688                CpuMode::ModeUnknown => "MODE_UNKNOWN",
22689                CpuMode::ModeKernel => "MODE_KERNEL",
22690                CpuMode::ModeUser => "MODE_USER",
22691                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
22692                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
22693                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
22694            }
22695        }
22696    }
22697    /// Enumeration of libunwindstack's error codes.
22698    /// NB: the integral representations of the two enums are different.
22699    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22700    #[repr(i32)]
22701    pub enum StackUnwindError {
22702        UnwindErrorUnknown = 0,
22703        UnwindErrorNone = 1,
22704        UnwindErrorMemoryInvalid = 2,
22705        UnwindErrorUnwindInfo = 3,
22706        UnwindErrorUnsupported = 4,
22707        UnwindErrorInvalidMap = 5,
22708        UnwindErrorMaxFramesExceeded = 6,
22709        UnwindErrorRepeatedFrame = 7,
22710        UnwindErrorInvalidElf = 8,
22711        UnwindErrorSystemCall = 9,
22712        UnwindErrorThreadTimeout = 10,
22713        UnwindErrorThreadDoesNotExist = 11,
22714        UnwindErrorBadArch = 12,
22715        UnwindErrorMapsParse = 13,
22716        UnwindErrorInvalidParameter = 14,
22717        UnwindErrorPtraceCall = 15,
22718    }
22719    impl StackUnwindError {
22720        /// String value of the enum field names used in the ProtoBuf definition.
22721        ///
22722        /// The values are not transformed in any way and thus are considered stable
22723        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22724        pub fn as_str_name(&self) -> &'static str {
22725            match self {
22726                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
22727                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
22728                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
22729                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
22730                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
22731                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
22732                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
22733                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
22734                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
22735                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
22736                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
22737                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
22738                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
22739                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
22740                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
22741                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
22742            }
22743        }
22744    }
22745}
22746/// Packet emitted by the traced_perf sampling performance profiler, which
22747/// gathers data via the perf_event_open syscall. Each packet contains an
22748/// individual sample with a counter value, and optionally a
22749/// callstack.
22750///
22751/// Timestamps are within the root packet. The config can specify the clock, or
22752/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
22753/// timeframe, the default was CLOCK_BOOTTIME.
22754///
22755/// There are several distinct views of this message:
22756/// * indication of kernel buffer data loss (kernel_records_lost set)
22757/// * indication of skipped samples (sample_skipped_reason set)
22758/// * notable event in the sampling implementation (producer_event set)
22759/// * normal sample (timebase_count set, typically also callstack_iid)
22760#[derive(Clone, PartialEq, ::prost::Message)]
22761pub struct PerfSample {
22762    #[prost(uint32, optional, tag="1")]
22763    pub cpu: ::core::option::Option<u32>,
22764    #[prost(uint32, optional, tag="2")]
22765    pub pid: ::core::option::Option<u32>,
22766    #[prost(uint32, optional, tag="3")]
22767    pub tid: ::core::option::Option<u32>,
22768    /// Execution state that the process was sampled at.
22769    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
22770    pub cpu_mode: ::core::option::Option<i32>,
22771    /// Value of the timebase counter (since the event was configured, no deltas).
22772    #[prost(uint64, optional, tag="6")]
22773    pub timebase_count: ::core::option::Option<u64>,
22774    /// Value of the followers counter (since the event was configured, no deltas).
22775    #[prost(uint64, repeated, packed="false", tag="7")]
22776    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
22777    /// Unwound callstack. Might be partial, in which case a synthetic "error"
22778    /// frame is appended, and |unwind_error| is set accordingly.
22779    #[prost(uint64, optional, tag="4")]
22780    pub callstack_iid: ::core::option::Option<u64>,
22781    /// If set, indicates that this message is not a sample, but rather an
22782    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
22783    /// loss occurs when the kernel has insufficient ring buffer capacity to write
22784    /// a record (which gets discarded). A record in this context is an individual
22785    /// ring buffer entry, and counts more than just sample records.
22786    ///
22787    /// The |timestamp| of the packet corresponds to the time that the producer
22788    /// wrote the packet for trace-sorting purposes alone, and should not be
22789    /// interpreted relative to the sample timestamps. This field is sufficient to
22790    /// detect that *some* kernel data loss happened within the trace, but not the
22791    /// specific time bounds of that loss (which would require tracking precedessor
22792    /// & successor timestamps, which is not deemed necessary at the moment).
22793    #[prost(uint64, optional, tag="17")]
22794    pub kernel_records_lost: ::core::option::Option<u64>,
22795    #[prost(message, optional, tag="19")]
22796    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
22797    /// If set, stack unwinding was incomplete due to an error.
22798    /// Unset values should be treated as UNWIND_ERROR_NONE.
22799    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
22800    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
22801    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
22802    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
22803}
22804/// Nested message and enum types in `PerfSample`.
22805pub mod perf_sample {
22806    /// A notable event within the sampling implementation.
22807    #[derive(Clone, PartialEq, ::prost::Message)]
22808    pub struct ProducerEvent {
22809        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
22810        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
22811    }
22812    /// Nested message and enum types in `ProducerEvent`.
22813    pub mod producer_event {
22814        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22815        #[repr(i32)]
22816        pub enum DataSourceStopReason {
22817            ProfilerStopUnknown = 0,
22818            ProfilerStopGuardrail = 1,
22819        }
22820        impl DataSourceStopReason {
22821            /// String value of the enum field names used in the ProtoBuf definition.
22822            ///
22823            /// The values are not transformed in any way and thus are considered stable
22824            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22825            pub fn as_str_name(&self) -> &'static str {
22826                match self {
22827                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
22828                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
22829                }
22830            }
22831        }
22832        #[derive(Clone, PartialEq, ::prost::Oneof)]
22833        pub enum OptionalSourceStopReason {
22834            #[prost(enumeration="DataSourceStopReason", tag="1")]
22835            SourceStopReason(i32),
22836        }
22837    }
22838    /// If set, indicates that the profiler encountered a sample that was relevant,
22839    /// but was skipped.
22840    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22841    #[repr(i32)]
22842    pub enum SampleSkipReason {
22843        ProfilerSkipUnknown = 0,
22844        ProfilerSkipReadStage = 1,
22845        ProfilerSkipUnwindStage = 2,
22846        ProfilerSkipUnwindEnqueue = 3,
22847        ProfilerSkipNotInScope = 4,
22848    }
22849    impl SampleSkipReason {
22850        /// String value of the enum field names used in the ProtoBuf definition.
22851        ///
22852        /// The values are not transformed in any way and thus are considered stable
22853        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22854        pub fn as_str_name(&self) -> &'static str {
22855            match self {
22856                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
22857                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
22858                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
22859                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
22860                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
22861            }
22862        }
22863    }
22864    /// If set, stack unwinding was incomplete due to an error.
22865    /// Unset values should be treated as UNWIND_ERROR_NONE.
22866    #[derive(Clone, PartialEq, ::prost::Oneof)]
22867    pub enum OptionalUnwindError {
22868        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
22869        UnwindError(i32),
22870    }
22871    #[derive(Clone, PartialEq, ::prost::Oneof)]
22872    pub enum OptionalSampleSkippedReason {
22873        #[prost(enumeration="SampleSkipReason", tag="18")]
22874        SampleSkippedReason(i32),
22875    }
22876}
22877/// Submessage for TracePacketDefaults.
22878#[derive(Clone, PartialEq, ::prost::Message)]
22879pub struct PerfSampleDefaults {
22880    /// The sampling timebase. Might not be identical to the data source config if
22881    /// the implementation decided to default/override some parameters.
22882    #[prost(message, optional, tag="1")]
22883    pub timebase: ::core::option::Option<perf_events::Timebase>,
22884    /// Description of followers event
22885    #[prost(message, repeated, tag="4")]
22886    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
22887    /// If the config requested process sharding, report back the count and which
22888    /// of those bins was selected. Never changes for the duration of a trace.
22889    #[prost(uint32, optional, tag="2")]
22890    pub process_shard_count: ::core::option::Option<u32>,
22891    #[prost(uint32, optional, tag="3")]
22892    pub chosen_process_shard: ::core::option::Option<u32>,
22893}
22894// End of protos/perfetto/trace/profiling/profile_packet.proto
22895
22896// Begin of protos/perfetto/trace/profiling/smaps.proto
22897
22898#[derive(Clone, PartialEq, ::prost::Message)]
22899pub struct SmapsEntry {
22900    #[prost(string, optional, tag="1")]
22901    pub path: ::core::option::Option<::prost::alloc::string::String>,
22902    #[prost(uint64, optional, tag="2")]
22903    pub size_kb: ::core::option::Option<u64>,
22904    #[prost(uint64, optional, tag="3")]
22905    pub private_dirty_kb: ::core::option::Option<u64>,
22906    #[prost(uint64, optional, tag="4")]
22907    pub swap_kb: ::core::option::Option<u64>,
22908    /// for field upload (instead of path).
22909    #[prost(string, optional, tag="5")]
22910    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
22911    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
22912    #[prost(uint64, optional, tag="6")]
22913    pub start_address: ::core::option::Option<u64>,
22914    #[prost(uint64, optional, tag="7")]
22915    pub module_timestamp: ::core::option::Option<u64>,
22916    #[prost(string, optional, tag="8")]
22917    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
22918    #[prost(string, optional, tag="9")]
22919    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
22920    #[prost(uint32, optional, tag="10")]
22921    pub protection_flags: ::core::option::Option<u32>,
22922    #[prost(uint64, optional, tag="11")]
22923    pub private_clean_resident_kb: ::core::option::Option<u64>,
22924    #[prost(uint64, optional, tag="12")]
22925    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
22926    #[prost(uint64, optional, tag="13")]
22927    pub shared_clean_resident_kb: ::core::option::Option<u64>,
22928    #[prost(uint64, optional, tag="14")]
22929    pub locked_kb: ::core::option::Option<u64>,
22930    #[prost(uint64, optional, tag="15")]
22931    pub proportional_resident_kb: ::core::option::Option<u64>,
22932}
22933#[derive(Clone, PartialEq, ::prost::Message)]
22934pub struct SmapsPacket {
22935    #[prost(uint32, optional, tag="1")]
22936    pub pid: ::core::option::Option<u32>,
22937    #[prost(message, repeated, tag="2")]
22938    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
22939}
22940// End of protos/perfetto/trace/profiling/smaps.proto
22941
22942// Begin of protos/perfetto/trace/ps/process_stats.proto
22943
22944/// Per-process periodically sampled stats. These samples are wrapped in a
22945/// dedicated message (as opposite to be fields in process_tree.proto) because
22946/// they are dumped at a different rate than cmdline and thread list.
22947/// Note: not all of these stats will be present in every ProcessStats message
22948/// and sometimes processes may be missing. This is because counters are
22949/// cached to reduce emission of counters which do not change.
22950#[derive(Clone, PartialEq, ::prost::Message)]
22951pub struct ProcessStats {
22952    #[prost(message, repeated, tag="1")]
22953    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
22954    /// The time at which we finish collecting this batch of samples;
22955    /// the top-level packet timestamp is the time at which
22956    /// we begin collection.
22957    #[prost(uint64, optional, tag="2")]
22958    pub collection_end_timestamp: ::core::option::Option<u64>,
22959}
22960/// Nested message and enum types in `ProcessStats`.
22961pub mod process_stats {
22962    /// Per-thread periodically sampled stats.
22963    /// Note: not all of these stats will be present in every message. See the note
22964    /// for ProcessStats.
22965    #[derive(Clone, PartialEq, ::prost::Message)]
22966    pub struct Thread {
22967        #[prost(int32, optional, tag="1")]
22968        pub tid: ::core::option::Option<i32>,
22969    }
22970    #[derive(Clone, PartialEq, ::prost::Message)]
22971    pub struct FdInfo {
22972        #[prost(uint64, optional, tag="1")]
22973        pub fd: ::core::option::Option<u64>,
22974        #[prost(string, optional, tag="2")]
22975        pub path: ::core::option::Option<::prost::alloc::string::String>,
22976    }
22977    #[derive(Clone, PartialEq, ::prost::Message)]
22978    pub struct Process {
22979        #[prost(int32, optional, tag="1")]
22980        pub pid: ::core::option::Option<i32>,
22981        #[prost(message, repeated, tag="11")]
22982        pub threads: ::prost::alloc::vec::Vec<Thread>,
22983        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
22984        #[prost(uint64, optional, tag="2")]
22985        pub vm_size_kb: ::core::option::Option<u64>,
22986        #[prost(uint64, optional, tag="3")]
22987        pub vm_rss_kb: ::core::option::Option<u64>,
22988        #[prost(uint64, optional, tag="4")]
22989        pub rss_anon_kb: ::core::option::Option<u64>,
22990        #[prost(uint64, optional, tag="5")]
22991        pub rss_file_kb: ::core::option::Option<u64>,
22992        #[prost(uint64, optional, tag="6")]
22993        pub rss_shmem_kb: ::core::option::Option<u64>,
22994        #[prost(uint64, optional, tag="7")]
22995        pub vm_swap_kb: ::core::option::Option<u64>,
22996        #[prost(uint64, optional, tag="8")]
22997        pub vm_locked_kb: ::core::option::Option<u64>,
22998        /// When adding a new field remember to update kProcMemCounterSize in
22999        /// the trace processor.
23000        #[prost(uint64, optional, tag="9")]
23001        pub vm_hwm_kb: ::core::option::Option<u64>,
23002        #[prost(int64, optional, tag="10")]
23003        pub oom_score_adj: ::core::option::Option<i64>,
23004        /// The peak resident set size is resettable in newer Posix kernels.
23005        /// This field specifies if reset is supported and if the writer had reset
23006        /// the peaks after each process stats recording.
23007        #[prost(bool, optional, tag="12")]
23008        pub is_peak_rss_resettable: ::core::option::Option<bool>,
23009        /// Private, shared and swap footprint of the process as measured by
23010        /// Chrome. To know more about these metrics refer to:
23011        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
23012        #[prost(uint32, optional, tag="13")]
23013        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
23014        #[prost(uint32, optional, tag="14")]
23015        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
23016        #[prost(message, repeated, tag="15")]
23017        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
23018        /// These fields are set only when scan_smaps_rollup=true
23019        #[prost(uint64, optional, tag="16")]
23020        pub smr_rss_kb: ::core::option::Option<u64>,
23021        #[prost(uint64, optional, tag="17")]
23022        pub smr_pss_kb: ::core::option::Option<u64>,
23023        #[prost(uint64, optional, tag="18")]
23024        pub smr_pss_anon_kb: ::core::option::Option<u64>,
23025        #[prost(uint64, optional, tag="19")]
23026        pub smr_pss_file_kb: ::core::option::Option<u64>,
23027        #[prost(uint64, optional, tag="20")]
23028        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
23029        #[prost(uint64, optional, tag="23")]
23030        pub smr_swap_pss_kb: ::core::option::Option<u64>,
23031        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
23032        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23033        /// Resolution of "clock ticks", usually 10ms.
23034        #[prost(uint64, optional, tag="21")]
23035        pub runtime_user_mode: ::core::option::Option<u64>,
23036        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
23037        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23038        /// Resolution of "clock ticks", usually 10ms.
23039        #[prost(uint64, optional, tag="22")]
23040        pub runtime_kernel_mode: ::core::option::Option<u64>,
23041        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
23042        #[prost(uint64, optional, tag="24")]
23043        pub dmabuf_rss_kb: ::core::option::Option<u64>,
23044    }
23045}
23046// End of protos/perfetto/trace/ps/process_stats.proto
23047
23048// Begin of protos/perfetto/trace/ps/process_tree.proto
23049
23050/// Metadata about the processes and threads in the trace.
23051/// Note: this proto was designed to be filled in by traced_probes and should
23052/// only be populated with accurate information coming from the system. Other
23053/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
23054/// in TrackDescriptor.
23055#[derive(Clone, PartialEq, ::prost::Message)]
23056pub struct ProcessTree {
23057    /// List of processes and threads in the client. These lists are incremental
23058    /// and not exhaustive. A process and its threads might show up separately in
23059    /// different ProcessTree messages. A thread might event not show up at all, if
23060    /// no sched_switch activity was detected, for instance:
23061    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
23062    /// #1 { threads: [{pid: 12, tgid: 10}] }
23063    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
23064    #[prost(message, repeated, tag="1")]
23065    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
23066    #[prost(message, repeated, tag="2")]
23067    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
23068    /// The time at which we finish collecting this process tree;
23069    /// the top-level packet timestamp is the time at which
23070    /// we begin collection.
23071    #[prost(uint64, optional, tag="3")]
23072    pub collection_end_timestamp: ::core::option::Option<u64>,
23073}
23074/// Nested message and enum types in `ProcessTree`.
23075pub mod process_tree {
23076    /// Representation of a thread.
23077    #[derive(Clone, PartialEq, ::prost::Message)]
23078    pub struct Thread {
23079        /// The thread ID (as per gettid()) in the root PID namespace.
23080        #[prost(int32, optional, tag="1")]
23081        pub tid: ::core::option::Option<i32>,
23082        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
23083        #[prost(int32, optional, tag="3")]
23084        pub tgid: ::core::option::Option<i32>,
23085        /// The name of the thread.
23086        #[prost(string, optional, tag="2")]
23087        pub name: ::core::option::Option<::prost::alloc::string::String>,
23088        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
23089        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
23090        /// level thread ID) omitted.
23091        #[prost(int32, repeated, packed="false", tag="4")]
23092        pub nstid: ::prost::alloc::vec::Vec<i32>,
23093    }
23094    /// Representation of a process.
23095    #[derive(Clone, PartialEq, ::prost::Message)]
23096    pub struct Process {
23097        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
23098        /// PID namespace.
23099        #[prost(int32, optional, tag="1")]
23100        pub pid: ::core::option::Option<i32>,
23101        /// The parent process ID, as per getppid().
23102        #[prost(int32, optional, tag="2")]
23103        pub ppid: ::core::option::Option<i32>,
23104        /// The command line for the process, as per /proc/pid/cmdline, broken up on
23105        /// NUL bytes.
23106        /// If it is a kernel thread or a zombie, there will only be one cmdline
23107        /// field and it will contain /proc/pid/comm.
23108        #[prost(string, repeated, tag="3")]
23109        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23110        /// If true, the |cmdline| field was filled with the main thread's "comm"
23111        /// field instead.
23112        /// Introduced in: perfetto v50.
23113        #[prost(bool, optional, tag="9")]
23114        pub cmdline_is_comm: ::core::option::Option<bool>,
23115        /// The uid for the process, as per /proc/pid/status.
23116        #[prost(int32, optional, tag="5")]
23117        pub uid: ::core::option::Option<i32>,
23118        /// The non-root-level process IDs if the process runs in a PID namespace.
23119        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
23120        /// (root-level process ID) omitted.
23121        #[prost(int32, repeated, packed="false", tag="6")]
23122        pub nspid: ::prost::alloc::vec::Vec<i32>,
23123        /// Timestamp of when the process was created, in nanoseconds
23124        /// from boot. Parsed from starttime in /proc/pid/stat.
23125        /// Recorded if record_process_age config option is set.
23126        /// Resolution of "clock ticks", usually 10ms.
23127        #[prost(uint64, optional, tag="7")]
23128        pub process_start_from_boot: ::core::option::Option<u64>,
23129        /// If true, the process is a kernel thread.
23130        /// Set only on linux v6.4+. For traces from older devices, it is possible to
23131        /// infer most kthreads by checking that they're a descendant of kthreadd
23132        /// (pid=2), or are the idle process (pid=0).
23133        /// Introduced in: perfetto v50.
23134        #[prost(bool, optional, tag="8")]
23135        pub is_kthread: ::core::option::Option<bool>,
23136    }
23137}
23138// End of protos/perfetto/trace/ps/process_tree.proto
23139
23140// Begin of protos/perfetto/trace/remote_clock_sync.proto
23141
23142/// Records the parameters for aligning clock readings between machines.
23143#[derive(Clone, PartialEq, ::prost::Message)]
23144pub struct RemoteClockSync {
23145    #[prost(message, repeated, tag="1")]
23146    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
23147}
23148/// Nested message and enum types in `RemoteClockSync`.
23149pub mod remote_clock_sync {
23150    /// Synchronized clock snapshots taken on both sides of the relay port (the
23151    /// tracing service and the relay service). A round of clock synchronization
23152    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
23153    /// snapshot -> client snapshot -> host snapshot.
23154    #[derive(Clone, PartialEq, ::prost::Message)]
23155    pub struct SyncedClocks {
23156        #[prost(message, optional, tag="2")]
23157        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
23158        #[prost(message, optional, tag="3")]
23159        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
23160    }
23161}
23162// End of protos/perfetto/trace/remote_clock_sync.proto
23163
23164// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
23165
23166/// Deliberate empty message. See comment on StatsdAtom#atom below.
23167#[derive(Clone, PartialEq, ::prost::Message)]
23168pub struct Atom {
23169}
23170/// One or more statsd atoms. This must continue to match:
23171/// perfetto/protos/third_party/statsd/shell_data.proto
23172/// So that we can efficiently add data from statsd directly to the
23173/// trace.
23174#[derive(Clone, PartialEq, ::prost::Message)]
23175pub struct StatsdAtom {
23176    /// Atom should be filled with an Atom proto from:
23177    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
23178    /// We don't reference Atom directly here since we don't want to import
23179    /// Atom.proto and all its transitive dependencies into Perfetto.
23180    /// atom and timestamp_nanos have the same cardinality
23181    #[prost(message, repeated, tag="1")]
23182    pub atom: ::prost::alloc::vec::Vec<Atom>,
23183    #[prost(int64, repeated, packed="false", tag="2")]
23184    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
23185}
23186// End of protos/perfetto/trace/statsd/statsd_atom.proto
23187
23188// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
23189
23190/// Various Linux system stat counters from /proc.
23191/// The fields in this message can be reported at different rates and with
23192/// different granularity. See sys_stats_config.proto.
23193#[derive(Clone, PartialEq, ::prost::Message)]
23194pub struct SysStats {
23195    #[prost(message, repeated, tag="1")]
23196    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
23197    #[prost(message, repeated, tag="2")]
23198    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
23199    /// One entry per cpu.
23200    #[prost(message, repeated, tag="3")]
23201    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
23202    /// Num processes forked since boot.
23203    /// Populated only if FORK_COUNT in config.stat_counters.
23204    #[prost(uint64, optional, tag="4")]
23205    pub num_forks: ::core::option::Option<u64>,
23206    // Number of interrupts, broken by IRQ number.
23207    // Populated only if IRQ_COUNTS in config.stat_counters.
23208
23209    /// Total num of irqs serviced since boot.
23210    #[prost(uint64, optional, tag="5")]
23211    pub num_irq_total: ::core::option::Option<u64>,
23212    #[prost(message, repeated, tag="6")]
23213    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
23214    // Number of softirqs, broken by softirq number.
23215    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
23216
23217    /// Total num of softirqs since boot.
23218    #[prost(uint64, optional, tag="7")]
23219    pub num_softirq_total: ::core::option::Option<u64>,
23220    /// Per-softirq count.
23221    #[prost(message, repeated, tag="8")]
23222    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
23223    /// The time at which we finish collecting this set of samples;
23224    /// the top-level packet timestamp is the time at which
23225    /// we begin collection.
23226    #[prost(uint64, optional, tag="9")]
23227    pub collection_end_timestamp: ::core::option::Option<u64>,
23228    /// One entry per device.
23229    #[prost(message, repeated, tag="10")]
23230    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
23231    /// Cpu current frequency from
23232    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
23233    /// One entry per cpu. Report 0 for offline cpu
23234    #[prost(uint32, repeated, packed="false", tag="11")]
23235    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
23236    /// One entry per each node's zones.
23237    #[prost(message, repeated, tag="12")]
23238    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
23239    /// One entry per disk device.
23240    #[prost(message, repeated, tag="13")]
23241    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
23242    /// One entry per PsiResource type.
23243    #[prost(message, repeated, tag="14")]
23244    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
23245    #[prost(message, repeated, tag="15")]
23246    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
23247    #[prost(message, repeated, tag="16")]
23248    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
23249    /// Read GPU frequency info on Intel/AMD devices.
23250    #[prost(uint64, repeated, packed="false", tag="17")]
23251    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
23252}
23253/// Nested message and enum types in `SysStats`.
23254pub mod sys_stats {
23255    /// Counters from /proc/meminfo. Values are in KB.
23256    #[derive(Clone, PartialEq, ::prost::Message)]
23257    pub struct MeminfoValue {
23258        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
23259        pub key: ::core::option::Option<i32>,
23260        #[prost(uint64, optional, tag="2")]
23261        pub value: ::core::option::Option<u64>,
23262    }
23263    /// Counter from /proc/vmstat. Units are often pages, not KB.
23264    #[derive(Clone, PartialEq, ::prost::Message)]
23265    pub struct VmstatValue {
23266        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
23267        pub key: ::core::option::Option<i32>,
23268        #[prost(uint64, optional, tag="2")]
23269        pub value: ::core::option::Option<u64>,
23270    }
23271    /// Times in each mode, since boot. Unit: nanoseconds.
23272    #[derive(Clone, PartialEq, ::prost::Message)]
23273    pub struct CpuTimes {
23274        #[prost(uint32, optional, tag="1")]
23275        pub cpu_id: ::core::option::Option<u32>,
23276        /// Time spent in user mode.
23277        #[prost(uint64, optional, tag="2")]
23278        pub user_ns: ::core::option::Option<u64>,
23279        /// Time spent in user mode (low prio).
23280        #[prost(uint64, optional, tag="3")]
23281        pub user_nice_ns: ::core::option::Option<u64>,
23282        /// Time spent in system mode.
23283        #[prost(uint64, optional, tag="4")]
23284        pub system_mode_ns: ::core::option::Option<u64>,
23285        /// Time spent in the idle task.
23286        #[prost(uint64, optional, tag="5")]
23287        pub idle_ns: ::core::option::Option<u64>,
23288        /// Time spent waiting for I/O.
23289        #[prost(uint64, optional, tag="6")]
23290        pub io_wait_ns: ::core::option::Option<u64>,
23291        /// Time spent servicing interrupts.
23292        #[prost(uint64, optional, tag="7")]
23293        pub irq_ns: ::core::option::Option<u64>,
23294        /// Time spent servicing softirqs.
23295        #[prost(uint64, optional, tag="8")]
23296        pub softirq_ns: ::core::option::Option<u64>,
23297        /// Time spent executing something else on host than this guest.
23298        #[prost(uint64, optional, tag="9")]
23299        pub steal_ns: ::core::option::Option<u64>,
23300    }
23301    #[derive(Clone, PartialEq, ::prost::Message)]
23302    pub struct InterruptCount {
23303        #[prost(int32, optional, tag="1")]
23304        pub irq: ::core::option::Option<i32>,
23305        #[prost(uint64, optional, tag="2")]
23306        pub count: ::core::option::Option<u64>,
23307    }
23308    /// Frequencies for /sys/class/devfreq/ entries in kHz.
23309    #[derive(Clone, PartialEq, ::prost::Message)]
23310    pub struct DevfreqValue {
23311        #[prost(string, optional, tag="1")]
23312        pub key: ::core::option::Option<::prost::alloc::string::String>,
23313        #[prost(uint64, optional, tag="2")]
23314        pub value: ::core::option::Option<u64>,
23315    }
23316    #[derive(Clone, PartialEq, ::prost::Message)]
23317    pub struct BuddyInfo {
23318        #[prost(string, optional, tag="1")]
23319        pub node: ::core::option::Option<::prost::alloc::string::String>,
23320        #[prost(string, optional, tag="2")]
23321        pub zone: ::core::option::Option<::prost::alloc::string::String>,
23322        #[prost(uint32, repeated, packed="false", tag="3")]
23323        pub order_pages: ::prost::alloc::vec::Vec<u32>,
23324    }
23325    /// Counters from /proc/diskstats.
23326    #[derive(Clone, PartialEq, ::prost::Message)]
23327    pub struct DiskStat {
23328        #[prost(string, optional, tag="1")]
23329        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
23330        #[prost(uint64, optional, tag="2")]
23331        pub read_sectors: ::core::option::Option<u64>,
23332        #[prost(uint64, optional, tag="3")]
23333        pub read_time_ms: ::core::option::Option<u64>,
23334        #[prost(uint64, optional, tag="4")]
23335        pub write_sectors: ::core::option::Option<u64>,
23336        #[prost(uint64, optional, tag="5")]
23337        pub write_time_ms: ::core::option::Option<u64>,
23338        #[prost(uint64, optional, tag="6")]
23339        pub discard_sectors: ::core::option::Option<u64>,
23340        #[prost(uint64, optional, tag="7")]
23341        pub discard_time_ms: ::core::option::Option<u64>,
23342        #[prost(uint64, optional, tag="8")]
23343        pub flush_count: ::core::option::Option<u64>,
23344        #[prost(uint64, optional, tag="9")]
23345        pub flush_time_ms: ::core::option::Option<u64>,
23346    }
23347    /// Reading from /proc/pressure/*.
23348    #[derive(Clone, PartialEq, ::prost::Message)]
23349    pub struct PsiSample {
23350        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
23351        pub resource: ::core::option::Option<i32>,
23352        /// Total absolute stall time (in nanos) for a given resource.
23353        /// While PSI readings are in micros, we store in nanos for consistency with
23354        /// most other time-based counters.
23355        #[prost(uint64, optional, tag="2")]
23356        pub total_ns: ::core::option::Option<u64>,
23357    }
23358    /// Nested message and enum types in `PsiSample`.
23359    pub mod psi_sample {
23360        /// Type of resource that may have exhibited pressure stalls.
23361        ///     * _SOME indicates some resource tasks stalled.
23362        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
23363        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23364        #[repr(i32)]
23365        pub enum PsiResource {
23366            Unspecified = 0,
23367            CpuSome = 1,
23368            CpuFull = 2,
23369            IoSome = 3,
23370            IoFull = 4,
23371            MemorySome = 5,
23372            MemoryFull = 6,
23373        }
23374        impl PsiResource {
23375            /// String value of the enum field names used in the ProtoBuf definition.
23376            ///
23377            /// The values are not transformed in any way and thus are considered stable
23378            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23379            pub fn as_str_name(&self) -> &'static str {
23380                match self {
23381                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
23382                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
23383                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
23384                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
23385                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
23386                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
23387                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
23388                }
23389            }
23390        }
23391    }
23392    /// Reading from /sys/class/thermal/*.
23393    #[derive(Clone, PartialEq, ::prost::Message)]
23394    pub struct ThermalZone {
23395        #[prost(string, optional, tag="1")]
23396        pub name: ::core::option::Option<::prost::alloc::string::String>,
23397        #[prost(uint64, optional, tag="2")]
23398        pub temp: ::core::option::Option<u64>,
23399        #[prost(string, optional, tag="3")]
23400        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23401    }
23402    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
23403    #[derive(Clone, PartialEq, ::prost::Message)]
23404    pub struct CpuIdleStateEntry {
23405        /// Name of the idle state, e.g. C1-C10
23406        #[prost(string, optional, tag="1")]
23407        pub state: ::core::option::Option<::prost::alloc::string::String>,
23408        #[prost(uint64, optional, tag="2")]
23409        pub duration_us: ::core::option::Option<u64>,
23410    }
23411    #[derive(Clone, PartialEq, ::prost::Message)]
23412    pub struct CpuIdleState {
23413        #[prost(uint32, optional, tag="1")]
23414        pub cpu_id: ::core::option::Option<u32>,
23415        #[prost(message, repeated, tag="2")]
23416        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
23417    }
23418}
23419// End of protos/perfetto/trace/sys_stats/sys_stats.proto
23420
23421// Begin of protos/perfetto/trace/system_info/cpu_info.proto
23422
23423/// Information about CPUs from procfs and sysfs.
23424#[derive(Clone, PartialEq, ::prost::Message)]
23425pub struct CpuInfo {
23426    /// Describes available CPUs, one entry per CPU.
23427    #[prost(message, repeated, tag="1")]
23428    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
23429}
23430/// Nested message and enum types in `CpuInfo`.
23431pub mod cpu_info {
23432    #[derive(Clone, PartialEq, ::prost::Message)]
23433    pub struct ArmCpuIdentifier {
23434        /// Implementer code
23435        #[prost(uint32, optional, tag="1")]
23436        pub implementer: ::core::option::Option<u32>,
23437        /// Architecture code
23438        #[prost(uint32, optional, tag="2")]
23439        pub architecture: ::core::option::Option<u32>,
23440        /// CPU variant
23441        #[prost(uint32, optional, tag="3")]
23442        pub variant: ::core::option::Option<u32>,
23443        /// CPU part
23444        #[prost(uint32, optional, tag="4")]
23445        pub part: ::core::option::Option<u32>,
23446        /// CPU revision
23447        #[prost(uint32, optional, tag="5")]
23448        pub revision: ::core::option::Option<u32>,
23449    }
23450    /// Information about a single CPU.
23451    #[derive(Clone, PartialEq, ::prost::Message)]
23452    pub struct Cpu {
23453        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
23454        /// Example: "AArch64 Processor rev 12 (aarch64)"
23455        #[prost(string, optional, tag="1")]
23456        pub processor: ::core::option::Option<::prost::alloc::string::String>,
23457        /// Frequencies from
23458        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
23459        /// where X is the index of this CPU.
23460        #[prost(uint32, repeated, packed="false", tag="2")]
23461        pub frequencies: ::prost::alloc::vec::Vec<u32>,
23462        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
23463        /// the index of this CPU.
23464        #[prost(uint32, optional, tag="3")]
23465        pub capacity: ::core::option::Option<u32>,
23466        /// Features is a bitmap containing a bit set for each feature defined in
23467        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
23468        /// index.
23469        #[prost(uint64, optional, tag="5")]
23470        pub features: ::core::option::Option<u64>,
23471        /// Code to identify the CPU
23472        #[prost(oneof="cpu::Identifier", tags="4")]
23473        pub identifier: ::core::option::Option<cpu::Identifier>,
23474    }
23475    /// Nested message and enum types in `Cpu`.
23476    pub mod cpu {
23477        /// Code to identify the CPU
23478        #[derive(Clone, PartialEq, ::prost::Oneof)]
23479        pub enum Identifier {
23480            #[prost(message, tag="4")]
23481            ArmIdentifier(super::ArmCpuIdentifier),
23482        }
23483    }
23484}
23485// End of protos/perfetto/trace/system_info/cpu_info.proto
23486
23487// Begin of protos/perfetto/trace/test_event.proto
23488
23489/// Event used by testing code.
23490#[derive(Clone, PartialEq, ::prost::Message)]
23491pub struct TestEvent {
23492    /// Arbitrary string used in tests.
23493    #[prost(string, optional, tag="1")]
23494    pub str: ::core::option::Option<::prost::alloc::string::String>,
23495    /// The current value of the random number sequence used in tests.
23496    #[prost(uint32, optional, tag="2")]
23497    pub seq_value: ::core::option::Option<u32>,
23498    /// Monotonically increased on each packet.
23499    #[prost(uint64, optional, tag="3")]
23500    pub counter: ::core::option::Option<u64>,
23501    /// No more packets should follow (from the current sequence).
23502    #[prost(bool, optional, tag="4")]
23503    pub is_last: ::core::option::Option<bool>,
23504    #[prost(message, optional, tag="5")]
23505    pub payload: ::core::option::Option<test_event::TestPayload>,
23506    #[prost(message, optional, tag="6")]
23507    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
23508    #[prost(message, optional, tag="7")]
23509    pub protovm_incremental_state: ::core::option::Option<test_event::ProtoVmIncrementalState>,
23510}
23511/// Nested message and enum types in `TestEvent`.
23512pub mod test_event {
23513    #[derive(Clone, PartialEq, ::prost::Message)]
23514    pub struct TestPayload {
23515        #[prost(string, repeated, tag="1")]
23516        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23517        #[prost(message, repeated, tag="2")]
23518        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
23519        #[prost(string, optional, tag="4")]
23520        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
23521        #[prost(int32, optional, tag="5")]
23522        pub single_int: ::core::option::Option<i32>,
23523        #[prost(int32, repeated, packed="false", tag="6")]
23524        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
23525        /// When 0 this is the bottom-most nested message.
23526        #[prost(uint32, optional, tag="3")]
23527        pub remaining_nesting_depth: ::core::option::Option<u32>,
23528        #[prost(message, repeated, tag="7")]
23529        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
23530    }
23531    /// Simple ProtoVm patch and incremental state formats used for integration
23532    /// testing
23533    #[derive(Clone, PartialEq, ::prost::Message)]
23534    pub struct ProtoVmPatch {
23535        #[prost(string, optional, tag="1")]
23536        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
23537        #[prost(int32, optional, tag="2")]
23538        pub int_to_merge: ::core::option::Option<i32>,
23539    }
23540    #[derive(Clone, PartialEq, ::prost::Message)]
23541    pub struct ProtoVmIncrementalState {
23542        #[prost(string, optional, tag="1")]
23543        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
23544        #[prost(int32, optional, tag="2")]
23545        pub int_merged: ::core::option::Option<i32>,
23546    }
23547}
23548// End of protos/perfetto/trace/test_event.proto
23549
23550// Begin of protos/perfetto/trace/trace_packet_defaults.proto
23551
23552/// Default values for TracePacket fields that hold for a particular TraceWriter
23553/// packet sequence. This message contains a subset of the TracePacket fields
23554/// with matching IDs. When provided, these fields define the default values
23555/// that should be applied, at import time, to all TracePacket(s) with the same
23556/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
23557///
23558/// Should be reemitted whenever incremental state is cleared on the sequence.
23559#[derive(Clone, PartialEq, ::prost::Message)]
23560pub struct TracePacketDefaults {
23561    #[prost(uint32, optional, tag="58")]
23562    pub timestamp_clock_id: ::core::option::Option<u32>,
23563    /// Default values for TrackEvents (e.g. default track).
23564    #[prost(message, optional, tag="11")]
23565    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
23566    /// Defaults for perf profiler packets (PerfSample).
23567    #[prost(message, optional, tag="12")]
23568    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
23569    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
23570    /// V8RegexpCode)
23571    #[prost(message, optional, tag="99")]
23572    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
23573}
23574// Begin of protos/perfetto/trace/trace_uuid.proto
23575
23576/// A random unique ID that identifies the trace.
23577/// This message has been introduced in v32. Prior to that, the UUID was
23578/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
23579/// This has been moved to a standalone packet to deal with new use-cases for
23580/// go/gapless-aot, where the same tracing session can be serialized several
23581/// times, in which case the UUID is changed on each snapshot and does not match
23582/// the one in the TraceConfig.
23583#[derive(Clone, PartialEq, ::prost::Message)]
23584pub struct TraceUuid {
23585    #[prost(int64, optional, tag="1")]
23586    pub msb: ::core::option::Option<i64>,
23587    #[prost(int64, optional, tag="2")]
23588    pub lsb: ::core::option::Option<i64>,
23589}
23590// End of protos/perfetto/trace/trace_uuid.proto
23591
23592// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
23593
23594/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
23595/// usually by the process's main thread.
23596///
23597/// Next id: 9.
23598#[derive(Clone, PartialEq, ::prost::Message)]
23599pub struct ProcessDescriptor {
23600    #[prost(int32, optional, tag="1")]
23601    pub pid: ::core::option::Option<i32>,
23602    #[prost(string, repeated, tag="2")]
23603    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23604    #[prost(string, optional, tag="6")]
23605    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
23606    #[prost(int32, optional, tag="5")]
23607    pub process_priority: ::core::option::Option<i32>,
23608    /// Process start time in nanoseconds.
23609    /// The timestamp refers to the trace clock by default. Other clock IDs
23610    /// provided in TracePacket are not supported.
23611    #[prost(int64, optional, tag="7")]
23612    pub start_timestamp_ns: ::core::option::Option<i64>,
23613    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
23614    pub chrome_process_type: ::core::option::Option<i32>,
23615    /// To support old UI. New UI should determine default sorting by process_type.
23616    #[prost(int32, optional, tag="3")]
23617    pub legacy_sort_index: ::core::option::Option<i32>,
23618    /// Labels can be used to further describe properties of the work performed by
23619    /// the process. For example, these can be used by Chrome renderer process to
23620    /// provide titles of frames being rendered.
23621    #[prost(string, repeated, tag="8")]
23622    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23623}
23624/// Nested message and enum types in `ProcessDescriptor`.
23625pub mod process_descriptor {
23626    // ---------------------------------------------------------------------------
23627    // Deprecated / legacy fields, which will be removed in the future:
23628    // ---------------------------------------------------------------------------
23629
23630    /// See chromium's content::ProcessType.
23631    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23632    #[repr(i32)]
23633    pub enum ChromeProcessType {
23634        ProcessUnspecified = 0,
23635        ProcessBrowser = 1,
23636        ProcessRenderer = 2,
23637        ProcessUtility = 3,
23638        ProcessZygote = 4,
23639        ProcessSandboxHelper = 5,
23640        ProcessGpu = 6,
23641        ProcessPpapiPlugin = 7,
23642        ProcessPpapiBroker = 8,
23643    }
23644    impl ChromeProcessType {
23645        /// String value of the enum field names used in the ProtoBuf definition.
23646        ///
23647        /// The values are not transformed in any way and thus are considered stable
23648        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23649        pub fn as_str_name(&self) -> &'static str {
23650            match self {
23651                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
23652                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
23653                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
23654                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
23655                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
23656                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
23657                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
23658                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
23659                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
23660            }
23661        }
23662    }
23663}
23664// End of protos/perfetto/trace/track_event/process_descriptor.proto
23665
23666// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
23667
23668/// This message specifies the "range of interest" for track events. With the
23669/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
23670/// Trace Processor drops track events outside of this range.
23671#[derive(Clone, PartialEq, ::prost::Message)]
23672pub struct TrackEventRangeOfInterest {
23673    #[prost(int64, optional, tag="1")]
23674    pub start_us: ::core::option::Option<i64>,
23675}
23676// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
23677
23678/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
23679/// usually by the thread's trace writer.
23680///
23681/// Next id: 9.
23682#[derive(Clone, PartialEq, ::prost::Message)]
23683pub struct ThreadDescriptor {
23684    #[prost(int32, optional, tag="1")]
23685    pub pid: ::core::option::Option<i32>,
23686    #[prost(int32, optional, tag="2")]
23687    pub tid: ::core::option::Option<i32>,
23688    #[prost(string, optional, tag="5")]
23689    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
23690    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
23691    pub chrome_thread_type: ::core::option::Option<i32>,
23692    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
23693    /// and timestamp_clock_id fields instead.
23694    #[prost(int64, optional, tag="6")]
23695    pub reference_timestamp_us: ::core::option::Option<i64>,
23696    /// Absolute reference values. Clock values in subsequent TrackEvents can be
23697    /// encoded accumulatively and relative to these. This reduces their var-int
23698    /// encoding size.
23699    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
23700    #[prost(int64, optional, tag="7")]
23701    pub reference_thread_time_us: ::core::option::Option<i64>,
23702    #[prost(int64, optional, tag="8")]
23703    pub reference_thread_instruction_count: ::core::option::Option<i64>,
23704    /// To support old UI. New UI should determine default sorting by thread_type.
23705    #[prost(int32, optional, tag="3")]
23706    pub legacy_sort_index: ::core::option::Option<i32>,
23707}
23708/// Nested message and enum types in `ThreadDescriptor`.
23709pub mod thread_descriptor {
23710    // ---------------------------------------------------------------------------
23711    // Deprecated / legacy fields, which will be removed in the future:
23712    // ---------------------------------------------------------------------------
23713
23714    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23715    #[repr(i32)]
23716    pub enum ChromeThreadType {
23717        ChromeThreadUnspecified = 0,
23718        ChromeThreadMain = 1,
23719        ChromeThreadIo = 2,
23720        /// Scheduler:
23721        ChromeThreadPoolBgWorker = 3,
23722        ChromeThreadPoolFgWorker = 4,
23723        ChromeThreadPoolFbBlocking = 5,
23724        ChromeThreadPoolBgBlocking = 6,
23725        ChromeThreadPoolService = 7,
23726        /// Compositor:
23727        ChromeThreadCompositor = 8,
23728        ChromeThreadVizCompositor = 9,
23729        ChromeThreadCompositorWorker = 10,
23730        /// Renderer:
23731        ChromeThreadServiceWorker = 11,
23732        /// Tracing related threads:
23733        ChromeThreadMemoryInfra = 50,
23734        ChromeThreadSamplingProfiler = 51,
23735    }
23736    impl ChromeThreadType {
23737        /// String value of the enum field names used in the ProtoBuf definition.
23738        ///
23739        /// The values are not transformed in any way and thus are considered stable
23740        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23741        pub fn as_str_name(&self) -> &'static str {
23742            match self {
23743                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
23744                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
23745                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
23746                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
23747                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
23748                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
23749                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
23750                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
23751                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
23752                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
23753                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
23754                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
23755                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
23756                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
23757            }
23758        }
23759    }
23760}
23761// End of protos/perfetto/trace/track_event/thread_descriptor.proto
23762
23763// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23764
23765/// Describes the attributes for a Chrome process. Must be paired with a
23766/// ProcessDescriptor in the same TrackDescriptor.
23767///
23768/// Next id: 6.
23769#[derive(Clone, PartialEq, ::prost::Message)]
23770pub struct ChromeProcessDescriptor {
23771    /// This is a chrome_enums::ProcessType from
23772    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23773    /// be imported here because of a dependency loop.
23774    #[prost(int32, optional, tag="1")]
23775    pub process_type: ::core::option::Option<i32>,
23776    #[prost(int32, optional, tag="2")]
23777    pub process_priority: ::core::option::Option<i32>,
23778    /// To support old UI. New UI should determine default sorting by process_type.
23779    #[prost(int32, optional, tag="3")]
23780    pub legacy_sort_index: ::core::option::Option<i32>,
23781    /// Name of the hosting app for WebView. Used to match renderer processes to
23782    /// their hosting apps.
23783    #[prost(string, optional, tag="4")]
23784    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
23785    /// The ID to link crashes to trace.
23786    /// Notes:
23787    /// * The ID is per process. So, each trace may contain many IDs, and you need
23788    ///    to look for the ID from crashed process to find the crash report.
23789    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
23790    ///    get an uploaded trace, since uploads could have failed.
23791    /// * On the other hand, if there was a crash during the session and trace was
23792    ///    uploaded, it is very likely to find a crash report with the trace ID.
23793    /// * This is not crash ID or trace ID. It is just a random 64-bit number
23794    ///    recorded in both traces and crashes. It is possible to have collisions,
23795    ///    though very rare.
23796    #[prost(uint64, optional, tag="5")]
23797    pub crash_trace_id: ::core::option::Option<u64>,
23798}
23799// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23800
23801// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23802
23803/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
23804/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
23805/// in the same TrackDescriptor.
23806///
23807/// Next id: 3.
23808#[derive(Clone, PartialEq, ::prost::Message)]
23809pub struct ChromeThreadDescriptor {
23810    /// This is a chrome_enums::ThreadType from
23811    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23812    /// be imported here because of a dependency loop.
23813    #[prost(int32, optional, tag="1")]
23814    pub thread_type: ::core::option::Option<i32>,
23815    /// To support old UI. New UI should determine default sorting by thread_type.
23816    #[prost(int32, optional, tag="2")]
23817    pub legacy_sort_index: ::core::option::Option<i32>,
23818    /// Indicates whether the thread's tid specified in the thread descriptor is
23819    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
23820    #[prost(bool, optional, tag="3")]
23821    pub is_sandboxed_tid: ::core::option::Option<bool>,
23822}
23823// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23824
23825// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
23826
23827/// Defines properties of a counter track, e.g. for built-in counters (thread
23828/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
23829/// a specific app component).
23830///
23831/// Counter tracks only support TYPE_COUNTER track events, which specify new
23832/// values for the counter. For counters that require per-slice values, counter
23833/// values can instead be provided in a more efficient encoding via TrackEvent's
23834/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
23835/// slice-type events cannot be emitted onto a counter track.
23836///
23837/// Values for counters that are only emitted on a single packet sequence can
23838/// optionally be delta-encoded, see |is_incremental|.
23839///
23840/// Next id: 7.
23841#[derive(Clone, PartialEq, ::prost::Message)]
23842pub struct CounterDescriptor {
23843    /// For built-in counters (e.g. thread time). Custom user-specified counters
23844    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
23845    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
23846    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
23847    pub r#type: ::core::option::Option<i32>,
23848    /// Names of categories of the counter (usually for user-specified counters).
23849    /// In the client library, categories are a way to turn groups of individual
23850    /// counters (or events) on or off.
23851    #[prost(string, repeated, tag="2")]
23852    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23853    /// Type of the counter's values. Built-in counters imply a value for this
23854    /// field.
23855    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
23856    pub unit: ::core::option::Option<i32>,
23857    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
23858    /// name can be used instead.
23859    #[prost(string, optional, tag="6")]
23860    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
23861    /// Multiplication factor of this counter's values, e.g. to supply
23862    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
23863    #[prost(int64, optional, tag="4")]
23864    pub unit_multiplier: ::core::option::Option<i64>,
23865    /// Whether values for this counter are provided as delta values. Only
23866    /// supported for counters that are emitted on a single packet-sequence (e.g.
23867    /// thread time). Counter values in subsequent packets on the current packet
23868    /// sequence will be interpreted as delta values from the sequence's most
23869    /// recent value for the counter. When incremental state is cleared, the
23870    /// counter value is considered to be reset to 0. Thus, the first value after
23871    /// incremental state is cleared is effectively an absolute value.
23872    #[prost(bool, optional, tag="5")]
23873    pub is_incremental: ::core::option::Option<bool>,
23874    // TODO(eseckler): Support arguments describing the counter (?).
23875    // repeated DebugAnnotation debug_annotations;
23876
23877    /// When visualizing multiple counter tracks, it is often useful to have them
23878    /// share the same Y-axis range. This allows for easy comparison of their
23879    /// values.
23880    ///
23881    /// All counter tracks with the same |y_axis_share_key| and the same parent
23882    /// track (e.g. grouped under the same process track) will share their y-axis
23883    /// range in the UI.
23884    #[prost(string, optional, tag="7")]
23885    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
23886}
23887/// Nested message and enum types in `CounterDescriptor`.
23888pub mod counter_descriptor {
23889    /// Built-in counters, usually with special meaning in the client library,
23890    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
23891    /// track name from the enum value if none is provided in TrackDescriptor.
23892    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23893    #[repr(i32)]
23894    pub enum BuiltinCounterType {
23895        CounterUnspecified = 0,
23896        // Thread-scoped counters. The thread's track should be specified via
23897        // |parent_uuid| in the TrackDescriptor for such a counter.
23898
23899        /// implies UNIT_TIME_NS.
23900        CounterThreadTimeNs = 1,
23901        /// implies UNIT_COUNT.
23902        CounterThreadInstructionCount = 2,
23903    }
23904    impl BuiltinCounterType {
23905        /// String value of the enum field names used in the ProtoBuf definition.
23906        ///
23907        /// The values are not transformed in any way and thus are considered stable
23908        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23909        pub fn as_str_name(&self) -> &'static str {
23910            match self {
23911                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
23912                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
23913                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
23914            }
23915        }
23916    }
23917    /// Type of the values for the counters - to supply lower granularity units,
23918    /// see also |unit_multiplier|.
23919    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23920    #[repr(i32)]
23921    pub enum Unit {
23922        Unspecified = 0,
23923        TimeNs = 1,
23924        Count = 2,
23925        /// TODO(eseckler): Support more units as necessary.
23926        SizeBytes = 3,
23927    }
23928    impl Unit {
23929        /// String value of the enum field names used in the ProtoBuf definition.
23930        ///
23931        /// The values are not transformed in any way and thus are considered stable
23932        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23933        pub fn as_str_name(&self) -> &'static str {
23934            match self {
23935                Unit::Unspecified => "UNIT_UNSPECIFIED",
23936                Unit::TimeNs => "UNIT_TIME_NS",
23937                Unit::Count => "UNIT_COUNT",
23938                Unit::SizeBytes => "UNIT_SIZE_BYTES",
23939            }
23940        }
23941    }
23942}
23943// End of protos/perfetto/trace/track_event/counter_descriptor.proto
23944
23945// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
23946
23947/// Defines a track for TrackEvents. Slices and instant events on the same track
23948/// will be nested based on their timestamps, see TrackEvent::Type.
23949///
23950/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
23951/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
23952/// when the ring buffer wraps, it should be reemitted whenever incremental state
23953/// is cleared.
23954///
23955/// As a fallback, TrackEvents emitted without an explicit track association will
23956/// be associated with an implicit trace-global track (uuid = 0), see also
23957/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
23958/// TrackDescriptor for this implicit track.
23959///
23960/// Next id: 18.
23961#[derive(Clone, PartialEq, ::prost::Message)]
23962pub struct TrackDescriptor {
23963    /// Unique ID that identifies this track. This ID is global to the whole trace.
23964    /// Producers should ensure that it is unlikely to clash with IDs emitted by
23965    /// other producers. A value of 0 denotes the implicit trace-global track.
23966    ///
23967    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
23968    /// event id + id_scope, pid, and/or tid to compute this ID.
23969    #[prost(uint64, optional, tag="1")]
23970    pub uuid: ::core::option::Option<u64>,
23971    /// A parent track reference can be used to describe relationships between
23972    /// tracks. For example, to define an asynchronous track which is scoped to a
23973    /// specific process, specify the uuid for that process's process track here.
23974    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
23975    /// thread, specify the uuid for that thread's thread track here. In general,
23976    /// setting a parent will *nest* that track under the parent in the UI and in
23977    /// the trace processor data model (with the important exception noted below).
23978    ///
23979    /// If not specified, the track will be a root track, i.e. not nested under any
23980    /// other track.
23981    ///
23982    /// Note: if the `thread` or `process` fields are set, this value will be
23983    /// *ignored* as priority is given to those fields.
23984    ///
23985    /// Note: if the parent is set to a track with `thread` or `process` fields
23986    /// set, the track will *not* be nested under the parent in the UI and in the
23987    /// trace processor data model. Instead, the track will inherit the parent's
23988    /// thread/process association and will appear as a *sibling* of the parent.
23989    /// This semantic exists for back-compat reasons as the UI used to work this
23990    /// way for years and changing this leads to a lot of traces subtly breaking.
23991    /// If you want to force nesting, create *another* intermediate track to act as
23992    /// the parent.
23993    #[prost(uint64, optional, tag="5")]
23994    pub parent_uuid: ::core::option::Option<u64>,
23995    /// A human-readable description of the track providing more context about its
23996    /// data. In the UI, this is shown in a popup when the track's help button is
23997    /// clicked.
23998    #[prost(string, optional, tag="14")]
23999    pub description: ::core::option::Option<::prost::alloc::string::String>,
24000    /// Associate the track with a process, making it the process-global track.
24001    /// There should only be one such track per process (usually for instant
24002    /// events; trace processor uses this fact to detect pid reuse). If you need
24003    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
24004    ///
24005    /// Trace processor will merge events on a process track with slice-type events
24006    /// from other sources (e.g. ftrace) for the same process into a single
24007    /// timeline view.
24008    #[prost(message, optional, tag="3")]
24009    pub process: ::core::option::Option<ProcessDescriptor>,
24010    #[prost(message, optional, tag="6")]
24011    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
24012    /// Associate the track with a thread, indicating that the track's events
24013    /// describe synchronous code execution on the thread. There should only be one
24014    /// such track per thread (trace processor uses this fact to detect tid reuse).
24015    ///
24016    /// Trace processor will merge events on a thread track with slice-type events
24017    /// from other sources (e.g. ftrace) for the same thread into a single timeline
24018    /// view.
24019    #[prost(message, optional, tag="4")]
24020    pub thread: ::core::option::Option<ThreadDescriptor>,
24021    #[prost(message, optional, tag="7")]
24022    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
24023    /// Descriptor for a counter track. If set, the track will only support
24024    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
24025    /// |extra_counter_values|).
24026    #[prost(message, optional, tag="8")]
24027    pub counter: ::core::option::Option<CounterDescriptor>,
24028    /// If true, forces Trace Processor to use separate tracks for track events
24029    /// and system events for the same thread.
24030    ///
24031    /// Track events timestamps in Chrome have microsecond resolution, while
24032    /// system events use nanoseconds. It results in broken event nesting when
24033    /// track events and system events share a track.
24034    #[prost(bool, optional, tag="9")]
24035    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
24036    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
24037    pub child_ordering: ::core::option::Option<i32>,
24038    /// An opaque value which allows specifying how two sibling tracks should be
24039    /// ordered relative to each other: tracks with lower ranks will appear before
24040    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
24041    /// 0.
24042    ///
24043    /// Note: this option is only relevant for tracks where the parent has
24044    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
24045    ///
24046    /// Note: for tracks where the parent has `thread` or `process` are set, this
24047    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
24048    /// See `parent_uuid` for details.
24049    #[prost(int32, optional, tag="12")]
24050    pub sibling_order_rank: ::core::option::Option<i32>,
24051    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
24052    pub sibling_merge_behavior: ::core::option::Option<i32>,
24053    /// Name of the track.
24054    ///
24055    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24056    /// emitted before any `TrackEvent`s on the same track.
24057    ///
24058    /// Note: any name specified here will be *ignored* for the root thread scoped
24059    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24060    /// case, the name of the track is shared by many different data sources and so
24061    /// is centrally controlled by trace processor.
24062    ///
24063    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24064    /// a descriptor *has* to be emitted multiple times (e.g. between different
24065    /// processes), it's recommended to ensure that the name is consistent across
24066    /// all TrackDescriptors with the same `uuid`.
24067    ///
24068    /// If the the above recommendation is not followed and the same uuid is
24069    /// emitted with different names, it is implementation defined how the final
24070    /// name will be chosen and may change at any time.
24071    ///
24072    /// The current implementation of trace processor chooses the name in the
24073    /// following way, depending on the value of the `sibling_merge_behavior`
24074    /// field:
24075    ///
24076    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24077    ///    * The *last* non-null name in the whole trace according to trace order
24078    ///      will be used.
24079    ///    * If no non-null name is present in the whole trace, the trace processor
24080    ///      may fall back to other sources to provide a name for the track (e.g.
24081    ///      the first event name for slice tracks, the counter name for counter
24082    ///      tracks). This is implementation defined and may change at any time.
24083    ///
24084    /// 2. If `sibling_merge_behavior` is set to any other value:
24085    ///    * The first non-null name before the first event on the track *or on any
24086    ///      descendant tracks* is processed will be used. For example, consider
24087    ///      the following sequence of events:
24088    ///        ts=100: TrackDescriptor(uuid=A)
24089    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
24090    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
24091    ///        ts=400: TrackEvent(track_uuid=B)
24092    ///      In this case, the name for track A will be "Track A" because the
24093    ///      descriptor with the name was emitted before the first event on a
24094    ///      descendant track (B).
24095    ///    * If no non-null name is present before the event is processed, the trace
24096    ///      processor may fall back to other sources to provide a name for the
24097    ///      track (e.g. the first event name for slice tracks, the counter name for
24098    ///      counter tracks). This is implementation defined and may change at any
24099    ///      time.
24100    ///    * Note on processing order: In the standard trace processor pipeline,
24101    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
24102    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
24103    ///      track, all its descriptors in the trace are processed before its
24104    ///      events. Consequently, the "first non-null name before the first event"
24105    ///      will be the name from the first `TrackDescriptor` for that track in the
24106    ///      trace file that has a non-null name. However, in a streaming parsing
24107    ///      scenario, the timestamp order of descriptors and events is significant,
24108    ///      and a descriptor arriving after an event has been processed will not be
24109    ///      used to name the track.
24110    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
24111    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
24112    /// An opaque value which allows specifying which tracks should be merged
24113    /// together.
24114    ///
24115    /// Only meaningful when `sibling_merge_behavior` is set to
24116    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
24117    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
24118    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
24119}
24120/// Nested message and enum types in `TrackDescriptor`.
24121pub mod track_descriptor {
24122    /// Specifies how the UI should display child tracks of this track (i.e. tracks
24123    /// where `parent_uuid` is specified to this track `uuid`). Note that this
24124    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
24125    /// this if it has a good reason not to do so.
24126    ///
24127    /// Note: for tracks where `thread` or `process` are set, this option is
24128    /// *ignored*. See `parent_uuid` for details.
24129    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24130    #[repr(i32)]
24131    pub enum ChildTracksOrdering {
24132        /// The default ordering, with no bearing on how the UI will visualise the
24133        /// tracks.
24134        Unknown = 0,
24135        /// Order tracks by `name` or `static_name` depending on which one has been
24136        /// specified.
24137        Lexicographic = 1,
24138        /// Order tracks by the first `ts` event in a track.
24139        Chronological = 2,
24140        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
24141        /// the lower values will be shown before tracks with higher values. Tracks
24142        /// with no value will be treated as having 0 rank.
24143        Explicit = 3,
24144    }
24145    impl ChildTracksOrdering {
24146        /// String value of the enum field names used in the ProtoBuf definition.
24147        ///
24148        /// The values are not transformed in any way and thus are considered stable
24149        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24150        pub fn as_str_name(&self) -> &'static str {
24151            match self {
24152                ChildTracksOrdering::Unknown => "UNKNOWN",
24153                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
24154                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
24155                ChildTracksOrdering::Explicit => "EXPLICIT",
24156            }
24157        }
24158    }
24159    /// Specifies how the analysis tools should "merge" different sibling
24160    /// TrackEvent tracks.
24161    ///
24162    /// For two or more tracks to be merged, they must be "eligible" siblings.
24163    /// Eligibility is determined by the following rules:
24164    /// 1. All tracks must have the same parent.
24165    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
24166    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
24167    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
24168    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
24169    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
24170    ///
24171    /// Specifically:
24172    ///    - in the UI, all tracks which are merged together will be
24173    ///      displayed as a single "visual" track.
24174    ///    - in the trace processor, all tracks which are merged together will be
24175    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
24176    ///      of tracks which have an active event at the same time.
24177    ///
24178    /// When tracks are merged togther, the properties for the merged track will be
24179    /// chosen from the source tracks based on the following rules:
24180    ///    - for `sibling_order_rank`: the rank of the merged track will be the
24181    ///      smallest rank among the source tracks.
24182    ///    - for all other properties: the property taken is unspecified and can
24183    ///      be any value provided by one of the source tracks. This can lead to
24184    ///      non-deterministic behavior.
24185    ///       - examples of other properties include `name`, `child_ordering` etc.
24186    ///       - because of this, it's strongly recommended to ensure that all source
24187    ///         tracks have the same value for these properties.
24188    ///       - the trace processor will also emit an error stat if it detects
24189    ///         that the properties are not the same across all source tracks.
24190    ///
24191    /// Note: merging is done *recursively* so entire trees of tracks can be merged
24192    /// together. To make this clearer, consider an example track hierarchy (in
24193    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
24194    /// track line, like "Updater", is its 'name' property):
24195    ///
24196    ///    Initial track hierarchy:
24197    ///      SystemActivity
24198    ///      ├── AuthService (smk: "auth_main_cluster")
24199    ///      │   └── LoginOp (smk: "login_v1")
24200    ///      ├── AuthService (smk: "auth_main_cluster")
24201    ///      │   └── LoginOp (smk: "login_v1")
24202    ///      ├── AuthService (smk: "auth_backup_cluster")
24203    ///      │   └── GuestOp (smk: "guest_v1")
24204    ///      └── UserProfileService (smk: "profile_cluster")
24205    ///          └── GetProfileOp (smk: "getprofile_v1")
24206    ///
24207    /// Merging outcomes:
24208    ///
24209    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
24210    ///    - The first two "AuthService" tracks merge because they share
24211    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
24212    ///      aligning with recommendations. The merged track is named "AuthService".
24213    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
24214    ///      remains separate, as its `sibling_merge_key` is different.
24215    ///    - "UserProfileService" also remains separate.
24216    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
24217    ///      "LoginOp" get merged as they have the same sibling merge key.
24218    ///
24219    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
24220    ///      SystemActivity
24221    ///      ├── AuthService (merged by smk: "auth_main_cluster")
24222    ///      │   ├── LoginOp (merged by smk: "login_v1")
24223    ///      ├── AuthService (smk: "auth_backup_cluster")
24224    ///      │   └── GuestOp (smk: "guest_v1")
24225    ///      └── UserProfileService (smk: "profile_cluster")
24226    ///          └── GetProfileOp (smk: "getprofile_v1")
24227    ///
24228    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
24229    ///    - All three tracks named "AuthService" merge because they share the same
24230    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
24231    ///      for this merged track would be taken from one of the source tracks
24232    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
24233    ///      relevant if its children had key-based merge behaviors.
24234    ///    - "UserProfileService" remains separate due to its different name.
24235    ///    - Within the single merged "AuthService" track:
24236    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
24237    ///      they have the same name.
24238    ///
24239    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
24240    ///      SystemActivity
24241    ///      ├── AuthService (merged from 3 "AuthService" tracks)
24242    ///      │   ├── LoginOp (smk: "login_v1")
24243    ///      │   └── GuestOp (smk: "guest_v1")
24244    ///      └── UserProfileService (smk: "profile_cluster")
24245    ///          └── GetProfileOp (smk: "getprofile_v1")
24246    ///
24247    /// Note: for tracks where `thread` or `process` are set, this option is
24248    /// *ignored*. See `parent_uuid` for details.
24249    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24250    #[repr(i32)]
24251    pub enum SiblingMergeBehavior {
24252        /// When unspecified or not set, defaults to
24253        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
24254        Unspecified = 0,
24255        /// Merge this track with eligible siblings which have the same `name`.
24256        ///
24257        /// This is the default behavior.option.
24258        ///
24259        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
24260        /// worked this way for years and inherited this behavior from
24261        /// chrome://tracing which has worked this way for even longer
24262        ByTrackName = 1,
24263        /// Never merge this track with any siblings. Useful if if this track has a
24264        /// specific meaning and you want to see separately from any others.
24265        None = 2,
24266        /// Merge this track with eligible siblings which have the same
24267        /// `sibling_merge_key`.
24268        BySiblingMergeKey = 3,
24269    }
24270    impl SiblingMergeBehavior {
24271        /// String value of the enum field names used in the ProtoBuf definition.
24272        ///
24273        /// The values are not transformed in any way and thus are considered stable
24274        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24275        pub fn as_str_name(&self) -> &'static str {
24276            match self {
24277                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
24278                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
24279                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
24280                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
24281            }
24282        }
24283    }
24284    /// Name of the track.
24285    ///
24286    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24287    /// emitted before any `TrackEvent`s on the same track.
24288    ///
24289    /// Note: any name specified here will be *ignored* for the root thread scoped
24290    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24291    /// case, the name of the track is shared by many different data sources and so
24292    /// is centrally controlled by trace processor.
24293    ///
24294    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24295    /// a descriptor *has* to be emitted multiple times (e.g. between different
24296    /// processes), it's recommended to ensure that the name is consistent across
24297    /// all TrackDescriptors with the same `uuid`.
24298    ///
24299    /// If the the above recommendation is not followed and the same uuid is
24300    /// emitted with different names, it is implementation defined how the final
24301    /// name will be chosen and may change at any time.
24302    ///
24303    /// The current implementation of trace processor chooses the name in the
24304    /// following way, depending on the value of the `sibling_merge_behavior`
24305    /// field:
24306    ///
24307    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24308    ///    * The *last* non-null name in the whole trace according to trace order
24309    ///      will be used.
24310    ///    * If no non-null name is present in the whole trace, the trace processor
24311    ///      may fall back to other sources to provide a name for the track (e.g.
24312    ///      the first event name for slice tracks, the counter name for counter
24313    ///      tracks). This is implementation defined and may change at any time.
24314    ///
24315    /// 2. If `sibling_merge_behavior` is set to any other value:
24316    ///    * The first non-null name before the first event on the track *or on any
24317    ///      descendant tracks* is processed will be used. For example, consider
24318    ///      the following sequence of events:
24319    ///        ts=100: TrackDescriptor(uuid=A)
24320    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
24321    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
24322    ///        ts=400: TrackEvent(track_uuid=B)
24323    ///      In this case, the name for track A will be "Track A" because the
24324    ///      descriptor with the name was emitted before the first event on a
24325    ///      descendant track (B).
24326    ///    * If no non-null name is present before the event is processed, the trace
24327    ///      processor may fall back to other sources to provide a name for the
24328    ///      track (e.g. the first event name for slice tracks, the counter name for
24329    ///      counter tracks). This is implementation defined and may change at any
24330    ///      time.
24331    ///    * Note on processing order: In the standard trace processor pipeline,
24332    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
24333    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
24334    ///      track, all its descriptors in the trace are processed before its
24335    ///      events. Consequently, the "first non-null name before the first event"
24336    ///      will be the name from the first `TrackDescriptor` for that track in the
24337    ///      trace file that has a non-null name. However, in a streaming parsing
24338    ///      scenario, the timestamp order of descriptors and events is significant,
24339    ///      and a descriptor arriving after an event has been processed will not be
24340    ///      used to name the track.
24341    #[derive(Clone, PartialEq, ::prost::Oneof)]
24342    pub enum StaticOrDynamicName {
24343        #[prost(string, tag="2")]
24344        Name(::prost::alloc::string::String),
24345        /// This field is only set by the SDK when perfetto::StaticString is
24346        /// provided.
24347        #[prost(string, tag="10")]
24348        StaticName(::prost::alloc::string::String),
24349        /// Equivalent to name, used just to mark that the data is coming from
24350        /// android.os.Trace.
24351        #[prost(string, tag="13")]
24352        AtraceName(::prost::alloc::string::String),
24353    }
24354    /// An opaque value which allows specifying which tracks should be merged
24355    /// together.
24356    ///
24357    /// Only meaningful when `sibling_merge_behavior` is set to
24358    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
24359    #[derive(Clone, PartialEq, ::prost::Oneof)]
24360    pub enum SiblingMergeKeyField {
24361        #[prost(string, tag="16")]
24362        SiblingMergeKey(::prost::alloc::string::String),
24363        #[prost(uint64, tag="17")]
24364        SiblingMergeKeyInt(u64),
24365    }
24366}
24367// End of protos/perfetto/trace/track_event/track_descriptor.proto
24368
24369// Begin of protos/perfetto/trace/translation/translation_table.proto
24370
24371/// Translation rules for the trace processor.
24372/// See the comments for each rule type for specific meaning.
24373#[derive(Clone, PartialEq, ::prost::Message)]
24374pub struct TranslationTable {
24375    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
24376    pub table: ::core::option::Option<translation_table::Table>,
24377}
24378/// Nested message and enum types in `TranslationTable`.
24379pub mod translation_table {
24380    #[derive(Clone, PartialEq, ::prost::Oneof)]
24381    pub enum Table {
24382        #[prost(message, tag="1")]
24383        ChromeHistogram(super::ChromeHistorgramTranslationTable),
24384        #[prost(message, tag="2")]
24385        ChromeUserEvent(super::ChromeUserEventTranslationTable),
24386        #[prost(message, tag="3")]
24387        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
24388        #[prost(message, tag="4")]
24389        SliceName(super::SliceNameTranslationTable),
24390        #[prost(message, tag="5")]
24391        ProcessTrackName(super::ProcessTrackNameTranslationTable),
24392        #[prost(message, tag="6")]
24393        ChromeStudy(super::ChromeStudyTranslationTable),
24394    }
24395}
24396/// Chrome histogram sample hash -> name translation rules.
24397#[derive(Clone, PartialEq, ::prost::Message)]
24398pub struct ChromeHistorgramTranslationTable {
24399    #[prost(map="uint64, string", tag="1")]
24400    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24401}
24402/// Chrome user event action hash -> name translation rules.
24403#[derive(Clone, PartialEq, ::prost::Message)]
24404pub struct ChromeUserEventTranslationTable {
24405    #[prost(map="uint64, string", tag="1")]
24406    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24407}
24408/// Chrome performance mark translation rules.
24409#[derive(Clone, PartialEq, ::prost::Message)]
24410pub struct ChromePerformanceMarkTranslationTable {
24411    #[prost(map="uint32, string", tag="1")]
24412    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24413    #[prost(map="uint32, string", tag="2")]
24414    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24415}
24416/// Raw -> deobfuscated slice name translation rules.
24417#[derive(Clone, PartialEq, ::prost::Message)]
24418pub struct SliceNameTranslationTable {
24419    #[prost(map="string, string", tag="1")]
24420    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24421}
24422/// Raw -> deobfuscated process track name translation rules.
24423#[derive(Clone, PartialEq, ::prost::Message)]
24424pub struct ProcessTrackNameTranslationTable {
24425    #[prost(map="string, string", tag="1")]
24426    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24427}
24428/// Chrome study hash -> name translation rules.
24429#[derive(Clone, PartialEq, ::prost::Message)]
24430pub struct ChromeStudyTranslationTable {
24431    #[prost(map="uint64, string", tag="1")]
24432    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24433}
24434// End of protos/perfetto/trace/translation/translation_table.proto
24435
24436// Begin of protos/perfetto/trace/trigger.proto
24437
24438/// When a TracingSession receives a trigger it records the boot time nanoseconds
24439/// in the TracePacket's timestamp field as well as the name of the producer that
24440/// triggered it. We emit this data so filtering can be done on triggers received
24441/// in the trace.
24442#[derive(Clone, PartialEq, ::prost::Message)]
24443pub struct Trigger {
24444    /// Name of the trigger which was received.
24445    #[prost(string, optional, tag="1")]
24446    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
24447    /// The actual producer that activated |trigger|.
24448    #[prost(string, optional, tag="2")]
24449    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
24450    /// The verified UID of the producer.
24451    #[prost(int32, optional, tag="3")]
24452    pub trusted_producer_uid: ::core::option::Option<i32>,
24453    /// The value of stop_delay_ms from the configuration.
24454    #[prost(uint64, optional, tag="4")]
24455    pub stop_delay_ms: ::core::option::Option<u64>,
24456}
24457// End of protos/perfetto/trace/trigger.proto
24458
24459// Begin of protos/perfetto/trace/ui_state.proto
24460
24461/// Common state for UIs visualizing Perfetto traces.
24462/// This message can be appended as a TracePacket by UIs to save the
24463/// visible state (e.g. scroll position/zoom state) for future opening
24464/// of the trace.
24465/// Design doc: go/trace-ui-state.
24466#[derive(Clone, PartialEq, ::prost::Message)]
24467pub struct UiState {
24468    /// The start and end bounds of the viewport of the UI in nanoseconds.
24469    ///
24470    /// This is the absolute time associated to slices and other events in
24471    /// trace processor tables (i.e. the |ts| column of most tables)
24472    #[prost(int64, optional, tag="1")]
24473    pub timeline_start_ts: ::core::option::Option<i64>,
24474    #[prost(int64, optional, tag="2")]
24475    pub timeline_end_ts: ::core::option::Option<i64>,
24476    #[prost(message, optional, tag="3")]
24477    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
24478}
24479/// Nested message and enum types in `UiState`.
24480pub mod ui_state {
24481    /// Indicates that the given process should be highlighted by the UI.
24482    #[derive(Clone, PartialEq, ::prost::Message)]
24483    pub struct HighlightProcess {
24484        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
24485        pub selector: ::core::option::Option<highlight_process::Selector>,
24486    }
24487    /// Nested message and enum types in `HighlightProcess`.
24488    pub mod highlight_process {
24489        #[derive(Clone, PartialEq, ::prost::Oneof)]
24490        pub enum Selector {
24491            /// The pid of the process to highlight. This is useful for UIs to focus
24492            /// on tracks of a particular process in the trace.
24493            ///
24494            /// If more than one process in a trace has the same pid, it is UI
24495            /// implementation specific how the process to be focused will be
24496            /// chosen.
24497            #[prost(uint32, tag="1")]
24498            Pid(u32),
24499            /// The command line of the process to highlight; for most Android apps,
24500            /// this is the package name of the app. This is useful for UIs to focus
24501            /// on a particular app in the trace.
24502            ///
24503            /// If more than one process hasthe same cmdline, it is UI implementation
24504            /// specific how the process to be focused will be chosen.
24505            #[prost(string, tag="2")]
24506            Cmdline(::prost::alloc::string::String),
24507        }
24508    }
24509}
24510// Begin of protos/perfetto/trace/trace_packet.proto
24511
24512/// TracePacket is the root object of a Perfetto trace.
24513/// A Perfetto trace is a linear sequence of TracePacket(s).
24514///
24515/// The tracing service guarantees that all TracePacket(s) written by a given
24516/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
24517/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
24518/// to the Consumer (or written into the trace file).
24519/// TracePacket(s) written by different TraceWriter(s), hence even different
24520/// data sources, can be seen in arbitrary order.
24521/// The consumer can re-establish a total order, if interested, using the packet
24522/// timestamps, after having synchronized the different clocks onto a global
24523/// clock.
24524///
24525/// The tracing service is agnostic of the content of TracePacket, with the
24526/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
24527/// the service itself.
24528///
24529/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
24530///
24531/// Next reserved id: 14 (up to 15).
24532/// Next id: 126.
24533#[derive(Clone, PartialEq, ::prost::Message)]
24534pub struct TracePacket {
24535    /// The timestamp of the TracePacket.
24536    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
24537    /// Android). It can be overridden using a different timestamp_clock_id.
24538    /// The clock domain definition in ClockSnapshot can also override:
24539    /// - The unit (default: 1ns).
24540    /// - The absolute vs delta encoding (default: absolute timestamp).
24541    #[prost(uint64, optional, tag="8")]
24542    pub timestamp: ::core::option::Option<u64>,
24543    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
24544    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
24545    /// producer-defined clock id.
24546    /// If unspecified and if no default per-sequence value has been provided via
24547    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
24548    #[prost(uint32, optional, tag="58")]
24549    pub timestamp_clock_id: ::core::option::Option<u32>,
24550    /// Trusted process id of the producer which generated this packet, written by
24551    /// the service.
24552    #[prost(int32, optional, tag="79")]
24553    pub trusted_pid: ::core::option::Option<i32>,
24554    /// Incrementally emitted interned data, valid only on the packet's sequence
24555    /// (packets with the same |trusted_packet_sequence_id|). The writer will
24556    /// usually emit new interned data in the same TracePacket that first refers to
24557    /// it (since the last reset of interning state). It may also be emitted
24558    /// proactively in advance of referring to them in later packets.
24559    #[prost(message, optional, tag="12")]
24560    pub interned_data: ::core::option::Option<InternedData>,
24561    #[prost(uint32, optional, tag="13")]
24562    pub sequence_flags: ::core::option::Option<u32>,
24563    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
24564    #[prost(bool, optional, tag="41")]
24565    pub incremental_state_cleared: ::core::option::Option<bool>,
24566    /// Default values for fields of later TracePackets emitted on this packet's
24567    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
24568    /// It must be reemitted when incremental state is cleared (see
24569    /// |incremental_state_cleared|).
24570    /// Requires that any future packet emitted on the same sequence specifies
24571    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
24572    /// TracePacketDefaults always override the global defaults for any future
24573    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
24574    #[prost(message, optional, tag="59")]
24575    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
24576    /// Flag set by the service if, for the current packet sequence (see
24577    /// |trusted_packet_sequence_id|), either:
24578    /// * this is the first packet, or
24579    /// * one or multiple packets were dropped since the last packet that the
24580    ///    consumer read from the sequence. This can happen if chunks in the trace
24581    ///    buffer are overridden before the consumer could read them when the trace
24582    ///    is configured in ring buffer mode.
24583    ///
24584    /// When packet loss occurs, incrementally emitted data (including interned
24585    /// data) on the sequence should be considered invalid up until the next packet
24586    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
24587    #[prost(bool, optional, tag="42")]
24588    pub previous_packet_dropped: ::core::option::Option<bool>,
24589    /// Flag set by a producer (starting from SDK v29) if, for the current packet
24590    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
24591    ///
24592    /// This flag can be used for distinguishing the two situations when
24593    /// processing the trace:
24594    /// 1. There are no prior events for the sequence because of data loss, e.g.
24595    ///     due to ring buffer wrapping.
24596    /// 2. There are no prior events for the sequence because it didn't start
24597    ///     before this packet (= there's definitely no preceding data loss).
24598    ///
24599    /// Given that older SDK versions do not support this flag, this flag not
24600    /// being present for a particular sequence does not necessarily imply data
24601    /// loss.
24602    #[prost(bool, optional, tag="87")]
24603    pub first_packet_on_sequence: ::core::option::Option<bool>,
24604    /// The machine ID for identifying trace packets in a multi-machine tracing
24605    /// session. Is emitted by the tracing service for producers running on a
24606    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
24607    #[prost(uint32, optional, tag="98")]
24608    pub machine_id: ::core::option::Option<u32>,
24609    #[prost(oneof="trace_packet::Data", tags="2, 9, 4, 5, 6, 7, 11, 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, 61, 64, 60, 43, 44, 1, 36, 50, 72, 88, 92, 90, 93, 94, 96, 97, 104, 105, 112, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 114, 115, 116, 117, 118, 120, 122, 119, 121, 123, 900")]
24610    pub data: ::core::option::Option<trace_packet::Data>,
24611    /// Trusted user id of the producer which generated this packet. Keep in sync
24612    /// with TrustedPacket.trusted_uid.
24613    ///
24614    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24615    /// instead.
24616    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
24617    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
24618    /// Service-assigned identifier of the packet sequence this packet belongs to.
24619    /// Uniquely identifies a producer + writer pair within the tracing session. A
24620    /// value of zero denotes an invalid ID. Keep in sync with
24621    /// TrustedPacket.trusted_packet_sequence_id.
24622    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
24623    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
24624}
24625/// Nested message and enum types in `TracePacket`.
24626pub mod trace_packet {
24627    /// Encapsulates the state and configuration of the ProtoVM instances running
24628    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
24629    /// and use them to inflate patches into full-state packets.
24630    /// Note: this message can't be defined in a dedicated file because it has a
24631    /// recursive dependency with TracePacket (see 'state' field below).
24632    #[derive(Clone, PartialEq, ::prost::Message)]
24633    pub struct ProtoVms {
24634        #[prost(message, repeated, tag="1")]
24635        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
24636    }
24637    /// Nested message and enum types in `ProtoVms`.
24638    pub mod proto_vms {
24639        #[derive(Clone, PartialEq, ::prost::Message)]
24640        pub struct Instance {
24641            #[prost(message, optional, tag="1")]
24642            pub program: ::core::option::Option<super::super::VmProgram>,
24643            #[prost(message, optional, tag="2")]
24644            pub state: ::core::option::Option<super::super::TracePacket>,
24645            #[prost(uint32, optional, tag="3")]
24646            pub memory_limit_kb: ::core::option::Option<u32>,
24647            #[prost(int32, repeated, packed="false", tag="4")]
24648            pub producer_id: ::prost::alloc::vec::Vec<i32>,
24649        }
24650    }
24651    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24652    #[repr(i32)]
24653    pub enum SequenceFlags {
24654        SeqUnspecified = 0,
24655        /// Set by the writer to indicate that it will re-emit any incremental data
24656        /// for the packet's sequence before referring to it again. This includes
24657        /// interned data as well as periodically emitted data like
24658        /// Process/ThreadDescriptors. This flag only affects the current packet
24659        /// sequence (see |trusted_packet_sequence_id|).
24660        ///
24661        /// When set, this TracePacket and subsequent TracePackets on the same
24662        /// sequence will not refer to any incremental data emitted before this
24663        /// TracePacket. For example, previously emitted interned data will be
24664        /// re-emitted if it is referred to again.
24665        ///
24666        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
24667        /// to skip packets in the sequence until the next one with this flag set, to
24668        /// ensure intact incremental data.
24669        SeqIncrementalStateCleared = 1,
24670        /// This packet requires incremental state, such as TracePacketDefaults or
24671        /// InternedData, to be parsed correctly. The trace reader should skip this
24672        /// packet if incremental state is not valid on this sequence, i.e. if no
24673        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
24674        /// current |trusted_packet_sequence_id|.
24675        SeqNeedsIncrementalState = 2,
24676    }
24677    impl SequenceFlags {
24678        /// String value of the enum field names used in the ProtoBuf definition.
24679        ///
24680        /// The values are not transformed in any way and thus are considered stable
24681        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24682        pub fn as_str_name(&self) -> &'static str {
24683            match self {
24684                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
24685                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
24686                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
24687            }
24688        }
24689    }
24690    #[derive(Clone, PartialEq, ::prost::Oneof)]
24691    pub enum Data {
24692        #[prost(message, tag="2")]
24693        ProcessTree(super::ProcessTree),
24694        #[prost(message, tag="9")]
24695        ProcessStats(super::ProcessStats),
24696        #[prost(message, tag="4")]
24697        InodeFileMap(super::InodeFileMap),
24698        #[prost(message, tag="5")]
24699        ChromeEvents(super::ChromeEventBundle),
24700        #[prost(message, tag="6")]
24701        ClockSnapshot(super::ClockSnapshot),
24702        #[prost(message, tag="7")]
24703        SysStats(super::SysStats),
24704        #[prost(message, tag="11")]
24705        TrackEvent(super::TrackEvent),
24706        // IDs up to 15 are reserved. They take only one byte to encode their
24707        // preamble so should be used for frequent events.
24708
24709        #[prost(message, tag="89")]
24710        TraceUuid(super::TraceUuid),
24711        #[prost(message, tag="33")]
24712        TraceConfig(super::TraceConfig),
24713        #[prost(message, tag="34")]
24714        FtraceStats(super::FtraceStats),
24715        #[prost(message, tag="35")]
24716        TraceStats(super::TraceStats),
24717        #[prost(message, tag="37")]
24718        ProfilePacket(super::ProfilePacket),
24719        #[prost(message, tag="74")]
24720        StreamingAllocation(super::StreamingAllocation),
24721        #[prost(message, tag="75")]
24722        StreamingFree(super::StreamingFree),
24723        #[prost(message, tag="38")]
24724        Battery(super::BatteryCounters),
24725        #[prost(message, tag="40")]
24726        PowerRails(super::PowerRails),
24727        #[prost(message, tag="39")]
24728        AndroidLog(super::AndroidLogPacket),
24729        #[prost(message, tag="45")]
24730        SystemInfo(super::SystemInfo),
24731        #[prost(message, tag="46")]
24732        Trigger(super::Trigger),
24733        #[prost(message, tag="109")]
24734        ChromeTrigger(super::ChromeTrigger),
24735        #[prost(message, tag="47")]
24736        PackagesList(super::PackagesList),
24737        #[prost(message, tag="48")]
24738        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
24739        #[prost(message, tag="49")]
24740        PerfettoMetatrace(super::PerfettoMetatrace),
24741        #[prost(message, tag="51")]
24742        ChromeMetadata(super::ChromeMetadataPacket),
24743        #[prost(message, tag="52")]
24744        GpuCounterEvent(super::GpuCounterEvent),
24745        #[prost(message, tag="53")]
24746        GpuRenderStageEvent(super::GpuRenderStageEvent),
24747        #[prost(message, tag="54")]
24748        StreamingProfilePacket(super::StreamingProfilePacket),
24749        #[prost(message, tag="56")]
24750        HeapGraph(super::HeapGraph),
24751        #[prost(message, tag="57")]
24752        GraphicsFrameEvent(super::GraphicsFrameEvent),
24753        #[prost(message, tag="62")]
24754        VulkanMemoryEvent(super::VulkanMemoryEvent),
24755        #[prost(message, tag="63")]
24756        GpuLog(super::GpuLog),
24757        #[prost(message, tag="65")]
24758        VulkanApiEvent(super::VulkanApiEvent),
24759        #[prost(message, tag="66")]
24760        PerfSample(super::PerfSample),
24761        #[prost(message, tag="67")]
24762        CpuInfo(super::CpuInfo),
24763        #[prost(message, tag="68")]
24764        SmapsPacket(super::SmapsPacket),
24765        #[prost(message, tag="69")]
24766        ServiceEvent(super::TracingServiceEvent),
24767        #[prost(message, tag="70")]
24768        InitialDisplayState(super::InitialDisplayState),
24769        #[prost(message, tag="71")]
24770        GpuMemTotalEvent(super::GpuMemTotalEvent),
24771        #[prost(message, tag="73")]
24772        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
24773        #[prost(message, tag="76")]
24774        FrameTimelineEvent(super::FrameTimelineEvent),
24775        #[prost(message, tag="77")]
24776        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
24777        #[prost(message, tag="78")]
24778        UiState(super::UiState),
24779        #[prost(message, tag="80")]
24780        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
24781        #[prost(message, tag="81")]
24782        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
24783        #[prost(message, tag="82")]
24784        TranslationTable(super::TranslationTable),
24785        #[prost(message, tag="83")]
24786        AndroidGameInterventionList(super::AndroidGameInterventionList),
24787        #[prost(message, tag="84")]
24788        StatsdAtom(super::StatsdAtom),
24789        #[prost(message, tag="86")]
24790        AndroidSystemProperty(super::AndroidSystemProperty),
24791        #[prost(message, tag="91")]
24792        EntityStateResidency(super::EntityStateResidency),
24793        #[prost(message, tag="124")]
24794        TraceProvenance(super::TraceProvenance),
24795        #[prost(message, tag="125")]
24796        Protovms(ProtoVms),
24797        /// Only used in profile packets.
24798        #[prost(message, tag="61")]
24799        ModuleSymbols(super::ModuleSymbols),
24800        #[prost(message, tag="64")]
24801        DeobfuscationMapping(super::DeobfuscationMapping),
24802        /// Only used by TrackEvent.
24803        #[prost(message, tag="60")]
24804        TrackDescriptor(super::TrackDescriptor),
24805        /// Deprecated, use TrackDescriptor instead.
24806        #[prost(message, tag="43")]
24807        ProcessDescriptor(super::ProcessDescriptor),
24808        /// Deprecated, use TrackDescriptor instead.
24809        #[prost(message, tag="44")]
24810        ThreadDescriptor(super::ThreadDescriptor),
24811        /// Events from the Linux kernel ftrace infrastructure.
24812        #[prost(message, tag="1")]
24813        FtraceEvents(super::FtraceEventBundle),
24814        /// This field is emitted at periodic intervals (~10s) and
24815        /// contains always the binary representation of the UUID
24816        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
24817        /// efficiently partition long traces without having to fully parse them.
24818        #[prost(bytes, tag="36")]
24819        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
24820        /// Zero or more proto encoded trace packets compressed using deflate.
24821        /// Each compressed_packets TracePacket (including the two field ids and
24822        /// sizes) should be less than 512KB.
24823        #[prost(bytes, tag="50")]
24824        CompressedPackets(::prost::alloc::vec::Vec<u8>),
24825        /// Data sources can extend the trace proto with custom extension protos (see
24826        /// docs/design-docs/extensions.md). When they do that, the descriptor of
24827        /// their extension proto descriptor is serialized in this packet. This
24828        /// allows trace_processor to deserialize extended messages using reflection
24829        /// even if the extension proto is not checked in the Perfetto repo.
24830        #[prost(message, tag="72")]
24831        ExtensionDescriptor(super::ExtensionDescriptor),
24832        /// Represents a single packet sent or received by the network.
24833        #[prost(message, tag="88")]
24834        NetworkPacket(super::NetworkPacketEvent),
24835        /// Represents one or more packets sent or received by the network.
24836        #[prost(message, tag="92")]
24837        NetworkPacketBundle(super::NetworkPacketBundle),
24838        /// The "range of interest" for track events. See the message definition
24839        /// comments for more details.
24840        #[prost(message, tag="90")]
24841        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
24842        /// Winscope traces
24843        #[prost(message, tag="93")]
24844        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
24845        #[prost(message, tag="94")]
24846        SurfaceflingerTransactions(super::TransactionTraceEntry),
24847        #[prost(message, tag="96")]
24848        ShellTransition(super::ShellTransition),
24849        #[prost(message, tag="97")]
24850        ShellHandlerMappings(super::ShellHandlerMappings),
24851        #[prost(message, tag="104")]
24852        ProtologMessage(super::ProtoLogMessage),
24853        #[prost(message, tag="105")]
24854        ProtologViewerConfig(super::ProtoLogViewerConfig),
24855        #[prost(message, tag="112")]
24856        WinscopeExtensions(super::WinscopeExtensions),
24857        /// Events from the Windows etw infrastructure.
24858        #[prost(message, tag="95")]
24859        EtwEvents(super::EtwTraceEventBundle),
24860        #[prost(message, tag="99")]
24861        V8JsCode(super::V8JsCode),
24862        #[prost(message, tag="100")]
24863        V8InternalCode(super::V8InternalCode),
24864        #[prost(message, tag="101")]
24865        V8WasmCode(super::V8WasmCode),
24866        #[prost(message, tag="102")]
24867        V8RegExpCode(super::V8RegExpCode),
24868        #[prost(message, tag="103")]
24869        V8CodeMove(super::V8CodeMove),
24870        /// Clock synchronization with remote machines.
24871        #[prost(message, tag="107")]
24872        RemoteClockSync(super::RemoteClockSync),
24873        #[prost(message, tag="110")]
24874        PixelModemEvents(super::PixelModemEvents),
24875        #[prost(message, tag="111")]
24876        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
24877        #[prost(message, tag="113")]
24878        CloneSnapshotTrigger(super::Trigger),
24879        #[prost(message, tag="114")]
24880        BluetoothTraceEvent(super::BluetoothTraceEvent),
24881        #[prost(message, tag="115")]
24882        KernelWakelockData(super::KernelWakelockData),
24883        #[prost(message, tag="116")]
24884        AppWakelockBundle(super::AppWakelockBundle),
24885        /// Generic events for a standard kernel implementation
24886        #[prost(message, tag="117")]
24887        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
24888        #[prost(message, tag="118")]
24889        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
24890        #[prost(message, tag="120")]
24891        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
24892        #[prost(message, tag="122")]
24893        GenericKernelProcessTree(super::GenericKernelProcessTree),
24894        #[prost(message, tag="119")]
24895        CpuPerUidData(super::CpuPerUidData),
24896        #[prost(message, tag="121")]
24897        EvdevEvent(super::EvdevEvent),
24898        #[prost(message, tag="123")]
24899        UserList(super::AndroidUserList),
24900        /// This field is only used for testing.
24901        /// In previous versions of this proto this field had the id 268435455
24902        /// This caused many problems:
24903        /// - protozero decoder does not handle field ids larger than 999.
24904        /// - old versions of protoc produce Java bindings with syntax errors when
24905        ///    the field id is large enough.
24906        #[prost(message, tag="900")]
24907        ForTesting(super::TestEvent),
24908    }
24909    /// Trusted user id of the producer which generated this packet. Keep in sync
24910    /// with TrustedPacket.trusted_uid.
24911    ///
24912    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24913    /// instead.
24914    #[derive(Clone, PartialEq, ::prost::Oneof)]
24915    pub enum OptionalTrustedUid {
24916        #[prost(int32, tag="3")]
24917        TrustedUid(i32),
24918    }
24919    /// Service-assigned identifier of the packet sequence this packet belongs to.
24920    /// Uniquely identifies a producer + writer pair within the tracing session. A
24921    /// value of zero denotes an invalid ID. Keep in sync with
24922    /// TrustedPacket.trusted_packet_sequence_id.
24923    #[derive(Clone, PartialEq, ::prost::Oneof)]
24924    pub enum OptionalTrustedPacketSequenceId {
24925        #[prost(uint32, tag="10")]
24926        TrustedPacketSequenceId(u32),
24927    }
24928}
24929// End of protos/perfetto/trace/trace_packet.proto
24930
24931// Begin of protos/perfetto/trace/trace.proto
24932
24933#[derive(Clone, PartialEq, ::prost::Message)]
24934pub struct Trace {
24935    #[prost(message, repeated, tag="1")]
24936    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
24937}
24938#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24939#[repr(i32)]
24940pub enum VmCursorEnum {
24941    VmCursorUnspecified = 0,
24942    VmCursorSrc = 1,
24943    VmCursorDst = 2,
24944    VmCursorBoth = 3,
24945}
24946impl VmCursorEnum {
24947    /// String value of the enum field names used in the ProtoBuf definition.
24948    ///
24949    /// The values are not transformed in any way and thus are considered stable
24950    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24951    pub fn as_str_name(&self) -> &'static str {
24952        match self {
24953            VmCursorEnum::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
24954            VmCursorEnum::VmCursorSrc => "VM_CURSOR_SRC",
24955            VmCursorEnum::VmCursorDst => "VM_CURSOR_DST",
24956            VmCursorEnum::VmCursorBoth => "VM_CURSOR_BOTH",
24957        }
24958    }
24959}
24960// End of protos/perfetto/common/tracing_service_state.proto
24961
24962// Begin of protos/perfetto/common/builtin_clock.proto
24963
24964/// Builtin clock domains used in Perfetto traces.
24965///
24966/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
24967/// representing the trace file's own timeline. Each trace file gets its own
24968/// instance (scoped by trace file index).
24969///
24970/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
24971/// fallback: if the first timestamp conversion uses a clock other than the
24972/// trace file clock and no explicit clock snapshot data exists, the trace time
24973/// is switched to BOOTTIME. This fallback does not fire for modern traces that
24974/// include ClockSnapshots or that only use the trace file clock directly.
24975///
24976/// The `primary_trace_clock` field in ClockSnapshot can definitively override
24977/// the trace time clock regardless of the above.
24978#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24979#[repr(i32)]
24980pub enum BuiltinClock {
24981    Unknown = 0,
24982    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
24983    Realtime = 1,
24984    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
24985    RealtimeCoarse = 2,
24986    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
24987    Monotonic = 3,
24988    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
24989    MonotonicCoarse = 4,
24990    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
24991    MonotonicRaw = 5,
24992    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
24993    /// For proto traces, this is used as a backwards-compatible fallback trace
24994    /// time clock when no explicit clock snapshots are present.
24995    Boottime = 6,
24996    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
24997    Tsc = 9,
24998    /// Corresponds to the perf event clock (PERF_CLOCK).
24999    Perf = 10,
25000    /// A synthetic clock representing the trace file's own timeline. Each trace
25001    /// file gets its own instance (scoped by trace file index). This is the
25002    /// default trace time clock before any clock snapshot or format-specific
25003    /// override takes effect.
25004    TraceFile = 11,
25005    MaxId = 63,
25006}
25007impl BuiltinClock {
25008    /// String value of the enum field names used in the ProtoBuf definition.
25009    ///
25010    /// The values are not transformed in any way and thus are considered stable
25011    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25012    pub fn as_str_name(&self) -> &'static str {
25013        match self {
25014            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
25015            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
25016            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
25017            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
25018            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
25019            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
25020            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
25021            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
25022            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
25023            BuiltinClock::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
25024            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
25025        }
25026    }
25027}
25028// End of protos/perfetto/common/builtin_clock.proto
25029
25030// Begin of protos/perfetto/common/semantic_type.proto
25031
25032/// Semantic types for string fields. This tells the filter what kind of
25033/// data the field contains, so it can apply the right filtering rules.
25034/// See /rfcs/0011-subset-string-filter-rules.md for design details.
25035/// Introduced in: Perfetto v54.
25036#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25037#[repr(i32)]
25038pub enum SemanticType {
25039    Unspecified = 0,
25040    Atrace = 1,
25041    Job = 2,
25042    Wakelock = 3,
25043}
25044impl SemanticType {
25045    /// String value of the enum field names used in the ProtoBuf definition.
25046    ///
25047    /// The values are not transformed in any way and thus are considered stable
25048    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25049    pub fn as_str_name(&self) -> &'static str {
25050        match self {
25051            SemanticType::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
25052            SemanticType::Atrace => "SEMANTIC_TYPE_ATRACE",
25053            SemanticType::Job => "SEMANTIC_TYPE_JOB",
25054            SemanticType::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
25055        }
25056    }
25057}
25058// End of protos/perfetto/config/android/android_input_event_config.proto
25059
25060// Begin of protos/perfetto/common/android_log_constants.proto
25061
25062/// Values from NDK's android/log.h.
25063#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25064#[repr(i32)]
25065pub enum AndroidLogId {
25066    /// MAIN.
25067    LidDefault = 0,
25068    LidRadio = 1,
25069    LidEvents = 2,
25070    LidSystem = 3,
25071    LidCrash = 4,
25072    LidStats = 5,
25073    LidSecurity = 6,
25074    LidKernel = 7,
25075}
25076impl AndroidLogId {
25077    /// String value of the enum field names used in the ProtoBuf definition.
25078    ///
25079    /// The values are not transformed in any way and thus are considered stable
25080    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25081    pub fn as_str_name(&self) -> &'static str {
25082        match self {
25083            AndroidLogId::LidDefault => "LID_DEFAULT",
25084            AndroidLogId::LidRadio => "LID_RADIO",
25085            AndroidLogId::LidEvents => "LID_EVENTS",
25086            AndroidLogId::LidSystem => "LID_SYSTEM",
25087            AndroidLogId::LidCrash => "LID_CRASH",
25088            AndroidLogId::LidStats => "LID_STATS",
25089            AndroidLogId::LidSecurity => "LID_SECURITY",
25090            AndroidLogId::LidKernel => "LID_KERNEL",
25091        }
25092    }
25093}
25094#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25095#[repr(i32)]
25096pub enum AndroidLogPriority {
25097    PrioUnspecified = 0,
25098    /// _DEFAULT, but should never be seen in logs.
25099    PrioUnused = 1,
25100    PrioVerbose = 2,
25101    PrioDebug = 3,
25102    PrioInfo = 4,
25103    PrioWarn = 5,
25104    PrioError = 6,
25105    PrioFatal = 7,
25106}
25107impl AndroidLogPriority {
25108    /// String value of the enum field names used in the ProtoBuf definition.
25109    ///
25110    /// The values are not transformed in any way and thus are considered stable
25111    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25112    pub fn as_str_name(&self) -> &'static str {
25113        match self {
25114            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
25115            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
25116            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
25117            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
25118            AndroidLogPriority::PrioInfo => "PRIO_INFO",
25119            AndroidLogPriority::PrioWarn => "PRIO_WARN",
25120            AndroidLogPriority::PrioError => "PRIO_ERROR",
25121            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
25122        }
25123    }
25124}
25125// End of protos/perfetto/config/android/pixel_modem_config.proto
25126
25127// Begin of protos/perfetto/common/protolog_common.proto
25128
25129#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25130#[repr(i32)]
25131pub enum ProtoLogLevel {
25132    ProtologLevelUndefined = 0,
25133    ProtologLevelDebug = 1,
25134    ProtologLevelVerbose = 2,
25135    ProtologLevelInfo = 3,
25136    ProtologLevelWarn = 4,
25137    ProtologLevelError = 5,
25138    ProtologLevelWtf = 6,
25139}
25140impl ProtoLogLevel {
25141    /// String value of the enum field names used in the ProtoBuf definition.
25142    ///
25143    /// The values are not transformed in any way and thus are considered stable
25144    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25145    pub fn as_str_name(&self) -> &'static str {
25146        match self {
25147            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
25148            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
25149            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
25150            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
25151            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
25152            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
25153            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
25154        }
25155    }
25156}
25157// End of protos/perfetto/config/qnx/qnx_config.proto
25158
25159// Begin of protos/perfetto/config/statsd/atom_ids.proto
25160
25161/// This enum is obtained by post-processing
25162/// AOSP/frameworks/proto_logging/stats/atoms.proto through
25163/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
25164/// enum value for each proto field defined in the upstream atoms.proto.
25165#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25166#[repr(i32)]
25167pub enum AtomId {
25168    AtomUnspecified = 0,
25169    AtomBleScanStateChanged = 2,
25170    AtomProcessStateChanged = 3,
25171    AtomBleScanResultReceived = 4,
25172    AtomSensorStateChanged = 5,
25173    AtomGpsScanStateChanged = 6,
25174    AtomSyncStateChanged = 7,
25175    AtomScheduledJobStateChanged = 8,
25176    AtomScreenBrightnessChanged = 9,
25177    AtomWakelockStateChanged = 10,
25178    AtomLongPartialWakelockStateChanged = 11,
25179    AtomMobileRadioPowerStateChanged = 12,
25180    AtomWifiRadioPowerStateChanged = 13,
25181    AtomActivityManagerSleepStateChanged = 14,
25182    AtomMemoryFactorStateChanged = 15,
25183    AtomExcessiveCpuUsageReported = 16,
25184    AtomCachedKillReported = 17,
25185    AtomProcessMemoryStatReported = 18,
25186    AtomLauncherEvent = 19,
25187    AtomBatterySaverModeStateChanged = 20,
25188    AtomDeviceIdleModeStateChanged = 21,
25189    AtomDeviceIdlingModeStateChanged = 22,
25190    AtomAudioStateChanged = 23,
25191    AtomMediaCodecStateChanged = 24,
25192    AtomCameraStateChanged = 25,
25193    AtomFlashlightStateChanged = 26,
25194    AtomUidProcessStateChanged = 27,
25195    AtomProcessLifeCycleStateChanged = 28,
25196    AtomScreenStateChanged = 29,
25197    AtomBatteryLevelChanged = 30,
25198    AtomChargingStateChanged = 31,
25199    AtomPluggedStateChanged = 32,
25200    AtomInteractiveStateChanged = 33,
25201    AtomTouchEventReported = 34,
25202    AtomWakeupAlarmOccurred = 35,
25203    AtomKernelWakeupReported = 36,
25204    AtomWifiLockStateChanged = 37,
25205    AtomWifiSignalStrengthChanged = 38,
25206    AtomWifiScanStateChanged = 39,
25207    AtomPhoneSignalStrengthChanged = 40,
25208    AtomSettingChanged = 41,
25209    AtomActivityForegroundStateChanged = 42,
25210    AtomIsolatedUidChanged = 43,
25211    AtomPacketWakeupOccurred = 44,
25212    AtomWallClockTimeShifted = 45,
25213    AtomAnomalyDetected = 46,
25214    AtomAppBreadcrumbReported = 47,
25215    AtomAppStartOccurred = 48,
25216    AtomAppStartCanceled = 49,
25217    AtomAppStartFullyDrawn = 50,
25218    AtomLmkKillOccurred = 51,
25219    AtomPictureInPictureStateChanged = 52,
25220    AtomWifiMulticastLockStateChanged = 53,
25221    AtomAppStartMemoryStateCaptured = 55,
25222    AtomShutdownSequenceReported = 56,
25223    AtomBootSequenceReported = 57,
25224    AtomOverlayStateChanged = 59,
25225    AtomForegroundServiceStateChanged = 60,
25226    AtomCallStateChanged = 61,
25227    AtomKeyguardStateChanged = 62,
25228    AtomKeyguardBouncerStateChanged = 63,
25229    AtomKeyguardBouncerPasswordEntered = 64,
25230    AtomAppDied = 65,
25231    AtomResourceConfigurationChanged = 66,
25232    AtomBluetoothEnabledStateChanged = 67,
25233    AtomBluetoothConnectionStateChanged = 68,
25234    AtomGpsSignalQualityChanged = 69,
25235    AtomUsbConnectorStateChanged = 70,
25236    AtomSpeakerImpedanceReported = 71,
25237    AtomHardwareFailed = 72,
25238    AtomPhysicalDropDetected = 73,
25239    AtomChargeCyclesReported = 74,
25240    AtomMobileConnectionStateChanged = 75,
25241    AtomMobileRadioTechnologyChanged = 76,
25242    AtomUsbDeviceAttached = 77,
25243    AtomAppCrashOccurred = 78,
25244    AtomAnrOccurred = 79,
25245    AtomWtfOccurred = 80,
25246    AtomLowMemReported = 81,
25247    AtomGenericAtom = 82,
25248    AtomVibratorStateChanged = 84,
25249    AtomDeferredJobStatsReported = 85,
25250    AtomThermalThrottling = 86,
25251    AtomBiometricAcquired = 87,
25252    AtomBiometricAuthenticated = 88,
25253    AtomBiometricErrorOccurred = 89,
25254    AtomUiEventReported = 90,
25255    AtomBatteryHealthSnapshot = 91,
25256    AtomSlowIo = 92,
25257    AtomBatteryCausedShutdown = 93,
25258    AtomPhoneServiceStateChanged = 94,
25259    AtomPhoneStateChanged = 95,
25260    AtomUserRestrictionChanged = 96,
25261    AtomSettingsUiChanged = 97,
25262    AtomConnectivityStateChanged = 98,
25263    AtomServiceStateChanged = 99,
25264    AtomServiceLaunchReported = 100,
25265    AtomFlagFlipUpdateOccurred = 101,
25266    AtomBinaryPushStateChanged = 102,
25267    AtomDevicePolicyEvent = 103,
25268    AtomDocsUiFileOpCanceled = 104,
25269    AtomDocsUiFileOpCopyMoveModeReported = 105,
25270    AtomDocsUiFileOpFailure = 106,
25271    AtomDocsUiProviderFileOp = 107,
25272    AtomDocsUiInvalidScopedAccessRequest = 108,
25273    AtomDocsUiLaunchReported = 109,
25274    AtomDocsUiRootVisited = 110,
25275    AtomDocsUiStartupMs = 111,
25276    AtomDocsUiUserActionReported = 112,
25277    AtomWifiEnabledStateChanged = 113,
25278    AtomWifiRunningStateChanged = 114,
25279    AtomAppCompacted = 115,
25280    AtomNetworkDnsEventReported = 116,
25281    AtomDocsUiPickerLaunchedFromReported = 117,
25282    AtomDocsUiPickResultReported = 118,
25283    AtomDocsUiSearchModeReported = 119,
25284    AtomDocsUiSearchTypeReported = 120,
25285    AtomDataStallEvent = 121,
25286    AtomRescuePartyResetReported = 122,
25287    AtomSignedConfigReported = 123,
25288    AtomGnssNiEventReported = 124,
25289    AtomBluetoothLinkLayerConnectionEvent = 125,
25290    AtomBluetoothAclConnectionStateChanged = 126,
25291    AtomBluetoothScoConnectionStateChanged = 127,
25292    AtomAppDowngraded = 128,
25293    AtomAppOptimizedAfterDowngraded = 129,
25294    AtomLowStorageStateChanged = 130,
25295    AtomGnssNfwNotificationReported = 131,
25296    AtomGnssConfigurationReported = 132,
25297    AtomUsbPortOverheatEventReported = 133,
25298    AtomNfcErrorOccurred = 134,
25299    AtomNfcStateChanged = 135,
25300    AtomNfcBeamOccurred = 136,
25301    AtomNfcCardemulationOccurred = 137,
25302    AtomNfcTagOccurred = 138,
25303    AtomNfcHceTransactionOccurred = 139,
25304    AtomSeStateChanged = 140,
25305    AtomSeOmapiReported = 141,
25306    AtomBroadcastDispatchLatencyReported = 142,
25307    AtomAttentionManagerServiceResultReported = 143,
25308    AtomAdbConnectionChanged = 144,
25309    AtomSpeechDspStatReported = 145,
25310    AtomUsbContaminantReported = 146,
25311    AtomWatchdogRollbackOccurred = 147,
25312    AtomBiometricSystemHealthIssueDetected = 148,
25313    AtomBubbleUiChanged = 149,
25314    AtomScheduledJobConstraintChanged = 150,
25315    AtomBluetoothActiveDeviceChanged = 151,
25316    AtomBluetoothA2dpPlaybackStateChanged = 152,
25317    AtomBluetoothA2dpCodecConfigChanged = 153,
25318    AtomBluetoothA2dpCodecCapabilityChanged = 154,
25319    AtomBluetoothA2dpAudioUnderrunReported = 155,
25320    AtomBluetoothA2dpAudioOverrunReported = 156,
25321    AtomBluetoothDeviceRssiReported = 157,
25322    AtomBluetoothDeviceFailedContactCounterReported = 158,
25323    AtomBluetoothDeviceTxPowerLevelReported = 159,
25324    AtomBluetoothHciTimeoutReported = 160,
25325    AtomBluetoothQualityReportReported = 161,
25326    AtomBluetoothDeviceInfoReported = 162,
25327    AtomBluetoothRemoteVersionInfoReported = 163,
25328    AtomBluetoothSdpAttributeReported = 164,
25329    AtomBluetoothBondStateChanged = 165,
25330    AtomBluetoothClassicPairingEventReported = 166,
25331    AtomBluetoothSmpPairingEventReported = 167,
25332    AtomScreenTimeoutExtensionReported = 168,
25333    AtomProcessStartTime = 169,
25334    AtomPermissionGrantRequestResultReported = 170,
25335    AtomBluetoothSocketConnectionStateChanged = 171,
25336    AtomDeviceIdentifierAccessDenied = 172,
25337    AtomBubbleDeveloperErrorReported = 173,
25338    AtomAssistGestureStageReported = 174,
25339    AtomAssistGestureFeedbackReported = 175,
25340    AtomAssistGestureProgressReported = 176,
25341    AtomTouchGestureClassified = 177,
25342    AtomHiddenApiUsed = 178,
25343    AtomStyleUiChanged = 179,
25344    AtomPrivacyIndicatorsInteracted = 180,
25345    AtomAppInstallOnExternalStorageReported = 181,
25346    AtomNetworkStackReported = 182,
25347    AtomAppMovedStorageReported = 183,
25348    AtomBiometricEnrolled = 184,
25349    AtomSystemServerWatchdogOccurred = 185,
25350    AtomTombStoneOccurred = 186,
25351    AtomBluetoothClassOfDeviceReported = 187,
25352    AtomIntelligenceEventReported = 188,
25353    AtomThermalThrottlingSeverityStateChanged = 189,
25354    AtomRoleRequestResultReported = 190,
25355    AtomMediametricsAudiopolicyReported = 191,
25356    AtomMediametricsAudiorecordReported = 192,
25357    AtomMediametricsAudiothreadReported = 193,
25358    AtomMediametricsAudiotrackReported = 194,
25359    AtomMediametricsCodecReported = 195,
25360    AtomMediametricsDrmWidevineReported = 196,
25361    AtomMediametricsExtractorReported = 197,
25362    AtomMediametricsMediadrmReported = 198,
25363    AtomMediametricsNuplayerReported = 199,
25364    AtomMediametricsRecorderReported = 200,
25365    AtomMediametricsDrmmanagerReported = 201,
25366    AtomCarPowerStateChanged = 203,
25367    AtomGarageModeInfo = 204,
25368    AtomTestAtomReported = 205,
25369    AtomContentCaptureCallerMismatchReported = 206,
25370    AtomContentCaptureServiceEvents = 207,
25371    AtomContentCaptureSessionEvents = 208,
25372    AtomContentCaptureFlushed = 209,
25373    AtomLocationManagerApiUsageReported = 210,
25374    AtomReviewPermissionsFragmentResultReported = 211,
25375    AtomRuntimePermissionsUpgradeResult = 212,
25376    AtomGrantPermissionsActivityButtonActions = 213,
25377    AtomLocationAccessCheckNotificationAction = 214,
25378    AtomAppPermissionFragmentActionReported = 215,
25379    AtomAppPermissionFragmentViewed = 216,
25380    AtomAppPermissionsFragmentViewed = 217,
25381    AtomPermissionAppsFragmentViewed = 218,
25382    AtomTextSelectionEvent = 219,
25383    AtomTextLinkifyEvent = 220,
25384    AtomConversationActionsEvent = 221,
25385    AtomLanguageDetectionEvent = 222,
25386    AtomExclusionRectStateChanged = 223,
25387    AtomBackGestureReportedReported = 224,
25388    AtomUpdateEngineUpdateAttemptReported = 225,
25389    AtomUpdateEngineSuccessfulUpdateReported = 226,
25390    AtomCameraActionEvent = 227,
25391    AtomAppCompatibilityChangeReported = 228,
25392    AtomPerfettoUploaded = 229,
25393    AtomVmsClientConnectionStateChanged = 230,
25394    AtomMediaProviderScanOccurred = 233,
25395    AtomMediaContentDeleted = 234,
25396    AtomMediaProviderPermissionRequested = 235,
25397    AtomMediaProviderSchemaChanged = 236,
25398    AtomMediaProviderIdleMaintenanceFinished = 237,
25399    AtomRebootEscrowRecoveryReported = 238,
25400    AtomBootTimeEventDurationReported = 239,
25401    AtomBootTimeEventElapsedTimeReported = 240,
25402    AtomBootTimeEventUtcTimeReported = 241,
25403    AtomBootTimeEventErrorCodeReported = 242,
25404    AtomUserspaceRebootReported = 243,
25405    AtomNotificationReported = 244,
25406    AtomNotificationPanelReported = 245,
25407    AtomNotificationChannelModified = 246,
25408    AtomIntegrityCheckResultReported = 247,
25409    AtomIntegrityRulesPushed = 248,
25410    AtomCbMessageReported = 249,
25411    AtomCbMessageError = 250,
25412    AtomWifiHealthStatReported = 251,
25413    AtomWifiFailureStatReported = 252,
25414    AtomWifiConnectionResultReported = 253,
25415    AtomAppFreezeChanged = 254,
25416    AtomSnapshotMergeReported = 255,
25417    AtomForegroundServiceAppOpSessionEnded = 256,
25418    AtomDisplayJankReported = 257,
25419    AtomAppStandbyBucketChanged = 258,
25420    AtomSharesheetStarted = 259,
25421    AtomRankingSelected = 260,
25422    AtomTvsettingsUiInteracted = 261,
25423    AtomLauncherSnapshot = 262,
25424    AtomPackageInstallerV2Reported = 263,
25425    AtomUserLifecycleJourneyReported = 264,
25426    AtomUserLifecycleEventOccurred = 265,
25427    AtomAccessibilityShortcutReported = 266,
25428    AtomAccessibilityServiceReported = 267,
25429    AtomDocsUiDragAndDropReported = 268,
25430    AtomAppUsageEventOccurred = 269,
25431    AtomAutoRevokeNotificationClicked = 270,
25432    AtomAutoRevokeFragmentAppViewed = 271,
25433    AtomAutoRevokedAppInteraction = 272,
25434    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
25435    AtomEvsUsageStatsReported = 274,
25436    AtomAudioPowerUsageDataReported = 275,
25437    AtomTvTunerStateChanged = 276,
25438    AtomMediaoutputOpSwitchReported = 277,
25439    AtomCbMessageFiltered = 278,
25440    AtomTvTunerDvrStatus = 279,
25441    AtomTvCasSessionOpenStatus = 280,
25442    AtomAssistantInvocationReported = 281,
25443    AtomDisplayWakeReported = 282,
25444    AtomCarUserHalModifyUserRequestReported = 283,
25445    AtomCarUserHalModifyUserResponseReported = 284,
25446    AtomCarUserHalPostSwitchResponseReported = 285,
25447    AtomCarUserHalInitialUserInfoRequestReported = 286,
25448    AtomCarUserHalInitialUserInfoResponseReported = 287,
25449    AtomCarUserHalUserAssociationRequestReported = 288,
25450    AtomCarUserHalSetUserAssociationResponseReported = 289,
25451    AtomNetworkIpProvisioningReported = 290,
25452    AtomNetworkDhcpRenewReported = 291,
25453    AtomNetworkValidationReported = 292,
25454    AtomNetworkStackQuirkReported = 293,
25455    AtomMediametricsAudiorecorddeviceusageReported = 294,
25456    AtomMediametricsAudiothreaddeviceusageReported = 295,
25457    AtomMediametricsAudiotrackdeviceusageReported = 296,
25458    AtomMediametricsAudiodeviceconnectionReported = 297,
25459    AtomBlobCommitted = 298,
25460    AtomBlobLeased = 299,
25461    AtomBlobOpened = 300,
25462    AtomContactsProviderStatusReported = 301,
25463    AtomKeystoreKeyEventReported = 302,
25464    AtomNetworkTetheringReported = 303,
25465    AtomImeTouchReported = 304,
25466    AtomUiInteractionFrameInfoReported = 305,
25467    AtomUiActionLatencyReported = 306,
25468    AtomWifiDisconnectReported = 307,
25469    AtomWifiConnectionStateChanged = 308,
25470    AtomHdmiCecActiveSourceChanged = 309,
25471    AtomHdmiCecMessageReported = 310,
25472    AtomAirplaneMode = 311,
25473    AtomModemRestart = 312,
25474    AtomCarrierIdMismatchReported = 313,
25475    AtomCarrierIdTableUpdated = 314,
25476    AtomDataStallRecoveryReported = 315,
25477    AtomMediametricsMediaparserReported = 316,
25478    AtomTlsHandshakeReported = 317,
25479    AtomTextClassifierApiUsageReported = 318,
25480    AtomCarWatchdogKillStatsReported = 319,
25481    AtomMediametricsPlaybackReported = 320,
25482    AtomMediaNetworkInfoChanged = 321,
25483    AtomMediaPlaybackStateChanged = 322,
25484    AtomMediaPlaybackErrorReported = 323,
25485    AtomMediaPlaybackTrackChanged = 324,
25486    AtomWifiScanReported = 325,
25487    AtomWifiPnoScanReported = 326,
25488    AtomTifTuneChanged = 327,
25489    AtomAutoRotateReported = 328,
25490    AtomPerfettoTrigger = 329,
25491    AtomTranscodingData = 330,
25492    AtomImsServiceEntitlementUpdated = 331,
25493    AtomDeviceRotated = 333,
25494    AtomSimSpecificSettingsRestored = 334,
25495    AtomTextClassifierDownloadReported = 335,
25496    AtomPinStorageEvent = 336,
25497    AtomFaceDownReported = 337,
25498    AtomBluetoothHalCrashReasonReported = 338,
25499    AtomRebootEscrowPreparationReported = 339,
25500    AtomRebootEscrowLskfCaptureReported = 340,
25501    AtomRebootEscrowRebootReported = 341,
25502    AtomBinderLatencyReported = 342,
25503    AtomMediametricsAaudiostreamReported = 343,
25504    AtomMediaTranscodingSessionEnded = 344,
25505    AtomMagnificationUsageReported = 345,
25506    AtomMagnificationModeWithImeOnReported = 346,
25507    AtomAppSearchCallStatsReported = 347,
25508    AtomAppSearchPutDocumentStatsReported = 348,
25509    AtomDeviceControlChanged = 349,
25510    AtomDeviceStateChanged = 350,
25511    AtomInputdeviceRegistered = 351,
25512    AtomSmartspaceCardReported = 352,
25513    AtomAuthPromptAuthenticateInvoked = 353,
25514    AtomAuthManagerCanAuthenticateInvoked = 354,
25515    AtomAuthEnrollActionInvoked = 355,
25516    AtomAuthDeprecatedApiUsed = 356,
25517    AtomUnattendedRebootOccurred = 357,
25518    AtomLongRebootBlockingReported = 358,
25519    AtomLocationTimeZoneProviderStateChanged = 359,
25520    AtomFdtrackEventOccurred = 364,
25521    AtomTimeoutAutoExtendedReported = 365,
25522    AtomAlarmBatchDelivered = 367,
25523    AtomAlarmScheduled = 368,
25524    AtomCarWatchdogIoOveruseStatsReported = 369,
25525    AtomUserLevelHibernationStateChanged = 370,
25526    AtomAppSearchInitializeStatsReported = 371,
25527    AtomAppSearchQueryStatsReported = 372,
25528    AtomAppProcessDied = 373,
25529    AtomNetworkIpReachabilityMonitorReported = 374,
25530    AtomSlowInputEventReported = 375,
25531    AtomAnrOccurredProcessingStarted = 376,
25532    AtomAppSearchRemoveStatsReported = 377,
25533    AtomMediaCodecReported = 378,
25534    AtomPermissionUsageFragmentInteraction = 379,
25535    AtomPermissionDetailsInteraction = 380,
25536    AtomPrivacySensorToggleInteraction = 381,
25537    AtomPrivacyToggleDialogInteraction = 382,
25538    AtomAppSearchOptimizeStatsReported = 383,
25539    AtomNonA11yToolServiceWarningReport = 384,
25540    AtomAppCompatStateChanged = 386,
25541    AtomSizeCompatRestartButtonEventReported = 387,
25542    AtomSplitscreenUiChanged = 388,
25543    AtomNetworkDnsHandshakeReported = 389,
25544    AtomBluetoothCodePathCounter = 390,
25545    AtomBluetoothLeBatchScanReportDelay = 392,
25546    AtomAccessibilityFloatingMenuUiChanged = 393,
25547    AtomNeuralnetworksCompilationCompleted = 394,
25548    AtomNeuralnetworksExecutionCompleted = 395,
25549    AtomNeuralnetworksCompilationFailed = 396,
25550    AtomNeuralnetworksExecutionFailed = 397,
25551    AtomContextHubBooted = 398,
25552    AtomContextHubRestarted = 399,
25553    AtomContextHubLoadedNanoappSnapshotReported = 400,
25554    AtomChreCodeDownloadTransacted = 401,
25555    AtomUwbSessionInited = 402,
25556    AtomUwbSessionClosed = 403,
25557    AtomUwbFirstRangingReceived = 404,
25558    AtomUwbRangingMeasurementReceived = 405,
25559    AtomTextClassifierDownloadWorkScheduled = 406,
25560    AtomTextClassifierDownloadWorkCompleted = 407,
25561    AtomClipboardCleared = 408,
25562    AtomVmCreationRequested = 409,
25563    AtomNearbyDeviceScanStateChanged = 410,
25564    AtomApplicationLocalesChanged = 412,
25565    AtomMediametricsAudiotrackstatusReported = 413,
25566    AtomFoldStateDurationReported = 414,
25567    AtomLocationTimeZoneProviderControllerStateChanged = 415,
25568    AtomDisplayHbmStateChanged = 416,
25569    AtomDisplayHbmBrightnessChanged = 417,
25570    AtomPersistentUriPermissionsFlushed = 418,
25571    AtomEarlyBootCompOsArtifactsCheckReported = 419,
25572    AtomVbmetaDigestReported = 420,
25573    AtomApexInfoGathered = 421,
25574    AtomPvmInfoGathered = 422,
25575    AtomWearSettingsUiInteracted = 423,
25576    AtomTracingServiceReportEvent = 424,
25577    AtomMediametricsAudiorecordstatusReported = 425,
25578    AtomLauncherLatency = 426,
25579    AtomDropboxEntryDropped = 427,
25580    AtomWifiP2pConnectionReported = 428,
25581    AtomGameStateChanged = 429,
25582    AtomHotwordDetectorCreateRequested = 430,
25583    AtomHotwordDetectionServiceInitResultReported = 431,
25584    AtomHotwordDetectionServiceRestarted = 432,
25585    AtomHotwordDetectorKeyphraseTriggered = 433,
25586    AtomHotwordDetectorEvents = 434,
25587    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
25588    AtomContactsIndexerUpdateStatsReported = 440,
25589    AtomAppBackgroundRestrictionsInfo = 441,
25590    AtomMmsSmsProviderGetThreadIdFailed = 442,
25591    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
25592    AtomPermissionReminderNotificationInteracted = 444,
25593    AtomRecentPermissionDecisionsInteracted = 445,
25594    AtomGnssPsdsDownloadReported = 446,
25595    AtomLeAudioConnectionSessionReported = 447,
25596    AtomLeAudioBroadcastSessionReported = 448,
25597    AtomDreamUiEventReported = 449,
25598    AtomTaskManagerEventReported = 450,
25599    AtomCdmAssociationAction = 451,
25600    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
25601    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
25602    AtomAccessibilityTextReadingOptionsChanged = 454,
25603    AtomWifiSetupFailureCrashReported = 455,
25604    AtomUwbDeviceErrorReported = 456,
25605    AtomIsolatedCompilationScheduled = 457,
25606    AtomIsolatedCompilationEnded = 458,
25607    AtomOnsOpportunisticEsimProvisioningComplete = 459,
25608    AtomSystemServerPreWatchdogOccurred = 460,
25609    AtomTelephonyAnomalyDetected = 461,
25610    AtomLetterboxPositionChanged = 462,
25611    AtomRemoteKeyProvisioningAttempt = 463,
25612    AtomRemoteKeyProvisioningNetworkInfo = 464,
25613    AtomRemoteKeyProvisioningTiming = 465,
25614    AtomMediaoutputOpInteractionReport = 466,
25615    AtomSyncExemptionOccurred = 468,
25616    AtomAutofillPresentationEventReported = 469,
25617    AtomDockStateChanged = 470,
25618    AtomSafetySourceStateCollected = 471,
25619    AtomSafetyCenterSystemEventReported = 472,
25620    AtomSafetyCenterInteractionReported = 473,
25621    AtomSettingsProviderSettingChanged = 474,
25622    AtomBroadcastDeliveryEventReported = 475,
25623    AtomServiceRequestEventReported = 476,
25624    AtomProviderAcquisitionEventReported = 477,
25625    AtomBluetoothDeviceNameReported = 478,
25626    AtomCbConfigUpdated = 479,
25627    AtomCbModuleErrorReported = 480,
25628    AtomCbServiceFeatureChanged = 481,
25629    AtomCbReceiverFeatureChanged = 482,
25630    AtomPrivacySignalNotificationInteraction = 484,
25631    AtomPrivacySignalIssueCardInteraction = 485,
25632    AtomPrivacySignalsJobFailure = 486,
25633    AtomVibrationReported = 487,
25634    AtomUwbRangingStart = 489,
25635    AtomAppCompactedV2 = 491,
25636    AtomDisplayBrightnessChanged = 494,
25637    AtomActivityActionBlocked = 495,
25638    AtomNetworkDnsServerSupportReported = 504,
25639    AtomVmBooted = 505,
25640    AtomVmExited = 506,
25641    AtomAmbientBrightnessStatsReported = 507,
25642    AtomMediametricsSpatializercapabilitiesReported = 508,
25643    AtomMediametricsSpatializerdeviceenabledReported = 509,
25644    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
25645    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
25646    AtomHearingAidInfoReported = 513,
25647    AtomDeviceWideJobConstraintChanged = 514,
25648    AtomAmbientModeChanged = 515,
25649    AtomAnrLatencyReported = 516,
25650    AtomResourceApiInfo = 517,
25651    AtomSystemDefaultNetworkChanged = 518,
25652    AtomIwlanSetupDataCallResultReported = 519,
25653    AtomIwlanPdnDisconnectedReasonReported = 520,
25654    AtomAirplaneModeSessionReported = 521,
25655    AtomVmCpuStatusReported = 522,
25656    AtomVmMemStatusReported = 523,
25657    AtomPackageInstallationSessionReported = 524,
25658    AtomDefaultNetworkRematchInfo = 525,
25659    AtomNetworkSelectionPerformance = 526,
25660    AtomNetworkNsdReported = 527,
25661    AtomBluetoothDisconnectionReasonReported = 529,
25662    AtomBluetoothLocalVersionsReported = 530,
25663    AtomBluetoothRemoteSupportedFeaturesReported = 531,
25664    AtomBluetoothLocalSupportedFeaturesReported = 532,
25665    AtomBluetoothGattAppInfo = 533,
25666    AtomBrightnessConfigurationUpdated = 534,
25667    AtomWearMediaOutputSwitcherLaunched = 538,
25668    AtomWearMediaOutputSwitcherFinished = 539,
25669    AtomWearMediaOutputSwitcherConnectionReported = 540,
25670    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
25671    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
25672    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
25673    AtomPackageManagerSnapshotReported = 544,
25674    AtomPackageManagerAppsFilterCacheBuildReported = 545,
25675    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
25676    AtomLauncherImpressionEvent = 547,
25677    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
25678    AtomWsWatchFaceEdited = 551,
25679    AtomWsWatchFaceFavoriteActionReported = 552,
25680    AtomWsWatchFaceSetActionReported = 553,
25681    AtomPackageUninstallationReported = 554,
25682    AtomGameModeChanged = 555,
25683    AtomGameModeConfigurationChanged = 556,
25684    AtomBedtimeModeStateChanged = 557,
25685    AtomNetworkSliceSessionEnded = 558,
25686    AtomNetworkSliceDailyDataUsageReported = 559,
25687    AtomNfcTagTypeOccurred = 560,
25688    AtomNfcAidConflictOccurred = 561,
25689    AtomNfcReaderConflictOccurred = 562,
25690    AtomWsTileListChanged = 563,
25691    AtomGetTypeAccessedWithoutPermission = 564,
25692    AtomMobileBundledAppInfoGathered = 566,
25693    AtomWsWatchFaceComplicationSetChanged = 567,
25694    AtomMediaDrmCreated = 568,
25695    AtomMediaDrmErrored = 569,
25696    AtomMediaDrmSessionOpened = 570,
25697    AtomMediaDrmSessionClosed = 571,
25698    AtomUserSelectedResolution = 572,
25699    AtomUnsafeIntentEventReported = 573,
25700    AtomPerformanceHintSessionReported = 574,
25701    AtomMediametricsMidiDeviceCloseReported = 576,
25702    AtomBiometricTouchReported = 577,
25703    AtomHotwordAudioEgressEventReported = 578,
25704    AtomLocationEnabledStateChanged = 580,
25705    AtomImeRequestFinished = 581,
25706    AtomUsbComplianceWarningsReported = 582,
25707    AtomAppSupportedLocalesChanged = 583,
25708    AtomMediaProviderVolumeRecoveryReported = 586,
25709    AtomBiometricPropertiesCollected = 587,
25710    AtomKernelWakeupAttributed = 588,
25711    AtomScreenStateChangedV2 = 589,
25712    AtomWsBackupActionReported = 590,
25713    AtomWsRestoreActionReported = 591,
25714    AtomDeviceLogAccessEventReported = 592,
25715    AtomMediaSessionUpdated = 594,
25716    AtomWearOobeStateChanged = 595,
25717    AtomWsNotificationUpdated = 596,
25718    AtomNetworkValidationFailureStatsDailyReported = 601,
25719    AtomWsComplicationTapped = 602,
25720    AtomWsNotificationBlocking = 780,
25721    AtomWsNotificationBridgemodeUpdated = 822,
25722    AtomWsNotificationDismissalActioned = 823,
25723    AtomWsNotificationActioned = 824,
25724    AtomWsNotificationLatency = 880,
25725    AtomWifiBytesTransfer = 10000,
25726    AtomWifiBytesTransferByFgBg = 10001,
25727    AtomMobileBytesTransfer = 10002,
25728    AtomMobileBytesTransferByFgBg = 10003,
25729    AtomBluetoothBytesTransfer = 10006,
25730    AtomKernelWakelock = 10004,
25731    AtomSubsystemSleepState = 10005,
25732    AtomCpuTimePerUid = 10009,
25733    AtomCpuTimePerUidFreq = 10010,
25734    AtomWifiActivityInfo = 10011,
25735    AtomModemActivityInfo = 10012,
25736    AtomBluetoothActivityInfo = 10007,
25737    AtomProcessMemoryState = 10013,
25738    AtomSystemElapsedRealtime = 10014,
25739    AtomSystemUptime = 10015,
25740    AtomCpuActiveTime = 10016,
25741    AtomCpuClusterTime = 10017,
25742    AtomDiskSpace = 10018,
25743    AtomRemainingBatteryCapacity = 10019,
25744    AtomFullBatteryCapacity = 10020,
25745    AtomTemperature = 10021,
25746    AtomBinderCalls = 10022,
25747    AtomBinderCallsExceptions = 10023,
25748    AtomLooperStats = 10024,
25749    AtomDiskStats = 10025,
25750    AtomDirectoryUsage = 10026,
25751    AtomAppSize = 10027,
25752    AtomCategorySize = 10028,
25753    AtomProcStats = 10029,
25754    AtomBatteryVoltage = 10030,
25755    AtomNumFingerprintsEnrolled = 10031,
25756    AtomDiskIo = 10032,
25757    AtomPowerProfile = 10033,
25758    AtomProcStatsPkgProc = 10034,
25759    AtomProcessCpuTime = 10035,
25760    AtomCpuTimePerThreadFreq = 10037,
25761    AtomOnDevicePowerMeasurement = 10038,
25762    AtomDeviceCalculatedPowerUse = 10039,
25763    AtomProcessMemoryHighWaterMark = 10042,
25764    AtomBatteryLevel = 10043,
25765    AtomBuildInformation = 10044,
25766    AtomBatteryCycleCount = 10045,
25767    AtomDebugElapsedClock = 10046,
25768    AtomDebugFailingElapsedClock = 10047,
25769    AtomNumFacesEnrolled = 10048,
25770    AtomRoleHolder = 10049,
25771    AtomDangerousPermissionState = 10050,
25772    AtomTrainInfo = 10051,
25773    AtomTimeZoneDataInfo = 10052,
25774    AtomExternalStorageInfo = 10053,
25775    AtomGpuStatsGlobalInfo = 10054,
25776    AtomGpuStatsAppInfo = 10055,
25777    AtomSystemIonHeapSize = 10056,
25778    AtomAppsOnExternalStorageInfo = 10057,
25779    AtomFaceSettings = 10058,
25780    AtomCoolingDevice = 10059,
25781    AtomAppOps = 10060,
25782    AtomProcessSystemIonHeapSize = 10061,
25783    AtomSurfaceflingerStatsGlobalInfo = 10062,
25784    AtomSurfaceflingerStatsLayerInfo = 10063,
25785    AtomProcessMemorySnapshot = 10064,
25786    AtomVmsClientStats = 10065,
25787    AtomNotificationRemoteViews = 10066,
25788    AtomDangerousPermissionStateSampled = 10067,
25789    AtomGraphicsStats = 10068,
25790    AtomRuntimeAppOpAccess = 10069,
25791    AtomIonHeapSize = 10070,
25792    AtomPackageNotificationPreferences = 10071,
25793    AtomPackageNotificationChannelPreferences = 10072,
25794    AtomPackageNotificationChannelGroupPreferences = 10073,
25795    AtomGnssStats = 10074,
25796    AtomAttributedAppOps = 10075,
25797    AtomVoiceCallSession = 10076,
25798    AtomVoiceCallRatUsage = 10077,
25799    AtomSimSlotState = 10078,
25800    AtomSupportedRadioAccessFamily = 10079,
25801    AtomSettingSnapshot = 10080,
25802    AtomBlobInfo = 10081,
25803    AtomDataUsageBytesTransfer = 10082,
25804    AtomBytesTransferByTagAndMetered = 10083,
25805    AtomDndModeRule = 10084,
25806    AtomGeneralExternalStorageAccessStats = 10085,
25807    AtomIncomingSms = 10086,
25808    AtomOutgoingSms = 10087,
25809    AtomCarrierIdTableVersion = 10088,
25810    AtomDataCallSession = 10089,
25811    AtomCellularServiceState = 10090,
25812    AtomCellularDataServiceSwitch = 10091,
25813    AtomSystemMemory = 10092,
25814    AtomImsRegistrationTermination = 10093,
25815    AtomImsRegistrationStats = 10094,
25816    AtomCpuTimePerClusterFreq = 10095,
25817    AtomCpuCyclesPerUidCluster = 10096,
25818    AtomDeviceRotatedData = 10097,
25819    AtomCpuCyclesPerThreadGroupCluster = 10098,
25820    AtomMediaDrmActivityInfo = 10099,
25821    AtomOemManagedBytesTransfer = 10100,
25822    AtomGnssPowerStats = 10101,
25823    AtomTimeZoneDetectorState = 10102,
25824    AtomKeystore2StorageStats = 10103,
25825    AtomRkpPoolStats = 10104,
25826    AtomProcessDmabufMemory = 10105,
25827    AtomPendingAlarmInfo = 10106,
25828    AtomUserLevelHibernatedApps = 10107,
25829    AtomLauncherLayoutSnapshot = 10108,
25830    AtomGlobalHibernatedApps = 10109,
25831    AtomInputEventLatencySketch = 10110,
25832    AtomBatteryUsageStatsBeforeReset = 10111,
25833    AtomBatteryUsageStatsSinceReset = 10112,
25834    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
25835    AtomInstalledIncrementalPackage = 10114,
25836    AtomTelephonyNetworkRequests = 10115,
25837    AtomAppSearchStorageInfo = 10116,
25838    AtomVmstat = 10117,
25839    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
25840    AtomKeystore2KeyCreationWithAuthInfo = 10119,
25841    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
25842    AtomKeystore2AtomWithOverflow = 10121,
25843    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
25844    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
25845    AtomRkpErrorStats = 10124,
25846    AtomKeystore2CrashStats = 10125,
25847    AtomVendorApexInfo = 10126,
25848    AtomAccessibilityShortcutStats = 10127,
25849    AtomAccessibilityFloatingMenuStats = 10128,
25850    AtomDataUsageBytesTransferV2 = 10129,
25851    AtomMediaCapabilities = 10130,
25852    AtomCarWatchdogSystemIoUsageSummary = 10131,
25853    AtomCarWatchdogUidIoUsageSummary = 10132,
25854    AtomImsRegistrationFeatureTagStats = 10133,
25855    AtomRcsClientProvisioningStats = 10134,
25856    AtomRcsAcsProvisioningStats = 10135,
25857    AtomSipDelegateStats = 10136,
25858    AtomSipTransportFeatureTagStats = 10137,
25859    AtomSipMessageResponse = 10138,
25860    AtomSipTransportSession = 10139,
25861    AtomImsDedicatedBearerListenerEvent = 10140,
25862    AtomImsDedicatedBearerEvent = 10141,
25863    AtomImsRegistrationServiceDescStats = 10142,
25864    AtomUceEventStats = 10143,
25865    AtomPresenceNotifyEvent = 10144,
25866    AtomGbaEvent = 10145,
25867    AtomPerSimStatus = 10146,
25868    AtomGpuWorkPerUid = 10147,
25869    AtomPersistentUriPermissionsAmountPerPackage = 10148,
25870    AtomSignedPartitionInfo = 10149,
25871    AtomPinnedFileSizesPerPackage = 10150,
25872    AtomPendingIntentsPerPackage = 10151,
25873    AtomUserInfo = 10152,
25874    AtomTelephonyNetworkRequestsV2 = 10153,
25875    AtomDeviceTelephonyProperties = 10154,
25876    AtomRemoteKeyProvisioningErrorCounts = 10155,
25877    AtomSafetyState = 10156,
25878    AtomIncomingMms = 10157,
25879    AtomOutgoingMms = 10158,
25880    AtomMultiUserInfo = 10160,
25881    AtomNetworkBpfMapInfo = 10161,
25882    AtomOutgoingShortCodeSms = 10162,
25883    AtomConnectivityStateSample = 10163,
25884    AtomNetworkSelectionRematchReasonsInfo = 10164,
25885    AtomGameModeInfo = 10165,
25886    AtomGameModeConfiguration = 10166,
25887    AtomGameModeListener = 10167,
25888    AtomNetworkSliceRequestCount = 10168,
25889    AtomWsTileSnapshot = 10169,
25890    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
25891    AtomProcessState = 10171,
25892    AtomProcessAssociation = 10172,
25893    AtomAdpfSystemComponentInfo = 10173,
25894    AtomNotificationMemoryUse = 10174,
25895    AtomHdrCapabilities = 10175,
25896    AtomWsFavouriteWatchFaceListSnapshot = 10176,
25897    AtomAccessibilityCheckResultReported = 910,
25898    AtomAdaptiveAuthUnlockAfterLockReported = 820,
25899    AtomThermalStatusCalled = 772,
25900    AtomThermalHeadroomCalled = 773,
25901    AtomThermalHeadroomThresholdsCalled = 774,
25902    AtomAdpfHintSessionTidCleanup = 839,
25903    AtomThermalHeadroomThresholds = 10201,
25904    AtomAdpfSessionSnapshot = 10218,
25905    AtomJsscriptengineLatencyReported = 483,
25906    AtomAdServicesApiCalled = 435,
25907    AtomAdServicesMesurementReportsUploaded = 436,
25908    AtomMobileDataDownloadFileGroupStatusReported = 490,
25909    AtomMobileDataDownloadDownloadResultReported = 502,
25910    AtomAdServicesSettingsUsageReported = 493,
25911    AtomBackgroundFetchProcessReported = 496,
25912    AtomUpdateCustomAudienceProcessReported = 497,
25913    AtomRunAdBiddingProcessReported = 498,
25914    AtomRunAdScoringProcessReported = 499,
25915    AtomRunAdSelectionProcessReported = 500,
25916    AtomRunAdBiddingPerCaProcessReported = 501,
25917    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
25918    AtomAdServicesMeasurementRegistrations = 512,
25919    AtomAdServicesGetTopicsReported = 535,
25920    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
25921    AtomAdServicesEpochComputationClassifierReported = 537,
25922    AtomAdServicesBackCompatGetTopicsReported = 598,
25923    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
25924    AtomAdServicesMeasurementDebugKeys = 640,
25925    AtomAdServicesErrorReported = 662,
25926    AtomAdServicesBackgroundJobsExecutionReported = 663,
25927    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
25928    AtomAdServicesMeasurementAttribution = 674,
25929    AtomAdServicesMeasurementJobs = 675,
25930    AtomAdServicesMeasurementWipeout = 676,
25931    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
25932    AtomAdServicesEnrollmentDataStored = 697,
25933    AtomAdServicesEnrollmentFileDownloaded = 698,
25934    AtomAdServicesEnrollmentMatched = 699,
25935    AtomAdServicesConsentMigrated = 702,
25936    AtomAdServicesEnrollmentFailed = 714,
25937    AtomAdServicesMeasurementClickVerification = 756,
25938    AtomAdServicesEncryptionKeyFetched = 765,
25939    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
25940    AtomDestinationRegisteredBeacons = 767,
25941    AtomReportInteractionApiCalled = 768,
25942    AtomInteractionReportingTableCleared = 769,
25943    AtomAppManifestConfigHelperCalled = 788,
25944    AtomAdFilteringProcessJoinCaReported = 793,
25945    AtomAdFilteringProcessAdSelectionReported = 794,
25946    AtomAdCounterHistogramUpdaterReported = 795,
25947    AtomSignatureVerification = 807,
25948    AtomKAnonImmediateSignJoinStatusReported = 808,
25949    AtomKAnonBackgroundJobStatusReported = 809,
25950    AtomKAnonInitializeStatusReported = 810,
25951    AtomKAnonSignStatusReported = 811,
25952    AtomKAnonJoinStatusReported = 812,
25953    AtomKAnonKeyAttestationStatusReported = 813,
25954    AtomGetAdSelectionDataApiCalled = 814,
25955    AtomGetAdSelectionDataBuyerInputGenerated = 815,
25956    AtomBackgroundJobSchedulingReported = 834,
25957    AtomTopicsEncryptionEpochComputationReported = 840,
25958    AtomTopicsEncryptionGetTopicsReported = 841,
25959    AtomAdservicesShellCommandCalled = 842,
25960    AtomUpdateSignalsApiCalled = 843,
25961    AtomEncodingJobRun = 844,
25962    AtomEncodingJsFetch = 845,
25963    AtomEncodingJsExecution = 846,
25964    AtomPersistAdSelectionResultCalled = 847,
25965    AtomServerAuctionKeyFetchCalled = 848,
25966    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
25967    AtomAdServicesMeasurementProcessOdpRegistration = 864,
25968    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
25969    AtomSelectAdsFromOutcomesApiCalled = 876,
25970    AtomReportImpressionApiCalled = 877,
25971    AtomAdServicesEnrollmentTransactionStats = 885,
25972    AtomAdServicesCobaltLoggerEventReported = 902,
25973    AtomAdServicesCobaltPeriodicJobEventReported = 903,
25974    AtomUpdateSignalsProcessReported = 905,
25975    AtomTopicsScheduleEpochJobSettingReported = 930,
25976    AtomAiWallpapersButtonPressed = 706,
25977    AtomAiWallpapersTemplateSelected = 707,
25978    AtomAiWallpapersTermSelected = 708,
25979    AtomAiWallpapersWallpaperSet = 709,
25980    AtomAiWallpapersSessionSummary = 710,
25981    AtomApexInstallationRequested = 732,
25982    AtomApexInstallationStaged = 733,
25983    AtomApexInstallationEnded = 734,
25984    AtomAppSearchSetSchemaStatsReported = 385,
25985    AtomAppSearchSchemaMigrationStatsReported = 579,
25986    AtomAppSearchUsageSearchIntentStatsReported = 825,
25987    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
25988    AtomAppSearchAppsIndexerStatsReported = 909,
25989    AtomArtDatumReported = 332,
25990    AtomArtDeviceDatumReported = 550,
25991    AtomArtDatumDeltaReported = 565,
25992    AtomArtDex2oatReported = 929,
25993    AtomArtDeviceStatus = 10205,
25994    AtomBackgroundDexoptJobEnded = 467,
25995    AtomPrerebootDexoptJobEnded = 883,
25996    AtomOdrefreshReported = 366,
25997    AtomOdsignReported = 548,
25998    AtomAutofillUiEventReported = 603,
25999    AtomAutofillFillRequestReported = 604,
26000    AtomAutofillFillResponseReported = 605,
26001    AtomAutofillSaveEventReported = 606,
26002    AtomAutofillSessionCommitted = 607,
26003    AtomAutofillFieldClassificationEventReported = 659,
26004    AtomCarRecentsEventReported = 770,
26005    AtomCarCalmModeEventReported = 797,
26006    AtomCarWakeupFromSuspendReported = 852,
26007    AtomPluginInitialized = 655,
26008    AtomBluetoothHashedDeviceNameReported = 613,
26009    AtomBluetoothL2capCocClientConnection = 614,
26010    AtomBluetoothL2capCocServerConnection = 615,
26011    AtomBluetoothLeSessionConnected = 656,
26012    AtomRestrictedBluetoothDeviceNameReported = 666,
26013    AtomBluetoothProfileConnectionAttempted = 696,
26014    AtomBluetoothContentProfileErrorReported = 781,
26015    AtomBluetoothRfcommConnectionAttempted = 782,
26016    AtomRemoteDeviceInformationWithMetricId = 862,
26017    AtomLeAppScanStateChanged = 870,
26018    AtomLeRadioScanStopped = 871,
26019    AtomLeScanResultReceived = 872,
26020    AtomLeScanAbused = 873,
26021    AtomLeAdvStateChanged = 874,
26022    AtomLeAdvErrorReported = 875,
26023    AtomA2dpSessionReported = 904,
26024    AtomBluetoothCrossLayerEventReported = 916,
26025    AtomBroadcastAudioSessionReported = 927,
26026    AtomBroadcastAudioSyncReported = 928,
26027    AtomBluetoothRfcommConnectionReportedAtClose = 982,
26028    AtomBluetoothLeConnection = 988,
26029    AtomBroadcastSent = 922,
26030    AtomCameraFeatureCombinationQueryEvent = 900,
26031    AtomCertificateTransparencyLogListStateChanged = 934,
26032    AtomCertificateTransparencyLogListUpdateFailed = 972,
26033    AtomDailyKeepaliveInfoReported = 650,
26034    AtomNetworkRequestStateChanged = 779,
26035    AtomTetheringActiveSessionsReported = 925,
26036    AtomNetworkStatsRecorderFileOperated = 783,
26037    AtomCoreNetworkingTerribleErrorOccurred = 979,
26038    AtomApfSessionInfoReported = 777,
26039    AtomIpClientRaInfoReported = 778,
26040    AtomVpnConnectionStateChanged = 850,
26041    AtomVpnConnectionReported = 851,
26042    AtomCpuPolicy = 10199,
26043    AtomCredentialManagerApiCalled = 585,
26044    AtomCredentialManagerInitPhaseReported = 651,
26045    AtomCredentialManagerCandidatePhaseReported = 652,
26046    AtomCredentialManagerFinalPhaseReported = 653,
26047    AtomCredentialManagerTotalReported = 667,
26048    AtomCredentialManagerFinalnouidReported = 668,
26049    AtomCredentialManagerGetReported = 669,
26050    AtomCredentialManagerAuthClickReported = 670,
26051    AtomCredentialManagerApiv2Called = 671,
26052    AtomCronetEngineCreated = 703,
26053    AtomCronetTrafficReported = 704,
26054    AtomCronetEngineBuilderInitialized = 762,
26055    AtomCronetHttpFlagsInitialized = 763,
26056    AtomCronetInitialized = 764,
26057    AtomDesktopModeUiChanged = 818,
26058    AtomDesktopModeSessionTaskUpdate = 819,
26059    AtomDesktopModeTaskSizeUpdated = 935,
26060    AtomDeviceLockCheckInRequestReported = 726,
26061    AtomDeviceLockProvisioningCompleteReported = 727,
26062    AtomDeviceLockKioskAppRequestReported = 728,
26063    AtomDeviceLockCheckInRetryReported = 789,
26064    AtomDeviceLockProvisionFailureReported = 790,
26065    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
26066    AtomDevicePolicyManagementMode = 10216,
26067    AtomDevicePolicyState = 10217,
26068    AtomDisplayModeDirectorVoteChanged = 792,
26069    AtomExternalDisplayStateChanged = 806,
26070    AtomDndStateChanged = 657,
26071    AtomDreamSettingChanged = 705,
26072    AtomDreamSettingSnapshot = 10192,
26073    AtomExpressEventReported = 528,
26074    AtomExpressHistogramSampleReported = 593,
26075    AtomExpressUidEventReported = 644,
26076    AtomExpressUidHistogramSampleReported = 658,
26077    AtomFederatedComputeApiCalled = 712,
26078    AtomFederatedComputeTrainingEventReported = 771,
26079    AtomExampleIteratorNextLatencyReported = 838,
26080    AtomFullScreenIntentLaunched = 631,
26081    AtomBalAllowed = 632,
26082    AtomInTaskActivityStarted = 685,
26083    AtomDeviceOrientationChanged = 906,
26084    AtomCachedAppsHighWatermark = 10189,
26085    AtomStylusPredictionMetricsReported = 718,
26086    AtomUserRiskEventReported = 725,
26087    AtomMediaProjectionStateChanged = 729,
26088    AtomMediaProjectionTargetChanged = 730,
26089    AtomExcessiveBinderProxyCountReported = 853,
26090    AtomProxyBytesTransferByFgBg = 10200,
26091    AtomMobileBytesTransferByProcState = 10204,
26092    AtomBiometricFrrNotification = 817,
26093    AtomSensitiveContentMediaProjectionSession = 830,
26094    AtomSensitiveNotificationAppProtectionSession = 831,
26095    AtomSensitiveNotificationAppProtectionApplied = 832,
26096    AtomSensitiveNotificationRedaction = 833,
26097    AtomSensitiveContentAppProtection = 835,
26098    AtomAppRestrictionStateChanged = 866,
26099    AtomBatteryUsageStatsPerUid = 10209,
26100    AtomPostgcMemorySnapshot = 924,
26101    AtomPowerSaveTempAllowlistChanged = 926,
26102    AtomAppOpAccessTracked = 931,
26103    AtomContentOrFileUriEventReported = 933,
26104    AtomApplicationGrammaticalInflectionChanged = 584,
26105    AtomSystemGrammaticalInflectionChanged = 816,
26106    AtomBatteryHealth = 10220,
26107    AtomHdmiEarcStatusReported = 701,
26108    AtomHdmiSoundbarModeStatusReported = 724,
26109    AtomHealthConnectApiCalled = 616,
26110    AtomHealthConnectUsageStats = 617,
26111    AtomHealthConnectStorageStats = 618,
26112    AtomHealthConnectApiInvoked = 643,
26113    AtomExerciseRouteApiCalled = 654,
26114    AtomHealthConnectExportInvoked = 907,
26115    AtomHealthConnectImportInvoked = 918,
26116    AtomHealthConnectExportImportStatsReported = 919,
26117    AtomHealthConnectUiImpression = 623,
26118    AtomHealthConnectUiInteraction = 624,
26119    AtomHealthConnectAppOpenedReported = 625,
26120    AtomHotwordEgressSizeAtomReported = 761,
26121    AtomIkeSessionTerminated = 678,
26122    AtomIkeLivenessCheckSessionValidated = 760,
26123    AtomNegotiatedSecurityAssociation = 821,
26124    AtomKeyboardConfigured = 682,
26125    AtomKeyboardSystemsEventReported = 683,
26126    AtomInputdeviceUsageReported = 686,
26127    AtomInputEventLatencyReported = 932,
26128    AtomTouchpadUsage = 10191,
26129    AtomKernelOomKillOccurred = 754,
26130    AtomEmergencyStateChanged = 633,
26131    AtomChreSignificantMotionStateChanged = 868,
26132    AtomPopulationDensityProviderLoadingReported = 1002,
26133    AtomDensityBasedCoarseLocationsUsageReported = 1003,
26134    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
26135    AtomMediaCodecReclaimRequestCompleted = 600,
26136    AtomMediaCodecStarted = 641,
26137    AtomMediaCodecStopped = 642,
26138    AtomMediaCodecRendered = 684,
26139    AtomMediaEditingEndedReported = 798,
26140    AtomMteState = 10181,
26141    AtomMicroxrDeviceBootCompleteReported = 901,
26142    AtomNfcObserveModeStateChanged = 855,
26143    AtomNfcFieldChanged = 856,
26144    AtomNfcPollingLoopNotificationReported = 857,
26145    AtomNfcProprietaryCapabilitiesReported = 858,
26146    AtomOndevicepersonalizationApiCalled = 711,
26147    AtomComponentStateChangedReported = 863,
26148    AtomPdfLoadReported = 859,
26149    AtomPdfApiUsageReported = 860,
26150    AtomPdfSearchReported = 861,
26151    AtomPressureStallInformation = 10229,
26152    AtomPermissionRationaleDialogViewed = 645,
26153    AtomPermissionRationaleDialogActionReported = 646,
26154    AtomAppDataSharingUpdatesNotificationInteraction = 647,
26155    AtomAppDataSharingUpdatesFragmentViewed = 648,
26156    AtomAppDataSharingUpdatesFragmentActionReported = 649,
26157    AtomEnhancedConfirmationDialogResultReported = 827,
26158    AtomEnhancedConfirmationRestrictionCleared = 828,
26159    AtomPhotopickerSessionInfoReported = 886,
26160    AtomPhotopickerApiInfoReported = 887,
26161    AtomPhotopickerUiEventLogged = 888,
26162    AtomPhotopickerMediaItemStatusReported = 889,
26163    AtomPhotopickerPreviewInfoLogged = 890,
26164    AtomPhotopickerMenuInteractionLogged = 891,
26165    AtomPhotopickerBannerInteractionLogged = 892,
26166    AtomPhotopickerMediaLibraryInfoLogged = 893,
26167    AtomPhotopickerPageInfoLogged = 894,
26168    AtomPhotopickerMediaGridSyncInfoReported = 895,
26169    AtomPhotopickerAlbumSyncInfoReported = 896,
26170    AtomPhotopickerSearchInfoReported = 897,
26171    AtomSearchDataExtractionDetailsReported = 898,
26172    AtomEmbeddedPhotopickerInfoReported = 899,
26173    AtomAtom9999 = 9999,
26174    AtomAtom99999 = 99999,
26175    AtomScreenOffReported = 776,
26176    AtomScreenTimeoutOverrideReported = 836,
26177    AtomScreenInteractiveSessionReported = 837,
26178    AtomScreenDimReported = 867,
26179    AtomMediaProviderDatabaseRollbackReported = 784,
26180    AtomBackupSetupStatusReported = 785,
26181    AtomRangingSessionConfigured = 993,
26182    AtomRangingSessionStarted = 994,
26183    AtomRangingSessionClosed = 995,
26184    AtomRangingTechnologyStarted = 996,
26185    AtomRangingTechnologyStopped = 997,
26186    AtomRkpdPoolStats = 664,
26187    AtomRkpdClientOperation = 665,
26188    AtomSandboxApiCalled = 488,
26189    AtomSandboxActivityEventOccurred = 735,
26190    AtomSdkSandboxRestrictedAccessInSession = 796,
26191    AtomSandboxSdkStorage = 10159,
26192    AtomSelinuxAuditLog = 799,
26193    AtomSettingsSpaReported = 622,
26194    AtomTestExtensionAtomReported = 660,
26195    AtomTestRestrictedAtomReported = 672,
26196    AtomStatsSocketLossReported = 752,
26197    AtomLockscreenShortcutSelected = 611,
26198    AtomLockscreenShortcutTriggered = 612,
26199    AtomLauncherImpressionEventV2 = 716,
26200    AtomDisplaySwitchLatencyTracked = 753,
26201    AtomNotificationListenerService = 829,
26202    AtomNavHandleTouchPoints = 869,
26203    AtomCommunalHubWidgetEventReported = 908,
26204    AtomCommunalHubSnapshot = 10226,
26205    AtomEmergencyNumberDialed = 637,
26206    AtomCallStats = 10221,
26207    AtomCallAudioRouteStats = 10222,
26208    AtomTelecomApiStats = 10223,
26209    AtomTelecomErrorStats = 10224,
26210    AtomCellularRadioPowerStateChanged = 713,
26211    AtomEmergencyNumbersInfo = 10180,
26212    AtomDataNetworkValidation = 10207,
26213    AtomDataRatStateChanged = 854,
26214    AtomConnectedChannelChanged = 882,
26215    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
26216    AtomQualifiedRatListChanged = 634,
26217    AtomQnsImsCallDropStats = 635,
26218    AtomQnsFallbackRestrictionChanged = 636,
26219    AtomQnsRatPreferenceMismatchInfo = 10177,
26220    AtomQnsHandoverTimeMillis = 10178,
26221    AtomQnsHandoverPingpong = 10179,
26222    AtomSatelliteController = 10182,
26223    AtomSatelliteSession = 10183,
26224    AtomSatelliteIncomingDatagram = 10184,
26225    AtomSatelliteOutgoingDatagram = 10185,
26226    AtomSatelliteProvision = 10186,
26227    AtomSatelliteSosMessageRecommender = 10187,
26228    AtomCarrierRoamingSatelliteSession = 10211,
26229    AtomCarrierRoamingSatelliteControllerStats = 10212,
26230    AtomControllerStatsPerPackage = 10213,
26231    AtomSatelliteEntitlement = 10214,
26232    AtomSatelliteConfigUpdater = 10215,
26233    AtomSatelliteAccessController = 10219,
26234    AtomCellularIdentifierDisclosed = 800,
26235    AtomThreadnetworkTelemetryDataReported = 738,
26236    AtomThreadnetworkTopoEntryRepeated = 739,
26237    AtomThreadnetworkDeviceInfoReported = 740,
26238    AtomBootIntegrityInfoReported = 775,
26239    AtomTvLowPowerStandbyPolicy = 679,
26240    AtomExternalTvInputEvent = 717,
26241    AtomTestUprobestatsAtomReported = 915,
26242    AtomUwbActivityInfo = 10188,
26243    AtomMediatorUpdated = 721,
26244    AtomSysproxyBluetoothBytesTransfer = 10196,
26245    AtomSysproxyConnectionUpdated = 786,
26246    AtomWearCompanionConnectionState = 921,
26247    AtomMediaActionReported = 608,
26248    AtomMediaControlsLaunched = 609,
26249    AtomMediaSessionStateChanged = 677,
26250    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
26251    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
26252    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
26253    AtomWearModeStateChanged = 715,
26254    AtomRendererInitialized = 736,
26255    AtomSchemaVersionReceived = 737,
26256    AtomLayoutInspected = 741,
26257    AtomLayoutExpressionInspected = 742,
26258    AtomLayoutAnimationsInspected = 743,
26259    AtomMaterialComponentsInspected = 744,
26260    AtomTileRequested = 745,
26261    AtomStateResponseReceived = 746,
26262    AtomTileResponseReceived = 747,
26263    AtomInflationFinished = 748,
26264    AtomInflationFailed = 749,
26265    AtomIgnoredInflationFailuresReported = 750,
26266    AtomDrawableRendered = 751,
26267    AtomWearTimeSyncRequested = 911,
26268    AtomWearTimeUpdateStarted = 912,
26269    AtomWearTimeSyncAttemptCompleted = 913,
26270    AtomWearTimeChanged = 914,
26271    AtomWearAdaptiveSuspendStatsReported = 619,
26272    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
26273    AtomWearPowerAnomalyServiceEventStatsReported = 621,
26274    AtomWsWearTimeSession = 610,
26275    AtomWsIncomingCallActionReported = 626,
26276    AtomWsCallDisconnectionReported = 627,
26277    AtomWsCallDurationReported = 628,
26278    AtomWsCallUserExperienceLatencyReported = 629,
26279    AtomWsCallInteractionReported = 630,
26280    AtomWsOnBodyStateChanged = 787,
26281    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
26282    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
26283    AtomWsComplicationsImpactedNotificationEventReported = 804,
26284    AtomWsRemoteEventUsageReported = 920,
26285    AtomWsBugreportRequested = 936,
26286    AtomWsBugreportTriggered = 937,
26287    AtomWsBugreportFinished = 938,
26288    AtomWsBugreportResultReceived = 939,
26289    AtomWsStandaloneModeSnapshot = 10197,
26290    AtomWsFavoriteWatchFaceSnapshot = 10206,
26291    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
26292    AtomWsWatchFaceCustomizationSnapshot = 10227,
26293    AtomWearPowerMenuOpened = 731,
26294    AtomWearAssistantOpened = 755,
26295    AtomFirstOverlayStateChanged = 917,
26296    AtomWifiAwareNdpReported = 638,
26297    AtomWifiAwareAttachReported = 639,
26298    AtomWifiSelfRecoveryTriggered = 661,
26299    AtomSoftApStarted = 680,
26300    AtomSoftApStopped = 681,
26301    AtomWifiLockReleased = 687,
26302    AtomWifiLockDeactivated = 688,
26303    AtomWifiConfigSaved = 689,
26304    AtomWifiAwareResourceUsingChanged = 690,
26305    AtomWifiAwareHalApiCalled = 691,
26306    AtomWifiLocalOnlyRequestReceived = 692,
26307    AtomWifiLocalOnlyRequestScanTriggered = 693,
26308    AtomWifiThreadTaskExecuted = 694,
26309    AtomWifiStateChanged = 700,
26310    AtomPnoScanStarted = 719,
26311    AtomPnoScanStopped = 720,
26312    AtomWifiIsUnusableReported = 722,
26313    AtomWifiApCapabilitiesReported = 723,
26314    AtomSoftApStateChanged = 805,
26315    AtomScorerPredictionResultReported = 884,
26316    AtomWifiAwareCapabilities = 10190,
26317    AtomWifiModuleInfo = 10193,
26318    AtomWifiSettingInfo = 10194,
26319    AtomWifiComplexSettingInfo = 10195,
26320    AtomWifiConfiguredNetworkInfo = 10198,
26321}
26322impl AtomId {
26323    /// String value of the enum field names used in the ProtoBuf definition.
26324    ///
26325    /// The values are not transformed in any way and thus are considered stable
26326    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26327    pub fn as_str_name(&self) -> &'static str {
26328        match self {
26329            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
26330            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
26331            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
26332            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
26333            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
26334            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
26335            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
26336            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
26337            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
26338            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
26339            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
26340            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
26341            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
26342            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
26343            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
26344            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
26345            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
26346            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
26347            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
26348            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
26349            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
26350            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
26351            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
26352            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
26353            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
26354            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
26355            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
26356            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
26357            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
26358            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
26359            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
26360            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
26361            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
26362            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
26363            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
26364            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
26365            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
26366            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
26367            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
26368            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
26369            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
26370            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
26371            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
26372            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
26373            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
26374            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
26375            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
26376            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
26377            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
26378            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
26379            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
26380            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
26381            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
26382            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
26383            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
26384            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
26385            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
26386            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
26387            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
26388            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
26389            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
26390            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
26391            AtomId::AtomAppDied => "ATOM_APP_DIED",
26392            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
26393            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
26394            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
26395            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
26396            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
26397            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
26398            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
26399            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
26400            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
26401            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
26402            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
26403            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
26404            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
26405            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
26406            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
26407            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
26408            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
26409            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
26410            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
26411            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
26412            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
26413            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
26414            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
26415            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
26416            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
26417            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
26418            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
26419            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
26420            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
26421            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
26422            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
26423            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
26424            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
26425            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
26426            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
26427            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
26428            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
26429            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
26430            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
26431            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
26432            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
26433            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
26434            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
26435            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
26436            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
26437            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
26438            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
26439            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
26440            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
26441            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
26442            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
26443            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
26444            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
26445            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
26446            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
26447            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
26448            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
26449            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
26450            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
26451            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
26452            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
26453            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
26454            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
26455            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
26456            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
26457            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
26458            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
26459            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
26460            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
26461            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
26462            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
26463            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
26464            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
26465            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
26466            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
26467            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
26468            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
26469            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
26470            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
26471            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
26472            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
26473            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
26474            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
26475            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
26476            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
26477            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
26478            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
26479            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
26480            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
26481            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
26482            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
26483            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
26484            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
26485            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
26486            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
26487            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
26488            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
26489            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
26490            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
26491            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
26492            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
26493            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
26494            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
26495            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
26496            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
26497            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
26498            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
26499            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
26500            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
26501            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
26502            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
26503            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
26504            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
26505            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
26506            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
26507            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
26508            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
26509            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
26510            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
26511            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
26512            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
26513            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
26514            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
26515            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
26516            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
26517            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
26518            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
26519            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
26520            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
26521            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
26522            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
26523            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
26524            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
26525            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
26526            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
26527            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
26528            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
26529            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
26530            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
26531            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
26532            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
26533            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
26534            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
26535            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
26536            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
26537            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
26538            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
26539            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
26540            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
26541            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
26542            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
26543            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
26544            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
26545            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
26546            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
26547            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
26548            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
26549            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
26550            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
26551            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
26552            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
26553            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
26554            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
26555            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
26556            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
26557            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
26558            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
26559            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
26560            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
26561            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
26562            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
26563            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
26564            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
26565            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
26566            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
26567            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
26568            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
26569            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
26570            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
26571            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
26572            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
26573            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
26574            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
26575            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
26576            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
26577            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
26578            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
26579            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
26580            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
26581            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
26582            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
26583            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
26584            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
26585            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
26586            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
26587            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
26588            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
26589            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
26590            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
26591            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
26592            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
26593            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
26594            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
26595            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
26596            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
26597            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
26598            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
26599            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
26600            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
26601            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
26602            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
26603            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
26604            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
26605            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
26606            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
26607            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
26608            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
26609            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
26610            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
26611            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
26612            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
26613            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
26614            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
26615            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
26616            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
26617            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
26618            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
26619            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
26620            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
26621            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
26622            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
26623            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
26624            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
26625            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
26626            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
26627            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
26628            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
26629            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
26630            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
26631            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
26632            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
26633            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
26634            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
26635            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
26636            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
26637            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
26638            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
26639            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
26640            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
26641            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
26642            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
26643            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
26644            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
26645            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
26646            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
26647            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
26648            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
26649            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
26650            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
26651            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
26652            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
26653            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
26654            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
26655            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
26656            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
26657            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
26658            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
26659            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
26660            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
26661            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
26662            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
26663            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
26664            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
26665            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
26666            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
26667            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
26668            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
26669            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
26670            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
26671            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
26672            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
26673            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
26674            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
26675            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
26676            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
26677            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
26678            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
26679            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
26680            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
26681            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
26682            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
26683            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
26684            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
26685            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
26686            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
26687            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
26688            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
26689            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
26690            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
26691            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
26692            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
26693            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
26694            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
26695            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
26696            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
26697            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
26698            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
26699            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
26700            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
26701            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
26702            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
26703            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
26704            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
26705            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
26706            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
26707            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
26708            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
26709            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
26710            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
26711            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
26712            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
26713            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
26714            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
26715            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
26716            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
26717            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
26718            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
26719            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
26720            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
26721            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
26722            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
26723            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
26724            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
26725            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
26726            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
26727            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
26728            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
26729            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
26730            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
26731            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
26732            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
26733            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
26734            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
26735            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
26736            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
26737            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
26738            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
26739            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
26740            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
26741            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
26742            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
26743            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
26744            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
26745            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
26746            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
26747            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
26748            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
26749            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
26750            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
26751            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
26752            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
26753            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
26754            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
26755            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
26756            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
26757            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
26758            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
26759            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
26760            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
26761            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
26762            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
26763            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
26764            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
26765            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
26766            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
26767            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
26768            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
26769            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
26770            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
26771            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
26772            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
26773            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
26774            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
26775            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
26776            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
26777            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
26778            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
26779            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
26780            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
26781            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
26782            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
26783            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
26784            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
26785            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
26786            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
26787            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
26788            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
26789            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
26790            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
26791            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
26792            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
26793            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
26794            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
26795            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
26796            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
26797            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
26798            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
26799            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
26800            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
26801            AtomId::AtomVmExited => "ATOM_VM_EXITED",
26802            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
26803            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
26804            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
26805            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
26806            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
26807            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
26808            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
26809            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
26810            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
26811            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
26812            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
26813            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
26814            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
26815            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
26816            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
26817            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
26818            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
26819            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
26820            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
26821            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
26822            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
26823            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
26824            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
26825            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
26826            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
26827            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
26828            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
26829            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
26830            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
26831            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
26832            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
26833            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
26834            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
26835            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
26836            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
26837            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
26838            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
26839            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
26840            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
26841            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
26842            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
26843            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
26844            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
26845            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
26846            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
26847            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
26848            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
26849            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
26850            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
26851            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
26852            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
26853            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
26854            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
26855            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
26856            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
26857            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
26858            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
26859            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
26860            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
26861            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
26862            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
26863            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
26864            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
26865            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
26866            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
26867            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
26868            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
26869            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
26870            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
26871            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
26872            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
26873            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
26874            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
26875            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
26876            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
26877            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
26878            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
26879            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
26880            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
26881            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
26882            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
26883            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
26884            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
26885            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
26886            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
26887            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
26888            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
26889            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
26890            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
26891            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
26892            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
26893            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
26894            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
26895            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
26896            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
26897            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
26898            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
26899            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
26900            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
26901            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
26902            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
26903            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
26904            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
26905            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
26906            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
26907            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
26908            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
26909            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
26910            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
26911            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
26912            AtomId::AtomAppSize => "ATOM_APP_SIZE",
26913            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
26914            AtomId::AtomProcStats => "ATOM_PROC_STATS",
26915            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
26916            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
26917            AtomId::AtomDiskIo => "ATOM_DISK_IO",
26918            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
26919            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
26920            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
26921            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
26922            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
26923            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
26924            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
26925            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
26926            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
26927            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
26928            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
26929            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
26930            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
26931            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
26932            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
26933            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
26934            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
26935            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
26936            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
26937            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
26938            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
26939            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
26940            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
26941            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
26942            AtomId::AtomAppOps => "ATOM_APP_OPS",
26943            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
26944            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
26945            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
26946            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
26947            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
26948            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
26949            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
26950            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
26951            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
26952            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
26953            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
26954            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
26955            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
26956            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
26957            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
26958            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
26959            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
26960            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
26961            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
26962            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
26963            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
26964            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
26965            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
26966            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
26967            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
26968            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
26969            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
26970            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
26971            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
26972            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
26973            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
26974            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
26975            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
26976            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
26977            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
26978            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
26979            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
26980            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
26981            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
26982            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
26983            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
26984            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
26985            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
26986            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
26987            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
26988            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
26989            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
26990            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
26991            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
26992            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
26993            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
26994            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
26995            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
26996            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
26997            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
26998            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
26999            AtomId::AtomVmstat => "ATOM_VMSTAT",
27000            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
27001            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
27002            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
27003            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
27004            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
27005            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
27006            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
27007            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
27008            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
27009            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
27010            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
27011            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
27012            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
27013            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
27014            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
27015            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
27016            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
27017            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
27018            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
27019            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
27020            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
27021            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
27022            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
27023            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
27024            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
27025            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
27026            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
27027            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
27028            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
27029            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
27030            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
27031            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
27032            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
27033            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
27034            AtomId::AtomUserInfo => "ATOM_USER_INFO",
27035            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
27036            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
27037            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
27038            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
27039            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
27040            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
27041            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
27042            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
27043            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
27044            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
27045            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
27046            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
27047            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
27048            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
27049            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
27050            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
27051            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
27052            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
27053            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
27054            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
27055            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
27056            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
27057            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
27058            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
27059            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
27060            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
27061            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
27062            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
27063            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
27064            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
27065            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
27066            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
27067            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
27068            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
27069            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
27070            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
27071            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
27072            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
27073            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
27074            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
27075            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
27076            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
27077            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
27078            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
27079            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
27080            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
27081            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
27082            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
27083            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
27084            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
27085            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
27086            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
27087            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
27088            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
27089            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
27090            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
27091            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
27092            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
27093            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
27094            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
27095            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
27096            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
27097            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
27098            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
27099            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
27100            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
27101            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
27102            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
27103            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
27104            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
27105            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
27106            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
27107            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
27108            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
27109            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
27110            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
27111            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
27112            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
27113            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
27114            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
27115            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
27116            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
27117            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
27118            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
27119            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
27120            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
27121            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
27122            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
27123            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
27124            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
27125            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
27126            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
27127            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
27128            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
27129            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
27130            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
27131            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
27132            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
27133            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
27134            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
27135            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
27136            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
27137            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
27138            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
27139            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
27140            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
27141            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
27142            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
27143            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
27144            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
27145            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
27146            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
27147            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
27148            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
27149            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
27150            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
27151            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
27152            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
27153            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
27154            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
27155            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
27156            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
27157            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
27158            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
27159            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
27160            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
27161            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
27162            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
27163            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
27164            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
27165            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
27166            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
27167            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
27168            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
27169            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
27170            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
27171            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
27172            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
27173            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
27174            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
27175            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
27176            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
27177            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
27178            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
27179            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
27180            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
27181            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
27182            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
27183            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
27184            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
27185            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
27186            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
27187            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
27188            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
27189            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
27190            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
27191            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
27192            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
27193            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
27194            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
27195            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
27196            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
27197            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
27198            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
27199            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
27200            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
27201            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
27202            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
27203            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
27204            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
27205            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
27206            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
27207            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
27208            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
27209            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
27210            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
27211            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
27212            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
27213            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
27214            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
27215            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
27216            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
27217            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
27218            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
27219            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
27220            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
27221            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
27222            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
27223            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
27224            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
27225            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
27226            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
27227            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
27228            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
27229            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
27230            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
27231            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
27232            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
27233            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
27234            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
27235            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
27236            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
27237            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
27238            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
27239            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
27240            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
27241            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
27242            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
27243            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
27244            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
27245            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
27246            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
27247            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
27248            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
27249            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
27250            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
27251            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
27252            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
27253            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
27254            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
27255            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
27256            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
27257            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
27258            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
27259            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
27260            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
27261            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
27262            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
27263            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
27264            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
27265            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
27266            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
27267            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
27268            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
27269            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
27270            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
27271            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
27272            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
27273            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
27274            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
27275            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
27276            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
27277            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
27278            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
27279            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
27280            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
27281            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
27282            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
27283            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
27284            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
27285            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
27286            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
27287            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
27288            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
27289            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
27290            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
27291            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
27292            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
27293            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
27294            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
27295            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
27296            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
27297            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
27298            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
27299            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
27300            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
27301            AtomId::AtomMteState => "ATOM_MTE_STATE",
27302            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
27303            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
27304            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
27305            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
27306            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
27307            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
27308            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
27309            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
27310            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
27311            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
27312            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
27313            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
27314            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
27315            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
27316            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
27317            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
27318            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
27319            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
27320            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
27321            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
27322            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
27323            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
27324            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
27325            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
27326            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
27327            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
27328            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
27329            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
27330            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
27331            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
27332            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
27333            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
27334            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
27335            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
27336            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
27337            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
27338            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
27339            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
27340            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
27341            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
27342            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
27343            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
27344            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
27345            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
27346            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
27347            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
27348            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
27349            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
27350            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
27351            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
27352            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
27353            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
27354            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
27355            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
27356            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
27357            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
27358            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
27359            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
27360            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
27361            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
27362            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
27363            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
27364            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
27365            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
27366            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
27367            AtomId::AtomCallStats => "ATOM_CALL_STATS",
27368            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
27369            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
27370            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
27371            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
27372            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
27373            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
27374            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
27375            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
27376            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
27377            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
27378            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
27379            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
27380            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
27381            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
27382            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
27383            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
27384            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
27385            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
27386            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
27387            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
27388            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
27389            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
27390            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
27391            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
27392            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
27393            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
27394            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
27395            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
27396            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
27397            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
27398            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
27399            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
27400            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
27401            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
27402            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
27403            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
27404            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
27405            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
27406            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
27407            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
27408            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
27409            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
27410            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
27411            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
27412            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
27413            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
27414            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
27415            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
27416            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
27417            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
27418            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
27419            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
27420            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
27421            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
27422            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
27423            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
27424            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
27425            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
27426            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
27427            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
27428            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
27429            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
27430            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
27431            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
27432            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
27433            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
27434            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
27435            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
27436            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
27437            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
27438            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
27439            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
27440            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
27441            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
27442            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
27443            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
27444            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
27445            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
27446            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
27447            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
27448            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
27449            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
27450            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
27451            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
27452            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
27453            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
27454            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
27455            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
27456            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
27457            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
27458            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
27459            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
27460            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
27461            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
27462            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
27463            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
27464            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
27465            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
27466            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
27467            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
27468            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
27469            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
27470            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
27471            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
27472            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
27473            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
27474            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
27475            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
27476            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
27477            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
27478            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
27479            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
27480            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
27481            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
27482        }
27483    }
27484}
27485// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
27486
27487// Begin of protos/perfetto/common/sys_stats_counters.proto
27488
27489// When editing entries here remember also to update "sys_stats_counters.h" with
27490// the corresponding string definitions for the actual /proc files parser.
27491
27492/// Counter definitions for Linux's /proc/meminfo.
27493#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27494#[repr(i32)]
27495pub enum MeminfoCounters {
27496    MeminfoUnspecified = 0,
27497    MeminfoMemTotal = 1,
27498    MeminfoMemFree = 2,
27499    MeminfoMemAvailable = 3,
27500    MeminfoBuffers = 4,
27501    MeminfoCached = 5,
27502    MeminfoSwapCached = 6,
27503    MeminfoActive = 7,
27504    MeminfoInactive = 8,
27505    MeminfoActiveAnon = 9,
27506    MeminfoInactiveAnon = 10,
27507    MeminfoActiveFile = 11,
27508    MeminfoInactiveFile = 12,
27509    MeminfoUnevictable = 13,
27510    MeminfoMlocked = 14,
27511    MeminfoSwapTotal = 15,
27512    MeminfoSwapFree = 16,
27513    MeminfoDirty = 17,
27514    MeminfoWriteback = 18,
27515    MeminfoAnonPages = 19,
27516    MeminfoMapped = 20,
27517    MeminfoShmem = 21,
27518    MeminfoSlab = 22,
27519    MeminfoSlabReclaimable = 23,
27520    MeminfoSlabUnreclaimable = 24,
27521    MeminfoKernelStack = 25,
27522    MeminfoPageTables = 26,
27523    MeminfoCommitLimit = 27,
27524    MeminfoCommitedAs = 28,
27525    MeminfoVmallocTotal = 29,
27526    MeminfoVmallocUsed = 30,
27527    MeminfoVmallocChunk = 31,
27528    MeminfoCmaTotal = 32,
27529    MeminfoCmaFree = 33,
27530    MeminfoGpu = 34,
27531    MeminfoZram = 35,
27532    MeminfoMisc = 36,
27533    MeminfoIonHeap = 37,
27534    MeminfoIonHeapPool = 38,
27535}
27536impl MeminfoCounters {
27537    /// String value of the enum field names used in the ProtoBuf definition.
27538    ///
27539    /// The values are not transformed in any way and thus are considered stable
27540    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27541    pub fn as_str_name(&self) -> &'static str {
27542        match self {
27543            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
27544            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
27545            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
27546            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
27547            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
27548            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
27549            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
27550            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
27551            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
27552            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
27553            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
27554            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
27555            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
27556            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
27557            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
27558            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
27559            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
27560            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
27561            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
27562            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
27563            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
27564            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
27565            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
27566            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
27567            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
27568            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
27569            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
27570            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
27571            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
27572            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
27573            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
27574            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
27575            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
27576            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
27577            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
27578            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
27579            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
27580            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
27581            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
27582        }
27583    }
27584}
27585/// Counter definitions for Linux's /proc/vmstat.
27586#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27587#[repr(i32)]
27588pub enum VmstatCounters {
27589    VmstatUnspecified = 0,
27590    VmstatNrFreePages = 1,
27591    VmstatNrAllocBatch = 2,
27592    VmstatNrInactiveAnon = 3,
27593    VmstatNrActiveAnon = 4,
27594    VmstatNrInactiveFile = 5,
27595    VmstatNrActiveFile = 6,
27596    VmstatNrUnevictable = 7,
27597    VmstatNrMlock = 8,
27598    VmstatNrAnonPages = 9,
27599    VmstatNrMapped = 10,
27600    VmstatNrFilePages = 11,
27601    VmstatNrDirty = 12,
27602    VmstatNrWriteback = 13,
27603    VmstatNrSlabReclaimable = 14,
27604    VmstatNrSlabUnreclaimable = 15,
27605    VmstatNrPageTablePages = 16,
27606    VmstatNrKernelStack = 17,
27607    VmstatNrOverhead = 18,
27608    VmstatNrUnstable = 19,
27609    VmstatNrBounce = 20,
27610    VmstatNrVmscanWrite = 21,
27611    VmstatNrVmscanImmediateReclaim = 22,
27612    VmstatNrWritebackTemp = 23,
27613    VmstatNrIsolatedAnon = 24,
27614    VmstatNrIsolatedFile = 25,
27615    VmstatNrShmem = 26,
27616    VmstatNrDirtied = 27,
27617    VmstatNrWritten = 28,
27618    VmstatNrPagesScanned = 29,
27619    VmstatWorkingsetRefault = 30,
27620    VmstatWorkingsetActivate = 31,
27621    VmstatWorkingsetNodereclaim = 32,
27622    VmstatNrAnonTransparentHugepages = 33,
27623    VmstatNrFreeCma = 34,
27624    VmstatNrSwapcache = 35,
27625    VmstatNrDirtyThreshold = 36,
27626    VmstatNrDirtyBackgroundThreshold = 37,
27627    VmstatPgpgin = 38,
27628    VmstatPgpgout = 39,
27629    VmstatPgpgoutclean = 40,
27630    VmstatPswpin = 41,
27631    VmstatPswpout = 42,
27632    VmstatPgallocDma = 43,
27633    VmstatPgallocNormal = 44,
27634    VmstatPgallocMovable = 45,
27635    VmstatPgfree = 46,
27636    VmstatPgactivate = 47,
27637    VmstatPgdeactivate = 48,
27638    VmstatPgfault = 49,
27639    VmstatPgmajfault = 50,
27640    VmstatPgrefillDma = 51,
27641    VmstatPgrefillNormal = 52,
27642    VmstatPgrefillMovable = 53,
27643    VmstatPgstealKswapdDma = 54,
27644    VmstatPgstealKswapdNormal = 55,
27645    VmstatPgstealKswapdMovable = 56,
27646    VmstatPgstealDirectDma = 57,
27647    VmstatPgstealDirectNormal = 58,
27648    VmstatPgstealDirectMovable = 59,
27649    VmstatPgscanKswapdDma = 60,
27650    VmstatPgscanKswapdNormal = 61,
27651    VmstatPgscanKswapdMovable = 62,
27652    VmstatPgscanDirectDma = 63,
27653    VmstatPgscanDirectNormal = 64,
27654    VmstatPgscanDirectMovable = 65,
27655    VmstatPgscanDirectThrottle = 66,
27656    VmstatPginodesteal = 67,
27657    VmstatSlabsScanned = 68,
27658    VmstatKswapdInodesteal = 69,
27659    VmstatKswapdLowWmarkHitQuickly = 70,
27660    VmstatKswapdHighWmarkHitQuickly = 71,
27661    VmstatPageoutrun = 72,
27662    VmstatAllocstall = 73,
27663    VmstatPgrotated = 74,
27664    VmstatDropPagecache = 75,
27665    VmstatDropSlab = 76,
27666    VmstatPgmigrateSuccess = 77,
27667    VmstatPgmigrateFail = 78,
27668    VmstatCompactMigrateScanned = 79,
27669    VmstatCompactFreeScanned = 80,
27670    VmstatCompactIsolated = 81,
27671    VmstatCompactStall = 82,
27672    VmstatCompactFail = 83,
27673    VmstatCompactSuccess = 84,
27674    VmstatCompactDaemonWake = 85,
27675    VmstatUnevictablePgsCulled = 86,
27676    VmstatUnevictablePgsScanned = 87,
27677    VmstatUnevictablePgsRescued = 88,
27678    VmstatUnevictablePgsMlocked = 89,
27679    VmstatUnevictablePgsMunlocked = 90,
27680    VmstatUnevictablePgsCleared = 91,
27681    VmstatUnevictablePgsStranded = 92,
27682    VmstatNrZspages = 93,
27683    VmstatNrIonHeap = 94,
27684    VmstatNrGpuHeap = 95,
27685    VmstatAllocstallDma = 96,
27686    VmstatAllocstallMovable = 97,
27687    VmstatAllocstallNormal = 98,
27688    VmstatCompactDaemonFreeScanned = 99,
27689    VmstatCompactDaemonMigrateScanned = 100,
27690    VmstatNrFastrpc = 101,
27691    VmstatNrIndirectlyReclaimable = 102,
27692    VmstatNrIonHeapPool = 103,
27693    VmstatNrKernelMiscReclaimable = 104,
27694    VmstatNrShadowCallStackBytes = 105,
27695    VmstatNrShmemHugepages = 106,
27696    VmstatNrShmemPmdmapped = 107,
27697    VmstatNrUnreclaimablePages = 108,
27698    VmstatNrZoneActiveAnon = 109,
27699    VmstatNrZoneActiveFile = 110,
27700    VmstatNrZoneInactiveAnon = 111,
27701    VmstatNrZoneInactiveFile = 112,
27702    VmstatNrZoneUnevictable = 113,
27703    VmstatNrZoneWritePending = 114,
27704    VmstatOomKill = 115,
27705    VmstatPglazyfree = 116,
27706    VmstatPglazyfreed = 117,
27707    VmstatPgrefill = 118,
27708    VmstatPgscanDirect = 119,
27709    VmstatPgscanKswapd = 120,
27710    VmstatPgskipDma = 121,
27711    VmstatPgskipMovable = 122,
27712    VmstatPgskipNormal = 123,
27713    VmstatPgstealDirect = 124,
27714    VmstatPgstealKswapd = 125,
27715    VmstatSwapRa = 126,
27716    VmstatSwapRaHit = 127,
27717    VmstatWorkingsetRestore = 128,
27718    VmstatAllocstallDevice = 129,
27719    VmstatAllocstallDma32 = 130,
27720    VmstatBalloonDeflate = 131,
27721    VmstatBalloonInflate = 132,
27722    VmstatBalloonMigrate = 133,
27723    VmstatCmaAllocFail = 134,
27724    VmstatCmaAllocSuccess = 135,
27725    VmstatNrFileHugepages = 136,
27726    VmstatNrFilePmdmapped = 137,
27727    VmstatNrFollPinAcquired = 138,
27728    VmstatNrFollPinReleased = 139,
27729    VmstatNrSecPageTablePages = 140,
27730    VmstatNrShadowCallStack = 141,
27731    VmstatNrSwapcached = 142,
27732    VmstatNrThrottledWritten = 143,
27733    VmstatPgallocDevice = 144,
27734    VmstatPgallocDma32 = 145,
27735    VmstatPgdemoteDirect = 146,
27736    VmstatPgdemoteKswapd = 147,
27737    VmstatPgreuse = 148,
27738    VmstatPgscanAnon = 149,
27739    VmstatPgscanFile = 150,
27740    VmstatPgskipDevice = 151,
27741    VmstatPgskipDma32 = 152,
27742    VmstatPgstealAnon = 153,
27743    VmstatPgstealFile = 154,
27744    VmstatThpCollapseAlloc = 155,
27745    VmstatThpCollapseAllocFailed = 156,
27746    VmstatThpDeferredSplitPage = 157,
27747    VmstatThpFaultAlloc = 158,
27748    VmstatThpFaultFallback = 159,
27749    VmstatThpFaultFallbackCharge = 160,
27750    VmstatThpFileAlloc = 161,
27751    VmstatThpFileFallback = 162,
27752    VmstatThpFileFallbackCharge = 163,
27753    VmstatThpFileMapped = 164,
27754    VmstatThpMigrationFail = 165,
27755    VmstatThpMigrationSplit = 166,
27756    VmstatThpMigrationSuccess = 167,
27757    VmstatThpScanExceedNonePte = 168,
27758    VmstatThpScanExceedSharePte = 169,
27759    VmstatThpScanExceedSwapPte = 170,
27760    VmstatThpSplitPage = 171,
27761    VmstatThpSplitPageFailed = 172,
27762    VmstatThpSplitPmd = 173,
27763    VmstatThpSwpout = 174,
27764    VmstatThpSwpoutFallback = 175,
27765    VmstatThpZeroPageAlloc = 176,
27766    VmstatThpZeroPageAllocFailed = 177,
27767    VmstatVmaLockAbort = 178,
27768    VmstatVmaLockMiss = 179,
27769    VmstatVmaLockRetry = 180,
27770    VmstatVmaLockSuccess = 181,
27771    VmstatWorkingsetActivateAnon = 182,
27772    VmstatWorkingsetActivateFile = 183,
27773    VmstatWorkingsetNodes = 184,
27774    VmstatWorkingsetRefaultAnon = 185,
27775    VmstatWorkingsetRefaultFile = 186,
27776    VmstatWorkingsetRestoreAnon = 187,
27777    VmstatWorkingsetRestoreFile = 188,
27778}
27779impl VmstatCounters {
27780    /// String value of the enum field names used in the ProtoBuf definition.
27781    ///
27782    /// The values are not transformed in any way and thus are considered stable
27783    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27784    pub fn as_str_name(&self) -> &'static str {
27785        match self {
27786            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
27787            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
27788            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
27789            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
27790            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
27791            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
27792            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
27793            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
27794            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
27795            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
27796            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
27797            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
27798            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
27799            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
27800            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
27801            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
27802            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
27803            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
27804            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
27805            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
27806            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
27807            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
27808            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
27809            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
27810            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
27811            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
27812            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
27813            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
27814            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
27815            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
27816            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
27817            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
27818            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
27819            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
27820            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
27821            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
27822            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
27823            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
27824            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
27825            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
27826            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
27827            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
27828            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
27829            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
27830            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
27831            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
27832            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
27833            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
27834            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
27835            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
27836            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
27837            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
27838            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
27839            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
27840            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
27841            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
27842            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
27843            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
27844            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
27845            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
27846            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
27847            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
27848            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
27849            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
27850            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
27851            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
27852            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
27853            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
27854            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
27855            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
27856            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
27857            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
27858            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
27859            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
27860            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
27861            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
27862            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
27863            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
27864            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
27865            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
27866            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
27867            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
27868            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
27869            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
27870            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
27871            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
27872            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
27873            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
27874            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
27875            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
27876            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
27877            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
27878            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
27879            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
27880            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
27881            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
27882            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
27883            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
27884            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
27885            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
27886            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
27887            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
27888            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
27889            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
27890            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
27891            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
27892            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
27893            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
27894            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
27895            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
27896            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
27897            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
27898            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
27899            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
27900            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
27901            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
27902            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
27903            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
27904            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
27905            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
27906            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
27907            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
27908            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
27909            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
27910            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
27911            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
27912            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
27913            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
27914            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
27915            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
27916            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
27917            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
27918            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
27919            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
27920            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
27921            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
27922            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
27923            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
27924            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
27925            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
27926            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
27927            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
27928            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
27929            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
27930            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
27931            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
27932            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
27933            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
27934            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
27935            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
27936            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
27937            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
27938            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
27939            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
27940            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
27941            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
27942            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
27943            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
27944            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
27945            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
27946            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
27947            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
27948            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
27949            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
27950            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
27951            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
27952            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
27953            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
27954            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
27955            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
27956            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
27957            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
27958            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
27959            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
27960            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
27961            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
27962            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
27963            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
27964            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
27965            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
27966            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
27967            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
27968            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
27969            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
27970            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
27971            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
27972            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
27973            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
27974            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
27975        }
27976    }
27977}
27978// End of protos/perfetto/trace/android/app_wakelock_data.proto
27979
27980// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
27981
27982/// Describes the packet type and direction. CMD and EVT are unidirectional, so
27983/// no need to differentiate the direction.
27984#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27985#[repr(i32)]
27986pub enum BluetoothTracePacketType {
27987    HciCmd = 1,
27988    HciEvt = 2,
27989    HciAclRx = 3,
27990    HciAclTx = 4,
27991    HciScoRx = 5,
27992    HciScoTx = 6,
27993    HciIsoRx = 7,
27994    HciIsoTx = 8,
27995}
27996impl BluetoothTracePacketType {
27997    /// String value of the enum field names used in the ProtoBuf definition.
27998    ///
27999    /// The values are not transformed in any way and thus are considered stable
28000    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28001    pub fn as_str_name(&self) -> &'static str {
28002        match self {
28003            BluetoothTracePacketType::HciCmd => "HCI_CMD",
28004            BluetoothTracePacketType::HciEvt => "HCI_EVT",
28005            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
28006            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
28007            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
28008            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
28009            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
28010            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
28011        }
28012    }
28013}
28014// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
28015
28016// Begin of protos/perfetto/trace/android/network_trace.proto
28017
28018#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28019#[repr(i32)]
28020pub enum TrafficDirection {
28021    DirUnspecified = 0,
28022    DirIngress = 1,
28023    DirEgress = 2,
28024}
28025impl TrafficDirection {
28026    /// String value of the enum field names used in the ProtoBuf definition.
28027    ///
28028    /// The values are not transformed in any way and thus are considered stable
28029    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28030    pub fn as_str_name(&self) -> &'static str {
28031        match self {
28032            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
28033            TrafficDirection::DirIngress => "DIR_INGRESS",
28034            TrafficDirection::DirEgress => "DIR_EGRESS",
28035        }
28036    }
28037}
28038#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28039#[repr(i32)]
28040pub enum TrustedOverlay {
28041    Unset = 0,
28042    Disabled = 1,
28043    Enabled = 2,
28044}
28045impl TrustedOverlay {
28046    /// String value of the enum field names used in the ProtoBuf definition.
28047    ///
28048    /// The values are not transformed in any way and thus are considered stable
28049    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28050    pub fn as_str_name(&self) -> &'static str {
28051        match self {
28052            TrustedOverlay::Unset => "UNSET",
28053            TrustedOverlay::Disabled => "DISABLED",
28054            TrustedOverlay::Enabled => "ENABLED",
28055        }
28056    }
28057}
28058/// Must match definition in the IComposerClient HAL
28059#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28060#[repr(i32)]
28061pub enum HwcCompositionType {
28062    /// Invalid composition type
28063    HwcTypeUnspecified = 0,
28064    /// Layer was composited by the client into the client target buffer
28065    HwcTypeClient = 1,
28066    /// Layer was composited by the device through hardware overlays
28067    HwcTypeDevice = 2,
28068    /// Layer was composited by the device using a color
28069    HwcTypeSolidColor = 3,
28070    /// Similar to DEVICE, but the layer position may have been asynchronously set
28071    /// through setCursorPosition
28072    HwcTypeCursor = 4,
28073    /// Layer was composited by the device via a sideband stream
28074    HwcTypeSideband = 5,
28075    /// Layer was composited by hardware optimized for display decoration
28076    HwcTypeDisplayDecoration = 6,
28077}
28078impl HwcCompositionType {
28079    /// String value of the enum field names used in the ProtoBuf definition.
28080    ///
28081    /// The values are not transformed in any way and thus are considered stable
28082    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28083    pub fn as_str_name(&self) -> &'static str {
28084        match self {
28085            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
28086            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
28087            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
28088            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
28089            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
28090            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
28091            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
28092        }
28093    }
28094}
28095#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28096#[repr(i32)]
28097pub enum FtraceParseStatus {
28098    FtraceStatusUnspecified = 0,
28099    /// Not written, used for convenience of implementation:
28100    FtraceStatusOk = 1,
28101    /// Issues with reading data out of the ftrace ring buffer:
28102    FtraceStatusUnexpectedReadError = 2,
28103    FtraceStatusPartialPageRead = 3,
28104    /// Ring buffer binary data not matching our understanding of the layout:
28105    FtraceStatusAbiInvalidPageHeader = 4,
28106    FtraceStatusAbiShortEventHeader = 5,
28107    FtraceStatusAbiNullPadding = 6,
28108    FtraceStatusAbiShortPaddingLength = 7,
28109    FtraceStatusAbiInvalidPaddingLength = 8,
28110    FtraceStatusAbiShortTimeExtend = 9,
28111    FtraceStatusAbiShortTimeStamp = 10,
28112    FtraceStatusAbiShortDataLength = 11,
28113    FtraceStatusAbiZeroDataLength = 12,
28114    FtraceStatusAbiInvalidDataLength = 13,
28115    FtraceStatusAbiShortEventId = 14,
28116    FtraceStatusAbiEndOverflow = 15,
28117    /// Issues with parsing the event payload:
28118    FtraceStatusShortCompactEvent = 16,
28119    FtraceStatusInvalidEvent = 17,
28120}
28121impl FtraceParseStatus {
28122    /// String value of the enum field names used in the ProtoBuf definition.
28123    ///
28124    /// The values are not transformed in any way and thus are considered stable
28125    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28126    pub fn as_str_name(&self) -> &'static str {
28127        match self {
28128            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
28129            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
28130            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
28131            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
28132            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
28133            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
28134            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
28135            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
28136            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
28137            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
28138            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
28139            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
28140            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
28141            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
28142            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
28143            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
28144            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
28145            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
28146        }
28147    }
28148}
28149#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28150#[repr(i32)]
28151pub enum FtraceClock {
28152    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
28153    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
28154    Unspecified = 0,
28155    Unknown = 1,
28156    Global = 2,
28157    Local = 3,
28158    MonoRaw = 4,
28159}
28160impl FtraceClock {
28161    /// String value of the enum field names used in the ProtoBuf definition.
28162    ///
28163    /// The values are not transformed in any way and thus are considered stable
28164    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28165    pub fn as_str_name(&self) -> &'static str {
28166        match self {
28167            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
28168            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
28169            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
28170            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
28171            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
28172        }
28173    }
28174}
28175// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
28176
28177// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
28178
28179// Describes Chrome's Compositor scheduler's current state and associated
28180// variables.
28181//
28182// These protos and enums were adapted from the corresponding original JSON
28183// trace event for the scheduler state. In contrast to the JSON, we use strongly
28184// typed enum values instead of strings for many fields, and
28185// microsecond-granularity timestamps.
28186//
28187// The original format was generated in JSON by the code at
28188// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
28189//
28190// And is now generated as protozero:
28191// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
28192//
28193// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
28194
28195#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28196#[repr(i32)]
28197pub enum ChromeCompositorSchedulerAction {
28198    CcSchedulerActionUnspecified = 0,
28199    CcSchedulerActionNone = 1,
28200    CcSchedulerActionSendBeginMainFrame = 2,
28201    CcSchedulerActionCommit = 3,
28202    CcSchedulerActionActivateSyncTree = 4,
28203    CcSchedulerActionDrawIfPossible = 5,
28204    CcSchedulerActionDrawForced = 6,
28205    CcSchedulerActionDrawAbort = 7,
28206    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
28207    CcSchedulerActionPrepareTiles = 9,
28208    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
28209    CcSchedulerActionPerformImplSideInvalidation = 11,
28210    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
28211    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
28212}
28213impl ChromeCompositorSchedulerAction {
28214    /// String value of the enum field names used in the ProtoBuf definition.
28215    ///
28216    /// The values are not transformed in any way and thus are considered stable
28217    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28218    pub fn as_str_name(&self) -> &'static str {
28219        match self {
28220            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
28221            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
28222            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
28223            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
28224            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
28225            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
28226            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
28227            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
28228            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
28229            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
28230            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
28231            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
28232            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
28233            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
28234        }
28235    }
28236}
28237// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
28238
28239// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
28240
28241// Describes the state of the RendererScheduler for a given Renderer Process.
28242
28243/// RAIL Mode is an indication of the kind of work that a Renderer is currently
28244/// performing which is in turn used to prioritise work accordingly.
28245/// A fuller description of these modes can be found <https://web.dev/rail/>
28246#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28247#[repr(i32)]
28248pub enum ChromeRailMode {
28249    RailModeNone = 0,
28250    RailModeResponse = 1,
28251    RailModeAnimation = 2,
28252    RailModeIdle = 3,
28253    RailModeLoad = 4,
28254}
28255impl ChromeRailMode {
28256    /// String value of the enum field names used in the ProtoBuf definition.
28257    ///
28258    /// The values are not transformed in any way and thus are considered stable
28259    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28260    pub fn as_str_name(&self) -> &'static str {
28261        match self {
28262            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
28263            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
28264            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
28265            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
28266            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
28267        }
28268    }
28269}