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). Can be combined with
984    /// |package_name_regex_filter|: a package is included if it matches either
985    /// filter. If both filters are empty, emit info about all packages.
986    #[prost(string, repeated, tag="1")]
987    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
988    /// If not empty, emit info about only the packages whose names match any of
989    /// the following regexes (full match, not partial). Can be combined with
990    /// |package_name_filter|: a package is included if it matches either filter.
991    /// If both filters are empty, emit info about all packages.
992    /// This field was introduced in Android 26Q2 (Perfetto v55).
993    #[prost(string, repeated, tag="3")]
994    pub package_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
995    /// If present and non-zero, the data source will periodically poll for CPU
996    /// use by packages and only emit results for those that it sees. If absent,
997    /// the data source will emit results for all packages at startup. The package
998    /// name filters apply either way.
999    #[prost(uint32, optional, tag="2")]
1000    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1001}
1002// End of protos/perfetto/config/android/packages_list_config.proto
1003
1004// Begin of protos/perfetto/config/android/pixel_modem_config.proto
1005
1006/// Data source that records events from the modem.
1007#[derive(Clone, PartialEq, ::prost::Message)]
1008pub struct PixelModemConfig {
1009    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
1010    pub event_group: ::core::option::Option<i32>,
1011    /// If set, record only events with these hashes.
1012    #[prost(int64, repeated, packed="false", tag="2")]
1013    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1014    /// If set and allow_list is not set, deny events with these hashes.
1015    #[prost(int64, repeated, packed="false", tag="3")]
1016    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1017}
1018/// Nested message and enum types in `PixelModemConfig`.
1019pub mod pixel_modem_config {
1020    /// Event group to record, as defined by the modem.
1021    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1022    #[repr(i32)]
1023    pub enum EventGroup {
1024        Unknown = 0,
1025        /// Events suitable for low bandwidth tracing only.
1026        LowBandwidth = 1,
1027        /// Events suitable for high and low bandwidth tracing.
1028        HighAndLowBandwidth = 2,
1029    }
1030    impl EventGroup {
1031        /// String value of the enum field names used in the ProtoBuf definition.
1032        ///
1033        /// The values are not transformed in any way and thus are considered stable
1034        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1035        pub fn as_str_name(&self) -> &'static str {
1036            match self {
1037                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
1038                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1039                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1040            }
1041        }
1042    }
1043}
1044// Begin of protos/perfetto/config/android/protolog_config.proto
1045
1046/// Custom configuration for the "android.protolog" data source.
1047/// ProtoLog is a logging mechanism that is intented to be more efficient than
1048/// logcat. This configures what logs to capture in the tracing instance.
1049#[derive(Clone, PartialEq, ::prost::Message)]
1050pub struct ProtoLogConfig {
1051    /// Specified the configurations for each of the logging groups. If none is
1052    /// specified for a group the defaults will be used.
1053    #[prost(message, repeated, tag="1")]
1054    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1055    /// Specified what tracing mode to use for the tracing instance.
1056    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
1057    pub tracing_mode: ::core::option::Option<i32>,
1058    /// If set, any message with log level higher than this level (inclusive) will
1059    /// be traced. Group overrides take precedence over this value.
1060    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
1061    pub default_log_from_level: ::core::option::Option<i32>,
1062}
1063/// Nested message and enum types in `ProtoLogConfig`.
1064pub mod proto_log_config {
1065    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1066    #[repr(i32)]
1067    pub enum TracingMode {
1068        /// When using the DEFAULT tracing mode, only log groups and levels specified
1069        /// in the group_overrides are traced.
1070        Default = 0,
1071        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1072        /// traced, unless specified in the group_overrides.
1073        EnableAll = 1,
1074    }
1075    impl TracingMode {
1076        /// String value of the enum field names used in the ProtoBuf definition.
1077        ///
1078        /// The values are not transformed in any way and thus are considered stable
1079        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1080        pub fn as_str_name(&self) -> &'static str {
1081            match self {
1082                TracingMode::Default => "DEFAULT",
1083                TracingMode::EnableAll => "ENABLE_ALL",
1084            }
1085        }
1086    }
1087}
1088#[derive(Clone, PartialEq, ::prost::Message)]
1089pub struct ProtoLogGroup {
1090    /// The ProtoLog group name this configuration entry applies to.
1091    #[prost(string, optional, tag="1")]
1092    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1093    /// Specify the level from which to start capturing protologs.
1094    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1095    /// message will be traced.
1096    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1097    pub log_from: ::core::option::Option<i32>,
1098    /// When set to true we will collect the stacktrace for each protolog message
1099    /// in this group that we are tracing.
1100    #[prost(bool, optional, tag="3")]
1101    pub collect_stacktrace: ::core::option::Option<bool>,
1102}
1103// End of protos/perfetto/config/android/protolog_config.proto
1104
1105// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1106
1107/// Custom configuration for the "android.surfaceflinger.layers" data source.
1108#[derive(Clone, PartialEq, ::prost::Message)]
1109pub struct SurfaceFlingerLayersConfig {
1110    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1111    pub mode: ::core::option::Option<i32>,
1112    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1113    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1114}
1115/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1116pub mod surface_flinger_layers_config {
1117    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1118    #[repr(i32)]
1119    pub enum Mode {
1120        Unspecified = 0,
1121        /// Trace layers snapshots. A snapshot is taken every time a layers change
1122        /// occurs.
1123        Active = 1,
1124        /// Generate layers snapshots from the transactions kept in the
1125        /// SurfaceFlinger's internal ring buffer.
1126        /// The layers snapshots generation occurs when this data source is flushed.
1127        Generated = 2,
1128        /// Trace a single layers snapshot.
1129        Dump = 3,
1130        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1131        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1132        /// when a bugreport is taken.
1133        GeneratedBugreportOnly = 4,
1134    }
1135    impl Mode {
1136        /// String value of the enum field names used in the ProtoBuf definition.
1137        ///
1138        /// The values are not transformed in any way and thus are considered stable
1139        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1140        pub fn as_str_name(&self) -> &'static str {
1141            match self {
1142                Mode::Unspecified => "MODE_UNSPECIFIED",
1143                Mode::Active => "MODE_ACTIVE",
1144                Mode::Generated => "MODE_GENERATED",
1145                Mode::Dump => "MODE_DUMP",
1146                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1147            }
1148        }
1149    }
1150    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1151    #[repr(i32)]
1152    pub enum TraceFlag {
1153        Unspecified = 0,
1154        Input = 2,
1155        Composition = 4,
1156        Extra = 8,
1157        Hwc = 16,
1158        Buffers = 32,
1159        VirtualDisplays = 64,
1160        /// INPUT | COMPOSITION | EXTRA
1161        All = 14,
1162    }
1163    impl TraceFlag {
1164        /// String value of the enum field names used in the ProtoBuf definition.
1165        ///
1166        /// The values are not transformed in any way and thus are considered stable
1167        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1168        pub fn as_str_name(&self) -> &'static str {
1169            match self {
1170                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1171                TraceFlag::Input => "TRACE_FLAG_INPUT",
1172                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1173                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1174                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1175                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1176                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1177                TraceFlag::All => "TRACE_FLAG_ALL",
1178            }
1179        }
1180    }
1181}
1182// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
1183
1184// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1185
1186/// Custom configuration for the "android.surfaceflinger.transactions" data
1187/// source.
1188#[derive(Clone, PartialEq, ::prost::Message)]
1189pub struct SurfaceFlingerTransactionsConfig {
1190    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1191    pub mode: ::core::option::Option<i32>,
1192}
1193/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1194pub mod surface_flinger_transactions_config {
1195    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1196    #[repr(i32)]
1197    pub enum Mode {
1198        Unspecified = 0,
1199        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1200        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1201        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1202        /// initial state and the latest transactions.
1203        Continuous = 1,
1204        /// SurfaceFlinger writes the initial state and then each incoming
1205        /// transaction until the data source is stopped.
1206        Active = 2,
1207    }
1208    impl Mode {
1209        /// String value of the enum field names used in the ProtoBuf definition.
1210        ///
1211        /// The values are not transformed in any way and thus are considered stable
1212        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1213        pub fn as_str_name(&self) -> &'static str {
1214            match self {
1215                Mode::Unspecified => "MODE_UNSPECIFIED",
1216                Mode::Continuous => "MODE_CONTINUOUS",
1217                Mode::Active => "MODE_ACTIVE",
1218            }
1219        }
1220    }
1221}
1222// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1223
1224// Begin of protos/perfetto/config/android/user_list_config.proto
1225
1226/// Data source that lists details (such as version code) about users on an
1227/// Android device.
1228#[derive(Clone, PartialEq, ::prost::Message)]
1229pub struct AndroidUserListConfig {
1230    /// An allowlist of user type strings, used to control the granularity of
1231    /// user type information emitted in the trace. Exact, case-sensitive string
1232    /// matching is used.
1233    ///
1234    /// Any user type read from the device that is NOT present in the
1235    /// effective allowlist will have its type reported as
1236    /// "android.os.usertype.FILTERED".
1237    ///
1238    /// The effective allowlist is determined as follows:
1239    ///
1240    /// 1. If this 'user_type_filter' field is provided and non-empty:
1241    ///     This list itself is the effective allowlist.
1242    ///     Example TraceConfig:
1243    ///     --------------------
1244    ///     data_sources {
1245    ///         config {
1246    ///             name: "android.user_list"
1247    ///             target_buffer: 0
1248    ///             user_list_config {
1249    ///               # Only report these specific types, others become FILTERED.
1250    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1251    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1252    ///             }
1253    ///         }
1254    ///     }
1255    ///
1256    ///
1257    /// Note: This field does not support regular expressions.
1258    #[prost(string, repeated, tag="1")]
1259    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1260}
1261// End of protos/perfetto/config/android/user_list_config.proto
1262
1263// Begin of protos/perfetto/config/android/windowmanager_config.proto
1264
1265/// Custom configuration for the "android.windowmanager" data source.
1266#[derive(Clone, PartialEq, ::prost::Message)]
1267pub struct WindowManagerConfig {
1268    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1269    pub log_frequency: ::core::option::Option<i32>,
1270    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1271    pub log_level: ::core::option::Option<i32>,
1272}
1273/// Nested message and enum types in `WindowManagerConfig`.
1274pub mod window_manager_config {
1275    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1276    #[repr(i32)]
1277    pub enum LogFrequency {
1278        Unspecified = 0,
1279        /// Trace state snapshots when a frame is committed.
1280        Frame = 1,
1281        /// Trace state snapshots every time a transaction is committed.
1282        Transaction = 2,
1283        /// Trace single state snapshots when the data source is started.
1284        SingleDump = 3,
1285    }
1286    impl LogFrequency {
1287        /// String value of the enum field names used in the ProtoBuf definition.
1288        ///
1289        /// The values are not transformed in any way and thus are considered stable
1290        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1291        pub fn as_str_name(&self) -> &'static str {
1292            match self {
1293                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1294                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1295                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1296                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1297            }
1298        }
1299    }
1300    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1301    #[repr(i32)]
1302    pub enum LogLevel {
1303        Unspecified = 0,
1304        /// Logs all elements with maximum amount of information.
1305        Verbose = 1,
1306        /// Logs all elements but doesn't write all configuration data.
1307        Debug = 2,
1308        /// Logs only visible elements, with the minimum amount of performance
1309        /// overhead
1310        Critical = 3,
1311    }
1312    impl LogLevel {
1313        /// String value of the enum field names used in the ProtoBuf definition.
1314        ///
1315        /// The values are not transformed in any way and thus are considered stable
1316        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1317        pub fn as_str_name(&self) -> &'static str {
1318            match self {
1319                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1320                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1321                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1322                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1323            }
1324        }
1325    }
1326}
1327// End of protos/perfetto/config/android/windowmanager_config.proto
1328
1329// Begin of protos/perfetto/config/chrome/chrome_config.proto
1330
1331#[derive(Clone, PartialEq, ::prost::Message)]
1332pub struct ChromeConfig {
1333    #[prost(string, optional, tag="1")]
1334    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1335    /// When enabled, the data source should only fill in fields in the output that
1336    /// are not potentially privacy sensitive.
1337    #[prost(bool, optional, tag="2")]
1338    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1339    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1340    /// JSON format. Note that the trace data will still be returned as a series of
1341    /// TracePackets, but the embedded data will be JSON instead of serialized
1342    /// protobuf.
1343    #[prost(bool, optional, tag="3")]
1344    pub convert_to_legacy_json: ::core::option::Option<bool>,
1345    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1346    pub client_priority: ::core::option::Option<i32>,
1347    /// Applicable only when using legacy JSON format.
1348    /// If |json_agent_label_filter| is not empty, only data pertaining to
1349    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1350    #[prost(string, optional, tag="5")]
1351    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1352    ///   When enabled, event names should not contain package names.
1353    #[prost(bool, optional, tag="6")]
1354    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1355}
1356/// Nested message and enum types in `ChromeConfig`.
1357pub mod chrome_config {
1358    /// Priority of the tracing session client. A higher priority session may
1359    /// preempt a lower priority one in configurations where concurrent sessions
1360    /// aren't supported.
1361    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1362    #[repr(i32)]
1363    pub enum ClientPriority {
1364        Unknown = 0,
1365        Background = 1,
1366        UserInitiated = 2,
1367    }
1368    impl ClientPriority {
1369        /// String value of the enum field names used in the ProtoBuf definition.
1370        ///
1371        /// The values are not transformed in any way and thus are considered stable
1372        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1373        pub fn as_str_name(&self) -> &'static str {
1374            match self {
1375                ClientPriority::Unknown => "UNKNOWN",
1376                ClientPriority::Background => "BACKGROUND",
1377                ClientPriority::UserInitiated => "USER_INITIATED",
1378            }
1379        }
1380    }
1381}
1382// End of protos/perfetto/config/chrome/chrome_config.proto
1383
1384// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1385
1386#[derive(Clone, PartialEq, ::prost::Message)]
1387pub struct ChromiumHistogramSamplesConfig {
1388    /// List of histograms to record. If no histogram is specified, all histograms
1389    /// are recorded.
1390    #[prost(message, repeated, tag="1")]
1391    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1392    /// Default: false (i.e. histogram names are NOT filtered out by default)
1393    /// When true, histogram_name will be filtered out.
1394    #[prost(bool, optional, tag="2")]
1395    pub filter_histogram_names: ::core::option::Option<bool>,
1396}
1397/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1398pub mod chromium_histogram_samples_config {
1399    /// Records when a value within the specified bounds [min_value, max_value] is
1400    /// emitted into a Chrome histogram.
1401    #[derive(Clone, PartialEq, ::prost::Message)]
1402    pub struct HistogramSample {
1403        #[prost(string, optional, tag="1")]
1404        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1405        #[prost(int64, optional, tag="2")]
1406        pub min_value: ::core::option::Option<i64>,
1407        #[prost(int64, optional, tag="3")]
1408        pub max_value: ::core::option::Option<i64>,
1409    }
1410}
1411// End of protos/perfetto/config/chrome/histogram_samples.proto
1412
1413// Begin of protos/perfetto/config/chrome/system_metrics.proto
1414
1415#[derive(Clone, PartialEq, ::prost::Message)]
1416pub struct ChromiumSystemMetricsConfig {
1417    /// Samples counters every X ms.
1418    #[prost(uint32, optional, tag="1")]
1419    pub sampling_interval_ms: ::core::option::Option<u32>,
1420}
1421// End of protos/perfetto/config/chrome/system_metrics.proto
1422
1423// Begin of protos/perfetto/config/chrome/v8_config.proto
1424
1425#[derive(Clone, PartialEq, ::prost::Message)]
1426pub struct V8Config {
1427    /// Whether to log the actual content of scripts (e.g. content of the JS file
1428    /// that was compiled to generate code).
1429    /// ATTENTION: This could considerably increase the size of the resuling trace
1430    ///             file.
1431    #[prost(bool, optional, tag="1")]
1432    pub log_script_sources: ::core::option::Option<bool>,
1433    /// Whether to log the generated code for jitted functions (machine code or
1434    /// bytecode).
1435    /// ATTENTION: This could considerably increase the size of the resuling trace
1436    ///             file.
1437    #[prost(bool, optional, tag="2")]
1438    pub log_instructions: ::core::option::Option<bool>,
1439}
1440// End of protos/perfetto/config/chrome/v8_config.proto
1441
1442// Begin of protos/perfetto/config/etw/etw_config.proto
1443
1444/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1445/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1446/// ns-evntrace-event_trace_properties
1447#[derive(Clone, PartialEq, ::prost::Message)]
1448pub struct EtwConfig {
1449    /// The kernel_flags determines the flags that will be used by the etw tracing
1450    /// session. These kernel flags have been built to expose the useful events
1451    /// captured from the kernel mode only.
1452    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1453    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1454    // See the list of keywords for for individual providers.
1455    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1456
1457    /// Provides events relating to the scheduler.
1458    #[prost(string, repeated, tag="2")]
1459    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1460    /// Provides events relating to the memory manager.
1461    #[prost(string, repeated, tag="3")]
1462    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1463    /// Provides events relating to file I/O.
1464    #[prost(string, repeated, tag="4")]
1465    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1466}
1467/// Nested message and enum types in `EtwConfig`.
1468pub mod etw_config {
1469    /// The KernelFlag represent list of kernel flags that we are intrested in.
1470    /// To get a more extensive list run 'xperf -providers k'.
1471    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1472    #[repr(i32)]
1473    pub enum KernelFlag {
1474        Cswitch = 0,
1475        Dispatcher = 1,
1476    }
1477    impl KernelFlag {
1478        /// String value of the enum field names used in the ProtoBuf definition.
1479        ///
1480        /// The values are not transformed in any way and thus are considered stable
1481        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1482        pub fn as_str_name(&self) -> &'static str {
1483            match self {
1484                KernelFlag::Cswitch => "CSWITCH",
1485                KernelFlag::Dispatcher => "DISPATCHER",
1486            }
1487        }
1488    }
1489}
1490// End of protos/perfetto/config/etw/etw_config.proto
1491
1492// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1493
1494#[derive(Clone, PartialEq, ::prost::Message)]
1495pub struct FrozenFtraceConfig {
1496    /// The instance name which stores the previous boot ftrace data. Required.
1497    #[prost(string, optional, tag="1")]
1498    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1499}
1500// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1501
1502// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1503
1504/// Next id: 38
1505#[derive(Clone, PartialEq, ::prost::Message)]
1506pub struct FtraceConfig {
1507    /// Ftrace events to record, example: "sched/sched_switch".
1508    #[prost(string, repeated, tag="1")]
1509    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1510    /// Android-specific event categories:
1511    #[prost(string, repeated, tag="2")]
1512    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1513    #[prost(string, repeated, tag="3")]
1514    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1515    /// Some processes can emit data through atrace or through the perfetto SDK via
1516    /// the "track_event" data source. For these categories, the SDK will be
1517    /// preferred, if possible, for this config.
1518    #[prost(string, repeated, tag="28")]
1519    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1520    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1521    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1522    /// events for convenience (and the vendor-specific events on top).
1523    /// Introduced in: perfetto v52.
1524    #[prost(bool, optional, tag="34")]
1525    pub atrace_userspace_only: ::core::option::Option<bool>,
1526    /// Size of each per-cpu kernel ftrace ring buffer.
1527    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1528    /// buffers cannot be resized without pausing recording in the kernel.
1529    #[prost(uint32, optional, tag="10")]
1530    pub buffer_size_kb: ::core::option::Option<u32>,
1531    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1532    /// implementation to choose a bigger buffer size.
1533    ///
1534    /// Most configs for perfetto v43+ should simply leave both fields unset.
1535    ///
1536    /// If you need a config compatible with a range of perfetto builds and you
1537    /// used to set a non-default buffer_size_kb, consider setting both fields.
1538    /// Example:
1539    ///    buffer_size_kb: 4096
1540    ///    buffer_size_lower_bound: true
1541    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1542    /// On v43+, buffers will be at least 4 MB.
1543    /// In both cases, neither is guaranteed if there are other concurrent
1544    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1545    /// the recording in the kernel.
1546    /// Introduced in: perfetto v43.
1547    #[prost(bool, optional, tag="27")]
1548    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1549    /// If set, specifies how often the tracing daemon reads from the kernel ring
1550    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1551    /// Leave unset unless you're fine-tuning a local config.
1552    #[prost(uint32, optional, tag="11")]
1553    pub drain_period_ms: ::core::option::Option<u32>,
1554    /// If set, the tracing daemon will read kernel ring buffers as soon as
1555    /// they're filled past this percentage of occupancy. In other words, a value
1556    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1557    /// half-full. Not guaranteed if there are multiple concurrent tracing
1558    /// sessions.
1559    /// Currently does nothing on Linux kernels below v6.9.
1560    /// Introduced in: perfetto v48.
1561    #[prost(uint32, optional, tag="29")]
1562    pub drain_buffer_percent: ::core::option::Option<u32>,
1563    #[prost(message, optional, tag="12")]
1564    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1565    #[prost(message, optional, tag="22")]
1566    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1567    /// Enables symbol name resolution against /proc/kallsyms.
1568    /// It requires that either traced_probes is running as root or that
1569    /// kptr_restrict has been manually lowered.
1570    /// It does not disclose KASLR, symbol addresses are mangled.
1571    #[prost(bool, optional, tag="13")]
1572    pub symbolize_ksyms: ::core::option::Option<bool>,
1573    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1574    pub ksyms_mem_policy: ::core::option::Option<i32>,
1575    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1576    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1577    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1578    /// The historical context for this is the following:
1579    /// - Up to Android S (12), the rss_stat was internally throttled in its
1580    ///    kernel implementation.
1581    /// - A change introduced in the kernels after S has introduced a new
1582    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1583    ///    (hence very spammy).
1584    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1585    ///    need to deal with both cases.
1586    /// For more context: go/rss-stat-throttled.
1587    #[prost(bool, optional, tag="15")]
1588    pub throttle_rss_stat: ::core::option::Option<bool>,
1589    /// If true, use self-describing proto messages when writing events not known
1590    /// at compile time (aka generic events). Each event bundle will have a set of
1591    /// serialised proto descriptors for events within that bundle.
1592    ///
1593    /// Default if unset:
1594    /// * v53+: true
1595    /// * before v53: false
1596    ///
1597    /// Added in: perfetto v50.
1598    #[prost(bool, optional, tag="32")]
1599    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1600    /// If true, avoid enabling events that aren't statically known by
1601    /// traced_probes. Otherwise, the default is to emit such events as
1602    /// GenericFtraceEvent protos.
1603    /// Prefer to keep this flag at its default. This was added for Android
1604    /// tracing, where atrace categories and/or atrace HAL requested events can
1605    /// expand to events that aren't of interest to the tracing user.
1606    /// Introduced in: Android T.
1607    #[prost(bool, optional, tag="16")]
1608    pub disable_generic_events: ::core::option::Option<bool>,
1609    /// The subset of syscalls to record. To record all syscalls, leave this unset
1610    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1611    /// * before perfetto v43, requires the config to also enable
1612    ///    raw_syscalls/sys_{enter,exit}.
1613    /// * perfetto v43+ does the right thing if you set only this field.
1614    /// Example: ["sys_read", "sys_open"].
1615    /// Introduced in: Android U.
1616    #[prost(string, repeated, tag="18")]
1617    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1618    /// If true, enable the "function_graph" kernel tracer that emits events
1619    /// whenever a kernel function is entered and exited
1620    /// (funcgraph_entry/funcgraph_exit).
1621    /// Notes on use:
1622    /// * Requires |symbolize_ksyms| for function name resolution.
1623    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1624    ///    set of functions, otherwise the event bandwidth will be too high for
1625    ///    practical use.
1626    /// * The data source might be rejected if there is already a concurrent
1627    ///    ftrace data source that does not use function graph itself, as we do not
1628    ///    support switching kernel tracers mid-trace.
1629    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1630    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1631    ///    "function_graph".
1632    /// Android:
1633    /// * Available only on debuggable builds.
1634    /// * Introduced in: Android U.
1635    #[prost(bool, optional, tag="19")]
1636    pub enable_function_graph: ::core::option::Option<bool>,
1637    /// Constrains the set of functions traced when |enable_function_graph| is
1638    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1639    /// in which case all matching functions will be traced. See kernel
1640    /// documentation on ftrace "set_ftrace_filter" file for more details.
1641    /// Android:
1642    /// * Available only on debuggable builds.
1643    /// * Introduced in: Android U.
1644    #[prost(string, repeated, tag="20")]
1645    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1646    /// If |enable_function_graph| is true, trace this set of functions *and* all
1647    /// of its callees. Supports globs. Can be set together with
1648    /// |function_filters|, in which case only callees matching the filter will be
1649    /// traced. If setting both, you most likely want all roots to also be
1650    /// included in |function_filters|.
1651    /// Android:
1652    /// * Available only on debuggable builds.
1653    /// * Introduced in: Android U.
1654    #[prost(string, repeated, tag="21")]
1655    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1656    /// If |enable_function_graph| is true, only trace the specified
1657    /// number of calls down the stack. Sets the max_graph_depth value
1658    /// in sys/kernel/tracing/
1659    ///
1660    /// Only respected for the first tracing session that enables
1661    /// function_graph tracing.
1662    ///
1663    /// Introduced in: perfetto v51.
1664    /// Supported on: Android 25Q3+.
1665    #[prost(uint32, optional, tag="33")]
1666    pub function_graph_max_depth: ::core::option::Option<u32>,
1667    /// Ftrace events to record, specific for kprobes and kretprobes
1668    #[prost(message, repeated, tag="30")]
1669    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1670    /// If true, does not clear kernel ftrace buffers when starting the trace.
1671    /// This makes sense only if this is the first ftrace data source instance
1672    /// created after the daemon has been started. Can be useful for gathering boot
1673    /// traces, if ftrace has been separately configured (e.g. via kernel
1674    /// commandline).
1675    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1676    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1677    /// anything besides ftrace. Otherwise timestamps might be skewed.
1678    #[prost(bool, optional, tag="23")]
1679    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1680    /// If true, overrides the default timestamp clock and uses a raw hardware
1681    /// based monotonic clock for getting timestamps.
1682    /// * Introduced in: Android U.
1683    #[prost(bool, optional, tag="24")]
1684    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1685    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1686    /// for event recording. Normally, this means
1687    /// `/sys/kernel/tracing/instances/$instance_name`.
1688    ///
1689    /// Names "hyp" and "hypervisor" are reserved.
1690    ///
1691    /// The instance must already exist, the tracing daemon *will not* create it
1692    /// for you as it typically doesn't have such permissions.
1693    /// Only a subset of features is guaranteed to work with non-default instances,
1694    /// at the time of writing:
1695    ///   * ftrace_events
1696    ///   * buffer_size_kb
1697    #[prost(string, optional, tag="25")]
1698    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1699    /// For perfetto developer use. If true and on a debuggable android build,
1700    /// serialise raw tracing pages that the implementation cannot parse.
1701    #[prost(bool, optional, tag="31")]
1702    pub debug_ftrace_abi: ::core::option::Option<bool>,
1703    // =================================================
1704    // Exclusive single-tenant features: HERE BE DRAGONS
1705    // =================================================
1706    // The features below are considered "advanced" and require an exclusive
1707    // tracing session (as of Android 25Q3+ and Perfetto v52).
1708    //
1709    // These features directly manipulate the kernel's global ftrace state and
1710    // are incompatible with concurrent ftrace sessions. They are only enabled
1711    // if included in the *first* ftrace data source configured. Subsequent
1712    // ftrace data sources (even those not using advanced features) will be
1713    // rejected while a session with these features is active.
1714    //
1715    // To run the session in exclusive mode, see:
1716    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1717
1718    /// Filter ftrace events by Thread ID (TID).
1719    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
1720    ///
1721    /// Note: this is an exclusive feature, see:
1722    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1723    ///
1724    /// Introduced in: perfetto v52.
1725    /// Supported on: Android 25Q3+.
1726    #[prost(uint32, repeated, packed="false", tag="35")]
1727    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
1728    #[prost(message, repeated, tag="36")]
1729    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
1730    /// This mask restricts tracing to a specific set of CPUs using a
1731    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
1732    /// 32-bit chunk of the CPU mask.
1733    ///
1734    /// The chunks are ordered from high CPUs to low CPUs (left to right):
1735    ///    - Rightmost chunk: CPUs 0-31
1736    ///    - 2nd chunk from right: CPUs 32-63
1737    ///    - ...and so on.
1738    ///
1739    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
1740    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
1741    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
1742    /// chunk0 to 0-31.
1743    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
1744    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
1745    ///
1746    /// Note: This is an exclusive feature, see:
1747    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1748    ///
1749    /// Introduced in: perfetto v52.
1750    /// Supported on: Android 25Q3+.
1751    #[prost(string, optional, tag="37")]
1752    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
1753    /// No-op in perfetto v28+. Name preserved because of existing references in
1754    /// textproto configs.
1755    #[deprecated]
1756    #[prost(bool, optional, tag="14")]
1757    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1758}
1759/// Nested message and enum types in `FtraceConfig`.
1760pub mod ftrace_config {
1761    /// Configuration for compact encoding of scheduler events. When enabled (and
1762    /// recording the relevant ftrace events), specific high-volume events are
1763    /// encoded in a denser format than normal.
1764    #[derive(Clone, PartialEq, ::prost::Message)]
1765    pub struct CompactSchedConfig {
1766        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1767        /// record those events in the compact format.
1768        ///
1769        /// If the field is unset, the default is:
1770        /// * perfetto v42.0+: enabled
1771        /// * before: disabled
1772        #[prost(bool, optional, tag="1")]
1773        pub enabled: ::core::option::Option<bool>,
1774    }
1775    /// Optional filter for "ftrace/print" events.
1776    ///
1777    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1778    /// are processed in order), its `allow` field will be used as the outcome: if
1779    /// `allow` is true, the event will be included in the trace, otherwise it will
1780    /// be discarded. If an event does not match any rule, it will be allowed by
1781    /// default (a rule with an empty prefix and allow=false, disallows everything
1782    /// by default).
1783    #[derive(Clone, PartialEq, ::prost::Message)]
1784    pub struct PrintFilter {
1785        #[prost(message, repeated, tag="1")]
1786        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1787    }
1788    /// Nested message and enum types in `PrintFilter`.
1789    pub mod print_filter {
1790        #[derive(Clone, PartialEq, ::prost::Message)]
1791        pub struct Rule {
1792            #[prost(bool, optional, tag="2")]
1793            pub allow: ::core::option::Option<bool>,
1794            #[prost(oneof="rule::Match", tags="1, 3")]
1795            pub r#match: ::core::option::Option<rule::Match>,
1796        }
1797        /// Nested message and enum types in `Rule`.
1798        pub mod rule {
1799            /// Matches an atrace message of the form:
1800            /// <type>|pid|<prefix>...
1801            #[derive(Clone, PartialEq, ::prost::Message)]
1802            pub struct AtraceMessage {
1803                #[prost(string, optional, tag="1")]
1804                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1805                #[prost(string, optional, tag="2")]
1806                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1807            }
1808            #[derive(Clone, PartialEq, ::prost::Oneof)]
1809            pub enum Match {
1810                /// This rule matches if `prefix` matches exactly with the beginning of
1811                /// the "ftrace/print" "buf" field.
1812                #[prost(string, tag="1")]
1813                Prefix(::prost::alloc::string::String),
1814                /// This rule matches if the "buf" field contains an atrace-style print
1815                /// message as specified in `atrace_msg`.
1816                #[prost(message, tag="3")]
1817                AtraceMsg(AtraceMessage),
1818            }
1819        }
1820    }
1821    #[derive(Clone, PartialEq, ::prost::Message)]
1822    pub struct KprobeEvent {
1823        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1824        #[prost(string, optional, tag="1")]
1825        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1826        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1827        pub r#type: ::core::option::Option<i32>,
1828    }
1829    /// Nested message and enum types in `KprobeEvent`.
1830    pub mod kprobe_event {
1831        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1832        #[repr(i32)]
1833        pub enum KprobeType {
1834            Unknown = 0,
1835            Kprobe = 1,
1836            Kretprobe = 2,
1837            Both = 3,
1838        }
1839        impl KprobeType {
1840            /// String value of the enum field names used in the ProtoBuf definition.
1841            ///
1842            /// The values are not transformed in any way and thus are considered stable
1843            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1844            pub fn as_str_name(&self) -> &'static str {
1845                match self {
1846                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1847                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1848                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1849                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1850                }
1851            }
1852        }
1853    }
1854    /// Tracefs options to set directly in the tracefs instance. This is a very
1855    /// niche feature since almost all of the options deal with formatting textual
1856    /// output (the /trace file), which perfetto doesn't use.
1857    ///
1858    /// The options with a known use-case:
1859    /// * event-fork: when using `tids_to_trace` above, the kernel will
1860    ///    automatically add newly spawned descendant threads to the set of TIDs.
1861    ///
1862    /// Full list of options is available at
1863    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
1864    ///
1865    /// Note: this is an exclusive feature, see:
1866    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1867    ///
1868    /// Introduced in: perfetto v52.
1869    /// Supported on: Android 25Q3+.
1870    #[derive(Clone, PartialEq, ::prost::Message)]
1871    pub struct TracefsOption {
1872        /// The name of the tracefs option as found in tracefs/trace_options (without
1873        /// the "no" prefix).
1874        #[prost(string, optional, tag="1")]
1875        pub name: ::core::option::Option<::prost::alloc::string::String>,
1876        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
1877        pub state: ::core::option::Option<i32>,
1878    }
1879    /// Nested message and enum types in `TracefsOption`.
1880    pub mod tracefs_option {
1881        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1882        #[repr(i32)]
1883        pub enum State {
1884            Unknown = 0,
1885            Enabled = 1,
1886            Disabled = 2,
1887        }
1888        impl State {
1889            /// String value of the enum field names used in the ProtoBuf definition.
1890            ///
1891            /// The values are not transformed in any way and thus are considered stable
1892            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1893            pub fn as_str_name(&self) -> &'static str {
1894                match self {
1895                    State::Unknown => "STATE_UNKNOWN",
1896                    State::Enabled => "STATE_ENABLED",
1897                    State::Disabled => "STATE_DISABLED",
1898                }
1899            }
1900        }
1901    }
1902    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1903    /// should keep the symbol map in memory (and reuse it for future tracing
1904    /// sessions) or clear it (saving memory) and re-create it on each tracing
1905    /// session (wasting cpu and wall time).
1906    /// The tradeoff is roughly:
1907    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1908    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1909    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1910    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1911    #[repr(i32)]
1912    pub enum KsymsMemPolicy {
1913        KsymsUnspecified = 0,
1914        KsymsCleanupOnStop = 1,
1915        KsymsRetain = 2,
1916    }
1917    impl KsymsMemPolicy {
1918        /// String value of the enum field names used in the ProtoBuf definition.
1919        ///
1920        /// The values are not transformed in any way and thus are considered stable
1921        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1922        pub fn as_str_name(&self) -> &'static str {
1923            match self {
1924                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1925                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1926                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1927            }
1928        }
1929    }
1930}
1931// End of protos/perfetto/config/ftrace/ftrace_config.proto
1932
1933// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1934
1935#[derive(Clone, PartialEq, ::prost::Message)]
1936pub struct GpuCounterConfig {
1937    /// Desired sampling interval for counters.
1938    #[prost(uint64, optional, tag="1")]
1939    pub counter_period_ns: ::core::option::Option<u64>,
1940    /// List of counters to be sampled. Counter IDs correspond to the ones
1941    /// described in GpuCounterSpec in the data source descriptor.
1942    #[prost(uint32, repeated, packed="false", tag="2")]
1943    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1944    /// Sample counters by instrumenting command buffers.
1945    #[prost(bool, optional, tag="3")]
1946    pub instrumented_sampling: ::core::option::Option<bool>,
1947    /// Fix gpu clock rate during trace session.
1948    #[prost(bool, optional, tag="4")]
1949    pub fix_gpu_clock: ::core::option::Option<bool>,
1950}
1951// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1952
1953// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1954
1955#[derive(Clone, PartialEq, ::prost::Message)]
1956pub struct GpuRenderStagesConfig {
1957    /// Enable to separate the color and depth/stencil load and store stages
1958    /// into a separate stages. If disabled, the depth/stencil load and store
1959    /// stages will be combined.  Disabled by default. This option has no effect if
1960    /// Low Overhead mode is enabled.
1961    #[prost(bool, optional, tag="1")]
1962    pub full_loadstore: ::core::option::Option<bool>,
1963    /// Use the low overhead mode for traces. In this mode render stages are
1964    /// combined into a single workload stage. This provides less granular data but
1965    /// induces minimal GPU overhead. Disabled by default.
1966    #[prost(bool, optional, tag="2")]
1967    pub low_overhead: ::core::option::Option<bool>,
1968    /// Trace metrics to capture for each render stage
1969    #[prost(string, repeated, tag="3")]
1970    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1971}
1972// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1973
1974// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
1975
1976#[derive(Clone, PartialEq, ::prost::Message)]
1977pub struct VulkanMemoryConfig {
1978    /// Tracking driver memory usage events
1979    #[prost(bool, optional, tag="1")]
1980    pub track_driver_memory_usage: ::core::option::Option<bool>,
1981    /// Tracking device memory usage events
1982    #[prost(bool, optional, tag="2")]
1983    pub track_device_memory_usage: ::core::option::Option<bool>,
1984}
1985// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
1986
1987// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
1988
1989/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
1990/// systems.
1991#[derive(Clone, PartialEq, ::prost::Message)]
1992pub struct InodeFileConfig {
1993    /// How long to pause between batches.
1994    #[prost(uint32, optional, tag="1")]
1995    pub scan_interval_ms: ::core::option::Option<u32>,
1996    /// How long to wait before the first scan in order to accumulate inodes.
1997    #[prost(uint32, optional, tag="2")]
1998    pub scan_delay_ms: ::core::option::Option<u32>,
1999    /// How many inodes to scan in one batch.
2000    #[prost(uint32, optional, tag="3")]
2001    pub scan_batch_size: ::core::option::Option<u32>,
2002    /// Do not scan for inodes not found in the static map.
2003    #[prost(bool, optional, tag="4")]
2004    pub do_not_scan: ::core::option::Option<bool>,
2005    /// If non-empty, only scan inodes corresponding to block devices named in
2006    /// this list.
2007    #[prost(string, repeated, tag="5")]
2008    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2009    /// When encountering an inode belonging to a block device corresponding
2010    /// to one of the mount points in this map, scan its scan_roots instead.
2011    #[prost(message, repeated, tag="6")]
2012    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
2013}
2014/// Nested message and enum types in `InodeFileConfig`.
2015pub mod inode_file_config {
2016    #[derive(Clone, PartialEq, ::prost::Message)]
2017    pub struct MountPointMappingEntry {
2018        #[prost(string, optional, tag="1")]
2019        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2020        #[prost(string, repeated, tag="2")]
2021        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2022    }
2023}
2024// End of protos/perfetto/config/inode_file/inode_file_config.proto
2025
2026// Begin of protos/perfetto/config/interceptors/console_config.proto
2027
2028#[derive(Clone, PartialEq, ::prost::Message)]
2029pub struct ConsoleConfig {
2030    #[prost(enumeration="console_config::Output", optional, tag="1")]
2031    pub output: ::core::option::Option<i32>,
2032    #[prost(bool, optional, tag="2")]
2033    pub enable_colors: ::core::option::Option<bool>,
2034}
2035/// Nested message and enum types in `ConsoleConfig`.
2036pub mod console_config {
2037    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2038    #[repr(i32)]
2039    pub enum Output {
2040        Unspecified = 0,
2041        Stdout = 1,
2042        Stderr = 2,
2043    }
2044    impl Output {
2045        /// String value of the enum field names used in the ProtoBuf definition.
2046        ///
2047        /// The values are not transformed in any way and thus are considered stable
2048        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2049        pub fn as_str_name(&self) -> &'static str {
2050            match self {
2051                Output::Unspecified => "OUTPUT_UNSPECIFIED",
2052                Output::Stdout => "OUTPUT_STDOUT",
2053                Output::Stderr => "OUTPUT_STDERR",
2054            }
2055        }
2056    }
2057}
2058// End of protos/perfetto/config/interceptors/console_config.proto
2059
2060// Begin of protos/perfetto/config/interceptor_config.proto
2061
2062/// Configuration for trace packet interception. Used for diverting trace data to
2063/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2064/// Perfetto SDK.
2065#[derive(Clone, PartialEq, ::prost::Message)]
2066pub struct InterceptorConfig {
2067    /// Matches the name given to RegisterInterceptor().
2068    #[prost(string, optional, tag="1")]
2069    pub name: ::core::option::Option<::prost::alloc::string::String>,
2070    #[prost(message, optional, tag="100")]
2071    pub console_config: ::core::option::Option<ConsoleConfig>,
2072}
2073// End of protos/perfetto/config/interceptor_config.proto
2074
2075// Begin of protos/perfetto/config/power/android_power_config.proto
2076
2077#[derive(Clone, PartialEq, ::prost::Message)]
2078pub struct AndroidPowerConfig {
2079    #[prost(uint32, optional, tag="1")]
2080    pub battery_poll_ms: ::core::option::Option<u32>,
2081    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
2082    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2083    /// Where available enables per-power-rail measurements.
2084    #[prost(bool, optional, tag="3")]
2085    pub collect_power_rails: ::core::option::Option<bool>,
2086    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2087    /// Available from Android S.
2088    #[prost(bool, optional, tag="4")]
2089    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2090    /// Provides a breakdown of time in state for various subsystems.
2091    /// Available from Android U.
2092    #[prost(bool, optional, tag="5")]
2093    pub collect_entity_state_residency: ::core::option::Option<bool>,
2094}
2095/// Nested message and enum types in `AndroidPowerConfig`.
2096pub mod android_power_config {
2097    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2098    #[repr(i32)]
2099    pub enum BatteryCounters {
2100        BatteryCounterUnspecified = 0,
2101        /// Coulomb counter.
2102        BatteryCounterCharge = 1,
2103        /// Charge (%).
2104        BatteryCounterCapacityPercent = 2,
2105        /// Instantaneous current.
2106        BatteryCounterCurrent = 3,
2107        /// Avg current.
2108        BatteryCounterCurrentAvg = 4,
2109        /// Instantaneous voltage.
2110        BatteryCounterVoltage = 5,
2111    }
2112    impl BatteryCounters {
2113        /// String value of the enum field names used in the ProtoBuf definition.
2114        ///
2115        /// The values are not transformed in any way and thus are considered stable
2116        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2117        pub fn as_str_name(&self) -> &'static str {
2118            match self {
2119                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2120                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2121                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2122                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2123                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2124                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2125            }
2126        }
2127    }
2128}
2129// End of protos/perfetto/config/power/android_power_config.proto
2130
2131// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
2132
2133/// Configuration that allows to boost the priority of the 'traced' or
2134/// 'traced_probs' processes, by changing the scheduler configuration.
2135/// Only supported on Linux and Android the boosted process must have
2136/// 'CAP_SYS_NICE' capability.
2137#[derive(Clone, PartialEq, ::prost::Message)]
2138pub struct PriorityBoostConfig {
2139    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
2140    pub policy: ::core::option::Option<i32>,
2141    #[prost(uint32, optional, tag="2")]
2142    pub priority: ::core::option::Option<u32>,
2143}
2144/// Nested message and enum types in `PriorityBoostConfig`.
2145pub mod priority_boost_config {
2146    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2147    #[repr(i32)]
2148    pub enum BoostPolicy {
2149        PolicyUnspecified = 0,
2150        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
2151        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2152        /// than default 0, 20 is the highest priority.
2153        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2154        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2155        PolicySchedOther = 1,
2156        /// The Real-time policy, Priority range: [1; 99]
2157        PolicySchedFifo = 2,
2158    }
2159    impl BoostPolicy {
2160        /// String value of the enum field names used in the ProtoBuf definition.
2161        ///
2162        /// The values are not transformed in any way and thus are considered stable
2163        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2164        pub fn as_str_name(&self) -> &'static str {
2165            match self {
2166                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
2167                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
2168                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
2169            }
2170        }
2171    }
2172}
2173// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
2174
2175/// Config for polling process-related information from /proc/pid/status and
2176/// related files on Linux.
2177///
2178/// Data source name: "linux.process_stats".
2179#[derive(Clone, PartialEq, ::prost::Message)]
2180pub struct ProcessStatsConfig {
2181    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
2182    pub quirks: ::prost::alloc::vec::Vec<i32>,
2183    /// If enabled all processes will be scanned and dumped when the trace starts.
2184    #[prost(bool, optional, tag="2")]
2185    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2186    /// If enabled thread names are also recoded (this is redundant if sched_switch
2187    /// is enabled).
2188    #[prost(bool, optional, tag="3")]
2189    pub record_thread_names: ::core::option::Option<bool>,
2190    /// If > 0 samples counters (see process_stats.proto) from
2191    /// /proc/pid/status and oom_score_adj every X ms.
2192    /// This is required to be > 100ms to avoid excessive CPU usage.
2193    #[prost(uint32, optional, tag="4")]
2194    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2195    // id 5 never used
2196
2197    /// Explicit caching period during which the polling won't re-emit identical
2198    /// counter values. This is required to be either = 0 or a multiple of
2199    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2200    /// rounded down to the nearest multiple.
2201    #[prost(uint32, optional, tag="6")]
2202    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2203    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2204    /// /proc/pid/smaps_rollup.
2205    ///
2206    /// Android: does NOT work with the system daemons by default, as it requires
2207    /// running the recording process (traced_probes or tracebox) as root. It is
2208    /// possible to avoid the root requirement, but the exact steps depend on the
2209    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2210    /// check, and might be further covered by the procfs "hidepid" mount option.
2211    #[prost(bool, optional, tag="10")]
2212    pub scan_smaps_rollup: ::core::option::Option<bool>,
2213    /// If true: process descriptions will include process age (starttime in
2214    /// /proc/pid/stat).
2215    /// Introduced in: perfetto v44.
2216    #[prost(bool, optional, tag="11")]
2217    pub record_process_age: ::core::option::Option<bool>,
2218    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2219    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2220    /// Introduced in: perfetto v44.
2221    #[prost(bool, optional, tag="12")]
2222    pub record_process_runtime: ::core::option::Option<bool>,
2223    /// If true obtain per-process dmabuf resident set size from
2224    /// /proc/pid/dmabuf_rss.
2225    /// This feature is not in upstream linux, and is available only on some
2226    /// Android kernels.
2227    #[prost(bool, optional, tag="13")]
2228    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
2229    /// WARNING: unmaintained and deprecated. If true this will resolve file
2230    /// descriptors for each process so these can be mapped to their actual device
2231    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
2232    /// or new fds opened after initially scanning a process will not be
2233    /// recognized.
2234    #[prost(bool, optional, tag="9")]
2235    pub resolve_process_fds: ::core::option::Option<bool>,
2236}
2237/// Nested message and enum types in `ProcessStatsConfig`.
2238pub mod process_stats_config {
2239    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2240    #[repr(i32)]
2241    pub enum Quirks {
2242        Unspecified = 0,
2243        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
2244        /// startup is now disabled by default and can be re-enabled using the
2245        /// |scan_all_processes_on_start| arg.
2246        DisableInitialDump = 1,
2247        /// If set, disables the special interaction with "linux.ftrace" data source,
2248        /// where the process stats rescrapes any thread id seen in the ftrace
2249        /// stream.
2250        DisableOnDemand = 2,
2251    }
2252    impl Quirks {
2253        /// String value of the enum field names used in the ProtoBuf definition.
2254        ///
2255        /// The values are not transformed in any way and thus are considered stable
2256        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2257        pub fn as_str_name(&self) -> &'static str {
2258            match self {
2259                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
2260                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
2261                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
2262            }
2263        }
2264    }
2265}
2266// End of protos/perfetto/config/process_stats/process_stats_config.proto
2267
2268// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
2269
2270/// Configuration for go/heapprofd.
2271/// Next id: 28
2272#[derive(Clone, PartialEq, ::prost::Message)]
2273pub struct HeapprofdConfig {
2274    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
2275    ///
2276    /// These are:
2277    /// * All heaps if heap_sampling_intervals is empty.
2278    /// * Those profiled due to all_heaps and not named in heaps if
2279    ///    heap_sampling_intervals is not empty.
2280    /// * The implicit libc.malloc heap if heaps is empty.
2281    ///
2282    /// Set to 1 for perfect accuracy.
2283    /// Otherwise, sample every sample_interval_bytes on average.
2284    ///
2285    /// See
2286    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
2287    /// for more details.
2288    ///
2289    /// BUGS
2290    /// Before Android 12, setting this to 0 would crash the target process.
2291    ///
2292    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
2293    /// this field or with heap_sampling_intervals), otherwise the producer will
2294    /// not start.
2295    #[prost(uint64, optional, tag="1")]
2296    pub sampling_interval_bytes: ::core::option::Option<u64>,
2297    /// If less than the given numbers of bytes are left free in the shared
2298    /// memory buffer, increase sampling interval by a factor of two.
2299    /// Adaptive sampling is disabled when set to 0.
2300    #[prost(uint64, optional, tag="24")]
2301    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
2302    /// Stop doubling the sampling_interval once the sampling interval has reached
2303    /// this value.
2304    #[prost(uint64, optional, tag="25")]
2305    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
2306    /// E.g. surfaceflinger, com.android.phone
2307    /// This input is normalized in the following way: if it contains slashes,
2308    /// everything up to the last slash is discarded. If it contains "@",
2309    /// everything after the first @ is discared.
2310    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
2311    /// This transformation is also applied to the processes' command lines when
2312    /// matching.
2313    #[prost(string, repeated, tag="2")]
2314    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2315    /// For watermark based triggering or local debugging.
2316    #[prost(uint64, repeated, packed="false", tag="4")]
2317    pub pid: ::prost::alloc::vec::Vec<u64>,
2318    /// Only profile target if it was installed by one of the packages given.
2319    /// Special values are:
2320    /// * @system: installed on the system partition
2321    /// * @product: installed on the product partition
2322    /// * @null: sideloaded
2323    /// Supported on Android 12+.
2324    #[prost(string, repeated, tag="26")]
2325    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2326    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
2327    /// "malloc".
2328    ///
2329    /// Introduced in Android 12.
2330    #[prost(string, repeated, tag="20")]
2331    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2332    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
2333    /// combination with all_heaps;
2334    ///
2335    /// Introduced in Android 12.
2336    #[prost(string, repeated, tag="27")]
2337    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2338    #[prost(bool, optional, tag="23")]
2339    pub stream_allocations: ::core::option::Option<bool>,
2340    /// If given, needs to be the same length as heaps and gives the sampling
2341    /// interval for the respective entry in heaps.
2342    ///
2343    /// Otherwise, sampling_interval_bytes is used.
2344    ///
2345    /// It is recommended to set sampling_interval_bytes to a reasonable default
2346    /// value when using this, as a value of 0 for sampling_interval_bytes will
2347    /// crash the target process before Android 12.
2348    ///
2349    /// Introduced in Android 12.
2350    ///
2351    /// All values must be non-zero or the producer will not start.
2352    #[prost(uint64, repeated, packed="false", tag="22")]
2353    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2354    /// Sample all heaps registered by target process. Introduced in Android 12.
2355    #[prost(bool, optional, tag="21")]
2356    pub all_heaps: ::core::option::Option<bool>,
2357    /// Profile all processes eligible for profiling on the system.
2358    /// See
2359    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2360    /// for which processes are eligible.
2361    ///
2362    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2363    /// will crash when trying to launch a new process as it will have an
2364    /// unexpected open socket to heapprofd.
2365    ///
2366    /// heapprofd will likely be overloaded by the amount of data for low
2367    /// sampling intervals.
2368    #[prost(bool, optional, tag="5")]
2369    pub all: ::core::option::Option<bool>,
2370    /// Do not profile processes whose anon RSS + swap < given value.
2371    /// Introduced in Android 11.
2372    #[prost(uint32, optional, tag="15")]
2373    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2374    /// Stop profile if heapprofd memory usage goes beyond the given value.
2375    /// Introduced in Android 11.
2376    #[prost(uint32, optional, tag="16")]
2377    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2378    /// Stop profile if heapprofd CPU time since start of this data-source
2379    /// goes beyond given value.
2380    /// Introduced in Android 11.
2381    #[prost(uint64, optional, tag="17")]
2382    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2383    /// Do not emit function names for mappings starting with this prefix.
2384    /// E.g. /system to not emit symbols for any system libraries.
2385    #[prost(string, repeated, tag="7")]
2386    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2387    /// Dump at a predefined interval.
2388    #[prost(message, optional, tag="6")]
2389    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2390    /// Size of the shared memory buffer between the profiled processes and
2391    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2392    /// MiB.
2393    ///
2394    /// Needs to be:
2395    /// * at least 8192,
2396    /// * a power of two,
2397    /// * a multiple of 4096.
2398    #[prost(uint64, optional, tag="8")]
2399    pub shmem_size_bytes: ::core::option::Option<u64>,
2400    /// When the shmem buffer is full, block the client instead of ending the
2401    /// trace. Use with caution as this will significantly slow down the target
2402    /// process.
2403    #[prost(bool, optional, tag="9")]
2404    pub block_client: ::core::option::Option<bool>,
2405    /// If set, stop the trace session after blocking the client for this
2406    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2407    /// Introduced in Android 11.
2408    #[prost(uint32, optional, tag="14")]
2409    pub block_client_timeout_us: ::core::option::Option<u32>,
2410    /// Do not profile processes from startup, only match already running
2411    /// processes.
2412    ///
2413    /// Can not be set at the same time as no_running.
2414    /// Introduced in Android 11.
2415    #[prost(bool, optional, tag="10")]
2416    pub no_startup: ::core::option::Option<bool>,
2417    /// Do not profile running processes. Only match processes on startup.
2418    ///
2419    /// Can not be set at the same time as no_startup.
2420    /// Introduced in Android 11.
2421    #[prost(bool, optional, tag="11")]
2422    pub no_running: ::core::option::Option<bool>,
2423    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2424    /// at the point in time when the sampled heap usage of the process was at its
2425    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2426    /// self_allocated and self_freed to not be set.
2427    /// Introduced in Android 11.
2428    #[prost(bool, optional, tag="13")]
2429    pub dump_at_max: ::core::option::Option<bool>,
2430    // FEATURE FLAGS. THERE BE DRAGONS.
2431
2432    /// Escape hatch if the session is being torn down because of a forked child
2433    /// that shares memory space, but is not correctly identified as a vforked
2434    /// child.
2435    /// Introduced in Android 11.
2436    #[prost(bool, optional, tag="18")]
2437    pub disable_fork_teardown: ::core::option::Option<bool>,
2438    /// We try to automatically detect when a target applicatation vforks but then
2439    /// does a memory allocation (or free). This auto-detection can be disabled
2440    /// with this.
2441    /// Introduced in Android 11.
2442    #[prost(bool, optional, tag="19")]
2443    pub disable_vfork_detection: ::core::option::Option<bool>,
2444}
2445/// Nested message and enum types in `HeapprofdConfig`.
2446pub mod heapprofd_config {
2447    #[derive(Clone, PartialEq, ::prost::Message)]
2448    pub struct ContinuousDumpConfig {
2449        /// ms to wait before first dump.
2450        #[prost(uint32, optional, tag="5")]
2451        pub dump_phase_ms: ::core::option::Option<u32>,
2452        /// ms to wait between following dumps.
2453        #[prost(uint32, optional, tag="6")]
2454        pub dump_interval_ms: ::core::option::Option<u32>,
2455    }
2456}
2457// End of protos/perfetto/config/profiling/heapprofd_config.proto
2458
2459// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2460
2461/// Configuration for managed app heap graph snapshots.
2462#[derive(Clone, PartialEq, ::prost::Message)]
2463pub struct JavaHprofConfig {
2464    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2465    /// comm string). The semantics of this field were changed since its original
2466    /// introduction.
2467    ///
2468    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2469    /// the profiler will attempt to match it in two possible ways:
2470    /// * if the pattern starts with a '/', then it is matched against the first
2471    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2472    ///    "/bin/echo".
2473    /// * otherwise the pattern is matched against the part of argv0
2474    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2475    ///    For example "echo" would match "/bin/echo".
2476    ///
2477    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2478    /// normalized prior to an exact string comparison. Normalization is as
2479    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2480    /// the string contains forward slashes, trim everything up to and including
2481    /// the last one.
2482    ///
2483    /// Implementation note: in either case, at most 511 characters of cmdline
2484    /// are considered.
2485    #[prost(string, repeated, tag="1")]
2486    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2487    /// For watermark based triggering or local debugging.
2488    #[prost(uint64, repeated, packed="false", tag="2")]
2489    pub pid: ::prost::alloc::vec::Vec<u64>,
2490    /// Only profile target if it was installed by one of the packages given.
2491    /// Special values are:
2492    /// * @system: installed on the system partition
2493    /// * @product: installed on the product partition
2494    /// * @null: sideloaded
2495    /// Supported on Android 12+.
2496    #[prost(string, repeated, tag="7")]
2497    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2498    /// Dump at a predefined interval.
2499    #[prost(message, optional, tag="3")]
2500    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2501    /// Do not profile processes whose anon RSS + swap < given value.
2502    #[prost(uint32, optional, tag="4")]
2503    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2504    /// Include the process' /proc/self/smaps.
2505    /// This only shows maps that:
2506    /// * start with /system
2507    /// * start with /vendor
2508    /// * start with /data/app
2509    /// * contain "extracted in memory from Y", where Y matches any of the above
2510    #[prost(bool, optional, tag="5")]
2511    pub dump_smaps: ::core::option::Option<bool>,
2512    /// Exclude objects of the following types from the profile. This can be
2513    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2514    #[prost(string, repeated, tag="6")]
2515    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2516}
2517/// Nested message and enum types in `JavaHprofConfig`.
2518pub mod java_hprof_config {
2519    /// If dump_interval_ms != 0, the following configuration is used.
2520    #[derive(Clone, PartialEq, ::prost::Message)]
2521    pub struct ContinuousDumpConfig {
2522        /// ms to wait before first continuous dump.
2523        /// A dump is always created at the beginning of the trace.
2524        #[prost(uint32, optional, tag="1")]
2525        pub dump_phase_ms: ::core::option::Option<u32>,
2526        /// ms to wait between following dumps.
2527        #[prost(uint32, optional, tag="2")]
2528        pub dump_interval_ms: ::core::option::Option<u32>,
2529        /// If true, scans all the processes to find `process_cmdline` and filter by
2530        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2531        /// S-.
2532        ///
2533        /// If false, rescans all the processes to find on every dump. Default on
2534        /// Android T+.
2535        #[prost(bool, optional, tag="3")]
2536        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2537    }
2538}
2539// End of protos/perfetto/config/profiling/java_hprof_config.proto
2540
2541// Begin of protos/perfetto/common/perf_events.proto
2542
2543#[derive(Clone, PartialEq, ::prost::Message)]
2544pub struct PerfEvents {
2545}
2546/// Nested message and enum types in `PerfEvents`.
2547pub mod perf_events {
2548    /// The primary event to count. If recording multiple events, this
2549    /// counter is the "group leader".
2550    /// Commented from the perspective of its use in |PerfEventConfig|.
2551    /// Next id: 13
2552    #[derive(Clone, PartialEq, ::prost::Message)]
2553    pub struct Timebase {
2554        /// Optional modifiers for the event. Modelled after the perftool's
2555        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
2556        /// Currently supported: count scoping such as :u, :k, :uk, ...
2557        /// Modifiers can differ between the timebase and followers.
2558        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
2559        pub modifiers: ::prost::alloc::vec::Vec<i32>,
2560        /// If set, samples will be timestamped with the given clock.
2561        /// If unset, the clock is chosen by the implementation.
2562        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2563        /// used for hardware events (due to interrupt safety), for which the
2564        /// recommendation is to use one of the monotonic clocks.
2565        #[prost(enumeration="PerfClock", optional, tag="11")]
2566        pub timestamp_clock: ::core::option::Option<i32>,
2567        /// Optional arbitrary name for the event, to identify it in the parsed
2568        /// trace. Does *not* affect the profiling itself. If unset, the trace
2569        /// parser will choose a suitable name.
2570        #[prost(string, optional, tag="10")]
2571        pub name: ::core::option::Option<::prost::alloc::string::String>,
2572        /// How often to snapshot the counter, along with any follower events and
2573        /// any additional sampled data such as callstacks.
2574        ///
2575        /// This choice also controls how the readings are taken:
2576        /// * With |frequency| or |period|, samples are taken by the kernel
2577        ///    into a ring buffer. Analogous to `perf record`.
2578        /// * With |poll_period_ms|, the userspace periodically snapshots
2579        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2580        /// Prefer the sampling options unless you're recording PMUs whose
2581        /// perf drivers only support the reading mode.
2582        ///
2583        /// If unset, an implementation-defined sampling default is used.
2584        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2585        pub interval: ::core::option::Option<timebase::Interval>,
2586        /// Counting event to use as the timebase.
2587        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2588        /// which is what you usually want.
2589        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2590        pub event: ::core::option::Option<timebase::Event>,
2591    }
2592    /// Nested message and enum types in `Timebase`.
2593    pub mod timebase {
2594        /// How often to snapshot the counter, along with any follower events and
2595        /// any additional sampled data such as callstacks.
2596        ///
2597        /// This choice also controls how the readings are taken:
2598        /// * With |frequency| or |period|, samples are taken by the kernel
2599        ///    into a ring buffer. Analogous to `perf record`.
2600        /// * With |poll_period_ms|, the userspace periodically snapshots
2601        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2602        /// Prefer the sampling options unless you're recording PMUs whose
2603        /// perf drivers only support the reading mode.
2604        ///
2605        /// If unset, an implementation-defined sampling default is used.
2606        #[derive(Clone, PartialEq, ::prost::Oneof)]
2607        pub enum Interval {
2608            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2609            /// same as 1/period.
2610            /// Details: the actual sampling will still be based on a period, but the
2611            /// kernel will dynamically adjust it based on the observed event rate, to
2612            /// approximate this frequency. Works best with steady-rate events like
2613            /// timers.
2614            /// Not guaranteed to be honored as the kernel can throttle the sampling
2615            /// rate if it's too high.
2616            #[prost(uint64, tag="2")]
2617            Frequency(u64),
2618            /// Per-cpu sampling will occur every |period| counts of |event|.
2619            /// Prefer |frequency| by default, as it's easier to oversample with a
2620            /// fixed period.
2621            /// Not guaranteed to be honored as the kernel can throttle the sampling
2622            /// rate if it's too high.
2623            #[prost(uint64, tag="1")]
2624            Period(u64),
2625            /// Per-cpu values are read by the userspace every interval. If using this
2626            /// mode, only follower events are supported. Options such as
2627            /// |PerfEventConfig.CallstackSampling| are incompatible.
2628            /// The period can't be guaranteed to be exact since the readings are taken
2629            /// by userspace.
2630            #[prost(uint32, tag="6")]
2631            PollPeriodMs(u32),
2632        }
2633        /// Counting event to use as the timebase.
2634        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2635        /// which is what you usually want.
2636        #[derive(Clone, PartialEq, ::prost::Oneof)]
2637        pub enum Event {
2638            #[prost(enumeration="super::Counter", tag="4")]
2639            Counter(i32),
2640            #[prost(message, tag="3")]
2641            Tracepoint(super::Tracepoint),
2642            #[prost(message, tag="5")]
2643            RawEvent(super::RawEvent),
2644        }
2645    }
2646    #[derive(Clone, PartialEq, ::prost::Message)]
2647    pub struct Tracepoint {
2648        /// Group and name for the tracepoint, acceptable forms:
2649        /// * "sched/sched_switch"
2650        /// * "sched:sched_switch"
2651        #[prost(string, optional, tag="1")]
2652        pub name: ::core::option::Option<::prost::alloc::string::String>,
2653        /// Optional field-level filter for the tracepoint. Only events matching this
2654        /// filter will be counted (and therefore contribute to the sampling period).
2655        /// Example: "prev_pid >= 42 && next_pid == 0".
2656        /// For full syntax, see kernel documentation on "Event filtering":
2657        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2658        #[prost(string, optional, tag="2")]
2659        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2660    }
2661    /// Syscall-level description of the event, propagated to the perf_event_attr
2662    /// struct. Primarily for local use-cases, since the event availability and
2663    /// encoding is hardware-specific.
2664    #[derive(Clone, PartialEq, ::prost::Message)]
2665    pub struct RawEvent {
2666        #[prost(uint32, optional, tag="1")]
2667        pub r#type: ::core::option::Option<u32>,
2668        #[prost(uint64, optional, tag="2")]
2669        pub config: ::core::option::Option<u64>,
2670        #[prost(uint64, optional, tag="3")]
2671        pub config1: ::core::option::Option<u64>,
2672        #[prost(uint64, optional, tag="4")]
2673        pub config2: ::core::option::Option<u64>,
2674    }
2675    /// Builtin counter names from the uapi header. Commented with their perf tool
2676    /// aliases.
2677    /// TODO(rsavitski): consider generating enums for cache events (should be
2678    /// finite), and generally make this list as extensive as possible. Excluding
2679    /// things like dynamic PMUs since those don't fit into a static enum.
2680    /// Next id: 21
2681    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2682    #[repr(i32)]
2683    pub enum Counter {
2684        UnknownCounter = 0,
2685        /// cpu-clock
2686        SwCpuClock = 1,
2687        /// page-faults, faults
2688        SwPageFaults = 2,
2689        /// task-clock
2690        SwTaskClock = 3,
2691        /// context-switches, cs
2692        SwContextSwitches = 4,
2693        /// cpu-migrations, migrations
2694        SwCpuMigrations = 5,
2695        /// minor-faults
2696        SwPageFaultsMin = 6,
2697        /// major-faults
2698        SwPageFaultsMaj = 7,
2699        /// alignment-faults
2700        SwAlignmentFaults = 8,
2701        /// emulation-faults
2702        SwEmulationFaults = 9,
2703        /// dummy
2704        SwDummy = 20,
2705        /// cpu-cycles, cycles
2706        HwCpuCycles = 10,
2707        /// instructions
2708        HwInstructions = 11,
2709        /// cache-references
2710        HwCacheReferences = 12,
2711        /// cache-misses
2712        HwCacheMisses = 13,
2713        /// branch-instructions, branches
2714        HwBranchInstructions = 14,
2715        /// branch-misses
2716        HwBranchMisses = 15,
2717        /// bus-cycles
2718        HwBusCycles = 16,
2719        /// stalled-cycles-frontend, idle-cycles-frontend
2720        HwStalledCyclesFrontend = 17,
2721        /// stalled-cycles-backend, idle-cycles-backend
2722        HwStalledCyclesBackend = 18,
2723        /// ref-cycles
2724        HwRefCpuCycles = 19,
2725    }
2726    impl Counter {
2727        /// String value of the enum field names used in the ProtoBuf definition.
2728        ///
2729        /// The values are not transformed in any way and thus are considered stable
2730        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2731        pub fn as_str_name(&self) -> &'static str {
2732            match self {
2733                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2734                Counter::SwCpuClock => "SW_CPU_CLOCK",
2735                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2736                Counter::SwTaskClock => "SW_TASK_CLOCK",
2737                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2738                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2739                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2740                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2741                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2742                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2743                Counter::SwDummy => "SW_DUMMY",
2744                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2745                Counter::HwInstructions => "HW_INSTRUCTIONS",
2746                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2747                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2748                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2749                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2750                Counter::HwBusCycles => "HW_BUS_CYCLES",
2751                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2752                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2753                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2754            }
2755        }
2756    }
2757    /// Subset of clocks that is supported by perf timestamping.
2758    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2759    /// would require additions to the trace clock synchronisation logic.
2760    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2761    #[repr(i32)]
2762    pub enum PerfClock {
2763        UnknownPerfClock = 0,
2764        Realtime = 1,
2765        Monotonic = 2,
2766        MonotonicRaw = 3,
2767        Boottime = 4,
2768    }
2769    impl PerfClock {
2770        /// String value of the enum field names used in the ProtoBuf definition.
2771        ///
2772        /// The values are not transformed in any way and thus are considered stable
2773        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2774        pub fn as_str_name(&self) -> &'static str {
2775            match self {
2776                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2777                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2778                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2779                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2780                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2781            }
2782        }
2783    }
2784    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2785    #[repr(i32)]
2786    pub enum EventModifier {
2787        UnknownEventModifier = 0,
2788        /// count only while in userspace
2789        CountUserspace = 1,
2790        /// count only while in kernel
2791        CountKernel = 2,
2792        /// count only while in hypervisor
2793        CountHypervisor = 3,
2794    }
2795    impl EventModifier {
2796        /// String value of the enum field names used in the ProtoBuf definition.
2797        ///
2798        /// The values are not transformed in any way and thus are considered stable
2799        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2800        pub fn as_str_name(&self) -> &'static str {
2801            match self {
2802                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
2803                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
2804                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
2805                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
2806            }
2807        }
2808    }
2809}
2810/// Additional events associated with a leader.
2811/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
2812#[derive(Clone, PartialEq, ::prost::Message)]
2813pub struct FollowerEvent {
2814    /// Modifiers can differ between the timebase and followers.
2815    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
2816    pub modifiers: ::prost::alloc::vec::Vec<i32>,
2817    /// Optional arbitrary name for the event, to identify it in the parsed
2818    /// trace. Does *not* affect the profiling itself. If unset, the trace
2819    /// parser will choose a suitable name.
2820    #[prost(string, optional, tag="4")]
2821    pub name: ::core::option::Option<::prost::alloc::string::String>,
2822    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2823    pub event: ::core::option::Option<follower_event::Event>,
2824}
2825/// Nested message and enum types in `FollowerEvent`.
2826pub mod follower_event {
2827    #[derive(Clone, PartialEq, ::prost::Oneof)]
2828    pub enum Event {
2829        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2830        Counter(i32),
2831        #[prost(message, tag="2")]
2832        Tracepoint(super::perf_events::Tracepoint),
2833        #[prost(message, tag="3")]
2834        RawEvent(super::perf_events::RawEvent),
2835    }
2836}
2837// End of protos/perfetto/common/perf_events.proto
2838
2839// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2840
2841/// Configuration for the traced_perf profiler.
2842///
2843/// Example config for basic cpu profiling:
2844///    perf_event_config {
2845///      timebase {
2846///        frequency: 80
2847///      }
2848///      callstack_sampling {
2849///        scope {
2850///          target_cmdline: "surfaceflinger"
2851///          target_cmdline: "system_server"
2852///        }
2853///        kernel_frames: true
2854///      }
2855///    }
2856///
2857/// Next id: 21
2858#[derive(Clone, PartialEq, ::prost::Message)]
2859pub struct PerfEventConfig {
2860    /// What event to sample on, and how often.
2861    /// Defined in common/perf_events.proto.
2862    #[prost(message, optional, tag="15")]
2863    pub timebase: ::core::option::Option<perf_events::Timebase>,
2864    /// Other events associated with the leader described in the timebase.
2865    #[prost(message, repeated, tag="19")]
2866    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2867    /// If set, the profiler will sample userspace processes' callstacks at the
2868    /// interval specified by the |timebase|.
2869    /// If unset, the profiler will record only the event counts.
2870    #[prost(message, optional, tag="16")]
2871    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2872    /// List of cpu indices for counting. If empty, the default is all cpus.
2873    ///
2874    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2875    /// counter-only traces. A future change will likely reorganise the options,
2876    /// but this field will continue to be supported.
2877    ///
2878    /// Available since: perfetto v50.
2879    #[prost(uint32, repeated, packed="false", tag="20")]
2880    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2881    //
2882    // Kernel <-> userspace ring buffer options:
2883    //
2884
2885    /// How often the per-cpu ring buffers are read by the producer.
2886    /// If unset, an implementation-defined default is used.
2887    #[prost(uint32, optional, tag="8")]
2888    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2889    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2890    /// kernel. If set, must be a power of two.
2891    /// If unset, an implementation-defined default is used.
2892    #[prost(uint32, optional, tag="3")]
2893    pub ring_buffer_pages: ::core::option::Option<u32>,
2894    //
2895    // Daemon's resource usage limits:
2896    //
2897
2898    /// Drop samples if the heap memory held by the samples in the unwinder queue
2899    /// is above the given limit. This counts the memory across all concurrent data
2900    /// sources (not just this one's), and there is no fairness guarantee - the
2901    /// whole quota might be used up by a concurrent source.
2902    #[prost(uint64, optional, tag="17")]
2903    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2904    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2905    /// footprint exceeds this value.
2906    #[prost(uint32, optional, tag="13")]
2907    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2908    //
2909    // Niche options:
2910    //
2911
2912    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2913    /// sampled process. This is primarily for Android, where this lookup is
2914    /// asynchronous. As long as the producer is waiting, the associated samples
2915    /// will be kept enqueued (putting pressure on the capacity of the shared
2916    /// unwinding queue). Once a lookup for a process expires, all associated
2917    /// samples are discarded. However, if the lookup still succeeds after the
2918    /// timeout, future samples will be handled normally.
2919    /// If unset, an implementation-defined default is used.
2920    #[prost(uint32, optional, tag="9")]
2921    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2922    /// Optional period for clearing state cached by the userspace unwinder. This
2923    /// is a heavy operation that is only necessary for traces that target a wide
2924    /// set of processes, and require the memory footprint to be reset
2925    /// periodically. To effectively disable the cache clearing, set to a value
2926    /// greater than your trace duration.
2927    ///
2928    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
2929    ///
2930    /// If zero or unset:
2931    /// * before perfetto v52: no cache clearing.
2932    /// * perfetto v52+: implementation chooses an infrequent default.
2933    #[prost(uint32, optional, tag="10")]
2934    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2935    /// If set, only profile target if it was installed by a package with one of
2936    /// these names. Special values:
2937    /// * "@system": installed on the system partition
2938    /// * "@product": installed on the product partition
2939    /// * "@null": sideloaded
2940    /// Supported on Android 12+.
2941    #[prost(string, repeated, tag="18")]
2942    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2943    //
2944    // Deprecated (superseded by options above):
2945    //
2946    // Do not set *any* of these fields in new configs.
2947    //
2948
2949    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2950    /// We rely on this to detect such configs.
2951    #[prost(bool, optional, tag="1")]
2952    pub all_cpus: ::core::option::Option<bool>,
2953    #[prost(uint32, optional, tag="2")]
2954    pub sampling_frequency: ::core::option::Option<u32>,
2955    #[prost(bool, optional, tag="12")]
2956    pub kernel_frames: ::core::option::Option<bool>,
2957    #[prost(int32, repeated, packed="false", tag="4")]
2958    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2959    #[prost(string, repeated, tag="5")]
2960    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2961    #[prost(int32, repeated, packed="false", tag="6")]
2962    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2963    #[prost(string, repeated, tag="7")]
2964    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2965    #[prost(uint32, optional, tag="11")]
2966    pub additional_cmdline_count: ::core::option::Option<u32>,
2967}
2968/// Nested message and enum types in `PerfEventConfig`.
2969pub mod perf_event_config {
2970    //
2971    // Sub-messages (nested for generated code namespacing).
2972    //
2973
2974    #[derive(Clone, PartialEq, ::prost::Message)]
2975    pub struct CallstackSampling {
2976        /// Defines a set of processes for which samples are retained/skipped. If
2977        /// unset, all samples are kept, but beware that it will be very heavy on the
2978        /// stack unwinder, which might start dropping samples due to overload.
2979        #[prost(message, optional, tag="1")]
2980        pub scope: ::core::option::Option<Scope>,
2981        /// If true, callstacks will include the kernel-space frames. Such frames can
2982        /// be identified by a magical "kernel" string as their mapping name.
2983        /// Requires traced_perf to be running as root, or kptr_restrict to have been
2984        /// manually unrestricted. On Android, the platform should do the right thing
2985        /// on debug builds.
2986        /// This does *not* disclose KASLR, as only the function names are emitted.
2987        #[prost(bool, optional, tag="2")]
2988        pub kernel_frames: ::core::option::Option<bool>,
2989        /// Whether to record and unwind userspace callstacks. If unset, defaults to
2990        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
2991        /// as the most common default (this defaulting is only applicable if the
2992        /// outer CallstackSampling message is explicitly set).
2993        #[prost(enumeration="UnwindMode", optional, tag="3")]
2994        pub user_frames: ::core::option::Option<i32>,
2995    }
2996    #[derive(Clone, PartialEq, ::prost::Message)]
2997    pub struct Scope {
2998        /// Process ID (TGID) allowlist. If this list is not empty, only matching
2999        /// samples will be retained. If multiple allow/deny-lists are
3000        /// specified by the config, then all of them are evaluated for each sampled
3001        /// process.
3002        #[prost(int32, repeated, packed="false", tag="1")]
3003        pub target_pid: ::prost::alloc::vec::Vec<i32>,
3004        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3005        /// comm string). The semantics of this field were changed since its original
3006        /// introduction.
3007        ///
3008        /// On Android T+ (13+), this field can specify a single wildcard (*), and
3009        /// the profiler will attempt to match it in two possible ways:
3010        /// * if the pattern starts with a '/', then it is matched against the first
3011        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3012        ///    "/bin/echo".
3013        /// * otherwise the pattern is matched against the part of argv0
3014        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3015        ///    For example "echo" would match "/bin/echo".
3016        ///
3017        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3018        /// normalized prior to an exact string comparison. Normalization is as
3019        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3020        /// the string contains forward slashes, trim everything up to and including
3021        /// the last one.
3022        ///
3023        /// Implementation note: in either case, at most 511 characters of cmdline
3024        /// are considered.
3025        #[prost(string, repeated, tag="2")]
3026        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3027        /// List of excluded pids.
3028        #[prost(int32, repeated, packed="false", tag="3")]
3029        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
3030        /// List of excluded cmdlines. See description of |target_cmdline| for how
3031        /// this is handled.
3032        #[prost(string, repeated, tag="4")]
3033        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3034        // Niche features for systemwide callstacks:
3035
3036        /// Number of additional command lines to sample. Only those which are
3037        /// neither explicitly included nor excluded will be considered. Processes
3038        /// are accepted on a first come, first served basis.
3039        #[prost(uint32, optional, tag="5")]
3040        pub additional_cmdline_count: ::core::option::Option<u32>,
3041        /// If set to N, all encountered processes will be put into one of the N
3042        /// possible bins, and only one randomly-chosen bin will be selected for
3043        /// unwinding. The binning is simply "pid % N", under the assumption that
3044        /// low-order bits of pids are roughly uniformly distributed. Other explicit
3045        /// inclusions/exclusions in this |Scope| message are still respected.
3046        ///
3047        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
3048        /// values will be queryable in trace processor under the "stats" table as
3049        /// "perf_process_shard_count" and "perf_chosen_process_shard".
3050        ///
3051        /// NB: all data sources in a config that set |process_shard_count| must set
3052        /// it to the same value. The profiler will choose one bin for all those data
3053        /// sources.
3054        #[prost(uint32, optional, tag="6")]
3055        pub process_shard_count: ::core::option::Option<u32>,
3056    }
3057    /// Userspace unwinding mode. A possible future addition is kernel-unwound
3058    /// callchains for frame pointer based systems.
3059    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3060    #[repr(i32)]
3061    pub enum UnwindMode {
3062        UnwindUnknown = 0,
3063        /// Do not unwind userspace:
3064        UnwindSkip = 1,
3065        /// Use libunwindstack (default):
3066        UnwindDwarf = 2,
3067        /// Use userspace frame pointer unwinder:
3068        UnwindFramePointer = 3,
3069    }
3070    impl UnwindMode {
3071        /// String value of the enum field names used in the ProtoBuf definition.
3072        ///
3073        /// The values are not transformed in any way and thus are considered stable
3074        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3075        pub fn as_str_name(&self) -> &'static str {
3076            match self {
3077                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
3078                UnwindMode::UnwindSkip => "UNWIND_SKIP",
3079                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
3080                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
3081            }
3082        }
3083    }
3084}
3085// End of protos/perfetto/config/profiling/perf_event_config.proto
3086
3087// Begin of protos/perfetto/config/protovm/protovm_config.proto
3088
3089#[derive(Clone, PartialEq, ::prost::Message)]
3090pub struct ProtoVmConfig {
3091    #[prost(uint32, optional, tag="1")]
3092    pub memory_limit_kb: ::core::option::Option<u32>,
3093}
3094// End of protos/perfetto/config/protovm/protovm_config.proto
3095
3096// Begin of protos/perfetto/config/qnx/qnx_config.proto
3097
3098/// QnxConfig is used with trace_qnx_probes build from
3099/// <https://github.com/qnx-ports/perfetto>
3100#[derive(Clone, PartialEq, ::prost::Message)]
3101pub struct QnxConfig {
3102    /// The number of buffers that tracelog will init for the QNX trace.
3103    #[prost(uint32, optional, tag="1")]
3104    pub qnx_kernel_buffers: ::core::option::Option<u32>,
3105    /// The number of kernel buffers that tracelog will init for the QNX trace.
3106    #[prost(uint32, optional, tag="2")]
3107    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
3108    /// Flag indicating whether the QNX kernel tracing should produce wide
3109    /// events which contain additional data or fast events which are most
3110    /// concise. In fast mode we lose the priority information
3111    #[prost(bool, optional, tag="3")]
3112    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
3113    /// The number of pages initialized by default the parser's page cache.
3114    #[prost(uint32, optional, tag="4")]
3115    pub qnx_cache_pages: ::core::option::Option<u32>,
3116    /// The max pages the page cache should allocate (must be at least as big)
3117    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
3118    /// unbounded. The cache will prefer to re-use existing pages so growth will
3119    /// only happen when needed (when parser is not keeping up).
3120    #[prost(int32, optional, tag="5")]
3121    pub qnx_cache_max_pages: ::core::option::Option<i32>,
3122    /// The initial size of the the buffer used to hold the trace header values
3123    /// this dynamic buffer will grow as needed but reallocs can be avoided by
3124    /// selecting an initial size large enough to hold all the initial header
3125    /// data.
3126    #[prost(uint32, optional, tag="6")]
3127    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
3128}
3129// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
3130
3131/// This file is named 'statsd_tracing_config.proto' rather than
3132/// 'statsd_config.proto' (which would be more consistent with the other
3133/// config protos) so it doesn't show up and confuse folks looking for
3134/// the existing statsd_config.proto for configuring statsd itself.
3135/// Same for the config proto itself.
3136#[derive(Clone, PartialEq, ::prost::Message)]
3137pub struct StatsdTracingConfig {
3138    /// This is for the common case of the atom id being known in the enum AtomId.
3139    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3140    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
3141    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
3142    /// (e.g. non-upstream atoms that don't exist in AOSP).
3143    #[prost(int32, repeated, packed="false", tag="2")]
3144    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
3145    #[prost(message, repeated, tag="3")]
3146    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
3147}
3148#[derive(Clone, PartialEq, ::prost::Message)]
3149pub struct StatsdPullAtomConfig {
3150    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3151    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3152    #[prost(int32, repeated, packed="false", tag="2")]
3153    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3154    #[prost(int32, optional, tag="3")]
3155    pub pull_frequency_ms: ::core::option::Option<i32>,
3156    #[prost(string, repeated, tag="4")]
3157    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3158}
3159// End of protos/perfetto/common/sys_stats_counters.proto
3160
3161// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
3162
3163/// This file defines the configuration for the Linux /proc poller data source,
3164/// which injects counters in the trace.
3165/// Counters that are needed in the trace must be explicitly listed in the
3166/// *_counters fields. This is to avoid spamming the trace with all counters
3167/// at all times.
3168/// The sampling rate is configurable. All polling rates (*_period_ms) need
3169/// to be integer multiples of each other.
3170/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
3171/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
3172#[derive(Clone, PartialEq, ::prost::Message)]
3173pub struct SysStatsConfig {
3174    /// Polls /proc/meminfo every X ms, if non-zero.
3175    /// This is required to be > 10ms to avoid excessive CPU usage.
3176    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
3177    #[prost(uint32, optional, tag="1")]
3178    pub meminfo_period_ms: ::core::option::Option<u32>,
3179    /// If empty all known counters are reported. Otherwise, only the counters
3180    /// specified below are reported.
3181    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
3182    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
3183    /// Polls /proc/vmstat every X ms, if non-zero.
3184    /// This is required to be > 10ms to avoid excessive CPU usage.
3185    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
3186    #[prost(uint32, optional, tag="3")]
3187    pub vmstat_period_ms: ::core::option::Option<u32>,
3188    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
3189    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
3190    /// Pols /proc/stat every X ms, if non-zero.
3191    /// This is required to be > 10ms to avoid excessive CPU usage.
3192    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
3193    #[prost(uint32, optional, tag="5")]
3194    pub stat_period_ms: ::core::option::Option<u32>,
3195    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
3196    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
3197    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
3198    /// This is required to be > 10ms to avoid excessive CPU usage.
3199    /// This option can be used to record unchanging values.
3200    /// Updates from frequency changes can come from ftrace/set_clock_rate.
3201    #[prost(uint32, optional, tag="7")]
3202    pub devfreq_period_ms: ::core::option::Option<u32>,
3203    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
3204    /// This is required to be > 10ms to avoid excessive CPU usage.
3205    #[prost(uint32, optional, tag="8")]
3206    pub cpufreq_period_ms: ::core::option::Option<u32>,
3207    /// Polls /proc/buddyinfo every X ms, if non-zero.
3208    /// This is required to be > 10ms to avoid excessive CPU usage.
3209    #[prost(uint32, optional, tag="9")]
3210    pub buddyinfo_period_ms: ::core::option::Option<u32>,
3211    /// Polls /proc/diskstats every X ms, if non-zero.
3212    /// This is required to be > 10ms to avoid excessive CPU usage.
3213    #[prost(uint32, optional, tag="10")]
3214    pub diskstat_period_ms: ::core::option::Option<u32>,
3215    /// Polls /proc/pressure/* every X ms, if non-zero.
3216    /// This is required to be > 10ms to avoid excessive CPU usage.
3217    #[prost(uint32, optional, tag="11")]
3218    pub psi_period_ms: ::core::option::Option<u32>,
3219    /// Polls /sys/class/thermal/* every X ms, if non-zero.
3220    /// This is required to be > 10ms to avoid excessive CPU usage.
3221    #[prost(uint32, optional, tag="12")]
3222    pub thermal_period_ms: ::core::option::Option<u32>,
3223    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
3224    /// This is required to be > 10ms to avoid excessive CPU usage.
3225    #[prost(uint32, optional, tag="13")]
3226    pub cpuidle_period_ms: ::core::option::Option<u32>,
3227    /// Polls device-specific GPU frequency info every X ms, if non-zero.
3228    /// This is required to be > 10ms to avoid excessive CPU usage.
3229    #[prost(uint32, optional, tag="14")]
3230    pub gpufreq_period_ms: ::core::option::Option<u32>,
3231}
3232/// Nested message and enum types in `SysStatsConfig`.
3233pub mod sys_stats_config {
3234    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3235    #[repr(i32)]
3236    pub enum StatCounters {
3237        StatUnspecified = 0,
3238        StatCpuTimes = 1,
3239        StatIrqCounts = 2,
3240        StatSoftirqCounts = 3,
3241        StatForkCount = 4,
3242    }
3243    impl StatCounters {
3244        /// String value of the enum field names used in the ProtoBuf definition.
3245        ///
3246        /// The values are not transformed in any way and thus are considered stable
3247        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3248        pub fn as_str_name(&self) -> &'static str {
3249            match self {
3250                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
3251                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
3252                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
3253                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
3254                StatCounters::StatForkCount => "STAT_FORK_COUNT",
3255            }
3256        }
3257    }
3258}
3259// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
3260
3261// Begin of protos/perfetto/config/system_info/system_info_config.proto
3262
3263/// This data-source does a one-off recording of system information when
3264/// the trace starts.
3265/// Currently this includes:
3266/// - Values of
3267/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
3268/// datasource has no configuration options at present.
3269#[derive(Clone, PartialEq, ::prost::Message)]
3270pub struct SystemInfoConfig {
3271}
3272// End of protos/perfetto/config/system_info/system_info_config.proto
3273
3274// Begin of protos/perfetto/config/test_config.proto
3275
3276/// The configuration for a fake producer used in tests.
3277#[derive(Clone, PartialEq, ::prost::Message)]
3278pub struct TestConfig {
3279    /// The number of messages the fake producer should send.
3280    #[prost(uint32, optional, tag="1")]
3281    pub message_count: ::core::option::Option<u32>,
3282    /// The maximum number of messages which should be sent each second.
3283    /// The actual obserced speed may be lower if the producer is unable to
3284    /// work fast enough.
3285    /// If this is zero or unset, the producer will send as fast as possible.
3286    #[prost(uint32, optional, tag="2")]
3287    pub max_messages_per_second: ::core::option::Option<u32>,
3288    /// The seed value for a simple multiplicative congruential pseudo-random
3289    /// number sequence.
3290    #[prost(uint32, optional, tag="3")]
3291    pub seed: ::core::option::Option<u32>,
3292    /// The size of each message in bytes. Should be greater than or equal 5 to
3293    /// account for the number of bytes needed to encode the random number and a
3294    /// null byte for the string.
3295    #[prost(uint32, optional, tag="4")]
3296    pub message_size: ::core::option::Option<u32>,
3297    /// Whether the producer should send a event batch when the data source is
3298    /// is initially registered.
3299    #[prost(bool, optional, tag="5")]
3300    pub send_batch_on_register: ::core::option::Option<bool>,
3301    #[prost(message, optional, tag="6")]
3302    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
3303}
3304/// Nested message and enum types in `TestConfig`.
3305pub mod test_config {
3306    #[derive(Clone, PartialEq, ::prost::Message)]
3307    pub struct DummyFields {
3308        #[prost(uint32, optional, tag="1")]
3309        pub field_uint32: ::core::option::Option<u32>,
3310        #[prost(int32, optional, tag="2")]
3311        pub field_int32: ::core::option::Option<i32>,
3312        #[prost(uint64, optional, tag="3")]
3313        pub field_uint64: ::core::option::Option<u64>,
3314        #[prost(int64, optional, tag="4")]
3315        pub field_int64: ::core::option::Option<i64>,
3316        #[prost(fixed64, optional, tag="5")]
3317        pub field_fixed64: ::core::option::Option<u64>,
3318        #[prost(sfixed64, optional, tag="6")]
3319        pub field_sfixed64: ::core::option::Option<i64>,
3320        #[prost(fixed32, optional, tag="7")]
3321        pub field_fixed32: ::core::option::Option<u32>,
3322        #[prost(sfixed32, optional, tag="8")]
3323        pub field_sfixed32: ::core::option::Option<i32>,
3324        #[prost(double, optional, tag="9")]
3325        pub field_double: ::core::option::Option<f64>,
3326        #[prost(float, optional, tag="10")]
3327        pub field_float: ::core::option::Option<f32>,
3328        #[prost(sint64, optional, tag="11")]
3329        pub field_sint64: ::core::option::Option<i64>,
3330        #[prost(sint32, optional, tag="12")]
3331        pub field_sint32: ::core::option::Option<i32>,
3332        #[prost(string, optional, tag="13")]
3333        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
3334        #[prost(bytes="vec", optional, tag="14")]
3335        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3336    }
3337}
3338// End of protos/perfetto/config/test_config.proto
3339
3340// Begin of protos/perfetto/config/track_event/track_event_config.proto
3341
3342/// The following fields define the set of enabled trace categories. Each list
3343/// item is a glob.
3344///
3345/// To determine if category is enabled, it is checked against the filters in
3346/// the following order:
3347///
3348///    1. Exact matches in enabled categories.
3349///    2. Exact matches in enabled tags.
3350///    3. Exact matches in disabled categories.
3351///    4. Exact matches in disabled tags.
3352///    5. Pattern matches in enabled categories.
3353///    6. Pattern matches in enabled tags.
3354///    7. Pattern matches in disabled categories.
3355///    8. Pattern matches in disabled tags.
3356///
3357/// If none of the steps produced a match:
3358///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
3359///   default.
3360///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
3361///
3362/// Examples:
3363///
3364///   - To enable all non-slow/debug categories:
3365///
3366///        enabled_categories: "*"
3367///
3368///   - To enable specific categories:
3369///
3370///        disabled_categories: "*"
3371///        enabled_categories: "my_category"
3372///        enabled_categories: "my_category2"
3373///
3374///   - To enable only categories with a specific tag:
3375///
3376///        disabled_tags: "*"
3377///        enabled_tags: "my_tag"
3378///
3379#[derive(Clone, PartialEq, ::prost::Message)]
3380pub struct TrackEventConfig {
3381    /// Default: []
3382    #[prost(string, repeated, tag="1")]
3383    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3384    /// Default: []
3385    #[prost(string, repeated, tag="2")]
3386    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3387    /// Default: ["slow", "debug"]
3388    #[prost(string, repeated, tag="3")]
3389    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3390    /// Default: []
3391    #[prost(string, repeated, tag="4")]
3392    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3393    /// Default: false (i.e. enabled by default)
3394    #[prost(bool, optional, tag="5")]
3395    pub disable_incremental_timestamps: ::core::option::Option<bool>,
3396    /// Allows to specify a custom unit different than the default (ns).
3397    /// Also affects thread timestamps if enable_thread_time_sampling = true.
3398    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
3399    /// 3000 ns = 3 us.
3400    /// Default: 1 (if unset, it should be read as 1).
3401    #[prost(uint64, optional, tag="6")]
3402    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
3403    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
3404    /// When true, any debug annotations provided as arguments to the
3405    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
3406    /// still be emitted even if set to true.
3407    #[prost(bool, optional, tag="7")]
3408    pub filter_debug_annotations: ::core::option::Option<bool>,
3409    /// Default: false (i.e. disabled)
3410    /// When true, the SDK samples and emits the current thread time counter value
3411    /// for each event on the current thread's track. This value represents the
3412    /// total CPU time consumed by that thread since its creation.
3413    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
3414    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
3415    #[prost(bool, optional, tag="8")]
3416    pub enable_thread_time_sampling: ::core::option::Option<bool>,
3417    /// When enable_thread_time_sampling is true, and this is specified, thread
3418    /// time is sampled only if the elapsed wall time >
3419    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
3420    /// Effectively, this means thread time will have a leeway of
3421    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
3422    #[prost(uint64, optional, tag="10")]
3423    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
3424    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
3425    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
3426    /// out.
3427    #[prost(bool, optional, tag="9")]
3428    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3429}
3430// End of protos/perfetto/config/track_event/track_event_config.proto
3431
3432// Begin of protos/perfetto/config/data_source_config.proto
3433
3434/// The configuration that is passed to each data source when starting tracing.
3435/// Next id: 140
3436#[derive(Clone, PartialEq, ::prost::Message)]
3437pub struct DataSourceConfig {
3438    /// Data source unique name, e.g., "linux.ftrace". This must match
3439    /// the name passed by the data source when it registers (see
3440    /// RegisterDataSource()).
3441    #[prost(string, optional, tag="1")]
3442    pub name: ::core::option::Option<::prost::alloc::string::String>,
3443    /// The index of the logging buffer where TracePacket(s) will be stored.
3444    /// This field is quite subtle as it has a double semantic:
3445    /// 1) When the config is passed, this field is a 0-based index relative to the
3446    ///     buffer array in the TraceConfig and defines the mapping between data
3447    ///     sources and config. From v54 this is optional because the user can
3448    ///     instead use target_buffer_name.
3449    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
3450    ///     producer, it overwrites this field with the global buffer index (which
3451    ///     depends on other tracing sessions active). This tells the producer which
3452    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
3453    ///     service always sets the resolved global id, even when using
3454    ///     `target_buffer_name`.
3455    /// In hindsight we should have used two different fields given even in v0 they
3456    /// had a different semantic. But now it's too late as this would be a major
3457    /// protocol breaking change.
3458    #[prost(uint32, optional, tag="2")]
3459    pub target_buffer: ::core::option::Option<u32>,
3460    /// Alternative to |target_buffer|. References a buffer by name (as specified
3461    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
3462    /// readable and less error-prone than using buffer indices.
3463    /// If both |target_buffer| and |target_buffer_name| are specified, they must
3464    /// refer to the same buffer, otherwise the service will reject the config.
3465    /// Using both fields allows configs to work with both old and new versions
3466    /// of the tracing service. Introduced in v54.
3467    #[prost(string, optional, tag="11")]
3468    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
3469    /// Set by the service to indicate the duration of the trace.
3470    /// DO NOT SET in consumer as this will be overridden by the service.
3471    #[prost(uint32, optional, tag="3")]
3472    pub trace_duration_ms: ::core::option::Option<u32>,
3473    /// If true, |trace_duration_ms| should count also time in suspend. This
3474    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3475    #[prost(bool, optional, tag="122")]
3476    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3477    /// Set by the service to indicate how long it waits after StopDataSource.
3478    /// DO NOT SET in consumer as this will be overridden by the service.
3479    #[prost(uint32, optional, tag="7")]
3480    pub stop_timeout_ms: ::core::option::Option<u32>,
3481    /// Set by the service to indicate whether this tracing session has extra
3482    /// guardrails.
3483    /// DO NOT SET in consumer as this will be overridden by the service.
3484    #[prost(bool, optional, tag="6")]
3485    pub enable_extra_guardrails: ::core::option::Option<bool>,
3486    /// Set by the service to indicate which user initiated this trace.
3487    /// DO NOT SET in consumer as this will be overridden by the service.
3488    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3489    pub session_initiator: ::core::option::Option<i32>,
3490    /// Set by the service to indicate which tracing session the data source
3491    /// belongs to. The intended use case for this is checking if two data sources,
3492    /// one of which produces metadata for the other one, belong to the same trace
3493    /// session and hence should be linked together.
3494    /// This field was introduced in Aug 2018 after Android P.
3495    /// DO NOT SET in consumer as this will be overridden by the service.
3496    #[prost(uint64, optional, tag="4")]
3497    pub tracing_session_id: ::core::option::Option<u64>,
3498    /// How to behave when the producer runs out of space in the shared memory
3499    /// buffer. This is only honored by some data sources (in the SDK, the data
3500    /// sources registered with a configurable buffer exhausted policy).
3501    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3502    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3503    #[prost(message, optional, tag="10")]
3504    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3505    // If specified, the data source requires the tracing service to process
3506    // overwritten packets (patches) using a ProtoVM instance with this config.
3507    // The ProtoVM program is specified at data source registration time through
3508    // the descriptor.
3509
3510    /// TODO(primiano): today when we enable a protovm_config, we actually accept
3511    /// that if N producers advertise M different versions of the same program we
3512    /// will create M instances of that program.
3513    /// To overcome this, we could move the program to the TraceConfig. But doing
3514    /// so would bloat the trace config size too big and create problems to statsd.
3515    /// Once the config store (b/482305876) exists we should move protovm programs
3516    /// onto that.
3517    #[prost(message, optional, tag="12")]
3518    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
3519    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3520    // data-sources and needs to be processed by the traced daemon.
3521
3522    // All data source config fields must be marked as \[lazy=true\]. This prevents
3523    // the proto-to-cpp generator from recursing into those when generating the
3524    // cpp classes and polluting tracing/core with data-source-specific classes.
3525    // Instead they are treated as opaque strings containing raw proto bytes.
3526
3527    /// Data source name: linux.ftrace
3528    #[prost(message, optional, tag="100")]
3529    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3530    /// Data source name: linux.inode_file_map
3531    #[prost(message, optional, tag="102")]
3532    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3533    /// Data source name: linux.process_stats
3534    #[prost(message, optional, tag="103")]
3535    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3536    /// Data source name: linux.sys_stats
3537    #[prost(message, optional, tag="104")]
3538    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3539    /// Data source name: android.heapprofd
3540    /// Introduced in Android 10.
3541    #[prost(message, optional, tag="105")]
3542    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3543    /// Data source name: android.java_hprof
3544    /// Introduced in Android 11.
3545    #[prost(message, optional, tag="110")]
3546    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3547    /// Data source name: android.power
3548    #[prost(message, optional, tag="106")]
3549    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3550    /// Data source name: android.log
3551    #[prost(message, optional, tag="107")]
3552    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3553    /// Data source name: gpu.counters
3554    #[prost(message, optional, tag="108")]
3555    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3556    /// Data source name: android.game_interventions
3557    #[prost(message, optional, tag="116")]
3558    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3559    /// Data source name: android.packages_list
3560    #[prost(message, optional, tag="109")]
3561    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3562    /// Data source name: linux.perf
3563    #[prost(message, optional, tag="111")]
3564    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3565    /// Data source name: vulkan.memory_tracker
3566    #[prost(message, optional, tag="112")]
3567    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3568    /// Data source name: track_event
3569    #[prost(message, optional, tag="113")]
3570    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3571    /// Data source name: android.polled_state
3572    #[prost(message, optional, tag="114")]
3573    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3574    /// Data source name: android.system_property
3575    #[prost(message, optional, tag="118")]
3576    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3577    /// Data source name: android.statsd
3578    #[prost(message, optional, tag="117")]
3579    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3580    /// Data source name: linux.system_info
3581    #[prost(message, optional, tag="119")]
3582    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3583    /// Data source name: linux.frozen_ftrace
3584    #[prost(message, optional, tag="136")]
3585    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3586    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3587    /// avoid proto serialization and de-serialization there because that would
3588    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3589    /// C++ class for it so it can pass around plain C++ objets.
3590    #[prost(message, optional, tag="101")]
3591    pub chrome_config: ::core::option::Option<ChromeConfig>,
3592    /// Data source name: code.v8.dev
3593    #[prost(message, optional, tag="127")]
3594    pub v8_config: ::core::option::Option<V8Config>,
3595    /// If an interceptor is specified here, packets for this data source will be
3596    /// rerouted to the interceptor instead of the main trace buffer. This can be
3597    /// used, for example, to write trace data into ETW or for logging trace points
3598    /// to the console.
3599    ///
3600    /// Note that interceptors are only supported by data sources registered
3601    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3602    /// traced_probes) may not support interception.
3603    #[prost(message, optional, tag="115")]
3604    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3605    /// Data source name: android.network_packets.
3606    /// Introduced in Android 14 (U).
3607    #[prost(message, optional, tag="120")]
3608    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3609    /// Data source name: android.surfaceflinger.layers
3610    #[prost(message, optional, tag="121")]
3611    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3612    /// Data source name: android.surfaceflinger.transactions
3613    #[prost(message, optional, tag="123")]
3614    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3615    /// Data source name: android.sdk_sysprop_guard
3616    /// Introduced in Android 14 (U) QPR1.
3617    #[prost(message, optional, tag="124")]
3618    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3619    /// Data source name: windows.etw
3620    #[prost(message, optional, tag="125")]
3621    pub etw_config: ::core::option::Option<EtwConfig>,
3622    /// Data source name: android.protolog
3623    #[prost(message, optional, tag="126")]
3624    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3625    /// Data source name: android.input.inputevent
3626    #[prost(message, optional, tag="128")]
3627    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3628    /// Data source name: android.pixel.modem
3629    #[prost(message, optional, tag="129")]
3630    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3631    /// Data source name: android.windowmanager
3632    #[prost(message, optional, tag="130")]
3633    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3634    /// Data source name: org.chromium.system_metrics
3635    #[prost(message, optional, tag="131")]
3636    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3637    /// Data source name: android.kernel_wakelocks
3638    #[prost(message, optional, tag="132")]
3639    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3640    /// Data source name: gpu.renderstages
3641    #[prost(message, optional, tag="133")]
3642    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3643    /// Data source name: org.chromium.histogram_samples
3644    #[prost(message, optional, tag="134")]
3645    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3646    /// Data source name: android.app_wakelocks
3647    #[prost(message, optional, tag="135")]
3648    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3649    /// Data source name: android.cpu_per_uid
3650    #[prost(message, optional, tag="137")]
3651    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3652    /// Data source name: android.user_list
3653    #[prost(message, optional, tag="138")]
3654    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
3655    /// Data source name: android.inputmethod
3656    #[prost(message, optional, tag="139")]
3657    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
3658    /// Data source name: qnx.kernel
3659    #[prost(message, optional, tag="150")]
3660    pub qnx_config: ::core::option::Option<QnxConfig>,
3661    /// This is a fallback mechanism to send a free-form text config to the
3662    /// producer. In theory this should never be needed. All the code that
3663    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3664    /// the trace config proto and propagate unknown fields. However, if anything
3665    /// in the pipeline (client or backend) ends up breaking this forward compat
3666    /// plan, this field will become the escape hatch to allow future data sources
3667    /// to get some meaningful configuration.
3668    #[prost(string, optional, tag="1000")]
3669    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3670    /// This field is only used for testing.
3671    #[prost(message, optional, tag="1001")]
3672    pub for_testing: ::core::option::Option<TestConfig>,
3673}
3674/// Nested message and enum types in `DataSourceConfig`.
3675pub mod data_source_config {
3676    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3677    #[repr(i32)]
3678    pub enum SessionInitiator {
3679        Unspecified = 0,
3680        /// This trace was initiated from a trusted system app has DUMP and
3681        /// USAGE_STATS permission. This system app is expected to not expose the
3682        /// trace to the user of the device.
3683        /// This is determined by checking the UID initiating the trace.
3684        TrustedSystem = 1,
3685    }
3686    impl SessionInitiator {
3687        /// String value of the enum field names used in the ProtoBuf definition.
3688        ///
3689        /// The values are not transformed in any way and thus are considered stable
3690        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3691        pub fn as_str_name(&self) -> &'static str {
3692            match self {
3693                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3694                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3695            }
3696        }
3697    }
3698    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3699    #[repr(i32)]
3700    pub enum BufferExhaustedPolicy {
3701        /// The data source will use its default buffer exhausted policy, specified
3702        /// by the code when the data source is registered.
3703        BufferExhaustedUnspecified = 0,
3704        /// The data source will drop packets when there's no space in the shared
3705        /// memory buffer.
3706        BufferExhaustedDrop = 1,
3707        /// The data source will wait when there's no space in the shared memory
3708        /// buffer. If there's still not space, after a few seconds, the whole
3709        /// producer process will be aborted.
3710        BufferExhaustedStallThenAbort = 2,
3711        /// The data source will wait when there's no space in the shared memory
3712        /// buffer.  If there's still not space, after a few seconds, the data source
3713        /// will drop packets.
3714        BufferExhaustedStallThenDrop = 3,
3715    }
3716    impl BufferExhaustedPolicy {
3717        /// String value of the enum field names used in the ProtoBuf definition.
3718        ///
3719        /// The values are not transformed in any way and thus are considered stable
3720        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3721        pub fn as_str_name(&self) -> &'static str {
3722            match self {
3723                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3724                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3725                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3726                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3727            }
3728        }
3729    }
3730}
3731// End of protos/perfetto/config/data_source_config.proto
3732
3733// Begin of protos/perfetto/config/trace_config.proto
3734
3735/// The overall config that is used when starting a new tracing session through
3736/// ProducerPort::StartTracing().
3737/// It contains the general config for the logging buffer(s) and the configs for
3738/// all the data source being enabled.
3739///
3740/// Next id: 47.
3741#[derive(Clone, PartialEq, ::prost::Message)]
3742pub struct TraceConfig {
3743    #[prost(message, repeated, tag="1")]
3744    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3745    #[prost(message, repeated, tag="2")]
3746    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3747    #[prost(message, optional, tag="20")]
3748    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3749    /// If specified, the trace will be stopped |duration_ms| after starting.
3750    /// This does *not* count the time the system is suspended, so we will run
3751    /// for duration_ms of system activity, not wall time.
3752    ///
3753    /// However in case of traces with triggers, see
3754    /// TriggerConfig.trigger_timeout_ms instead.
3755    #[prost(uint32, optional, tag="3")]
3756    pub duration_ms: ::core::option::Option<u32>,
3757    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3758    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3759    /// Linux/Android, no-op on other platforms. This is used when dealing with
3760    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3761    /// wall-time, making them more likely to hit device reboots (and hence loss).
3762    /// This option also changes consistently the semantic of
3763    /// TriggerConfig.stop_delay_ms.
3764    #[prost(bool, optional, tag="36")]
3765    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3766    /// This is set when --dropbox is passed to the Perfetto command line client
3767    /// and enables guardrails that limit resource usage for traces requested
3768    /// by statsd.
3769    #[prost(bool, optional, tag="4")]
3770    pub enable_extra_guardrails: ::core::option::Option<bool>,
3771    /// Reject producers that are not running under the same UID as the tracing
3772    /// service.
3773    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3774    pub lockdown_mode: ::core::option::Option<i32>,
3775    #[prost(message, repeated, tag="6")]
3776    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3777    /// Statsd-specific metadata.
3778    #[prost(message, optional, tag="7")]
3779    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3780    /// When true && |output_path| is empty, the EnableTracing() request must
3781    /// provide a file descriptor. The service will then periodically read packets
3782    /// out of the trace buffer and store it into the passed file.
3783    /// If |output_path| is not empty no fd should be passed, the service
3784    /// will create a new file and write into that (see comment below).
3785    #[prost(bool, optional, tag="8")]
3786    pub write_into_file: ::core::option::Option<bool>,
3787    /// This must point to a non-existing file. If the file exists the service
3788    /// will NOT overwrite and will fail instead as a security precaution.
3789    /// On Android, when this is used with the system traced, the path must be
3790    /// within /data/misc/perfetto-traces/ or the trace will fail.
3791    /// This option has been introduced in Android R. Before R write_into_file
3792    /// can be used only with the "pass a file descriptor over IPC" mode.
3793    #[prost(string, optional, tag="29")]
3794    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3795    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3796    /// enforced (i.e. smaller values are ignored).
3797    #[prost(uint32, optional, tag="9")]
3798    pub file_write_period_ms: ::core::option::Option<u32>,
3799    /// Optional. When non zero the periodic write stops once at most X bytes
3800    /// have been written into the file. Tracing is disabled when this limit is
3801    /// reached, even if |duration_ms| has not been reached yet.
3802    #[prost(uint64, optional, tag="10")]
3803    pub max_file_size_bytes: ::core::option::Option<u64>,
3804    #[prost(message, optional, tag="11")]
3805    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3806    /// When true, data sources are not started until an explicit call to
3807    /// StartTracing() on the consumer port. This is to support early
3808    /// initialization and fast trace triggering. This can be used only when the
3809    /// Consumer explicitly triggers the StartTracing() method.
3810    /// This should not be used in a remote trace config via statsd, doing so will
3811    /// result in a hung trace session.
3812    #[prost(bool, optional, tag="12")]
3813    pub deferred_start: ::core::option::Option<bool>,
3814    /// When set, it periodically issues a Flush() to all data source, forcing them
3815    /// to commit their data into the tracing service. This can be used for
3816    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3817    /// events in the trace in windows of X ms.
3818    ///
3819    /// Warning: Perfetto automatically handles periodic flushing so in most
3820    /// scenarios setting this field is not needed. High frequency flushing can
3821    /// significantly impact performance.
3822    #[prost(uint32, optional, tag="13")]
3823    pub flush_period_ms: ::core::option::Option<u32>,
3824    /// Wait for this long for producers to acknowledge flush requests.
3825    /// Default 5s.
3826    #[prost(uint32, optional, tag="14")]
3827    pub flush_timeout_ms: ::core::option::Option<u32>,
3828    /// Wait for this long for producers to acknowledge stop requests.
3829    /// Default 5s.
3830    #[prost(uint32, optional, tag="23")]
3831    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3832    /// Android-only. If set, sends an intent to the Traceur system app when the
3833    /// trace ends to notify it about the trace readiness.
3834    #[prost(bool, optional, tag="16")]
3835    pub notify_traceur: ::core::option::Option<bool>,
3836    /// This field was introduced in Android S.
3837    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3838    /// for being attached to a bugreport. This field effectively acts as a z-index
3839    /// for bugreports. When Android's dumpstate runs perfetto
3840    /// --save-for-bugreport, traced will pick the tracing session with the highest
3841    /// score (score <= 0 is ignored) and:
3842    /// On Android S, T:  will steal its contents, save the trace into
3843    ///      a known path and stop prematurely.
3844    /// On Android U+: will create a read-only snapshot and save that into a known
3845    ///      path, without stoppin the original tracing session.
3846    /// When this field is set the tracing session becomes eligible to be cloned
3847    /// by other UIDs.
3848    #[prost(int32, optional, tag="30")]
3849    pub bugreport_score: ::core::option::Option<i32>,
3850    /// When set, defines name of the file that will be saved under
3851    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3852    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3853    /// starting from the highest `bugreport_score`.
3854    /// Introduced in v42 / Android V.
3855    #[prost(string, optional, tag="38")]
3856    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3857    #[prost(message, optional, tag="17")]
3858    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3859    /// When this is non-empty the perfetto command line tool will ignore the rest
3860    /// of this TraceConfig and instead connect to the perfetto service as a
3861    /// producer and send these triggers, potentially stopping or starting traces
3862    /// that were previous configured to use a TriggerConfig.
3863    #[prost(string, repeated, tag="18")]
3864    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3865    #[prost(message, optional, tag="21")]
3866    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3867    /// No longer needed as we unconditionally allow tracing on user builds.
3868    #[deprecated]
3869    #[prost(bool, optional, tag="19")]
3870    pub allow_user_build_tracing: ::core::option::Option<bool>,
3871    /// If set the tracing service will ensure there is at most one tracing session
3872    /// with this key.
3873    #[prost(string, optional, tag="22")]
3874    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3875    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3876    pub compression_type: ::core::option::Option<i32>,
3877    #[prost(message, optional, tag="25")]
3878    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3879    /// Android-only. Not for general use. If specified, sets the logging to statsd
3880    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3881    /// this to enabled (if not explicitly set in the config) when specifying
3882    /// --upload.
3883    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3884    pub statsd_logging: ::core::option::Option<i32>,
3885    /// An identifier clients can use to tie this trace to other logging.
3886    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3887    /// Trace UUID. If this field is set, the tracing service will respect the
3888    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3889    /// gap-less snapshotting is not used.
3890    #[deprecated]
3891    #[prost(int64, optional, tag="27")]
3892    pub trace_uuid_msb: ::core::option::Option<i64>,
3893    #[deprecated]
3894    #[prost(int64, optional, tag="28")]
3895    pub trace_uuid_lsb: ::core::option::Option<i64>,
3896    #[prost(message, optional, tag="33")]
3897    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3898    #[prost(message, optional, tag="34")]
3899    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3900    #[prost(message, optional, tag="35")]
3901    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3902    #[prost(message, repeated, tag="39")]
3903    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3904    /// Priority boost to be applied to the traced process, when the session is
3905    /// running.
3906    #[prost(message, optional, tag="40")]
3907    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3908    /// When set to a value > 0, this tracing session will be started in
3909    /// "exclusive mode". This has the following semantics:
3910    /// - It can only be set by shell or root users.
3911    /// - A new exclusive session will only be started if its priority is strictly
3912    ///    higher than any other active tracing session.
3913    /// - If a new exclusive session is started, all other existing tracing
3914    ///    sessions (exclusive or not) are aborted.
3915    /// - While an exclusive session is active, any new non-exclusive session (or
3916    ///    any exclusive session with a lower or equal priority) will be rejected.
3917    ///
3918    /// Introduced in: perfetto v52.
3919    /// Supported on: Android 25Q3+.
3920    #[prost(uint32, optional, tag="41")]
3921    pub exclusive_prio: ::core::option::Option<u32>,
3922    /// Configures how the service should handle flushing data from producers
3923    /// before periodically writing the trace into the output file.
3924    /// Only applicable when |write_into_file| is true.
3925    ///
3926    /// By default, if |write_into_file| is set, the service periodically issues
3927    /// a Flush() to all data sources before writing buffers into the file.
3928    /// This ensures the file always contains the latest available data.
3929    ///
3930    /// Introduced in: perfetto v54.
3931    /// Supported on: Android 26Q1+.
3932    #[prost(enumeration="trace_config::WriteFlushMode", optional, tag="44")]
3933    pub write_flush_mode: ::core::option::Option<i32>,
3934    /// Whether to sync the output file to storage after each periodic write pass.
3935    /// Only applicable when |write_into_file| is true.
3936    ///
3937    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
3938    /// sync to storage on every write.
3939    ///
3940    /// Introduced in: perfetto v54.
3941    /// Supported on: Android 26Q1+.
3942    #[prost(enumeration="trace_config::FFlushMode", optional, tag="45")]
3943    pub fflush_post_write: ::core::option::Option<i32>,
3944    /// When true, data sources in remote producers (machines connected via
3945    /// traced_relay) will be matched by default. When false (the default), data
3946    /// sources only match the host machine. In either case, an explicit
3947    /// |DataSource.machine_name_filter| takes priority.
3948    ///
3949    /// NB: perfetto versions before v54 do not have this option and match across
3950    /// machines by default. To be compatible across this version boundary, either
3951    /// set this field to true, or set an explicit machine_name_filter on all data
3952    /// sources.
3953    ///
3954    /// Introduced in: perfetto v54.
3955    #[prost(bool, optional, tag="43")]
3956    pub trace_all_machines: ::core::option::Option<bool>,
3957    #[prost(message, repeated, tag="46")]
3958    pub notes: ::prost::alloc::vec::Vec<trace_config::Note>,
3959}
3960/// Nested message and enum types in `TraceConfig`.
3961pub mod trace_config {
3962    #[derive(Clone, PartialEq, ::prost::Message)]
3963    pub struct BufferConfig {
3964        #[prost(uint32, optional, tag="1")]
3965        pub size_kb: ::core::option::Option<u32>,
3966        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3967        pub fill_policy: ::core::option::Option<i32>,
3968        /// When true the buffer is moved (rather than copied) onto the cloned
3969        /// session, and an empty buffer of the same size is allocated in the source
3970        /// tracing session. This feature will likely get deprecated in the future.
3971        /// It been introduced mainly to support the surfaceflinger snapshot dump
3972        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3973        /// that case we don't want to retain another in-memory copy of the buffer.
3974        #[prost(bool, optional, tag="5")]
3975        pub transfer_on_clone: ::core::option::Option<bool>,
3976        /// Used in conjunction with transfer_on_clone. When true the buffer is
3977        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3978        /// that if the data source took too long to write the data in a previous
3979        /// clone-related flush, we don't end up with a mixture of leftovers from
3980        /// the previous write and new data.
3981        #[prost(bool, optional, tag="6")]
3982        pub clear_before_clone: ::core::option::Option<bool>,
3983        /// Optional name for this buffer. If set, data sources can reference this
3984        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
3985        /// using the buffer index. Buffer names must be unique within a tracing
3986        /// session. This provides a more human-readable and less error-prone way to
3987        /// configure which buffer a data source writes to.
3988        #[prost(string, optional, tag="7")]
3989        pub name: ::core::option::Option<::prost::alloc::string::String>,
3990        #[prost(enumeration="buffer_config::ExperimentalMode", optional, tag="8")]
3991        pub experimental_mode: ::core::option::Option<i32>,
3992    }
3993    /// Nested message and enum types in `BufferConfig`.
3994    pub mod buffer_config {
3995        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3996        #[repr(i32)]
3997        pub enum FillPolicy {
3998            Unspecified = 0,
3999            /// Default behavior. The buffer operates as a conventional ring buffer.
4000            /// If the writer is faster than the reader (or if the reader reads only
4001            /// after tracing is stopped) newly written packets will overwrite old
4002            /// packets.
4003            RingBuffer = 1,
4004            /// Behaves like RING_BUFFER as long as there is space in the buffer or
4005            /// the reader catches up with the writer. As soon as the writer hits
4006            /// an unread chunk, it stops accepting new data in the buffer.
4007            Discard = 2,
4008        }
4009        impl FillPolicy {
4010            /// String value of the enum field names used in the ProtoBuf definition.
4011            ///
4012            /// The values are not transformed in any way and thus are considered stable
4013            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4014            pub fn as_str_name(&self) -> &'static str {
4015                match self {
4016                    FillPolicy::Unspecified => "UNSPECIFIED",
4017                    FillPolicy::RingBuffer => "RING_BUFFER",
4018                    FillPolicy::Discard => "DISCARD",
4019                }
4020            }
4021        }
4022        /// When true, uses the experimental TraceBufferV2 implementation for this
4023        /// buffer. This is for testing purposes only and may be removed in future
4024        /// versions.
4025        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4026        #[repr(i32)]
4027        pub enum ExperimentalMode {
4028            /// Use the default V1 implementation.
4029            ModeUnspecified = 0,
4030            /// Use TraceBufferV2.
4031            TraceBufferV2 = 1,
4032            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
4033            /// but only V1 data is returned. Comparison stats are reported to
4034            /// validate V2 returns equivalent data.
4035            TraceBufferV2ShadowMode = 2,
4036        }
4037        impl ExperimentalMode {
4038            /// String value of the enum field names used in the ProtoBuf definition.
4039            ///
4040            /// The values are not transformed in any way and thus are considered stable
4041            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4042            pub fn as_str_name(&self) -> &'static str {
4043                match self {
4044                    ExperimentalMode::ModeUnspecified => "MODE_UNSPECIFIED",
4045                    ExperimentalMode::TraceBufferV2 => "TRACE_BUFFER_V2",
4046                    ExperimentalMode::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
4047                }
4048            }
4049        }
4050    }
4051    #[derive(Clone, PartialEq, ::prost::Message)]
4052    pub struct DataSource {
4053        /// Filters and data-source specific config. It contains also the unique name
4054        /// of the data source, the one passed in the  DataSourceDescriptor when they
4055        /// register on the service.
4056        #[prost(message, optional, tag="1")]
4057        pub config: ::core::option::Option<super::DataSourceConfig>,
4058        /// Optional. If multiple producers (~processes) expose the same data source
4059        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
4060        /// the data source is enabled only for producers whose names match any of
4061        /// the filters.
4062        /// |producer_name_filter| has to be an exact match, while
4063        /// |producer_name_regex_filter| is a regular expression.
4064        /// This allows to enable a data source only for specific processes.
4065        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
4066        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
4067        #[prost(string, repeated, tag="2")]
4068        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4069        #[prost(string, repeated, tag="3")]
4070        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4071        /// Filter by machine names. The name of a machine is determined by the
4072        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
4073        /// variable is not set then the
4074        /// persist.traced_relay.machine_name system property is used. If the
4075        /// sysprop isn't set or not in an Android system, then the machine name by
4076        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
4077        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
4078        /// to the host machine, which is the machine running traced.
4079        #[prost(string, repeated, tag="4")]
4080        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4081    }
4082    /// Config for disabling builtin data sources in the tracing service.
4083    #[derive(Clone, PartialEq, ::prost::Message)]
4084    pub struct BuiltinDataSource {
4085        /// Disable emitting clock timestamps into the trace.
4086        #[prost(bool, optional, tag="1")]
4087        pub disable_clock_snapshotting: ::core::option::Option<bool>,
4088        /// Disable echoing the original trace config in the trace.
4089        #[prost(bool, optional, tag="2")]
4090        pub disable_trace_config: ::core::option::Option<bool>,
4091        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
4092        #[prost(bool, optional, tag="3")]
4093        pub disable_system_info: ::core::option::Option<bool>,
4094        /// Disable emitting events for data-source state changes (e.g. the marker
4095        /// for all data sources having ACKed the start of the trace).
4096        #[prost(bool, optional, tag="4")]
4097        pub disable_service_events: ::core::option::Option<bool>,
4098        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
4099        /// also ClockSnapshot's primary_trace_clock. The configured value is written
4100        /// into the trace as part of the ClockSnapshots emitted by the service.
4101        /// Trace processor will attempt to translate packet/event timestamps from
4102        /// various data sources (and their chosen clock domains) to this domain
4103        /// during import. Added in Android R.
4104        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
4105        pub primary_trace_clock: ::core::option::Option<i32>,
4106        /// Time interval in between snapshotting of sync markers, clock snapshots,
4107        /// stats, and other periodic service-emitted events. Note that the service
4108        /// only keeps track of the first and the most recent snapshot until
4109        /// ReadBuffers() is called.
4110        #[prost(uint32, optional, tag="6")]
4111        pub snapshot_interval_ms: ::core::option::Option<u32>,
4112        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
4113        /// clock should be used for periodic snapshots of service-emitted events.
4114        /// This means, if a snapshot *should* have happened during suspend, it will
4115        /// happen immediately after the device resumes.
4116        ///
4117        /// Choosing a clock like this is done on best-effort basis; not all
4118        /// platforms (e.g. Windows) expose a clock which can be used for periodic
4119        /// tasks counting suspend. If such a clock is not available, the service
4120        /// falls back to the best-available alternative.
4121        ///
4122        /// Introduced in Android S.
4123        /// TODO(lalitm): deprecate this in T and make this the default if nothing
4124        /// crashes in S.
4125        #[prost(bool, optional, tag="7")]
4126        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
4127        /// Disables the reporting of per-trace-writer histograms in TraceStats.
4128        #[prost(bool, optional, tag="8")]
4129        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
4130    }
4131    #[derive(Clone, PartialEq, ::prost::Message)]
4132    pub struct ProducerConfig {
4133        /// Identifies the producer for which this config is for.
4134        #[prost(string, optional, tag="1")]
4135        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
4136        /// Specifies the preferred size of the shared memory buffer. If the size is
4137        /// larger than the max size, the max will be used. If it is smaller than
4138        /// the page size or doesn't fit pages evenly into it, it will fall back to
4139        /// the size specified by the producer or finally the default shared memory
4140        /// size.
4141        #[prost(uint32, optional, tag="2")]
4142        pub shm_size_kb: ::core::option::Option<u32>,
4143        /// Specifies the preferred size of each page in the shared memory buffer.
4144        /// Must be an integer multiple of 4K.
4145        #[prost(uint32, optional, tag="3")]
4146        pub page_size_kb: ::core::option::Option<u32>,
4147    }
4148    /// Contains statsd-specific metadata about an alert associated with the trace.
4149    #[derive(Clone, PartialEq, ::prost::Message)]
4150    pub struct StatsdMetadata {
4151        /// The identifier of the alert which triggered this trace.
4152        #[prost(int64, optional, tag="1")]
4153        pub triggering_alert_id: ::core::option::Option<i64>,
4154        /// The uid which registered the triggering configuration with statsd.
4155        #[prost(int32, optional, tag="2")]
4156        pub triggering_config_uid: ::core::option::Option<i32>,
4157        /// The identifier of the config which triggered the alert.
4158        #[prost(int64, optional, tag="3")]
4159        pub triggering_config_id: ::core::option::Option<i64>,
4160        /// The identifier of the subscription which triggered this trace.
4161        #[prost(int64, optional, tag="4")]
4162        pub triggering_subscription_id: ::core::option::Option<i64>,
4163    }
4164    /// Contains flags which override the default values of the guardrails inside
4165    /// Perfetto.
4166    #[derive(Clone, PartialEq, ::prost::Message)]
4167    pub struct GuardrailOverrides {
4168        /// Override the default limit (in bytes) for uploading data to server within
4169        /// a 24 hour period.
4170        /// On R-, this override only affected userdebug builds. Since S, it also
4171        /// affects user builds.
4172        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
4173        /// was removed from Perfetto.
4174        #[deprecated]
4175        #[prost(uint64, optional, tag="1")]
4176        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
4177        /// Overrides the guardrail for maximum trace buffer size.
4178        /// Available on U+
4179        #[prost(uint32, optional, tag="2")]
4180        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
4181    }
4182    /// Triggers allow producers to start or stop the tracing session when an event
4183    /// occurs.
4184    ///
4185    /// For example if we are tracing probabilistically, most traces will be
4186    /// uninteresting. Triggers allow us to keep only the interesting ones such as
4187    /// those traces during which the device temperature reached a certain
4188    /// threshold. In this case the producer can activate a trigger to keep
4189    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
4190    /// (START_TRACING) because it knows something is about to happen.
4191    #[derive(Clone, PartialEq, ::prost::Message)]
4192    pub struct TriggerConfig {
4193        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
4194        pub trigger_mode: ::core::option::Option<i32>,
4195        /// This flag is really a workaround for b/274931668. This is needed only
4196        /// when deploying configs to different versions of the tracing service.
4197        /// When this is set to true this has the same effect of setting trigger_mode
4198        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
4199        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
4200        /// versions of Android and fall back to STOP_TRACING on older versions where
4201        /// CLONE_SNAPSHOT did not exist.
4202        /// When using this flag, trigger_mode must be set to STOP_TRACING.
4203        #[prost(bool, optional, tag="5")]
4204        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
4205        /// A list of triggers which are related to this configuration. If ANY
4206        /// trigger is seen then an action will be performed based on |trigger_mode|.
4207        #[prost(message, repeated, tag="2")]
4208        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
4209        /// Required and must be positive if a TriggerConfig is specified. This is
4210        /// how long this TraceConfig should wait for a trigger to arrive. After this
4211        /// period of time if no trigger is seen the TracingSession will be cleaned
4212        /// up.
4213        #[prost(uint32, optional, tag="3")]
4214        pub trigger_timeout_ms: ::core::option::Option<u32>,
4215    }
4216    /// Nested message and enum types in `TriggerConfig`.
4217    pub mod trigger_config {
4218        #[derive(Clone, PartialEq, ::prost::Message)]
4219        pub struct Trigger {
4220            /// The producer must specify this name to activate the trigger.
4221            #[prost(string, optional, tag="1")]
4222            pub name: ::core::option::Option<::prost::alloc::string::String>,
4223            /// An std::regex that will match the producer that can activate this
4224            /// trigger. This is optional. If unset any producers can activate this
4225            /// trigger.
4226            #[prost(string, optional, tag="2")]
4227            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
4228            /// After a trigger is received either in START_TRACING or STOP_TRACING
4229            /// mode then the trace will end |stop_delay_ms| after triggering.
4230            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
4231            /// snapshot.
4232            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
4233            /// based on wall-clock, counting also time in suspend.
4234            #[prost(uint32, optional, tag="3")]
4235            pub stop_delay_ms: ::core::option::Option<u32>,
4236            /// Limits the number of traces this trigger can start/stop in a rolling
4237            /// 24 hour window. If this field is unset or zero, no limit is applied and
4238            /// activiation of this trigger *always* starts/stops the trace.
4239            #[prost(uint32, optional, tag="4")]
4240            pub max_per_24_h: ::core::option::Option<u32>,
4241            /// A value between 0 and 1 which encodes the probability of skipping a
4242            /// trigger with this name. This is useful for reducing the probability
4243            /// of high-frequency triggers from dominating trace finaization. If this
4244            /// field is unset or zero, the trigger will *never* be skipped. If this
4245            /// field is greater than or equal to 1, this trigger will *always* be
4246            /// skipped i.e. it will be as if this trigger was never included in the
4247            /// first place.
4248            /// This probability check is applied *before* any other limits. For
4249            /// example, if |max_per_24_h| is also set, first we will check if the
4250            /// probability bar is met and only then will we check the |max_per_24_h|
4251            /// limit.
4252            #[prost(double, optional, tag="5")]
4253            pub skip_probability: ::core::option::Option<f64>,
4254        }
4255        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4256        #[repr(i32)]
4257        pub enum TriggerMode {
4258            Unspecified = 0,
4259            /// When this mode is chosen, data sources are not started until one of the
4260            /// |triggers| are received. This supports early initialization and fast
4261            /// starting of the tracing system. On triggering, the session will then
4262            /// record for |stop_delay_ms|. However if no trigger is seen
4263            /// after |trigger_timeout_ms| the session will be stopped and no data will
4264            /// be returned.
4265            StartTracing = 1,
4266            /// When this mode is chosen, the session will be started via the normal
4267            /// EnableTracing() & StartTracing(). If no trigger is ever seen
4268            /// the session will be stopped after |trigger_timeout_ms| and no data will
4269            /// be returned. However if triggered the trace will stop after
4270            /// |stop_delay_ms| and any data in the buffer will be returned to the
4271            /// consumer.
4272            StopTracing = 2,
4273            /// When this mode is chosen, this causes a snapshot of the current tracing
4274            /// session to be created after |stop_delay_ms| while the current tracing
4275            /// session continues undisturbed (% an extra flush). This mode can be
4276            /// used only when the tracing session is handled by the "perfetto" cmdline
4277            /// client (which is true in 90% of cases). Part of the business logic
4278            /// necessary for this behavior, and ensuing file handling, lives in
4279            /// perfetto_cmd.cc . On other consumers, this causes only a notification
4280            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
4281            /// consumer is supposed to call CloneSession() itself after the event.
4282            /// Use use_clone_snapshot_if_available=true when targeting older versions
4283            /// of perfetto.
4284            CloneSnapshot = 4,
4285        }
4286        impl TriggerMode {
4287            /// String value of the enum field names used in the ProtoBuf definition.
4288            ///
4289            /// The values are not transformed in any way and thus are considered stable
4290            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4291            pub fn as_str_name(&self) -> &'static str {
4292                match self {
4293                    TriggerMode::Unspecified => "UNSPECIFIED",
4294                    TriggerMode::StartTracing => "START_TRACING",
4295                    TriggerMode::StopTracing => "STOP_TRACING",
4296                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
4297                }
4298            }
4299        }
4300    }
4301    /// Configuration for trace contents that reference earlier trace data. For
4302    /// example, a data source might intern strings, and emit packets containing
4303    /// {interned id : string} pairs. Future packets from that data source can then
4304    /// use the interned ids instead of duplicating the raw string contents. The
4305    /// trace parser will then need to use that interning table to fully interpret
4306    /// the rest of the trace.
4307    #[derive(Clone, PartialEq, ::prost::Message)]
4308    pub struct IncrementalStateConfig {
4309        /// If nonzero, notify eligible data sources to clear their incremental state
4310        /// periodically, with the given period. The notification is sent only to
4311        /// data sources that have |handles_incremental_state_clear| set in their
4312        /// DataSourceDescriptor. The notification requests that the data source
4313        /// stops referring to past trace contents. This is particularly useful when
4314        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
4315        /// trace data.
4316        ///
4317        /// Warning: this time-based global clearing is likely to be removed in the
4318        /// future, to be replaced with a smarter way of sending the notifications
4319        /// only when necessary.
4320        #[prost(uint32, optional, tag="1")]
4321        pub clear_period_ms: ::core::option::Option<u32>,
4322    }
4323    /// Android-only. Not for general use. If set, saves the trace into an
4324    /// incident. This field is read by perfetto_cmd, rather than the tracing
4325    /// service. This field must be set when passing the --upload flag to
4326    /// perfetto_cmd.
4327    ///
4328    /// In this message, either:
4329    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4330    ///     must be set.
4331    ///   * |skip_incidentd| must be explicitly set to true.
4332    #[derive(Clone, PartialEq, ::prost::Message)]
4333    pub struct IncidentReportConfig {
4334        #[prost(string, optional, tag="1")]
4335        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4336        #[prost(string, optional, tag="2")]
4337        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4338        /// Level of filtering in the requested incident. See |Destination| in
4339        /// frameworks/base/core/proto/android/privacy.proto.
4340        #[prost(int32, optional, tag="3")]
4341        pub privacy_level: ::core::option::Option<i32>,
4342        /// If true, then skips saving the trace to incidentd.
4343        ///
4344        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4345        /// or when we explicitly don't want traces to go to incidentd even when they
4346        /// usually would (e.g. configs deployed using statsd but only used for
4347        /// inclusion in bugreports using |bugreport_score|).
4348        ///
4349        /// The motivation for having this flag, instead of just not setting
4350        /// |incident_report_config|, is prevent accidents where
4351        /// |incident_report_config| is omitted by mistake.
4352        #[prost(bool, optional, tag="5")]
4353        pub skip_incidentd: ::core::option::Option<bool>,
4354        /// If true, do not write the trace into dropbox (i.e. incident only).
4355        /// Otherwise, write to both dropbox and incident.
4356        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4357        #[deprecated]
4358        #[prost(bool, optional, tag="4")]
4359        pub skip_dropbox: ::core::option::Option<bool>,
4360    }
4361    /// When set applies a post-filter to the trace contents using the filter
4362    /// provided. The filter is applied at ReadBuffers() time and works both in the
4363    /// case of IPC readback and write_into_file. This filter can be generated
4364    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4365    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4366    /// design.
4367    ///
4368    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4369    /// Android T with a different field number. Updated in Android U with a new
4370    /// bytecode version which supports string filtering.
4371    ///
4372    /// =========================
4373    /// Filter bytecode.
4374    /// =========================
4375    #[derive(Clone, PartialEq, ::prost::Message)]
4376    pub struct TraceFilter {
4377        /// The bytecode as implemented in Android T.
4378        #[prost(bytes="vec", optional, tag="1")]
4379        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4380        /// The bytecode as implemented in Android U. Adds support for string
4381        /// filtering.
4382        #[prost(bytes="vec", optional, tag="2")]
4383        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4384        #[prost(message, optional, tag="3")]
4385        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4386        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
4387        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
4388        /// versions ignore this field; new versions apply it.
4389        ///
4390        /// The motivation for this is that adding new opcodes in a backwards
4391        /// compatible way while also minimizing config size is hard. Instead, the
4392        /// overlay mechanism allows us to "patch" specific fields in the original
4393        /// bytecode_v2 with new semantics.
4394        ///
4395        /// See RFC 0011-subset-string-filter-rules.md for more info.
4396        ///
4397        /// Note:
4398        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
4399        /// markers), this overlay uses a triplet format with explicit indices:
4400        ///    [msg_index, field_id << 3 | opcode, argument] ... \[checksum\]
4401        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
4402        /// Entries must be sorted by (msg_index, field_id).
4403        ///
4404        /// The parser processes bytecode_v2 and this overlay simultaneously:
4405        ///   - any field not mentioned in the overlay is parsed as usual
4406        ///   - any field in the overlay but *not* in the bytecode_v2 is added
4407        ///     with its overlay value
4408        ///   - any field in both the overlay and bytecode_v2 takes the value in the
4409        ///     overlay, the bytecode_v2 value is ignored.
4410        ///
4411        /// Note: despite the name, this was broken in v54 (the overlay was not
4412        /// passed through to the bytecode parser). Only works in v55+.
4413        #[prost(bytes="vec", optional, tag="4")]
4414        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4415        /// String filter chain for Perfetto v54+. Rules in this chain either
4416        /// overwrite rules in string_filter_chain (if the name matches) or are
4417        /// appended (if the name doesn't match). This allows modifying existing
4418        /// rules (e.g., changing policy) without duplicating the entire chain.
4419        /// Rules without a name are always appended.
4420        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4421        /// Introduced in: Perfetto v54.
4422        #[prost(message, optional, tag="5")]
4423        pub string_filter_chain_v54: ::core::option::Option<trace_filter::StringFilterChain>,
4424    }
4425    /// Nested message and enum types in `TraceFilter`.
4426    pub mod trace_filter {
4427        /// A rule specifies how strings should be filtered.
4428        #[derive(Clone, PartialEq, ::prost::Message)]
4429        pub struct StringFilterRule {
4430            /// The policy (i.e. algorithm) dictating how strings matching this rule
4431            /// should be handled.
4432            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
4433            pub policy: ::core::option::Option<i32>,
4434            /// The regex pattern used to match against each string.
4435            #[prost(string, optional, tag="2")]
4436            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
4437            /// The string which should appear after the tgid in atrace tracepoint
4438            /// strings.
4439            #[prost(string, optional, tag="3")]
4440            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
4441            /// Optional name for the rule. When merging chains (e.g. via
4442            /// string_filter_chain_v54), rules with matching names in the newer chain
4443            /// will overwrite rules in the base chain. Rules without a name (empty or
4444            /// unset) are always treated as distinct and will be appended.
4445            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4446            /// Introduced in: Perfetto v54.
4447            #[prost(string, optional, tag="4")]
4448            pub name: ::core::option::Option<::prost::alloc::string::String>,
4449            /// The semantic types this rule applies to.
4450            ///
4451            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
4452            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
4453            /// - If non-empty, the rule applies only to fields whose semantic type
4454            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
4455            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
4456            ///
4457            /// Examples:
4458            ///    semantic_type: []           -> matches only UNSPECIFIED fields
4459            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
4460            ///    semantic_type: [UNSPECIFIED, ATRACE] -> matches both
4461            ///
4462            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
4463            /// Introduced in: Perfetto v54.
4464            #[prost(enumeration="super::super::SemanticType", repeated, packed="false", tag="5")]
4465            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
4466        }
4467        /// A chain is a list of rules which string will be sequentially checked
4468        /// against.
4469        #[derive(Clone, PartialEq, ::prost::Message)]
4470        pub struct StringFilterChain {
4471            #[prost(message, repeated, tag="1")]
4472            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
4473        }
4474        // =========================
4475        // String filtering
4476        // =========================
4477
4478        // The principles and terminology of string filtering is heavily inspired by
4479        // iptables. A "rule" decide how strings should be filtered. Each rule
4480        // contains a "policy" which indicates the algorithm to use for filtering.
4481        // A "chain" is a list of rules which will be sequentially checked against
4482        // each string.
4483        //
4484        // The first rule which applies to the string terminates filtering for that
4485        // string. If no rules apply, the string is left unchanged.
4486
4487        /// A policy specifies which algorithm should be used for filtering the
4488        /// string.
4489        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4490        #[repr(i32)]
4491        pub enum StringFilterPolicy {
4492            SfpUnspecified = 0,
4493            /// Tries to match the string field against |regex_pattern|. If it
4494            /// matches, all matching groups are "redacted" (i.e. replaced with a
4495            /// constant string) and filtering is terminated (i.e. no further rules are
4496            /// checked). If it doesn't match, the string is left unchanged and the
4497            /// next rule in chain is considered.
4498            SfpMatchRedactGroups = 1,
4499            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
4500            /// checking the regex. Specifically, it tries to parse the string field as
4501            /// an atrace tracepoint and checks if the post-tgid field starts with
4502            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4503            /// this check succeeds.
4504            SfpAtraceMatchRedactGroups = 2,
4505            /// Tries to match the string field against |regex_pattern|. If it
4506            /// matches, filtering is terminated (i.e. no further rules are checked).
4507            /// If it doesn't match, the string is left unchanged and the next rule in
4508            /// chain is considered.
4509            SfpMatchBreak = 3,
4510            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
4511            /// the regex. Specifically, it tries to parse the string field as an
4512            /// atrace tracepoint and checks if the post-tgid field starts with
4513            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4514            /// this check succeeds.
4515            SfpAtraceMatchBreak = 4,
4516            /// Tries to repeatedly search (i.e. find substrings of) the string field
4517            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
4518            /// replaced with a constant string). Once there are no further matches,
4519            /// filtering is terminated (i.e. no further rules are checked).
4520            ///
4521            /// Note that this is policy is a "search" policy not a "match" policy
4522            /// unlike the above policies:
4523            ///   * Match policies require matching the full string i.e. there is an
4524            ///     implicit leading `^` and trailing `$`.
4525            ///   * Search policies perform repeated partial matching of the string
4526            ///     e.g.
4527            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
4528            ///       - Pattern: `foo=(\d+)`
4529            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
4530            ///     where P6O is the redaction string
4531            ///
4532            /// All of this is only performed after some pre-work where we try to parse
4533            /// the string field as an atrace tracepoint and check if the post-tgid
4534            /// field starts with |atrace_post_tgid_starts_with|.
4535            ///
4536            /// If there are no partial matches, the string is left unchanged and the
4537            /// next rule in chain is considered.
4538            SfpAtraceRepeatedSearchRedactGroups = 5,
4539        }
4540        impl StringFilterPolicy {
4541            /// String value of the enum field names used in the ProtoBuf definition.
4542            ///
4543            /// The values are not transformed in any way and thus are considered stable
4544            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4545            pub fn as_str_name(&self) -> &'static str {
4546                match self {
4547                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
4548                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
4549                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
4550                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
4551                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
4552                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
4553                }
4554            }
4555        }
4556    }
4557    /// Android-only. Not for general use. If set, reports the trace to the
4558    /// Android framework. This field is read by perfetto_cmd, rather than the
4559    /// tracing service. This field must be set when passing the --upload flag to
4560    /// perfetto_cmd.
4561    ///
4562    /// In this message, either:
4563    ///   * |reporter_service_package| and |reporter_service_class| must be set.
4564    ///   * |skip_reporting| must be explicitly set to true.
4565    #[derive(Clone, PartialEq, ::prost::Message)]
4566    pub struct AndroidReportConfig {
4567        #[prost(string, optional, tag="1")]
4568        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
4569        #[prost(string, optional, tag="2")]
4570        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
4571        /// If true, then skips reporting the trace to Android framework.
4572        ///
4573        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4574        /// or when we explicitly don't want to report traces to the framework even
4575        /// when they usually would (e.g. configs deployed using statsd but only
4576        /// used for inclusion in bugreports using |bugreport_score|).
4577        ///
4578        /// The motivation for having this flag, instead of just not setting
4579        /// |framework_report_config|, is prevent accidents where
4580        /// |framework_report_config| is omitted by mistake.
4581        #[prost(bool, optional, tag="3")]
4582        pub skip_report: ::core::option::Option<bool>,
4583        /// If true, will direct the Android framework to read the data in trace
4584        /// file and pass it to the reporter class over a pipe instead of passing
4585        /// the file descriptor directly.
4586        ///
4587        /// This flag is needed because the Android test framework does not
4588        /// currently support priv-app helper apps (in terms of SELinux) and we
4589        /// really don't want to add an allow rule for untrusted_app to receive
4590        /// trace fds.
4591        ///
4592        /// Because of this, we instead will direct the framework to create a new
4593        /// pipe and pass this to the reporter process instead. As the pipe is
4594        /// created by the framework, we won't have any problems with SELinux
4595        /// (system_server is already allowed to pass pipe fds, even
4596        /// to untrusted apps).
4597        ///
4598        /// As the name suggests this option *MUST* only be used for testing.
4599        /// Note that the framework will reject (and drop) files which are too
4600        /// large both for simplicity and to be minimize the amount of data we
4601        /// pass to a non-priv app (note that the framework will still check
4602        /// manifest permissions even though SELinux permissions are worked around).
4603        #[prost(bool, optional, tag="4")]
4604        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
4605    }
4606    /// If set, delays the start of tracing by a random duration. The duration is
4607    /// chosen from a uniform distribution between the specified minimum and
4608    /// maximum.
4609    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4610    /// not work if you communicate with traced directly over the consumer API.
4611    /// Introduced in Android T.
4612    #[derive(Clone, PartialEq, ::prost::Message)]
4613    pub struct CmdTraceStartDelay {
4614        #[prost(uint32, optional, tag="1")]
4615        pub min_delay_ms: ::core::option::Option<u32>,
4616        #[prost(uint32, optional, tag="2")]
4617        pub max_delay_ms: ::core::option::Option<u32>,
4618    }
4619    /// When non-empty, ensures that for a each semaphore named `name at most
4620    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4621    /// minimum of all values specified by this config or any already-running
4622    /// session) can be be running.
4623    ///
4624    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4625    /// and the tracing session will not be started (or elgible to start in
4626    /// the case of deferred sessions).
4627    ///
4628    /// This is easiest to explain with an example. Suppose the tracing service has
4629    /// the following active tracing sessions:
4630    ///    S1 = [{name=foo, max_other_session_count=2},
4631    ///          {name=bar, max_other_session_count=0}]
4632    ///    S2 = [{name=foo, max_other_session_count=1},
4633    ///          {name=baz, max_other_session_count=1}]
4634    ///
4635    /// Then, for a new session, the following would be the expected behaviour of
4636    /// EnableSession given the state of `session_semaphores`.
4637    ///    Q: session_semaphores = []
4638    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4639    ///       no matter the state of any other tracing session.
4640    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4641    ///    A: Allowed because both S2 and this config specify
4642    ///       max_other_session_count=1 for baz.
4643    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4644    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4645    ///       takes that slot.
4646    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4647    ///    A: Denied because S1 takes the the slot specified by both S1 and
4648    ///       this config.
4649    ///
4650    /// Introduced in 24Q3 (Android V).
4651    #[derive(Clone, PartialEq, ::prost::Message)]
4652    pub struct SessionSemaphore {
4653        /// The name of the semaphore. Acts as a unique identifier across all
4654        /// tracing sessions (including the one being started).
4655        #[prost(string, optional, tag="1")]
4656        pub name: ::core::option::Option<::prost::alloc::string::String>,
4657        /// The maximum number of *other* sesssions which specify the same semaphore
4658        /// which can be active. The minimum of this value across all tracing
4659        /// sessions and the value specified by the config is used when deciding
4660        /// whether the tracing session can be started.
4661        #[prost(uint64, optional, tag="2")]
4662        pub max_other_session_count: ::core::option::Option<u64>,
4663    }
4664    /// Allow key, value pairs to save arbitrary data about trace.
4665    #[derive(Clone, PartialEq, ::prost::Message)]
4666    pub struct Note {
4667        /// Required.
4668        #[prost(string, optional, tag="1")]
4669        pub key: ::core::option::Option<::prost::alloc::string::String>,
4670        /// Required.
4671        #[prost(string, optional, tag="2")]
4672        pub value: ::core::option::Option<::prost::alloc::string::String>,
4673    }
4674    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4675    #[repr(i32)]
4676    pub enum LockdownModeOperation {
4677        LockdownUnchanged = 0,
4678        LockdownClear = 1,
4679        LockdownSet = 2,
4680    }
4681    impl LockdownModeOperation {
4682        /// String value of the enum field names used in the ProtoBuf definition.
4683        ///
4684        /// The values are not transformed in any way and thus are considered stable
4685        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4686        pub fn as_str_name(&self) -> &'static str {
4687            match self {
4688                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4689                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4690                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4691            }
4692        }
4693    }
4694    /// Compress trace with the given method. Best effort.
4695    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4696    #[repr(i32)]
4697    pub enum CompressionType {
4698        Unspecified = 0,
4699        Deflate = 1,
4700    }
4701    impl CompressionType {
4702        /// String value of the enum field names used in the ProtoBuf definition.
4703        ///
4704        /// The values are not transformed in any way and thus are considered stable
4705        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4706        pub fn as_str_name(&self) -> &'static str {
4707            match self {
4708                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4709                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4710            }
4711        }
4712    }
4713    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4714    #[repr(i32)]
4715    pub enum StatsdLogging {
4716        Unspecified = 0,
4717        Enabled = 1,
4718        Disabled = 2,
4719    }
4720    impl StatsdLogging {
4721        /// String value of the enum field names used in the ProtoBuf definition.
4722        ///
4723        /// The values are not transformed in any way and thus are considered stable
4724        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4725        pub fn as_str_name(&self) -> &'static str {
4726            match self {
4727                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4728                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4729                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4730            }
4731        }
4732    }
4733    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4734    #[repr(i32)]
4735    pub enum WriteFlushMode {
4736        /// Same as WRITE_FLUSH_AUTO.
4737        WriteFlushUnspecified = 0,
4738        /// Default mode. The service automatically determines the flush frequency
4739        /// to balance performance and data freshness:
4740        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
4741        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
4742        ///     issued every 5s.
4743        /// 2) If file_write_period_ms > 5s:
4744        ///     A flush is issued before every periodic write into the file.
4745        WriteFlushAuto = 1,
4746        // The following modes are intended for advanced usage and not recommended
4747        // for general use.
4748
4749        /// Do not flush buffers before periodic writes into the file.
4750        /// Use this mode if you want to minimize the performance impact of flushes
4751        /// and can tolerate potentially missing the most recent data in the trace
4752        /// file until the end of the session or an explicit flush.
4753        /// When this mode is selected, |flush_period_ms| is respected.
4754        WriteFlushDisabled = 2,
4755        /// Issue a flush before every periodic write into the file.
4756        /// This ensures that each write into the file contains the most up-to-date
4757        /// data from all data sources, but may have a higher performance overhead.
4758        WriteFlushEnabled = 3,
4759    }
4760    impl WriteFlushMode {
4761        /// String value of the enum field names used in the ProtoBuf definition.
4762        ///
4763        /// The values are not transformed in any way and thus are considered stable
4764        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4765        pub fn as_str_name(&self) -> &'static str {
4766            match self {
4767                WriteFlushMode::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
4768                WriteFlushMode::WriteFlushAuto => "WRITE_FLUSH_AUTO",
4769                WriteFlushMode::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
4770                WriteFlushMode::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
4771            }
4772        }
4773    }
4774    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4775    #[repr(i32)]
4776    pub enum FFlushMode {
4777        /// Default: same as FFLUSH_DISABLED.
4778        FflushUnspecified = 0,
4779        /// Do not explicitly sync the file to storage after each write pass.
4780        FflushDisabled = 1,
4781        /// Explicitly sync the file to storage (via fdatasync) after each periodic
4782        /// write pass. Increases data durability at the cost of higher disk I/O
4783        /// overhead.
4784        FflushEnabled = 2,
4785    }
4786    impl FFlushMode {
4787        /// String value of the enum field names used in the ProtoBuf definition.
4788        ///
4789        /// The values are not transformed in any way and thus are considered stable
4790        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4791        pub fn as_str_name(&self) -> &'static str {
4792            match self {
4793                FFlushMode::FflushUnspecified => "FFLUSH_UNSPECIFIED",
4794                FFlushMode::FflushDisabled => "FFLUSH_DISABLED",
4795                FFlushMode::FflushEnabled => "FFLUSH_ENABLED",
4796            }
4797        }
4798    }
4799}
4800// End of protos/perfetto/config/trace_config.proto
4801
4802// Begin of protos/perfetto/common/system_info.proto
4803
4804#[derive(Clone, PartialEq, ::prost::Message)]
4805pub struct Utsname {
4806    #[prost(string, optional, tag="1")]
4807    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4808    #[prost(string, optional, tag="2")]
4809    pub version: ::core::option::Option<::prost::alloc::string::String>,
4810    #[prost(string, optional, tag="3")]
4811    pub release: ::core::option::Option<::prost::alloc::string::String>,
4812    #[prost(string, optional, tag="4")]
4813    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4814}
4815/// Next id: 17
4816#[derive(Clone, PartialEq, ::prost::Message)]
4817pub struct SystemInfo {
4818    #[prost(message, optional, tag="1")]
4819    pub utsname: ::core::option::Option<Utsname>,
4820    #[prost(string, optional, tag="2")]
4821    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4822    /// The manufacturer of the product/hardware.
4823    /// Source : "ro.product.manufacturer"
4824    /// Introduced after Android W in Nov 2024 and is not supported on older
4825    /// versions.
4826    #[prost(string, optional, tag="14")]
4827    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4828    /// The SoC model from which trace is collected
4829    #[prost(string, optional, tag="9")]
4830    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4831    /// The guest SoC model from which trace is collected in case of VMs
4832    #[prost(string, optional, tag="13")]
4833    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4834    /// The hardware reversion from android device
4835    #[prost(string, optional, tag="10")]
4836    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4837    /// The storage component from android_device. This field has been introduced
4838    /// after Android W in Aug 2024 and is not supported on older versions.
4839    #[prost(string, optional, tag="11")]
4840    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4841    /// The RAM component information from android device. This field has been
4842    /// introduced after Android W in Aug 2024 and is not supported on older
4843    /// versions.
4844    #[prost(string, optional, tag="12")]
4845    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4846    /// The serial console information from android device.
4847    #[prost(string, optional, tag="15")]
4848    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4849    /// The version of traced (the same returned by `traced --version`).
4850    /// This is a human readable string with and its format varies depending on
4851    /// the build system and the repo (standalone vs AOSP).
4852    /// This is intended for human debugging only.
4853    #[prost(string, optional, tag="4")]
4854    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4855    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4856    /// Introduced in Android T.
4857    #[prost(uint64, optional, tag="5")]
4858    pub android_sdk_version: ::core::option::Option<u64>,
4859    /// Kernel page size - sysconf(_SC_PAGESIZE).
4860    #[prost(uint32, optional, tag="6")]
4861    pub page_size: ::core::option::Option<u32>,
4862    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4863    /// Might be different to the number of online cpus.
4864    /// Introduced in perfetto v44.
4865    #[prost(uint32, optional, tag="8")]
4866    pub num_cpus: ::core::option::Option<u32>,
4867    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4868    /// Introduced in v38 / Android V.
4869    #[prost(int32, optional, tag="7")]
4870    pub timezone_off_mins: ::core::option::Option<i32>,
4871    /// Ticks per second - sysconf(_SC_CLK_TCK).
4872    /// Not serialised as of perfetto v44.
4873    #[prost(int64, optional, tag="3")]
4874    pub hz: ::core::option::Option<i64>,
4875    /// The size of the system RAM in bytes.
4876    ///
4877    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
4878    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
4879    ///
4880    /// Introduced in perfetto v54 / Android 26Q1+.
4881    #[prost(uint64, optional, tag="16")]
4882    pub system_ram_bytes: ::core::option::Option<u64>,
4883}
4884// End of protos/perfetto/common/system_info.proto
4885
4886// Begin of protos/perfetto/common/trace_attributes.proto
4887
4888// Arbitrary key value pairs which can attached to a trace to provide context
4889// about any facet of the trace. This can include, what data it contains,
4890// properties of the host / machine the trace was collected on, and other
4891// interesting information about a trace.
4892// /
4893// Examples include:
4894// gradle_version = "9.0.10-alpha01"
4895// java_major_version = 24
4896// /
4897// All keys get prefixed with `trace_attribute.` in the UI and in
4898// `traceprocessor`. If there are multiple trace attribute packets that use the
4899// same key, then the latest value wins.
4900// These key value pairs show up in the `Overview` section in
4901// Perfetto UI. Additionally, these key, value pairs can also be queried using
4902// Pefetto SQL by using the following query:
4903// /
4904// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
4905
4906#[derive(Clone, PartialEq, ::prost::Message)]
4907pub struct TraceAttributes {
4908    #[prost(message, repeated, tag="1")]
4909    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
4910}
4911/// Nested message and enum types in `TraceAttributes`.
4912pub mod trace_attributes {
4913    #[derive(Clone, PartialEq, ::prost::Message)]
4914    pub struct Attribute {
4915        /// The key
4916        #[prost(string, optional, tag="1")]
4917        pub key: ::core::option::Option<::prost::alloc::string::String>,
4918        /// The value
4919        #[prost(oneof="attribute::Value", tags="2, 3")]
4920        pub value: ::core::option::Option<attribute::Value>,
4921    }
4922    /// Nested message and enum types in `Attribute`.
4923    pub mod attribute {
4924        /// The value
4925        #[derive(Clone, PartialEq, ::prost::Oneof)]
4926        pub enum Value {
4927            #[prost(int64, tag="2")]
4928            LongValue(i64),
4929            #[prost(string, tag="3")]
4930            StringValue(::prost::alloc::string::String),
4931        }
4932    }
4933}
4934// End of protos/perfetto/common/trace_attributes.proto
4935
4936// Begin of protos/perfetto/common/trace_stats.proto
4937
4938/// Statistics for the internals of the tracing service.
4939///
4940/// Next id: 19.
4941#[derive(Clone, PartialEq, ::prost::Message)]
4942pub struct TraceStats {
4943    /// Stats for the TraceBuffer(s) of the current trace session.
4944    #[prost(message, repeated, tag="1")]
4945    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4946    /// The thresholds of each the `writer_stats` histogram buckets. This is
4947    /// emitted only once as all WriterStats share the same bucket layout.
4948    /// This field has the same cardinality of the
4949    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4950    /// (The -1 is because the last overflow bucket is not reported in the _def).
4951    /// An array of values [10, 100, 1000] in the _def array means that there are
4952    /// four buckets (3 + the implicit overflow bucket):
4953    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4954    #[prost(int64, repeated, packed="false", tag="17")]
4955    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4956    #[prost(message, repeated, tag="18")]
4957    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
4958    /// Num. producers connected (whether they are involved in the current tracing
4959    /// session or not).
4960    #[prost(uint32, optional, tag="2")]
4961    pub producers_connected: ::core::option::Option<u32>,
4962    /// Num. producers ever seen for all trace sessions since startup (it's a good
4963    /// proxy for inferring num. producers crashed / killed).
4964    #[prost(uint64, optional, tag="3")]
4965    pub producers_seen: ::core::option::Option<u64>,
4966    /// Num. data sources registered for all trace sessions.
4967    #[prost(uint32, optional, tag="4")]
4968    pub data_sources_registered: ::core::option::Option<u32>,
4969    /// Num. data sources ever seen for all trace sessions since startup.
4970    #[prost(uint64, optional, tag="5")]
4971    pub data_sources_seen: ::core::option::Option<u64>,
4972    /// Num. concurrently active tracing sessions.
4973    #[prost(uint32, optional, tag="6")]
4974    pub tracing_sessions: ::core::option::Option<u32>,
4975    /// Num. buffers for all tracing session (not just the current one). This will
4976    /// be >= buffer_stats.size(), because the latter is only about the current
4977    /// session.
4978    #[prost(uint32, optional, tag="7")]
4979    pub total_buffers: ::core::option::Option<u32>,
4980    // The fields below have been introduced in Android Q.
4981
4982    /// Num. chunks that were discarded by the service before attempting to commit
4983    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4984    #[prost(uint64, optional, tag="8")]
4985    pub chunks_discarded: ::core::option::Option<u64>,
4986    /// Num. patches that were discarded by the service before attempting to apply
4987    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4988    #[prost(uint64, optional, tag="9")]
4989    pub patches_discarded: ::core::option::Option<u64>,
4990    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
4991    /// is a bug in the producer.
4992    #[prost(uint64, optional, tag="10")]
4993    pub invalid_packets: ::core::option::Option<u64>,
4994    #[prost(message, optional, tag="11")]
4995    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
4996    /// Count of Flush() requests (either from the Consumer, or self-induced
4997    /// periodic flushes). The final Flush() is also included in the count.
4998    #[prost(uint64, optional, tag="12")]
4999    pub flushes_requested: ::core::option::Option<u64>,
5000    /// The count of the Flush() requests that were completed successfully.
5001    /// In a well behaving trace this should always be == `flush_requests`.
5002    #[prost(uint64, optional, tag="13")]
5003    pub flushes_succeeded: ::core::option::Option<u64>,
5004    /// The count of the Flush() requests that failed (in most timed out).
5005    /// In a well behaving trace this should always be == 0.
5006    #[prost(uint64, optional, tag="14")]
5007    pub flushes_failed: ::core::option::Option<u64>,
5008    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
5009    pub final_flush_outcome: ::core::option::Option<i32>,
5010}
5011/// Nested message and enum types in `TraceStats`.
5012pub mod trace_stats {
5013    /// From TraceBuffer::Stats.
5014    ///
5015    /// Next id: 22.
5016    #[derive(Clone, PartialEq, ::prost::Message)]
5017    pub struct BufferStats {
5018        /// Size of the circular buffer in bytes.
5019        #[prost(uint64, optional, tag="12")]
5020        pub buffer_size: ::core::option::Option<u64>,
5021        /// Num. bytes written into the circular buffer, including chunk headers.
5022        #[prost(uint64, optional, tag="1")]
5023        pub bytes_written: ::core::option::Option<u64>,
5024        /// Num. bytes overwritten before they have been read (i.e. loss of data).
5025        #[prost(uint64, optional, tag="13")]
5026        pub bytes_overwritten: ::core::option::Option<u64>,
5027        /// Total size of chunks that were fully read from the circular buffer by the
5028        /// consumer. This may not be equal to |bytes_written| either in the middle
5029        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
5030        /// size of the chunks read from the buffer, including chunk headers, which
5031        /// will be different from the total size of packets returned to the
5032        /// consumer.
5033        ///
5034        /// The current utilization of the trace buffer (mid-tracing) can be obtained
5035        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
5036        /// adding the difference of |padding_bytes_written| and
5037        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
5038        /// Note that this represents the total size of buffered data in the buffer,
5039        /// yet this data may be spread non-contiguously through the buffer and may
5040        /// be overridden before the utilization reaches 100%.
5041        #[prost(uint64, optional, tag="14")]
5042        pub bytes_read: ::core::option::Option<u64>,
5043        /// Num. bytes that were allocated as padding between chunks in the circular
5044        /// buffer.
5045        #[prost(uint64, optional, tag="15")]
5046        pub padding_bytes_written: ::core::option::Option<u64>,
5047        /// Num. of padding bytes that were removed from the circular buffer when
5048        /// they were overwritten.
5049        ///
5050        /// The difference between |padding_bytes_written| and
5051        /// |padding_bytes_cleared| denotes the total size of padding currently
5052        /// present in the buffer.
5053        #[prost(uint64, optional, tag="16")]
5054        pub padding_bytes_cleared: ::core::option::Option<u64>,
5055        /// Num. chunks (!= packets) written into the buffer.
5056        #[prost(uint64, optional, tag="2")]
5057        pub chunks_written: ::core::option::Option<u64>,
5058        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
5059        /// the same chunk with additional packets appended to the end.
5060        #[prost(uint64, optional, tag="10")]
5061        pub chunks_rewritten: ::core::option::Option<u64>,
5062        /// Num. chunks overwritten before they have been read (i.e. loss of data).
5063        #[prost(uint64, optional, tag="3")]
5064        pub chunks_overwritten: ::core::option::Option<u64>,
5065        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
5066        /// is configured with FillPolicy == DISCARD.
5067        #[prost(uint64, optional, tag="18")]
5068        pub chunks_discarded: ::core::option::Option<u64>,
5069        /// Num. chunks (!= packets) that were fully read from the circular buffer by
5070        /// the consumer. This may not be equal to |chunks_written| either in the
5071        /// middle of tracing, or if |chunks_overwritten| is non-zero.
5072        #[prost(uint64, optional, tag="17")]
5073        pub chunks_read: ::core::option::Option<u64>,
5074        /// Num. chunks that were committed out of order.
5075        #[prost(uint64, optional, tag="11")]
5076        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
5077        /// Num. times the ring buffer wrapped around.
5078        #[prost(uint64, optional, tag="4")]
5079        pub write_wrap_count: ::core::option::Option<u64>,
5080        /// Num. out-of-band (OOB) patches that succeeded.
5081        #[prost(uint64, optional, tag="5")]
5082        pub patches_succeeded: ::core::option::Option<u64>,
5083        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
5084        #[prost(uint64, optional, tag="6")]
5085        pub patches_failed: ::core::option::Option<u64>,
5086        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
5087        /// successful packet read.
5088        #[prost(uint64, optional, tag="7")]
5089        pub readaheads_succeeded: ::core::option::Option<u64>,
5090        /// Num. readaheads aborted because of missing chunks in the sequence stream.
5091        /// Note that a small number > 0 is totally expected: occasionally, when
5092        /// issuing a read, the very last packet in a sequence might be incomplete
5093        /// (because the producer is still writing it while we read). The read will
5094        /// stop at that point, for that sequence, increasing this counter.
5095        #[prost(uint64, optional, tag="8")]
5096        pub readaheads_failed: ::core::option::Option<u64>,
5097        /// Num. of violations of the SharedMemoryABI found while writing or reading
5098        /// the buffer. This is an indication of either a bug in the producer(s) or
5099        /// malicious producer(s).
5100        #[prost(uint64, optional, tag="9")]
5101        pub abi_violations: ::core::option::Option<u64>,
5102        // The fields below have been introduced in Android R.
5103
5104        /// Num. of times the service detected packet loss on a trace writer
5105        /// sequence. This is usually caused by exhaustion of available chunks in the
5106        /// writer process's SMB. Note that this relies on the client's TraceWriter
5107        /// indicating this loss to the service -- packets lost for other reasons are
5108        /// not reflected in this stat.
5109        #[prost(uint64, optional, tag="19")]
5110        pub trace_writer_packet_loss: ::core::option::Option<u64>,
5111        #[prost(message, optional, tag="21")]
5112        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
5113    }
5114    /// Nested message and enum types in `BufferStats`.
5115    pub mod buffer_stats {
5116        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
5117        /// Only populated when the buffer is configured with shadow mode.
5118        #[derive(Clone, PartialEq, ::prost::Message)]
5119        pub struct ShadowBufferStats {
5120            /// Total num. packets read. This is not affected by capping of the hasher
5121            /// to 32K elements.
5122            #[prost(uint64, optional, tag="1")]
5123            pub packets_seen: ::core::option::Option<u64>,
5124            // The stats below are keps only for 32k packets. After reading 32K
5125            // packets hashes are randomly evicted and that might lead to slightly
5126            // inconsistent results.
5127
5128            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
5129            #[prost(uint64, optional, tag="2")]
5130            pub packets_in_both: ::core::option::Option<u64>,
5131            /// Num. packets found only in V1 buffer but not in V2.
5132            #[prost(uint64, optional, tag="3")]
5133            pub packets_only_v1: ::core::option::Option<u64>,
5134            /// Num. packets found only in V2 buffer but not in V1.
5135            #[prost(uint64, optional, tag="4")]
5136            pub packets_only_v2: ::core::option::Option<u64>,
5137            /// Num. patch operations attempted.
5138            #[prost(uint64, optional, tag="5")]
5139            pub patches_attempted: ::core::option::Option<u64>,
5140            /// Num. patches that succeeded on V1 buffer.
5141            #[prost(uint64, optional, tag="6")]
5142            pub v1_patches_succeeded: ::core::option::Option<u64>,
5143            /// Num. patches that succeeded on V2 buffer.
5144            #[prost(uint64, optional, tag="7")]
5145            pub v2_patches_succeeded: ::core::option::Option<u64>,
5146            /// This is to distinguish the updated calculations after fixing the
5147            /// hashes. This field is either empty or "2"
5148            #[prost(uint32, optional, tag="8")]
5149            pub stats_version: ::core::option::Option<u32>,
5150        }
5151    }
5152    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
5153    /// visible as a unique sequence ID in the trace.
5154    #[derive(Clone, PartialEq, ::prost::Message)]
5155    pub struct WriterStats {
5156        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
5157        /// correlate the stats with the actual packet types.
5158        #[prost(uint64, optional, tag="1")]
5159        pub sequence_id: ::core::option::Option<u64>,
5160        /// The buffer index (0..N, as defined in the TraceConfig).
5161        #[prost(uint32, optional, tag="4")]
5162        pub buffer: ::core::option::Option<u32>,
5163        /// These two arrays have the same cardinality and match the cardinality of
5164        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
5165        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
5166        /// for each bucket.
5167        #[prost(uint64, repeated, tag="2")]
5168        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
5169        #[prost(int64, repeated, tag="3")]
5170        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
5171    }
5172    /// This is set only when the TraceConfig specifies a TraceFilter.
5173    #[derive(Clone, PartialEq, ::prost::Message)]
5174    pub struct FilterStats {
5175        #[prost(uint64, optional, tag="1")]
5176        pub input_packets: ::core::option::Option<u64>,
5177        #[prost(uint64, optional, tag="2")]
5178        pub input_bytes: ::core::option::Option<u64>,
5179        #[prost(uint64, optional, tag="3")]
5180        pub output_bytes: ::core::option::Option<u64>,
5181        #[prost(uint64, optional, tag="4")]
5182        pub errors: ::core::option::Option<u64>,
5183        #[prost(uint64, optional, tag="5")]
5184        pub time_taken_ns: ::core::option::Option<u64>,
5185        /// The number of bytes discarded by the filter (i.e. output - input).
5186        /// The array has one entry for each buffer defined in the config (unless no
5187        /// packets for that buffer were seen and hence filtered).
5188        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
5189        /// (output_bytes - input_bytes) because the filter might also discard
5190        /// server-generated synthetic packets, that have no buffer index.
5191        #[prost(uint64, repeated, packed="false", tag="20")]
5192        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
5193    }
5194    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5195    #[repr(i32)]
5196    pub enum FinalFlushOutcome {
5197        FinalFlushUnspecified = 0,
5198        FinalFlushSucceeded = 1,
5199        FinalFlushFailed = 2,
5200    }
5201    impl FinalFlushOutcome {
5202        /// String value of the enum field names used in the ProtoBuf definition.
5203        ///
5204        /// The values are not transformed in any way and thus are considered stable
5205        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5206        pub fn as_str_name(&self) -> &'static str {
5207            match self {
5208                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
5209                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
5210                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
5211            }
5212        }
5213    }
5214}
5215// End of protos/perfetto/common/trace_stats.proto
5216
5217// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
5218
5219#[derive(Clone, PartialEq, ::prost::Message)]
5220pub struct AndroidGameInterventionList {
5221    #[prost(message, repeated, tag="1")]
5222    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
5223    /// True when at least one error occurred when parsing
5224    /// game_mode_intervention.list
5225    #[prost(bool, optional, tag="2")]
5226    pub parse_error: ::core::option::Option<bool>,
5227    /// Failed to open / read game_mode_intervention.list
5228    #[prost(bool, optional, tag="3")]
5229    pub read_error: ::core::option::Option<bool>,
5230}
5231/// Nested message and enum types in `AndroidGameInterventionList`.
5232pub mod android_game_intervention_list {
5233    #[derive(Clone, PartialEq, ::prost::Message)]
5234    pub struct GameModeInfo {
5235        #[prost(uint32, optional, tag="1")]
5236        pub mode: ::core::option::Option<u32>,
5237        #[prost(bool, optional, tag="2")]
5238        pub use_angle: ::core::option::Option<bool>,
5239        #[prost(float, optional, tag="3")]
5240        pub resolution_downscale: ::core::option::Option<f32>,
5241        #[prost(float, optional, tag="4")]
5242        pub fps: ::core::option::Option<f32>,
5243    }
5244    #[derive(Clone, PartialEq, ::prost::Message)]
5245    pub struct GamePackageInfo {
5246        #[prost(string, optional, tag="1")]
5247        pub name: ::core::option::Option<::prost::alloc::string::String>,
5248        #[prost(uint64, optional, tag="2")]
5249        pub uid: ::core::option::Option<u64>,
5250        #[prost(uint32, optional, tag="3")]
5251        pub current_mode: ::core::option::Option<u32>,
5252        #[prost(message, repeated, tag="4")]
5253        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
5254    }
5255}
5256// End of protos/perfetto/trace/android/android_game_intervention_list.proto
5257
5258// Begin of protos/perfetto/trace/android/android_log.proto
5259
5260#[derive(Clone, PartialEq, ::prost::Message)]
5261pub struct AndroidLogPacket {
5262    #[prost(message, repeated, tag="1")]
5263    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
5264    #[prost(message, optional, tag="2")]
5265    pub stats: ::core::option::Option<android_log_packet::Stats>,
5266}
5267/// Nested message and enum types in `AndroidLogPacket`.
5268pub mod android_log_packet {
5269    #[derive(Clone, PartialEq, ::prost::Message)]
5270    pub struct LogEvent {
5271        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
5272        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
5273        pub log_id: ::core::option::Option<i32>,
5274        /// PID (TGID), TID and UID of the task that emitted the event.
5275        #[prost(int32, optional, tag="2")]
5276        pub pid: ::core::option::Option<i32>,
5277        #[prost(int32, optional, tag="3")]
5278        pub tid: ::core::option::Option<i32>,
5279        #[prost(int32, optional, tag="4")]
5280        pub uid: ::core::option::Option<i32>,
5281        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
5282        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
5283        /// processor will take care of realigning clocks using the ClockSnapshot(s).
5284        #[prost(uint64, optional, tag="5")]
5285        pub timestamp: ::core::option::Option<u64>,
5286        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
5287        /// the second column of /system/etc/event-log-tags. For all other events,
5288        /// |tag| is the app-specified argument passed to __android_log_write().
5289        #[prost(string, optional, tag="6")]
5290        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5291        /// Empty when log_id == LID_EVENTS.
5292        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
5293        pub prio: ::core::option::Option<i32>,
5294        /// Empty when log_id == LID_EVENTS.
5295        #[prost(string, optional, tag="8")]
5296        pub message: ::core::option::Option<::prost::alloc::string::String>,
5297        /// Only populated when log_id == LID_EVENTS.
5298        #[prost(message, repeated, tag="9")]
5299        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
5300    }
5301    /// Nested message and enum types in `LogEvent`.
5302    pub mod log_event {
5303        #[derive(Clone, PartialEq, ::prost::Message)]
5304        pub struct Arg {
5305            #[prost(string, optional, tag="1")]
5306            pub name: ::core::option::Option<::prost::alloc::string::String>,
5307            #[prost(oneof="arg::Value", tags="2, 3, 4")]
5308            pub value: ::core::option::Option<arg::Value>,
5309        }
5310        /// Nested message and enum types in `Arg`.
5311        pub mod arg {
5312            #[derive(Clone, PartialEq, ::prost::Oneof)]
5313            pub enum Value {
5314                #[prost(int64, tag="2")]
5315                IntValue(i64),
5316                #[prost(float, tag="3")]
5317                FloatValue(f32),
5318                #[prost(string, tag="4")]
5319                StringValue(::prost::alloc::string::String),
5320            }
5321        }
5322    }
5323    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
5324    /// absolute counters since the beginning of the lifetime of the tracing
5325    /// session and NOT relative to the previous Stats snapshot).
5326    #[derive(Clone, PartialEq, ::prost::Message)]
5327    pub struct Stats {
5328        /// Total number of log events seen, including errors and skipped entries
5329        /// (num of events stored in the trace = total - failed - skipped).
5330        #[prost(uint64, optional, tag="1")]
5331        pub num_total: ::core::option::Option<u64>,
5332        /// Parser failures.
5333        #[prost(uint64, optional, tag="2")]
5334        pub num_failed: ::core::option::Option<u64>,
5335        /// Messages skipped due to filters.
5336        #[prost(uint64, optional, tag="3")]
5337        pub num_skipped: ::core::option::Option<u64>,
5338    }
5339}
5340// End of protos/perfetto/trace/android/android_log.proto
5341
5342// Begin of protos/perfetto/trace/android/android_system_property.proto
5343
5344#[derive(Clone, PartialEq, ::prost::Message)]
5345pub struct AndroidSystemProperty {
5346    #[prost(message, repeated, tag="1")]
5347    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
5348}
5349/// Nested message and enum types in `AndroidSystemProperty`.
5350pub mod android_system_property {
5351    #[derive(Clone, PartialEq, ::prost::Message)]
5352    pub struct PropertyValue {
5353        #[prost(string, optional, tag="1")]
5354        pub name: ::core::option::Option<::prost::alloc::string::String>,
5355        #[prost(string, optional, tag="2")]
5356        pub value: ::core::option::Option<::prost::alloc::string::String>,
5357    }
5358}
5359// End of protos/perfetto/trace/android/android_system_property.proto
5360
5361// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
5362
5363/// AppWakelockInfo describes the time-independent properties of a wakelock, such
5364/// as the owning package or wakelock tag. This is interned to reduce trace size.
5365/// Event bundles refer to interned wakelock info by the iid.
5366#[derive(Clone, PartialEq, ::prost::Message)]
5367pub struct AppWakelockInfo {
5368    /// The interned id of this wakelock.
5369    #[prost(int32, optional, tag="1")]
5370    pub iid: ::core::option::Option<i32>,
5371    /// The app-provided tag of the wakelock.
5372    #[prost(string, optional, tag="2")]
5373    pub tag: ::core::option::Option<::prost::alloc::string::String>,
5374    /// The wakelock flags (such as partial vs full).
5375    #[prost(int32, optional, tag="3")]
5376    pub flags: ::core::option::Option<i32>,
5377    /// The pid that created the wakelock.
5378    #[prost(int32, optional, tag="4")]
5379    pub owner_pid: ::core::option::Option<i32>,
5380    /// The uid that created the wakelock.
5381    #[prost(int32, optional, tag="5")]
5382    pub owner_uid: ::core::option::Option<i32>,
5383    /// The uid of the work source root (if present).
5384    #[prost(int32, optional, tag="6")]
5385    pub work_uid: ::core::option::Option<i32>,
5386}
5387/// AppWakelockBundle describes one or more wakelock events. Events are written
5388/// in two paired array, such that the details for event i are in intern_id\[i\]
5389/// and encoded_ts\[i\].
5390#[derive(Clone, PartialEq, ::prost::Message)]
5391pub struct AppWakelockBundle {
5392    /// The interned id for the WakelockInfo of the event.
5393    #[prost(uint32, repeated, tag="1")]
5394    pub intern_id: ::prost::alloc::vec::Vec<u32>,
5395    /// The timestamp and event type, encoded as:
5396    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
5397    #[prost(uint64, repeated, tag="2")]
5398    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
5399    /// For writing single packets (mainly by tokenization).
5400    #[prost(message, optional, tag="3")]
5401    pub info: ::core::option::Option<AppWakelockInfo>,
5402    #[prost(bool, optional, tag="4")]
5403    pub acquired: ::core::option::Option<bool>,
5404}
5405/// Trace event for bluetooth
5406#[derive(Clone, PartialEq, ::prost::Message)]
5407pub struct BluetoothTraceEvent {
5408    /// Packet type and direction
5409    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
5410    pub packet_type: ::core::option::Option<i32>,
5411    /// Total count of the packets collected during the collection interval
5412    #[prost(uint32, optional, tag="2")]
5413    pub count: ::core::option::Option<u32>,
5414    /// Total cumulative length of the packets collected during the collection
5415    /// interval
5416    #[prost(uint32, optional, tag="3")]
5417    pub length: ::core::option::Option<u32>,
5418    /// The collection interval in nanoseconds. This is the duration between the
5419    /// first and last packets collected.
5420    #[prost(uint32, optional, tag="4")]
5421    pub duration: ::core::option::Option<u32>,
5422    /// In case of CMD type, further breakdown of the type of command
5423    #[prost(uint32, optional, tag="5")]
5424    pub op_code: ::core::option::Option<u32>,
5425    /// In the case of EVT type, further breakdown of the type of event
5426    #[prost(uint32, optional, tag="6")]
5427    pub event_code: ::core::option::Option<u32>,
5428    /// When applicable for EVT type, further breakdown of event type into specific
5429    /// subevent
5430    #[prost(uint32, optional, tag="7")]
5431    pub subevent_code: ::core::option::Option<u32>,
5432    /// Associated handle for the bluetooth packet
5433    #[prost(uint32, optional, tag="8")]
5434    pub connection_handle: ::core::option::Option<u32>,
5435}
5436// End of protos/perfetto/trace/android/bluetooth_trace.proto
5437
5438// Begin of protos/perfetto/trace/android/camera_event.proto
5439
5440/// A profiling event corresponding to a single camera frame. This message
5441/// collects important details and timestamps involved in producing a single
5442/// camera frame.
5443/// Next ID: 17
5444#[derive(Clone, PartialEq, ::prost::Message)]
5445pub struct AndroidCameraFrameEvent {
5446    /// Identifier for the CameraCaptureSession this frame originates from. See:
5447    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5448    #[prost(uint64, optional, tag="1")]
5449    pub session_id: ::core::option::Option<u64>,
5450    /// Identifier for the camera sensor that is the source of this frame. This may
5451    /// be either a physical or logical camera (up to vendor interpretation).
5452    #[prost(uint32, optional, tag="2")]
5453    pub camera_id: ::core::option::Option<u32>,
5454    /// The frame number identifying this frame on this camera.
5455    #[prost(int64, optional, tag="3")]
5456    pub frame_number: ::core::option::Option<i64>,
5457    /// Identifier for the CaptureRequest. See:
5458    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
5459    ///
5460    /// If multiple cameras are streaming simultaneously, the request_id may be
5461    /// used to identify which frames were captured in service of the same request.
5462    #[prost(int64, optional, tag="4")]
5463    pub request_id: ::core::option::Option<i64>,
5464    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
5465    /// received by the camera HAL pipeline. Note that this request may wait for
5466    /// some time before processing actually begins. See also
5467    /// request_processing_started_ns.
5468    #[prost(int64, optional, tag="5")]
5469    pub request_received_ns: ::core::option::Option<i64>,
5470    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
5471    /// processing by the camera HAL pipeline. This is the time at which the
5472    /// pipeline actually begins to work on the request.
5473    #[prost(int64, optional, tag="6")]
5474    pub request_processing_started_ns: ::core::option::Option<i64>,
5475    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
5476    #[prost(int64, optional, tag="7")]
5477    pub start_of_exposure_ns: ::core::option::Option<i64>,
5478    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
5479    /// event.
5480    #[prost(int64, optional, tag="8")]
5481    pub start_of_frame_ns: ::core::option::Option<i64>,
5482    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
5483    /// for the frame.
5484    #[prost(int64, optional, tag="9")]
5485    pub responses_all_sent_ns: ::core::option::Option<i64>,
5486    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
5487    pub capture_result_status: ::core::option::Option<i32>,
5488    /// The number of sensor frames that were skipped between this frame and the
5489    /// previous frame. Under normal operation, this should be zero. Any number
5490    /// greater than zero indicates dropped sensor frames.
5491    #[prost(int32, optional, tag="11")]
5492    pub skipped_sensor_frames: ::core::option::Option<i32>,
5493    /// The value of CONTROL_CAPTURE_INTENT. See:
5494    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
5495    #[prost(int32, optional, tag="12")]
5496    pub capture_intent: ::core::option::Option<i32>,
5497    /// The number of streams in the capture request.
5498    #[prost(int32, optional, tag="13")]
5499    pub num_streams: ::core::option::Option<i32>,
5500    #[prost(message, repeated, tag="14")]
5501    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
5502    /// These fields capture vendor-specific additions to this proto message. In
5503    /// practice `vendor_data` typically contains a serialized message of the
5504    /// vendor's design, and `vendor_data_version` is incremented each time there
5505    /// is a backwards incompatible change made to the message.
5506    #[prost(int32, optional, tag="15")]
5507    pub vendor_data_version: ::core::option::Option<i32>,
5508    #[prost(bytes="vec", optional, tag="16")]
5509    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5510}
5511/// Nested message and enum types in `AndroidCameraFrameEvent`.
5512pub mod android_camera_frame_event {
5513    /// A profiling event corresponding to a single node processing within the
5514    /// camera pipeline. Intuitively this corresponds to a single stage of
5515    /// processing to produce a camera frame. Next ID: 6
5516    #[derive(Clone, PartialEq, ::prost::Message)]
5517    pub struct CameraNodeProcessingDetails {
5518        #[prost(int64, optional, tag="1")]
5519        pub node_id: ::core::option::Option<i64>,
5520        /// The timestamp at which node processing begins to run.
5521        #[prost(int64, optional, tag="2")]
5522        pub start_processing_ns: ::core::option::Option<i64>,
5523        /// The timestamp at which node processing finishes running.
5524        #[prost(int64, optional, tag="3")]
5525        pub end_processing_ns: ::core::option::Option<i64>,
5526        /// The delay between inputs becoming ready and the node actually beginning
5527        /// to run.
5528        #[prost(int64, optional, tag="4")]
5529        pub scheduling_latency_ns: ::core::option::Option<i64>,
5530    }
5531    /// The error status, if any, reported to the camera framework. Any status
5532    /// other than STATUS_OK indicates a dropped frame.
5533    /// Next Enum: 6
5534    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5535    #[repr(i32)]
5536    pub enum CaptureResultStatus {
5537        StatusUnspecified = 0,
5538        StatusOk = 1,
5539        /// Early metadata was returned to the camera framework with an error.
5540        StatusEarlyMetadataError = 2,
5541        /// Final metadata was returned to the camera framework with an error.
5542        StatusFinalMetadataError = 3,
5543        /// One or more buffers were returned to the camera framework with an error.
5544        StatusBufferError = 4,
5545        /// The frame was dropped as a result of a flush operation.
5546        StatusFlushError = 5,
5547    }
5548    impl CaptureResultStatus {
5549        /// String value of the enum field names used in the ProtoBuf definition.
5550        ///
5551        /// The values are not transformed in any way and thus are considered stable
5552        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5553        pub fn as_str_name(&self) -> &'static str {
5554            match self {
5555                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
5556                CaptureResultStatus::StatusOk => "STATUS_OK",
5557                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
5558                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
5559                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
5560                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
5561            }
5562        }
5563    }
5564}
5565/// A profiling event that may be emitted periodically (i.e., at a slower rate
5566/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
5567/// session-specific values.
5568#[derive(Clone, PartialEq, ::prost::Message)]
5569pub struct AndroidCameraSessionStats {
5570    /// Identifier for the CameraCaptureSession this frame originates from. See:
5571    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5572    #[prost(uint64, optional, tag="1")]
5573    pub session_id: ::core::option::Option<u64>,
5574    #[prost(message, optional, tag="2")]
5575    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
5576}
5577/// Nested message and enum types in `AndroidCameraSessionStats`.
5578pub mod android_camera_session_stats {
5579    /// Although vendor implementations may vary, camera pipeline processing is
5580    /// typically arranged into a directed graph-like structure. This message is
5581    /// used to record that graph.
5582    #[derive(Clone, PartialEq, ::prost::Message)]
5583    pub struct CameraGraph {
5584        #[prost(message, repeated, tag="1")]
5585        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
5586        #[prost(message, repeated, tag="2")]
5587        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
5588    }
5589    /// Nested message and enum types in `CameraGraph`.
5590    pub mod camera_graph {
5591        #[derive(Clone, PartialEq, ::prost::Message)]
5592        pub struct CameraNode {
5593            #[prost(int64, optional, tag="1")]
5594            pub node_id: ::core::option::Option<i64>,
5595            /// A list of inputs consumed by this node.
5596            #[prost(int64, repeated, packed="false", tag="2")]
5597            pub input_ids: ::prost::alloc::vec::Vec<i64>,
5598            /// A list of outputs produced by this node.
5599            #[prost(int64, repeated, packed="false", tag="3")]
5600            pub output_ids: ::prost::alloc::vec::Vec<i64>,
5601            /// These fields capture vendor-specific additions to this proto message.
5602            /// In practice `vendor_data` typically contains a serialized message of
5603            /// the vendor's design, and `vendor_data_version` is incremented each time
5604            /// there is a backwards incompatible change made to the message.
5605            #[prost(int32, optional, tag="4")]
5606            pub vendor_data_version: ::core::option::Option<i32>,
5607            #[prost(bytes="vec", optional, tag="5")]
5608            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5609        }
5610        /// An adjacency list describing connections between CameraNodes, mapping
5611        /// nodes and their outputs to other nodes that consume them as inputs.
5612        #[derive(Clone, PartialEq, ::prost::Message)]
5613        pub struct CameraEdge {
5614            /// The pair of IDs identifying the node and output connected by this edge.
5615            #[prost(int64, optional, tag="1")]
5616            pub output_node_id: ::core::option::Option<i64>,
5617            #[prost(int64, optional, tag="2")]
5618            pub output_id: ::core::option::Option<i64>,
5619            /// The pair of IDs identifying the node and input connected by this edge.
5620            #[prost(int64, optional, tag="3")]
5621            pub input_node_id: ::core::option::Option<i64>,
5622            #[prost(int64, optional, tag="4")]
5623            pub input_id: ::core::option::Option<i64>,
5624            /// These fields capture vendor-specific additions to this proto message.
5625            /// In practice `vendor_data` typically contains a serialized message of
5626            /// the vendor's design, and `vendor_data_version` is incremented each time
5627            /// there is a backwards incompatible change made to the message.
5628            #[prost(int32, optional, tag="5")]
5629            pub vendor_data_version: ::core::option::Option<i32>,
5630            #[prost(bytes="vec", optional, tag="6")]
5631            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5632        }
5633    }
5634}
5635// End of protos/perfetto/trace/android/camera_event.proto
5636
5637// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
5638
5639#[derive(Clone, PartialEq, ::prost::Message)]
5640pub struct CpuPerUidData {
5641    /// Number of clusters in the device. This will only be filled in the first
5642    /// packet in a sequence.
5643    #[prost(uint32, optional, tag="1")]
5644    pub cluster_count: ::core::option::Option<u32>,
5645    /// The UIDs for which we have data in this packet.
5646    #[prost(uint32, repeated, tag="2")]
5647    pub uid: ::prost::alloc::vec::Vec<u32>,
5648    /// List of times for {UID, cluster} tuples. This will be cluster_count
5649    /// times as long as the UID list.
5650    ///
5651    /// Ordered like:
5652    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
5653    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
5654    ///
5655    /// Each value is an absolute count for the first packet in a sequence, and a
5656    /// delta thereafter. UIDs for which all clusters have a zero delta are
5657    /// omitted; a single non-zero value for any cluster for a UID will cause
5658    /// values for all clusters to be recorded.
5659    #[prost(uint64, repeated, tag="3")]
5660    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
5661}
5662// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
5663
5664// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
5665
5666/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
5667/// Used in comparing the expected timeline of a frame to the actual timeline.
5668/// Key terms:
5669///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
5670///     2) SurfaceFrame - represents App's work on its frame
5671///     3) Timeline = start to end of a component's(app/SF) work on a frame.
5672/// SurfaceFlinger composites frames from many apps together, so
5673///     One DisplayFrame can map to N SurfaceFrame(s)
5674/// This relationship can be reconstructed by using
5675///     DisplayFrame.token = SurfaceFrame.display_frame_token
5676#[derive(Clone, PartialEq, ::prost::Message)]
5677pub struct FrameTimelineEvent {
5678    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
5679    pub event: ::core::option::Option<frame_timeline_event::Event>,
5680}
5681/// Nested message and enum types in `FrameTimelineEvent`.
5682pub mod frame_timeline_event {
5683    /// Indicates the start of expected timeline slice for SurfaceFrames.
5684    #[derive(Clone, PartialEq, ::prost::Message)]
5685    pub struct ExpectedSurfaceFrameStart {
5686        /// Cookie used to correlate between the start and end messages of the same
5687        /// frame. Since all values except the ts are same for start and end, cookie
5688        /// helps in preventing redundant data transmission.
5689        /// The same cookie is used only by start and end messages of a single frame
5690        /// and is otherwise unique.
5691        #[prost(int64, optional, tag="1")]
5692        pub cookie: ::core::option::Option<i64>,
5693        /// Token received by the app for its work. Can be shared between multiple
5694        /// layers of the same app (example: pip mode).
5695        #[prost(int64, optional, tag="2")]
5696        pub token: ::core::option::Option<i64>,
5697        /// The corresponding DisplayFrame token is required to link the App's work
5698        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5699        /// DisplayFrame.
5700        /// this.display_frame_token = DisplayFrame.token
5701        #[prost(int64, optional, tag="3")]
5702        pub display_frame_token: ::core::option::Option<i64>,
5703        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5704        /// the respective process track group.
5705        #[prost(int32, optional, tag="4")]
5706        pub pid: ::core::option::Option<i32>,
5707        #[prost(string, optional, tag="5")]
5708        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5709    }
5710    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
5711    /// includes the jank information.
5712    #[derive(Clone, PartialEq, ::prost::Message)]
5713    pub struct ActualSurfaceFrameStart {
5714        /// Cookie used to correlate between the start and end messages of the same
5715        /// frame. Since all values except the ts are same for start and end, cookie
5716        /// helps in preventing redundant data transmission.
5717        /// The same cookie is used only by start and end messages of a single frame
5718        /// and is otherwise unique.
5719        #[prost(int64, optional, tag="1")]
5720        pub cookie: ::core::option::Option<i64>,
5721        /// Token received by the app for its work. Can be shared between multiple
5722        /// layers of the same app (example: pip mode).
5723        #[prost(int64, optional, tag="2")]
5724        pub token: ::core::option::Option<i64>,
5725        /// The corresponding DisplayFrame token is required to link the App's work
5726        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5727        /// DisplayFrame.
5728        /// this.display_frame_token = DisplayFrame.token
5729        #[prost(int64, optional, tag="3")]
5730        pub display_frame_token: ::core::option::Option<i64>,
5731        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5732        /// the respective process track group.
5733        #[prost(int32, optional, tag="4")]
5734        pub pid: ::core::option::Option<i32>,
5735        #[prost(string, optional, tag="5")]
5736        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5737        #[prost(enumeration="PresentType", optional, tag="6")]
5738        pub present_type: ::core::option::Option<i32>,
5739        #[prost(bool, optional, tag="7")]
5740        pub on_time_finish: ::core::option::Option<bool>,
5741        #[prost(bool, optional, tag="8")]
5742        pub gpu_composition: ::core::option::Option<bool>,
5743        /// A bitmask of JankType. More than one reason can be attributed to a janky
5744        /// frame.
5745        #[prost(int32, optional, tag="9")]
5746        pub jank_type: ::core::option::Option<i32>,
5747        #[prost(enumeration="PredictionType", optional, tag="10")]
5748        pub prediction_type: ::core::option::Option<i32>,
5749        #[prost(bool, optional, tag="11")]
5750        pub is_buffer: ::core::option::Option<bool>,
5751        #[prost(enumeration="JankSeverityType", optional, tag="12")]
5752        pub jank_severity_type: ::core::option::Option<i32>,
5753        #[prost(float, optional, tag="13")]
5754        pub present_delay_millis: ::core::option::Option<f32>,
5755        #[prost(float, optional, tag="14")]
5756        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
5757        #[prost(float, optional, tag="15")]
5758        pub jank_severity_score: ::core::option::Option<f32>,
5759        /// experimental value for jank_type. Do not consider in jank analysis.
5760        #[prost(int32, optional, tag="16")]
5761        pub jank_type_experimental: ::core::option::Option<i32>,
5762        /// experimental value for present_type. Do not consider in jank analysis.
5763        #[prost(enumeration="PresentType", optional, tag="17")]
5764        pub present_type_experimental: ::core::option::Option<i32>,
5765        /// jank metadata information (for debug).
5766        #[prost(float, optional, tag="18")]
5767        pub jank_debug_metadata: ::core::option::Option<f32>,
5768    }
5769    /// Indicates the start of expected timeline slice for DisplayFrames.
5770    #[derive(Clone, PartialEq, ::prost::Message)]
5771    pub struct ExpectedDisplayFrameStart {
5772        /// Cookie used to correlate between the start and end messages of the same
5773        /// frame. Since all values except the ts are same for start and end, cookie
5774        /// helps in preventing redundant data transmission.
5775        /// The same cookie is used only by start and end messages of a single frame
5776        /// and is otherwise unique.
5777        #[prost(int64, optional, tag="1")]
5778        pub cookie: ::core::option::Option<i64>,
5779        /// Token received by SurfaceFlinger for its work
5780        /// this.token = SurfaceFrame.display_frame_token
5781        #[prost(int64, optional, tag="2")]
5782        pub token: ::core::option::Option<i64>,
5783        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5784        /// inside the SurfaceFlinger process group.
5785        #[prost(int32, optional, tag="3")]
5786        pub pid: ::core::option::Option<i32>,
5787    }
5788    /// Indicates the start of actual timeline slice for DisplayFrames. Also
5789    /// includes the jank information.
5790    #[derive(Clone, PartialEq, ::prost::Message)]
5791    pub struct ActualDisplayFrameStart {
5792        /// Cookie used to correlate between the start and end messages of the same
5793        /// frame. Since all values except the ts are same for start and end, cookie
5794        /// helps in preventing redundant data transmission.
5795        /// The same cookie is used only by start and end messages of a single frame
5796        /// and is otherwise unique.
5797        #[prost(int64, optional, tag="1")]
5798        pub cookie: ::core::option::Option<i64>,
5799        /// Token received by SurfaceFlinger for its work
5800        /// this.token = SurfaceFrame.display_frame_token
5801        #[prost(int64, optional, tag="2")]
5802        pub token: ::core::option::Option<i64>,
5803        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5804        /// inside the SurfaceFlinger process group.
5805        #[prost(int32, optional, tag="3")]
5806        pub pid: ::core::option::Option<i32>,
5807        #[prost(enumeration="PresentType", optional, tag="4")]
5808        pub present_type: ::core::option::Option<i32>,
5809        #[prost(bool, optional, tag="5")]
5810        pub on_time_finish: ::core::option::Option<bool>,
5811        #[prost(bool, optional, tag="6")]
5812        pub gpu_composition: ::core::option::Option<bool>,
5813        /// A bitmask of JankType. More than one reason can be attributed to a janky
5814        /// frame.
5815        #[prost(int32, optional, tag="7")]
5816        pub jank_type: ::core::option::Option<i32>,
5817        #[prost(enumeration="PredictionType", optional, tag="8")]
5818        pub prediction_type: ::core::option::Option<i32>,
5819        #[prost(enumeration="JankSeverityType", optional, tag="9")]
5820        pub jank_severity_type: ::core::option::Option<i32>,
5821        #[prost(float, optional, tag="10")]
5822        pub present_delay_millis: ::core::option::Option<f32>,
5823        #[prost(float, optional, tag="11")]
5824        pub jank_severity_score: ::core::option::Option<f32>,
5825        /// experimental value for jank_type. Do not consider in jank analysis.
5826        #[prost(int32, optional, tag="12")]
5827        pub jank_type_experimental: ::core::option::Option<i32>,
5828        /// experimental value for present_type. Do not consider in jank analysis.
5829        #[prost(enumeration="PresentType", optional, tag="13")]
5830        pub present_type_experimental: ::core::option::Option<i32>,
5831        /// jank metadata information (for debug).
5832        #[prost(float, optional, tag="14")]
5833        pub jank_debug_metadata: ::core::option::Option<f32>,
5834    }
5835    /// FrameEnd just sends the cookie to indicate that the corresponding
5836    /// <display/surface>frame slice's end.
5837    #[derive(Clone, PartialEq, ::prost::Message)]
5838    pub struct FrameEnd {
5839        #[prost(int64, optional, tag="1")]
5840        pub cookie: ::core::option::Option<i64>,
5841    }
5842    /// Specifies the reason(s) most likely to have caused the jank.
5843    /// Used as a bitmask.
5844    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5845    #[repr(i32)]
5846    pub enum JankType {
5847        JankUnspecified = 0,
5848        JankNone = 1,
5849        JankSfScheduling = 2,
5850        JankPredictionError = 4,
5851        JankDisplayHal = 8,
5852        JankSfCpuDeadlineMissed = 16,
5853        JankSfGpuDeadlineMissed = 32,
5854        JankAppDeadlineMissed = 64,
5855        JankBufferStuffing = 128,
5856        JankUnknown = 256,
5857        JankSfStuffing = 512,
5858        JankDropped = 1024,
5859        JankNonAnimating = 2048,
5860        JankAppResyncedJitter = 4096,
5861        JankDisplayNotOn = 8192,
5862        JankDisplayModeChangeInProgress = 16384,
5863        JankDisplayPowerModeChangeInProgress = 32768,
5864    }
5865    impl JankType {
5866        /// String value of the enum field names used in the ProtoBuf definition.
5867        ///
5868        /// The values are not transformed in any way and thus are considered stable
5869        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5870        pub fn as_str_name(&self) -> &'static str {
5871            match self {
5872                JankType::JankUnspecified => "JANK_UNSPECIFIED",
5873                JankType::JankNone => "JANK_NONE",
5874                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
5875                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
5876                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
5877                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
5878                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
5879                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
5880                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
5881                JankType::JankUnknown => "JANK_UNKNOWN",
5882                JankType::JankSfStuffing => "JANK_SF_STUFFING",
5883                JankType::JankDropped => "JANK_DROPPED",
5884                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
5885                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
5886                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
5887                JankType::JankDisplayModeChangeInProgress => "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS",
5888                JankType::JankDisplayPowerModeChangeInProgress => "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS",
5889            }
5890        }
5891    }
5892    /// Specifies the severity of a jank.
5893    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5894    #[repr(i32)]
5895    pub enum JankSeverityType {
5896        SeverityUnknown = 0,
5897        SeverityNone = 1,
5898        SeverityPartial = 2,
5899        SeverityFull = 3,
5900    }
5901    impl JankSeverityType {
5902        /// String value of the enum field names used in the ProtoBuf definition.
5903        ///
5904        /// The values are not transformed in any way and thus are considered stable
5905        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5906        pub fn as_str_name(&self) -> &'static str {
5907            match self {
5908                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
5909                JankSeverityType::SeverityNone => "SEVERITY_NONE",
5910                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
5911                JankSeverityType::SeverityFull => "SEVERITY_FULL",
5912            }
5913        }
5914    }
5915    /// Specifies how a frame was presented on screen w.r.t. timing.
5916    /// Can be different for SurfaceFrame and DisplayFrame.
5917    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5918    #[repr(i32)]
5919    pub enum PresentType {
5920        PresentUnspecified = 0,
5921        PresentOnTime = 1,
5922        PresentLate = 2,
5923        PresentEarly = 3,
5924        PresentDropped = 4,
5925        PresentUnknown = 5,
5926    }
5927    impl PresentType {
5928        /// String value of the enum field names used in the ProtoBuf definition.
5929        ///
5930        /// The values are not transformed in any way and thus are considered stable
5931        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5932        pub fn as_str_name(&self) -> &'static str {
5933            match self {
5934                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
5935                PresentType::PresentOnTime => "PRESENT_ON_TIME",
5936                PresentType::PresentLate => "PRESENT_LATE",
5937                PresentType::PresentEarly => "PRESENT_EARLY",
5938                PresentType::PresentDropped => "PRESENT_DROPPED",
5939                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
5940            }
5941        }
5942    }
5943    /// Specifies if the predictions for the frame are still valid, expired or
5944    /// unknown.
5945    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5946    #[repr(i32)]
5947    pub enum PredictionType {
5948        PredictionUnspecified = 0,
5949        PredictionValid = 1,
5950        PredictionExpired = 2,
5951        PredictionUnknown = 3,
5952    }
5953    impl PredictionType {
5954        /// String value of the enum field names used in the ProtoBuf definition.
5955        ///
5956        /// The values are not transformed in any way and thus are considered stable
5957        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5958        pub fn as_str_name(&self) -> &'static str {
5959            match self {
5960                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
5961                PredictionType::PredictionValid => "PREDICTION_VALID",
5962                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
5963                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
5964            }
5965        }
5966    }
5967    #[derive(Clone, PartialEq, ::prost::Oneof)]
5968    pub enum Event {
5969        #[prost(message, tag="1")]
5970        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
5971        #[prost(message, tag="2")]
5972        ActualDisplayFrameStart(ActualDisplayFrameStart),
5973        #[prost(message, tag="3")]
5974        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
5975        #[prost(message, tag="4")]
5976        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
5977        #[prost(message, tag="5")]
5978        FrameEnd(FrameEnd),
5979    }
5980}
5981// End of protos/perfetto/trace/android/frame_timeline_event.proto
5982
5983// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
5984
5985/// Generated by Android's GpuService.
5986#[derive(Clone, PartialEq, ::prost::Message)]
5987pub struct GpuMemTotalEvent {
5988    #[prost(uint32, optional, tag="1")]
5989    pub gpu_id: ::core::option::Option<u32>,
5990    #[prost(uint32, optional, tag="2")]
5991    pub pid: ::core::option::Option<u32>,
5992    #[prost(uint64, optional, tag="3")]
5993    pub size: ::core::option::Option<u64>,
5994}
5995// End of protos/perfetto/trace/android/gpu_mem_event.proto
5996
5997// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
5998
5999/// Generated by Android's SurfaceFlinger.
6000#[derive(Clone, PartialEq, ::prost::Message)]
6001pub struct GraphicsFrameEvent {
6002    #[prost(message, optional, tag="1")]
6003    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
6004}
6005/// Nested message and enum types in `GraphicsFrameEvent`.
6006pub mod graphics_frame_event {
6007    #[derive(Clone, PartialEq, ::prost::Message)]
6008    pub struct BufferEvent {
6009        #[prost(uint32, optional, tag="1")]
6010        pub frame_number: ::core::option::Option<u32>,
6011        #[prost(enumeration="BufferEventType", optional, tag="2")]
6012        pub r#type: ::core::option::Option<i32>,
6013        #[prost(string, optional, tag="3")]
6014        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6015        /// If no duration is set, the event is an instant event.
6016        #[prost(uint64, optional, tag="4")]
6017        pub duration_ns: ::core::option::Option<u64>,
6018        /// Unique buffer identifier.
6019        #[prost(uint32, optional, tag="5")]
6020        pub buffer_id: ::core::option::Option<u32>,
6021    }
6022    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6023    #[repr(i32)]
6024    pub enum BufferEventType {
6025        Unspecified = 0,
6026        Dequeue = 1,
6027        Queue = 2,
6028        Post = 3,
6029        AcquireFence = 4,
6030        Latch = 5,
6031        /// HWC will compose this buffer
6032        HwcCompositionQueued = 6,
6033        /// renderEngine composition
6034        FallbackComposition = 7,
6035        PresentFence = 8,
6036        ReleaseFence = 9,
6037        Modify = 10,
6038        Detach = 11,
6039        Attach = 12,
6040        Cancel = 13,
6041    }
6042    impl BufferEventType {
6043        /// String value of the enum field names used in the ProtoBuf definition.
6044        ///
6045        /// The values are not transformed in any way and thus are considered stable
6046        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6047        pub fn as_str_name(&self) -> &'static str {
6048            match self {
6049                BufferEventType::Unspecified => "UNSPECIFIED",
6050                BufferEventType::Dequeue => "DEQUEUE",
6051                BufferEventType::Queue => "QUEUE",
6052                BufferEventType::Post => "POST",
6053                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
6054                BufferEventType::Latch => "LATCH",
6055                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
6056                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
6057                BufferEventType::PresentFence => "PRESENT_FENCE",
6058                BufferEventType::ReleaseFence => "RELEASE_FENCE",
6059                BufferEventType::Modify => "MODIFY",
6060                BufferEventType::Detach => "DETACH",
6061                BufferEventType::Attach => "ATTACH",
6062                BufferEventType::Cancel => "CANCEL",
6063            }
6064        }
6065    }
6066}
6067// End of protos/perfetto/trace/android/graphics_frame_event.proto
6068
6069// Begin of protos/perfetto/trace/android/initial_display_state.proto
6070
6071#[derive(Clone, PartialEq, ::prost::Message)]
6072pub struct InitialDisplayState {
6073    /// Same values as android.view.Display.STATE_*
6074    #[prost(int32, optional, tag="1")]
6075    pub display_state: ::core::option::Option<i32>,
6076    #[prost(double, optional, tag="2")]
6077    pub brightness: ::core::option::Option<f64>,
6078}
6079// End of protos/perfetto/trace/android/initial_display_state.proto
6080
6081// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
6082
6083#[derive(Clone, PartialEq, ::prost::Message)]
6084pub struct KernelWakelockData {
6085    /// This is only emitted when we encounter new wakelocks.
6086    #[prost(message, repeated, tag="1")]
6087    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
6088    /// Interning id.
6089    #[prost(uint32, repeated, tag="2")]
6090    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
6091    /// If we interned the wakelock name in this packet, this is the total time
6092    /// the wakelock has been held.
6093    /// If not, it's a delta from the last time we saw it.
6094    #[prost(uint64, repeated, tag="3")]
6095    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
6096    #[prost(uint64, optional, tag="4")]
6097    pub error_flags: ::core::option::Option<u64>,
6098}
6099/// Nested message and enum types in `KernelWakelockData`.
6100pub mod kernel_wakelock_data {
6101    #[derive(Clone, PartialEq, ::prost::Message)]
6102    pub struct Wakelock {
6103        /// Interning id.
6104        #[prost(uint32, optional, tag="1")]
6105        pub wakelock_id: ::core::option::Option<u32>,
6106        /// Name of the wakelock.
6107        #[prost(string, optional, tag="2")]
6108        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
6109        /// Type of the wakelock. We record data about both true kernel wakelocks
6110        /// and "native" wakelocks which are taken in userspace but are more
6111        /// conceptually similar to kernel wakelocks than normal userspace ones.
6112        #[prost(enumeration="wakelock::Type", optional, tag="3")]
6113        pub wakelock_type: ::core::option::Option<i32>,
6114    }
6115    /// Nested message and enum types in `Wakelock`.
6116    pub mod wakelock {
6117        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6118        #[repr(i32)]
6119        pub enum Type {
6120            WakelockTypeUnknown = 0,
6121            WakelockTypeKernel = 1,
6122            WakelockTypeNative = 2,
6123        }
6124        impl Type {
6125            /// String value of the enum field names used in the ProtoBuf definition.
6126            ///
6127            /// The values are not transformed in any way and thus are considered stable
6128            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6129            pub fn as_str_name(&self) -> &'static str {
6130                match self {
6131                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
6132                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
6133                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
6134                }
6135            }
6136        }
6137    }
6138}
6139/// NetworkPacketEvent records the details of a single packet sent or received
6140/// on the network (in Linux kernel terminology, one sk_buff struct).
6141#[derive(Clone, PartialEq, ::prost::Message)]
6142pub struct NetworkPacketEvent {
6143    /// The direction traffic is flowing for this event.
6144    #[prost(enumeration="TrafficDirection", optional, tag="1")]
6145    pub direction: ::core::option::Option<i32>,
6146    /// The name of the network interface if available (e.g. 'rmnet0').
6147    #[prost(string, optional, tag="2")]
6148    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
6149    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
6150    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
6151    /// NetworkPacketContext.
6152    #[prost(uint32, optional, tag="3")]
6153    pub length: ::core::option::Option<u32>,
6154    /// The Linux user id associated with the packet's socket.
6155    #[prost(uint32, optional, tag="4")]
6156    pub uid: ::core::option::Option<u32>,
6157    /// The Android network tag associated with the packet's socket.
6158    #[prost(uint32, optional, tag="5")]
6159    pub tag: ::core::option::Option<u32>,
6160    /// The packet's IP protocol (TCP=6, UDP=17, etc).
6161    #[prost(uint32, optional, tag="6")]
6162    pub ip_proto: ::core::option::Option<u32>,
6163    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
6164    #[prost(uint32, optional, tag="7")]
6165    pub tcp_flags: ::core::option::Option<u32>,
6166    /// The local udp/tcp port of the packet.
6167    #[prost(uint32, optional, tag="8")]
6168    pub local_port: ::core::option::Option<u32>,
6169    /// The remote udp/tcp port of the packet.
6170    #[prost(uint32, optional, tag="9")]
6171    pub remote_port: ::core::option::Option<u32>,
6172    /// The 1-byte ICMP type identifier.
6173    #[prost(uint32, optional, tag="10")]
6174    pub icmp_type: ::core::option::Option<u32>,
6175    /// The 1-byte ICMP code identifier.
6176    #[prost(uint32, optional, tag="11")]
6177    pub icmp_code: ::core::option::Option<u32>,
6178}
6179/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
6180#[derive(Clone, PartialEq, ::prost::Message)]
6181pub struct NetworkPacketBundle {
6182    /// The timestamp of the i-th packet encoded as the nanoseconds since the
6183    /// enclosing TracePacket's timestamp.
6184    #[prost(uint64, repeated, tag="3")]
6185    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
6186    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
6187    #[prost(uint32, repeated, tag="4")]
6188    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
6189    /// Total number of packets in the bundle (when above aggregation_threshold).
6190    #[prost(uint32, optional, tag="5")]
6191    pub total_packets: ::core::option::Option<u32>,
6192    /// Duration between first and last packet (when above aggregation_threshold).
6193    #[prost(uint64, optional, tag="6")]
6194    pub total_duration: ::core::option::Option<u64>,
6195    /// Total packet length in bytes (when above aggregation_threshold).
6196    #[prost(uint64, optional, tag="7")]
6197    pub total_length: ::core::option::Option<u64>,
6198    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
6199    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
6200}
6201/// Nested message and enum types in `NetworkPacketBundle`.
6202pub mod network_packet_bundle {
6203    #[derive(Clone, PartialEq, ::prost::Oneof)]
6204    pub enum PacketContext {
6205        /// The intern id for looking up the associated packet context.
6206        #[prost(uint64, tag="1")]
6207        Iid(u64),
6208        /// The inlined context for events in this bundle.
6209        #[prost(message, tag="2")]
6210        Ctx(super::NetworkPacketEvent),
6211    }
6212}
6213/// An internable packet context.
6214#[derive(Clone, PartialEq, ::prost::Message)]
6215pub struct NetworkPacketContext {
6216    #[prost(uint64, optional, tag="1")]
6217    pub iid: ::core::option::Option<u64>,
6218    #[prost(message, optional, tag="2")]
6219    pub ctx: ::core::option::Option<NetworkPacketEvent>,
6220}
6221// End of protos/perfetto/trace/android/network_trace.proto
6222
6223// Begin of protos/perfetto/trace/android/packages_list.proto
6224
6225#[derive(Clone, PartialEq, ::prost::Message)]
6226pub struct PackagesList {
6227    #[prost(message, repeated, tag="1")]
6228    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
6229    /// At least one error occurred parsing the packages.list.
6230    #[prost(bool, optional, tag="2")]
6231    pub parse_error: ::core::option::Option<bool>,
6232    /// Failed to open / read packages.list.
6233    #[prost(bool, optional, tag="3")]
6234    pub read_error: ::core::option::Option<bool>,
6235}
6236/// Nested message and enum types in `PackagesList`.
6237pub mod packages_list {
6238    #[derive(Clone, PartialEq, ::prost::Message)]
6239    pub struct PackageInfo {
6240        #[prost(string, optional, tag="1")]
6241        pub name: ::core::option::Option<::prost::alloc::string::String>,
6242        #[prost(uint64, optional, tag="2")]
6243        pub uid: ::core::option::Option<u64>,
6244        #[prost(bool, optional, tag="3")]
6245        pub debuggable: ::core::option::Option<bool>,
6246        #[prost(bool, optional, tag="4")]
6247        pub profileable_from_shell: ::core::option::Option<bool>,
6248        #[prost(int64, optional, tag="5")]
6249        pub version_code: ::core::option::Option<i64>,
6250    }
6251}
6252// End of protos/perfetto/trace/android/packages_list.proto
6253
6254// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
6255
6256#[derive(Clone, PartialEq, ::prost::Message)]
6257pub struct PixelModemEvents {
6258    /// Pigweed-format dehydrated events.
6259    #[prost(bytes="vec", repeated, tag="1")]
6260    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
6261    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
6262    /// timestamp is the absolute timestamp of the first event. Subsequent
6263    /// timestamps are deltas from the previous timestamp.
6264    /// The nth entry from `events` gets the nth entry here.
6265    #[prost(uint64, repeated, packed="false", tag="2")]
6266    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
6267}
6268/// NB: this is not emitted in the trace but can be prepended later.
6269#[derive(Clone, PartialEq, ::prost::Message)]
6270pub struct PixelModemTokenDatabase {
6271    /// Pigweed-format database to allow event rehydration.
6272    #[prost(bytes="vec", optional, tag="1")]
6273    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6274}
6275// End of protos/perfetto/trace/android/pixel_modem_events.proto
6276
6277// Begin of protos/perfetto/trace/android/protolog.proto
6278
6279/// represents a single log entry 
6280#[derive(Clone, PartialEq, ::prost::Message)]
6281pub struct ProtoLogMessage {
6282    /// log statement identifier, created from message string and log level. 
6283    #[prost(fixed64, optional, tag="1")]
6284    pub message_id: ::core::option::Option<u64>,
6285    /// string parameters passed to the log call that have been interned. 
6286    #[prost(uint32, repeated, packed="false", tag="2")]
6287    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
6288    /// integer parameters passed to the log call. 
6289    #[prost(sint64, repeated, packed="false", tag="3")]
6290    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
6291    /// floating point parameters passed to the log call. 
6292    #[prost(double, repeated, packed="false", tag="4")]
6293    pub double_params: ::prost::alloc::vec::Vec<f64>,
6294    /// boolean parameters passed to the log call. 
6295    #[prost(int32, repeated, packed="false", tag="5")]
6296    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
6297    /// id of the interned stacktrace string
6298    /// (only dumped if explicitly confuigured to do so)
6299    #[prost(uint32, optional, tag="6")]
6300    pub stacktrace_iid: ::core::option::Option<u32>,
6301}
6302/// contains all the data required to fully decode the protolog messages 
6303#[derive(Clone, PartialEq, ::prost::Message)]
6304pub struct ProtoLogViewerConfig {
6305    #[prost(message, repeated, tag="1")]
6306    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
6307    #[prost(message, repeated, tag="2")]
6308    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
6309}
6310/// Nested message and enum types in `ProtoLogViewerConfig`.
6311pub mod proto_log_viewer_config {
6312    #[derive(Clone, PartialEq, ::prost::Message)]
6313    pub struct MessageData {
6314        /// the id of the message that is logged in a ProtoLogMessage
6315        #[prost(fixed64, optional, tag="1")]
6316        pub message_id: ::core::option::Option<u64>,
6317        /// the string representation of the message
6318        #[prost(string, optional, tag="2")]
6319        pub message: ::core::option::Option<::prost::alloc::string::String>,
6320        /// the level of the message
6321        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
6322        pub level: ::core::option::Option<i32>,
6323        /// the id of the log group this message belongs to
6324        #[prost(uint32, optional, tag="4")]
6325        pub group_id: ::core::option::Option<u32>,
6326        /// path to the file where the message was logged
6327        #[prost(string, optional, tag="5")]
6328        pub location: ::core::option::Option<::prost::alloc::string::String>,
6329    }
6330    /// information about a ProtoLog log group 
6331    #[derive(Clone, PartialEq, ::prost::Message)]
6332    pub struct Group {
6333        #[prost(uint32, optional, tag="1")]
6334        pub id: ::core::option::Option<u32>,
6335        #[prost(string, optional, tag="2")]
6336        pub name: ::core::option::Option<::prost::alloc::string::String>,
6337        #[prost(string, optional, tag="3")]
6338        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6339    }
6340}
6341// End of protos/perfetto/trace/android/protolog.proto
6342
6343// Begin of protos/perfetto/trace/android/graphics/rect.proto
6344
6345#[derive(Clone, PartialEq, ::prost::Message)]
6346pub struct RectProto {
6347    #[prost(int32, optional, tag="1")]
6348    pub left: ::core::option::Option<i32>,
6349    #[prost(int32, optional, tag="2")]
6350    pub top: ::core::option::Option<i32>,
6351    #[prost(int32, optional, tag="3")]
6352    pub right: ::core::option::Option<i32>,
6353    #[prost(int32, optional, tag="4")]
6354    pub bottom: ::core::option::Option<i32>,
6355}
6356// End of protos/perfetto/trace/android/graphics/rect.proto
6357
6358// Begin of protos/perfetto/trace/android/shell_transition.proto
6359
6360/// ShellTransition messages record information about the shell transitions in
6361/// the system. This is used to track the animations that are created and execute
6362/// through the shell transition system.
6363#[derive(Clone, PartialEq, ::prost::Message)]
6364pub struct ShellTransition {
6365    /// The unique identifier of the transition.
6366    #[prost(int32, optional, tag="1")]
6367    pub id: ::core::option::Option<i32>,
6368    /// The time the transition was created on the WM side
6369    /// (using SystemClock.elapsedRealtimeNanos())
6370    #[prost(int64, optional, tag="2")]
6371    pub create_time_ns: ::core::option::Option<i64>,
6372    /// The time the transition was sent from the WM side to shell
6373    /// (using SystemClock.elapsedRealtimeNanos())
6374    #[prost(int64, optional, tag="3")]
6375    pub send_time_ns: ::core::option::Option<i64>,
6376    /// The time the transition was dispatched by shell to execute
6377    /// (using SystemClock.elapsedRealtimeNanos())
6378    #[prost(int64, optional, tag="4")]
6379    pub dispatch_time_ns: ::core::option::Option<i64>,
6380    /// If the transition merge was accepted by the transition handler, this
6381    /// contains the time the transition was merged into transition with id
6382    /// `merge_target`.
6383    /// (using SystemClock.elapsedRealtimeNanos())
6384    #[prost(int64, optional, tag="5")]
6385    pub merge_time_ns: ::core::option::Option<i64>,
6386    /// The time shell proposed the transition should be merged to the transition
6387    /// handler into transition with id `merge_target`.
6388    /// (using SystemClock.elapsedRealtimeNanos()).
6389    #[prost(int64, optional, tag="6")]
6390    pub merge_request_time_ns: ::core::option::Option<i64>,
6391    /// If the transition was aborted on the shell side, this is the time that
6392    /// occurred.
6393    /// (using SystemClock.elapsedRealtimeNanos())
6394    #[prost(int64, optional, tag="7")]
6395    pub shell_abort_time_ns: ::core::option::Option<i64>,
6396    /// If the transition was aborted on the wm side, this is the time that
6397    /// occurred.
6398    /// (using SystemClock.elapsedRealtimeNanos())
6399    #[prost(int64, optional, tag="8")]
6400    pub wm_abort_time_ns: ::core::option::Option<i64>,
6401    /// The time WM considers the transition to be complete.
6402    /// (using SystemClock.elapsedRealtimeNanos())
6403    #[prost(int64, optional, tag="9")]
6404    pub finish_time_ns: ::core::option::Option<i64>,
6405    /// The id of the transaction that WM proposed to use as the starting
6406    /// transaction. It contains all the layer changes required to setup the
6407    /// transition and should be executed right at the start of the transition
6408    /// by the transition handler.
6409    #[prost(uint64, optional, tag="10")]
6410    pub start_transaction_id: ::core::option::Option<u64>,
6411    /// The if of the transaction that WM proposed to use as the finish
6412    /// transaction. It contains all the layer changes required to set the final
6413    /// state of the transition.
6414    #[prost(uint64, optional, tag="11")]
6415    pub finish_transaction_id: ::core::option::Option<u64>,
6416    /// The id of the handler that executed the transition. A HandlerMappings
6417    /// message in the trace will contain the mapping of id to a string
6418    /// representation of the handler.
6419    #[prost(int32, optional, tag="12")]
6420    pub handler: ::core::option::Option<i32>,
6421    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
6422    #[prost(int32, optional, tag="13")]
6423    pub r#type: ::core::option::Option<i32>,
6424    /// The list of changes that are part of this transition.
6425    #[prost(message, repeated, tag="14")]
6426    pub changes: ::prost::alloc::vec::Vec<shell_transition::Change>,
6427    /// The id of the transition we have requested to merge or have merged this
6428    /// transition into.
6429    #[prost(int32, optional, tag="15")]
6430    pub merge_target: ::core::option::Option<i32>,
6431    /// The flags set on this transition.
6432    #[prost(int32, optional, tag="16")]
6433    pub flags: ::core::option::Option<i32>,
6434    /// The time the starting window was removed. Tracked because this can
6435    /// happen after the transition finishes, but the app may not yet be visible
6436    /// until the starting window is removed. So in a sense the transition is not
6437    /// finished until the starting window is removed. (b/284302118)
6438    /// (using SystemClock.elapsedRealtimeNanos())
6439    #[prost(int64, optional, tag="17")]
6440    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
6441}
6442/// Nested message and enum types in `ShellTransition`.
6443pub mod shell_transition {
6444    /// Contains the information about the windows changed in a transition.
6445    #[derive(Clone, PartialEq, ::prost::Message)]
6446    pub struct Change {
6447        /// The transition mode of this change (e.g. TO_FRONT, CLOSE...)
6448        #[prost(int32, optional, tag="1")]
6449        pub mode: ::core::option::Option<i32>,
6450        /// The layer id of this change.
6451        #[prost(int32, optional, tag="2")]
6452        pub layer_id: ::core::option::Option<i32>,
6453        /// The window id of this change.
6454        #[prost(int32, optional, tag="3")]
6455        pub window_id: ::core::option::Option<i32>,
6456        /// The flags set on this change.
6457        #[prost(int32, optional, tag="4")]
6458        pub flags: ::core::option::Option<i32>,
6459        /// The display id the change is transitioning on before the transition.
6460        #[prost(int32, optional, tag="5")]
6461        pub start_display_id: ::core::option::Option<i32>,
6462        /// The display id the change is transitioning on after the transition.
6463        #[prost(int32, optional, tag="6")]
6464        pub end_display_id: ::core::option::Option<i32>,
6465        /// The rotation of the change before the transition.
6466        #[prost(int32, optional, tag="7")]
6467        pub start_rotation: ::core::option::Option<i32>,
6468        /// The rotation of the change after the transition.
6469        #[prost(int32, optional, tag="8")]
6470        pub end_rotation: ::core::option::Option<i32>,
6471        /// The absolute screen bounds of the change before the transition.
6472        #[prost(message, optional, tag="9")]
6473        pub start_absolute_bounds: ::core::option::Option<super::RectProto>,
6474        /// The absolute screen bounds of the change after the transition.
6475        #[prost(message, optional, tag="10")]
6476        pub end_absolute_bounds: ::core::option::Option<super::RectProto>,
6477    }
6478}
6479/// Contains mappings from handler ids to string representation of the handlers.
6480#[derive(Clone, PartialEq, ::prost::Message)]
6481pub struct ShellHandlerMappings {
6482    #[prost(message, repeated, tag="1")]
6483    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
6484}
6485#[derive(Clone, PartialEq, ::prost::Message)]
6486pub struct ShellHandlerMapping {
6487    /// The id of the handler used in the ShellTransition message.
6488    #[prost(int32, optional, tag="1")]
6489    pub id: ::core::option::Option<i32>,
6490    /// A human readable and meaningful string representation of the handler.
6491    #[prost(string, optional, tag="2")]
6492    pub name: ::core::option::Option<::prost::alloc::string::String>,
6493}
6494// End of protos/perfetto/trace/android/shell_transition.proto
6495
6496// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
6497
6498#[derive(Clone, PartialEq, ::prost::Message)]
6499pub struct RegionProto {
6500    #[prost(message, repeated, tag="2")]
6501    pub rect: ::prost::alloc::vec::Vec<RectProto>,
6502}
6503#[derive(Clone, PartialEq, ::prost::Message)]
6504pub struct SizeProto {
6505    #[prost(int32, optional, tag="1")]
6506    pub w: ::core::option::Option<i32>,
6507    #[prost(int32, optional, tag="2")]
6508    pub h: ::core::option::Option<i32>,
6509}
6510#[derive(Clone, PartialEq, ::prost::Message)]
6511pub struct TransformProto {
6512    #[prost(float, optional, tag="1")]
6513    pub dsdx: ::core::option::Option<f32>,
6514    #[prost(float, optional, tag="2")]
6515    pub dtdx: ::core::option::Option<f32>,
6516    #[prost(float, optional, tag="3")]
6517    pub dsdy: ::core::option::Option<f32>,
6518    #[prost(float, optional, tag="4")]
6519    pub dtdy: ::core::option::Option<f32>,
6520    #[prost(int32, optional, tag="5")]
6521    pub r#type: ::core::option::Option<i32>,
6522}
6523#[derive(Clone, PartialEq, ::prost::Message)]
6524pub struct ColorProto {
6525    #[prost(float, optional, tag="1")]
6526    pub r: ::core::option::Option<f32>,
6527    #[prost(float, optional, tag="2")]
6528    pub g: ::core::option::Option<f32>,
6529    #[prost(float, optional, tag="3")]
6530    pub b: ::core::option::Option<f32>,
6531    #[prost(float, optional, tag="4")]
6532    pub a: ::core::option::Option<f32>,
6533}
6534#[derive(Clone, PartialEq, ::prost::Message)]
6535pub struct InputWindowInfoProto {
6536    #[prost(uint32, optional, tag="1")]
6537    pub layout_params_flags: ::core::option::Option<u32>,
6538    #[prost(int32, optional, tag="2")]
6539    pub layout_params_type: ::core::option::Option<i32>,
6540    #[prost(message, optional, tag="3")]
6541    pub frame: ::core::option::Option<RectProto>,
6542    #[prost(message, optional, tag="4")]
6543    pub touchable_region: ::core::option::Option<RegionProto>,
6544    #[prost(int32, optional, tag="5")]
6545    pub surface_inset: ::core::option::Option<i32>,
6546    #[prost(bool, optional, tag="6")]
6547    pub visible: ::core::option::Option<bool>,
6548    #[deprecated]
6549    #[prost(bool, optional, tag="7")]
6550    pub can_receive_keys: ::core::option::Option<bool>,
6551    #[prost(bool, optional, tag="8")]
6552    pub focusable: ::core::option::Option<bool>,
6553    #[prost(bool, optional, tag="9")]
6554    pub has_wallpaper: ::core::option::Option<bool>,
6555    #[prost(float, optional, tag="10")]
6556    pub global_scale_factor: ::core::option::Option<f32>,
6557    #[deprecated]
6558    #[prost(float, optional, tag="11")]
6559    pub window_x_scale: ::core::option::Option<f32>,
6560    #[deprecated]
6561    #[prost(float, optional, tag="12")]
6562    pub window_y_scale: ::core::option::Option<f32>,
6563    #[prost(int32, optional, tag="13")]
6564    pub crop_layer_id: ::core::option::Option<i32>,
6565    #[prost(bool, optional, tag="14")]
6566    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6567    #[prost(message, optional, tag="15")]
6568    pub touchable_region_crop: ::core::option::Option<RectProto>,
6569    #[prost(message, optional, tag="16")]
6570    pub transform: ::core::option::Option<TransformProto>,
6571    #[prost(uint32, optional, tag="17")]
6572    pub input_config: ::core::option::Option<u32>,
6573}
6574#[derive(Clone, PartialEq, ::prost::Message)]
6575pub struct BlurRegion {
6576    #[prost(uint32, optional, tag="1")]
6577    pub blur_radius: ::core::option::Option<u32>,
6578    #[deprecated]
6579    #[prost(uint32, optional, tag="2")]
6580    pub corner_radius_tl: ::core::option::Option<u32>,
6581    #[deprecated]
6582    #[prost(uint32, optional, tag="3")]
6583    pub corner_radius_tr: ::core::option::Option<u32>,
6584    #[deprecated]
6585    #[prost(uint32, optional, tag="4")]
6586    pub corner_radius_bl: ::core::option::Option<u32>,
6587    #[deprecated]
6588    #[prost(float, optional, tag="5")]
6589    pub corner_radius_br: ::core::option::Option<f32>,
6590    #[prost(float, optional, tag="11")]
6591    pub corner_radius_tlx: ::core::option::Option<f32>,
6592    #[prost(float, optional, tag="12")]
6593    pub corner_radius_tly: ::core::option::Option<f32>,
6594    #[prost(float, optional, tag="13")]
6595    pub corner_radius_trx: ::core::option::Option<f32>,
6596    #[prost(float, optional, tag="14")]
6597    pub corner_radius_try: ::core::option::Option<f32>,
6598    #[prost(float, optional, tag="15")]
6599    pub corner_radius_blx: ::core::option::Option<f32>,
6600    #[prost(float, optional, tag="16")]
6601    pub corner_radius_bly: ::core::option::Option<f32>,
6602    #[prost(float, optional, tag="17")]
6603    pub corner_radius_brx: ::core::option::Option<f32>,
6604    #[prost(float, optional, tag="18")]
6605    pub corner_radius_bry: ::core::option::Option<f32>,
6606    #[prost(float, optional, tag="6")]
6607    pub alpha: ::core::option::Option<f32>,
6608    #[prost(int32, optional, tag="7")]
6609    pub left: ::core::option::Option<i32>,
6610    #[prost(int32, optional, tag="8")]
6611    pub top: ::core::option::Option<i32>,
6612    #[prost(int32, optional, tag="9")]
6613    pub right: ::core::option::Option<i32>,
6614    #[prost(int32, optional, tag="10")]
6615    pub bottom: ::core::option::Option<i32>,
6616}
6617#[derive(Clone, PartialEq, ::prost::Message)]
6618pub struct ColorTransformProto {
6619    /// This will be a 4x4 matrix of float values
6620    #[prost(float, repeated, tag="1")]
6621    pub val: ::prost::alloc::vec::Vec<f32>,
6622}
6623#[derive(Clone, PartialEq, ::prost::Message)]
6624pub struct BoxShadowSettings {
6625    #[prost(message, repeated, tag="1")]
6626    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
6627}
6628/// Nested message and enum types in `BoxShadowSettings`.
6629pub mod box_shadow_settings {
6630    #[derive(Clone, PartialEq, ::prost::Message)]
6631    pub struct BoxShadowParams {
6632        #[prost(float, optional, tag="1")]
6633        pub blur_radius: ::core::option::Option<f32>,
6634        #[prost(float, optional, tag="2")]
6635        pub spread_radius: ::core::option::Option<f32>,
6636        #[prost(int32, optional, tag="3")]
6637        pub color: ::core::option::Option<i32>,
6638        #[prost(float, optional, tag="4")]
6639        pub offset_x: ::core::option::Option<f32>,
6640        #[prost(float, optional, tag="5")]
6641        pub offset_y: ::core::option::Option<f32>,
6642    }
6643}
6644#[derive(Clone, PartialEq, ::prost::Message)]
6645pub struct BorderSettings {
6646    #[prost(float, optional, tag="1")]
6647    pub stroke_width: ::core::option::Option<f32>,
6648    #[prost(int32, optional, tag="2")]
6649    pub color: ::core::option::Option<i32>,
6650}
6651// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
6652
6653/// Message used by Winscope to process legacy trace files.
6654/// Represents a file full of surface flinger trace entries.
6655/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
6656/// (.LYRTRACE), such that they can be easily identified.
6657#[derive(Clone, PartialEq, ::prost::Message)]
6658pub struct LayersTraceFileProto {
6659    /// Must be the first field, set to value in MagicNumber
6660    #[prost(fixed64, optional, tag="1")]
6661    pub magic_number: ::core::option::Option<u64>,
6662    #[prost(message, repeated, tag="2")]
6663    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
6664    /// Offset between real-time clock and elapsed time clock in nanoseconds.
6665    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6666    /// systemTime(SYSTEM_TIME_MONOTONIC)
6667    #[prost(fixed64, optional, tag="3")]
6668    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6669}
6670/// Nested message and enum types in `LayersTraceFileProto`.
6671pub mod layers_trace_file_proto {
6672    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6673    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6674    /// and there's no nice way to put 64bit constants into .proto files.
6675    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6676    #[repr(i32)]
6677    pub enum MagicNumber {
6678        Invalid = 0,
6679        /// LYRT (little-endian ASCII)
6680        L = 1414682956,
6681        /// RACE (little-endian ASCII)
6682        H = 1162035538,
6683    }
6684    impl MagicNumber {
6685        /// String value of the enum field names used in the ProtoBuf definition.
6686        ///
6687        /// The values are not transformed in any way and thus are considered stable
6688        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6689        pub fn as_str_name(&self) -> &'static str {
6690            match self {
6691                MagicNumber::Invalid => "INVALID",
6692                MagicNumber::L => "MAGIC_NUMBER_L",
6693                MagicNumber::H => "MAGIC_NUMBER_H",
6694            }
6695        }
6696    }
6697}
6698#[derive(Clone, PartialEq, ::prost::Message)]
6699pub struct LayersSnapshotProto {
6700    /// elapsed realtime in nanos since boot of when this entry was logged
6701    #[prost(sfixed64, optional, tag="1")]
6702    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6703    /// SurfaceFlinger's stage where the snapshot was triggered.
6704    /// Currently either "visibleRegionsDirty" or "bufferLatched".
6705    #[prost(string, optional, tag="2")]
6706    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
6707    #[prost(message, optional, tag="3")]
6708    pub layers: ::core::option::Option<LayersProto>,
6709    /// Blob for the current HWC information for all layers, reported by dumpsys.
6710    /// Example:
6711    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
6712    #[prost(string, optional, tag="4")]
6713    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
6714    /// Excludes state sent during composition like visible region and composition
6715    /// type.
6716    #[prost(bool, optional, tag="5")]
6717    pub excludes_composition_state: ::core::option::Option<bool>,
6718    /// Number of missed entries since the last entry was recorded.
6719    #[prost(uint32, optional, tag="6")]
6720    pub missed_entries: ::core::option::Option<u32>,
6721    #[prost(message, repeated, tag="7")]
6722    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
6723    #[prost(int64, optional, tag="8")]
6724    pub vsync_id: ::core::option::Option<i64>,
6725}
6726/// Contains a list of all layers.
6727#[derive(Clone, PartialEq, ::prost::Message)]
6728pub struct LayersProto {
6729    #[prost(message, repeated, tag="1")]
6730    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
6731}
6732#[derive(Clone, PartialEq, ::prost::Message)]
6733pub struct DisplayProto {
6734    #[prost(uint64, optional, tag="1")]
6735    pub id: ::core::option::Option<u64>,
6736    /// Display descriptor, e.g. "Built-In Screen"
6737    #[prost(string, optional, tag="2")]
6738    pub name: ::core::option::Option<::prost::alloc::string::String>,
6739    #[prost(uint32, optional, tag="3")]
6740    pub layer_stack: ::core::option::Option<u32>,
6741    #[prost(message, optional, tag="4")]
6742    pub size: ::core::option::Option<SizeProto>,
6743    #[prost(message, optional, tag="5")]
6744    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6745    #[prost(message, optional, tag="6")]
6746    pub transform: ::core::option::Option<TransformProto>,
6747    #[prost(bool, optional, tag="7")]
6748    pub is_virtual: ::core::option::Option<bool>,
6749    #[prost(double, optional, tag="8")]
6750    pub dpi_x: ::core::option::Option<f64>,
6751    #[prost(double, optional, tag="9")]
6752    pub dpi_y: ::core::option::Option<f64>,
6753}
6754/// Information about each layer.
6755#[derive(Clone, PartialEq, ::prost::Message)]
6756pub struct LayerProto {
6757    /// unique id per layer.
6758    #[prost(int32, optional, tag="1")]
6759    pub id: ::core::option::Option<i32>,
6760    /// unique name per layer.
6761    /// Example: "Wallpaper".
6762    #[prost(string, optional, tag="2")]
6763    pub name: ::core::option::Option<::prost::alloc::string::String>,
6764    /// list of children this layer may have. May be empty.
6765    #[prost(int32, repeated, tag="3")]
6766    pub children: ::prost::alloc::vec::Vec<i32>,
6767    /// list of layers that are z order relative to this layer.
6768    #[prost(int32, repeated, tag="4")]
6769    pub relatives: ::prost::alloc::vec::Vec<i32>,
6770    /// The type of layer.
6771    /// Examples: "ContainerLayer", "BufferStateLayer".
6772    #[prost(string, optional, tag="5")]
6773    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
6774    #[prost(message, optional, tag="6")]
6775    pub transparent_region: ::core::option::Option<RegionProto>,
6776    #[prost(message, optional, tag="7")]
6777    pub visible_region: ::core::option::Option<RegionProto>,
6778    #[prost(message, optional, tag="8")]
6779    pub damage_region: ::core::option::Option<RegionProto>,
6780    #[prost(uint32, optional, tag="9")]
6781    pub layer_stack: ::core::option::Option<u32>,
6782    /// The layer's z order. Can be z order in layer stack, relative to parent,
6783    /// or relative to another layer specified in zOrderRelative.
6784    #[prost(int32, optional, tag="10")]
6785    pub z: ::core::option::Option<i32>,
6786    /// The layer's position on the display.
6787    #[prost(message, optional, tag="11")]
6788    pub position: ::core::option::Option<PositionProto>,
6789    /// The layer's requested position.
6790    #[prost(message, optional, tag="12")]
6791    pub requested_position: ::core::option::Option<PositionProto>,
6792    /// The layer's size.
6793    #[prost(message, optional, tag="13")]
6794    pub size: ::core::option::Option<SizeProto>,
6795    /// The layer's crop in its own bounds.
6796    #[prost(message, optional, tag="14")]
6797    pub crop: ::core::option::Option<RectProto>,
6798    /// The layer's crop in its parent's bounds.
6799    #[deprecated]
6800    #[prost(message, optional, tag="15")]
6801    pub final_crop: ::core::option::Option<RectProto>,
6802    #[prost(bool, optional, tag="16")]
6803    pub is_opaque: ::core::option::Option<bool>,
6804    #[prost(bool, optional, tag="17")]
6805    pub invalidate: ::core::option::Option<bool>,
6806    /// Composition states's dataspace.
6807    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
6808    /// See full enum in
6809    /// frameworks/native/libs/nativewindow/include/android/data_space.h
6810    #[prost(string, optional, tag="18")]
6811    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
6812    /// Buffer's pixel format
6813    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
6814    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
6815    #[prost(string, optional, tag="19")]
6816    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
6817    /// The layer's actual color.
6818    #[prost(message, optional, tag="20")]
6819    pub color: ::core::option::Option<ColorProto>,
6820    /// The layer's requested color.
6821    #[prost(message, optional, tag="21")]
6822    pub requested_color: ::core::option::Option<ColorProto>,
6823    /// Can be any combination of
6824    ///     hidden = 0x01
6825    ///     opaque = 0x02,
6826    ///     secure = 0x80,
6827    #[prost(uint32, optional, tag="22")]
6828    pub flags: ::core::option::Option<u32>,
6829    /// The layer's actual transform
6830    #[prost(message, optional, tag="23")]
6831    pub transform: ::core::option::Option<TransformProto>,
6832    /// The layer's requested transform.
6833    #[prost(message, optional, tag="24")]
6834    pub requested_transform: ::core::option::Option<TransformProto>,
6835    /// The parent layer. This value can be null if there is no parent.
6836    #[prost(int32, optional, tag="25")]
6837    pub parent: ::core::option::Option<i32>,
6838    /// The layer that this layer has a z order relative to. This value can be
6839    /// null.
6840    #[prost(int32, optional, tag="26")]
6841    pub z_order_relative_of: ::core::option::Option<i32>,
6842    /// This value can be null if there's nothing to draw.
6843    #[prost(message, optional, tag="27")]
6844    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
6845    /// The number of frames available.
6846    #[prost(int32, optional, tag="28")]
6847    pub queued_frames: ::core::option::Option<i32>,
6848    #[prost(bool, optional, tag="29")]
6849    pub refresh_pending: ::core::option::Option<bool>,
6850    /// The layer's composer backend destination frame
6851    #[prost(message, optional, tag="30")]
6852    pub hwc_frame: ::core::option::Option<RectProto>,
6853    /// The layer's composer backend source crop
6854    #[prost(message, optional, tag="31")]
6855    pub hwc_crop: ::core::option::Option<FloatRectProto>,
6856    /// The layer's composer backend transform
6857    #[prost(int32, optional, tag="32")]
6858    pub hwc_transform: ::core::option::Option<i32>,
6859    #[deprecated]
6860    #[prost(int32, optional, tag="33")]
6861    pub window_type: ::core::option::Option<i32>,
6862    #[deprecated]
6863    #[prost(int32, optional, tag="34")]
6864    pub app_id: ::core::option::Option<i32>,
6865    /// The layer's composition type
6866    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
6867    pub hwc_composition_type: ::core::option::Option<i32>,
6868    /// If it's a buffer layer, indicate if the content is protected
6869    #[prost(bool, optional, tag="36")]
6870    pub is_protected: ::core::option::Option<bool>,
6871    /// Current frame number being rendered.
6872    #[prost(uint64, optional, tag="37")]
6873    pub curr_frame: ::core::option::Option<u64>,
6874    /// A list of barriers that the layer is waiting to update state.
6875    #[prost(message, repeated, tag="38")]
6876    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
6877    /// If active_buffer is not null, record its transform.
6878    #[prost(message, optional, tag="39")]
6879    pub buffer_transform: ::core::option::Option<TransformProto>,
6880    #[prost(int32, optional, tag="40")]
6881    pub effective_scaling_mode: ::core::option::Option<i32>,
6882    /// Layer's corner radius
6883    #[deprecated]
6884    #[prost(float, optional, tag="41")]
6885    pub corner_radius: ::core::option::Option<f32>,
6886    /// Metadata map. May be empty.
6887    #[prost(map="int32, bytes", tag="42")]
6888    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::vec::Vec<u8>>,
6889    #[prost(message, optional, tag="43")]
6890    pub effective_transform: ::core::option::Option<TransformProto>,
6891    #[prost(message, optional, tag="44")]
6892    pub source_bounds: ::core::option::Option<FloatRectProto>,
6893    #[prost(message, optional, tag="45")]
6894    pub bounds: ::core::option::Option<FloatRectProto>,
6895    #[prost(message, optional, tag="46")]
6896    pub screen_bounds: ::core::option::Option<FloatRectProto>,
6897    #[prost(message, optional, tag="47")]
6898    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
6899    /// Crop used to draw the rounded corner.
6900    #[prost(message, optional, tag="48")]
6901    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
6902    /// length of the shadow to draw around the layer, it may be set on the
6903    /// layer or set by a parent layer.
6904    #[prost(float, optional, tag="49")]
6905    pub shadow_radius: ::core::option::Option<f32>,
6906    #[prost(message, optional, tag="50")]
6907    pub color_transform: ::core::option::Option<ColorTransformProto>,
6908    #[prost(bool, optional, tag="51")]
6909    pub is_relative_of: ::core::option::Option<bool>,
6910    /// Layer's background blur radius in pixels.
6911    #[prost(int32, optional, tag="52")]
6912    pub background_blur_radius: ::core::option::Option<i32>,
6913    #[prost(uint32, optional, tag="53")]
6914    pub owner_uid: ::core::option::Option<u32>,
6915    /// Regions of a layer, where blur should be applied.
6916    #[prost(message, repeated, tag="54")]
6917    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6918    #[prost(bool, optional, tag="55")]
6919    pub is_trusted_overlay: ::core::option::Option<bool>,
6920    /// Corner radius explicitly set on layer rather than inherited
6921    #[deprecated]
6922    #[prost(float, optional, tag="56")]
6923    pub requested_corner_radius: ::core::option::Option<f32>,
6924    #[prost(message, optional, tag="57")]
6925    pub destination_frame: ::core::option::Option<RectProto>,
6926    #[prost(uint32, optional, tag="58")]
6927    pub original_id: ::core::option::Option<u32>,
6928    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
6929    pub trusted_overlay: ::core::option::Option<i32>,
6930    /// Layer's scale during background blur, relative to 1.0f=100%
6931    #[prost(float, optional, tag="60")]
6932    pub background_blur_scale: ::core::option::Option<f32>,
6933    /// Layer's corner radius.
6934    #[prost(message, optional, tag="61")]
6935    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
6936    /// Corner radius explicitly set on layer rather than inherited
6937    #[prost(message, optional, tag="62")]
6938    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
6939    /// Corner radius explicity set as drawn by client
6940    #[prost(message, optional, tag="63")]
6941    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
6942    /// Priority value of the layer set by the system.
6943    #[prost(int32, optional, tag="64")]
6944    pub system_content_priority: ::core::option::Option<i32>,
6945    /// Settings which specify how shadows should be drawn for a layer.
6946    #[prost(message, optional, tag="65")]
6947    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6948    /// Settings which specify how an outline should be drawn for a layer.
6949    #[prost(message, optional, tag="66")]
6950    pub border_settings: ::core::option::Option<BorderSettings>,
6951    /// "True" corner radii of the layer computed by SurfaceFlinger.
6952    #[prost(message, optional, tag="67")]
6953    pub effective_radii: ::core::option::Option<CornerRadiiProto>,
6954}
6955#[derive(Clone, PartialEq, ::prost::Message)]
6956pub struct PositionProto {
6957    #[prost(float, optional, tag="1")]
6958    pub x: ::core::option::Option<f32>,
6959    #[prost(float, optional, tag="2")]
6960    pub y: ::core::option::Option<f32>,
6961}
6962#[derive(Clone, PartialEq, ::prost::Message)]
6963pub struct FloatRectProto {
6964    #[prost(float, optional, tag="1")]
6965    pub left: ::core::option::Option<f32>,
6966    #[prost(float, optional, tag="2")]
6967    pub top: ::core::option::Option<f32>,
6968    #[prost(float, optional, tag="3")]
6969    pub right: ::core::option::Option<f32>,
6970    #[prost(float, optional, tag="4")]
6971    pub bottom: ::core::option::Option<f32>,
6972}
6973#[derive(Clone, PartialEq, ::prost::Message)]
6974pub struct CornerRadiiProto {
6975    #[prost(float, optional, tag="1")]
6976    pub tl: ::core::option::Option<f32>,
6977    #[prost(float, optional, tag="2")]
6978    pub tr: ::core::option::Option<f32>,
6979    #[prost(float, optional, tag="3")]
6980    pub bl: ::core::option::Option<f32>,
6981    #[prost(float, optional, tag="4")]
6982    pub br: ::core::option::Option<f32>,
6983}
6984#[derive(Clone, PartialEq, ::prost::Message)]
6985pub struct ActiveBufferProto {
6986    #[prost(uint32, optional, tag="1")]
6987    pub width: ::core::option::Option<u32>,
6988    #[prost(uint32, optional, tag="2")]
6989    pub height: ::core::option::Option<u32>,
6990    #[prost(uint32, optional, tag="3")]
6991    pub stride: ::core::option::Option<u32>,
6992    #[prost(int32, optional, tag="4")]
6993    pub format: ::core::option::Option<i32>,
6994    #[prost(uint64, optional, tag="5")]
6995    pub usage: ::core::option::Option<u64>,
6996}
6997#[derive(Clone, PartialEq, ::prost::Message)]
6998pub struct BarrierLayerProto {
6999    /// layer id the barrier is waiting on.
7000    #[prost(int32, optional, tag="1")]
7001    pub id: ::core::option::Option<i32>,
7002    /// frame number the barrier is waiting on.
7003    #[prost(uint64, optional, tag="2")]
7004    pub frame_number: ::core::option::Option<u64>,
7005}
7006// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
7007
7008// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7009
7010/// Message used by Winscope to process legacy trace files.
7011/// Represents a file full of surface flinger transactions.
7012/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
7013/// (.TNXTRACE), such that they can be easily identified.
7014#[derive(Clone, PartialEq, ::prost::Message)]
7015pub struct TransactionTraceFile {
7016    /// Must be the first field, set to value in MagicNumber
7017    #[prost(fixed64, optional, tag="1")]
7018    pub magic_number: ::core::option::Option<u64>,
7019    #[prost(message, repeated, tag="2")]
7020    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
7021    /// offset between real-time clock and elapsed time clock in nanoseconds.
7022    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
7023    /// systemTime(SYSTEM_TIME_MONOTONIC)
7024    #[prost(fixed64, optional, tag="3")]
7025    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
7026    #[prost(uint32, optional, tag="4")]
7027    pub version: ::core::option::Option<u32>,
7028}
7029/// Nested message and enum types in `TransactionTraceFile`.
7030pub mod transaction_trace_file {
7031    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
7032    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
7033    /// and there's no nice way to put 64bit constants into .proto files.
7034    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7035    #[repr(i32)]
7036    pub enum MagicNumber {
7037        Invalid = 0,
7038        /// TNXT (little-endian ASCII)
7039        L = 1415073364,
7040        /// RACE (little-endian ASCII)
7041        H = 1162035538,
7042    }
7043    impl MagicNumber {
7044        /// String value of the enum field names used in the ProtoBuf definition.
7045        ///
7046        /// The values are not transformed in any way and thus are considered stable
7047        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7048        pub fn as_str_name(&self) -> &'static str {
7049            match self {
7050                MagicNumber::Invalid => "INVALID",
7051                MagicNumber::L => "MAGIC_NUMBER_L",
7052                MagicNumber::H => "MAGIC_NUMBER_H",
7053            }
7054        }
7055    }
7056}
7057#[derive(Clone, PartialEq, ::prost::Message)]
7058pub struct TransactionTraceEntry {
7059    #[prost(int64, optional, tag="1")]
7060    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
7061    #[prost(int64, optional, tag="2")]
7062    pub vsync_id: ::core::option::Option<i64>,
7063    #[prost(message, repeated, tag="3")]
7064    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
7065    #[prost(message, repeated, tag="4")]
7066    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
7067    #[prost(uint32, repeated, packed="false", tag="5")]
7068    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
7069    #[prost(message, repeated, tag="6")]
7070    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
7071    #[prost(int32, repeated, packed="false", tag="7")]
7072    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
7073    #[prost(uint32, repeated, packed="false", tag="8")]
7074    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
7075    #[prost(bool, optional, tag="9")]
7076    pub displays_changed: ::core::option::Option<bool>,
7077    #[prost(message, repeated, tag="10")]
7078    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
7079}
7080#[derive(Clone, PartialEq, ::prost::Message)]
7081pub struct DisplayInfo {
7082    #[prost(uint32, optional, tag="1")]
7083    pub layer_stack: ::core::option::Option<u32>,
7084    #[prost(int32, optional, tag="2")]
7085    pub display_id: ::core::option::Option<i32>,
7086    #[prost(int32, optional, tag="3")]
7087    pub logical_width: ::core::option::Option<i32>,
7088    #[prost(int32, optional, tag="4")]
7089    pub logical_height: ::core::option::Option<i32>,
7090    #[prost(message, optional, tag="5")]
7091    pub transform_inverse: ::core::option::Option<Transform>,
7092    #[prost(message, optional, tag="6")]
7093    pub transform: ::core::option::Option<Transform>,
7094    #[prost(bool, optional, tag="7")]
7095    pub receives_input: ::core::option::Option<bool>,
7096    #[prost(bool, optional, tag="8")]
7097    pub is_secure: ::core::option::Option<bool>,
7098    #[prost(bool, optional, tag="9")]
7099    pub is_primary: ::core::option::Option<bool>,
7100    #[prost(bool, optional, tag="10")]
7101    pub is_virtual: ::core::option::Option<bool>,
7102    #[prost(int32, optional, tag="11")]
7103    pub rotation_flags: ::core::option::Option<i32>,
7104    #[prost(int32, optional, tag="12")]
7105    pub transform_hint: ::core::option::Option<i32>,
7106}
7107#[derive(Clone, PartialEq, ::prost::Message)]
7108pub struct LayerCreationArgs {
7109    #[prost(uint32, optional, tag="1")]
7110    pub layer_id: ::core::option::Option<u32>,
7111    #[prost(string, optional, tag="2")]
7112    pub name: ::core::option::Option<::prost::alloc::string::String>,
7113    #[prost(uint32, optional, tag="3")]
7114    pub flags: ::core::option::Option<u32>,
7115    #[prost(uint32, optional, tag="4")]
7116    pub parent_id: ::core::option::Option<u32>,
7117    #[prost(uint32, optional, tag="5")]
7118    pub mirror_from_id: ::core::option::Option<u32>,
7119    #[prost(bool, optional, tag="6")]
7120    pub add_to_root: ::core::option::Option<bool>,
7121    #[prost(uint32, optional, tag="7")]
7122    pub layer_stack_to_mirror: ::core::option::Option<u32>,
7123}
7124#[derive(Clone, PartialEq, ::prost::Message)]
7125pub struct Transform {
7126    #[prost(float, optional, tag="1")]
7127    pub dsdx: ::core::option::Option<f32>,
7128    #[prost(float, optional, tag="2")]
7129    pub dtdx: ::core::option::Option<f32>,
7130    #[prost(float, optional, tag="3")]
7131    pub dtdy: ::core::option::Option<f32>,
7132    #[prost(float, optional, tag="4")]
7133    pub dsdy: ::core::option::Option<f32>,
7134    #[prost(float, optional, tag="5")]
7135    pub tx: ::core::option::Option<f32>,
7136    #[prost(float, optional, tag="6")]
7137    pub ty: ::core::option::Option<f32>,
7138}
7139#[derive(Clone, PartialEq, ::prost::Message)]
7140pub struct TransactionBarrier {
7141    #[prost(string, optional, tag="1")]
7142    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
7143    #[prost(uint32, optional, tag="2")]
7144    pub kind: ::core::option::Option<u32>,
7145}
7146#[derive(Clone, PartialEq, ::prost::Message)]
7147pub struct TransactionState {
7148    #[prost(int32, optional, tag="1")]
7149    pub pid: ::core::option::Option<i32>,
7150    #[prost(int32, optional, tag="2")]
7151    pub uid: ::core::option::Option<i32>,
7152    #[prost(int64, optional, tag="3")]
7153    pub vsync_id: ::core::option::Option<i64>,
7154    #[prost(int32, optional, tag="4")]
7155    pub input_event_id: ::core::option::Option<i32>,
7156    #[prost(int64, optional, tag="5")]
7157    pub post_time: ::core::option::Option<i64>,
7158    #[prost(uint64, optional, tag="6")]
7159    pub transaction_id: ::core::option::Option<u64>,
7160    #[prost(message, repeated, tag="7")]
7161    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
7162    #[prost(message, repeated, tag="8")]
7163    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
7164    #[prost(uint64, repeated, packed="false", tag="9")]
7165    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
7166    #[prost(uint64, optional, tag="10")]
7167    pub apply_token: ::core::option::Option<u64>,
7168    #[prost(message, repeated, tag="11")]
7169    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
7170}
7171/// Keep insync with layer_state_t
7172#[derive(Clone, PartialEq, ::prost::Message)]
7173pub struct LayerState {
7174    #[prost(uint32, optional, tag="1")]
7175    pub layer_id: ::core::option::Option<u32>,
7176    #[prost(uint64, optional, tag="2")]
7177    pub what: ::core::option::Option<u64>,
7178    #[prost(float, optional, tag="3")]
7179    pub x: ::core::option::Option<f32>,
7180    #[prost(float, optional, tag="4")]
7181    pub y: ::core::option::Option<f32>,
7182    #[prost(int32, optional, tag="5")]
7183    pub z: ::core::option::Option<i32>,
7184    #[prost(uint32, optional, tag="6")]
7185    pub w: ::core::option::Option<u32>,
7186    #[prost(uint32, optional, tag="7")]
7187    pub h: ::core::option::Option<u32>,
7188    #[prost(uint32, optional, tag="8")]
7189    pub layer_stack: ::core::option::Option<u32>,
7190    #[prost(uint32, optional, tag="9")]
7191    pub flags: ::core::option::Option<u32>,
7192    #[prost(uint32, optional, tag="10")]
7193    pub mask: ::core::option::Option<u32>,
7194    #[prost(message, optional, tag="11")]
7195    pub matrix: ::core::option::Option<layer_state::Matrix22>,
7196    #[deprecated]
7197    #[prost(float, optional, tag="12")]
7198    pub corner_radius: ::core::option::Option<f32>,
7199    #[prost(uint32, optional, tag="13")]
7200    pub background_blur_radius: ::core::option::Option<u32>,
7201    #[prost(uint32, optional, tag="14")]
7202    pub parent_id: ::core::option::Option<u32>,
7203    #[prost(uint32, optional, tag="15")]
7204    pub relative_parent_id: ::core::option::Option<u32>,
7205    #[prost(float, optional, tag="16")]
7206    pub alpha: ::core::option::Option<f32>,
7207    #[prost(message, optional, tag="17")]
7208    pub color: ::core::option::Option<layer_state::Color3>,
7209    #[prost(message, optional, tag="18")]
7210    pub transparent_region: ::core::option::Option<RegionProto>,
7211    #[prost(uint32, optional, tag="19")]
7212    pub transform: ::core::option::Option<u32>,
7213    #[prost(bool, optional, tag="20")]
7214    pub transform_to_display_inverse: ::core::option::Option<bool>,
7215    #[prost(message, optional, tag="21")]
7216    pub crop: ::core::option::Option<RectProto>,
7217    #[prost(message, optional, tag="22")]
7218    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
7219    #[prost(int32, optional, tag="23")]
7220    pub api: ::core::option::Option<i32>,
7221    #[prost(bool, optional, tag="24")]
7222    pub has_sideband_stream: ::core::option::Option<bool>,
7223    #[prost(message, optional, tag="25")]
7224    pub color_transform: ::core::option::Option<ColorTransformProto>,
7225    #[prost(message, repeated, tag="26")]
7226    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
7227    #[prost(message, optional, tag="27")]
7228    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
7229    #[prost(float, optional, tag="28")]
7230    pub bg_color_alpha: ::core::option::Option<f32>,
7231    #[prost(int32, optional, tag="29")]
7232    pub bg_color_dataspace: ::core::option::Option<i32>,
7233    #[prost(bool, optional, tag="30")]
7234    pub color_space_agnostic: ::core::option::Option<bool>,
7235    #[prost(float, optional, tag="31")]
7236    pub shadow_radius: ::core::option::Option<f32>,
7237    #[prost(int32, optional, tag="32")]
7238    pub frame_rate_selection_priority: ::core::option::Option<i32>,
7239    #[prost(float, optional, tag="33")]
7240    pub frame_rate: ::core::option::Option<f32>,
7241    #[prost(int32, optional, tag="34")]
7242    pub frame_rate_compatibility: ::core::option::Option<i32>,
7243    #[prost(int32, optional, tag="35")]
7244    pub change_frame_rate_strategy: ::core::option::Option<i32>,
7245    #[prost(uint32, optional, tag="36")]
7246    pub fixed_transform_hint: ::core::option::Option<u32>,
7247    #[prost(uint64, optional, tag="37")]
7248    pub frame_number: ::core::option::Option<u64>,
7249    #[prost(bool, optional, tag="38")]
7250    pub auto_refresh: ::core::option::Option<bool>,
7251    /// unused
7252    #[prost(bool, optional, tag="39")]
7253    pub is_trusted_overlay: ::core::option::Option<bool>,
7254    #[prost(message, optional, tag="40")]
7255    pub buffer_crop: ::core::option::Option<RectProto>,
7256    #[prost(message, optional, tag="41")]
7257    pub destination_frame: ::core::option::Option<RectProto>,
7258    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
7259    pub drop_input_mode: ::core::option::Option<i32>,
7260    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
7261    pub trusted_overlay: ::core::option::Option<i32>,
7262    #[prost(float, optional, tag="44")]
7263    pub background_blur_scale: ::core::option::Option<f32>,
7264    #[prost(message, optional, tag="45")]
7265    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7266    #[prost(message, optional, tag="46")]
7267    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
7268    #[prost(int32, optional, tag="47")]
7269    pub system_content_priority: ::core::option::Option<i32>,
7270    #[prost(message, optional, tag="48")]
7271    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
7272    #[prost(message, optional, tag="49")]
7273    pub border_settings: ::core::option::Option<BorderSettings>,
7274}
7275/// Nested message and enum types in `LayerState`.
7276pub mod layer_state {
7277    #[derive(Clone, PartialEq, ::prost::Message)]
7278    pub struct Matrix22 {
7279        #[prost(float, optional, tag="1")]
7280        pub dsdx: ::core::option::Option<f32>,
7281        #[prost(float, optional, tag="2")]
7282        pub dtdx: ::core::option::Option<f32>,
7283        #[prost(float, optional, tag="3")]
7284        pub dtdy: ::core::option::Option<f32>,
7285        #[prost(float, optional, tag="4")]
7286        pub dsdy: ::core::option::Option<f32>,
7287    }
7288    #[derive(Clone, PartialEq, ::prost::Message)]
7289    pub struct CornerRadii {
7290        #[prost(float, optional, tag="1")]
7291        pub tl: ::core::option::Option<f32>,
7292        #[prost(float, optional, tag="2")]
7293        pub tr: ::core::option::Option<f32>,
7294        #[prost(float, optional, tag="3")]
7295        pub bl: ::core::option::Option<f32>,
7296        #[prost(float, optional, tag="4")]
7297        pub br: ::core::option::Option<f32>,
7298    }
7299    #[derive(Clone, PartialEq, ::prost::Message)]
7300    pub struct Color3 {
7301        #[prost(float, optional, tag="1")]
7302        pub r: ::core::option::Option<f32>,
7303        #[prost(float, optional, tag="2")]
7304        pub g: ::core::option::Option<f32>,
7305        #[prost(float, optional, tag="3")]
7306        pub b: ::core::option::Option<f32>,
7307    }
7308    #[derive(Clone, PartialEq, ::prost::Message)]
7309    pub struct BufferData {
7310        #[prost(uint64, optional, tag="1")]
7311        pub buffer_id: ::core::option::Option<u64>,
7312        #[prost(uint32, optional, tag="2")]
7313        pub width: ::core::option::Option<u32>,
7314        #[prost(uint32, optional, tag="3")]
7315        pub height: ::core::option::Option<u32>,
7316        #[prost(uint64, optional, tag="4")]
7317        pub frame_number: ::core::option::Option<u64>,
7318        #[prost(uint32, optional, tag="5")]
7319        pub flags: ::core::option::Option<u32>,
7320        #[prost(uint64, optional, tag="6")]
7321        pub cached_buffer_id: ::core::option::Option<u64>,
7322        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
7323        pub pixel_format: ::core::option::Option<i32>,
7324        #[prost(uint64, optional, tag="8")]
7325        pub usage: ::core::option::Option<u64>,
7326    }
7327    /// Nested message and enum types in `BufferData`.
7328    pub mod buffer_data {
7329        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7330        #[repr(i32)]
7331        pub enum BufferDataChange {
7332            None = 0,
7333            FenceChanged = 1,
7334            FrameNumberChanged = 2,
7335            CachedBufferChanged = 4,
7336        }
7337        impl BufferDataChange {
7338            /// String value of the enum field names used in the ProtoBuf definition.
7339            ///
7340            /// The values are not transformed in any way and thus are considered stable
7341            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7342            pub fn as_str_name(&self) -> &'static str {
7343                match self {
7344                    BufferDataChange::None => "BufferDataChangeNone",
7345                    BufferDataChange::FenceChanged => "fenceChanged",
7346                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
7347                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
7348                }
7349            }
7350        }
7351        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7352        #[repr(i32)]
7353        pub enum PixelFormat {
7354            Unknown = 0,
7355            Custom = -4,
7356            Translucent = -3,
7357            Transparent = -2,
7358            Opaque = -1,
7359            Rgba8888 = 1,
7360            Rgbx8888 = 2,
7361            Rgb888 = 3,
7362            Rgb565 = 4,
7363            Bgra8888 = 5,
7364            Rgba5551 = 6,
7365            Rgba4444 = 7,
7366            RgbaFp16 = 22,
7367            Rgba1010102 = 43,
7368            R8 = 56,
7369        }
7370        impl PixelFormat {
7371            /// String value of the enum field names used in the ProtoBuf definition.
7372            ///
7373            /// The values are not transformed in any way and thus are considered stable
7374            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7375            pub fn as_str_name(&self) -> &'static str {
7376                match self {
7377                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
7378                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
7379                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
7380                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
7381                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
7382                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
7383                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
7384                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
7385                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
7386                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
7387                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
7388                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
7389                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
7390                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
7391                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
7392                }
7393            }
7394        }
7395    }
7396    #[derive(Clone, PartialEq, ::prost::Message)]
7397    pub struct WindowInfo {
7398        #[prost(uint32, optional, tag="1")]
7399        pub layout_params_flags: ::core::option::Option<u32>,
7400        #[prost(int32, optional, tag="2")]
7401        pub layout_params_type: ::core::option::Option<i32>,
7402        #[prost(message, optional, tag="3")]
7403        pub touchable_region: ::core::option::Option<super::RegionProto>,
7404        #[prost(int32, optional, tag="4")]
7405        pub surface_inset: ::core::option::Option<i32>,
7406        /// unused
7407        #[prost(bool, optional, tag="5")]
7408        pub focusable: ::core::option::Option<bool>,
7409        /// unused
7410        #[prost(bool, optional, tag="6")]
7411        pub has_wallpaper: ::core::option::Option<bool>,
7412        #[prost(float, optional, tag="7")]
7413        pub global_scale_factor: ::core::option::Option<f32>,
7414        #[prost(uint32, optional, tag="8")]
7415        pub crop_layer_id: ::core::option::Option<u32>,
7416        #[prost(bool, optional, tag="9")]
7417        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
7418        #[prost(message, optional, tag="10")]
7419        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
7420        #[prost(message, optional, tag="11")]
7421        pub transform: ::core::option::Option<super::Transform>,
7422        #[prost(uint32, optional, tag="12")]
7423        pub input_config: ::core::option::Option<u32>,
7424    }
7425    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
7426    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
7427    /// enums have to be 32 bits and there's no nice way to put 64bit constants
7428    /// into .proto files.
7429    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7430    #[repr(i32)]
7431    pub enum ChangesLsb {
7432        EChangesLsbNone = 0,
7433        EPositionChanged = 1,
7434        ELayerChanged = 2,
7435        /// unused = 0x00000004;
7436        EAlphaChanged = 8,
7437        EMatrixChanged = 16,
7438        ETransparentRegionChanged = 32,
7439        EFlagsChanged = 64,
7440        ELayerStackChanged = 128,
7441        EReleaseBufferListenerChanged = 1024,
7442        EShadowRadiusChanged = 2048,
7443        EBufferCropChanged = 8192,
7444        ERelativeLayerChanged = 16384,
7445        EReparent = 32768,
7446        EColorChanged = 65536,
7447        EBufferTransformChanged = 262144,
7448        ETransformToDisplayInverseChanged = 524288,
7449        ECropChanged = 1048576,
7450        EBufferChanged = 2097152,
7451        EAcquireFenceChanged = 4194304,
7452        EDataspaceChanged = 8388608,
7453        EHdrMetadataChanged = 16777216,
7454        ESurfaceDamageRegionChanged = 33554432,
7455        EApiChanged = 67108864,
7456        ESidebandStreamChanged = 134217728,
7457        EColorTransformChanged = 268435456,
7458        EHasListenerCallbacksChanged = 536870912,
7459        EInputInfoChanged = 1073741824,
7460        /// 0x80000000; (proto stores enums as signed int)
7461        ECornerRadiusChanged = -2147483648,
7462    }
7463    impl ChangesLsb {
7464        /// String value of the enum field names used in the ProtoBuf definition.
7465        ///
7466        /// The values are not transformed in any way and thus are considered stable
7467        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7468        pub fn as_str_name(&self) -> &'static str {
7469            match self {
7470                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
7471                ChangesLsb::EPositionChanged => "ePositionChanged",
7472                ChangesLsb::ELayerChanged => "eLayerChanged",
7473                ChangesLsb::EAlphaChanged => "eAlphaChanged",
7474                ChangesLsb::EMatrixChanged => "eMatrixChanged",
7475                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
7476                ChangesLsb::EFlagsChanged => "eFlagsChanged",
7477                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
7478                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
7479                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
7480                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
7481                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
7482                ChangesLsb::EReparent => "eReparent",
7483                ChangesLsb::EColorChanged => "eColorChanged",
7484                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
7485                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
7486                ChangesLsb::ECropChanged => "eCropChanged",
7487                ChangesLsb::EBufferChanged => "eBufferChanged",
7488                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
7489                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
7490                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
7491                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
7492                ChangesLsb::EApiChanged => "eApiChanged",
7493                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
7494                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
7495                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
7496                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
7497                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
7498            }
7499        }
7500    }
7501    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7502    #[repr(i32)]
7503    pub enum ChangesMsb {
7504        EChangesMsbNone = 0,
7505        EDestinationFrameChanged = 1,
7506        ECachedBufferChanged = 2,
7507        EBackgroundColorChanged = 4,
7508        EMetadataChanged = 8,
7509        EColorSpaceAgnosticChanged = 16,
7510        EFrameRateSelectionPriority = 32,
7511        EFrameRateChanged = 64,
7512        EBackgroundBlurRadiusChanged = 128,
7513        EProducerDisconnect = 256,
7514        EFixedTransformHintChanged = 512,
7515        EFrameNumberChanged = 1024,
7516        EBlurRegionsChanged = 2048,
7517        EAutoRefreshChanged = 4096,
7518        EStretchChanged = 8192,
7519        ETrustedOverlayChanged = 16384,
7520        EDropInputModeChanged = 32768,
7521        EClientDrawnCornerRadiusChanged = 65536,
7522        ESystemContentPriorityChanged = 131072,
7523        EBoxShadowSettingsChanged = 262144,
7524        EBorderSettingsChanged = 524288,
7525    }
7526    impl ChangesMsb {
7527        /// String value of the enum field names used in the ProtoBuf definition.
7528        ///
7529        /// The values are not transformed in any way and thus are considered stable
7530        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7531        pub fn as_str_name(&self) -> &'static str {
7532            match self {
7533                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
7534                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
7535                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
7536                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
7537                ChangesMsb::EMetadataChanged => "eMetadataChanged",
7538                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
7539                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
7540                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
7541                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
7542                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
7543                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
7544                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
7545                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
7546                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
7547                ChangesMsb::EStretchChanged => "eStretchChanged",
7548                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
7549                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
7550                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
7551                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
7552                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
7553                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
7554            }
7555        }
7556    }
7557    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7558    #[repr(i32)]
7559    pub enum Flags {
7560        EFlagsNone = 0,
7561        ELayerHidden = 1,
7562        ELayerOpaque = 2,
7563        ELayerSkipScreenshot = 64,
7564        ELayerSecure = 128,
7565        EEnableBackpressure = 256,
7566        ELayerIsDisplayDecoration = 512,
7567    }
7568    impl Flags {
7569        /// String value of the enum field names used in the ProtoBuf definition.
7570        ///
7571        /// The values are not transformed in any way and thus are considered stable
7572        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7573        pub fn as_str_name(&self) -> &'static str {
7574            match self {
7575                Flags::EFlagsNone => "eFlagsNone",
7576                Flags::ELayerHidden => "eLayerHidden",
7577                Flags::ELayerOpaque => "eLayerOpaque",
7578                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
7579                Flags::ELayerSecure => "eLayerSecure",
7580                Flags::EEnableBackpressure => "eEnableBackpressure",
7581                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
7582            }
7583        }
7584    }
7585    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7586    #[repr(i32)]
7587    pub enum DropInputMode {
7588        None = 0,
7589        All = 1,
7590        Obscured = 2,
7591    }
7592    impl DropInputMode {
7593        /// String value of the enum field names used in the ProtoBuf definition.
7594        ///
7595        /// The values are not transformed in any way and thus are considered stable
7596        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7597        pub fn as_str_name(&self) -> &'static str {
7598            match self {
7599                DropInputMode::None => "NONE",
7600                DropInputMode::All => "ALL",
7601                DropInputMode::Obscured => "OBSCURED",
7602            }
7603        }
7604    }
7605}
7606#[derive(Clone, PartialEq, ::prost::Message)]
7607pub struct DisplayState {
7608    #[prost(int32, optional, tag="1")]
7609    pub id: ::core::option::Option<i32>,
7610    #[prost(uint32, optional, tag="2")]
7611    pub what: ::core::option::Option<u32>,
7612    #[prost(uint32, optional, tag="3")]
7613    pub flags: ::core::option::Option<u32>,
7614    #[prost(uint32, optional, tag="4")]
7615    pub layer_stack: ::core::option::Option<u32>,
7616    #[prost(uint32, optional, tag="5")]
7617    pub orientation: ::core::option::Option<u32>,
7618    #[prost(message, optional, tag="6")]
7619    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
7620    #[prost(message, optional, tag="7")]
7621    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
7622    #[prost(uint32, optional, tag="8")]
7623    pub width: ::core::option::Option<u32>,
7624    #[prost(uint32, optional, tag="9")]
7625    pub height: ::core::option::Option<u32>,
7626}
7627/// Nested message and enum types in `DisplayState`.
7628pub mod display_state {
7629    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7630    #[repr(i32)]
7631    pub enum Changes {
7632        EChangesNone = 0,
7633        ESurfaceChanged = 1,
7634        ELayerStackChanged = 2,
7635        EDisplayProjectionChanged = 4,
7636        EDisplaySizeChanged = 8,
7637        EFlagsChanged = 16,
7638    }
7639    impl Changes {
7640        /// String value of the enum field names used in the ProtoBuf definition.
7641        ///
7642        /// The values are not transformed in any way and thus are considered stable
7643        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7644        pub fn as_str_name(&self) -> &'static str {
7645            match self {
7646                Changes::EChangesNone => "eChangesNone",
7647                Changes::ESurfaceChanged => "eSurfaceChanged",
7648                Changes::ELayerStackChanged => "eLayerStackChanged",
7649                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
7650                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
7651                Changes::EFlagsChanged => "eFlagsChanged",
7652            }
7653        }
7654    }
7655}
7656// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7657
7658// Begin of protos/perfetto/trace/android/user_list.proto
7659
7660#[derive(Clone, PartialEq, ::prost::Message)]
7661pub struct AndroidUserList {
7662    #[prost(message, repeated, tag="1")]
7663    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7664    /// Error number
7665    #[prost(int32, optional, tag="2")]
7666    pub error: ::core::option::Option<i32>,
7667}
7668/// Nested message and enum types in `AndroidUserList`.
7669pub mod android_user_list {
7670    #[derive(Clone, PartialEq, ::prost::Message)]
7671    pub struct UserInfo {
7672        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7673        #[prost(string, optional, tag="1")]
7674        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7675        #[prost(int32, optional, tag="2")]
7676        pub uid: ::core::option::Option<i32>,
7677    }
7678}
7679// End of protos/perfetto/trace/android/user_list.proto
7680
7681// Begin of protos/perfetto/trace/android/winscope_extensions.proto
7682
7683#[derive(Clone, PartialEq, ::prost::Message)]
7684pub struct WinscopeExtensions {
7685}
7686// End of protos/perfetto/trace/android/winscope_extensions.proto
7687
7688// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7689
7690/// This message is not intended to be written by the chrome on the device.
7691/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7692/// part of the trace that's written by the telemetry tracing agent).
7693#[derive(Clone, PartialEq, ::prost::Message)]
7694pub struct ChromeBenchmarkMetadata {
7695    /// Time when the benchmark execution started (host unixtime in microseconds).
7696    #[prost(int64, optional, tag="1")]
7697    pub benchmark_start_time_us: ::core::option::Option<i64>,
7698    /// Time when this particular story was run (host unixtime in microseconds).
7699    #[prost(int64, optional, tag="2")]
7700    pub story_run_time_us: ::core::option::Option<i64>,
7701    /// Name of benchmark.
7702    #[prost(string, optional, tag="3")]
7703    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7704    /// Description of benchmark.
7705    #[prost(string, optional, tag="4")]
7706    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7707    /// Optional label.
7708    #[prost(string, optional, tag="5")]
7709    pub label: ::core::option::Option<::prost::alloc::string::String>,
7710    /// Name of story.
7711    #[prost(string, optional, tag="6")]
7712    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7713    /// List of story tags.
7714    #[prost(string, repeated, tag="7")]
7715    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7716    /// Index of the story run (>0 if the same story was run several times).
7717    #[prost(int32, optional, tag="8")]
7718    pub story_run_index: ::core::option::Option<i32>,
7719    /// Whether this run failed.
7720    #[prost(bool, optional, tag="9")]
7721    pub had_failures: ::core::option::Option<bool>,
7722}
7723// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7724
7725// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
7726
7727/// Metadata for chrome traces.
7728#[derive(Clone, PartialEq, ::prost::Message)]
7729pub struct ChromeMetadataPacket {
7730    #[prost(message, optional, tag="1")]
7731    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7732    /// Version code of Chrome used by Android's Play Store. This field is only set
7733    /// on Android.
7734    #[prost(int32, optional, tag="2")]
7735    pub chrome_version_code: ::core::option::Option<i32>,
7736    /// Comma separated list of enabled categories for tracing. The list of
7737    /// possible category strings are listed in code
7738    /// base/trace_event/builtin_categories.h.
7739    #[prost(string, optional, tag="3")]
7740    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7741    /// List of Finch study/groups that apply to this trace.
7742    #[prost(message, repeated, tag="4")]
7743    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7744    /// The package name of the app which is being traced. This field is only set
7745    /// on Android.
7746    #[prost(string, optional, tag="5")]
7747    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
7748}
7749/// Nested message and enum types in `ChromeMetadataPacket`.
7750pub mod chrome_metadata_packet {
7751    /// Finch name and group based on the ActiveGroupId.
7752    #[derive(Clone, PartialEq, ::prost::Message)]
7753    pub struct FinchHash {
7754        #[prost(uint32, optional, tag="1")]
7755        pub name: ::core::option::Option<u32>,
7756        #[prost(uint32, optional, tag="2")]
7757        pub group: ::core::option::Option<u32>,
7758    }
7759}
7760/// Metadata related to background tracing scenarios, states and triggers.
7761#[derive(Clone, PartialEq, ::prost::Message)]
7762pub struct BackgroundTracingMetadata {
7763    /// Specifies the rule that caused the trace to be uploaded.
7764    #[prost(message, optional, tag="1")]
7765    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7766    /// List of all active triggers in current session, when trace was triggered.
7767    #[prost(message, repeated, tag="2")]
7768    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7769    /// Hash of the scenario name.
7770    #[prost(fixed32, optional, tag="3")]
7771    pub scenario_name_hash: ::core::option::Option<u32>,
7772}
7773/// Nested message and enum types in `BackgroundTracingMetadata`.
7774pub mod background_tracing_metadata {
7775    /// Information about a trigger rule defined in the experiment config.
7776    #[derive(Clone, PartialEq, ::prost::Message)]
7777    pub struct TriggerRule {
7778        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
7779        pub trigger_type: ::core::option::Option<i32>,
7780        #[prost(message, optional, tag="2")]
7781        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7782        #[prost(message, optional, tag="3")]
7783        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7784        /// Hash of the rule name.
7785        #[prost(fixed32, optional, tag="4")]
7786        pub name_hash: ::core::option::Option<u32>,
7787    }
7788    /// Nested message and enum types in `TriggerRule`.
7789    pub mod trigger_rule {
7790        /// Configuration of histogram trigger.
7791        #[derive(Clone, PartialEq, ::prost::Message)]
7792        pub struct HistogramRule {
7793            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7794            #[prost(fixed64, optional, tag="1")]
7795            pub histogram_name_hash: ::core::option::Option<u64>,
7796            /// Range of values of the histogram that activates trigger.
7797            #[prost(int64, optional, tag="2")]
7798            pub histogram_min_trigger: ::core::option::Option<i64>,
7799            #[prost(int64, optional, tag="3")]
7800            pub histogram_max_trigger: ::core::option::Option<i64>,
7801        }
7802        /// Configuration of named trigger.
7803        #[derive(Clone, PartialEq, ::prost::Message)]
7804        pub struct NamedRule {
7805            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
7806            pub event_type: ::core::option::Option<i32>,
7807            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7808            /// content-trigger that actually fired.
7809            #[prost(fixed64, optional, tag="2")]
7810            pub content_trigger_name_hash: ::core::option::Option<u64>,
7811        }
7812        /// Nested message and enum types in `NamedRule`.
7813        pub mod named_rule {
7814            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7815            #[repr(i32)]
7816            pub enum EventType {
7817                Unspecified = 0,
7818                SessionRestore = 1,
7819                Navigation = 2,
7820                Startup = 3,
7821                ReachedCode = 4,
7822                ContentTrigger = 5,
7823                TestRule = 1000,
7824            }
7825            impl EventType {
7826                /// String value of the enum field names used in the ProtoBuf definition.
7827                ///
7828                /// The values are not transformed in any way and thus are considered stable
7829                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7830                pub fn as_str_name(&self) -> &'static str {
7831                    match self {
7832                        EventType::Unspecified => "UNSPECIFIED",
7833                        EventType::SessionRestore => "SESSION_RESTORE",
7834                        EventType::Navigation => "NAVIGATION",
7835                        EventType::Startup => "STARTUP",
7836                        EventType::ReachedCode => "REACHED_CODE",
7837                        EventType::ContentTrigger => "CONTENT_TRIGGER",
7838                        EventType::TestRule => "TEST_RULE",
7839                    }
7840                }
7841            }
7842        }
7843        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7844        #[repr(i32)]
7845        pub enum TriggerType {
7846            TriggerUnspecified = 0,
7847            /// Traces are triggered by specific range of values of an UMA histogram.
7848            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7849            /// Traces are triggered by specific named events in chromium codebase,
7850            /// like "second-update-failure".
7851            MonitorAndDumpWhenTriggerNamed = 2,
7852        }
7853        impl TriggerType {
7854            /// String value of the enum field names used in the ProtoBuf definition.
7855            ///
7856            /// The values are not transformed in any way and thus are considered stable
7857            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7858            pub fn as_str_name(&self) -> &'static str {
7859                match self {
7860                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7861                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
7862                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
7863                }
7864            }
7865        }
7866    }
7867}
7868// End of protos/perfetto/trace/chrome/chrome_metadata.proto
7869
7870// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
7871
7872#[derive(Clone, PartialEq, ::prost::Message)]
7873pub struct ChromeTracedValue {
7874    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
7875    pub nested_type: ::core::option::Option<i32>,
7876    #[prost(string, repeated, tag="2")]
7877    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7878    #[prost(message, repeated, tag="3")]
7879    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7880    #[prost(message, repeated, tag="4")]
7881    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7882    #[prost(int32, optional, tag="5")]
7883    pub int_value: ::core::option::Option<i32>,
7884    #[prost(double, optional, tag="6")]
7885    pub double_value: ::core::option::Option<f64>,
7886    #[prost(bool, optional, tag="7")]
7887    pub bool_value: ::core::option::Option<bool>,
7888    #[prost(string, optional, tag="8")]
7889    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7890}
7891/// Nested message and enum types in `ChromeTracedValue`.
7892pub mod chrome_traced_value {
7893    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7894    #[repr(i32)]
7895    pub enum NestedType {
7896        Dict = 0,
7897        Array = 1,
7898    }
7899    impl NestedType {
7900        /// String value of the enum field names used in the ProtoBuf definition.
7901        ///
7902        /// The values are not transformed in any way and thus are considered stable
7903        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7904        pub fn as_str_name(&self) -> &'static str {
7905            match self {
7906                NestedType::Dict => "DICT",
7907                NestedType::Array => "ARRAY",
7908            }
7909        }
7910    }
7911}
7912#[derive(Clone, PartialEq, ::prost::Message)]
7913pub struct ChromeStringTableEntry {
7914    #[prost(string, optional, tag="1")]
7915    pub value: ::core::option::Option<::prost::alloc::string::String>,
7916    #[prost(int32, optional, tag="2")]
7917    pub index: ::core::option::Option<i32>,
7918}
7919/// Deprecated, use TrackEvent protos instead.
7920#[derive(Clone, PartialEq, ::prost::Message)]
7921pub struct ChromeTraceEvent {
7922    #[prost(string, optional, tag="1")]
7923    pub name: ::core::option::Option<::prost::alloc::string::String>,
7924    #[prost(int64, optional, tag="2")]
7925    pub timestamp: ::core::option::Option<i64>,
7926    #[prost(int32, optional, tag="3")]
7927    pub phase: ::core::option::Option<i32>,
7928    #[prost(int32, optional, tag="4")]
7929    pub thread_id: ::core::option::Option<i32>,
7930    #[prost(int64, optional, tag="5")]
7931    pub duration: ::core::option::Option<i64>,
7932    #[prost(int64, optional, tag="6")]
7933    pub thread_duration: ::core::option::Option<i64>,
7934    #[prost(string, optional, tag="7")]
7935    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7936    #[prost(uint64, optional, tag="8")]
7937    pub id: ::core::option::Option<u64>,
7938    #[prost(uint32, optional, tag="9")]
7939    pub flags: ::core::option::Option<u32>,
7940    #[prost(string, optional, tag="10")]
7941    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7942    #[prost(int32, optional, tag="11")]
7943    pub process_id: ::core::option::Option<i32>,
7944    #[prost(int64, optional, tag="12")]
7945    pub thread_timestamp: ::core::option::Option<i64>,
7946    #[prost(uint64, optional, tag="13")]
7947    pub bind_id: ::core::option::Option<u64>,
7948    #[prost(message, repeated, tag="14")]
7949    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7950    /// Takes precedence over respectively |name| and
7951    /// |category_group_name_index| if set,
7952    /// and are indices into |string_table|.
7953    #[prost(uint32, optional, tag="15")]
7954    pub name_index: ::core::option::Option<u32>,
7955    #[prost(uint32, optional, tag="16")]
7956    pub category_group_name_index: ::core::option::Option<u32>,
7957}
7958/// Nested message and enum types in `ChromeTraceEvent`.
7959pub mod chrome_trace_event {
7960    #[derive(Clone, PartialEq, ::prost::Message)]
7961    pub struct Arg {
7962        #[prost(string, optional, tag="1")]
7963        pub name: ::core::option::Option<::prost::alloc::string::String>,
7964        /// Takes precedence over |name| if set,
7965        /// and is an index into |string_table|.
7966        #[prost(uint32, optional, tag="9")]
7967        pub name_index: ::core::option::Option<u32>,
7968        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
7969        pub value: ::core::option::Option<arg::Value>,
7970    }
7971    /// Nested message and enum types in `Arg`.
7972    pub mod arg {
7973        #[derive(Clone, PartialEq, ::prost::Oneof)]
7974        pub enum Value {
7975            #[prost(bool, tag="2")]
7976            BoolValue(bool),
7977            #[prost(uint64, tag="3")]
7978            UintValue(u64),
7979            #[prost(int64, tag="4")]
7980            IntValue(i64),
7981            #[prost(double, tag="5")]
7982            DoubleValue(f64),
7983            #[prost(string, tag="6")]
7984            StringValue(::prost::alloc::string::String),
7985            /// Pointers are stored in a separate type as the JSON output treats them
7986            /// differently from other uint64 values.
7987            #[prost(uint64, tag="7")]
7988            PointerValue(u64),
7989            #[prost(string, tag="8")]
7990            JsonValue(::prost::alloc::string::String),
7991            #[prost(message, tag="10")]
7992            TracedValue(super::super::ChromeTracedValue),
7993        }
7994    }
7995}
7996#[derive(Clone, PartialEq, ::prost::Message)]
7997pub struct ChromeMetadata {
7998    #[prost(string, optional, tag="1")]
7999    pub name: ::core::option::Option<::prost::alloc::string::String>,
8000    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
8001    pub value: ::core::option::Option<chrome_metadata::Value>,
8002}
8003/// Nested message and enum types in `ChromeMetadata`.
8004pub mod chrome_metadata {
8005    #[derive(Clone, PartialEq, ::prost::Oneof)]
8006    pub enum Value {
8007        #[prost(string, tag="2")]
8008        StringValue(::prost::alloc::string::String),
8009        #[prost(bool, tag="3")]
8010        BoolValue(bool),
8011        #[prost(int64, tag="4")]
8012        IntValue(i64),
8013        #[prost(string, tag="5")]
8014        JsonValue(::prost::alloc::string::String),
8015    }
8016}
8017/// Subtraces produced in legacy json format by Chrome tracing agents not yet
8018/// updated to support the new binary format, e.g. ETW and CrOS ARC.
8019/// TODO(eseckler): Update these agents to become perfetto producers.
8020#[derive(Clone, PartialEq, ::prost::Message)]
8021pub struct ChromeLegacyJsonTrace {
8022    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
8023    pub r#type: ::core::option::Option<i32>,
8024    #[prost(string, optional, tag="2")]
8025    pub data: ::core::option::Option<::prost::alloc::string::String>,
8026}
8027/// Nested message and enum types in `ChromeLegacyJsonTrace`.
8028pub mod chrome_legacy_json_trace {
8029    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8030    #[repr(i32)]
8031    pub enum TraceType {
8032        UserTrace = 0,
8033        /// Deprecated.
8034        SystemTrace = 1,
8035    }
8036    impl TraceType {
8037        /// String value of the enum field names used in the ProtoBuf definition.
8038        ///
8039        /// The values are not transformed in any way and thus are considered stable
8040        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8041        pub fn as_str_name(&self) -> &'static str {
8042            match self {
8043                TraceType::UserTrace => "USER_TRACE",
8044                TraceType::SystemTrace => "SYSTEM_TRACE",
8045            }
8046        }
8047    }
8048}
8049#[derive(Clone, PartialEq, ::prost::Message)]
8050pub struct ChromeEventBundle {
8051    /// Deprecated, use TrackEvent protos instead.
8052    #[deprecated]
8053    #[prost(message, repeated, tag="1")]
8054    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
8055    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
8056    /// which contains typed fields.
8057    #[prost(message, repeated, tag="2")]
8058    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
8059    /// ftrace output from CrOS and Cast system tracing agents.
8060    /// TODO(eseckler): Replace system traces with native perfetto service.
8061    #[prost(string, repeated, tag="4")]
8062    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8063    #[prost(message, repeated, tag="5")]
8064    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
8065    /// Contents of a string table that's valid for
8066    /// the whole ChromeEventBundle entry.
8067    #[deprecated]
8068    #[prost(message, repeated, tag="3")]
8069    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
8070}
8071// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
8072
8073// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
8074
8075/// Information about a specific trigger during a background tracing scenario
8076/// Associated packet timestamps are useful to delimitate a scenario range in a
8077/// trace. Triggers are also useful for filtering traces.
8078#[derive(Clone, PartialEq, ::prost::Message)]
8079pub struct ChromeTrigger {
8080    /// Name of the trigger which was received.
8081    #[prost(string, optional, tag="1")]
8082    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
8083    /// SHA1 hash of the trigger name.
8084    #[prost(fixed32, optional, tag="2")]
8085    pub trigger_name_hash: ::core::option::Option<u32>,
8086    /// Flow id which should terminate on this trigger.
8087    #[prost(fixed64, optional, tag="3")]
8088    pub flow_id: ::core::option::Option<u64>,
8089}
8090// End of protos/perfetto/trace/chrome/chrome_trigger.proto
8091
8092// Begin of protos/perfetto/trace/chrome/v8.proto
8093
8094// These are the protos for the V8 data source.
8095//
8096// All events are associated to a V8 isolate instance. There can be multiple
8097// instances associated to a given thread, although this is rare.
8098//
8099// Generated code in V8 is allocated in the V8 heap (in a special executeable
8100// section), this means that code can be garbage collected (when no longer used)
8101// or can be moved around (e.g. during heap compactation). This means that a
8102// given callsite might correspond to function `A` at one point in time and to
8103// function `B` later on.
8104// In addition V8 code has various levels of optimization, so a function might
8105// have multiple associated code snippets.
8106//
8107// V8 does not track code deletion, so we have to indirectly infer it by
8108// detecting code overlaps, if a newer code creation event overlaps with older
8109// code we need to asume that the old code was deleted. Code moves are logged,
8110// and there is an event to track those.
8111
8112/// Strings used by V8 can have different encodings, instead of coverting to a
8113/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
8114/// "raw" string and do the convestion at trace ingestion time.
8115///
8116/// ATTENTION: There is some overhead in using a message (as opossed to having
8117/// the `oneof encoded_string`` direcly embedded in the message), so use this
8118/// message in places were these extra bytes don't matter that much.
8119/// Next id: 5
8120#[derive(Clone, PartialEq, ::prost::Message)]
8121pub struct V8String {
8122    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
8123    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
8124}
8125/// Nested message and enum types in `V8String`.
8126pub mod v8_string {
8127    #[derive(Clone, PartialEq, ::prost::Oneof)]
8128    pub enum EncodedString {
8129        /// ISO/IEC 8859-1:1998 encoding aka latin1
8130        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8131        #[prost(bytes, tag="1")]
8132        Latin1(::prost::alloc::vec::Vec<u8>),
8133        /// UTF-16 Little Endian Encoding
8134        #[prost(bytes, tag="2")]
8135        Utf16Le(::prost::alloc::vec::Vec<u8>),
8136        /// UTF-16 Big Endian Encoding
8137        #[prost(bytes, tag="3")]
8138        Utf16Be(::prost::alloc::vec::Vec<u8>),
8139    }
8140}
8141/// Interned version of V8String
8142#[derive(Clone, PartialEq, ::prost::Message)]
8143pub struct InternedV8String {
8144    #[prost(uint64, optional, tag="1")]
8145    pub iid: ::core::option::Option<u64>,
8146    /// We inline the fields in V8String here to save some bytes in the serialized
8147    /// proto format. Interning is about saving bytes so this makes sense here.
8148    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
8149    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
8150}
8151/// Nested message and enum types in `InternedV8String`.
8152pub mod interned_v8_string {
8153    /// We inline the fields in V8String here to save some bytes in the serialized
8154    /// proto format. Interning is about saving bytes so this makes sense here.
8155    #[derive(Clone, PartialEq, ::prost::Oneof)]
8156    pub enum EncodedString {
8157        /// ISO/IEC 8859-1:1998 encoding aka latin1
8158        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8159        #[prost(bytes, tag="2")]
8160        Latin1(::prost::alloc::vec::Vec<u8>),
8161        /// UTF-16 Little Endian Encoding
8162        #[prost(bytes, tag="3")]
8163        Utf16Le(::prost::alloc::vec::Vec<u8>),
8164        /// UTF-16 Big Endian Encoding
8165        #[prost(bytes, tag="4")]
8166        Utf16Be(::prost::alloc::vec::Vec<u8>),
8167    }
8168}
8169/// Represents a script that was compiled to generate code. Some V8 code is
8170/// generated out of scripts and will reference a V8Script other types of code
8171/// will not (e.g. builtins).
8172#[derive(Clone, PartialEq, ::prost::Message)]
8173pub struct InternedV8JsScript {
8174    #[prost(uint64, optional, tag="1")]
8175    pub iid: ::core::option::Option<u64>,
8176    /// Unique in a given isolate
8177    #[prost(int32, optional, tag="2")]
8178    pub script_id: ::core::option::Option<i32>,
8179    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
8180    pub r#type: ::core::option::Option<i32>,
8181    #[prost(message, optional, tag="4")]
8182    pub name: ::core::option::Option<V8String>,
8183    /// Actual source of the script
8184    #[prost(message, optional, tag="5")]
8185    pub source: ::core::option::Option<V8String>,
8186}
8187/// Nested message and enum types in `InternedV8JsScript`.
8188pub mod interned_v8_js_script {
8189    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8190    #[repr(i32)]
8191    pub enum Type {
8192        Unknown = 0,
8193        Normal = 1,
8194        Eval = 2,
8195        Module = 3,
8196        Native = 4,
8197        Extension = 5,
8198        Inspector = 6,
8199    }
8200    impl Type {
8201        /// String value of the enum field names used in the ProtoBuf definition.
8202        ///
8203        /// The values are not transformed in any way and thus are considered stable
8204        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8205        pub fn as_str_name(&self) -> &'static str {
8206            match self {
8207                Type::Unknown => "TYPE_UNKNOWN",
8208                Type::Normal => "TYPE_NORMAL",
8209                Type::Eval => "TYPE_EVAL",
8210                Type::Module => "TYPE_MODULE",
8211                Type::Native => "TYPE_NATIVE",
8212                Type::Extension => "TYPE_EXTENSION",
8213                Type::Inspector => "TYPE_INSPECTOR",
8214            }
8215        }
8216    }
8217}
8218#[derive(Clone, PartialEq, ::prost::Message)]
8219pub struct InternedV8WasmScript {
8220    #[prost(uint64, optional, tag="1")]
8221    pub iid: ::core::option::Option<u64>,
8222    /// Unique in a given isolate
8223    #[prost(int32, optional, tag="2")]
8224    pub script_id: ::core::option::Option<i32>,
8225    #[prost(string, optional, tag="3")]
8226    pub url: ::core::option::Option<::prost::alloc::string::String>,
8227    /// Raw transferred wasm native module wire bytes.
8228    #[prost(bytes="vec", optional, tag="4")]
8229    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8230}
8231#[derive(Clone, PartialEq, ::prost::Message)]
8232pub struct InternedV8JsFunction {
8233    #[prost(uint64, optional, tag="1")]
8234    pub iid: ::core::option::Option<u64>,
8235    #[prost(uint64, optional, tag="2")]
8236    pub v8_js_function_name_iid: ::core::option::Option<u64>,
8237    #[prost(uint64, optional, tag="3")]
8238    pub v8_js_script_iid: ::core::option::Option<u64>,
8239    #[prost(bool, optional, tag="4")]
8240    pub is_toplevel: ::core::option::Option<bool>,
8241    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
8242    pub kind: ::core::option::Option<i32>,
8243    /// Where in the script source this function is defined. This is counted in
8244    /// bytes not characters.
8245    #[prost(uint32, optional, tag="6")]
8246    pub byte_offset: ::core::option::Option<u32>,
8247    #[prost(uint32, optional, tag="7")]
8248    pub line: ::core::option::Option<u32>,
8249    #[prost(uint32, optional, tag="8")]
8250    pub column: ::core::option::Option<u32>,
8251}
8252/// Nested message and enum types in `InternedV8JsFunction`.
8253pub mod interned_v8_js_function {
8254    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8255    #[repr(i32)]
8256    pub enum Kind {
8257        Unknown = 0,
8258        NormalFunction = 1,
8259        Module = 2,
8260        AsyncModule = 3,
8261        BaseConstructor = 4,
8262        DefaultBaseConstructor = 5,
8263        DefaultDerivedConstructor = 6,
8264        DerivedConstructor = 7,
8265        GetterFunction = 8,
8266        StaticGetterFunction = 9,
8267        SetterFunction = 10,
8268        StaticSetterFunction = 11,
8269        ArrowFunction = 12,
8270        AsyncArrowFunction = 13,
8271        AsyncFunction = 14,
8272        AsyncConciseMethod = 15,
8273        StaticAsyncConciseMethod = 16,
8274        AsyncConciseGeneratorMethod = 17,
8275        StaticAsyncConciseGeneratorMethod = 18,
8276        AsyncGeneratorFunction = 19,
8277        GeneratorFunction = 20,
8278        ConciseGeneratorMethod = 21,
8279        StaticConciseGeneratorMethod = 22,
8280        ConciseMethod = 23,
8281        StaticConciseMethod = 24,
8282        ClassMembersInitializerFunction = 25,
8283        ClassStaticInitializerFunction = 26,
8284        Invalid = 27,
8285    }
8286    impl Kind {
8287        /// String value of the enum field names used in the ProtoBuf definition.
8288        ///
8289        /// The values are not transformed in any way and thus are considered stable
8290        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8291        pub fn as_str_name(&self) -> &'static str {
8292            match self {
8293                Kind::Unknown => "KIND_UNKNOWN",
8294                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
8295                Kind::Module => "KIND_MODULE",
8296                Kind::AsyncModule => "KIND_ASYNC_MODULE",
8297                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
8298                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
8299                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
8300                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
8301                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
8302                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
8303                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
8304                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
8305                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
8306                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
8307                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
8308                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
8309                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
8310                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
8311                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
8312                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
8313                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
8314                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
8315                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
8316                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
8317                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
8318                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
8319                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
8320                Kind::Invalid => "KIND_INVALID",
8321            }
8322        }
8323    }
8324}
8325/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
8326/// engine.
8327#[derive(Clone, PartialEq, ::prost::Message)]
8328pub struct InternedV8Isolate {
8329    #[prost(uint64, optional, tag="1")]
8330    pub iid: ::core::option::Option<u64>,
8331    #[prost(uint32, optional, tag="2")]
8332    pub pid: ::core::option::Option<u32>,
8333    /// Process unique isolate id.
8334    #[prost(int32, optional, tag="3")]
8335    pub isolate_id: ::core::option::Option<i32>,
8336    #[prost(message, optional, tag="4")]
8337    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8338    /// The embedded blob holds code for built in functions that are precompiled in
8339    /// the V8 library.
8340    #[prost(uint64, optional, tag="5")]
8341    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8342    #[prost(uint64, optional, tag="6")]
8343    pub embedded_blob_code_size: ::core::option::Option<u64>,
8344}
8345/// Nested message and enum types in `InternedV8Isolate`.
8346pub mod interned_v8_isolate {
8347    /// A code range is a virtual memory cage that may contain executable code.
8348    /// Depending on the Isolate settings the Isolate might have one or not.
8349    /// See:
8350    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
8351    /// If the isolate defines code range this will be tracked here.
8352    #[derive(Clone, PartialEq, ::prost::Message)]
8353    pub struct CodeRange {
8354        #[prost(uint64, optional, tag="1")]
8355        pub base_address: ::core::option::Option<u64>,
8356        #[prost(uint64, optional, tag="2")]
8357        pub size: ::core::option::Option<u64>,
8358        /// Used when short builtin calls are enabled, where embedded builtins are
8359        /// copied into the CodeRange so calls can be nearer.
8360        #[prost(uint64, optional, tag="3")]
8361        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
8362        /// Whether this code range is shared with other Isolates in the same process
8363        #[prost(bool, optional, tag="4")]
8364        pub is_process_wide: ::core::option::Option<bool>,
8365    }
8366}
8367#[derive(Clone, PartialEq, ::prost::Message)]
8368pub struct V8JsCode {
8369    #[prost(uint64, optional, tag="1")]
8370    pub v8_isolate_iid: ::core::option::Option<u64>,
8371    #[prost(uint32, optional, tag="2")]
8372    pub tid: ::core::option::Option<u32>,
8373    #[prost(uint64, optional, tag="3")]
8374    pub v8_js_function_iid: ::core::option::Option<u64>,
8375    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
8376    pub tier: ::core::option::Option<i32>,
8377    #[prost(uint64, optional, tag="5")]
8378    pub instruction_start: ::core::option::Option<u64>,
8379    #[prost(uint64, optional, tag="6")]
8380    pub instruction_size_bytes: ::core::option::Option<u64>,
8381    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
8382    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8383    #[prost(oneof="v8_js_code::SourceMap", tags="9, 10, 11")]
8384    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
8385}
8386/// Nested message and enum types in `V8JsCode`.
8387pub mod v8_js_code {
8388    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8389    #[repr(i32)]
8390    pub enum Tier {
8391        Unknown = 0,
8392        Ignition = 1,
8393        Sparkplug = 2,
8394        Maglev = 3,
8395        Turboshaft = 4,
8396        Turbofan = 5,
8397    }
8398    impl Tier {
8399        /// String value of the enum field names used in the ProtoBuf definition.
8400        ///
8401        /// The values are not transformed in any way and thus are considered stable
8402        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8403        pub fn as_str_name(&self) -> &'static str {
8404            match self {
8405                Tier::Unknown => "TIER_UNKNOWN",
8406                Tier::Ignition => "TIER_IGNITION",
8407                Tier::Sparkplug => "TIER_SPARKPLUG",
8408                Tier::Maglev => "TIER_MAGLEV",
8409                Tier::Turboshaft => "TIER_TURBOSHAFT",
8410                Tier::Turbofan => "TIER_TURBOFAN",
8411            }
8412        }
8413    }
8414    #[derive(Clone, PartialEq, ::prost::Oneof)]
8415    pub enum Instructions {
8416        #[prost(bytes, tag="7")]
8417        MachineCode(::prost::alloc::vec::Vec<u8>),
8418        #[prost(bytes, tag="8")]
8419        Bytecode(::prost::alloc::vec::Vec<u8>),
8420    }
8421    #[derive(Clone, PartialEq, ::prost::Oneof)]
8422    pub enum SourceMap {
8423        /// For Ignition / bytecode:
8424        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
8425        ///     related js function)
8426        #[prost(bytes, tag="9")]
8427        SourcePositions(::prost::alloc::vec::Vec<u8>),
8428        /// For Sparkplug code:
8429        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
8430        ///     ignition code object for the same js-function.
8431        #[prost(bytes, tag="10")]
8432        BytecodePositions(::prost::alloc::vec::Vec<u8>),
8433        /// For optimized code:
8434        /// - Maps machine-code-ranges to bytecode ranges in various
8435        ///    ignition code objects (inlining might happen from multiple functions)
8436        #[prost(bytes, tag="11")]
8437        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
8438    }
8439}
8440#[derive(Clone, PartialEq, ::prost::Message)]
8441pub struct V8InternalCode {
8442    #[prost(uint64, optional, tag="1")]
8443    pub v8_isolate_iid: ::core::option::Option<u64>,
8444    #[prost(uint32, optional, tag="2")]
8445    pub tid: ::core::option::Option<u32>,
8446    #[prost(string, optional, tag="3")]
8447    pub name: ::core::option::Option<::prost::alloc::string::String>,
8448    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
8449    pub r#type: ::core::option::Option<i32>,
8450    #[prost(int32, optional, tag="5")]
8451    pub builtin_id: ::core::option::Option<i32>,
8452    #[prost(uint64, optional, tag="6")]
8453    pub instruction_start: ::core::option::Option<u64>,
8454    #[prost(uint64, optional, tag="7")]
8455    pub instruction_size_bytes: ::core::option::Option<u64>,
8456    #[prost(bytes="vec", optional, tag="8")]
8457    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8458}
8459/// Nested message and enum types in `V8InternalCode`.
8460pub mod v8_internal_code {
8461    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8462    #[repr(i32)]
8463    pub enum Type {
8464        Unknown = 0,
8465        BytecodeHandler = 1,
8466        ForTesting = 2,
8467        Builtin = 3,
8468        WasmFunction = 4,
8469        WasmToCapiFunction = 5,
8470        WasmToJsFunction = 6,
8471        JsToWasmFunction = 7,
8472        JsToJsFunction = 8,
8473        CWasmEntry = 9,
8474    }
8475    impl Type {
8476        /// String value of the enum field names used in the ProtoBuf definition.
8477        ///
8478        /// The values are not transformed in any way and thus are considered stable
8479        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8480        pub fn as_str_name(&self) -> &'static str {
8481            match self {
8482                Type::Unknown => "TYPE_UNKNOWN",
8483                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8484                Type::ForTesting => "TYPE_FOR_TESTING",
8485                Type::Builtin => "TYPE_BUILTIN",
8486                Type::WasmFunction => "TYPE_WASM_FUNCTION",
8487                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8488                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8489                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8490                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8491                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
8492            }
8493        }
8494    }
8495}
8496#[derive(Clone, PartialEq, ::prost::Message)]
8497pub struct V8WasmCode {
8498    #[prost(uint64, optional, tag="1")]
8499    pub v8_isolate_iid: ::core::option::Option<u64>,
8500    #[prost(uint32, optional, tag="2")]
8501    pub tid: ::core::option::Option<u32>,
8502    #[prost(uint64, optional, tag="3")]
8503    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8504    #[prost(string, optional, tag="4")]
8505    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8506    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
8507    pub tier: ::core::option::Option<i32>,
8508    #[prost(int32, optional, tag="6")]
8509    pub code_offset_in_module: ::core::option::Option<i32>,
8510    #[prost(uint64, optional, tag="7")]
8511    pub instruction_start: ::core::option::Option<u64>,
8512    #[prost(uint64, optional, tag="8")]
8513    pub instruction_size_bytes: ::core::option::Option<u64>,
8514    #[prost(bytes="vec", optional, tag="9")]
8515    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8516}
8517/// Nested message and enum types in `V8WasmCode`.
8518pub mod v8_wasm_code {
8519    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8520    #[repr(i32)]
8521    pub enum Tier {
8522        Unknown = 0,
8523        Liftoff = 1,
8524        Turbofan = 2,
8525    }
8526    impl Tier {
8527        /// String value of the enum field names used in the ProtoBuf definition.
8528        ///
8529        /// The values are not transformed in any way and thus are considered stable
8530        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8531        pub fn as_str_name(&self) -> &'static str {
8532            match self {
8533                Tier::Unknown => "TIER_UNKNOWN",
8534                Tier::Liftoff => "TIER_LIFTOFF",
8535                Tier::Turbofan => "TIER_TURBOFAN",
8536            }
8537        }
8538    }
8539}
8540#[derive(Clone, PartialEq, ::prost::Message)]
8541pub struct V8RegExpCode {
8542    #[prost(uint64, optional, tag="1")]
8543    pub v8_isolate_iid: ::core::option::Option<u64>,
8544    #[prost(uint32, optional, tag="2")]
8545    pub tid: ::core::option::Option<u32>,
8546    #[prost(message, optional, tag="3")]
8547    pub pattern: ::core::option::Option<V8String>,
8548    #[prost(uint64, optional, tag="4")]
8549    pub instruction_start: ::core::option::Option<u64>,
8550    #[prost(uint64, optional, tag="5")]
8551    pub instruction_size_bytes: ::core::option::Option<u64>,
8552    #[prost(bytes="vec", optional, tag="6")]
8553    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8554}
8555/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8556/// memory by V8's GC.
8557#[derive(Clone, PartialEq, ::prost::Message)]
8558pub struct V8CodeMove {
8559    #[prost(uint64, optional, tag="1")]
8560    pub isolate_iid: ::core::option::Option<u64>,
8561    #[prost(uint32, optional, tag="2")]
8562    pub tid: ::core::option::Option<u32>,
8563    #[prost(uint64, optional, tag="3")]
8564    pub from_instruction_start_address: ::core::option::Option<u64>,
8565    #[prost(uint64, optional, tag="4")]
8566    pub to_instruction_start_address: ::core::option::Option<u64>,
8567    #[prost(uint64, optional, tag="5")]
8568    pub instruction_size_bytes: ::core::option::Option<u64>,
8569    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
8570    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
8571}
8572/// Nested message and enum types in `V8CodeMove`.
8573pub mod v8_code_move {
8574    #[derive(Clone, PartialEq, ::prost::Oneof)]
8575    pub enum ToInstructions {
8576        #[prost(bytes, tag="6")]
8577        ToMachineCode(::prost::alloc::vec::Vec<u8>),
8578        #[prost(bytes, tag="7")]
8579        ToBytecode(::prost::alloc::vec::Vec<u8>),
8580    }
8581}
8582#[derive(Clone, PartialEq, ::prost::Message)]
8583pub struct V8CodeDefaults {
8584    #[prost(uint32, optional, tag="1")]
8585    pub tid: ::core::option::Option<u32>,
8586}
8587// End of protos/perfetto/trace/chrome/v8.proto
8588
8589// Begin of protos/perfetto/trace/clock_snapshot.proto
8590
8591/// A snapshot of clock readings to allow for trace alignment.
8592#[derive(Clone, PartialEq, ::prost::Message)]
8593pub struct ClockSnapshot {
8594    #[prost(message, repeated, tag="1")]
8595    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8596    /// The authoritative clock domain for the trace. When set, this definitively
8597    /// overrides the trace time clock. If not set, the trace time clock remains
8598    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
8599    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
8600    /// snapshots). Trace processor will attempt to translate packet/event
8601    /// timestamps from various data sources (and their chosen clock domains) to
8602    /// this domain during import.
8603    #[prost(enumeration="BuiltinClock", optional, tag="2")]
8604    pub primary_trace_clock: ::core::option::Option<i32>,
8605}
8606/// Nested message and enum types in `ClockSnapshot`.
8607pub mod clock_snapshot {
8608    #[derive(Clone, PartialEq, ::prost::Message)]
8609    pub struct Clock {
8610        /// Clock IDs have the following semantic:
8611        /// [1, 63]:    Builtin types, see BuiltinClock from
8612        ///              ../common/builtin_clock.proto.
8613        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
8614        ///              are only valid within the same |trusted_packet_sequence_id|
8615        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8616        ///              that emitted the clock snapshot).
8617        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
8618        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8619        #[prost(uint32, optional, tag="1")]
8620        pub clock_id: ::core::option::Option<u32>,
8621        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8622        /// unit_multiplier_ns field below.
8623        #[prost(uint64, optional, tag="2")]
8624        pub timestamp: ::core::option::Option<u64>,
8625        /// When true each TracePacket's timestamp should be interpreted as a delta
8626        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8627        /// the same packet_sequence_id. Should only be used for user-defined
8628        /// sequence-local clocks. The first packet timestamp after each
8629        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8630        /// the ClockSnapshot.
8631        #[prost(bool, optional, tag="3")]
8632        pub is_incremental: ::core::option::Option<bool>,
8633        /// Allows to specify a custom unit different than the default (ns) for this
8634        /// clock domain.
8635        ///
8636        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8637        ///    as 3000 ns = 3 us.
8638        /// * All snapshots for the same clock within a trace need to use the same
8639        ///    unit.
8640        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8641        #[prost(uint64, optional, tag="4")]
8642        pub unit_multiplier_ns: ::core::option::Option<u64>,
8643    }
8644    /// Nested message and enum types in `Clock`.
8645    pub mod clock {
8646        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8647        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8648        #[repr(i32)]
8649        pub enum BuiltinClocks {
8650            Unknown = 0,
8651            Realtime = 1,
8652            RealtimeCoarse = 2,
8653            Monotonic = 3,
8654            MonotonicCoarse = 4,
8655            MonotonicRaw = 5,
8656            Boottime = 6,
8657            BuiltinClockMaxId = 63,
8658        }
8659        impl BuiltinClocks {
8660            /// String value of the enum field names used in the ProtoBuf definition.
8661            ///
8662            /// The values are not transformed in any way and thus are considered stable
8663            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8664            pub fn as_str_name(&self) -> &'static str {
8665                match self {
8666                    BuiltinClocks::Unknown => "UNKNOWN",
8667                    BuiltinClocks::Realtime => "REALTIME",
8668                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
8669                    BuiltinClocks::Monotonic => "MONOTONIC",
8670                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
8671                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
8672                    BuiltinClocks::Boottime => "BOOTTIME",
8673                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8674                }
8675            }
8676        }
8677    }
8678}
8679// End of protos/perfetto/trace/clock_snapshot.proto
8680
8681// Begin of protos/perfetto/trace/etw/etw.proto
8682
8683/// Proto definition based on the Thread_v2 CSwitch class definition
8684/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8685#[derive(Clone, PartialEq, ::prost::Message)]
8686pub struct CSwitchEtwEvent {
8687    /// New thread ID after the switch.
8688    #[prost(uint32, optional, tag="1")]
8689    pub new_thread_id: ::core::option::Option<u32>,
8690    /// Previous thread ID.
8691    #[prost(uint32, optional, tag="2")]
8692    pub old_thread_id: ::core::option::Option<u32>,
8693    /// Thread priority of the new thread.
8694    #[prost(sint32, optional, tag="3")]
8695    pub new_thread_priority: ::core::option::Option<i32>,
8696    /// Thread priority of the previous thread.
8697    #[prost(sint32, optional, tag="4")]
8698    pub old_thread_priority: ::core::option::Option<i32>,
8699    /// The index of the C-state that was last used by the processor. A value of 0
8700    /// represents the lightest idle state with higher values representing deeper
8701    /// C-states.
8702    #[prost(uint32, optional, tag="5")]
8703    pub previous_c_state: ::core::option::Option<u32>,
8704    /// Ideal wait time of the previous thread.
8705    #[prost(sint32, optional, tag="9")]
8706    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8707    /// Wait time for the new thread.
8708    #[prost(uint32, optional, tag="10")]
8709    pub new_thread_wait_time: ::core::option::Option<u32>,
8710    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
8711    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
8712    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
8713    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
8714    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
8715    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
8716}
8717/// Nested message and enum types in `CSwitchEtwEvent`.
8718pub mod c_switch_etw_event {
8719    /// Wait reason for the previous thread. The ordering is important as based on
8720    /// the OldThreadWaitReason definition from the link above. The following are
8721    /// the possible values:
8722    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8723    #[repr(i32)]
8724    pub enum OldThreadWaitReason {
8725        Executive = 0,
8726        FreePage = 1,
8727        PageIn = 2,
8728        PoolAllocation = 3,
8729        DelayExecution = 4,
8730        Suspend = 5,
8731        UserRequest = 6,
8732        WrExecutive = 7,
8733        WrFreePage = 8,
8734        WrPageIn = 9,
8735        WrPoolAllocation = 10,
8736        WrDelayExecution = 11,
8737        WrSuspended = 12,
8738        WrUserRequest = 13,
8739        WrEventPair = 14,
8740        WrQueue = 15,
8741        WrLpcReceiver = 16,
8742        WrLpcReply = 17,
8743        WrVirtualMemory = 18,
8744        WrPageOut = 19,
8745        WrRendezVous = 20,
8746        WrKeyedEvent = 21,
8747        WrTerminated = 22,
8748        WrProcessInSwap = 23,
8749        WrCpuRateControl = 24,
8750        WrCalloutStack = 25,
8751        WrKernel = 26,
8752        WrResource = 27,
8753        WrPushLock = 28,
8754        WrMutex = 29,
8755        WrQuantumEnd = 30,
8756        WrDispatchInt = 31,
8757        WrPreempted = 32,
8758        WrYieldExecution = 33,
8759        WrFastMutex = 34,
8760        WrGuardMutex = 35,
8761        WrRundown = 36,
8762        MaximumWaitReason = 37,
8763    }
8764    impl OldThreadWaitReason {
8765        /// String value of the enum field names used in the ProtoBuf definition.
8766        ///
8767        /// The values are not transformed in any way and thus are considered stable
8768        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8769        pub fn as_str_name(&self) -> &'static str {
8770            match self {
8771                OldThreadWaitReason::Executive => "EXECUTIVE",
8772                OldThreadWaitReason::FreePage => "FREE_PAGE",
8773                OldThreadWaitReason::PageIn => "PAGE_IN",
8774                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
8775                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
8776                OldThreadWaitReason::Suspend => "SUSPEND",
8777                OldThreadWaitReason::UserRequest => "USER_REQUEST",
8778                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
8779                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
8780                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
8781                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
8782                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
8783                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
8784                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
8785                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
8786                OldThreadWaitReason::WrQueue => "WR_QUEUE",
8787                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
8788                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
8789                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8790                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
8791                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
8792                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
8793                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
8794                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8795                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8796                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
8797                OldThreadWaitReason::WrKernel => "WR_KERNEL",
8798                OldThreadWaitReason::WrResource => "WR_RESOURCE",
8799                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
8800                OldThreadWaitReason::WrMutex => "WR_MUTEX",
8801                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
8802                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
8803                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
8804                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
8805                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
8806                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
8807                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
8808                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8809            }
8810        }
8811    }
8812    /// Wait mode for the previous thread. The ordering is important as based on
8813    /// the OldThreadWaitMode definition from the link above. The following are the
8814    /// possible values:
8815    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8816    #[repr(i32)]
8817    pub enum OldThreadWaitMode {
8818        KernelMode = 0,
8819        UserMode = 1,
8820    }
8821    impl OldThreadWaitMode {
8822        /// String value of the enum field names used in the ProtoBuf definition.
8823        ///
8824        /// The values are not transformed in any way and thus are considered stable
8825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8826        pub fn as_str_name(&self) -> &'static str {
8827            match self {
8828                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
8829                OldThreadWaitMode::UserMode => "USER_MODE",
8830            }
8831        }
8832    }
8833    /// State of the previous thread. The ordering is important as based on the
8834    /// OldThreadState definition from the link above. The following are the
8835    /// possible state values:
8836    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8837    #[repr(i32)]
8838    pub enum OldThreadState {
8839        Initialized = 0,
8840        Ready = 1,
8841        Running = 2,
8842        Standby = 3,
8843        Terminated = 4,
8844        Waiting = 5,
8845        Transition = 6,
8846        DeferredReady = 7,
8847    }
8848    impl OldThreadState {
8849        /// String value of the enum field names used in the ProtoBuf definition.
8850        ///
8851        /// The values are not transformed in any way and thus are considered stable
8852        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8853        pub fn as_str_name(&self) -> &'static str {
8854            match self {
8855                OldThreadState::Initialized => "INITIALIZED",
8856                OldThreadState::Ready => "READY",
8857                OldThreadState::Running => "RUNNING",
8858                OldThreadState::Standby => "STANDBY",
8859                OldThreadState::Terminated => "TERMINATED",
8860                OldThreadState::Waiting => "WAITING",
8861                OldThreadState::Transition => "TRANSITION",
8862                OldThreadState::DeferredReady => "DEFERRED_READY",
8863            }
8864        }
8865    }
8866    #[derive(Clone, PartialEq, ::prost::Oneof)]
8867    pub enum OldThreadWaitReasonEnumOrInt {
8868        #[prost(enumeration="OldThreadWaitReason", tag="6")]
8869        OldThreadWaitReason(i32),
8870        #[prost(int32, tag="11")]
8871        OldThreadWaitReasonInt(i32),
8872    }
8873    #[derive(Clone, PartialEq, ::prost::Oneof)]
8874    pub enum OldThreadWaitModeEnumOrInt {
8875        #[prost(enumeration="OldThreadWaitMode", tag="7")]
8876        OldThreadWaitMode(i32),
8877        #[prost(int32, tag="12")]
8878        OldThreadWaitModeInt(i32),
8879    }
8880    #[derive(Clone, PartialEq, ::prost::Oneof)]
8881    pub enum OldThreadStateEnumOrInt {
8882        #[prost(enumeration="OldThreadState", tag="8")]
8883        OldThreadState(i32),
8884        #[prost(sint32, tag="13")]
8885        OldThreadStateInt(i32),
8886    }
8887}
8888/// Proto definition based on the Thread_v2 CSwitch class definition
8889/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8890#[derive(Clone, PartialEq, ::prost::Message)]
8891pub struct ReadyThreadEtwEvent {
8892    /// The thread identifier of the thread being readied for execution.
8893    #[prost(uint32, optional, tag="1")]
8894    pub t_thread_id: ::core::option::Option<u32>,
8895    ///   The value by which the priority is being adjusted.
8896    #[prost(sint32, optional, tag="3")]
8897    pub adjust_increment: ::core::option::Option<i32>,
8898    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
8899    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
8900    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
8901    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8902}
8903/// Nested message and enum types in `ReadyThreadEtwEvent`.
8904pub mod ready_thread_etw_event {
8905    /// The reason for the priority boost. The ordering is important as based on
8906    /// the AdjustReason definition from the link above.
8907    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8908    #[repr(i32)]
8909    pub enum AdjustReason {
8910        IgnoreTheIncrement = 0,
8911        /// Apply the increment, which will decay incrementally at the end of each
8912        /// quantum.
8913        ApplyIncrement = 1,
8914        /// Apply the increment as a boost that will decay in its entirety at quantum
8915        /// (typically for priority donation).
8916        ApplyIncrementBoost = 2,
8917    }
8918    impl AdjustReason {
8919        /// String value of the enum field names used in the ProtoBuf definition.
8920        ///
8921        /// The values are not transformed in any way and thus are considered stable
8922        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8923        pub fn as_str_name(&self) -> &'static str {
8924            match self {
8925                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8926                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
8927                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8928            }
8929        }
8930    }
8931    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8932    #[repr(i32)]
8933    pub enum TraceFlag {
8934        Unspecified = 0,
8935        /// The thread has been readied from DPC (deferred procedure call).
8936        ThreadReadied = 1,
8937        /// The kernel stack is currently swapped out.
8938        KernelStackSwappedOut = 2,
8939        /// The process address space is swapped out.
8940        ProcessAddressSwappedOut = 4,
8941    }
8942    impl TraceFlag {
8943        /// String value of the enum field names used in the ProtoBuf definition.
8944        ///
8945        /// The values are not transformed in any way and thus are considered stable
8946        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8947        pub fn as_str_name(&self) -> &'static str {
8948            match self {
8949                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8950                TraceFlag::ThreadReadied => "THREAD_READIED",
8951                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8952                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8953            }
8954        }
8955    }
8956    #[derive(Clone, PartialEq, ::prost::Oneof)]
8957    pub enum AdjustReasonEnumOrInt {
8958        #[prost(enumeration="AdjustReason", tag="2")]
8959        AdjustReason(i32),
8960        #[prost(int32, tag="5")]
8961        AdjustReasonInt(i32),
8962    }
8963    #[derive(Clone, PartialEq, ::prost::Oneof)]
8964    pub enum FlagEnumOrInt {
8965        #[prost(enumeration="TraceFlag", tag="4")]
8966        Flag(i32),
8967        #[prost(int32, tag="6")]
8968        FlagInt(i32),
8969    }
8970}
8971/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8972/// on local traces using tracerpt:
8973/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8974#[derive(Clone, PartialEq, ::prost::Message)]
8975pub struct MemInfoEtwEvent {
8976    /// Number of memory priorities on the system.
8977    #[prost(uint32, optional, tag="1")]
8978    pub priority_levels: ::core::option::Option<u32>,
8979    /// Number of pages in the zero list.
8980    #[prost(uint64, optional, tag="2")]
8981    pub zero_page_count: ::core::option::Option<u64>,
8982    /// Number of pages in the free list.
8983    #[prost(uint64, optional, tag="3")]
8984    pub free_page_count: ::core::option::Option<u64>,
8985    /// Number of pages in the modified list.
8986    #[prost(uint64, optional, tag="4")]
8987    pub modified_page_count: ::core::option::Option<u64>,
8988    /// Number of modified non-paged pool pages.
8989    #[prost(uint64, optional, tag="5")]
8990    pub modified_no_write_page_count: ::core::option::Option<u64>,
8991    /// Number of bad pages.
8992    #[prost(uint64, optional, tag="6")]
8993    pub bad_page_count: ::core::option::Option<u64>,
8994    /// Number of standby pages by memory priority.
8995    #[prost(uint64, repeated, packed="false", tag="7")]
8996    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8997    /// Number of repurposed pages by memory priority.
8998    #[prost(uint64, repeated, packed="false", tag="8")]
8999    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
9000    /// Modified paged pages.
9001    #[prost(uint64, optional, tag="9")]
9002    pub modified_page_count_page_file: ::core::option::Option<u64>,
9003    /// Pool page counts.
9004    #[prost(uint64, optional, tag="10")]
9005    pub paged_pool_page_count: ::core::option::Option<u64>,
9006    #[prost(uint64, optional, tag="11")]
9007    pub non_paged_pool_page_count: ::core::option::Option<u64>,
9008    /// Memory Descriptor List page count.
9009    #[prost(uint64, optional, tag="12")]
9010    pub mdl_page_count: ::core::option::Option<u64>,
9011    /// Commit weight.
9012    #[prost(uint64, optional, tag="13")]
9013    pub commit_page_count: ::core::option::Option<u64>,
9014}
9015/// Proto definition based on the `FileIo_Create` class definition.
9016#[derive(Clone, PartialEq, ::prost::Message)]
9017pub struct FileIoCreateEtwEvent {
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(uint32, optional, tag="3")]
9023    pub ttid: ::core::option::Option<u32>,
9024    #[prost(uint32, optional, tag="4")]
9025    pub create_options: ::core::option::Option<u32>,
9026    #[prost(uint32, optional, tag="5")]
9027    pub file_attributes: ::core::option::Option<u32>,
9028    #[prost(uint32, optional, tag="6")]
9029    pub share_access: ::core::option::Option<u32>,
9030    #[prost(string, optional, tag="7")]
9031    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
9032}
9033/// Proto definition based on the `FileIo_DirEnum` class definition.
9034#[derive(Clone, PartialEq, ::prost::Message)]
9035pub struct FileIoDirEnumEtwEvent {
9036    #[prost(uint64, optional, tag="1")]
9037    pub irp_ptr: ::core::option::Option<u64>,
9038    #[prost(uint64, optional, tag="2")]
9039    pub file_object: ::core::option::Option<u64>,
9040    #[prost(uint64, optional, tag="3")]
9041    pub file_key: ::core::option::Option<u64>,
9042    #[prost(uint32, optional, tag="4")]
9043    pub ttid: ::core::option::Option<u32>,
9044    #[prost(uint32, optional, tag="5")]
9045    pub length: ::core::option::Option<u32>,
9046    #[prost(uint32, optional, tag="6")]
9047    pub info_class: ::core::option::Option<u32>,
9048    #[prost(uint32, optional, tag="7")]
9049    pub file_index: ::core::option::Option<u32>,
9050    #[prost(string, optional, tag="8")]
9051    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9052    #[prost(uint32, optional, tag="9")]
9053    pub opcode: ::core::option::Option<u32>,
9054}
9055/// Proto definition based on the `FileIo_Info` class definition.
9056#[derive(Clone, PartialEq, ::prost::Message)]
9057pub struct FileIoInfoEtwEvent {
9058    #[prost(uint64, optional, tag="1")]
9059    pub irp_ptr: ::core::option::Option<u64>,
9060    #[prost(uint64, optional, tag="2")]
9061    pub file_object: ::core::option::Option<u64>,
9062    #[prost(uint64, optional, tag="3")]
9063    pub file_key: ::core::option::Option<u64>,
9064    #[prost(uint64, optional, tag="4")]
9065    pub extra_info: ::core::option::Option<u64>,
9066    #[prost(uint32, optional, tag="5")]
9067    pub ttid: ::core::option::Option<u32>,
9068    #[prost(uint32, optional, tag="6")]
9069    pub info_class: ::core::option::Option<u32>,
9070    #[prost(uint32, optional, tag="7")]
9071    pub opcode: ::core::option::Option<u32>,
9072}
9073/// Proto definition based on the `FileIo_ReadWrite` class definition.
9074#[derive(Clone, PartialEq, ::prost::Message)]
9075pub struct FileIoReadWriteEtwEvent {
9076    #[prost(uint64, optional, tag="1")]
9077    pub offset: ::core::option::Option<u64>,
9078    #[prost(uint64, optional, tag="2")]
9079    pub irp_ptr: ::core::option::Option<u64>,
9080    #[prost(uint64, optional, tag="3")]
9081    pub file_object: ::core::option::Option<u64>,
9082    #[prost(uint64, optional, tag="4")]
9083    pub file_key: ::core::option::Option<u64>,
9084    #[prost(uint32, optional, tag="5")]
9085    pub ttid: ::core::option::Option<u32>,
9086    #[prost(uint32, optional, tag="6")]
9087    pub io_size: ::core::option::Option<u32>,
9088    #[prost(uint32, optional, tag="7")]
9089    pub io_flags: ::core::option::Option<u32>,
9090    #[prost(uint32, optional, tag="8")]
9091    pub opcode: ::core::option::Option<u32>,
9092}
9093/// Proto definition based on the `FileIo_SimpleOp` class definition.
9094#[derive(Clone, PartialEq, ::prost::Message)]
9095pub struct FileIoSimpleOpEtwEvent {
9096    #[prost(uint64, optional, tag="1")]
9097    pub irp_ptr: ::core::option::Option<u64>,
9098    #[prost(uint64, optional, tag="2")]
9099    pub file_object: ::core::option::Option<u64>,
9100    #[prost(uint64, optional, tag="3")]
9101    pub file_key: ::core::option::Option<u64>,
9102    #[prost(uint32, optional, tag="4")]
9103    pub ttid: ::core::option::Option<u32>,
9104    #[prost(uint32, optional, tag="5")]
9105    pub opcode: ::core::option::Option<u32>,
9106}
9107/// Proto definition based on the `FileIo_OpEnd` class definition.
9108#[derive(Clone, PartialEq, ::prost::Message)]
9109pub struct FileIoOpEndEtwEvent {
9110    #[prost(uint64, optional, tag="1")]
9111    pub irp_ptr: ::core::option::Option<u64>,
9112    #[prost(uint64, optional, tag="2")]
9113    pub extra_info: ::core::option::Option<u64>,
9114    #[prost(uint32, optional, tag="3")]
9115    pub nt_status: ::core::option::Option<u32>,
9116}
9117// End of protos/perfetto/trace/etw/etw.proto
9118
9119// Begin of protos/perfetto/trace/etw/etw_event.proto
9120
9121#[derive(Clone, PartialEq, ::prost::Message)]
9122pub struct EtwTraceEvent {
9123    #[prost(uint64, optional, tag="1")]
9124    pub timestamp: ::core::option::Option<u64>,
9125    #[prost(uint32, optional, tag="4")]
9126    pub cpu: ::core::option::Option<u32>,
9127    #[prost(uint32, optional, tag="5")]
9128    pub thread_id: ::core::option::Option<u32>,
9129    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12")]
9130    pub event: ::core::option::Option<etw_trace_event::Event>,
9131}
9132/// Nested message and enum types in `EtwTraceEvent`.
9133pub mod etw_trace_event {
9134    #[derive(Clone, PartialEq, ::prost::Oneof)]
9135    pub enum Event {
9136        #[prost(message, tag="2")]
9137        CSwitch(super::CSwitchEtwEvent),
9138        #[prost(message, tag="3")]
9139        ReadyThread(super::ReadyThreadEtwEvent),
9140        #[prost(message, tag="6")]
9141        MemInfo(super::MemInfoEtwEvent),
9142        #[prost(message, tag="7")]
9143        FileIoCreate(super::FileIoCreateEtwEvent),
9144        #[prost(message, tag="8")]
9145        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
9146        #[prost(message, tag="9")]
9147        FileIoInfo(super::FileIoInfoEtwEvent),
9148        #[prost(message, tag="10")]
9149        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
9150        #[prost(message, tag="11")]
9151        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
9152        #[prost(message, tag="12")]
9153        FileIoOpEnd(super::FileIoOpEndEtwEvent),
9154    }
9155}
9156// End of protos/perfetto/trace/etw/etw_event.proto
9157
9158// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
9159
9160/// The result of tracing one or more etw event uses per-processor buffers where
9161/// an in-use buffer is assigned to each processor at all times. Therefore,
9162/// collecting multiple events they should already be synchronized.
9163#[derive(Clone, PartialEq, ::prost::Message)]
9164pub struct EtwTraceEventBundle {
9165    #[prost(uint32, optional, tag="1")]
9166    pub cpu: ::core::option::Option<u32>,
9167    #[prost(message, repeated, tag="2")]
9168    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
9169}
9170// Begin of protos/perfetto/trace/evdev.proto
9171
9172/// Records an event in the evdev protocol, as used by Linux and some other *nix
9173/// kernels to report events from human interface devices.
9174///
9175/// Next ID: 5
9176#[derive(Clone, PartialEq, ::prost::Message)]
9177pub struct EvdevEvent {
9178    /// The device's unique ID number. This need not be the number of its
9179    /// /dev/input/event node.
9180    #[prost(uint32, optional, tag="1")]
9181    pub device_id: ::core::option::Option<u32>,
9182    #[prost(oneof="evdev_event::Event", tags="2, 3, 4")]
9183    pub event: ::core::option::Option<evdev_event::Event>,
9184}
9185/// Nested message and enum types in `EvdevEvent`.
9186pub mod evdev_event {
9187    /// Proto version of Linux's struct input_event. The meaning of types and codes
9188    /// are described in the Linux kernel documentation at
9189    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
9190    ///
9191    /// Next ID: 5
9192    #[derive(Clone, PartialEq, ::prost::Message)]
9193    pub struct InputEvent {
9194        /// The monotonic timestamp at which the event occurred, as reported by the
9195        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
9196        /// since the previous event.
9197        #[prost(uint64, optional, tag="1")]
9198        pub kernel_timestamp: ::core::option::Option<u64>,
9199        /// The code grouping for this event, used to distinguish signals, absolute
9200        /// and relative axis changes, and other types of event.
9201        #[prost(uint32, optional, tag="2")]
9202        pub r#type: ::core::option::Option<u32>,
9203        /// The precise type of the event, such as the axis code for absolute and
9204        /// relative events.
9205        #[prost(uint32, optional, tag="3")]
9206        pub code: ::core::option::Option<u32>,
9207        /// The new value of the axis described by type and code.
9208        #[prost(sint32, optional, tag="4")]
9209        pub value: ::core::option::Option<i32>,
9210    }
9211    /// Describes an evdev device being added to the system.
9212    ///
9213    /// Next ID: 2
9214    #[derive(Clone, PartialEq, ::prost::Message)]
9215    pub struct DeviceAddition {
9216        #[prost(message, optional, tag="1")]
9217        pub device: ::core::option::Option<super::EvdevDevice>,
9218    }
9219    /// Describes an evdev device being removed from the system.
9220    ///
9221    /// Next ID: 1
9222    ///
9223    /// Empty — we don't need to record any data other than the device ID for
9224    /// this event type.
9225    #[derive(Clone, PartialEq, ::prost::Message)]
9226    pub struct DeviceRemoval {
9227    }
9228    #[derive(Clone, PartialEq, ::prost::Oneof)]
9229    pub enum Event {
9230        #[prost(message, tag="2")]
9231        InputEvent(InputEvent),
9232        #[prost(message, tag="3")]
9233        AddEvent(DeviceAddition),
9234        #[prost(message, tag="4")]
9235        RemoveEvent(DeviceRemoval),
9236    }
9237}
9238/// The properties of an input device that don't change during the time that it's
9239/// connected, as well as the current values for all of its axes.
9240///
9241/// Next ID: 13
9242#[derive(Clone, PartialEq, ::prost::Message)]
9243pub struct EvdevDevice {
9244    /// The device's unique ID number. This need not be the number of its
9245    /// /dev/input/event node.
9246    #[prost(uint32, optional, tag="1")]
9247    pub device_id: ::core::option::Option<u32>,
9248    /// The number of the evdev device (i.e. from its /dev/input/eventX node path).
9249    #[prost(uint32, optional, tag="2")]
9250    pub device_num: ::core::option::Option<u32>,
9251    /// The device's name.
9252    #[prost(string, optional, tag="3")]
9253    pub name: ::core::option::Option<::prost::alloc::string::String>,
9254    /// The physical path to the device in the system hierarchy.
9255    #[prost(string, optional, tag="4")]
9256    pub phys: ::core::option::Option<::prost::alloc::string::String>,
9257    /// The unique identification code for the device (if it has one).
9258    #[prost(string, optional, tag="5")]
9259    pub uniq: ::core::option::Option<::prost::alloc::string::String>,
9260    /// The device's ID numbers.
9261    #[prost(message, optional, tag="6")]
9262    pub id: ::core::option::Option<evdev_device::Identifier>,
9263    /// A map of information for each of the device's absolute axes. Keys are the
9264    /// Linux ABS_* constants.
9265    #[prost(map="uint32, message", tag="7")]
9266    pub absolute_axis_infos: ::std::collections::HashMap<u32, evdev_device::AbsInfo>,
9267    /// Bitmask specifying which types of events the device declares.
9268    #[prost(bytes="vec", optional, tag="8")]
9269    pub ev_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9270    /// A map of bitmasks specifying which axes of each type the device declares.
9271    /// Keys are the Linux EV_* constants.
9272    #[prost(map="uint32, bytes", tag="9")]
9273    pub event_type_bitmasks: ::std::collections::HashMap<u32, ::prost::alloc::vec::Vec<u8>>,
9274    /// Bitmask of properties declared by the device.
9275    #[prost(bytes="vec", optional, tag="10")]
9276    pub prop_bitmask: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9277    /// Current states of device axes.
9278    ///
9279    /// The keys are the Linux event type constants (e.g. EV_KEY, EV_ABS, etc.). We
9280    /// don't need to keep track of states for all axis types, only KEY, SW, LED,
9281    /// and ABS, so only those will have entries in this map. States for ABS_MT_*
9282    /// axes (which have multiple slots) will be kept in abs_mt_states instead.
9283    #[prost(map="uint32, message", tag="11")]
9284    pub axis_states: ::std::collections::HashMap<u32, evdev_device::AxisMap>,
9285    /// Current states of ABS_MT_* axes other than ABS_MT_SLOT. The keys are the
9286    /// ABS axis codes.
9287    #[prost(map="uint32, message", tag="12")]
9288    pub abs_mt_states: ::std::collections::HashMap<u32, evdev_device::SlotValuesMap>,
9289}
9290/// Nested message and enum types in `EvdevDevice`.
9291pub mod evdev_device {
9292    /// Proto version of Linux's struct input_id. Although uint32s are used for the
9293    /// fields, the kernel uses 16-bit ints so values will be less than 2^16.
9294    ///
9295    /// Next ID: 5
9296    #[derive(Clone, PartialEq, ::prost::Message)]
9297    pub struct Identifier {
9298        /// The bus that the device is connected to. Values will be one of Linux's
9299        /// BUS_* constants.
9300        #[prost(uint32, optional, tag="1")]
9301        pub bustype: ::core::option::Option<u32>,
9302        /// A number identifying the vendor of the device. Often a USB or Bluetooth
9303        /// vendor ID, but not always.
9304        #[prost(uint32, optional, tag="2")]
9305        pub vendor: ::core::option::Option<u32>,
9306        #[prost(uint32, optional, tag="3")]
9307        pub product: ::core::option::Option<u32>,
9308        #[prost(uint32, optional, tag="4")]
9309        pub version: ::core::option::Option<u32>,
9310    }
9311    /// Proto version of Linux's struct input_absinfo, excluding the value field
9312    /// (which is tracked elsewhere).
9313    ///
9314    /// Next ID: 6
9315    #[derive(Clone, PartialEq, ::prost::Message)]
9316    pub struct AbsInfo {
9317        #[prost(sint32, optional, tag="1")]
9318        pub minimum: ::core::option::Option<i32>,
9319        #[prost(sint32, optional, tag="2")]
9320        pub maximum: ::core::option::Option<i32>,
9321        #[prost(int32, optional, tag="3")]
9322        pub fuzz: ::core::option::Option<i32>,
9323        #[prost(int32, optional, tag="4")]
9324        pub flat: ::core::option::Option<i32>,
9325        #[prost(int32, optional, tag="5")]
9326        pub resolution: ::core::option::Option<i32>,
9327    }
9328    /// Contains the current values of all axes of a particular type (e.g. EV_ABS,
9329    /// EV_KEY, etc.).
9330    ///
9331    /// Next ID: 2
9332    #[derive(Clone, PartialEq, ::prost::Message)]
9333    pub struct AxisMap {
9334        /// Current values of all axes, other than ABS_MT_* axes (which have multiple
9335        /// slots), which are kept in abs_mt_states instead.
9336        ///
9337        /// The keys are the Linux axis codes, e.g. ABS_* for absolute axes. If there
9338        /// is no entry for a particular axis, assume that its value is 0.
9339        #[prost(map="uint32, sint32", tag="1")]
9340        pub axis_states: ::std::collections::HashMap<u32, i32>,
9341    }
9342    /// Contains the current values of a single ABS_MT_* axis across all of its
9343    /// slots.
9344    ///
9345    /// Next ID: 2
9346    #[derive(Clone, PartialEq, ::prost::Message)]
9347    pub struct SlotValuesMap {
9348        /// Current values for all slots.
9349        ///
9350        /// The keys are the slot numbers. If there is no entry for a particular
9351        /// slot, assume that its value is 0.
9352        #[prost(map="uint32, sint32", tag="1")]
9353        pub slot_values: ::std::collections::HashMap<u32, i32>,
9354    }
9355}
9356// End of protos/perfetto/trace/evdev.proto
9357
9358// Begin of protos/perfetto/common/descriptor.proto
9359
9360/// The protocol compiler can output a FileDescriptorSet containing the .proto
9361/// files it parses.
9362#[derive(Clone, PartialEq, ::prost::Message)]
9363pub struct FileDescriptorSet {
9364    #[prost(message, repeated, tag="1")]
9365    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
9366}
9367/// Describes a complete .proto file.
9368#[derive(Clone, PartialEq, ::prost::Message)]
9369pub struct FileDescriptorProto {
9370    /// file name, relative to root of source tree
9371    #[prost(string, optional, tag="1")]
9372    pub name: ::core::option::Option<::prost::alloc::string::String>,
9373    /// e.g. "foo", "foo.bar", etc.
9374    #[prost(string, optional, tag="2")]
9375    pub package: ::core::option::Option<::prost::alloc::string::String>,
9376    /// Names of files imported by this file.
9377    #[prost(string, repeated, tag="3")]
9378    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9379    /// Indexes of the public imported files in the dependency list above.
9380    #[prost(int32, repeated, packed="false", tag="10")]
9381    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
9382    /// Indexes of the weak imported files in the dependency list.
9383    /// For Google-internal migration only. Do not use.
9384    #[prost(int32, repeated, packed="false", tag="11")]
9385    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
9386    /// All top-level definitions in this file.
9387    #[prost(message, repeated, tag="4")]
9388    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9389    #[prost(message, repeated, tag="5")]
9390    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9391    #[prost(message, repeated, tag="7")]
9392    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9393}
9394/// Describes a message type.
9395#[derive(Clone, PartialEq, ::prost::Message)]
9396pub struct DescriptorProto {
9397    #[prost(string, optional, tag="1")]
9398    pub name: ::core::option::Option<::prost::alloc::string::String>,
9399    #[prost(message, repeated, tag="2")]
9400    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9401    #[prost(message, repeated, tag="6")]
9402    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9403    #[prost(message, repeated, tag="3")]
9404    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9405    #[prost(message, repeated, tag="4")]
9406    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9407    #[prost(message, repeated, tag="8")]
9408    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
9409    #[prost(message, repeated, tag="9")]
9410    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
9411    /// Reserved field names, which may not be used by fields in the same message.
9412    /// A given name may only be reserved once.
9413    #[prost(string, repeated, tag="10")]
9414    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9415}
9416/// Nested message and enum types in `DescriptorProto`.
9417pub mod descriptor_proto {
9418    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
9419    /// fields or extension ranges in the same message. Reserved ranges may
9420    /// not overlap.
9421    #[derive(Clone, PartialEq, ::prost::Message)]
9422    pub struct ReservedRange {
9423        /// Inclusive.
9424        #[prost(int32, optional, tag="1")]
9425        pub start: ::core::option::Option<i32>,
9426        /// Exclusive.
9427        #[prost(int32, optional, tag="2")]
9428        pub end: ::core::option::Option<i32>,
9429    }
9430}
9431/// A message representing a option the parser does not recognize. This only
9432/// appears in options protos created by the compiler::Parser class.
9433/// DescriptorPool resolves these when building Descriptor objects. Therefore,
9434/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
9435/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
9436/// in them.
9437#[derive(Clone, PartialEq, ::prost::Message)]
9438pub struct UninterpretedOption {
9439    #[prost(message, repeated, tag="2")]
9440    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
9441    /// The value of the uninterpreted option, in whatever type the tokenizer
9442    /// identified it as during parsing. Exactly one of these should be set.
9443    #[prost(string, optional, tag="3")]
9444    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
9445    #[prost(uint64, optional, tag="4")]
9446    pub positive_int_value: ::core::option::Option<u64>,
9447    #[prost(int64, optional, tag="5")]
9448    pub negative_int_value: ::core::option::Option<i64>,
9449    #[prost(double, optional, tag="6")]
9450    pub double_value: ::core::option::Option<f64>,
9451    #[prost(bytes="vec", optional, tag="7")]
9452    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9453    #[prost(string, optional, tag="8")]
9454    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
9455}
9456/// Nested message and enum types in `UninterpretedOption`.
9457pub mod uninterpreted_option {
9458    /// The name of the uninterpreted option.  Each string represents a segment in
9459    /// a dot-separated name.  is_extension is true iff a segment represents an
9460    /// extension (denoted with parentheses in options specs in .proto files).
9461    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
9462    /// "foo.(bar.baz).moo".
9463    #[derive(Clone, PartialEq, ::prost::Message)]
9464    pub struct NamePart {
9465        #[prost(string, optional, tag="1")]
9466        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
9467        #[prost(bool, optional, tag="2")]
9468        pub is_extension: ::core::option::Option<bool>,
9469    }
9470}
9471#[derive(Clone, PartialEq, ::prost::Message)]
9472pub struct FieldOptions {
9473    /// The packed option can be enabled for repeated primitive fields to enable
9474    /// a more efficient representation on the wire. Rather than repeatedly
9475    /// writing the tag and type for each element, the entire array is encoded as
9476    /// a single length-delimited blob. In proto3, only explicit setting it to
9477    /// false will avoid using packed encoding.
9478    #[prost(bool, optional, tag="2")]
9479    pub packed: ::core::option::Option<bool>,
9480    /// The parser stores options it doesn't recognize here. See above.
9481    #[prost(message, repeated, tag="999")]
9482    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
9483}
9484/// Describes a field within a message.
9485#[derive(Clone, PartialEq, ::prost::Message)]
9486pub struct FieldDescriptorProto {
9487    #[prost(string, optional, tag="1")]
9488    pub name: ::core::option::Option<::prost::alloc::string::String>,
9489    #[prost(int32, optional, tag="3")]
9490    pub number: ::core::option::Option<i32>,
9491    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
9492    pub label: ::core::option::Option<i32>,
9493    /// If type_name is set, this need not be set.  If both this and type_name
9494    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9495    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
9496    pub r#type: ::core::option::Option<i32>,
9497    /// For message and enum types, this is the name of the type.  If the name
9498    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9499    /// rules are used to find the type (i.e. first the nested types within this
9500    /// message are searched, then within the parent, on up to the root
9501    /// namespace).
9502    #[prost(string, optional, tag="6")]
9503    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9504    /// For extensions, this is the name of the type being extended.  It is
9505    /// resolved in the same manner as type_name.
9506    #[prost(string, optional, tag="2")]
9507    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9508    /// For numeric types, contains the original text representation of the value.
9509    /// For booleans, "true" or "false".
9510    /// For strings, contains the default text contents (not escaped in any way).
9511    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9512    /// TODO(kenton):  Base-64 encode?
9513    #[prost(string, optional, tag="7")]
9514    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9515    #[prost(message, optional, tag="8")]
9516    pub options: ::core::option::Option<FieldOptions>,
9517    /// If set, gives the index of a oneof in the containing type's oneof_decl
9518    /// list.  This field is a member of that oneof.
9519    #[prost(int32, optional, tag="9")]
9520    pub oneof_index: ::core::option::Option<i32>,
9521}
9522/// Nested message and enum types in `FieldDescriptorProto`.
9523pub mod field_descriptor_proto {
9524    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9525    #[repr(i32)]
9526    pub enum Type {
9527        /// 0 is reserved for errors.
9528        /// Order is weird for historical reasons.
9529        Double = 1,
9530        Float = 2,
9531        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9532        /// negative values are likely.
9533        Int64 = 3,
9534        Uint64 = 4,
9535        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9536        /// negative values are likely.
9537        Int32 = 5,
9538        Fixed64 = 6,
9539        Fixed32 = 7,
9540        Bool = 8,
9541        String = 9,
9542        /// Tag-delimited aggregate.
9543        /// Group type is deprecated and not supported in proto3. However, Proto3
9544        /// implementations should still be able to parse the group wire format and
9545        /// treat group fields as unknown fields.
9546        Group = 10,
9547        /// Length-delimited aggregate.
9548        Message = 11,
9549        /// New in version 2.
9550        Bytes = 12,
9551        Uint32 = 13,
9552        Enum = 14,
9553        Sfixed32 = 15,
9554        Sfixed64 = 16,
9555        /// Uses ZigZag encoding.
9556        Sint32 = 17,
9557        /// Uses ZigZag encoding.
9558        Sint64 = 18,
9559    }
9560    impl Type {
9561        /// String value of the enum field names used in the ProtoBuf definition.
9562        ///
9563        /// The values are not transformed in any way and thus are considered stable
9564        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9565        pub fn as_str_name(&self) -> &'static str {
9566            match self {
9567                Type::Double => "TYPE_DOUBLE",
9568                Type::Float => "TYPE_FLOAT",
9569                Type::Int64 => "TYPE_INT64",
9570                Type::Uint64 => "TYPE_UINT64",
9571                Type::Int32 => "TYPE_INT32",
9572                Type::Fixed64 => "TYPE_FIXED64",
9573                Type::Fixed32 => "TYPE_FIXED32",
9574                Type::Bool => "TYPE_BOOL",
9575                Type::String => "TYPE_STRING",
9576                Type::Group => "TYPE_GROUP",
9577                Type::Message => "TYPE_MESSAGE",
9578                Type::Bytes => "TYPE_BYTES",
9579                Type::Uint32 => "TYPE_UINT32",
9580                Type::Enum => "TYPE_ENUM",
9581                Type::Sfixed32 => "TYPE_SFIXED32",
9582                Type::Sfixed64 => "TYPE_SFIXED64",
9583                Type::Sint32 => "TYPE_SINT32",
9584                Type::Sint64 => "TYPE_SINT64",
9585            }
9586        }
9587    }
9588    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9589    #[repr(i32)]
9590    pub enum Label {
9591        /// 0 is reserved for errors
9592        Optional = 1,
9593        Required = 2,
9594        Repeated = 3,
9595    }
9596    impl Label {
9597        /// String value of the enum field names used in the ProtoBuf definition.
9598        ///
9599        /// The values are not transformed in any way and thus are considered stable
9600        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9601        pub fn as_str_name(&self) -> &'static str {
9602            match self {
9603                Label::Optional => "LABEL_OPTIONAL",
9604                Label::Required => "LABEL_REQUIRED",
9605                Label::Repeated => "LABEL_REPEATED",
9606            }
9607        }
9608    }
9609}
9610/// Describes a oneof.
9611#[derive(Clone, PartialEq, ::prost::Message)]
9612pub struct OneofDescriptorProto {
9613    #[prost(string, optional, tag="1")]
9614    pub name: ::core::option::Option<::prost::alloc::string::String>,
9615    #[prost(message, optional, tag="2")]
9616    pub options: ::core::option::Option<OneofOptions>,
9617}
9618/// Describes an enum type.
9619#[derive(Clone, PartialEq, ::prost::Message)]
9620pub struct EnumDescriptorProto {
9621    #[prost(string, optional, tag="1")]
9622    pub name: ::core::option::Option<::prost::alloc::string::String>,
9623    #[prost(message, repeated, tag="2")]
9624    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
9625    /// Reserved enum value names, which may not be reused. A given name may only
9626    /// be reserved once.
9627    #[prost(string, repeated, tag="5")]
9628    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9629}
9630/// Describes a value within an enum.
9631#[derive(Clone, PartialEq, ::prost::Message)]
9632pub struct EnumValueDescriptorProto {
9633    #[prost(string, optional, tag="1")]
9634    pub name: ::core::option::Option<::prost::alloc::string::String>,
9635    #[prost(int32, optional, tag="2")]
9636    pub number: ::core::option::Option<i32>,
9637}
9638#[derive(Clone, PartialEq, ::prost::Message)]
9639pub struct OneofOptions {
9640}
9641// End of protos/perfetto/common/descriptor.proto
9642
9643// Begin of protos/perfetto/trace/extension_descriptor.proto
9644
9645/// This message contains descriptors used to parse extension fields of
9646/// TrackEvent.
9647///
9648/// See docs/design-docs/extensions.md for more details.
9649#[derive(Clone, PartialEq, ::prost::Message)]
9650pub struct ExtensionDescriptor {
9651    /// Optional, for debugging only. The file name or path of the descriptor
9652    /// source. Can be omitted without affecting functionality.
9653    #[prost(string, optional, tag="3")]
9654    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9655    #[prost(oneof="extension_descriptor::Descriptor", tags="1, 2")]
9656    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
9657}
9658/// Nested message and enum types in `ExtensionDescriptor`.
9659pub mod extension_descriptor {
9660    #[derive(Clone, PartialEq, ::prost::Oneof)]
9661    pub enum Descriptor {
9662        #[prost(message, tag="1")]
9663        ExtensionSet(super::FileDescriptorSet),
9664        /// Same as extension_set, but gzip-compressed. This is used by the tracing
9665        /// service on Android to emit pre-compressed descriptor files from
9666        /// /etc/tracing_descriptors.gz without decompressing them first.
9667        #[prost(bytes, tag="2")]
9668        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
9669    }
9670}
9671// End of protos/perfetto/trace/extension_descriptor.proto
9672
9673// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
9674
9675/// Represents the mapping between inode numbers in a block device and their path
9676/// on the filesystem
9677#[derive(Clone, PartialEq, ::prost::Message)]
9678pub struct InodeFileMap {
9679    #[prost(uint64, optional, tag="1")]
9680    pub block_device_id: ::core::option::Option<u64>,
9681    /// The mount points of the block device, e.g. \["system"\].
9682    #[prost(string, repeated, tag="2")]
9683    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9684    /// The list of all the entries from the block device
9685    #[prost(message, repeated, tag="3")]
9686    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
9687}
9688/// Nested message and enum types in `InodeFileMap`.
9689pub mod inode_file_map {
9690    /// Representation of Entry
9691    #[derive(Clone, PartialEq, ::prost::Message)]
9692    pub struct Entry {
9693        #[prost(uint64, optional, tag="1")]
9694        pub inode_number: ::core::option::Option<u64>,
9695        /// The path to the file, e.g. "etc/file.xml"
9696        /// List of strings for multiple hardlinks
9697        #[prost(string, repeated, tag="2")]
9698        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9699        #[prost(enumeration="entry::Type", optional, tag="3")]
9700        pub r#type: ::core::option::Option<i32>,
9701    }
9702    /// Nested message and enum types in `Entry`.
9703    pub mod entry {
9704        /// The file type
9705        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9706        #[repr(i32)]
9707        pub enum Type {
9708            Unknown = 0,
9709            File = 1,
9710            Directory = 2,
9711        }
9712        impl Type {
9713            /// String value of the enum field names used in the ProtoBuf definition.
9714            ///
9715            /// The values are not transformed in any way and thus are considered stable
9716            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9717            pub fn as_str_name(&self) -> &'static str {
9718                match self {
9719                    Type::Unknown => "UNKNOWN",
9720                    Type::File => "FILE",
9721                    Type::Directory => "DIRECTORY",
9722                }
9723            }
9724        }
9725    }
9726}
9727// End of protos/perfetto/trace/filesystem/inode_file_map.proto
9728
9729// Begin of protos/perfetto/trace/ftrace/android_fs.proto
9730
9731#[derive(Clone, PartialEq, ::prost::Message)]
9732pub struct AndroidFsDatareadEndFtraceEvent {
9733    #[prost(int32, optional, tag="1")]
9734    pub bytes: ::core::option::Option<i32>,
9735    #[prost(uint64, optional, tag="2")]
9736    pub ino: ::core::option::Option<u64>,
9737    #[prost(int64, optional, tag="3")]
9738    pub offset: ::core::option::Option<i64>,
9739}
9740#[derive(Clone, PartialEq, ::prost::Message)]
9741pub struct AndroidFsDatareadStartFtraceEvent {
9742    #[prost(int32, optional, tag="1")]
9743    pub bytes: ::core::option::Option<i32>,
9744    #[prost(string, optional, tag="2")]
9745    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9746    #[prost(int64, optional, tag="3")]
9747    pub i_size: ::core::option::Option<i64>,
9748    #[prost(uint64, optional, tag="4")]
9749    pub ino: ::core::option::Option<u64>,
9750    #[prost(int64, optional, tag="5")]
9751    pub offset: ::core::option::Option<i64>,
9752    #[prost(string, optional, tag="6")]
9753    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9754    #[prost(int32, optional, tag="7")]
9755    pub pid: ::core::option::Option<i32>,
9756}
9757#[derive(Clone, PartialEq, ::prost::Message)]
9758pub struct AndroidFsDatawriteEndFtraceEvent {
9759    #[prost(int32, optional, tag="1")]
9760    pub bytes: ::core::option::Option<i32>,
9761    #[prost(uint64, optional, tag="2")]
9762    pub ino: ::core::option::Option<u64>,
9763    #[prost(int64, optional, tag="3")]
9764    pub offset: ::core::option::Option<i64>,
9765}
9766#[derive(Clone, PartialEq, ::prost::Message)]
9767pub struct AndroidFsDatawriteStartFtraceEvent {
9768    #[prost(int32, optional, tag="1")]
9769    pub bytes: ::core::option::Option<i32>,
9770    #[prost(string, optional, tag="2")]
9771    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9772    #[prost(int64, optional, tag="3")]
9773    pub i_size: ::core::option::Option<i64>,
9774    #[prost(uint64, optional, tag="4")]
9775    pub ino: ::core::option::Option<u64>,
9776    #[prost(int64, optional, tag="5")]
9777    pub offset: ::core::option::Option<i64>,
9778    #[prost(string, optional, tag="6")]
9779    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9780    #[prost(int32, optional, tag="7")]
9781    pub pid: ::core::option::Option<i32>,
9782}
9783#[derive(Clone, PartialEq, ::prost::Message)]
9784pub struct AndroidFsFsyncEndFtraceEvent {
9785    #[prost(int32, optional, tag="1")]
9786    pub bytes: ::core::option::Option<i32>,
9787    #[prost(uint64, optional, tag="2")]
9788    pub ino: ::core::option::Option<u64>,
9789    #[prost(int64, optional, tag="3")]
9790    pub offset: ::core::option::Option<i64>,
9791}
9792#[derive(Clone, PartialEq, ::prost::Message)]
9793pub struct AndroidFsFsyncStartFtraceEvent {
9794    #[prost(string, optional, tag="1")]
9795    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9796    #[prost(int64, optional, tag="2")]
9797    pub i_size: ::core::option::Option<i64>,
9798    #[prost(uint64, optional, tag="3")]
9799    pub ino: ::core::option::Option<u64>,
9800    #[prost(string, optional, tag="4")]
9801    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9802    #[prost(int32, optional, tag="5")]
9803    pub pid: ::core::option::Option<i32>,
9804}
9805// End of protos/perfetto/trace/ftrace/android_fs.proto
9806
9807// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
9808
9809#[derive(Clone, PartialEq, ::prost::Message)]
9810pub struct BclIrqTriggerFtraceEvent {
9811    #[prost(int32, optional, tag="1")]
9812    pub id: ::core::option::Option<i32>,
9813    #[prost(int32, optional, tag="2")]
9814    pub throttle: ::core::option::Option<i32>,
9815    #[prost(int32, optional, tag="3")]
9816    pub cpu0_limit: ::core::option::Option<i32>,
9817    #[prost(int32, optional, tag="4")]
9818    pub cpu1_limit: ::core::option::Option<i32>,
9819    #[prost(int32, optional, tag="5")]
9820    pub cpu2_limit: ::core::option::Option<i32>,
9821    #[prost(int32, optional, tag="6")]
9822    pub tpu_limit: ::core::option::Option<i32>,
9823    #[prost(int32, optional, tag="7")]
9824    pub gpu_limit: ::core::option::Option<i32>,
9825    #[prost(int32, optional, tag="8")]
9826    pub voltage: ::core::option::Option<i32>,
9827    #[prost(int32, optional, tag="9")]
9828    pub capacity: ::core::option::Option<i32>,
9829}
9830// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
9831
9832// Begin of protos/perfetto/trace/ftrace/binder.proto
9833
9834#[derive(Clone, PartialEq, ::prost::Message)]
9835pub struct BinderTransactionFtraceEvent {
9836    #[prost(int32, optional, tag="1")]
9837    pub debug_id: ::core::option::Option<i32>,
9838    #[prost(int32, optional, tag="2")]
9839    pub target_node: ::core::option::Option<i32>,
9840    #[prost(int32, optional, tag="3")]
9841    pub to_proc: ::core::option::Option<i32>,
9842    #[prost(int32, optional, tag="4")]
9843    pub to_thread: ::core::option::Option<i32>,
9844    #[prost(int32, optional, tag="5")]
9845    pub reply: ::core::option::Option<i32>,
9846    #[prost(uint32, optional, tag="6")]
9847    pub code: ::core::option::Option<u32>,
9848    #[prost(uint32, optional, tag="7")]
9849    pub flags: ::core::option::Option<u32>,
9850}
9851#[derive(Clone, PartialEq, ::prost::Message)]
9852pub struct BinderTransactionReceivedFtraceEvent {
9853    #[prost(int32, optional, tag="1")]
9854    pub debug_id: ::core::option::Option<i32>,
9855}
9856#[derive(Clone, PartialEq, ::prost::Message)]
9857pub struct BinderSetPriorityFtraceEvent {
9858    #[prost(int32, optional, tag="1")]
9859    pub proc: ::core::option::Option<i32>,
9860    #[prost(int32, optional, tag="2")]
9861    pub thread: ::core::option::Option<i32>,
9862    #[prost(uint32, optional, tag="3")]
9863    pub old_prio: ::core::option::Option<u32>,
9864    #[prost(uint32, optional, tag="4")]
9865    pub new_prio: ::core::option::Option<u32>,
9866    #[prost(uint32, optional, tag="5")]
9867    pub desired_prio: ::core::option::Option<u32>,
9868}
9869#[derive(Clone, PartialEq, ::prost::Message)]
9870pub struct BinderLockFtraceEvent {
9871    #[prost(string, optional, tag="1")]
9872    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9873}
9874#[derive(Clone, PartialEq, ::prost::Message)]
9875pub struct BinderLockedFtraceEvent {
9876    #[prost(string, optional, tag="1")]
9877    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9878}
9879#[derive(Clone, PartialEq, ::prost::Message)]
9880pub struct BinderUnlockFtraceEvent {
9881    #[prost(string, optional, tag="1")]
9882    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9883}
9884#[derive(Clone, PartialEq, ::prost::Message)]
9885pub struct BinderTransactionAllocBufFtraceEvent {
9886    #[prost(uint64, optional, tag="1")]
9887    pub data_size: ::core::option::Option<u64>,
9888    #[prost(int32, optional, tag="2")]
9889    pub debug_id: ::core::option::Option<i32>,
9890    #[prost(uint64, optional, tag="3")]
9891    pub offsets_size: ::core::option::Option<u64>,
9892    #[prost(uint64, optional, tag="4")]
9893    pub extra_buffers_size: ::core::option::Option<u64>,
9894}
9895#[derive(Clone, PartialEq, ::prost::Message)]
9896pub struct BinderCommandFtraceEvent {
9897    #[prost(uint32, optional, tag="1")]
9898    pub cmd: ::core::option::Option<u32>,
9899}
9900#[derive(Clone, PartialEq, ::prost::Message)]
9901pub struct BinderReturnFtraceEvent {
9902    #[prost(uint32, optional, tag="1")]
9903    pub cmd: ::core::option::Option<u32>,
9904}
9905// End of protos/perfetto/trace/ftrace/binder.proto
9906
9907// Begin of protos/perfetto/trace/ftrace/block.proto
9908
9909#[derive(Clone, PartialEq, ::prost::Message)]
9910pub struct BlockRqIssueFtraceEvent {
9911    #[prost(uint64, optional, tag="1")]
9912    pub dev: ::core::option::Option<u64>,
9913    #[prost(uint64, optional, tag="2")]
9914    pub sector: ::core::option::Option<u64>,
9915    #[prost(uint32, optional, tag="3")]
9916    pub nr_sector: ::core::option::Option<u32>,
9917    #[prost(uint32, optional, tag="4")]
9918    pub bytes: ::core::option::Option<u32>,
9919    #[prost(string, optional, tag="5")]
9920    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9921    #[prost(string, optional, tag="6")]
9922    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9923    #[prost(string, optional, tag="7")]
9924    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9925}
9926#[derive(Clone, PartialEq, ::prost::Message)]
9927pub struct BlockBioBackmergeFtraceEvent {
9928    #[prost(uint64, optional, tag="1")]
9929    pub dev: ::core::option::Option<u64>,
9930    #[prost(uint64, optional, tag="2")]
9931    pub sector: ::core::option::Option<u64>,
9932    #[prost(uint32, optional, tag="3")]
9933    pub nr_sector: ::core::option::Option<u32>,
9934    #[prost(string, optional, tag="4")]
9935    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9936    #[prost(string, optional, tag="5")]
9937    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9938}
9939#[derive(Clone, PartialEq, ::prost::Message)]
9940pub struct BlockBioBounceFtraceEvent {
9941    #[prost(uint64, optional, tag="1")]
9942    pub dev: ::core::option::Option<u64>,
9943    #[prost(uint64, optional, tag="2")]
9944    pub sector: ::core::option::Option<u64>,
9945    #[prost(uint32, optional, tag="3")]
9946    pub nr_sector: ::core::option::Option<u32>,
9947    #[prost(string, optional, tag="4")]
9948    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9949    #[prost(string, optional, tag="5")]
9950    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9951}
9952#[derive(Clone, PartialEq, ::prost::Message)]
9953pub struct BlockBioCompleteFtraceEvent {
9954    #[prost(uint64, optional, tag="1")]
9955    pub dev: ::core::option::Option<u64>,
9956    #[prost(uint64, optional, tag="2")]
9957    pub sector: ::core::option::Option<u64>,
9958    #[prost(uint32, optional, tag="3")]
9959    pub nr_sector: ::core::option::Option<u32>,
9960    #[prost(int32, optional, tag="4")]
9961    pub error: ::core::option::Option<i32>,
9962    #[prost(string, optional, tag="5")]
9963    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9964}
9965#[derive(Clone, PartialEq, ::prost::Message)]
9966pub struct BlockBioFrontmergeFtraceEvent {
9967    #[prost(uint64, optional, tag="1")]
9968    pub dev: ::core::option::Option<u64>,
9969    #[prost(uint64, optional, tag="2")]
9970    pub sector: ::core::option::Option<u64>,
9971    #[prost(uint32, optional, tag="3")]
9972    pub nr_sector: ::core::option::Option<u32>,
9973    #[prost(string, optional, tag="4")]
9974    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9975    #[prost(string, optional, tag="5")]
9976    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9977}
9978#[derive(Clone, PartialEq, ::prost::Message)]
9979pub struct BlockBioQueueFtraceEvent {
9980    #[prost(uint64, optional, tag="1")]
9981    pub dev: ::core::option::Option<u64>,
9982    #[prost(uint64, optional, tag="2")]
9983    pub sector: ::core::option::Option<u64>,
9984    #[prost(uint32, optional, tag="3")]
9985    pub nr_sector: ::core::option::Option<u32>,
9986    #[prost(string, optional, tag="4")]
9987    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9988    #[prost(string, optional, tag="5")]
9989    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9990}
9991#[derive(Clone, PartialEq, ::prost::Message)]
9992pub struct BlockBioRemapFtraceEvent {
9993    #[prost(uint64, optional, tag="1")]
9994    pub dev: ::core::option::Option<u64>,
9995    #[prost(uint64, optional, tag="2")]
9996    pub sector: ::core::option::Option<u64>,
9997    #[prost(uint32, optional, tag="3")]
9998    pub nr_sector: ::core::option::Option<u32>,
9999    #[prost(uint64, optional, tag="4")]
10000    pub old_dev: ::core::option::Option<u64>,
10001    #[prost(uint64, optional, tag="5")]
10002    pub old_sector: ::core::option::Option<u64>,
10003    #[prost(string, optional, tag="6")]
10004    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10005}
10006#[derive(Clone, PartialEq, ::prost::Message)]
10007pub struct BlockDirtyBufferFtraceEvent {
10008    #[prost(uint64, optional, tag="1")]
10009    pub dev: ::core::option::Option<u64>,
10010    #[prost(uint64, optional, tag="2")]
10011    pub sector: ::core::option::Option<u64>,
10012    #[prost(uint64, optional, tag="3")]
10013    pub size: ::core::option::Option<u64>,
10014}
10015#[derive(Clone, PartialEq, ::prost::Message)]
10016pub struct BlockGetrqFtraceEvent {
10017    #[prost(uint64, optional, tag="1")]
10018    pub dev: ::core::option::Option<u64>,
10019    #[prost(uint64, optional, tag="2")]
10020    pub sector: ::core::option::Option<u64>,
10021    #[prost(uint32, optional, tag="3")]
10022    pub nr_sector: ::core::option::Option<u32>,
10023    #[prost(string, optional, tag="4")]
10024    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10025    #[prost(string, optional, tag="5")]
10026    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10027}
10028#[derive(Clone, PartialEq, ::prost::Message)]
10029pub struct BlockPlugFtraceEvent {
10030    #[prost(string, optional, tag="1")]
10031    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10032}
10033#[derive(Clone, PartialEq, ::prost::Message)]
10034pub struct BlockRqAbortFtraceEvent {
10035    #[prost(uint64, optional, tag="1")]
10036    pub dev: ::core::option::Option<u64>,
10037    #[prost(uint64, optional, tag="2")]
10038    pub sector: ::core::option::Option<u64>,
10039    #[prost(uint32, optional, tag="3")]
10040    pub nr_sector: ::core::option::Option<u32>,
10041    #[prost(int32, optional, tag="4")]
10042    pub errors: ::core::option::Option<i32>,
10043    #[prost(string, optional, tag="5")]
10044    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10045    #[prost(string, optional, tag="6")]
10046    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10047}
10048#[derive(Clone, PartialEq, ::prost::Message)]
10049pub struct BlockRqCompleteFtraceEvent {
10050    #[prost(uint64, optional, tag="1")]
10051    pub dev: ::core::option::Option<u64>,
10052    #[prost(uint64, optional, tag="2")]
10053    pub sector: ::core::option::Option<u64>,
10054    #[prost(uint32, optional, tag="3")]
10055    pub nr_sector: ::core::option::Option<u32>,
10056    #[prost(int32, optional, tag="4")]
10057    pub errors: ::core::option::Option<i32>,
10058    #[prost(string, optional, tag="5")]
10059    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10060    #[prost(string, optional, tag="6")]
10061    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10062    #[prost(int32, optional, tag="7")]
10063    pub error: ::core::option::Option<i32>,
10064}
10065#[derive(Clone, PartialEq, ::prost::Message)]
10066pub struct BlockRqInsertFtraceEvent {
10067    #[prost(uint64, optional, tag="1")]
10068    pub dev: ::core::option::Option<u64>,
10069    #[prost(uint64, optional, tag="2")]
10070    pub sector: ::core::option::Option<u64>,
10071    #[prost(uint32, optional, tag="3")]
10072    pub nr_sector: ::core::option::Option<u32>,
10073    #[prost(uint32, optional, tag="4")]
10074    pub bytes: ::core::option::Option<u32>,
10075    #[prost(string, optional, tag="5")]
10076    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10077    #[prost(string, optional, tag="6")]
10078    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10079    #[prost(string, optional, tag="7")]
10080    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10081}
10082#[derive(Clone, PartialEq, ::prost::Message)]
10083pub struct BlockRqRemapFtraceEvent {
10084    #[prost(uint64, optional, tag="1")]
10085    pub dev: ::core::option::Option<u64>,
10086    #[prost(uint64, optional, tag="2")]
10087    pub sector: ::core::option::Option<u64>,
10088    #[prost(uint32, optional, tag="3")]
10089    pub nr_sector: ::core::option::Option<u32>,
10090    #[prost(uint64, optional, tag="4")]
10091    pub old_dev: ::core::option::Option<u64>,
10092    #[prost(uint64, optional, tag="5")]
10093    pub old_sector: ::core::option::Option<u64>,
10094    #[prost(uint32, optional, tag="6")]
10095    pub nr_bios: ::core::option::Option<u32>,
10096    #[prost(string, optional, tag="7")]
10097    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10098}
10099#[derive(Clone, PartialEq, ::prost::Message)]
10100pub struct BlockRqRequeueFtraceEvent {
10101    #[prost(uint64, optional, tag="1")]
10102    pub dev: ::core::option::Option<u64>,
10103    #[prost(uint64, optional, tag="2")]
10104    pub sector: ::core::option::Option<u64>,
10105    #[prost(uint32, optional, tag="3")]
10106    pub nr_sector: ::core::option::Option<u32>,
10107    #[prost(int32, optional, tag="4")]
10108    pub errors: ::core::option::Option<i32>,
10109    #[prost(string, optional, tag="5")]
10110    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10111    #[prost(string, optional, tag="6")]
10112    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10113}
10114#[derive(Clone, PartialEq, ::prost::Message)]
10115pub struct BlockSleeprqFtraceEvent {
10116    #[prost(uint64, optional, tag="1")]
10117    pub dev: ::core::option::Option<u64>,
10118    #[prost(uint64, optional, tag="2")]
10119    pub sector: ::core::option::Option<u64>,
10120    #[prost(uint32, optional, tag="3")]
10121    pub nr_sector: ::core::option::Option<u32>,
10122    #[prost(string, optional, tag="4")]
10123    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10124    #[prost(string, optional, tag="5")]
10125    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10126}
10127#[derive(Clone, PartialEq, ::prost::Message)]
10128pub struct BlockSplitFtraceEvent {
10129    #[prost(uint64, optional, tag="1")]
10130    pub dev: ::core::option::Option<u64>,
10131    #[prost(uint64, optional, tag="2")]
10132    pub sector: ::core::option::Option<u64>,
10133    #[prost(uint64, optional, tag="3")]
10134    pub new_sector: ::core::option::Option<u64>,
10135    #[prost(string, optional, tag="4")]
10136    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10137    #[prost(string, optional, tag="5")]
10138    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10139}
10140#[derive(Clone, PartialEq, ::prost::Message)]
10141pub struct BlockTouchBufferFtraceEvent {
10142    #[prost(uint64, optional, tag="1")]
10143    pub dev: ::core::option::Option<u64>,
10144    #[prost(uint64, optional, tag="2")]
10145    pub sector: ::core::option::Option<u64>,
10146    #[prost(uint64, optional, tag="3")]
10147    pub size: ::core::option::Option<u64>,
10148}
10149#[derive(Clone, PartialEq, ::prost::Message)]
10150pub struct BlockUnplugFtraceEvent {
10151    #[prost(int32, optional, tag="1")]
10152    pub nr_rq: ::core::option::Option<i32>,
10153    #[prost(string, optional, tag="2")]
10154    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10155}
10156#[derive(Clone, PartialEq, ::prost::Message)]
10157pub struct BlockIoStartFtraceEvent {
10158    #[prost(uint64, optional, tag="1")]
10159    pub dev: ::core::option::Option<u64>,
10160    #[prost(uint64, optional, tag="2")]
10161    pub sector: ::core::option::Option<u64>,
10162    #[prost(uint32, optional, tag="3")]
10163    pub nr_sector: ::core::option::Option<u32>,
10164    #[prost(uint32, optional, tag="4")]
10165    pub bytes: ::core::option::Option<u32>,
10166    #[prost(uint32, optional, tag="5")]
10167    pub ioprio: ::core::option::Option<u32>,
10168    #[prost(string, optional, tag="6")]
10169    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10170    #[prost(string, optional, tag="7")]
10171    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10172    #[prost(string, optional, tag="8")]
10173    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10174}
10175#[derive(Clone, PartialEq, ::prost::Message)]
10176pub struct BlockIoDoneFtraceEvent {
10177    #[prost(uint64, optional, tag="1")]
10178    pub dev: ::core::option::Option<u64>,
10179    #[prost(uint64, optional, tag="2")]
10180    pub sector: ::core::option::Option<u64>,
10181    #[prost(uint32, optional, tag="3")]
10182    pub nr_sector: ::core::option::Option<u32>,
10183    #[prost(uint32, optional, tag="4")]
10184    pub bytes: ::core::option::Option<u32>,
10185    #[prost(uint32, optional, tag="5")]
10186    pub ioprio: ::core::option::Option<u32>,
10187    #[prost(string, optional, tag="6")]
10188    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10189    #[prost(string, optional, tag="7")]
10190    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10191    #[prost(string, optional, tag="8")]
10192    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10193}
10194// End of protos/perfetto/trace/ftrace/block.proto
10195
10196// Begin of protos/perfetto/trace/ftrace/cgroup.proto
10197
10198#[derive(Clone, PartialEq, ::prost::Message)]
10199pub struct CgroupAttachTaskFtraceEvent {
10200    #[prost(int32, optional, tag="1")]
10201    pub dst_root: ::core::option::Option<i32>,
10202    #[prost(int32, optional, tag="2")]
10203    pub dst_id: ::core::option::Option<i32>,
10204    #[prost(int32, optional, tag="3")]
10205    pub pid: ::core::option::Option<i32>,
10206    #[prost(string, optional, tag="4")]
10207    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10208    #[prost(string, optional, tag="5")]
10209    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10210    #[prost(int32, optional, tag="6")]
10211    pub dst_level: ::core::option::Option<i32>,
10212    #[prost(string, optional, tag="7")]
10213    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10214}
10215#[derive(Clone, PartialEq, ::prost::Message)]
10216pub struct CgroupMkdirFtraceEvent {
10217    #[prost(int32, optional, tag="1")]
10218    pub root: ::core::option::Option<i32>,
10219    #[prost(int32, optional, tag="2")]
10220    pub id: ::core::option::Option<i32>,
10221    #[prost(string, optional, tag="3")]
10222    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10223    #[prost(int32, optional, tag="4")]
10224    pub level: ::core::option::Option<i32>,
10225    #[prost(string, optional, tag="5")]
10226    pub path: ::core::option::Option<::prost::alloc::string::String>,
10227}
10228#[derive(Clone, PartialEq, ::prost::Message)]
10229pub struct CgroupRemountFtraceEvent {
10230    #[prost(int32, optional, tag="1")]
10231    pub root: ::core::option::Option<i32>,
10232    #[prost(uint32, optional, tag="2")]
10233    pub ss_mask: ::core::option::Option<u32>,
10234    #[prost(string, optional, tag="3")]
10235    pub name: ::core::option::Option<::prost::alloc::string::String>,
10236}
10237#[derive(Clone, PartialEq, ::prost::Message)]
10238pub struct CgroupRmdirFtraceEvent {
10239    #[prost(int32, optional, tag="1")]
10240    pub root: ::core::option::Option<i32>,
10241    #[prost(int32, optional, tag="2")]
10242    pub id: ::core::option::Option<i32>,
10243    #[prost(string, optional, tag="3")]
10244    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10245    #[prost(int32, optional, tag="4")]
10246    pub level: ::core::option::Option<i32>,
10247    #[prost(string, optional, tag="5")]
10248    pub path: ::core::option::Option<::prost::alloc::string::String>,
10249}
10250#[derive(Clone, PartialEq, ::prost::Message)]
10251pub struct CgroupTransferTasksFtraceEvent {
10252    #[prost(int32, optional, tag="1")]
10253    pub dst_root: ::core::option::Option<i32>,
10254    #[prost(int32, optional, tag="2")]
10255    pub dst_id: ::core::option::Option<i32>,
10256    #[prost(int32, optional, tag="3")]
10257    pub pid: ::core::option::Option<i32>,
10258    #[prost(string, optional, tag="4")]
10259    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10260    #[prost(string, optional, tag="5")]
10261    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10262    #[prost(int32, optional, tag="6")]
10263    pub dst_level: ::core::option::Option<i32>,
10264    #[prost(string, optional, tag="7")]
10265    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10266}
10267#[derive(Clone, PartialEq, ::prost::Message)]
10268pub struct CgroupDestroyRootFtraceEvent {
10269    #[prost(int32, optional, tag="1")]
10270    pub root: ::core::option::Option<i32>,
10271    #[prost(uint32, optional, tag="2")]
10272    pub ss_mask: ::core::option::Option<u32>,
10273    #[prost(string, optional, tag="3")]
10274    pub name: ::core::option::Option<::prost::alloc::string::String>,
10275}
10276#[derive(Clone, PartialEq, ::prost::Message)]
10277pub struct CgroupReleaseFtraceEvent {
10278    #[prost(int32, optional, tag="1")]
10279    pub root: ::core::option::Option<i32>,
10280    #[prost(int32, optional, tag="2")]
10281    pub id: ::core::option::Option<i32>,
10282    #[prost(string, optional, tag="3")]
10283    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10284    #[prost(int32, optional, tag="4")]
10285    pub level: ::core::option::Option<i32>,
10286    #[prost(string, optional, tag="5")]
10287    pub path: ::core::option::Option<::prost::alloc::string::String>,
10288}
10289#[derive(Clone, PartialEq, ::prost::Message)]
10290pub struct CgroupRenameFtraceEvent {
10291    #[prost(int32, optional, tag="1")]
10292    pub root: ::core::option::Option<i32>,
10293    #[prost(int32, optional, tag="2")]
10294    pub id: ::core::option::Option<i32>,
10295    #[prost(string, optional, tag="3")]
10296    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10297    #[prost(int32, optional, tag="4")]
10298    pub level: ::core::option::Option<i32>,
10299    #[prost(string, optional, tag="5")]
10300    pub path: ::core::option::Option<::prost::alloc::string::String>,
10301}
10302#[derive(Clone, PartialEq, ::prost::Message)]
10303pub struct CgroupSetupRootFtraceEvent {
10304    #[prost(int32, optional, tag="1")]
10305    pub root: ::core::option::Option<i32>,
10306    #[prost(uint32, optional, tag="2")]
10307    pub ss_mask: ::core::option::Option<u32>,
10308    #[prost(string, optional, tag="3")]
10309    pub name: ::core::option::Option<::prost::alloc::string::String>,
10310}
10311// End of protos/perfetto/trace/ftrace/cgroup.proto
10312
10313// Begin of protos/perfetto/trace/ftrace/clk.proto
10314
10315#[derive(Clone, PartialEq, ::prost::Message)]
10316pub struct ClkEnableFtraceEvent {
10317    #[prost(string, optional, tag="1")]
10318    pub name: ::core::option::Option<::prost::alloc::string::String>,
10319}
10320#[derive(Clone, PartialEq, ::prost::Message)]
10321pub struct ClkDisableFtraceEvent {
10322    #[prost(string, optional, tag="1")]
10323    pub name: ::core::option::Option<::prost::alloc::string::String>,
10324}
10325#[derive(Clone, PartialEq, ::prost::Message)]
10326pub struct ClkSetRateFtraceEvent {
10327    #[prost(string, optional, tag="1")]
10328    pub name: ::core::option::Option<::prost::alloc::string::String>,
10329    #[prost(uint64, optional, tag="2")]
10330    pub rate: ::core::option::Option<u64>,
10331}
10332// End of protos/perfetto/trace/ftrace/clk.proto
10333
10334// Begin of protos/perfetto/trace/ftrace/cma.proto
10335
10336#[derive(Clone, PartialEq, ::prost::Message)]
10337pub struct CmaAllocStartFtraceEvent {
10338    #[prost(uint32, optional, tag="1")]
10339    pub align: ::core::option::Option<u32>,
10340    #[prost(uint32, optional, tag="2")]
10341    pub count: ::core::option::Option<u32>,
10342    #[prost(string, optional, tag="3")]
10343    pub name: ::core::option::Option<::prost::alloc::string::String>,
10344}
10345#[derive(Clone, PartialEq, ::prost::Message)]
10346pub struct CmaAllocInfoFtraceEvent {
10347    #[prost(uint32, optional, tag="1")]
10348    pub align: ::core::option::Option<u32>,
10349    #[prost(uint32, optional, tag="2")]
10350    pub count: ::core::option::Option<u32>,
10351    #[prost(uint32, optional, tag="3")]
10352    pub err_iso: ::core::option::Option<u32>,
10353    #[prost(uint32, optional, tag="4")]
10354    pub err_mig: ::core::option::Option<u32>,
10355    #[prost(uint32, optional, tag="5")]
10356    pub err_test: ::core::option::Option<u32>,
10357    #[prost(string, optional, tag="6")]
10358    pub name: ::core::option::Option<::prost::alloc::string::String>,
10359    #[prost(uint64, optional, tag="7")]
10360    pub nr_mapped: ::core::option::Option<u64>,
10361    #[prost(uint64, optional, tag="8")]
10362    pub nr_migrated: ::core::option::Option<u64>,
10363    #[prost(uint64, optional, tag="9")]
10364    pub nr_reclaimed: ::core::option::Option<u64>,
10365    #[prost(uint64, optional, tag="10")]
10366    pub pfn: ::core::option::Option<u64>,
10367}
10368#[derive(Clone, PartialEq, ::prost::Message)]
10369pub struct CmaAllocFinishFtraceEvent {
10370    #[prost(string, optional, tag="1")]
10371    pub name: ::core::option::Option<::prost::alloc::string::String>,
10372    #[prost(uint64, optional, tag="2")]
10373    pub pfn: ::core::option::Option<u64>,
10374    #[prost(uint64, optional, tag="3")]
10375    pub page: ::core::option::Option<u64>,
10376    #[prost(uint64, optional, tag="4")]
10377    pub count: ::core::option::Option<u64>,
10378    #[prost(uint32, optional, tag="5")]
10379    pub align: ::core::option::Option<u32>,
10380    #[prost(int32, optional, tag="6")]
10381    pub errorno: ::core::option::Option<i32>,
10382}
10383// End of protos/perfetto/trace/ftrace/cma.proto
10384
10385// Begin of protos/perfetto/trace/ftrace/compaction.proto
10386
10387#[derive(Clone, PartialEq, ::prost::Message)]
10388pub struct MmCompactionBeginFtraceEvent {
10389    #[prost(uint64, optional, tag="1")]
10390    pub zone_start: ::core::option::Option<u64>,
10391    #[prost(uint64, optional, tag="2")]
10392    pub migrate_pfn: ::core::option::Option<u64>,
10393    #[prost(uint64, optional, tag="3")]
10394    pub free_pfn: ::core::option::Option<u64>,
10395    #[prost(uint64, optional, tag="4")]
10396    pub zone_end: ::core::option::Option<u64>,
10397    #[prost(uint32, optional, tag="5")]
10398    pub sync: ::core::option::Option<u32>,
10399}
10400#[derive(Clone, PartialEq, ::prost::Message)]
10401pub struct MmCompactionDeferCompactionFtraceEvent {
10402    #[prost(int32, optional, tag="1")]
10403    pub nid: ::core::option::Option<i32>,
10404    #[prost(uint32, optional, tag="2")]
10405    pub idx: ::core::option::Option<u32>,
10406    #[prost(int32, optional, tag="3")]
10407    pub order: ::core::option::Option<i32>,
10408    #[prost(uint32, optional, tag="4")]
10409    pub considered: ::core::option::Option<u32>,
10410    #[prost(uint32, optional, tag="5")]
10411    pub defer_shift: ::core::option::Option<u32>,
10412    #[prost(int32, optional, tag="6")]
10413    pub order_failed: ::core::option::Option<i32>,
10414}
10415#[derive(Clone, PartialEq, ::prost::Message)]
10416pub struct MmCompactionDeferredFtraceEvent {
10417    #[prost(int32, optional, tag="1")]
10418    pub nid: ::core::option::Option<i32>,
10419    #[prost(uint32, optional, tag="2")]
10420    pub idx: ::core::option::Option<u32>,
10421    #[prost(int32, optional, tag="3")]
10422    pub order: ::core::option::Option<i32>,
10423    #[prost(uint32, optional, tag="4")]
10424    pub considered: ::core::option::Option<u32>,
10425    #[prost(uint32, optional, tag="5")]
10426    pub defer_shift: ::core::option::Option<u32>,
10427    #[prost(int32, optional, tag="6")]
10428    pub order_failed: ::core::option::Option<i32>,
10429}
10430#[derive(Clone, PartialEq, ::prost::Message)]
10431pub struct MmCompactionDeferResetFtraceEvent {
10432    #[prost(int32, optional, tag="1")]
10433    pub nid: ::core::option::Option<i32>,
10434    #[prost(uint32, optional, tag="2")]
10435    pub idx: ::core::option::Option<u32>,
10436    #[prost(int32, optional, tag="3")]
10437    pub order: ::core::option::Option<i32>,
10438    #[prost(uint32, optional, tag="4")]
10439    pub considered: ::core::option::Option<u32>,
10440    #[prost(uint32, optional, tag="5")]
10441    pub defer_shift: ::core::option::Option<u32>,
10442    #[prost(int32, optional, tag="6")]
10443    pub order_failed: ::core::option::Option<i32>,
10444}
10445#[derive(Clone, PartialEq, ::prost::Message)]
10446pub struct MmCompactionEndFtraceEvent {
10447    #[prost(uint64, optional, tag="1")]
10448    pub zone_start: ::core::option::Option<u64>,
10449    #[prost(uint64, optional, tag="2")]
10450    pub migrate_pfn: ::core::option::Option<u64>,
10451    #[prost(uint64, optional, tag="3")]
10452    pub free_pfn: ::core::option::Option<u64>,
10453    #[prost(uint64, optional, tag="4")]
10454    pub zone_end: ::core::option::Option<u64>,
10455    #[prost(uint32, optional, tag="5")]
10456    pub sync: ::core::option::Option<u32>,
10457    #[prost(int32, optional, tag="6")]
10458    pub status: ::core::option::Option<i32>,
10459}
10460#[derive(Clone, PartialEq, ::prost::Message)]
10461pub struct MmCompactionFinishedFtraceEvent {
10462    #[prost(int32, optional, tag="1")]
10463    pub nid: ::core::option::Option<i32>,
10464    #[prost(uint32, optional, tag="2")]
10465    pub idx: ::core::option::Option<u32>,
10466    #[prost(int32, optional, tag="3")]
10467    pub order: ::core::option::Option<i32>,
10468    #[prost(int32, optional, tag="4")]
10469    pub ret: ::core::option::Option<i32>,
10470}
10471#[derive(Clone, PartialEq, ::prost::Message)]
10472pub struct MmCompactionIsolateFreepagesFtraceEvent {
10473    #[prost(uint64, optional, tag="1")]
10474    pub start_pfn: ::core::option::Option<u64>,
10475    #[prost(uint64, optional, tag="2")]
10476    pub end_pfn: ::core::option::Option<u64>,
10477    #[prost(uint64, optional, tag="3")]
10478    pub nr_scanned: ::core::option::Option<u64>,
10479    #[prost(uint64, optional, tag="4")]
10480    pub nr_taken: ::core::option::Option<u64>,
10481}
10482#[derive(Clone, PartialEq, ::prost::Message)]
10483pub struct MmCompactionIsolateMigratepagesFtraceEvent {
10484    #[prost(uint64, optional, tag="1")]
10485    pub start_pfn: ::core::option::Option<u64>,
10486    #[prost(uint64, optional, tag="2")]
10487    pub end_pfn: ::core::option::Option<u64>,
10488    #[prost(uint64, optional, tag="3")]
10489    pub nr_scanned: ::core::option::Option<u64>,
10490    #[prost(uint64, optional, tag="4")]
10491    pub nr_taken: ::core::option::Option<u64>,
10492}
10493#[derive(Clone, PartialEq, ::prost::Message)]
10494pub struct MmCompactionKcompactdSleepFtraceEvent {
10495    #[prost(int32, optional, tag="1")]
10496    pub nid: ::core::option::Option<i32>,
10497}
10498#[derive(Clone, PartialEq, ::prost::Message)]
10499pub struct MmCompactionKcompactdWakeFtraceEvent {
10500    #[prost(int32, optional, tag="1")]
10501    pub nid: ::core::option::Option<i32>,
10502    #[prost(int32, optional, tag="2")]
10503    pub order: ::core::option::Option<i32>,
10504    #[prost(uint32, optional, tag="3")]
10505    pub classzone_idx: ::core::option::Option<u32>,
10506    #[prost(uint32, optional, tag="4")]
10507    pub highest_zoneidx: ::core::option::Option<u32>,
10508}
10509#[derive(Clone, PartialEq, ::prost::Message)]
10510pub struct MmCompactionMigratepagesFtraceEvent {
10511    #[prost(uint64, optional, tag="1")]
10512    pub nr_migrated: ::core::option::Option<u64>,
10513    #[prost(uint64, optional, tag="2")]
10514    pub nr_failed: ::core::option::Option<u64>,
10515}
10516#[derive(Clone, PartialEq, ::prost::Message)]
10517pub struct MmCompactionSuitableFtraceEvent {
10518    #[prost(int32, optional, tag="1")]
10519    pub nid: ::core::option::Option<i32>,
10520    #[prost(uint32, optional, tag="2")]
10521    pub idx: ::core::option::Option<u32>,
10522    #[prost(int32, optional, tag="3")]
10523    pub order: ::core::option::Option<i32>,
10524    #[prost(int32, optional, tag="4")]
10525    pub ret: ::core::option::Option<i32>,
10526}
10527#[derive(Clone, PartialEq, ::prost::Message)]
10528pub struct MmCompactionTryToCompactPagesFtraceEvent {
10529    #[prost(int32, optional, tag="1")]
10530    pub order: ::core::option::Option<i32>,
10531    #[prost(uint32, optional, tag="2")]
10532    pub gfp_mask: ::core::option::Option<u32>,
10533    #[prost(uint32, optional, tag="3")]
10534    pub mode: ::core::option::Option<u32>,
10535    #[prost(int32, optional, tag="4")]
10536    pub prio: ::core::option::Option<i32>,
10537}
10538#[derive(Clone, PartialEq, ::prost::Message)]
10539pub struct MmCompactionWakeupKcompactdFtraceEvent {
10540    #[prost(int32, optional, tag="1")]
10541    pub nid: ::core::option::Option<i32>,
10542    #[prost(int32, optional, tag="2")]
10543    pub order: ::core::option::Option<i32>,
10544    #[prost(uint32, optional, tag="3")]
10545    pub classzone_idx: ::core::option::Option<u32>,
10546    #[prost(uint32, optional, tag="4")]
10547    pub highest_zoneidx: ::core::option::Option<u32>,
10548}
10549// End of protos/perfetto/trace/ftrace/compaction.proto
10550
10551// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
10552
10553#[derive(Clone, PartialEq, ::prost::Message)]
10554pub struct ParamSetValueCpmFtraceEvent {
10555    #[prost(string, optional, tag="1")]
10556    pub body: ::core::option::Option<::prost::alloc::string::String>,
10557    #[prost(uint32, optional, tag="2")]
10558    pub value: ::core::option::Option<u32>,
10559    #[prost(int64, optional, tag="3")]
10560    pub timestamp: ::core::option::Option<i64>,
10561}
10562// End of protos/perfetto/trace/ftrace/cpm_trace.proto
10563
10564// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
10565
10566#[derive(Clone, PartialEq, ::prost::Message)]
10567pub struct CpuhpExitFtraceEvent {
10568    #[prost(uint32, optional, tag="1")]
10569    pub cpu: ::core::option::Option<u32>,
10570    #[prost(int32, optional, tag="2")]
10571    pub idx: ::core::option::Option<i32>,
10572    #[prost(int32, optional, tag="3")]
10573    pub ret: ::core::option::Option<i32>,
10574    #[prost(int32, optional, tag="4")]
10575    pub state: ::core::option::Option<i32>,
10576}
10577#[derive(Clone, PartialEq, ::prost::Message)]
10578pub struct CpuhpMultiEnterFtraceEvent {
10579    #[prost(uint32, optional, tag="1")]
10580    pub cpu: ::core::option::Option<u32>,
10581    #[prost(uint64, optional, tag="2")]
10582    pub fun: ::core::option::Option<u64>,
10583    #[prost(int32, optional, tag="3")]
10584    pub idx: ::core::option::Option<i32>,
10585    #[prost(int32, optional, tag="4")]
10586    pub target: ::core::option::Option<i32>,
10587}
10588#[derive(Clone, PartialEq, ::prost::Message)]
10589pub struct CpuhpEnterFtraceEvent {
10590    #[prost(uint32, optional, tag="1")]
10591    pub cpu: ::core::option::Option<u32>,
10592    #[prost(uint64, optional, tag="2")]
10593    pub fun: ::core::option::Option<u64>,
10594    #[prost(int32, optional, tag="3")]
10595    pub idx: ::core::option::Option<i32>,
10596    #[prost(int32, optional, tag="4")]
10597    pub target: ::core::option::Option<i32>,
10598}
10599#[derive(Clone, PartialEq, ::prost::Message)]
10600pub struct CpuhpLatencyFtraceEvent {
10601    #[prost(uint32, optional, tag="1")]
10602    pub cpu: ::core::option::Option<u32>,
10603    #[prost(int32, optional, tag="2")]
10604    pub ret: ::core::option::Option<i32>,
10605    #[prost(uint32, optional, tag="3")]
10606    pub state: ::core::option::Option<u32>,
10607    #[prost(uint64, optional, tag="4")]
10608    pub time: ::core::option::Option<u64>,
10609}
10610#[derive(Clone, PartialEq, ::prost::Message)]
10611pub struct CpuhpPauseFtraceEvent {
10612    #[prost(uint32, optional, tag="1")]
10613    pub active_cpus: ::core::option::Option<u32>,
10614    #[prost(uint32, optional, tag="2")]
10615    pub cpus: ::core::option::Option<u32>,
10616    #[prost(uint32, optional, tag="3")]
10617    pub pause: ::core::option::Option<u32>,
10618    #[prost(uint32, optional, tag="4")]
10619    pub time: ::core::option::Option<u32>,
10620}
10621// End of protos/perfetto/trace/ftrace/cpuhp.proto
10622
10623// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
10624
10625#[derive(Clone, PartialEq, ::prost::Message)]
10626pub struct CrosEcSensorhubDataFtraceEvent {
10627    #[prost(int64, optional, tag="1")]
10628    pub current_time: ::core::option::Option<i64>,
10629    #[prost(int64, optional, tag="2")]
10630    pub current_timestamp: ::core::option::Option<i64>,
10631    #[prost(int64, optional, tag="3")]
10632    pub delta: ::core::option::Option<i64>,
10633    #[prost(uint32, optional, tag="4")]
10634    pub ec_fifo_timestamp: ::core::option::Option<u32>,
10635    #[prost(uint32, optional, tag="5")]
10636    pub ec_sensor_num: ::core::option::Option<u32>,
10637    #[prost(int64, optional, tag="6")]
10638    pub fifo_timestamp: ::core::option::Option<i64>,
10639}
10640// End of protos/perfetto/trace/ftrace/cros_ec.proto
10641
10642// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
10643
10644#[derive(Clone, PartialEq, ::prost::Message)]
10645pub struct DcvshFreqFtraceEvent {
10646    #[prost(uint64, optional, tag="1")]
10647    pub cpu: ::core::option::Option<u64>,
10648    #[prost(uint64, optional, tag="2")]
10649    pub freq: ::core::option::Option<u64>,
10650}
10651// End of protos/perfetto/trace/ftrace/dcvsh.proto
10652
10653// Begin of protos/perfetto/trace/ftrace/devfreq.proto
10654
10655#[derive(Clone, PartialEq, ::prost::Message)]
10656pub struct DevfreqFrequencyFtraceEvent {
10657    #[prost(string, optional, tag="1")]
10658    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
10659    #[prost(uint64, optional, tag="2")]
10660    pub freq: ::core::option::Option<u64>,
10661    #[prost(uint64, optional, tag="3")]
10662    pub prev_freq: ::core::option::Option<u64>,
10663    #[prost(uint64, optional, tag="4")]
10664    pub busy_time: ::core::option::Option<u64>,
10665    #[prost(uint64, optional, tag="5")]
10666    pub total_time: ::core::option::Option<u64>,
10667}
10668// End of protos/perfetto/trace/ftrace/devfreq.proto
10669
10670// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
10671
10672#[derive(Clone, PartialEq, ::prost::Message)]
10673pub struct DmaFenceInitFtraceEvent {
10674    #[prost(uint32, optional, tag="1")]
10675    pub context: ::core::option::Option<u32>,
10676    #[prost(string, optional, tag="2")]
10677    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10678    #[prost(uint32, optional, tag="3")]
10679    pub seqno: ::core::option::Option<u32>,
10680    #[prost(string, optional, tag="4")]
10681    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10682}
10683#[derive(Clone, PartialEq, ::prost::Message)]
10684pub struct DmaFenceEmitFtraceEvent {
10685    #[prost(uint32, optional, tag="1")]
10686    pub context: ::core::option::Option<u32>,
10687    #[prost(string, optional, tag="2")]
10688    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10689    #[prost(uint32, optional, tag="3")]
10690    pub seqno: ::core::option::Option<u32>,
10691    #[prost(string, optional, tag="4")]
10692    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10693}
10694#[derive(Clone, PartialEq, ::prost::Message)]
10695pub struct DmaFenceSignaledFtraceEvent {
10696    #[prost(uint32, optional, tag="1")]
10697    pub context: ::core::option::Option<u32>,
10698    #[prost(string, optional, tag="2")]
10699    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10700    #[prost(uint32, optional, tag="3")]
10701    pub seqno: ::core::option::Option<u32>,
10702    #[prost(string, optional, tag="4")]
10703    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10704}
10705#[derive(Clone, PartialEq, ::prost::Message)]
10706pub struct DmaFenceWaitStartFtraceEvent {
10707    #[prost(uint32, optional, tag="1")]
10708    pub context: ::core::option::Option<u32>,
10709    #[prost(string, optional, tag="2")]
10710    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10711    #[prost(uint32, optional, tag="3")]
10712    pub seqno: ::core::option::Option<u32>,
10713    #[prost(string, optional, tag="4")]
10714    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10715}
10716#[derive(Clone, PartialEq, ::prost::Message)]
10717pub struct DmaFenceWaitEndFtraceEvent {
10718    #[prost(uint32, optional, tag="1")]
10719    pub context: ::core::option::Option<u32>,
10720    #[prost(string, optional, tag="2")]
10721    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10722    #[prost(uint32, optional, tag="3")]
10723    pub seqno: ::core::option::Option<u32>,
10724    #[prost(string, optional, tag="4")]
10725    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10726}
10727// End of protos/perfetto/trace/ftrace/dma_fence.proto
10728
10729// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10730
10731#[derive(Clone, PartialEq, ::prost::Message)]
10732pub struct DmaHeapStatFtraceEvent {
10733    #[prost(uint64, optional, tag="1")]
10734    pub inode: ::core::option::Option<u64>,
10735    #[prost(int64, optional, tag="2")]
10736    pub len: ::core::option::Option<i64>,
10737    #[prost(uint64, optional, tag="3")]
10738    pub total_allocated: ::core::option::Option<u64>,
10739}
10740// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10741
10742// Begin of protos/perfetto/trace/ftrace/dpu.proto
10743
10744#[derive(Clone, PartialEq, ::prost::Message)]
10745pub struct DpuTracingMarkWriteFtraceEvent {
10746    #[prost(int32, optional, tag="1")]
10747    pub pid: ::core::option::Option<i32>,
10748    #[prost(string, optional, tag="2")]
10749    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10750    #[prost(uint32, optional, tag="3")]
10751    pub trace_begin: ::core::option::Option<u32>,
10752    #[prost(string, optional, tag="4")]
10753    pub name: ::core::option::Option<::prost::alloc::string::String>,
10754    #[prost(uint32, optional, tag="5")]
10755    pub r#type: ::core::option::Option<u32>,
10756    #[prost(int32, optional, tag="6")]
10757    pub value: ::core::option::Option<i32>,
10758}
10759#[derive(Clone, PartialEq, ::prost::Message)]
10760pub struct DpuDsiCmdFifoStatusFtraceEvent {
10761    #[prost(uint32, optional, tag="1")]
10762    pub header: ::core::option::Option<u32>,
10763    #[prost(uint32, optional, tag="2")]
10764    pub payload: ::core::option::Option<u32>,
10765}
10766#[derive(Clone, PartialEq, ::prost::Message)]
10767pub struct DpuDsiRxFtraceEvent {
10768    #[prost(uint32, optional, tag="1")]
10769    pub cmd: ::core::option::Option<u32>,
10770    #[prost(bytes="vec", optional, tag="3")]
10771    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10772}
10773#[derive(Clone, PartialEq, ::prost::Message)]
10774pub struct DpuDsiTxFtraceEvent {
10775    #[prost(uint32, optional, tag="1")]
10776    pub r#type: ::core::option::Option<u32>,
10777    #[prost(uint32, optional, tag="3")]
10778    pub last: ::core::option::Option<u32>,
10779    #[prost(uint32, optional, tag="4")]
10780    pub delay_ms: ::core::option::Option<u32>,
10781    #[prost(bytes="vec", optional, tag="5")]
10782    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10783}
10784#[derive(Clone, PartialEq, ::prost::Message)]
10785pub struct DpuDispDpuUnderrunFtraceEvent {
10786    #[prost(int32, optional, tag="1")]
10787    pub id: ::core::option::Option<i32>,
10788    #[prost(int32, optional, tag="2")]
10789    pub frames_pending: ::core::option::Option<i32>,
10790    #[prost(int32, optional, tag="3")]
10791    pub vsync_count: ::core::option::Option<i32>,
10792}
10793#[derive(Clone, PartialEq, ::prost::Message)]
10794pub struct DpuDispVblankIrqEnableFtraceEvent {
10795    #[prost(int32, optional, tag="1")]
10796    pub id: ::core::option::Option<i32>,
10797    #[prost(int32, optional, tag="2")]
10798    pub output_id: ::core::option::Option<i32>,
10799    #[prost(int32, optional, tag="3")]
10800    pub enable: ::core::option::Option<i32>,
10801}
10802// End of protos/perfetto/trace/ftrace/dpu.proto
10803
10804// Begin of protos/perfetto/trace/ftrace/drm.proto
10805
10806#[derive(Clone, PartialEq, ::prost::Message)]
10807pub struct DrmVblankEventFtraceEvent {
10808    #[prost(int32, optional, tag="1")]
10809    pub crtc: ::core::option::Option<i32>,
10810    #[prost(uint32, optional, tag="2")]
10811    pub high_prec: ::core::option::Option<u32>,
10812    #[prost(uint32, optional, tag="3")]
10813    pub seq: ::core::option::Option<u32>,
10814    #[prost(int64, optional, tag="4")]
10815    pub time: ::core::option::Option<i64>,
10816}
10817#[derive(Clone, PartialEq, ::prost::Message)]
10818pub struct DrmVblankEventDeliveredFtraceEvent {
10819    #[prost(int32, optional, tag="1")]
10820    pub crtc: ::core::option::Option<i32>,
10821    #[prost(uint64, optional, tag="2")]
10822    pub file: ::core::option::Option<u64>,
10823    #[prost(uint32, optional, tag="3")]
10824    pub seq: ::core::option::Option<u32>,
10825}
10826// End of protos/perfetto/trace/ftrace/drm.proto
10827
10828// Begin of protos/perfetto/trace/ftrace/dwc3.proto
10829
10830#[derive(Clone, PartialEq, ::prost::Message)]
10831pub struct Dwc3AllocRequestFtraceEvent {
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 Dwc3CompleteTrbFtraceEvent {
10851    #[prost(string, optional, tag="1")]
10852    pub name: ::core::option::Option<::prost::alloc::string::String>,
10853    #[prost(uint64, optional, tag="2")]
10854    pub trb: ::core::option::Option<u64>,
10855    #[prost(uint32, optional, tag="3")]
10856    pub allocated: ::core::option::Option<u32>,
10857    #[prost(uint32, optional, tag="4")]
10858    pub queued: ::core::option::Option<u32>,
10859    #[prost(uint32, optional, tag="5")]
10860    pub bpl: ::core::option::Option<u32>,
10861    #[prost(uint32, optional, tag="6")]
10862    pub bph: ::core::option::Option<u32>,
10863    #[prost(uint32, optional, tag="7")]
10864    pub size: ::core::option::Option<u32>,
10865    #[prost(uint32, optional, tag="8")]
10866    pub ctrl: ::core::option::Option<u32>,
10867    #[prost(uint32, optional, tag="9")]
10868    pub r#type: ::core::option::Option<u32>,
10869    #[prost(uint32, optional, tag="10")]
10870    pub enqueue: ::core::option::Option<u32>,
10871    #[prost(uint32, optional, tag="11")]
10872    pub dequeue: ::core::option::Option<u32>,
10873}
10874#[derive(Clone, PartialEq, ::prost::Message)]
10875pub struct Dwc3CtrlReqFtraceEvent {
10876    #[prost(uint32, optional, tag="1")]
10877    pub b_request_type: ::core::option::Option<u32>,
10878    #[prost(uint32, optional, tag="2")]
10879    pub b_request: ::core::option::Option<u32>,
10880    #[prost(uint32, optional, tag="3")]
10881    pub w_value: ::core::option::Option<u32>,
10882    #[prost(uint32, optional, tag="4")]
10883    pub w_index: ::core::option::Option<u32>,
10884    #[prost(uint32, optional, tag="5")]
10885    pub w_length: ::core::option::Option<u32>,
10886    #[prost(string, optional, tag="6")]
10887    pub str: ::core::option::Option<::prost::alloc::string::String>,
10888}
10889#[derive(Clone, PartialEq, ::prost::Message)]
10890pub struct Dwc3EpDequeueFtraceEvent {
10891    #[prost(string, optional, tag="1")]
10892    pub name: ::core::option::Option<::prost::alloc::string::String>,
10893    #[prost(uint64, optional, tag="2")]
10894    pub req: ::core::option::Option<u64>,
10895    #[prost(uint32, optional, tag="3")]
10896    pub actual: ::core::option::Option<u32>,
10897    #[prost(uint32, optional, tag="4")]
10898    pub length: ::core::option::Option<u32>,
10899    #[prost(int32, optional, tag="5")]
10900    pub status: ::core::option::Option<i32>,
10901    #[prost(int32, optional, tag="6")]
10902    pub zero: ::core::option::Option<i32>,
10903    #[prost(int32, optional, tag="7")]
10904    pub short_not_ok: ::core::option::Option<i32>,
10905    #[prost(int32, optional, tag="8")]
10906    pub no_interrupt: ::core::option::Option<i32>,
10907}
10908#[derive(Clone, PartialEq, ::prost::Message)]
10909pub struct Dwc3EpQueueFtraceEvent {
10910    #[prost(string, optional, tag="1")]
10911    pub name: ::core::option::Option<::prost::alloc::string::String>,
10912    #[prost(uint64, optional, tag="2")]
10913    pub req: ::core::option::Option<u64>,
10914    #[prost(uint32, optional, tag="3")]
10915    pub actual: ::core::option::Option<u32>,
10916    #[prost(uint32, optional, tag="4")]
10917    pub length: ::core::option::Option<u32>,
10918    #[prost(int32, optional, tag="5")]
10919    pub status: ::core::option::Option<i32>,
10920    #[prost(int32, optional, tag="6")]
10921    pub zero: ::core::option::Option<i32>,
10922    #[prost(int32, optional, tag="7")]
10923    pub short_not_ok: ::core::option::Option<i32>,
10924    #[prost(int32, optional, tag="8")]
10925    pub no_interrupt: ::core::option::Option<i32>,
10926}
10927#[derive(Clone, PartialEq, ::prost::Message)]
10928pub struct Dwc3EventFtraceEvent {
10929    #[prost(uint32, optional, tag="1")]
10930    pub event: ::core::option::Option<u32>,
10931    #[prost(uint32, optional, tag="2")]
10932    pub ep0state: ::core::option::Option<u32>,
10933    #[prost(string, optional, tag="3")]
10934    pub str: ::core::option::Option<::prost::alloc::string::String>,
10935}
10936#[derive(Clone, PartialEq, ::prost::Message)]
10937pub struct Dwc3FreeRequestFtraceEvent {
10938    #[prost(string, optional, tag="1")]
10939    pub name: ::core::option::Option<::prost::alloc::string::String>,
10940    #[prost(uint64, optional, tag="2")]
10941    pub req: ::core::option::Option<u64>,
10942    #[prost(uint32, optional, tag="3")]
10943    pub actual: ::core::option::Option<u32>,
10944    #[prost(uint32, optional, tag="4")]
10945    pub length: ::core::option::Option<u32>,
10946    #[prost(int32, optional, tag="5")]
10947    pub status: ::core::option::Option<i32>,
10948    #[prost(int32, optional, tag="6")]
10949    pub zero: ::core::option::Option<i32>,
10950    #[prost(int32, optional, tag="7")]
10951    pub short_not_ok: ::core::option::Option<i32>,
10952    #[prost(int32, optional, tag="8")]
10953    pub no_interrupt: ::core::option::Option<i32>,
10954}
10955#[derive(Clone, PartialEq, ::prost::Message)]
10956pub struct Dwc3GadgetEpCmdFtraceEvent {
10957    #[prost(string, optional, tag="1")]
10958    pub name: ::core::option::Option<::prost::alloc::string::String>,
10959    #[prost(uint32, optional, tag="2")]
10960    pub cmd: ::core::option::Option<u32>,
10961    #[prost(uint32, optional, tag="3")]
10962    pub param0: ::core::option::Option<u32>,
10963    #[prost(uint32, optional, tag="4")]
10964    pub param1: ::core::option::Option<u32>,
10965    #[prost(uint32, optional, tag="5")]
10966    pub param2: ::core::option::Option<u32>,
10967    #[prost(int32, optional, tag="6")]
10968    pub cmd_status: ::core::option::Option<i32>,
10969}
10970#[derive(Clone, PartialEq, ::prost::Message)]
10971pub struct Dwc3GadgetEpDisableFtraceEvent {
10972    #[prost(string, optional, tag="1")]
10973    pub name: ::core::option::Option<::prost::alloc::string::String>,
10974    #[prost(uint32, optional, tag="2")]
10975    pub maxpacket: ::core::option::Option<u32>,
10976    #[prost(uint32, optional, tag="3")]
10977    pub maxpacket_limit: ::core::option::Option<u32>,
10978    #[prost(uint32, optional, tag="4")]
10979    pub max_streams: ::core::option::Option<u32>,
10980    #[prost(uint32, optional, tag="5")]
10981    pub maxburst: ::core::option::Option<u32>,
10982    #[prost(uint32, optional, tag="6")]
10983    pub flags: ::core::option::Option<u32>,
10984    #[prost(uint32, optional, tag="7")]
10985    pub direction: ::core::option::Option<u32>,
10986    #[prost(uint32, optional, tag="8")]
10987    pub trb_enqueue: ::core::option::Option<u32>,
10988    #[prost(uint32, optional, tag="9")]
10989    pub trb_dequeue: ::core::option::Option<u32>,
10990}
10991#[derive(Clone, PartialEq, ::prost::Message)]
10992pub struct Dwc3GadgetEpEnableFtraceEvent {
10993    #[prost(string, optional, tag="1")]
10994    pub name: ::core::option::Option<::prost::alloc::string::String>,
10995    #[prost(uint32, optional, tag="2")]
10996    pub maxpacket: ::core::option::Option<u32>,
10997    #[prost(uint32, optional, tag="3")]
10998    pub maxpacket_limit: ::core::option::Option<u32>,
10999    #[prost(uint32, optional, tag="4")]
11000    pub max_streams: ::core::option::Option<u32>,
11001    #[prost(uint32, optional, tag="5")]
11002    pub maxburst: ::core::option::Option<u32>,
11003    #[prost(uint32, optional, tag="6")]
11004    pub flags: ::core::option::Option<u32>,
11005    #[prost(uint32, optional, tag="7")]
11006    pub direction: ::core::option::Option<u32>,
11007    #[prost(uint32, optional, tag="8")]
11008    pub trb_enqueue: ::core::option::Option<u32>,
11009    #[prost(uint32, optional, tag="9")]
11010    pub trb_dequeue: ::core::option::Option<u32>,
11011}
11012#[derive(Clone, PartialEq, ::prost::Message)]
11013pub struct Dwc3GadgetGenericCmdFtraceEvent {
11014    #[prost(uint32, optional, tag="1")]
11015    pub cmd: ::core::option::Option<u32>,
11016    #[prost(uint32, optional, tag="2")]
11017    pub param: ::core::option::Option<u32>,
11018    #[prost(int32, optional, tag="3")]
11019    pub status: ::core::option::Option<i32>,
11020}
11021#[derive(Clone, PartialEq, ::prost::Message)]
11022pub struct Dwc3GadgetGivebackFtraceEvent {
11023    #[prost(string, optional, tag="1")]
11024    pub name: ::core::option::Option<::prost::alloc::string::String>,
11025    #[prost(uint64, optional, tag="2")]
11026    pub req: ::core::option::Option<u64>,
11027    #[prost(uint32, optional, tag="3")]
11028    pub actual: ::core::option::Option<u32>,
11029    #[prost(uint32, optional, tag="4")]
11030    pub length: ::core::option::Option<u32>,
11031    #[prost(int32, optional, tag="5")]
11032    pub status: ::core::option::Option<i32>,
11033    #[prost(int32, optional, tag="6")]
11034    pub zero: ::core::option::Option<i32>,
11035    #[prost(int32, optional, tag="7")]
11036    pub short_not_ok: ::core::option::Option<i32>,
11037    #[prost(int32, optional, tag="8")]
11038    pub no_interrupt: ::core::option::Option<i32>,
11039}
11040#[derive(Clone, PartialEq, ::prost::Message)]
11041pub struct Dwc3PrepareTrbFtraceEvent {
11042    #[prost(string, optional, tag="1")]
11043    pub name: ::core::option::Option<::prost::alloc::string::String>,
11044    #[prost(uint64, optional, tag="2")]
11045    pub trb: ::core::option::Option<u64>,
11046    #[prost(uint32, optional, tag="3")]
11047    pub allocated: ::core::option::Option<u32>,
11048    #[prost(uint32, optional, tag="4")]
11049    pub queued: ::core::option::Option<u32>,
11050    #[prost(uint32, optional, tag="5")]
11051    pub bpl: ::core::option::Option<u32>,
11052    #[prost(uint32, optional, tag="6")]
11053    pub bph: ::core::option::Option<u32>,
11054    #[prost(uint32, optional, tag="7")]
11055    pub size: ::core::option::Option<u32>,
11056    #[prost(uint32, optional, tag="8")]
11057    pub ctrl: ::core::option::Option<u32>,
11058    #[prost(uint32, optional, tag="9")]
11059    pub r#type: ::core::option::Option<u32>,
11060    #[prost(uint32, optional, tag="10")]
11061    pub enqueue: ::core::option::Option<u32>,
11062    #[prost(uint32, optional, tag="11")]
11063    pub dequeue: ::core::option::Option<u32>,
11064}
11065#[derive(Clone, PartialEq, ::prost::Message)]
11066pub struct Dwc3ReadlFtraceEvent {
11067    #[prost(uint64, optional, tag="1")]
11068    pub base: ::core::option::Option<u64>,
11069    #[prost(uint32, optional, tag="2")]
11070    pub offset: ::core::option::Option<u32>,
11071    #[prost(uint32, optional, tag="3")]
11072    pub value: ::core::option::Option<u32>,
11073    #[prost(string, optional, tag="4")]
11074    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11075}
11076#[derive(Clone, PartialEq, ::prost::Message)]
11077pub struct Dwc3WritelFtraceEvent {
11078    #[prost(uint64, optional, tag="1")]
11079    pub base: ::core::option::Option<u64>,
11080    #[prost(uint32, optional, tag="2")]
11081    pub offset: ::core::option::Option<u32>,
11082    #[prost(uint32, optional, tag="3")]
11083    pub value: ::core::option::Option<u32>,
11084    #[prost(string, optional, tag="4")]
11085    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11086}
11087// End of protos/perfetto/trace/ftrace/dwc3.proto
11088
11089// Begin of protos/perfetto/trace/ftrace/ext4.proto
11090
11091#[derive(Clone, PartialEq, ::prost::Message)]
11092pub struct Ext4DaWriteBeginFtraceEvent {
11093    #[prost(uint64, optional, tag="1")]
11094    pub dev: ::core::option::Option<u64>,
11095    #[prost(uint64, optional, tag="2")]
11096    pub ino: ::core::option::Option<u64>,
11097    #[prost(int64, optional, tag="3")]
11098    pub pos: ::core::option::Option<i64>,
11099    #[prost(uint32, optional, tag="4")]
11100    pub len: ::core::option::Option<u32>,
11101    #[prost(uint32, optional, tag="5")]
11102    pub flags: ::core::option::Option<u32>,
11103}
11104#[derive(Clone, PartialEq, ::prost::Message)]
11105pub struct Ext4DaWriteEndFtraceEvent {
11106    #[prost(uint64, optional, tag="1")]
11107    pub dev: ::core::option::Option<u64>,
11108    #[prost(uint64, optional, tag="2")]
11109    pub ino: ::core::option::Option<u64>,
11110    #[prost(int64, optional, tag="3")]
11111    pub pos: ::core::option::Option<i64>,
11112    #[prost(uint32, optional, tag="4")]
11113    pub len: ::core::option::Option<u32>,
11114    #[prost(uint32, optional, tag="5")]
11115    pub copied: ::core::option::Option<u32>,
11116}
11117#[derive(Clone, PartialEq, ::prost::Message)]
11118pub struct Ext4SyncFileEnterFtraceEvent {
11119    #[prost(uint64, optional, tag="1")]
11120    pub dev: ::core::option::Option<u64>,
11121    #[prost(uint64, optional, tag="2")]
11122    pub ino: ::core::option::Option<u64>,
11123    #[prost(uint64, optional, tag="3")]
11124    pub parent: ::core::option::Option<u64>,
11125    #[prost(int32, optional, tag="4")]
11126    pub datasync: ::core::option::Option<i32>,
11127}
11128#[derive(Clone, PartialEq, ::prost::Message)]
11129pub struct Ext4SyncFileExitFtraceEvent {
11130    #[prost(uint64, optional, tag="1")]
11131    pub dev: ::core::option::Option<u64>,
11132    #[prost(uint64, optional, tag="2")]
11133    pub ino: ::core::option::Option<u64>,
11134    #[prost(int32, optional, tag="3")]
11135    pub ret: ::core::option::Option<i32>,
11136}
11137#[derive(Clone, PartialEq, ::prost::Message)]
11138pub struct Ext4AllocDaBlocksFtraceEvent {
11139    #[prost(uint64, optional, tag="1")]
11140    pub dev: ::core::option::Option<u64>,
11141    #[prost(uint64, optional, tag="2")]
11142    pub ino: ::core::option::Option<u64>,
11143    #[prost(uint32, optional, tag="3")]
11144    pub data_blocks: ::core::option::Option<u32>,
11145    #[prost(uint32, optional, tag="4")]
11146    pub meta_blocks: ::core::option::Option<u32>,
11147}
11148#[derive(Clone, PartialEq, ::prost::Message)]
11149pub struct Ext4AllocateBlocksFtraceEvent {
11150    #[prost(uint64, optional, tag="1")]
11151    pub dev: ::core::option::Option<u64>,
11152    #[prost(uint64, optional, tag="2")]
11153    pub ino: ::core::option::Option<u64>,
11154    #[prost(uint64, optional, tag="3")]
11155    pub block: ::core::option::Option<u64>,
11156    #[prost(uint32, optional, tag="4")]
11157    pub len: ::core::option::Option<u32>,
11158    #[prost(uint32, optional, tag="5")]
11159    pub logical: ::core::option::Option<u32>,
11160    #[prost(uint32, optional, tag="6")]
11161    pub lleft: ::core::option::Option<u32>,
11162    #[prost(uint32, optional, tag="7")]
11163    pub lright: ::core::option::Option<u32>,
11164    #[prost(uint64, optional, tag="8")]
11165    pub goal: ::core::option::Option<u64>,
11166    #[prost(uint64, optional, tag="9")]
11167    pub pleft: ::core::option::Option<u64>,
11168    #[prost(uint64, optional, tag="10")]
11169    pub pright: ::core::option::Option<u64>,
11170    #[prost(uint32, optional, tag="11")]
11171    pub flags: ::core::option::Option<u32>,
11172}
11173#[derive(Clone, PartialEq, ::prost::Message)]
11174pub struct Ext4AllocateInodeFtraceEvent {
11175    #[prost(uint64, optional, tag="1")]
11176    pub dev: ::core::option::Option<u64>,
11177    #[prost(uint64, optional, tag="2")]
11178    pub ino: ::core::option::Option<u64>,
11179    #[prost(uint64, optional, tag="3")]
11180    pub dir: ::core::option::Option<u64>,
11181    #[prost(uint32, optional, tag="4")]
11182    pub mode: ::core::option::Option<u32>,
11183}
11184#[derive(Clone, PartialEq, ::prost::Message)]
11185pub struct Ext4BeginOrderedTruncateFtraceEvent {
11186    #[prost(uint64, optional, tag="1")]
11187    pub dev: ::core::option::Option<u64>,
11188    #[prost(uint64, optional, tag="2")]
11189    pub ino: ::core::option::Option<u64>,
11190    #[prost(int64, optional, tag="3")]
11191    pub new_size: ::core::option::Option<i64>,
11192}
11193#[derive(Clone, PartialEq, ::prost::Message)]
11194pub struct Ext4CollapseRangeFtraceEvent {
11195    #[prost(uint64, optional, tag="1")]
11196    pub dev: ::core::option::Option<u64>,
11197    #[prost(uint64, optional, tag="2")]
11198    pub ino: ::core::option::Option<u64>,
11199    #[prost(int64, optional, tag="3")]
11200    pub offset: ::core::option::Option<i64>,
11201    #[prost(int64, optional, tag="4")]
11202    pub len: ::core::option::Option<i64>,
11203}
11204#[derive(Clone, PartialEq, ::prost::Message)]
11205pub struct Ext4DaReleaseSpaceFtraceEvent {
11206    #[prost(uint64, optional, tag="1")]
11207    pub dev: ::core::option::Option<u64>,
11208    #[prost(uint64, optional, tag="2")]
11209    pub ino: ::core::option::Option<u64>,
11210    #[prost(uint64, optional, tag="3")]
11211    pub i_blocks: ::core::option::Option<u64>,
11212    #[prost(int32, optional, tag="4")]
11213    pub freed_blocks: ::core::option::Option<i32>,
11214    #[prost(int32, optional, tag="5")]
11215    pub reserved_data_blocks: ::core::option::Option<i32>,
11216    #[prost(int32, optional, tag="6")]
11217    pub reserved_meta_blocks: ::core::option::Option<i32>,
11218    #[prost(int32, optional, tag="7")]
11219    pub allocated_meta_blocks: ::core::option::Option<i32>,
11220    #[prost(uint32, optional, tag="8")]
11221    pub mode: ::core::option::Option<u32>,
11222}
11223#[derive(Clone, PartialEq, ::prost::Message)]
11224pub struct Ext4DaReserveSpaceFtraceEvent {
11225    #[prost(uint64, optional, tag="1")]
11226    pub dev: ::core::option::Option<u64>,
11227    #[prost(uint64, optional, tag="2")]
11228    pub ino: ::core::option::Option<u64>,
11229    #[prost(uint64, optional, tag="3")]
11230    pub i_blocks: ::core::option::Option<u64>,
11231    #[prost(int32, optional, tag="4")]
11232    pub reserved_data_blocks: ::core::option::Option<i32>,
11233    #[prost(int32, optional, tag="5")]
11234    pub reserved_meta_blocks: ::core::option::Option<i32>,
11235    #[prost(uint32, optional, tag="6")]
11236    pub mode: ::core::option::Option<u32>,
11237    #[prost(int32, optional, tag="7")]
11238    pub md_needed: ::core::option::Option<i32>,
11239}
11240#[derive(Clone, PartialEq, ::prost::Message)]
11241pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
11242    #[prost(uint64, optional, tag="1")]
11243    pub dev: ::core::option::Option<u64>,
11244    #[prost(uint64, optional, tag="2")]
11245    pub ino: ::core::option::Option<u64>,
11246    #[prost(uint64, optional, tag="3")]
11247    pub i_blocks: ::core::option::Option<u64>,
11248    #[prost(int32, optional, tag="4")]
11249    pub used_blocks: ::core::option::Option<i32>,
11250    #[prost(int32, optional, tag="5")]
11251    pub reserved_data_blocks: ::core::option::Option<i32>,
11252    #[prost(int32, optional, tag="6")]
11253    pub reserved_meta_blocks: ::core::option::Option<i32>,
11254    #[prost(int32, optional, tag="7")]
11255    pub allocated_meta_blocks: ::core::option::Option<i32>,
11256    #[prost(int32, optional, tag="8")]
11257    pub quota_claim: ::core::option::Option<i32>,
11258    #[prost(uint32, optional, tag="9")]
11259    pub mode: ::core::option::Option<u32>,
11260}
11261#[derive(Clone, PartialEq, ::prost::Message)]
11262pub struct Ext4DaWritePagesFtraceEvent {
11263    #[prost(uint64, optional, tag="1")]
11264    pub dev: ::core::option::Option<u64>,
11265    #[prost(uint64, optional, tag="2")]
11266    pub ino: ::core::option::Option<u64>,
11267    #[prost(uint64, optional, tag="3")]
11268    pub first_page: ::core::option::Option<u64>,
11269    #[prost(int64, optional, tag="4")]
11270    pub nr_to_write: ::core::option::Option<i64>,
11271    #[prost(int32, optional, tag="5")]
11272    pub sync_mode: ::core::option::Option<i32>,
11273    #[prost(uint64, optional, tag="6")]
11274    pub b_blocknr: ::core::option::Option<u64>,
11275    #[prost(uint32, optional, tag="7")]
11276    pub b_size: ::core::option::Option<u32>,
11277    #[prost(uint32, optional, tag="8")]
11278    pub b_state: ::core::option::Option<u32>,
11279    #[prost(int32, optional, tag="9")]
11280    pub io_done: ::core::option::Option<i32>,
11281    #[prost(int32, optional, tag="10")]
11282    pub pages_written: ::core::option::Option<i32>,
11283}
11284#[derive(Clone, PartialEq, ::prost::Message)]
11285pub struct Ext4DaWritePagesExtentFtraceEvent {
11286    #[prost(uint64, optional, tag="1")]
11287    pub dev: ::core::option::Option<u64>,
11288    #[prost(uint64, optional, tag="2")]
11289    pub ino: ::core::option::Option<u64>,
11290    #[prost(uint64, optional, tag="3")]
11291    pub lblk: ::core::option::Option<u64>,
11292    #[prost(uint32, optional, tag="4")]
11293    pub len: ::core::option::Option<u32>,
11294    #[prost(uint32, optional, tag="5")]
11295    pub flags: ::core::option::Option<u32>,
11296}
11297#[derive(Clone, PartialEq, ::prost::Message)]
11298pub struct Ext4DirectIoEnterFtraceEvent {
11299    #[prost(uint64, optional, tag="1")]
11300    pub dev: ::core::option::Option<u64>,
11301    #[prost(uint64, optional, tag="2")]
11302    pub ino: ::core::option::Option<u64>,
11303    #[prost(int64, optional, tag="3")]
11304    pub pos: ::core::option::Option<i64>,
11305    #[prost(uint64, optional, tag="4")]
11306    pub len: ::core::option::Option<u64>,
11307    #[prost(int32, optional, tag="5")]
11308    pub rw: ::core::option::Option<i32>,
11309}
11310#[derive(Clone, PartialEq, ::prost::Message)]
11311pub struct Ext4DirectIoExitFtraceEvent {
11312    #[prost(uint64, optional, tag="1")]
11313    pub dev: ::core::option::Option<u64>,
11314    #[prost(uint64, optional, tag="2")]
11315    pub ino: ::core::option::Option<u64>,
11316    #[prost(int64, optional, tag="3")]
11317    pub pos: ::core::option::Option<i64>,
11318    #[prost(uint64, optional, tag="4")]
11319    pub len: ::core::option::Option<u64>,
11320    #[prost(int32, optional, tag="5")]
11321    pub rw: ::core::option::Option<i32>,
11322    #[prost(int32, optional, tag="6")]
11323    pub ret: ::core::option::Option<i32>,
11324}
11325#[derive(Clone, PartialEq, ::prost::Message)]
11326pub struct Ext4DiscardBlocksFtraceEvent {
11327    #[prost(uint64, optional, tag="1")]
11328    pub dev: ::core::option::Option<u64>,
11329    #[prost(uint64, optional, tag="2")]
11330    pub blk: ::core::option::Option<u64>,
11331    #[prost(uint64, optional, tag="3")]
11332    pub count: ::core::option::Option<u64>,
11333}
11334#[derive(Clone, PartialEq, ::prost::Message)]
11335pub struct Ext4DiscardPreallocationsFtraceEvent {
11336    #[prost(uint64, optional, tag="1")]
11337    pub dev: ::core::option::Option<u64>,
11338    #[prost(uint64, optional, tag="2")]
11339    pub ino: ::core::option::Option<u64>,
11340    #[prost(uint32, optional, tag="3")]
11341    pub len: ::core::option::Option<u32>,
11342    #[prost(uint32, optional, tag="4")]
11343    pub needed: ::core::option::Option<u32>,
11344}
11345#[derive(Clone, PartialEq, ::prost::Message)]
11346pub struct Ext4DropInodeFtraceEvent {
11347    #[prost(uint64, optional, tag="1")]
11348    pub dev: ::core::option::Option<u64>,
11349    #[prost(uint64, optional, tag="2")]
11350    pub ino: ::core::option::Option<u64>,
11351    #[prost(int32, optional, tag="3")]
11352    pub drop: ::core::option::Option<i32>,
11353}
11354#[derive(Clone, PartialEq, ::prost::Message)]
11355pub struct Ext4EsCacheExtentFtraceEvent {
11356    #[prost(uint64, optional, tag="1")]
11357    pub dev: ::core::option::Option<u64>,
11358    #[prost(uint64, optional, tag="2")]
11359    pub ino: ::core::option::Option<u64>,
11360    #[prost(uint32, optional, tag="3")]
11361    pub lblk: ::core::option::Option<u32>,
11362    #[prost(uint32, optional, tag="4")]
11363    pub len: ::core::option::Option<u32>,
11364    #[prost(uint64, optional, tag="5")]
11365    pub pblk: ::core::option::Option<u64>,
11366    #[prost(uint32, optional, tag="6")]
11367    pub status: ::core::option::Option<u32>,
11368}
11369#[derive(Clone, PartialEq, ::prost::Message)]
11370pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
11371    #[prost(uint64, optional, tag="1")]
11372    pub dev: ::core::option::Option<u64>,
11373    #[prost(uint64, optional, tag="2")]
11374    pub ino: ::core::option::Option<u64>,
11375    #[prost(uint32, optional, tag="3")]
11376    pub lblk: ::core::option::Option<u32>,
11377}
11378#[derive(Clone, PartialEq, ::prost::Message)]
11379pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
11380    #[prost(uint64, optional, tag="1")]
11381    pub dev: ::core::option::Option<u64>,
11382    #[prost(uint64, optional, tag="2")]
11383    pub ino: ::core::option::Option<u64>,
11384    #[prost(uint32, optional, tag="3")]
11385    pub lblk: ::core::option::Option<u32>,
11386    #[prost(uint32, optional, tag="4")]
11387    pub len: ::core::option::Option<u32>,
11388    #[prost(uint64, optional, tag="5")]
11389    pub pblk: ::core::option::Option<u64>,
11390    #[prost(uint64, optional, tag="6")]
11391    pub status: ::core::option::Option<u64>,
11392}
11393#[derive(Clone, PartialEq, ::prost::Message)]
11394pub struct Ext4EsInsertExtentFtraceEvent {
11395    #[prost(uint64, optional, tag="1")]
11396    pub dev: ::core::option::Option<u64>,
11397    #[prost(uint64, optional, tag="2")]
11398    pub ino: ::core::option::Option<u64>,
11399    #[prost(uint32, optional, tag="3")]
11400    pub lblk: ::core::option::Option<u32>,
11401    #[prost(uint32, optional, tag="4")]
11402    pub len: ::core::option::Option<u32>,
11403    #[prost(uint64, optional, tag="5")]
11404    pub pblk: ::core::option::Option<u64>,
11405    #[prost(uint64, optional, tag="6")]
11406    pub status: ::core::option::Option<u64>,
11407}
11408#[derive(Clone, PartialEq, ::prost::Message)]
11409pub struct Ext4EsLookupExtentEnterFtraceEvent {
11410    #[prost(uint64, optional, tag="1")]
11411    pub dev: ::core::option::Option<u64>,
11412    #[prost(uint64, optional, tag="2")]
11413    pub ino: ::core::option::Option<u64>,
11414    #[prost(uint32, optional, tag="3")]
11415    pub lblk: ::core::option::Option<u32>,
11416}
11417#[derive(Clone, PartialEq, ::prost::Message)]
11418pub struct Ext4EsLookupExtentExitFtraceEvent {
11419    #[prost(uint64, optional, tag="1")]
11420    pub dev: ::core::option::Option<u64>,
11421    #[prost(uint64, optional, tag="2")]
11422    pub ino: ::core::option::Option<u64>,
11423    #[prost(uint32, optional, tag="3")]
11424    pub lblk: ::core::option::Option<u32>,
11425    #[prost(uint32, optional, tag="4")]
11426    pub len: ::core::option::Option<u32>,
11427    #[prost(uint64, optional, tag="5")]
11428    pub pblk: ::core::option::Option<u64>,
11429    #[prost(uint64, optional, tag="6")]
11430    pub status: ::core::option::Option<u64>,
11431    #[prost(int32, optional, tag="7")]
11432    pub found: ::core::option::Option<i32>,
11433}
11434#[derive(Clone, PartialEq, ::prost::Message)]
11435pub struct Ext4EsRemoveExtentFtraceEvent {
11436    #[prost(uint64, optional, tag="1")]
11437    pub dev: ::core::option::Option<u64>,
11438    #[prost(uint64, optional, tag="2")]
11439    pub ino: ::core::option::Option<u64>,
11440    #[prost(int64, optional, tag="3")]
11441    pub lblk: ::core::option::Option<i64>,
11442    #[prost(int64, optional, tag="4")]
11443    pub len: ::core::option::Option<i64>,
11444}
11445#[derive(Clone, PartialEq, ::prost::Message)]
11446pub struct Ext4EsShrinkFtraceEvent {
11447    #[prost(uint64, optional, tag="1")]
11448    pub dev: ::core::option::Option<u64>,
11449    #[prost(int32, optional, tag="2")]
11450    pub nr_shrunk: ::core::option::Option<i32>,
11451    #[prost(uint64, optional, tag="3")]
11452    pub scan_time: ::core::option::Option<u64>,
11453    #[prost(int32, optional, tag="4")]
11454    pub nr_skipped: ::core::option::Option<i32>,
11455    #[prost(int32, optional, tag="5")]
11456    pub retried: ::core::option::Option<i32>,
11457}
11458#[derive(Clone, PartialEq, ::prost::Message)]
11459pub struct Ext4EsShrinkCountFtraceEvent {
11460    #[prost(uint64, optional, tag="1")]
11461    pub dev: ::core::option::Option<u64>,
11462    #[prost(int32, optional, tag="2")]
11463    pub nr_to_scan: ::core::option::Option<i32>,
11464    #[prost(int32, optional, tag="3")]
11465    pub cache_cnt: ::core::option::Option<i32>,
11466}
11467#[derive(Clone, PartialEq, ::prost::Message)]
11468pub struct Ext4EsShrinkScanEnterFtraceEvent {
11469    #[prost(uint64, optional, tag="1")]
11470    pub dev: ::core::option::Option<u64>,
11471    #[prost(int32, optional, tag="2")]
11472    pub nr_to_scan: ::core::option::Option<i32>,
11473    #[prost(int32, optional, tag="3")]
11474    pub cache_cnt: ::core::option::Option<i32>,
11475}
11476#[derive(Clone, PartialEq, ::prost::Message)]
11477pub struct Ext4EsShrinkScanExitFtraceEvent {
11478    #[prost(uint64, optional, tag="1")]
11479    pub dev: ::core::option::Option<u64>,
11480    #[prost(int32, optional, tag="2")]
11481    pub nr_shrunk: ::core::option::Option<i32>,
11482    #[prost(int32, optional, tag="3")]
11483    pub cache_cnt: ::core::option::Option<i32>,
11484}
11485#[derive(Clone, PartialEq, ::prost::Message)]
11486pub struct Ext4EvictInodeFtraceEvent {
11487    #[prost(uint64, optional, tag="1")]
11488    pub dev: ::core::option::Option<u64>,
11489    #[prost(uint64, optional, tag="2")]
11490    pub ino: ::core::option::Option<u64>,
11491    #[prost(int32, optional, tag="3")]
11492    pub nlink: ::core::option::Option<i32>,
11493}
11494#[derive(Clone, PartialEq, ::prost::Message)]
11495pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
11496    #[prost(uint64, optional, tag="1")]
11497    pub dev: ::core::option::Option<u64>,
11498    #[prost(uint64, optional, tag="2")]
11499    pub ino: ::core::option::Option<u64>,
11500    #[prost(uint32, optional, tag="3")]
11501    pub m_lblk: ::core::option::Option<u32>,
11502    #[prost(uint32, optional, tag="4")]
11503    pub m_len: ::core::option::Option<u32>,
11504    #[prost(uint32, optional, tag="5")]
11505    pub u_lblk: ::core::option::Option<u32>,
11506    #[prost(uint32, optional, tag="6")]
11507    pub u_len: ::core::option::Option<u32>,
11508    #[prost(uint64, optional, tag="7")]
11509    pub u_pblk: ::core::option::Option<u64>,
11510}
11511#[derive(Clone, PartialEq, ::prost::Message)]
11512pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
11513    #[prost(uint64, optional, tag="1")]
11514    pub dev: ::core::option::Option<u64>,
11515    #[prost(uint64, optional, tag="2")]
11516    pub ino: ::core::option::Option<u64>,
11517    #[prost(uint32, optional, tag="3")]
11518    pub m_lblk: ::core::option::Option<u32>,
11519    #[prost(uint32, optional, tag="4")]
11520    pub m_len: ::core::option::Option<u32>,
11521    #[prost(uint32, optional, tag="5")]
11522    pub u_lblk: ::core::option::Option<u32>,
11523    #[prost(uint32, optional, tag="6")]
11524    pub u_len: ::core::option::Option<u32>,
11525    #[prost(uint64, optional, tag="7")]
11526    pub u_pblk: ::core::option::Option<u64>,
11527    #[prost(uint32, optional, tag="8")]
11528    pub i_lblk: ::core::option::Option<u32>,
11529    #[prost(uint32, optional, tag="9")]
11530    pub i_len: ::core::option::Option<u32>,
11531    #[prost(uint64, optional, tag="10")]
11532    pub i_pblk: ::core::option::Option<u64>,
11533}
11534#[derive(Clone, PartialEq, ::prost::Message)]
11535pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
11536    #[prost(uint64, optional, tag="1")]
11537    pub dev: ::core::option::Option<u64>,
11538    #[prost(uint64, optional, tag="2")]
11539    pub ino: ::core::option::Option<u64>,
11540    #[prost(int32, optional, tag="3")]
11541    pub flags: ::core::option::Option<i32>,
11542    #[prost(uint32, optional, tag="4")]
11543    pub lblk: ::core::option::Option<u32>,
11544    #[prost(uint64, optional, tag="5")]
11545    pub pblk: ::core::option::Option<u64>,
11546    #[prost(uint32, optional, tag="6")]
11547    pub len: ::core::option::Option<u32>,
11548    #[prost(uint32, optional, tag="7")]
11549    pub allocated: ::core::option::Option<u32>,
11550    #[prost(uint64, optional, tag="8")]
11551    pub newblk: ::core::option::Option<u64>,
11552}
11553#[derive(Clone, PartialEq, ::prost::Message)]
11554pub struct Ext4ExtInCacheFtraceEvent {
11555    #[prost(uint64, optional, tag="1")]
11556    pub dev: ::core::option::Option<u64>,
11557    #[prost(uint64, optional, tag="2")]
11558    pub ino: ::core::option::Option<u64>,
11559    #[prost(uint32, optional, tag="3")]
11560    pub lblk: ::core::option::Option<u32>,
11561    #[prost(int32, optional, tag="4")]
11562    pub ret: ::core::option::Option<i32>,
11563}
11564#[derive(Clone, PartialEq, ::prost::Message)]
11565pub struct Ext4ExtLoadExtentFtraceEvent {
11566    #[prost(uint64, optional, tag="1")]
11567    pub dev: ::core::option::Option<u64>,
11568    #[prost(uint64, optional, tag="2")]
11569    pub ino: ::core::option::Option<u64>,
11570    #[prost(uint64, optional, tag="3")]
11571    pub pblk: ::core::option::Option<u64>,
11572    #[prost(uint32, optional, tag="4")]
11573    pub lblk: ::core::option::Option<u32>,
11574}
11575#[derive(Clone, PartialEq, ::prost::Message)]
11576pub struct Ext4ExtMapBlocksEnterFtraceEvent {
11577    #[prost(uint64, optional, tag="1")]
11578    pub dev: ::core::option::Option<u64>,
11579    #[prost(uint64, optional, tag="2")]
11580    pub ino: ::core::option::Option<u64>,
11581    #[prost(uint32, optional, tag="3")]
11582    pub lblk: ::core::option::Option<u32>,
11583    #[prost(uint32, optional, tag="4")]
11584    pub len: ::core::option::Option<u32>,
11585    #[prost(uint32, optional, tag="5")]
11586    pub flags: ::core::option::Option<u32>,
11587}
11588#[derive(Clone, PartialEq, ::prost::Message)]
11589pub struct Ext4ExtMapBlocksExitFtraceEvent {
11590    #[prost(uint64, optional, tag="1")]
11591    pub dev: ::core::option::Option<u64>,
11592    #[prost(uint64, optional, tag="2")]
11593    pub ino: ::core::option::Option<u64>,
11594    #[prost(uint32, optional, tag="3")]
11595    pub flags: ::core::option::Option<u32>,
11596    #[prost(uint64, optional, tag="4")]
11597    pub pblk: ::core::option::Option<u64>,
11598    #[prost(uint32, optional, tag="5")]
11599    pub lblk: ::core::option::Option<u32>,
11600    #[prost(uint32, optional, tag="6")]
11601    pub len: ::core::option::Option<u32>,
11602    #[prost(uint32, optional, tag="7")]
11603    pub mflags: ::core::option::Option<u32>,
11604    #[prost(int32, optional, tag="8")]
11605    pub ret: ::core::option::Option<i32>,
11606}
11607#[derive(Clone, PartialEq, ::prost::Message)]
11608pub struct Ext4ExtPutInCacheFtraceEvent {
11609    #[prost(uint64, optional, tag="1")]
11610    pub dev: ::core::option::Option<u64>,
11611    #[prost(uint64, optional, tag="2")]
11612    pub ino: ::core::option::Option<u64>,
11613    #[prost(uint32, optional, tag="3")]
11614    pub lblk: ::core::option::Option<u32>,
11615    #[prost(uint32, optional, tag="4")]
11616    pub len: ::core::option::Option<u32>,
11617    #[prost(uint64, optional, tag="5")]
11618    pub start: ::core::option::Option<u64>,
11619}
11620#[derive(Clone, PartialEq, ::prost::Message)]
11621pub struct Ext4ExtRemoveSpaceFtraceEvent {
11622    #[prost(uint64, optional, tag="1")]
11623    pub dev: ::core::option::Option<u64>,
11624    #[prost(uint64, optional, tag="2")]
11625    pub ino: ::core::option::Option<u64>,
11626    #[prost(uint32, optional, tag="3")]
11627    pub start: ::core::option::Option<u32>,
11628    #[prost(uint32, optional, tag="4")]
11629    pub end: ::core::option::Option<u32>,
11630    #[prost(int32, optional, tag="5")]
11631    pub depth: ::core::option::Option<i32>,
11632}
11633#[derive(Clone, PartialEq, ::prost::Message)]
11634pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
11635    #[prost(uint64, optional, tag="1")]
11636    pub dev: ::core::option::Option<u64>,
11637    #[prost(uint64, optional, tag="2")]
11638    pub ino: ::core::option::Option<u64>,
11639    #[prost(uint32, optional, tag="3")]
11640    pub start: ::core::option::Option<u32>,
11641    #[prost(uint32, optional, tag="4")]
11642    pub end: ::core::option::Option<u32>,
11643    #[prost(int32, optional, tag="5")]
11644    pub depth: ::core::option::Option<i32>,
11645    #[prost(int64, optional, tag="6")]
11646    pub partial: ::core::option::Option<i64>,
11647    #[prost(uint32, optional, tag="7")]
11648    pub eh_entries: ::core::option::Option<u32>,
11649    #[prost(uint32, optional, tag="8")]
11650    pub pc_lblk: ::core::option::Option<u32>,
11651    #[prost(uint64, optional, tag="9")]
11652    pub pc_pclu: ::core::option::Option<u64>,
11653    #[prost(int32, optional, tag="10")]
11654    pub pc_state: ::core::option::Option<i32>,
11655}
11656#[derive(Clone, PartialEq, ::prost::Message)]
11657pub struct Ext4ExtRmIdxFtraceEvent {
11658    #[prost(uint64, optional, tag="1")]
11659    pub dev: ::core::option::Option<u64>,
11660    #[prost(uint64, optional, tag="2")]
11661    pub ino: ::core::option::Option<u64>,
11662    #[prost(uint64, optional, tag="3")]
11663    pub pblk: ::core::option::Option<u64>,
11664}
11665#[derive(Clone, PartialEq, ::prost::Message)]
11666pub struct Ext4ExtRmLeafFtraceEvent {
11667    #[prost(uint64, optional, tag="1")]
11668    pub dev: ::core::option::Option<u64>,
11669    #[prost(uint64, optional, tag="2")]
11670    pub ino: ::core::option::Option<u64>,
11671    #[prost(int64, optional, tag="3")]
11672    pub partial: ::core::option::Option<i64>,
11673    #[prost(uint32, optional, tag="4")]
11674    pub start: ::core::option::Option<u32>,
11675    #[prost(uint32, optional, tag="5")]
11676    pub ee_lblk: ::core::option::Option<u32>,
11677    #[prost(uint64, optional, tag="6")]
11678    pub ee_pblk: ::core::option::Option<u64>,
11679    #[prost(int32, optional, tag="7")]
11680    pub ee_len: ::core::option::Option<i32>,
11681    #[prost(uint32, optional, tag="8")]
11682    pub pc_lblk: ::core::option::Option<u32>,
11683    #[prost(uint64, optional, tag="9")]
11684    pub pc_pclu: ::core::option::Option<u64>,
11685    #[prost(int32, optional, tag="10")]
11686    pub pc_state: ::core::option::Option<i32>,
11687}
11688#[derive(Clone, PartialEq, ::prost::Message)]
11689pub struct Ext4ExtShowExtentFtraceEvent {
11690    #[prost(uint64, optional, tag="1")]
11691    pub dev: ::core::option::Option<u64>,
11692    #[prost(uint64, optional, tag="2")]
11693    pub ino: ::core::option::Option<u64>,
11694    #[prost(uint64, optional, tag="3")]
11695    pub pblk: ::core::option::Option<u64>,
11696    #[prost(uint32, optional, tag="4")]
11697    pub lblk: ::core::option::Option<u32>,
11698    #[prost(uint32, optional, tag="5")]
11699    pub len: ::core::option::Option<u32>,
11700}
11701#[derive(Clone, PartialEq, ::prost::Message)]
11702pub struct Ext4FallocateEnterFtraceEvent {
11703    #[prost(uint64, optional, tag="1")]
11704    pub dev: ::core::option::Option<u64>,
11705    #[prost(uint64, optional, tag="2")]
11706    pub ino: ::core::option::Option<u64>,
11707    #[prost(int64, optional, tag="3")]
11708    pub offset: ::core::option::Option<i64>,
11709    #[prost(int64, optional, tag="4")]
11710    pub len: ::core::option::Option<i64>,
11711    #[prost(int32, optional, tag="5")]
11712    pub mode: ::core::option::Option<i32>,
11713    #[prost(int64, optional, tag="6")]
11714    pub pos: ::core::option::Option<i64>,
11715}
11716#[derive(Clone, PartialEq, ::prost::Message)]
11717pub struct Ext4FallocateExitFtraceEvent {
11718    #[prost(uint64, optional, tag="1")]
11719    pub dev: ::core::option::Option<u64>,
11720    #[prost(uint64, optional, tag="2")]
11721    pub ino: ::core::option::Option<u64>,
11722    #[prost(int64, optional, tag="3")]
11723    pub pos: ::core::option::Option<i64>,
11724    #[prost(uint32, optional, tag="4")]
11725    pub blocks: ::core::option::Option<u32>,
11726    #[prost(int32, optional, tag="5")]
11727    pub ret: ::core::option::Option<i32>,
11728}
11729#[derive(Clone, PartialEq, ::prost::Message)]
11730pub struct Ext4FindDelallocRangeFtraceEvent {
11731    #[prost(uint64, optional, tag="1")]
11732    pub dev: ::core::option::Option<u64>,
11733    #[prost(uint64, optional, tag="2")]
11734    pub ino: ::core::option::Option<u64>,
11735    #[prost(uint32, optional, tag="3")]
11736    pub from: ::core::option::Option<u32>,
11737    #[prost(uint32, optional, tag="4")]
11738    pub to: ::core::option::Option<u32>,
11739    #[prost(int32, optional, tag="5")]
11740    pub reverse: ::core::option::Option<i32>,
11741    #[prost(int32, optional, tag="6")]
11742    pub found: ::core::option::Option<i32>,
11743    #[prost(uint32, optional, tag="7")]
11744    pub found_blk: ::core::option::Option<u32>,
11745}
11746#[derive(Clone, PartialEq, ::prost::Message)]
11747pub struct Ext4ForgetFtraceEvent {
11748    #[prost(uint64, optional, tag="1")]
11749    pub dev: ::core::option::Option<u64>,
11750    #[prost(uint64, optional, tag="2")]
11751    pub ino: ::core::option::Option<u64>,
11752    #[prost(uint64, optional, tag="3")]
11753    pub block: ::core::option::Option<u64>,
11754    #[prost(int32, optional, tag="4")]
11755    pub is_metadata: ::core::option::Option<i32>,
11756    #[prost(uint32, optional, tag="5")]
11757    pub mode: ::core::option::Option<u32>,
11758}
11759#[derive(Clone, PartialEq, ::prost::Message)]
11760pub struct Ext4FreeBlocksFtraceEvent {
11761    #[prost(uint64, optional, tag="1")]
11762    pub dev: ::core::option::Option<u64>,
11763    #[prost(uint64, optional, tag="2")]
11764    pub ino: ::core::option::Option<u64>,
11765    #[prost(uint64, optional, tag="3")]
11766    pub block: ::core::option::Option<u64>,
11767    #[prost(uint64, optional, tag="4")]
11768    pub count: ::core::option::Option<u64>,
11769    #[prost(int32, optional, tag="5")]
11770    pub flags: ::core::option::Option<i32>,
11771    #[prost(uint32, optional, tag="6")]
11772    pub mode: ::core::option::Option<u32>,
11773}
11774#[derive(Clone, PartialEq, ::prost::Message)]
11775pub struct Ext4FreeInodeFtraceEvent {
11776    #[prost(uint64, optional, tag="1")]
11777    pub dev: ::core::option::Option<u64>,
11778    #[prost(uint64, optional, tag="2")]
11779    pub ino: ::core::option::Option<u64>,
11780    #[prost(uint32, optional, tag="3")]
11781    pub uid: ::core::option::Option<u32>,
11782    #[prost(uint32, optional, tag="4")]
11783    pub gid: ::core::option::Option<u32>,
11784    #[prost(uint64, optional, tag="5")]
11785    pub blocks: ::core::option::Option<u64>,
11786    #[prost(uint32, optional, tag="6")]
11787    pub mode: ::core::option::Option<u32>,
11788}
11789#[derive(Clone, PartialEq, ::prost::Message)]
11790pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11791    #[prost(uint64, optional, tag="1")]
11792    pub dev: ::core::option::Option<u64>,
11793    #[prost(uint32, optional, tag="2")]
11794    pub flags: ::core::option::Option<u32>,
11795    #[prost(uint32, optional, tag="3")]
11796    pub lblk: ::core::option::Option<u32>,
11797    #[prost(uint64, optional, tag="4")]
11798    pub pblk: ::core::option::Option<u64>,
11799    #[prost(uint32, optional, tag="5")]
11800    pub len: ::core::option::Option<u32>,
11801    #[prost(int32, optional, tag="6")]
11802    pub ret: ::core::option::Option<i32>,
11803}
11804#[derive(Clone, PartialEq, ::prost::Message)]
11805pub struct Ext4GetReservedClusterAllocFtraceEvent {
11806    #[prost(uint64, optional, tag="1")]
11807    pub dev: ::core::option::Option<u64>,
11808    #[prost(uint64, optional, tag="2")]
11809    pub ino: ::core::option::Option<u64>,
11810    #[prost(uint32, optional, tag="3")]
11811    pub lblk: ::core::option::Option<u32>,
11812    #[prost(uint32, optional, tag="4")]
11813    pub len: ::core::option::Option<u32>,
11814}
11815#[derive(Clone, PartialEq, ::prost::Message)]
11816pub struct Ext4IndMapBlocksEnterFtraceEvent {
11817    #[prost(uint64, optional, tag="1")]
11818    pub dev: ::core::option::Option<u64>,
11819    #[prost(uint64, optional, tag="2")]
11820    pub ino: ::core::option::Option<u64>,
11821    #[prost(uint32, optional, tag="3")]
11822    pub lblk: ::core::option::Option<u32>,
11823    #[prost(uint32, optional, tag="4")]
11824    pub len: ::core::option::Option<u32>,
11825    #[prost(uint32, optional, tag="5")]
11826    pub flags: ::core::option::Option<u32>,
11827}
11828#[derive(Clone, PartialEq, ::prost::Message)]
11829pub struct Ext4IndMapBlocksExitFtraceEvent {
11830    #[prost(uint64, optional, tag="1")]
11831    pub dev: ::core::option::Option<u64>,
11832    #[prost(uint64, optional, tag="2")]
11833    pub ino: ::core::option::Option<u64>,
11834    #[prost(uint32, optional, tag="3")]
11835    pub flags: ::core::option::Option<u32>,
11836    #[prost(uint64, optional, tag="4")]
11837    pub pblk: ::core::option::Option<u64>,
11838    #[prost(uint32, optional, tag="5")]
11839    pub lblk: ::core::option::Option<u32>,
11840    #[prost(uint32, optional, tag="6")]
11841    pub len: ::core::option::Option<u32>,
11842    #[prost(uint32, optional, tag="7")]
11843    pub mflags: ::core::option::Option<u32>,
11844    #[prost(int32, optional, tag="8")]
11845    pub ret: ::core::option::Option<i32>,
11846}
11847#[derive(Clone, PartialEq, ::prost::Message)]
11848pub struct Ext4InsertRangeFtraceEvent {
11849    #[prost(uint64, optional, tag="1")]
11850    pub dev: ::core::option::Option<u64>,
11851    #[prost(uint64, optional, tag="2")]
11852    pub ino: ::core::option::Option<u64>,
11853    #[prost(int64, optional, tag="3")]
11854    pub offset: ::core::option::Option<i64>,
11855    #[prost(int64, optional, tag="4")]
11856    pub len: ::core::option::Option<i64>,
11857}
11858#[derive(Clone, PartialEq, ::prost::Message)]
11859pub struct Ext4InvalidatepageFtraceEvent {
11860    #[prost(uint64, optional, tag="1")]
11861    pub dev: ::core::option::Option<u64>,
11862    #[prost(uint64, optional, tag="2")]
11863    pub ino: ::core::option::Option<u64>,
11864    #[prost(uint64, optional, tag="3")]
11865    pub index: ::core::option::Option<u64>,
11866    #[prost(uint64, optional, tag="4")]
11867    pub offset: ::core::option::Option<u64>,
11868    #[prost(uint32, optional, tag="5")]
11869    pub length: ::core::option::Option<u32>,
11870}
11871#[derive(Clone, PartialEq, ::prost::Message)]
11872pub struct Ext4JournalStartFtraceEvent {
11873    #[prost(uint64, optional, tag="1")]
11874    pub dev: ::core::option::Option<u64>,
11875    #[prost(uint64, optional, tag="2")]
11876    pub ip: ::core::option::Option<u64>,
11877    #[prost(int32, optional, tag="3")]
11878    pub blocks: ::core::option::Option<i32>,
11879    #[prost(int32, optional, tag="4")]
11880    pub rsv_blocks: ::core::option::Option<i32>,
11881    #[prost(int32, optional, tag="5")]
11882    pub nblocks: ::core::option::Option<i32>,
11883    #[prost(int32, optional, tag="6")]
11884    pub revoke_creds: ::core::option::Option<i32>,
11885}
11886#[derive(Clone, PartialEq, ::prost::Message)]
11887pub struct Ext4JournalStartReservedFtraceEvent {
11888    #[prost(uint64, optional, tag="1")]
11889    pub dev: ::core::option::Option<u64>,
11890    #[prost(uint64, optional, tag="2")]
11891    pub ip: ::core::option::Option<u64>,
11892    #[prost(int32, optional, tag="3")]
11893    pub blocks: ::core::option::Option<i32>,
11894}
11895#[derive(Clone, PartialEq, ::prost::Message)]
11896pub struct Ext4JournalledInvalidatepageFtraceEvent {
11897    #[prost(uint64, optional, tag="1")]
11898    pub dev: ::core::option::Option<u64>,
11899    #[prost(uint64, optional, tag="2")]
11900    pub ino: ::core::option::Option<u64>,
11901    #[prost(uint64, optional, tag="3")]
11902    pub index: ::core::option::Option<u64>,
11903    #[prost(uint64, optional, tag="4")]
11904    pub offset: ::core::option::Option<u64>,
11905    #[prost(uint32, optional, tag="5")]
11906    pub length: ::core::option::Option<u32>,
11907}
11908#[derive(Clone, PartialEq, ::prost::Message)]
11909pub struct Ext4JournalledWriteEndFtraceEvent {
11910    #[prost(uint64, optional, tag="1")]
11911    pub dev: ::core::option::Option<u64>,
11912    #[prost(uint64, optional, tag="2")]
11913    pub ino: ::core::option::Option<u64>,
11914    #[prost(int64, optional, tag="3")]
11915    pub pos: ::core::option::Option<i64>,
11916    #[prost(uint32, optional, tag="4")]
11917    pub len: ::core::option::Option<u32>,
11918    #[prost(uint32, optional, tag="5")]
11919    pub copied: ::core::option::Option<u32>,
11920}
11921#[derive(Clone, PartialEq, ::prost::Message)]
11922pub struct Ext4LoadInodeFtraceEvent {
11923    #[prost(uint64, optional, tag="1")]
11924    pub dev: ::core::option::Option<u64>,
11925    #[prost(uint64, optional, tag="2")]
11926    pub ino: ::core::option::Option<u64>,
11927}
11928#[derive(Clone, PartialEq, ::prost::Message)]
11929pub struct Ext4LoadInodeBitmapFtraceEvent {
11930    #[prost(uint64, optional, tag="1")]
11931    pub dev: ::core::option::Option<u64>,
11932    #[prost(uint32, optional, tag="2")]
11933    pub group: ::core::option::Option<u32>,
11934}
11935#[derive(Clone, PartialEq, ::prost::Message)]
11936pub struct Ext4MarkInodeDirtyFtraceEvent {
11937    #[prost(uint64, optional, tag="1")]
11938    pub dev: ::core::option::Option<u64>,
11939    #[prost(uint64, optional, tag="2")]
11940    pub ino: ::core::option::Option<u64>,
11941    #[prost(uint64, optional, tag="3")]
11942    pub ip: ::core::option::Option<u64>,
11943}
11944#[derive(Clone, PartialEq, ::prost::Message)]
11945pub struct Ext4MbBitmapLoadFtraceEvent {
11946    #[prost(uint64, optional, tag="1")]
11947    pub dev: ::core::option::Option<u64>,
11948    #[prost(uint32, optional, tag="2")]
11949    pub group: ::core::option::Option<u32>,
11950}
11951#[derive(Clone, PartialEq, ::prost::Message)]
11952pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11953    #[prost(uint64, optional, tag="1")]
11954    pub dev: ::core::option::Option<u64>,
11955    #[prost(uint32, optional, tag="2")]
11956    pub group: ::core::option::Option<u32>,
11957}
11958#[derive(Clone, PartialEq, ::prost::Message)]
11959pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11960    #[prost(uint64, optional, tag="1")]
11961    pub dev: ::core::option::Option<u64>,
11962    #[prost(int32, optional, tag="2")]
11963    pub needed: ::core::option::Option<i32>,
11964}
11965#[derive(Clone, PartialEq, ::prost::Message)]
11966pub struct Ext4MbNewGroupPaFtraceEvent {
11967    #[prost(uint64, optional, tag="1")]
11968    pub dev: ::core::option::Option<u64>,
11969    #[prost(uint64, optional, tag="2")]
11970    pub ino: ::core::option::Option<u64>,
11971    #[prost(uint64, optional, tag="3")]
11972    pub pa_pstart: ::core::option::Option<u64>,
11973    #[prost(uint64, optional, tag="4")]
11974    pub pa_lstart: ::core::option::Option<u64>,
11975    #[prost(uint32, optional, tag="5")]
11976    pub pa_len: ::core::option::Option<u32>,
11977}
11978#[derive(Clone, PartialEq, ::prost::Message)]
11979pub struct Ext4MbNewInodePaFtraceEvent {
11980    #[prost(uint64, optional, tag="1")]
11981    pub dev: ::core::option::Option<u64>,
11982    #[prost(uint64, optional, tag="2")]
11983    pub ino: ::core::option::Option<u64>,
11984    #[prost(uint64, optional, tag="3")]
11985    pub pa_pstart: ::core::option::Option<u64>,
11986    #[prost(uint64, optional, tag="4")]
11987    pub pa_lstart: ::core::option::Option<u64>,
11988    #[prost(uint32, optional, tag="5")]
11989    pub pa_len: ::core::option::Option<u32>,
11990}
11991#[derive(Clone, PartialEq, ::prost::Message)]
11992pub struct Ext4MbReleaseGroupPaFtraceEvent {
11993    #[prost(uint64, optional, tag="1")]
11994    pub dev: ::core::option::Option<u64>,
11995    #[prost(uint64, optional, tag="2")]
11996    pub pa_pstart: ::core::option::Option<u64>,
11997    #[prost(uint32, optional, tag="3")]
11998    pub pa_len: ::core::option::Option<u32>,
11999}
12000#[derive(Clone, PartialEq, ::prost::Message)]
12001pub struct Ext4MbReleaseInodePaFtraceEvent {
12002    #[prost(uint64, optional, tag="1")]
12003    pub dev: ::core::option::Option<u64>,
12004    #[prost(uint64, optional, tag="2")]
12005    pub ino: ::core::option::Option<u64>,
12006    #[prost(uint64, optional, tag="3")]
12007    pub block: ::core::option::Option<u64>,
12008    #[prost(uint32, optional, tag="4")]
12009    pub count: ::core::option::Option<u32>,
12010}
12011#[derive(Clone, PartialEq, ::prost::Message)]
12012pub struct Ext4MballocAllocFtraceEvent {
12013    #[prost(uint64, optional, tag="1")]
12014    pub dev: ::core::option::Option<u64>,
12015    #[prost(uint64, optional, tag="2")]
12016    pub ino: ::core::option::Option<u64>,
12017    #[prost(uint32, optional, tag="3")]
12018    pub orig_logical: ::core::option::Option<u32>,
12019    #[prost(int32, optional, tag="4")]
12020    pub orig_start: ::core::option::Option<i32>,
12021    #[prost(uint32, optional, tag="5")]
12022    pub orig_group: ::core::option::Option<u32>,
12023    #[prost(int32, optional, tag="6")]
12024    pub orig_len: ::core::option::Option<i32>,
12025    #[prost(uint32, optional, tag="7")]
12026    pub goal_logical: ::core::option::Option<u32>,
12027    #[prost(int32, optional, tag="8")]
12028    pub goal_start: ::core::option::Option<i32>,
12029    #[prost(uint32, optional, tag="9")]
12030    pub goal_group: ::core::option::Option<u32>,
12031    #[prost(int32, optional, tag="10")]
12032    pub goal_len: ::core::option::Option<i32>,
12033    #[prost(uint32, optional, tag="11")]
12034    pub result_logical: ::core::option::Option<u32>,
12035    #[prost(int32, optional, tag="12")]
12036    pub result_start: ::core::option::Option<i32>,
12037    #[prost(uint32, optional, tag="13")]
12038    pub result_group: ::core::option::Option<u32>,
12039    #[prost(int32, optional, tag="14")]
12040    pub result_len: ::core::option::Option<i32>,
12041    #[prost(uint32, optional, tag="15")]
12042    pub found: ::core::option::Option<u32>,
12043    #[prost(uint32, optional, tag="16")]
12044    pub groups: ::core::option::Option<u32>,
12045    #[prost(uint32, optional, tag="17")]
12046    pub buddy: ::core::option::Option<u32>,
12047    #[prost(uint32, optional, tag="18")]
12048    pub flags: ::core::option::Option<u32>,
12049    #[prost(uint32, optional, tag="19")]
12050    pub tail: ::core::option::Option<u32>,
12051    #[prost(uint32, optional, tag="20")]
12052    pub cr: ::core::option::Option<u32>,
12053}
12054#[derive(Clone, PartialEq, ::prost::Message)]
12055pub struct Ext4MballocDiscardFtraceEvent {
12056    #[prost(uint64, optional, tag="1")]
12057    pub dev: ::core::option::Option<u64>,
12058    #[prost(uint64, optional, tag="2")]
12059    pub ino: ::core::option::Option<u64>,
12060    #[prost(int32, optional, tag="3")]
12061    pub result_start: ::core::option::Option<i32>,
12062    #[prost(uint32, optional, tag="4")]
12063    pub result_group: ::core::option::Option<u32>,
12064    #[prost(int32, optional, tag="5")]
12065    pub result_len: ::core::option::Option<i32>,
12066}
12067#[derive(Clone, PartialEq, ::prost::Message)]
12068pub struct Ext4MballocFreeFtraceEvent {
12069    #[prost(uint64, optional, tag="1")]
12070    pub dev: ::core::option::Option<u64>,
12071    #[prost(uint64, optional, tag="2")]
12072    pub ino: ::core::option::Option<u64>,
12073    #[prost(int32, optional, tag="3")]
12074    pub result_start: ::core::option::Option<i32>,
12075    #[prost(uint32, optional, tag="4")]
12076    pub result_group: ::core::option::Option<u32>,
12077    #[prost(int32, optional, tag="5")]
12078    pub result_len: ::core::option::Option<i32>,
12079}
12080#[derive(Clone, PartialEq, ::prost::Message)]
12081pub struct Ext4MballocPreallocFtraceEvent {
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 orig_logical: ::core::option::Option<u32>,
12088    #[prost(int32, optional, tag="4")]
12089    pub orig_start: ::core::option::Option<i32>,
12090    #[prost(uint32, optional, tag="5")]
12091    pub orig_group: ::core::option::Option<u32>,
12092    #[prost(int32, optional, tag="6")]
12093    pub orig_len: ::core::option::Option<i32>,
12094    #[prost(uint32, optional, tag="7")]
12095    pub result_logical: ::core::option::Option<u32>,
12096    #[prost(int32, optional, tag="8")]
12097    pub result_start: ::core::option::Option<i32>,
12098    #[prost(uint32, optional, tag="9")]
12099    pub result_group: ::core::option::Option<u32>,
12100    #[prost(int32, optional, tag="10")]
12101    pub result_len: ::core::option::Option<i32>,
12102}
12103#[derive(Clone, PartialEq, ::prost::Message)]
12104pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
12105    #[prost(uint64, optional, tag="1")]
12106    pub dev: ::core::option::Option<u64>,
12107    #[prost(uint64, optional, tag="2")]
12108    pub ino: ::core::option::Option<u64>,
12109    #[prost(uint64, optional, tag="3")]
12110    pub orig_ino: ::core::option::Option<u64>,
12111    #[prost(uint32, optional, tag="4")]
12112    pub uid: ::core::option::Option<u32>,
12113    #[prost(uint32, optional, tag="5")]
12114    pub gid: ::core::option::Option<u32>,
12115    #[prost(uint32, optional, tag="6")]
12116    pub mode: ::core::option::Option<u32>,
12117}
12118#[derive(Clone, PartialEq, ::prost::Message)]
12119pub struct Ext4PunchHoleFtraceEvent {
12120    #[prost(uint64, optional, tag="1")]
12121    pub dev: ::core::option::Option<u64>,
12122    #[prost(uint64, optional, tag="2")]
12123    pub ino: ::core::option::Option<u64>,
12124    #[prost(int64, optional, tag="3")]
12125    pub offset: ::core::option::Option<i64>,
12126    #[prost(int64, optional, tag="4")]
12127    pub len: ::core::option::Option<i64>,
12128    #[prost(int32, optional, tag="5")]
12129    pub mode: ::core::option::Option<i32>,
12130}
12131#[derive(Clone, PartialEq, ::prost::Message)]
12132pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
12133    #[prost(uint64, optional, tag="1")]
12134    pub dev: ::core::option::Option<u64>,
12135    #[prost(uint32, optional, tag="2")]
12136    pub group: ::core::option::Option<u32>,
12137    #[prost(uint32, optional, tag="3")]
12138    pub prefetch: ::core::option::Option<u32>,
12139}
12140#[derive(Clone, PartialEq, ::prost::Message)]
12141pub struct Ext4ReadpageFtraceEvent {
12142    #[prost(uint64, optional, tag="1")]
12143    pub dev: ::core::option::Option<u64>,
12144    #[prost(uint64, optional, tag="2")]
12145    pub ino: ::core::option::Option<u64>,
12146    #[prost(uint64, optional, tag="3")]
12147    pub index: ::core::option::Option<u64>,
12148}
12149#[derive(Clone, PartialEq, ::prost::Message)]
12150pub struct Ext4ReleasepageFtraceEvent {
12151    #[prost(uint64, optional, tag="1")]
12152    pub dev: ::core::option::Option<u64>,
12153    #[prost(uint64, optional, tag="2")]
12154    pub ino: ::core::option::Option<u64>,
12155    #[prost(uint64, optional, tag="3")]
12156    pub index: ::core::option::Option<u64>,
12157}
12158#[derive(Clone, PartialEq, ::prost::Message)]
12159pub struct Ext4RemoveBlocksFtraceEvent {
12160    #[prost(uint64, optional, tag="1")]
12161    pub dev: ::core::option::Option<u64>,
12162    #[prost(uint64, optional, tag="2")]
12163    pub ino: ::core::option::Option<u64>,
12164    #[prost(uint32, optional, tag="3")]
12165    pub from: ::core::option::Option<u32>,
12166    #[prost(uint32, optional, tag="4")]
12167    pub to: ::core::option::Option<u32>,
12168    #[prost(int64, optional, tag="5")]
12169    pub partial: ::core::option::Option<i64>,
12170    #[prost(uint64, optional, tag="6")]
12171    pub ee_pblk: ::core::option::Option<u64>,
12172    #[prost(uint32, optional, tag="7")]
12173    pub ee_lblk: ::core::option::Option<u32>,
12174    #[prost(uint32, optional, tag="8")]
12175    pub ee_len: ::core::option::Option<u32>,
12176    #[prost(uint32, optional, tag="9")]
12177    pub pc_lblk: ::core::option::Option<u32>,
12178    #[prost(uint64, optional, tag="10")]
12179    pub pc_pclu: ::core::option::Option<u64>,
12180    #[prost(int32, optional, tag="11")]
12181    pub pc_state: ::core::option::Option<i32>,
12182}
12183#[derive(Clone, PartialEq, ::prost::Message)]
12184pub struct Ext4RequestBlocksFtraceEvent {
12185    #[prost(uint64, optional, tag="1")]
12186    pub dev: ::core::option::Option<u64>,
12187    #[prost(uint64, optional, tag="2")]
12188    pub ino: ::core::option::Option<u64>,
12189    #[prost(uint32, optional, tag="3")]
12190    pub len: ::core::option::Option<u32>,
12191    #[prost(uint32, optional, tag="4")]
12192    pub logical: ::core::option::Option<u32>,
12193    #[prost(uint32, optional, tag="5")]
12194    pub lleft: ::core::option::Option<u32>,
12195    #[prost(uint32, optional, tag="6")]
12196    pub lright: ::core::option::Option<u32>,
12197    #[prost(uint64, optional, tag="7")]
12198    pub goal: ::core::option::Option<u64>,
12199    #[prost(uint64, optional, tag="8")]
12200    pub pleft: ::core::option::Option<u64>,
12201    #[prost(uint64, optional, tag="9")]
12202    pub pright: ::core::option::Option<u64>,
12203    #[prost(uint32, optional, tag="10")]
12204    pub flags: ::core::option::Option<u32>,
12205}
12206#[derive(Clone, PartialEq, ::prost::Message)]
12207pub struct Ext4RequestInodeFtraceEvent {
12208    #[prost(uint64, optional, tag="1")]
12209    pub dev: ::core::option::Option<u64>,
12210    #[prost(uint64, optional, tag="2")]
12211    pub dir: ::core::option::Option<u64>,
12212    #[prost(uint32, optional, tag="3")]
12213    pub mode: ::core::option::Option<u32>,
12214}
12215#[derive(Clone, PartialEq, ::prost::Message)]
12216pub struct Ext4SyncFsFtraceEvent {
12217    #[prost(uint64, optional, tag="1")]
12218    pub dev: ::core::option::Option<u64>,
12219    #[prost(int32, optional, tag="2")]
12220    pub wait: ::core::option::Option<i32>,
12221}
12222#[derive(Clone, PartialEq, ::prost::Message)]
12223pub struct Ext4TrimAllFreeFtraceEvent {
12224    #[prost(int32, optional, tag="1")]
12225    pub dev_major: ::core::option::Option<i32>,
12226    #[prost(int32, optional, tag="2")]
12227    pub dev_minor: ::core::option::Option<i32>,
12228    #[prost(uint32, optional, tag="3")]
12229    pub group: ::core::option::Option<u32>,
12230    #[prost(int32, optional, tag="4")]
12231    pub start: ::core::option::Option<i32>,
12232    #[prost(int32, optional, tag="5")]
12233    pub len: ::core::option::Option<i32>,
12234}
12235#[derive(Clone, PartialEq, ::prost::Message)]
12236pub struct Ext4TrimExtentFtraceEvent {
12237    #[prost(int32, optional, tag="1")]
12238    pub dev_major: ::core::option::Option<i32>,
12239    #[prost(int32, optional, tag="2")]
12240    pub dev_minor: ::core::option::Option<i32>,
12241    #[prost(uint32, optional, tag="3")]
12242    pub group: ::core::option::Option<u32>,
12243    #[prost(int32, optional, tag="4")]
12244    pub start: ::core::option::Option<i32>,
12245    #[prost(int32, optional, tag="5")]
12246    pub len: ::core::option::Option<i32>,
12247}
12248#[derive(Clone, PartialEq, ::prost::Message)]
12249pub struct Ext4TruncateEnterFtraceEvent {
12250    #[prost(uint64, optional, tag="1")]
12251    pub dev: ::core::option::Option<u64>,
12252    #[prost(uint64, optional, tag="2")]
12253    pub ino: ::core::option::Option<u64>,
12254    #[prost(uint64, optional, tag="3")]
12255    pub blocks: ::core::option::Option<u64>,
12256}
12257#[derive(Clone, PartialEq, ::prost::Message)]
12258pub struct Ext4TruncateExitFtraceEvent {
12259    #[prost(uint64, optional, tag="1")]
12260    pub dev: ::core::option::Option<u64>,
12261    #[prost(uint64, optional, tag="2")]
12262    pub ino: ::core::option::Option<u64>,
12263    #[prost(uint64, optional, tag="3")]
12264    pub blocks: ::core::option::Option<u64>,
12265}
12266#[derive(Clone, PartialEq, ::prost::Message)]
12267pub struct Ext4UnlinkEnterFtraceEvent {
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(uint64, optional, tag="3")]
12273    pub parent: ::core::option::Option<u64>,
12274    #[prost(int64, optional, tag="4")]
12275    pub size: ::core::option::Option<i64>,
12276}
12277#[derive(Clone, PartialEq, ::prost::Message)]
12278pub struct Ext4UnlinkExitFtraceEvent {
12279    #[prost(uint64, optional, tag="1")]
12280    pub dev: ::core::option::Option<u64>,
12281    #[prost(uint64, optional, tag="2")]
12282    pub ino: ::core::option::Option<u64>,
12283    #[prost(int32, optional, tag="3")]
12284    pub ret: ::core::option::Option<i32>,
12285}
12286#[derive(Clone, PartialEq, ::prost::Message)]
12287pub struct Ext4WriteBeginFtraceEvent {
12288    #[prost(uint64, optional, tag="1")]
12289    pub dev: ::core::option::Option<u64>,
12290    #[prost(uint64, optional, tag="2")]
12291    pub ino: ::core::option::Option<u64>,
12292    #[prost(int64, optional, tag="3")]
12293    pub pos: ::core::option::Option<i64>,
12294    #[prost(uint32, optional, tag="4")]
12295    pub len: ::core::option::Option<u32>,
12296    #[prost(uint32, optional, tag="5")]
12297    pub flags: ::core::option::Option<u32>,
12298}
12299#[derive(Clone, PartialEq, ::prost::Message)]
12300pub struct Ext4WriteEndFtraceEvent {
12301    #[prost(uint64, optional, tag="1")]
12302    pub dev: ::core::option::Option<u64>,
12303    #[prost(uint64, optional, tag="2")]
12304    pub ino: ::core::option::Option<u64>,
12305    #[prost(int64, optional, tag="3")]
12306    pub pos: ::core::option::Option<i64>,
12307    #[prost(uint32, optional, tag="4")]
12308    pub len: ::core::option::Option<u32>,
12309    #[prost(uint32, optional, tag="5")]
12310    pub copied: ::core::option::Option<u32>,
12311}
12312#[derive(Clone, PartialEq, ::prost::Message)]
12313pub struct Ext4WritepageFtraceEvent {
12314    #[prost(uint64, optional, tag="1")]
12315    pub dev: ::core::option::Option<u64>,
12316    #[prost(uint64, optional, tag="2")]
12317    pub ino: ::core::option::Option<u64>,
12318    #[prost(uint64, optional, tag="3")]
12319    pub index: ::core::option::Option<u64>,
12320}
12321#[derive(Clone, PartialEq, ::prost::Message)]
12322pub struct Ext4WritepagesFtraceEvent {
12323    #[prost(uint64, optional, tag="1")]
12324    pub dev: ::core::option::Option<u64>,
12325    #[prost(uint64, optional, tag="2")]
12326    pub ino: ::core::option::Option<u64>,
12327    #[prost(int64, optional, tag="3")]
12328    pub nr_to_write: ::core::option::Option<i64>,
12329    #[prost(int64, optional, tag="4")]
12330    pub pages_skipped: ::core::option::Option<i64>,
12331    #[prost(int64, optional, tag="5")]
12332    pub range_start: ::core::option::Option<i64>,
12333    #[prost(int64, optional, tag="6")]
12334    pub range_end: ::core::option::Option<i64>,
12335    #[prost(uint64, optional, tag="7")]
12336    pub writeback_index: ::core::option::Option<u64>,
12337    #[prost(int32, optional, tag="8")]
12338    pub sync_mode: ::core::option::Option<i32>,
12339    #[prost(uint32, optional, tag="9")]
12340    pub for_kupdate: ::core::option::Option<u32>,
12341    #[prost(uint32, optional, tag="10")]
12342    pub range_cyclic: ::core::option::Option<u32>,
12343}
12344#[derive(Clone, PartialEq, ::prost::Message)]
12345pub struct Ext4WritepagesResultFtraceEvent {
12346    #[prost(uint64, optional, tag="1")]
12347    pub dev: ::core::option::Option<u64>,
12348    #[prost(uint64, optional, tag="2")]
12349    pub ino: ::core::option::Option<u64>,
12350    #[prost(int32, optional, tag="3")]
12351    pub ret: ::core::option::Option<i32>,
12352    #[prost(int32, optional, tag="4")]
12353    pub pages_written: ::core::option::Option<i32>,
12354    #[prost(int64, optional, tag="5")]
12355    pub pages_skipped: ::core::option::Option<i64>,
12356    #[prost(uint64, optional, tag="6")]
12357    pub writeback_index: ::core::option::Option<u64>,
12358    #[prost(int32, optional, tag="7")]
12359    pub sync_mode: ::core::option::Option<i32>,
12360}
12361#[derive(Clone, PartialEq, ::prost::Message)]
12362pub struct Ext4ZeroRangeFtraceEvent {
12363    #[prost(uint64, optional, tag="1")]
12364    pub dev: ::core::option::Option<u64>,
12365    #[prost(uint64, optional, tag="2")]
12366    pub ino: ::core::option::Option<u64>,
12367    #[prost(int64, optional, tag="3")]
12368    pub offset: ::core::option::Option<i64>,
12369    #[prost(int64, optional, tag="4")]
12370    pub len: ::core::option::Option<i64>,
12371    #[prost(int32, optional, tag="5")]
12372    pub mode: ::core::option::Option<i32>,
12373}
12374// End of protos/perfetto/trace/ftrace/ext4.proto
12375
12376// Begin of protos/perfetto/trace/ftrace/f2fs.proto
12377
12378#[derive(Clone, PartialEq, ::prost::Message)]
12379pub struct F2fsDoSubmitBioFtraceEvent {
12380    #[prost(uint64, optional, tag="1")]
12381    pub dev: ::core::option::Option<u64>,
12382    #[prost(int32, optional, tag="2")]
12383    pub btype: ::core::option::Option<i32>,
12384    #[prost(uint32, optional, tag="3")]
12385    pub sync: ::core::option::Option<u32>,
12386    #[prost(uint64, optional, tag="4")]
12387    pub sector: ::core::option::Option<u64>,
12388    #[prost(uint32, optional, tag="5")]
12389    pub size: ::core::option::Option<u32>,
12390}
12391#[derive(Clone, PartialEq, ::prost::Message)]
12392pub struct F2fsEvictInodeFtraceEvent {
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 F2fsFallocateFtraceEvent {
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 mode: ::core::option::Option<i32>,
12418    #[prost(int64, optional, tag="4")]
12419    pub offset: ::core::option::Option<i64>,
12420    #[prost(int64, optional, tag="5")]
12421    pub len: ::core::option::Option<i64>,
12422    #[prost(int64, optional, tag="6")]
12423    pub size: ::core::option::Option<i64>,
12424    #[prost(uint64, optional, tag="7")]
12425    pub blocks: ::core::option::Option<u64>,
12426    #[prost(int32, optional, tag="8")]
12427    pub ret: ::core::option::Option<i32>,
12428}
12429#[derive(Clone, PartialEq, ::prost::Message)]
12430pub struct F2fsGetDataBlockFtraceEvent {
12431    #[prost(uint64, optional, tag="1")]
12432    pub dev: ::core::option::Option<u64>,
12433    #[prost(uint64, optional, tag="2")]
12434    pub ino: ::core::option::Option<u64>,
12435    #[prost(uint64, optional, tag="3")]
12436    pub iblock: ::core::option::Option<u64>,
12437    #[prost(uint64, optional, tag="4")]
12438    pub bh_start: ::core::option::Option<u64>,
12439    #[prost(uint64, optional, tag="5")]
12440    pub bh_size: ::core::option::Option<u64>,
12441    #[prost(int32, optional, tag="6")]
12442    pub ret: ::core::option::Option<i32>,
12443}
12444#[derive(Clone, PartialEq, ::prost::Message)]
12445pub struct F2fsGetVictimFtraceEvent {
12446    #[prost(uint64, optional, tag="1")]
12447    pub dev: ::core::option::Option<u64>,
12448    #[prost(int32, optional, tag="2")]
12449    pub r#type: ::core::option::Option<i32>,
12450    #[prost(int32, optional, tag="3")]
12451    pub gc_type: ::core::option::Option<i32>,
12452    #[prost(int32, optional, tag="4")]
12453    pub alloc_mode: ::core::option::Option<i32>,
12454    #[prost(int32, optional, tag="5")]
12455    pub gc_mode: ::core::option::Option<i32>,
12456    #[prost(uint32, optional, tag="6")]
12457    pub victim: ::core::option::Option<u32>,
12458    #[prost(uint32, optional, tag="7")]
12459    pub ofs_unit: ::core::option::Option<u32>,
12460    #[prost(uint32, optional, tag="8")]
12461    pub pre_victim: ::core::option::Option<u32>,
12462    #[prost(uint32, optional, tag="9")]
12463    pub prefree: ::core::option::Option<u32>,
12464    #[prost(uint32, optional, tag="10")]
12465    pub free: ::core::option::Option<u32>,
12466    #[prost(uint32, optional, tag="11")]
12467    pub cost: ::core::option::Option<u32>,
12468}
12469#[derive(Clone, PartialEq, ::prost::Message)]
12470pub struct F2fsIgetFtraceEvent {
12471    #[prost(uint64, optional, tag="1")]
12472    pub dev: ::core::option::Option<u64>,
12473    #[prost(uint64, optional, tag="2")]
12474    pub ino: ::core::option::Option<u64>,
12475    #[prost(uint64, optional, tag="3")]
12476    pub pino: ::core::option::Option<u64>,
12477    #[prost(uint32, optional, tag="4")]
12478    pub mode: ::core::option::Option<u32>,
12479    #[prost(int64, optional, tag="5")]
12480    pub size: ::core::option::Option<i64>,
12481    #[prost(uint32, optional, tag="6")]
12482    pub nlink: ::core::option::Option<u32>,
12483    #[prost(uint64, optional, tag="7")]
12484    pub blocks: ::core::option::Option<u64>,
12485    #[prost(uint32, optional, tag="8")]
12486    pub advise: ::core::option::Option<u32>,
12487}
12488#[derive(Clone, PartialEq, ::prost::Message)]
12489pub struct F2fsIgetExitFtraceEvent {
12490    #[prost(uint64, optional, tag="1")]
12491    pub dev: ::core::option::Option<u64>,
12492    #[prost(uint64, optional, tag="2")]
12493    pub ino: ::core::option::Option<u64>,
12494    #[prost(int32, optional, tag="3")]
12495    pub ret: ::core::option::Option<i32>,
12496}
12497#[derive(Clone, PartialEq, ::prost::Message)]
12498pub struct F2fsNewInodeFtraceEvent {
12499    #[prost(uint64, optional, tag="1")]
12500    pub dev: ::core::option::Option<u64>,
12501    #[prost(uint64, optional, tag="2")]
12502    pub ino: ::core::option::Option<u64>,
12503    #[prost(int32, optional, tag="3")]
12504    pub ret: ::core::option::Option<i32>,
12505}
12506#[derive(Clone, PartialEq, ::prost::Message)]
12507pub struct F2fsReadpageFtraceEvent {
12508    #[prost(uint64, optional, tag="1")]
12509    pub dev: ::core::option::Option<u64>,
12510    #[prost(uint64, optional, tag="2")]
12511    pub ino: ::core::option::Option<u64>,
12512    #[prost(uint64, optional, tag="3")]
12513    pub index: ::core::option::Option<u64>,
12514    #[prost(uint64, optional, tag="4")]
12515    pub blkaddr: ::core::option::Option<u64>,
12516    #[prost(int32, optional, tag="5")]
12517    pub r#type: ::core::option::Option<i32>,
12518    #[prost(int32, optional, tag="6")]
12519    pub dir: ::core::option::Option<i32>,
12520    #[prost(int32, optional, tag="7")]
12521    pub dirty: ::core::option::Option<i32>,
12522    #[prost(int32, optional, tag="8")]
12523    pub uptodate: ::core::option::Option<i32>,
12524}
12525#[derive(Clone, PartialEq, ::prost::Message)]
12526pub struct F2fsReserveNewBlockFtraceEvent {
12527    #[prost(uint64, optional, tag="1")]
12528    pub dev: ::core::option::Option<u64>,
12529    #[prost(uint32, optional, tag="2")]
12530    pub nid: ::core::option::Option<u32>,
12531    #[prost(uint32, optional, tag="3")]
12532    pub ofs_in_node: ::core::option::Option<u32>,
12533}
12534#[derive(Clone, PartialEq, ::prost::Message)]
12535pub struct F2fsSetPageDirtyFtraceEvent {
12536    #[prost(uint64, optional, tag="1")]
12537    pub dev: ::core::option::Option<u64>,
12538    #[prost(uint64, optional, tag="2")]
12539    pub ino: ::core::option::Option<u64>,
12540    #[prost(int32, optional, tag="3")]
12541    pub r#type: ::core::option::Option<i32>,
12542    #[prost(int32, optional, tag="4")]
12543    pub dir: ::core::option::Option<i32>,
12544    #[prost(uint64, optional, tag="5")]
12545    pub index: ::core::option::Option<u64>,
12546    #[prost(int32, optional, tag="6")]
12547    pub dirty: ::core::option::Option<i32>,
12548    #[prost(int32, optional, tag="7")]
12549    pub uptodate: ::core::option::Option<i32>,
12550}
12551#[derive(Clone, PartialEq, ::prost::Message)]
12552pub struct F2fsSubmitWritePageFtraceEvent {
12553    #[prost(uint64, optional, tag="1")]
12554    pub dev: ::core::option::Option<u64>,
12555    #[prost(uint64, optional, tag="2")]
12556    pub ino: ::core::option::Option<u64>,
12557    #[prost(int32, optional, tag="3")]
12558    pub r#type: ::core::option::Option<i32>,
12559    #[prost(uint64, optional, tag="4")]
12560    pub index: ::core::option::Option<u64>,
12561    #[prost(uint32, optional, tag="5")]
12562    pub block: ::core::option::Option<u32>,
12563}
12564#[derive(Clone, PartialEq, ::prost::Message)]
12565pub struct F2fsSyncFileEnterFtraceEvent {
12566    #[prost(uint64, optional, tag="1")]
12567    pub dev: ::core::option::Option<u64>,
12568    #[prost(uint64, optional, tag="2")]
12569    pub ino: ::core::option::Option<u64>,
12570    #[prost(uint64, optional, tag="3")]
12571    pub pino: ::core::option::Option<u64>,
12572    #[prost(uint32, optional, tag="4")]
12573    pub mode: ::core::option::Option<u32>,
12574    #[prost(int64, optional, tag="5")]
12575    pub size: ::core::option::Option<i64>,
12576    #[prost(uint32, optional, tag="6")]
12577    pub nlink: ::core::option::Option<u32>,
12578    #[prost(uint64, optional, tag="7")]
12579    pub blocks: ::core::option::Option<u64>,
12580    #[prost(uint32, optional, tag="8")]
12581    pub advise: ::core::option::Option<u32>,
12582}
12583#[derive(Clone, PartialEq, ::prost::Message)]
12584pub struct F2fsSyncFileExitFtraceEvent {
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(uint32, optional, tag="3")]
12590    pub need_cp: ::core::option::Option<u32>,
12591    #[prost(int32, optional, tag="4")]
12592    pub datasync: ::core::option::Option<i32>,
12593    #[prost(int32, optional, tag="5")]
12594    pub ret: ::core::option::Option<i32>,
12595    #[prost(int32, optional, tag="6")]
12596    pub cp_reason: ::core::option::Option<i32>,
12597}
12598#[derive(Clone, PartialEq, ::prost::Message)]
12599pub struct F2fsSyncFsFtraceEvent {
12600    #[prost(uint64, optional, tag="1")]
12601    pub dev: ::core::option::Option<u64>,
12602    #[prost(int32, optional, tag="2")]
12603    pub dirty: ::core::option::Option<i32>,
12604    #[prost(int32, optional, tag="3")]
12605    pub wait: ::core::option::Option<i32>,
12606}
12607#[derive(Clone, PartialEq, ::prost::Message)]
12608pub struct F2fsTruncateFtraceEvent {
12609    #[prost(uint64, optional, tag="1")]
12610    pub dev: ::core::option::Option<u64>,
12611    #[prost(uint64, optional, tag="2")]
12612    pub ino: ::core::option::Option<u64>,
12613    #[prost(uint64, optional, tag="3")]
12614    pub pino: ::core::option::Option<u64>,
12615    #[prost(uint32, optional, tag="4")]
12616    pub mode: ::core::option::Option<u32>,
12617    #[prost(int64, optional, tag="5")]
12618    pub size: ::core::option::Option<i64>,
12619    #[prost(uint32, optional, tag="6")]
12620    pub nlink: ::core::option::Option<u32>,
12621    #[prost(uint64, optional, tag="7")]
12622    pub blocks: ::core::option::Option<u64>,
12623    #[prost(uint32, optional, tag="8")]
12624    pub advise: ::core::option::Option<u32>,
12625}
12626#[derive(Clone, PartialEq, ::prost::Message)]
12627pub struct F2fsTruncateBlocksEnterFtraceEvent {
12628    #[prost(uint64, optional, tag="1")]
12629    pub dev: ::core::option::Option<u64>,
12630    #[prost(uint64, optional, tag="2")]
12631    pub ino: ::core::option::Option<u64>,
12632    #[prost(int64, optional, tag="3")]
12633    pub size: ::core::option::Option<i64>,
12634    #[prost(uint64, optional, tag="4")]
12635    pub blocks: ::core::option::Option<u64>,
12636    #[prost(uint64, optional, tag="5")]
12637    pub from: ::core::option::Option<u64>,
12638}
12639#[derive(Clone, PartialEq, ::prost::Message)]
12640pub struct F2fsTruncateBlocksExitFtraceEvent {
12641    #[prost(uint64, optional, tag="1")]
12642    pub dev: ::core::option::Option<u64>,
12643    #[prost(uint64, optional, tag="2")]
12644    pub ino: ::core::option::Option<u64>,
12645    #[prost(int32, optional, tag="3")]
12646    pub ret: ::core::option::Option<i32>,
12647}
12648#[derive(Clone, PartialEq, ::prost::Message)]
12649pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
12650    #[prost(uint64, optional, tag="1")]
12651    pub dev: ::core::option::Option<u64>,
12652    #[prost(uint64, optional, tag="2")]
12653    pub ino: ::core::option::Option<u64>,
12654    #[prost(uint32, optional, tag="3")]
12655    pub nid: ::core::option::Option<u32>,
12656    #[prost(uint32, optional, tag="4")]
12657    pub ofs: ::core::option::Option<u32>,
12658    #[prost(int32, optional, tag="5")]
12659    pub free: ::core::option::Option<i32>,
12660}
12661#[derive(Clone, PartialEq, ::prost::Message)]
12662pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
12663    #[prost(uint64, optional, tag="1")]
12664    pub dev: ::core::option::Option<u64>,
12665    #[prost(uint64, optional, tag="2")]
12666    pub ino: ::core::option::Option<u64>,
12667    #[prost(int64, optional, tag="3")]
12668    pub size: ::core::option::Option<i64>,
12669    #[prost(uint64, optional, tag="4")]
12670    pub blocks: ::core::option::Option<u64>,
12671    #[prost(uint64, optional, tag="5")]
12672    pub from: ::core::option::Option<u64>,
12673}
12674#[derive(Clone, PartialEq, ::prost::Message)]
12675pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
12676    #[prost(uint64, optional, tag="1")]
12677    pub dev: ::core::option::Option<u64>,
12678    #[prost(uint64, optional, tag="2")]
12679    pub ino: ::core::option::Option<u64>,
12680    #[prost(int32, optional, tag="3")]
12681    pub ret: ::core::option::Option<i32>,
12682}
12683#[derive(Clone, PartialEq, ::prost::Message)]
12684pub struct F2fsTruncateNodeFtraceEvent {
12685    #[prost(uint64, optional, tag="1")]
12686    pub dev: ::core::option::Option<u64>,
12687    #[prost(uint64, optional, tag="2")]
12688    pub ino: ::core::option::Option<u64>,
12689    #[prost(uint32, optional, tag="3")]
12690    pub nid: ::core::option::Option<u32>,
12691    #[prost(uint32, optional, tag="4")]
12692    pub blk_addr: ::core::option::Option<u32>,
12693}
12694#[derive(Clone, PartialEq, ::prost::Message)]
12695pub struct F2fsTruncateNodesEnterFtraceEvent {
12696    #[prost(uint64, optional, tag="1")]
12697    pub dev: ::core::option::Option<u64>,
12698    #[prost(uint64, optional, tag="2")]
12699    pub ino: ::core::option::Option<u64>,
12700    #[prost(uint32, optional, tag="3")]
12701    pub nid: ::core::option::Option<u32>,
12702    #[prost(uint32, optional, tag="4")]
12703    pub blk_addr: ::core::option::Option<u32>,
12704}
12705#[derive(Clone, PartialEq, ::prost::Message)]
12706pub struct F2fsTruncateNodesExitFtraceEvent {
12707    #[prost(uint64, optional, tag="1")]
12708    pub dev: ::core::option::Option<u64>,
12709    #[prost(uint64, optional, tag="2")]
12710    pub ino: ::core::option::Option<u64>,
12711    #[prost(int32, optional, tag="3")]
12712    pub ret: ::core::option::Option<i32>,
12713}
12714#[derive(Clone, PartialEq, ::prost::Message)]
12715pub struct F2fsTruncatePartialNodesFtraceEvent {
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(uint32, optional, tag="3")]
12721    pub nid: ::core::option::Option<u32>,
12722    #[prost(int32, optional, tag="4")]
12723    pub depth: ::core::option::Option<i32>,
12724    #[prost(int32, optional, tag="5")]
12725    pub err: ::core::option::Option<i32>,
12726}
12727#[derive(Clone, PartialEq, ::prost::Message)]
12728pub struct F2fsUnlinkEnterFtraceEvent {
12729    #[prost(uint64, optional, tag="1")]
12730    pub dev: ::core::option::Option<u64>,
12731    #[prost(uint64, optional, tag="2")]
12732    pub ino: ::core::option::Option<u64>,
12733    #[prost(int64, optional, tag="3")]
12734    pub size: ::core::option::Option<i64>,
12735    #[prost(uint64, optional, tag="4")]
12736    pub blocks: ::core::option::Option<u64>,
12737    #[prost(string, optional, tag="5")]
12738    pub name: ::core::option::Option<::prost::alloc::string::String>,
12739}
12740#[derive(Clone, PartialEq, ::prost::Message)]
12741pub struct F2fsUnlinkExitFtraceEvent {
12742    #[prost(uint64, optional, tag="1")]
12743    pub dev: ::core::option::Option<u64>,
12744    #[prost(uint64, optional, tag="2")]
12745    pub ino: ::core::option::Option<u64>,
12746    #[prost(int32, optional, tag="3")]
12747    pub ret: ::core::option::Option<i32>,
12748}
12749#[derive(Clone, PartialEq, ::prost::Message)]
12750pub struct F2fsVmPageMkwriteFtraceEvent {
12751    #[prost(uint64, optional, tag="1")]
12752    pub dev: ::core::option::Option<u64>,
12753    #[prost(uint64, optional, tag="2")]
12754    pub ino: ::core::option::Option<u64>,
12755    #[prost(int32, optional, tag="3")]
12756    pub r#type: ::core::option::Option<i32>,
12757    #[prost(int32, optional, tag="4")]
12758    pub dir: ::core::option::Option<i32>,
12759    #[prost(uint64, optional, tag="5")]
12760    pub index: ::core::option::Option<u64>,
12761    #[prost(int32, optional, tag="6")]
12762    pub dirty: ::core::option::Option<i32>,
12763    #[prost(int32, optional, tag="7")]
12764    pub uptodate: ::core::option::Option<i32>,
12765}
12766#[derive(Clone, PartialEq, ::prost::Message)]
12767pub struct F2fsWriteBeginFtraceEvent {
12768    #[prost(uint64, optional, tag="1")]
12769    pub dev: ::core::option::Option<u64>,
12770    #[prost(uint64, optional, tag="2")]
12771    pub ino: ::core::option::Option<u64>,
12772    #[prost(int64, optional, tag="3")]
12773    pub pos: ::core::option::Option<i64>,
12774    #[prost(uint32, optional, tag="4")]
12775    pub len: ::core::option::Option<u32>,
12776    #[prost(uint32, optional, tag="5")]
12777    pub flags: ::core::option::Option<u32>,
12778}
12779#[derive(Clone, PartialEq, ::prost::Message)]
12780pub struct F2fsWriteCheckpointFtraceEvent {
12781    #[prost(uint64, optional, tag="1")]
12782    pub dev: ::core::option::Option<u64>,
12783    #[prost(uint32, optional, tag="2")]
12784    pub is_umount: ::core::option::Option<u32>,
12785    #[prost(string, optional, tag="3")]
12786    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12787    #[prost(int32, optional, tag="4")]
12788    pub reason: ::core::option::Option<i32>,
12789    #[prost(uint32, optional, tag="5")]
12790    pub phase: ::core::option::Option<u32>,
12791}
12792#[derive(Clone, PartialEq, ::prost::Message)]
12793pub struct F2fsWriteEndFtraceEvent {
12794    #[prost(uint64, optional, tag="1")]
12795    pub dev: ::core::option::Option<u64>,
12796    #[prost(uint64, optional, tag="2")]
12797    pub ino: ::core::option::Option<u64>,
12798    #[prost(int64, optional, tag="3")]
12799    pub pos: ::core::option::Option<i64>,
12800    #[prost(uint32, optional, tag="4")]
12801    pub len: ::core::option::Option<u32>,
12802    #[prost(uint32, optional, tag="5")]
12803    pub copied: ::core::option::Option<u32>,
12804}
12805#[derive(Clone, PartialEq, ::prost::Message)]
12806pub struct F2fsIostatFtraceEvent {
12807    #[prost(uint64, optional, tag="1")]
12808    pub app_bio: ::core::option::Option<u64>,
12809    #[prost(uint64, optional, tag="2")]
12810    pub app_brio: ::core::option::Option<u64>,
12811    #[prost(uint64, optional, tag="3")]
12812    pub app_dio: ::core::option::Option<u64>,
12813    #[prost(uint64, optional, tag="4")]
12814    pub app_drio: ::core::option::Option<u64>,
12815    #[prost(uint64, optional, tag="5")]
12816    pub app_mio: ::core::option::Option<u64>,
12817    #[prost(uint64, optional, tag="6")]
12818    pub app_mrio: ::core::option::Option<u64>,
12819    #[prost(uint64, optional, tag="7")]
12820    pub app_rio: ::core::option::Option<u64>,
12821    #[prost(uint64, optional, tag="8")]
12822    pub app_wio: ::core::option::Option<u64>,
12823    #[prost(uint64, optional, tag="9")]
12824    pub dev: ::core::option::Option<u64>,
12825    #[prost(uint64, optional, tag="10")]
12826    pub fs_cdrio: ::core::option::Option<u64>,
12827    #[prost(uint64, optional, tag="11")]
12828    pub fs_cp_dio: ::core::option::Option<u64>,
12829    #[prost(uint64, optional, tag="12")]
12830    pub fs_cp_mio: ::core::option::Option<u64>,
12831    #[prost(uint64, optional, tag="13")]
12832    pub fs_cp_nio: ::core::option::Option<u64>,
12833    #[prost(uint64, optional, tag="14")]
12834    pub fs_dio: ::core::option::Option<u64>,
12835    #[prost(uint64, optional, tag="15")]
12836    pub fs_discard: ::core::option::Option<u64>,
12837    #[prost(uint64, optional, tag="16")]
12838    pub fs_drio: ::core::option::Option<u64>,
12839    #[prost(uint64, optional, tag="17")]
12840    pub fs_gc_dio: ::core::option::Option<u64>,
12841    #[prost(uint64, optional, tag="18")]
12842    pub fs_gc_nio: ::core::option::Option<u64>,
12843    #[prost(uint64, optional, tag="19")]
12844    pub fs_gdrio: ::core::option::Option<u64>,
12845    #[prost(uint64, optional, tag="20")]
12846    pub fs_mio: ::core::option::Option<u64>,
12847    #[prost(uint64, optional, tag="21")]
12848    pub fs_mrio: ::core::option::Option<u64>,
12849    #[prost(uint64, optional, tag="22")]
12850    pub fs_nio: ::core::option::Option<u64>,
12851    #[prost(uint64, optional, tag="23")]
12852    pub fs_nrio: ::core::option::Option<u64>,
12853}
12854#[derive(Clone, PartialEq, ::prost::Message)]
12855pub struct F2fsIostatLatencyFtraceEvent {
12856    #[prost(uint32, optional, tag="1")]
12857    pub d_rd_avg: ::core::option::Option<u32>,
12858    #[prost(uint32, optional, tag="2")]
12859    pub d_rd_cnt: ::core::option::Option<u32>,
12860    #[prost(uint32, optional, tag="3")]
12861    pub d_rd_peak: ::core::option::Option<u32>,
12862    #[prost(uint32, optional, tag="4")]
12863    pub d_wr_as_avg: ::core::option::Option<u32>,
12864    #[prost(uint32, optional, tag="5")]
12865    pub d_wr_as_cnt: ::core::option::Option<u32>,
12866    #[prost(uint32, optional, tag="6")]
12867    pub d_wr_as_peak: ::core::option::Option<u32>,
12868    #[prost(uint32, optional, tag="7")]
12869    pub d_wr_s_avg: ::core::option::Option<u32>,
12870    #[prost(uint32, optional, tag="8")]
12871    pub d_wr_s_cnt: ::core::option::Option<u32>,
12872    #[prost(uint32, optional, tag="9")]
12873    pub d_wr_s_peak: ::core::option::Option<u32>,
12874    #[prost(uint64, optional, tag="10")]
12875    pub dev: ::core::option::Option<u64>,
12876    #[prost(uint32, optional, tag="11")]
12877    pub m_rd_avg: ::core::option::Option<u32>,
12878    #[prost(uint32, optional, tag="12")]
12879    pub m_rd_cnt: ::core::option::Option<u32>,
12880    #[prost(uint32, optional, tag="13")]
12881    pub m_rd_peak: ::core::option::Option<u32>,
12882    #[prost(uint32, optional, tag="14")]
12883    pub m_wr_as_avg: ::core::option::Option<u32>,
12884    #[prost(uint32, optional, tag="15")]
12885    pub m_wr_as_cnt: ::core::option::Option<u32>,
12886    #[prost(uint32, optional, tag="16")]
12887    pub m_wr_as_peak: ::core::option::Option<u32>,
12888    #[prost(uint32, optional, tag="17")]
12889    pub m_wr_s_avg: ::core::option::Option<u32>,
12890    #[prost(uint32, optional, tag="18")]
12891    pub m_wr_s_cnt: ::core::option::Option<u32>,
12892    #[prost(uint32, optional, tag="19")]
12893    pub m_wr_s_peak: ::core::option::Option<u32>,
12894    #[prost(uint32, optional, tag="20")]
12895    pub n_rd_avg: ::core::option::Option<u32>,
12896    #[prost(uint32, optional, tag="21")]
12897    pub n_rd_cnt: ::core::option::Option<u32>,
12898    #[prost(uint32, optional, tag="22")]
12899    pub n_rd_peak: ::core::option::Option<u32>,
12900    #[prost(uint32, optional, tag="23")]
12901    pub n_wr_as_avg: ::core::option::Option<u32>,
12902    #[prost(uint32, optional, tag="24")]
12903    pub n_wr_as_cnt: ::core::option::Option<u32>,
12904    #[prost(uint32, optional, tag="25")]
12905    pub n_wr_as_peak: ::core::option::Option<u32>,
12906    #[prost(uint32, optional, tag="26")]
12907    pub n_wr_s_avg: ::core::option::Option<u32>,
12908    #[prost(uint32, optional, tag="27")]
12909    pub n_wr_s_cnt: ::core::option::Option<u32>,
12910    #[prost(uint32, optional, tag="28")]
12911    pub n_wr_s_peak: ::core::option::Option<u32>,
12912}
12913#[derive(Clone, PartialEq, ::prost::Message)]
12914pub struct F2fsBackgroundGcFtraceEvent {
12915    #[prost(uint64, optional, tag="1")]
12916    pub dev: ::core::option::Option<u64>,
12917    #[prost(uint32, optional, tag="2")]
12918    pub wait_ms: ::core::option::Option<u32>,
12919    #[prost(uint32, optional, tag="3")]
12920    pub prefree: ::core::option::Option<u32>,
12921    #[prost(uint32, optional, tag="4")]
12922    pub free: ::core::option::Option<u32>,
12923}
12924#[derive(Clone, PartialEq, ::prost::Message)]
12925pub struct F2fsGcBeginFtraceEvent {
12926    #[prost(uint64, optional, tag="1")]
12927    pub dev: ::core::option::Option<u64>,
12928    #[prost(uint32, optional, tag="2")]
12929    pub sync: ::core::option::Option<u32>,
12930    #[prost(uint32, optional, tag="3")]
12931    pub background: ::core::option::Option<u32>,
12932    #[prost(int64, optional, tag="4")]
12933    pub dirty_nodes: ::core::option::Option<i64>,
12934    #[prost(int64, optional, tag="5")]
12935    pub dirty_dents: ::core::option::Option<i64>,
12936    #[prost(int64, optional, tag="6")]
12937    pub dirty_imeta: ::core::option::Option<i64>,
12938    #[prost(uint32, optional, tag="7")]
12939    pub free_sec: ::core::option::Option<u32>,
12940    #[prost(uint32, optional, tag="8")]
12941    pub free_seg: ::core::option::Option<u32>,
12942    #[prost(int32, optional, tag="9")]
12943    pub reserved_seg: ::core::option::Option<i32>,
12944    #[prost(uint32, optional, tag="10")]
12945    pub prefree_seg: ::core::option::Option<u32>,
12946    #[prost(int32, optional, tag="11")]
12947    pub gc_type: ::core::option::Option<i32>,
12948    #[prost(uint32, optional, tag="12")]
12949    pub no_bg_gc: ::core::option::Option<u32>,
12950    #[prost(uint32, optional, tag="13")]
12951    pub nr_free_secs: ::core::option::Option<u32>,
12952}
12953#[derive(Clone, PartialEq, ::prost::Message)]
12954pub struct F2fsGcEndFtraceEvent {
12955    #[prost(uint64, optional, tag="1")]
12956    pub dev: ::core::option::Option<u64>,
12957    #[prost(int32, optional, tag="2")]
12958    pub ret: ::core::option::Option<i32>,
12959    #[prost(int32, optional, tag="3")]
12960    pub seg_freed: ::core::option::Option<i32>,
12961    #[prost(int32, optional, tag="4")]
12962    pub sec_freed: ::core::option::Option<i32>,
12963    #[prost(int64, optional, tag="5")]
12964    pub dirty_nodes: ::core::option::Option<i64>,
12965    #[prost(int64, optional, tag="6")]
12966    pub dirty_dents: ::core::option::Option<i64>,
12967    #[prost(int64, optional, tag="7")]
12968    pub dirty_imeta: ::core::option::Option<i64>,
12969    #[prost(uint32, optional, tag="8")]
12970    pub free_sec: ::core::option::Option<u32>,
12971    #[prost(uint32, optional, tag="9")]
12972    pub free_seg: ::core::option::Option<u32>,
12973    #[prost(int32, optional, tag="10")]
12974    pub reserved_seg: ::core::option::Option<i32>,
12975    #[prost(uint32, optional, tag="11")]
12976    pub prefree_seg: ::core::option::Option<u32>,
12977}
12978#[derive(Clone, PartialEq, ::prost::Message)]
12979pub struct F2fsLockElapsedTimeFtraceEvent {
12980    #[prost(uint64, optional, tag="1")]
12981    pub dev: ::core::option::Option<u64>,
12982    #[prost(string, optional, tag="2")]
12983    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12984    #[prost(int32, optional, tag="3")]
12985    pub pid: ::core::option::Option<i32>,
12986    #[prost(int32, optional, tag="4")]
12987    pub prio: ::core::option::Option<i32>,
12988    #[prost(int32, optional, tag="5")]
12989    pub ioprio_class: ::core::option::Option<i32>,
12990    #[prost(int32, optional, tag="6")]
12991    pub ioprio_data: ::core::option::Option<i32>,
12992    #[prost(uint32, optional, tag="7")]
12993    pub lock_name: ::core::option::Option<u32>,
12994    #[prost(uint32, optional, tag="8")]
12995    pub is_write: ::core::option::Option<u32>,
12996    #[prost(uint64, optional, tag="9")]
12997    pub total_time: ::core::option::Option<u64>,
12998    #[prost(uint64, optional, tag="10")]
12999    pub running_time: ::core::option::Option<u64>,
13000    #[prost(uint64, optional, tag="11")]
13001    pub runnable_time: ::core::option::Option<u64>,
13002    #[prost(uint64, optional, tag="12")]
13003    pub io_sleep_time: ::core::option::Option<u64>,
13004    #[prost(uint64, optional, tag="13")]
13005    pub other_time: ::core::option::Option<u64>,
13006}
13007// End of protos/perfetto/trace/ftrace/f2fs.proto
13008
13009// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
13010
13011#[derive(Clone, PartialEq, ::prost::Message)]
13012pub struct FastrpcDmaStatFtraceEvent {
13013    #[prost(int32, optional, tag="1")]
13014    pub cid: ::core::option::Option<i32>,
13015    #[prost(int64, optional, tag="2")]
13016    pub len: ::core::option::Option<i64>,
13017    #[prost(uint64, optional, tag="3")]
13018    pub total_allocated: ::core::option::Option<u64>,
13019}
13020#[derive(Clone, PartialEq, ::prost::Message)]
13021pub struct FastrpcDmaFreeFtraceEvent {
13022    #[prost(int32, optional, tag="1")]
13023    pub cid: ::core::option::Option<i32>,
13024    #[prost(uint64, optional, tag="2")]
13025    pub phys: ::core::option::Option<u64>,
13026    #[prost(uint64, optional, tag="3")]
13027    pub size: ::core::option::Option<u64>,
13028}
13029#[derive(Clone, PartialEq, ::prost::Message)]
13030pub struct FastrpcDmaAllocFtraceEvent {
13031    #[prost(int32, optional, tag="1")]
13032    pub cid: ::core::option::Option<i32>,
13033    #[prost(uint64, optional, tag="2")]
13034    pub phys: ::core::option::Option<u64>,
13035    #[prost(uint64, optional, tag="3")]
13036    pub size: ::core::option::Option<u64>,
13037    #[prost(uint64, optional, tag="4")]
13038    pub attr: ::core::option::Option<u64>,
13039    #[prost(int32, optional, tag="5")]
13040    pub mflags: ::core::option::Option<i32>,
13041}
13042#[derive(Clone, PartialEq, ::prost::Message)]
13043pub struct FastrpcDmaUnmapFtraceEvent {
13044    #[prost(int32, optional, tag="1")]
13045    pub cid: ::core::option::Option<i32>,
13046    #[prost(uint64, optional, tag="2")]
13047    pub phys: ::core::option::Option<u64>,
13048    #[prost(uint64, optional, tag="3")]
13049    pub size: ::core::option::Option<u64>,
13050}
13051#[derive(Clone, PartialEq, ::prost::Message)]
13052pub struct FastrpcDmaMapFtraceEvent {
13053    #[prost(int32, optional, tag="1")]
13054    pub cid: ::core::option::Option<i32>,
13055    #[prost(int32, optional, tag="2")]
13056    pub fd: ::core::option::Option<i32>,
13057    #[prost(uint64, optional, tag="3")]
13058    pub phys: ::core::option::Option<u64>,
13059    #[prost(uint64, optional, tag="4")]
13060    pub size: ::core::option::Option<u64>,
13061    #[prost(uint64, optional, tag="5")]
13062    pub len: ::core::option::Option<u64>,
13063    #[prost(uint32, optional, tag="6")]
13064    pub attr: ::core::option::Option<u32>,
13065    #[prost(int32, optional, tag="7")]
13066    pub mflags: ::core::option::Option<i32>,
13067}
13068// End of protos/perfetto/trace/ftrace/fastrpc.proto
13069
13070// Begin of protos/perfetto/trace/ftrace/fence.proto
13071
13072#[derive(Clone, PartialEq, ::prost::Message)]
13073pub struct FenceInitFtraceEvent {
13074    #[prost(uint32, optional, tag="1")]
13075    pub context: ::core::option::Option<u32>,
13076    #[prost(string, optional, tag="2")]
13077    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13078    #[prost(uint32, optional, tag="3")]
13079    pub seqno: ::core::option::Option<u32>,
13080    #[prost(string, optional, tag="4")]
13081    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13082}
13083#[derive(Clone, PartialEq, ::prost::Message)]
13084pub struct FenceDestroyFtraceEvent {
13085    #[prost(uint32, optional, tag="1")]
13086    pub context: ::core::option::Option<u32>,
13087    #[prost(string, optional, tag="2")]
13088    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13089    #[prost(uint32, optional, tag="3")]
13090    pub seqno: ::core::option::Option<u32>,
13091    #[prost(string, optional, tag="4")]
13092    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13093}
13094#[derive(Clone, PartialEq, ::prost::Message)]
13095pub struct FenceEnableSignalFtraceEvent {
13096    #[prost(uint32, optional, tag="1")]
13097    pub context: ::core::option::Option<u32>,
13098    #[prost(string, optional, tag="2")]
13099    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13100    #[prost(uint32, optional, tag="3")]
13101    pub seqno: ::core::option::Option<u32>,
13102    #[prost(string, optional, tag="4")]
13103    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13104}
13105#[derive(Clone, PartialEq, ::prost::Message)]
13106pub struct FenceSignaledFtraceEvent {
13107    #[prost(uint32, optional, tag="1")]
13108    pub context: ::core::option::Option<u32>,
13109    #[prost(string, optional, tag="2")]
13110    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13111    #[prost(uint32, optional, tag="3")]
13112    pub seqno: ::core::option::Option<u32>,
13113    #[prost(string, optional, tag="4")]
13114    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13115}
13116// End of protos/perfetto/trace/ftrace/fence.proto
13117
13118// Begin of protos/perfetto/trace/ftrace/filemap.proto
13119
13120#[derive(Clone, PartialEq, ::prost::Message)]
13121pub struct MmFilemapAddToPageCacheFtraceEvent {
13122    #[prost(uint64, optional, tag="1")]
13123    pub pfn: ::core::option::Option<u64>,
13124    #[prost(uint64, optional, tag="2")]
13125    pub i_ino: ::core::option::Option<u64>,
13126    #[prost(uint64, optional, tag="3")]
13127    pub index: ::core::option::Option<u64>,
13128    #[prost(uint64, optional, tag="4")]
13129    pub s_dev: ::core::option::Option<u64>,
13130    #[prost(uint64, optional, tag="5")]
13131    pub page: ::core::option::Option<u64>,
13132}
13133#[derive(Clone, PartialEq, ::prost::Message)]
13134pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
13135    #[prost(uint64, optional, tag="1")]
13136    pub pfn: ::core::option::Option<u64>,
13137    #[prost(uint64, optional, tag="2")]
13138    pub i_ino: ::core::option::Option<u64>,
13139    #[prost(uint64, optional, tag="3")]
13140    pub index: ::core::option::Option<u64>,
13141    #[prost(uint64, optional, tag="4")]
13142    pub s_dev: ::core::option::Option<u64>,
13143    #[prost(uint64, optional, tag="5")]
13144    pub page: ::core::option::Option<u64>,
13145}
13146// End of protos/perfetto/trace/ftrace/filemap.proto
13147
13148// Begin of protos/perfetto/trace/ftrace/fs.proto
13149
13150#[derive(Clone, PartialEq, ::prost::Message)]
13151pub struct DoSysOpenFtraceEvent {
13152    #[prost(string, optional, tag="1")]
13153    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13154    #[prost(int32, optional, tag="2")]
13155    pub flags: ::core::option::Option<i32>,
13156    #[prost(int32, optional, tag="3")]
13157    pub mode: ::core::option::Option<i32>,
13158}
13159#[derive(Clone, PartialEq, ::prost::Message)]
13160pub struct OpenExecFtraceEvent {
13161    #[prost(string, optional, tag="1")]
13162    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13163}
13164// End of protos/perfetto/trace/ftrace/fs.proto
13165
13166// Begin of protos/perfetto/trace/ftrace/ftrace.proto
13167
13168#[derive(Clone, PartialEq, ::prost::Message)]
13169pub struct PrintFtraceEvent {
13170    #[prost(uint64, optional, tag="1")]
13171    pub ip: ::core::option::Option<u64>,
13172    #[prost(string, optional, tag="2")]
13173    pub buf: ::core::option::Option<::prost::alloc::string::String>,
13174}
13175#[derive(Clone, PartialEq, ::prost::Message)]
13176pub struct FuncgraphEntryFtraceEvent {
13177    #[prost(int32, optional, tag="1")]
13178    pub depth: ::core::option::Option<i32>,
13179    #[prost(uint64, optional, tag="2")]
13180    pub func: ::core::option::Option<u64>,
13181}
13182#[derive(Clone, PartialEq, ::prost::Message)]
13183pub struct FuncgraphExitFtraceEvent {
13184    #[prost(uint64, optional, tag="1")]
13185    pub calltime: ::core::option::Option<u64>,
13186    #[prost(int32, optional, tag="2")]
13187    pub depth: ::core::option::Option<i32>,
13188    #[prost(uint64, optional, tag="3")]
13189    pub func: ::core::option::Option<u64>,
13190    #[prost(uint64, optional, tag="4")]
13191    pub overrun: ::core::option::Option<u64>,
13192    #[prost(uint64, optional, tag="5")]
13193    pub rettime: ::core::option::Option<u64>,
13194}
13195// End of protos/perfetto/trace/ftrace/ftrace.proto
13196
13197// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13198
13199#[derive(Clone, PartialEq, ::prost::Message)]
13200pub struct FwtpPerfettoCounterFtraceEvent {
13201    #[prost(uint64, optional, tag="1")]
13202    pub timestamp: ::core::option::Option<u64>,
13203    #[prost(uint32, optional, tag="2")]
13204    pub track_id: ::core::option::Option<u32>,
13205    #[prost(string, optional, tag="3")]
13206    pub category: ::core::option::Option<::prost::alloc::string::String>,
13207    #[prost(string, optional, tag="4")]
13208    pub name: ::core::option::Option<::prost::alloc::string::String>,
13209    #[prost(uint32, optional, tag="5")]
13210    pub value: ::core::option::Option<u32>,
13211}
13212#[derive(Clone, PartialEq, ::prost::Message)]
13213pub struct FwtpPerfettoSliceFtraceEvent {
13214    #[prost(uint64, optional, tag="1")]
13215    pub timestamp: ::core::option::Option<u64>,
13216    #[prost(uint32, optional, tag="2")]
13217    pub track_id: ::core::option::Option<u32>,
13218    #[prost(string, optional, tag="3")]
13219    pub category: ::core::option::Option<::prost::alloc::string::String>,
13220    #[prost(string, optional, tag="4")]
13221    pub name: ::core::option::Option<::prost::alloc::string::String>,
13222    #[prost(uint32, optional, tag="5")]
13223    pub begin: ::core::option::Option<u32>,
13224}
13225// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
13226
13227// Begin of protos/perfetto/trace/ftrace/g2d.proto
13228
13229#[derive(Clone, PartialEq, ::prost::Message)]
13230pub struct G2dTracingMarkWriteFtraceEvent {
13231    #[prost(int32, optional, tag="1")]
13232    pub pid: ::core::option::Option<i32>,
13233    #[prost(string, optional, tag="4")]
13234    pub name: ::core::option::Option<::prost::alloc::string::String>,
13235    #[prost(uint32, optional, tag="5")]
13236    pub r#type: ::core::option::Option<u32>,
13237    #[prost(int32, optional, tag="6")]
13238    pub value: ::core::option::Option<i32>,
13239}
13240// End of protos/perfetto/trace/ftrace/g2d.proto
13241
13242// Begin of protos/perfetto/trace/ftrace/generic.proto
13243
13244/// This generic proto is used to output events in the trace
13245/// when a specific proto for that event does not exist.
13246#[derive(Clone, PartialEq, ::prost::Message)]
13247pub struct GenericFtraceEvent {
13248    #[prost(string, optional, tag="1")]
13249    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
13250    #[prost(message, repeated, tag="2")]
13251    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
13252}
13253/// Nested message and enum types in `GenericFtraceEvent`.
13254pub mod generic_ftrace_event {
13255    #[derive(Clone, PartialEq, ::prost::Message)]
13256    pub struct Field {
13257        #[prost(string, optional, tag="1")]
13258        pub name: ::core::option::Option<::prost::alloc::string::String>,
13259        #[prost(oneof="field::Value", tags="3, 4, 5")]
13260        pub value: ::core::option::Option<field::Value>,
13261    }
13262    /// Nested message and enum types in `Field`.
13263    pub mod field {
13264        #[derive(Clone, PartialEq, ::prost::Oneof)]
13265        pub enum Value {
13266            #[prost(string, tag="3")]
13267            StrValue(::prost::alloc::string::String),
13268            #[prost(int64, tag="4")]
13269            IntValue(i64),
13270            #[prost(uint64, tag="5")]
13271            UintValue(u64),
13272        }
13273    }
13274}
13275#[derive(Clone, PartialEq, ::prost::Message)]
13276pub struct KprobeEvent {
13277    #[prost(string, optional, tag="1")]
13278    pub name: ::core::option::Option<::prost::alloc::string::String>,
13279    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
13280    pub r#type: ::core::option::Option<i32>,
13281}
13282/// Nested message and enum types in `KprobeEvent`.
13283pub mod kprobe_event {
13284    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
13285    #[repr(i32)]
13286    pub enum KprobeType {
13287        Unknown = 0,
13288        Begin = 1,
13289        End = 2,
13290        Instant = 3,
13291    }
13292    impl KprobeType {
13293        /// String value of the enum field names used in the ProtoBuf definition.
13294        ///
13295        /// The values are not transformed in any way and thus are considered stable
13296        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13297        pub fn as_str_name(&self) -> &'static str {
13298            match self {
13299                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
13300                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
13301                KprobeType::End => "KPROBE_TYPE_END",
13302                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
13303            }
13304        }
13305    }
13306}
13307// End of protos/perfetto/trace/ftrace/generic.proto
13308
13309// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
13310
13311#[derive(Clone, PartialEq, ::prost::Message)]
13312pub struct GoogleIccEventFtraceEvent {
13313    #[prost(string, optional, tag="1")]
13314    pub event: ::core::option::Option<::prost::alloc::string::String>,
13315    #[prost(uint64, optional, tag="2")]
13316    pub timestamp: ::core::option::Option<u64>,
13317}
13318// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
13319
13320// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
13321
13322#[derive(Clone, PartialEq, ::prost::Message)]
13323pub struct GoogleIrmEventFtraceEvent {
13324    #[prost(string, optional, tag="1")]
13325    pub event: ::core::option::Option<::prost::alloc::string::String>,
13326    #[prost(uint64, optional, tag="2")]
13327    pub timestamp: ::core::option::Option<u64>,
13328}
13329// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
13330
13331// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
13332
13333#[derive(Clone, PartialEq, ::prost::Message)]
13334pub struct GpuMemTotalFtraceEvent {
13335    #[prost(uint32, optional, tag="1")]
13336    pub gpu_id: ::core::option::Option<u32>,
13337    #[prost(uint32, optional, tag="2")]
13338    pub pid: ::core::option::Option<u32>,
13339    #[prost(uint64, optional, tag="3")]
13340    pub size: ::core::option::Option<u64>,
13341}
13342// End of protos/perfetto/trace/ftrace/gpu_mem.proto
13343
13344// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13345
13346#[derive(Clone, PartialEq, ::prost::Message)]
13347pub struct DrmSchedJobFtraceEvent {
13348    #[prost(uint64, optional, tag="1")]
13349    pub entity: ::core::option::Option<u64>,
13350    #[prost(uint64, optional, tag="2")]
13351    pub fence: ::core::option::Option<u64>,
13352    #[prost(int32, optional, tag="3")]
13353    pub hw_job_count: ::core::option::Option<i32>,
13354    #[prost(uint64, optional, tag="4")]
13355    pub id: ::core::option::Option<u64>,
13356    #[prost(uint32, optional, tag="5")]
13357    pub job_count: ::core::option::Option<u32>,
13358    #[prost(string, optional, tag="6")]
13359    pub name: ::core::option::Option<::prost::alloc::string::String>,
13360}
13361#[derive(Clone, PartialEq, ::prost::Message)]
13362pub struct DrmRunJobFtraceEvent {
13363    #[prost(uint64, optional, tag="1")]
13364    pub entity: ::core::option::Option<u64>,
13365    #[prost(uint64, optional, tag="2")]
13366    pub fence: ::core::option::Option<u64>,
13367    #[prost(int32, optional, tag="3")]
13368    pub hw_job_count: ::core::option::Option<i32>,
13369    #[prost(uint64, optional, tag="4")]
13370    pub id: ::core::option::Option<u64>,
13371    #[prost(uint32, optional, tag="5")]
13372    pub job_count: ::core::option::Option<u32>,
13373    #[prost(string, optional, tag="6")]
13374    pub name: ::core::option::Option<::prost::alloc::string::String>,
13375}
13376#[derive(Clone, PartialEq, ::prost::Message)]
13377pub struct DrmSchedProcessJobFtraceEvent {
13378    #[prost(uint64, optional, tag="1")]
13379    pub fence: ::core::option::Option<u64>,
13380}
13381#[derive(Clone, PartialEq, ::prost::Message)]
13382pub struct DrmSchedJobAddDepFtraceEvent {
13383    #[prost(uint64, optional, tag="1")]
13384    pub fence_context: ::core::option::Option<u64>,
13385    #[prost(uint64, optional, tag="2")]
13386    pub fence_seqno: ::core::option::Option<u64>,
13387    #[prost(uint64, optional, tag="3")]
13388    pub ctx: ::core::option::Option<u64>,
13389    #[prost(uint64, optional, tag="4")]
13390    pub seqno: ::core::option::Option<u64>,
13391}
13392#[derive(Clone, PartialEq, ::prost::Message)]
13393pub struct DrmSchedJobDoneFtraceEvent {
13394    #[prost(uint64, optional, tag="1")]
13395    pub fence_context: ::core::option::Option<u64>,
13396    #[prost(uint64, optional, tag="2")]
13397    pub fence_seqno: ::core::option::Option<u64>,
13398}
13399#[derive(Clone, PartialEq, ::prost::Message)]
13400pub struct DrmSchedJobQueueFtraceEvent {
13401    #[prost(string, optional, tag="1")]
13402    pub name: ::core::option::Option<::prost::alloc::string::String>,
13403    #[prost(uint32, optional, tag="2")]
13404    pub job_count: ::core::option::Option<u32>,
13405    #[prost(int32, optional, tag="3")]
13406    pub hw_job_count: ::core::option::Option<i32>,
13407    #[prost(string, optional, tag="4")]
13408    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13409    #[prost(uint64, optional, tag="5")]
13410    pub fence_context: ::core::option::Option<u64>,
13411    #[prost(uint64, optional, tag="6")]
13412    pub fence_seqno: ::core::option::Option<u64>,
13413    #[prost(uint64, optional, tag="7")]
13414    pub client_id: ::core::option::Option<u64>,
13415}
13416#[derive(Clone, PartialEq, ::prost::Message)]
13417pub struct DrmSchedJobRunFtraceEvent {
13418    #[prost(string, optional, tag="1")]
13419    pub name: ::core::option::Option<::prost::alloc::string::String>,
13420    #[prost(uint32, optional, tag="2")]
13421    pub job_count: ::core::option::Option<u32>,
13422    #[prost(int32, optional, tag="3")]
13423    pub hw_job_count: ::core::option::Option<i32>,
13424    #[prost(string, optional, tag="4")]
13425    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13426    #[prost(uint64, optional, tag="5")]
13427    pub fence_context: ::core::option::Option<u64>,
13428    #[prost(uint64, optional, tag="6")]
13429    pub fence_seqno: ::core::option::Option<u64>,
13430    #[prost(uint64, optional, tag="7")]
13431    pub client_id: ::core::option::Option<u64>,
13432}
13433#[derive(Clone, PartialEq, ::prost::Message)]
13434pub struct DrmSchedJobUnschedulableFtraceEvent {
13435    #[prost(uint64, optional, tag="1")]
13436    pub fence_context: ::core::option::Option<u64>,
13437    #[prost(uint64, optional, tag="2")]
13438    pub fence_seqno: ::core::option::Option<u64>,
13439    #[prost(uint64, optional, tag="3")]
13440    pub ctx: ::core::option::Option<u64>,
13441    #[prost(uint64, optional, tag="4")]
13442    pub seqno: ::core::option::Option<u64>,
13443}
13444// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
13445
13446// Begin of protos/perfetto/trace/ftrace/hyp.proto
13447
13448#[derive(Clone, PartialEq, ::prost::Message)]
13449pub struct HypEnterFtraceEvent {
13450}
13451#[derive(Clone, PartialEq, ::prost::Message)]
13452pub struct HypExitFtraceEvent {
13453}
13454#[derive(Clone, PartialEq, ::prost::Message)]
13455pub struct HostHcallFtraceEvent {
13456    #[prost(uint32, optional, tag="1")]
13457    pub id: ::core::option::Option<u32>,
13458    #[prost(uint32, optional, tag="2")]
13459    pub invalid: ::core::option::Option<u32>,
13460}
13461#[derive(Clone, PartialEq, ::prost::Message)]
13462pub struct HostSmcFtraceEvent {
13463    #[prost(uint64, optional, tag="1")]
13464    pub id: ::core::option::Option<u64>,
13465    #[prost(uint32, optional, tag="2")]
13466    pub forwarded: ::core::option::Option<u32>,
13467}
13468#[derive(Clone, PartialEq, ::prost::Message)]
13469pub struct HostMemAbortFtraceEvent {
13470    #[prost(uint64, optional, tag="1")]
13471    pub esr: ::core::option::Option<u64>,
13472    #[prost(uint64, optional, tag="2")]
13473    pub addr: ::core::option::Option<u64>,
13474}
13475#[derive(Clone, PartialEq, ::prost::Message)]
13476pub struct HostFfaCallFtraceEvent {
13477    #[prost(uint64, optional, tag="1")]
13478    pub func_id: ::core::option::Option<u64>,
13479    #[prost(uint64, optional, tag="2")]
13480    pub res_a1: ::core::option::Option<u64>,
13481    #[prost(uint64, optional, tag="3")]
13482    pub res_a2: ::core::option::Option<u64>,
13483    #[prost(uint64, optional, tag="4")]
13484    pub res_a3: ::core::option::Option<u64>,
13485    #[prost(uint64, optional, tag="5")]
13486    pub res_a4: ::core::option::Option<u64>,
13487    #[prost(int32, optional, tag="6")]
13488    pub handled: ::core::option::Option<i32>,
13489    #[prost(int32, optional, tag="7")]
13490    pub err: ::core::option::Option<i32>,
13491}
13492#[derive(Clone, PartialEq, ::prost::Message)]
13493pub struct IommuIdmapFtraceEvent {
13494    #[prost(uint64, optional, tag="1")]
13495    pub from: ::core::option::Option<u64>,
13496    #[prost(uint64, optional, tag="2")]
13497    pub to: ::core::option::Option<u64>,
13498    #[prost(int32, optional, tag="3")]
13499    pub prot: ::core::option::Option<i32>,
13500}
13501#[derive(Clone, PartialEq, ::prost::Message)]
13502pub struct PsciMemProtectFtraceEvent {
13503    #[prost(uint64, optional, tag="1")]
13504    pub count: ::core::option::Option<u64>,
13505    #[prost(uint64, optional, tag="2")]
13506    pub was: ::core::option::Option<u64>,
13507}
13508// End of protos/perfetto/trace/ftrace/hyp.proto
13509
13510// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
13511
13512#[derive(Clone, PartialEq, ::prost::Message)]
13513pub struct HypervisorHostHcallFtraceEvent {
13514    #[prost(uint32, optional, tag="1")]
13515    pub id: ::core::option::Option<u32>,
13516    #[prost(uint32, optional, tag="2")]
13517    pub invalid: ::core::option::Option<u32>,
13518}
13519#[derive(Clone, PartialEq, ::prost::Message)]
13520pub struct HypervisorHostSmcFtraceEvent {
13521    #[prost(uint64, optional, tag="1")]
13522    pub id: ::core::option::Option<u64>,
13523    #[prost(uint32, optional, tag="2")]
13524    pub forwarded: ::core::option::Option<u32>,
13525}
13526#[derive(Clone, PartialEq, ::prost::Message)]
13527pub struct HypervisorHypExitFtraceEvent {
13528}
13529#[derive(Clone, PartialEq, ::prost::Message)]
13530pub struct HypervisorIommuIdmapFtraceEvent {
13531    #[prost(uint64, optional, tag="1")]
13532    pub from: ::core::option::Option<u64>,
13533    #[prost(uint64, optional, tag="2")]
13534    pub to: ::core::option::Option<u64>,
13535    #[prost(int32, optional, tag="3")]
13536    pub prot: ::core::option::Option<i32>,
13537}
13538#[derive(Clone, PartialEq, ::prost::Message)]
13539pub struct HypervisorPsciMemProtectFtraceEvent {
13540    #[prost(uint64, optional, tag="1")]
13541    pub count: ::core::option::Option<u64>,
13542    #[prost(uint64, optional, tag="2")]
13543    pub was: ::core::option::Option<u64>,
13544}
13545#[derive(Clone, PartialEq, ::prost::Message)]
13546pub struct HypervisorHostMemAbortFtraceEvent {
13547    #[prost(uint64, optional, tag="1")]
13548    pub esr: ::core::option::Option<u64>,
13549    #[prost(uint64, optional, tag="2")]
13550    pub addr: ::core::option::Option<u64>,
13551}
13552#[derive(Clone, PartialEq, ::prost::Message)]
13553pub struct HypervisorHypEnterFtraceEvent {
13554}
13555#[derive(Clone, PartialEq, ::prost::Message)]
13556pub struct HypervisorIommuIdmapCompleteFtraceEvent {
13557    #[prost(uint32, optional, tag="1")]
13558    pub map: ::core::option::Option<u32>,
13559}
13560#[derive(Clone, PartialEq, ::prost::Message)]
13561pub struct HypervisorVcpuIllegalTrapFtraceEvent {
13562    #[prost(uint64, optional, tag="1")]
13563    pub esr: ::core::option::Option<u64>,
13564}
13565// End of protos/perfetto/trace/ftrace/hypervisor.proto
13566
13567// Begin of protos/perfetto/trace/ftrace/i2c.proto
13568
13569#[derive(Clone, PartialEq, ::prost::Message)]
13570pub struct I2cReadFtraceEvent {
13571    #[prost(int32, optional, tag="1")]
13572    pub adapter_nr: ::core::option::Option<i32>,
13573    #[prost(uint32, optional, tag="2")]
13574    pub msg_nr: ::core::option::Option<u32>,
13575    #[prost(uint32, optional, tag="3")]
13576    pub addr: ::core::option::Option<u32>,
13577    #[prost(uint32, optional, tag="4")]
13578    pub flags: ::core::option::Option<u32>,
13579    #[prost(uint32, optional, tag="5")]
13580    pub len: ::core::option::Option<u32>,
13581}
13582#[derive(Clone, PartialEq, ::prost::Message)]
13583pub struct I2cWriteFtraceEvent {
13584    #[prost(int32, optional, tag="1")]
13585    pub adapter_nr: ::core::option::Option<i32>,
13586    #[prost(uint32, optional, tag="2")]
13587    pub msg_nr: ::core::option::Option<u32>,
13588    #[prost(uint32, optional, tag="3")]
13589    pub addr: ::core::option::Option<u32>,
13590    #[prost(uint32, optional, tag="4")]
13591    pub flags: ::core::option::Option<u32>,
13592    #[prost(uint32, optional, tag="5")]
13593    pub len: ::core::option::Option<u32>,
13594    #[prost(bytes="vec", optional, tag="7")]
13595    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13596}
13597#[derive(Clone, PartialEq, ::prost::Message)]
13598pub struct I2cResultFtraceEvent {
13599    #[prost(int32, optional, tag="1")]
13600    pub adapter_nr: ::core::option::Option<i32>,
13601    #[prost(uint32, optional, tag="2")]
13602    pub nr_msgs: ::core::option::Option<u32>,
13603    #[prost(int32, optional, tag="3")]
13604    pub ret: ::core::option::Option<i32>,
13605}
13606#[derive(Clone, PartialEq, ::prost::Message)]
13607pub struct I2cReplyFtraceEvent {
13608    #[prost(int32, optional, tag="1")]
13609    pub adapter_nr: ::core::option::Option<i32>,
13610    #[prost(uint32, optional, tag="2")]
13611    pub msg_nr: ::core::option::Option<u32>,
13612    #[prost(uint32, optional, tag="3")]
13613    pub addr: ::core::option::Option<u32>,
13614    #[prost(uint32, optional, tag="4")]
13615    pub flags: ::core::option::Option<u32>,
13616    #[prost(uint32, optional, tag="5")]
13617    pub len: ::core::option::Option<u32>,
13618    #[prost(bytes="vec", optional, tag="7")]
13619    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13620}
13621#[derive(Clone, PartialEq, ::prost::Message)]
13622pub struct SmbusReadFtraceEvent {
13623    #[prost(int32, optional, tag="1")]
13624    pub adapter_nr: ::core::option::Option<i32>,
13625    #[prost(uint32, optional, tag="2")]
13626    pub flags: ::core::option::Option<u32>,
13627    #[prost(uint32, optional, tag="3")]
13628    pub addr: ::core::option::Option<u32>,
13629    #[prost(uint32, optional, tag="4")]
13630    pub command: ::core::option::Option<u32>,
13631    #[prost(uint32, optional, tag="5")]
13632    pub protocol: ::core::option::Option<u32>,
13633}
13634#[derive(Clone, PartialEq, ::prost::Message)]
13635pub struct SmbusWriteFtraceEvent {
13636    #[prost(int32, optional, tag="1")]
13637    pub adapter_nr: ::core::option::Option<i32>,
13638    #[prost(uint32, optional, tag="2")]
13639    pub addr: ::core::option::Option<u32>,
13640    #[prost(uint32, optional, tag="3")]
13641    pub flags: ::core::option::Option<u32>,
13642    #[prost(uint32, optional, tag="4")]
13643    pub command: ::core::option::Option<u32>,
13644    #[prost(uint32, optional, tag="5")]
13645    pub len: ::core::option::Option<u32>,
13646    #[prost(uint32, optional, tag="6")]
13647    pub protocol: ::core::option::Option<u32>,
13648}
13649#[derive(Clone, PartialEq, ::prost::Message)]
13650pub struct SmbusResultFtraceEvent {
13651    #[prost(int32, optional, tag="1")]
13652    pub adapter_nr: ::core::option::Option<i32>,
13653    #[prost(uint32, optional, tag="2")]
13654    pub addr: ::core::option::Option<u32>,
13655    #[prost(uint32, optional, tag="3")]
13656    pub flags: ::core::option::Option<u32>,
13657    #[prost(uint32, optional, tag="4")]
13658    pub read_write: ::core::option::Option<u32>,
13659    #[prost(uint32, optional, tag="5")]
13660    pub command: ::core::option::Option<u32>,
13661    #[prost(int32, optional, tag="6")]
13662    pub res: ::core::option::Option<i32>,
13663    #[prost(uint32, optional, tag="7")]
13664    pub protocol: ::core::option::Option<u32>,
13665}
13666#[derive(Clone, PartialEq, ::prost::Message)]
13667pub struct SmbusReplyFtraceEvent {
13668    #[prost(int32, optional, tag="1")]
13669    pub adapter_nr: ::core::option::Option<i32>,
13670    #[prost(uint32, optional, tag="2")]
13671    pub addr: ::core::option::Option<u32>,
13672    #[prost(uint32, optional, tag="3")]
13673    pub flags: ::core::option::Option<u32>,
13674    #[prost(uint32, optional, tag="4")]
13675    pub command: ::core::option::Option<u32>,
13676    #[prost(uint32, optional, tag="5")]
13677    pub len: ::core::option::Option<u32>,
13678    #[prost(uint32, optional, tag="6")]
13679    pub protocol: ::core::option::Option<u32>,
13680}
13681// End of protos/perfetto/trace/ftrace/i2c.proto
13682
13683// Begin of protos/perfetto/trace/ftrace/ion.proto
13684
13685#[derive(Clone, PartialEq, ::prost::Message)]
13686pub struct IonStatFtraceEvent {
13687    #[prost(uint32, optional, tag="1")]
13688    pub buffer_id: ::core::option::Option<u32>,
13689    #[prost(int64, optional, tag="2")]
13690    pub len: ::core::option::Option<i64>,
13691    #[prost(uint64, optional, tag="3")]
13692    pub total_allocated: ::core::option::Option<u64>,
13693}
13694// End of protos/perfetto/trace/ftrace/ion.proto
13695
13696// Begin of protos/perfetto/trace/ftrace/ipi.proto
13697
13698#[derive(Clone, PartialEq, ::prost::Message)]
13699pub struct IpiEntryFtraceEvent {
13700    #[prost(string, optional, tag="1")]
13701    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13702}
13703#[derive(Clone, PartialEq, ::prost::Message)]
13704pub struct IpiExitFtraceEvent {
13705    #[prost(string, optional, tag="1")]
13706    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13707}
13708#[derive(Clone, PartialEq, ::prost::Message)]
13709pub struct IpiRaiseFtraceEvent {
13710    #[prost(uint32, optional, tag="1")]
13711    pub target_cpus: ::core::option::Option<u32>,
13712    #[prost(string, optional, tag="2")]
13713    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13714}
13715// End of protos/perfetto/trace/ftrace/ipi.proto
13716
13717// Begin of protos/perfetto/trace/ftrace/irq.proto
13718
13719#[derive(Clone, PartialEq, ::prost::Message)]
13720pub struct SoftirqEntryFtraceEvent {
13721    #[prost(uint32, optional, tag="1")]
13722    pub vec: ::core::option::Option<u32>,
13723}
13724#[derive(Clone, PartialEq, ::prost::Message)]
13725pub struct SoftirqExitFtraceEvent {
13726    #[prost(uint32, optional, tag="1")]
13727    pub vec: ::core::option::Option<u32>,
13728}
13729#[derive(Clone, PartialEq, ::prost::Message)]
13730pub struct SoftirqRaiseFtraceEvent {
13731    #[prost(uint32, optional, tag="1")]
13732    pub vec: ::core::option::Option<u32>,
13733}
13734#[derive(Clone, PartialEq, ::prost::Message)]
13735pub struct IrqHandlerEntryFtraceEvent {
13736    #[prost(int32, optional, tag="1")]
13737    pub irq: ::core::option::Option<i32>,
13738    #[prost(string, optional, tag="2")]
13739    pub name: ::core::option::Option<::prost::alloc::string::String>,
13740    #[prost(uint32, optional, tag="3")]
13741    pub handler: ::core::option::Option<u32>,
13742}
13743#[derive(Clone, PartialEq, ::prost::Message)]
13744pub struct IrqHandlerExitFtraceEvent {
13745    #[prost(int32, optional, tag="1")]
13746    pub irq: ::core::option::Option<i32>,
13747    #[prost(int32, optional, tag="2")]
13748    pub ret: ::core::option::Option<i32>,
13749}
13750// End of protos/perfetto/trace/ftrace/irq.proto
13751
13752// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
13753
13754#[derive(Clone, PartialEq, ::prost::Message)]
13755pub struct LocalTimerEntryFtraceEvent {
13756    #[prost(int32, optional, tag="1")]
13757    pub vector: ::core::option::Option<i32>,
13758}
13759#[derive(Clone, PartialEq, ::prost::Message)]
13760pub struct LocalTimerExitFtraceEvent {
13761    #[prost(int32, optional, tag="1")]
13762    pub vector: ::core::option::Option<i32>,
13763}
13764// End of protos/perfetto/trace/ftrace/irq_vectors.proto
13765
13766// Begin of protos/perfetto/trace/ftrace/kgsl.proto
13767
13768#[derive(Clone, PartialEq, ::prost::Message)]
13769pub struct KgslGpuFrequencyFtraceEvent {
13770    #[prost(uint32, optional, tag="1")]
13771    pub gpu_freq: ::core::option::Option<u32>,
13772    #[prost(uint32, optional, tag="2")]
13773    pub gpu_id: ::core::option::Option<u32>,
13774}
13775#[derive(Clone, PartialEq, ::prost::Message)]
13776pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
13777    #[prost(uint32, optional, tag="1")]
13778    pub id: ::core::option::Option<u32>,
13779    #[prost(uint32, optional, tag="2")]
13780    pub timestamp: ::core::option::Option<u32>,
13781    #[prost(uint32, optional, tag="3")]
13782    pub queued: ::core::option::Option<u32>,
13783    #[prost(uint32, optional, tag="4")]
13784    pub flags: ::core::option::Option<u32>,
13785    #[prost(uint32, optional, tag="5")]
13786    pub prio: ::core::option::Option<u32>,
13787}
13788#[derive(Clone, PartialEq, ::prost::Message)]
13789pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13790    #[prost(uint32, optional, tag="1")]
13791    pub id: ::core::option::Option<u32>,
13792    #[prost(uint32, optional, tag="2")]
13793    pub timestamp: ::core::option::Option<u32>,
13794    #[prost(int64, optional, tag="3")]
13795    pub inflight: ::core::option::Option<i64>,
13796    #[prost(uint32, optional, tag="4")]
13797    pub flags: ::core::option::Option<u32>,
13798    #[prost(uint64, optional, tag="5")]
13799    pub ticks: ::core::option::Option<u64>,
13800    #[prost(uint64, optional, tag="6")]
13801    pub secs: ::core::option::Option<u64>,
13802    #[prost(uint64, optional, tag="7")]
13803    pub usecs: ::core::option::Option<u64>,
13804    #[prost(int32, optional, tag="8")]
13805    pub prio: ::core::option::Option<i32>,
13806    #[prost(int32, optional, tag="9")]
13807    pub rb_id: ::core::option::Option<i32>,
13808    #[prost(uint32, optional, tag="10")]
13809    pub rptr: ::core::option::Option<u32>,
13810    #[prost(uint32, optional, tag="11")]
13811    pub wptr: ::core::option::Option<u32>,
13812    #[prost(int32, optional, tag="12")]
13813    pub q_inflight: ::core::option::Option<i32>,
13814    #[prost(int32, optional, tag="13")]
13815    pub dispatch_queue: ::core::option::Option<i32>,
13816}
13817#[derive(Clone, PartialEq, ::prost::Message)]
13818pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13819    #[prost(uint32, optional, tag="1")]
13820    pub id: ::core::option::Option<u32>,
13821    #[prost(uint32, optional, tag="2")]
13822    pub timestamp: ::core::option::Option<u32>,
13823    #[prost(uint64, optional, tag="3")]
13824    pub ticks: ::core::option::Option<u64>,
13825    #[prost(int32, optional, tag="4")]
13826    pub prio: ::core::option::Option<i32>,
13827}
13828#[derive(Clone, PartialEq, ::prost::Message)]
13829pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13830    #[prost(uint32, optional, tag="1")]
13831    pub id: ::core::option::Option<u32>,
13832    #[prost(uint32, optional, tag="2")]
13833    pub timestamp: ::core::option::Option<u32>,
13834    #[prost(int64, optional, tag="3")]
13835    pub inflight: ::core::option::Option<i64>,
13836    #[prost(uint32, optional, tag="4")]
13837    pub recovery: ::core::option::Option<u32>,
13838    #[prost(uint32, optional, tag="5")]
13839    pub flags: ::core::option::Option<u32>,
13840    #[prost(uint64, optional, tag="6")]
13841    pub start: ::core::option::Option<u64>,
13842    #[prost(uint64, optional, tag="7")]
13843    pub retire: ::core::option::Option<u64>,
13844    #[prost(int32, optional, tag="8")]
13845    pub prio: ::core::option::Option<i32>,
13846    #[prost(int32, optional, tag="9")]
13847    pub rb_id: ::core::option::Option<i32>,
13848    #[prost(uint32, optional, tag="10")]
13849    pub rptr: ::core::option::Option<u32>,
13850    #[prost(uint32, optional, tag="11")]
13851    pub wptr: ::core::option::Option<u32>,
13852    #[prost(int32, optional, tag="12")]
13853    pub q_inflight: ::core::option::Option<i32>,
13854    #[prost(uint64, optional, tag="13")]
13855    pub fault_recovery: ::core::option::Option<u64>,
13856    #[prost(uint32, optional, tag="14")]
13857    pub dispatch_queue: ::core::option::Option<u32>,
13858    #[prost(uint64, optional, tag="15")]
13859    pub submitted_to_rb: ::core::option::Option<u64>,
13860    #[prost(uint64, optional, tag="16")]
13861    pub retired_on_gmu: ::core::option::Option<u64>,
13862    #[prost(uint64, optional, tag="17")]
13863    pub active: ::core::option::Option<u64>,
13864}
13865// End of protos/perfetto/trace/ftrace/kgsl.proto
13866
13867// Begin of protos/perfetto/trace/ftrace/kmem.proto
13868
13869#[derive(Clone, PartialEq, ::prost::Message)]
13870pub struct AllocPagesIommuEndFtraceEvent {
13871    #[prost(uint32, optional, tag="1")]
13872    pub gfp_flags: ::core::option::Option<u32>,
13873    #[prost(uint32, optional, tag="2")]
13874    pub order: ::core::option::Option<u32>,
13875}
13876#[derive(Clone, PartialEq, ::prost::Message)]
13877pub struct AllocPagesIommuFailFtraceEvent {
13878    #[prost(uint32, optional, tag="1")]
13879    pub gfp_flags: ::core::option::Option<u32>,
13880    #[prost(uint32, optional, tag="2")]
13881    pub order: ::core::option::Option<u32>,
13882}
13883#[derive(Clone, PartialEq, ::prost::Message)]
13884pub struct AllocPagesIommuStartFtraceEvent {
13885    #[prost(uint32, optional, tag="1")]
13886    pub gfp_flags: ::core::option::Option<u32>,
13887    #[prost(uint32, optional, tag="2")]
13888    pub order: ::core::option::Option<u32>,
13889}
13890#[derive(Clone, PartialEq, ::prost::Message)]
13891pub struct AllocPagesSysEndFtraceEvent {
13892    #[prost(uint32, optional, tag="1")]
13893    pub gfp_flags: ::core::option::Option<u32>,
13894    #[prost(uint32, optional, tag="2")]
13895    pub order: ::core::option::Option<u32>,
13896}
13897#[derive(Clone, PartialEq, ::prost::Message)]
13898pub struct AllocPagesSysFailFtraceEvent {
13899    #[prost(uint32, optional, tag="1")]
13900    pub gfp_flags: ::core::option::Option<u32>,
13901    #[prost(uint32, optional, tag="2")]
13902    pub order: ::core::option::Option<u32>,
13903}
13904#[derive(Clone, PartialEq, ::prost::Message)]
13905pub struct AllocPagesSysStartFtraceEvent {
13906    #[prost(uint32, optional, tag="1")]
13907    pub gfp_flags: ::core::option::Option<u32>,
13908    #[prost(uint32, optional, tag="2")]
13909    pub order: ::core::option::Option<u32>,
13910}
13911#[derive(Clone, PartialEq, ::prost::Message)]
13912pub struct DmaAllocContiguousRetryFtraceEvent {
13913    #[prost(int32, optional, tag="1")]
13914    pub tries: ::core::option::Option<i32>,
13915}
13916#[derive(Clone, PartialEq, ::prost::Message)]
13917pub struct IommuMapRangeFtraceEvent {
13918    #[prost(uint64, optional, tag="1")]
13919    pub chunk_size: ::core::option::Option<u64>,
13920    #[prost(uint64, optional, tag="2")]
13921    pub len: ::core::option::Option<u64>,
13922    #[prost(uint64, optional, tag="3")]
13923    pub pa: ::core::option::Option<u64>,
13924    #[prost(uint64, optional, tag="4")]
13925    pub va: ::core::option::Option<u64>,
13926}
13927#[derive(Clone, PartialEq, ::prost::Message)]
13928pub struct IommuSecPtblMapRangeEndFtraceEvent {
13929    #[prost(uint64, optional, tag="1")]
13930    pub len: ::core::option::Option<u64>,
13931    #[prost(int32, optional, tag="2")]
13932    pub num: ::core::option::Option<i32>,
13933    #[prost(uint32, optional, tag="3")]
13934    pub pa: ::core::option::Option<u32>,
13935    #[prost(int32, optional, tag="4")]
13936    pub sec_id: ::core::option::Option<i32>,
13937    #[prost(uint64, optional, tag="5")]
13938    pub va: ::core::option::Option<u64>,
13939}
13940#[derive(Clone, PartialEq, ::prost::Message)]
13941pub struct IommuSecPtblMapRangeStartFtraceEvent {
13942    #[prost(uint64, optional, tag="1")]
13943    pub len: ::core::option::Option<u64>,
13944    #[prost(int32, optional, tag="2")]
13945    pub num: ::core::option::Option<i32>,
13946    #[prost(uint32, optional, tag="3")]
13947    pub pa: ::core::option::Option<u32>,
13948    #[prost(int32, optional, tag="4")]
13949    pub sec_id: ::core::option::Option<i32>,
13950    #[prost(uint64, optional, tag="5")]
13951    pub va: ::core::option::Option<u64>,
13952}
13953#[derive(Clone, PartialEq, ::prost::Message)]
13954pub struct IonAllocBufferEndFtraceEvent {
13955    #[prost(string, optional, tag="1")]
13956    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13957    #[prost(uint32, optional, tag="2")]
13958    pub flags: ::core::option::Option<u32>,
13959    #[prost(string, optional, tag="3")]
13960    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13961    #[prost(uint64, optional, tag="4")]
13962    pub len: ::core::option::Option<u64>,
13963    #[prost(uint32, optional, tag="5")]
13964    pub mask: ::core::option::Option<u32>,
13965}
13966#[derive(Clone, PartialEq, ::prost::Message)]
13967pub struct IonAllocBufferFailFtraceEvent {
13968    #[prost(string, optional, tag="1")]
13969    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13970    #[prost(int64, optional, tag="2")]
13971    pub error: ::core::option::Option<i64>,
13972    #[prost(uint32, optional, tag="3")]
13973    pub flags: ::core::option::Option<u32>,
13974    #[prost(string, optional, tag="4")]
13975    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13976    #[prost(uint64, optional, tag="5")]
13977    pub len: ::core::option::Option<u64>,
13978    #[prost(uint32, optional, tag="6")]
13979    pub mask: ::core::option::Option<u32>,
13980}
13981#[derive(Clone, PartialEq, ::prost::Message)]
13982pub struct IonAllocBufferFallbackFtraceEvent {
13983    #[prost(string, optional, tag="1")]
13984    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13985    #[prost(int64, optional, tag="2")]
13986    pub error: ::core::option::Option<i64>,
13987    #[prost(uint32, optional, tag="3")]
13988    pub flags: ::core::option::Option<u32>,
13989    #[prost(string, optional, tag="4")]
13990    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13991    #[prost(uint64, optional, tag="5")]
13992    pub len: ::core::option::Option<u64>,
13993    #[prost(uint32, optional, tag="6")]
13994    pub mask: ::core::option::Option<u32>,
13995}
13996#[derive(Clone, PartialEq, ::prost::Message)]
13997pub struct IonAllocBufferStartFtraceEvent {
13998    #[prost(string, optional, tag="1")]
13999    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14000    #[prost(uint32, optional, tag="2")]
14001    pub flags: ::core::option::Option<u32>,
14002    #[prost(string, optional, tag="3")]
14003    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14004    #[prost(uint64, optional, tag="4")]
14005    pub len: ::core::option::Option<u64>,
14006    #[prost(uint32, optional, tag="5")]
14007    pub mask: ::core::option::Option<u32>,
14008}
14009#[derive(Clone, PartialEq, ::prost::Message)]
14010pub struct IonCpAllocRetryFtraceEvent {
14011    #[prost(int32, optional, tag="1")]
14012    pub tries: ::core::option::Option<i32>,
14013}
14014#[derive(Clone, PartialEq, ::prost::Message)]
14015pub struct IonCpSecureBufferEndFtraceEvent {
14016    #[prost(uint64, optional, tag="1")]
14017    pub align: ::core::option::Option<u64>,
14018    #[prost(uint64, optional, tag="2")]
14019    pub flags: ::core::option::Option<u64>,
14020    #[prost(string, optional, tag="3")]
14021    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14022    #[prost(uint64, optional, tag="4")]
14023    pub len: ::core::option::Option<u64>,
14024}
14025#[derive(Clone, PartialEq, ::prost::Message)]
14026pub struct IonCpSecureBufferStartFtraceEvent {
14027    #[prost(uint64, optional, tag="1")]
14028    pub align: ::core::option::Option<u64>,
14029    #[prost(uint64, optional, tag="2")]
14030    pub flags: ::core::option::Option<u64>,
14031    #[prost(string, optional, tag="3")]
14032    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14033    #[prost(uint64, optional, tag="4")]
14034    pub len: ::core::option::Option<u64>,
14035}
14036#[derive(Clone, PartialEq, ::prost::Message)]
14037pub struct IonPrefetchingFtraceEvent {
14038    #[prost(uint64, optional, tag="1")]
14039    pub len: ::core::option::Option<u64>,
14040}
14041#[derive(Clone, PartialEq, ::prost::Message)]
14042pub struct IonSecureCmaAddToPoolEndFtraceEvent {
14043    #[prost(uint32, optional, tag="1")]
14044    pub is_prefetch: ::core::option::Option<u32>,
14045    #[prost(uint64, optional, tag="2")]
14046    pub len: ::core::option::Option<u64>,
14047    #[prost(int32, optional, tag="3")]
14048    pub pool_total: ::core::option::Option<i32>,
14049}
14050#[derive(Clone, PartialEq, ::prost::Message)]
14051pub struct IonSecureCmaAddToPoolStartFtraceEvent {
14052    #[prost(uint32, optional, tag="1")]
14053    pub is_prefetch: ::core::option::Option<u32>,
14054    #[prost(uint64, optional, tag="2")]
14055    pub len: ::core::option::Option<u64>,
14056    #[prost(int32, optional, tag="3")]
14057    pub pool_total: ::core::option::Option<i32>,
14058}
14059#[derive(Clone, PartialEq, ::prost::Message)]
14060pub struct IonSecureCmaAllocateEndFtraceEvent {
14061    #[prost(uint64, optional, tag="1")]
14062    pub align: ::core::option::Option<u64>,
14063    #[prost(uint64, optional, tag="2")]
14064    pub flags: ::core::option::Option<u64>,
14065    #[prost(string, optional, tag="3")]
14066    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14067    #[prost(uint64, optional, tag="4")]
14068    pub len: ::core::option::Option<u64>,
14069}
14070#[derive(Clone, PartialEq, ::prost::Message)]
14071pub struct IonSecureCmaAllocateStartFtraceEvent {
14072    #[prost(uint64, optional, tag="1")]
14073    pub align: ::core::option::Option<u64>,
14074    #[prost(uint64, optional, tag="2")]
14075    pub flags: ::core::option::Option<u64>,
14076    #[prost(string, optional, tag="3")]
14077    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14078    #[prost(uint64, optional, tag="4")]
14079    pub len: ::core::option::Option<u64>,
14080}
14081#[derive(Clone, PartialEq, ::prost::Message)]
14082pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
14083    #[prost(uint64, optional, tag="1")]
14084    pub drained_size: ::core::option::Option<u64>,
14085    #[prost(uint64, optional, tag="2")]
14086    pub skipped_size: ::core::option::Option<u64>,
14087}
14088#[derive(Clone, PartialEq, ::prost::Message)]
14089pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
14090    #[prost(uint64, optional, tag="1")]
14091    pub drained_size: ::core::option::Option<u64>,
14092    #[prost(uint64, optional, tag="2")]
14093    pub skipped_size: ::core::option::Option<u64>,
14094}
14095#[derive(Clone, PartialEq, ::prost::Message)]
14096pub struct KfreeFtraceEvent {
14097    #[prost(uint64, optional, tag="1")]
14098    pub call_site: ::core::option::Option<u64>,
14099    #[prost(uint64, optional, tag="2")]
14100    pub ptr: ::core::option::Option<u64>,
14101}
14102#[derive(Clone, PartialEq, ::prost::Message)]
14103pub struct KmallocFtraceEvent {
14104    #[prost(uint64, optional, tag="1")]
14105    pub bytes_alloc: ::core::option::Option<u64>,
14106    #[prost(uint64, optional, tag="2")]
14107    pub bytes_req: ::core::option::Option<u64>,
14108    #[prost(uint64, optional, tag="3")]
14109    pub call_site: ::core::option::Option<u64>,
14110    #[prost(uint32, optional, tag="4")]
14111    pub gfp_flags: ::core::option::Option<u32>,
14112    #[prost(uint64, optional, tag="5")]
14113    pub ptr: ::core::option::Option<u64>,
14114}
14115#[derive(Clone, PartialEq, ::prost::Message)]
14116pub struct KmallocNodeFtraceEvent {
14117    #[prost(uint64, optional, tag="1")]
14118    pub bytes_alloc: ::core::option::Option<u64>,
14119    #[prost(uint64, optional, tag="2")]
14120    pub bytes_req: ::core::option::Option<u64>,
14121    #[prost(uint64, optional, tag="3")]
14122    pub call_site: ::core::option::Option<u64>,
14123    #[prost(uint32, optional, tag="4")]
14124    pub gfp_flags: ::core::option::Option<u32>,
14125    #[prost(int32, optional, tag="5")]
14126    pub node: ::core::option::Option<i32>,
14127    #[prost(uint64, optional, tag="6")]
14128    pub ptr: ::core::option::Option<u64>,
14129}
14130#[derive(Clone, PartialEq, ::prost::Message)]
14131pub struct KmemCacheAllocFtraceEvent {
14132    #[prost(uint64, optional, tag="1")]
14133    pub bytes_alloc: ::core::option::Option<u64>,
14134    #[prost(uint64, optional, tag="2")]
14135    pub bytes_req: ::core::option::Option<u64>,
14136    #[prost(uint64, optional, tag="3")]
14137    pub call_site: ::core::option::Option<u64>,
14138    #[prost(uint32, optional, tag="4")]
14139    pub gfp_flags: ::core::option::Option<u32>,
14140    #[prost(uint64, optional, tag="5")]
14141    pub ptr: ::core::option::Option<u64>,
14142}
14143#[derive(Clone, PartialEq, ::prost::Message)]
14144pub struct KmemCacheAllocNodeFtraceEvent {
14145    #[prost(uint64, optional, tag="1")]
14146    pub bytes_alloc: ::core::option::Option<u64>,
14147    #[prost(uint64, optional, tag="2")]
14148    pub bytes_req: ::core::option::Option<u64>,
14149    #[prost(uint64, optional, tag="3")]
14150    pub call_site: ::core::option::Option<u64>,
14151    #[prost(uint32, optional, tag="4")]
14152    pub gfp_flags: ::core::option::Option<u32>,
14153    #[prost(int32, optional, tag="5")]
14154    pub node: ::core::option::Option<i32>,
14155    #[prost(uint64, optional, tag="6")]
14156    pub ptr: ::core::option::Option<u64>,
14157}
14158#[derive(Clone, PartialEq, ::prost::Message)]
14159pub struct KmemCacheFreeFtraceEvent {
14160    #[prost(uint64, optional, tag="1")]
14161    pub call_site: ::core::option::Option<u64>,
14162    #[prost(uint64, optional, tag="2")]
14163    pub ptr: ::core::option::Option<u64>,
14164}
14165#[derive(Clone, PartialEq, ::prost::Message)]
14166pub struct MigratePagesEndFtraceEvent {
14167    #[prost(int32, optional, tag="1")]
14168    pub mode: ::core::option::Option<i32>,
14169}
14170#[derive(Clone, PartialEq, ::prost::Message)]
14171pub struct MigratePagesStartFtraceEvent {
14172    #[prost(int32, optional, tag="1")]
14173    pub mode: ::core::option::Option<i32>,
14174}
14175#[derive(Clone, PartialEq, ::prost::Message)]
14176pub struct MigrateRetryFtraceEvent {
14177    #[prost(int32, optional, tag="1")]
14178    pub tries: ::core::option::Option<i32>,
14179}
14180#[derive(Clone, PartialEq, ::prost::Message)]
14181pub struct MmPageAllocFtraceEvent {
14182    #[prost(uint32, optional, tag="1")]
14183    pub gfp_flags: ::core::option::Option<u32>,
14184    #[prost(int32, optional, tag="2")]
14185    pub migratetype: ::core::option::Option<i32>,
14186    #[prost(uint32, optional, tag="3")]
14187    pub order: ::core::option::Option<u32>,
14188    #[prost(uint64, optional, tag="4")]
14189    pub page: ::core::option::Option<u64>,
14190    #[prost(uint64, optional, tag="5")]
14191    pub pfn: ::core::option::Option<u64>,
14192}
14193#[derive(Clone, PartialEq, ::prost::Message)]
14194pub struct MmPageAllocExtfragFtraceEvent {
14195    #[prost(int32, optional, tag="1")]
14196    pub alloc_migratetype: ::core::option::Option<i32>,
14197    #[prost(int32, optional, tag="2")]
14198    pub alloc_order: ::core::option::Option<i32>,
14199    #[prost(int32, optional, tag="3")]
14200    pub fallback_migratetype: ::core::option::Option<i32>,
14201    #[prost(int32, optional, tag="4")]
14202    pub fallback_order: ::core::option::Option<i32>,
14203    #[prost(uint64, optional, tag="5")]
14204    pub page: ::core::option::Option<u64>,
14205    #[prost(int32, optional, tag="6")]
14206    pub change_ownership: ::core::option::Option<i32>,
14207    #[prost(uint64, optional, tag="7")]
14208    pub pfn: ::core::option::Option<u64>,
14209}
14210#[derive(Clone, PartialEq, ::prost::Message)]
14211pub struct MmPageAllocZoneLockedFtraceEvent {
14212    #[prost(int32, optional, tag="1")]
14213    pub migratetype: ::core::option::Option<i32>,
14214    #[prost(uint32, optional, tag="2")]
14215    pub order: ::core::option::Option<u32>,
14216    #[prost(uint64, optional, tag="3")]
14217    pub page: ::core::option::Option<u64>,
14218    #[prost(uint64, optional, tag="4")]
14219    pub pfn: ::core::option::Option<u64>,
14220}
14221#[derive(Clone, PartialEq, ::prost::Message)]
14222pub struct MmPageFreeFtraceEvent {
14223    #[prost(uint32, optional, tag="1")]
14224    pub order: ::core::option::Option<u32>,
14225    #[prost(uint64, optional, tag="2")]
14226    pub page: ::core::option::Option<u64>,
14227    #[prost(uint64, optional, tag="3")]
14228    pub pfn: ::core::option::Option<u64>,
14229}
14230#[derive(Clone, PartialEq, ::prost::Message)]
14231pub struct MmPageFreeBatchedFtraceEvent {
14232    #[prost(int32, optional, tag="1")]
14233    pub cold: ::core::option::Option<i32>,
14234    #[prost(uint64, optional, tag="2")]
14235    pub page: ::core::option::Option<u64>,
14236    #[prost(uint64, optional, tag="3")]
14237    pub pfn: ::core::option::Option<u64>,
14238}
14239#[derive(Clone, PartialEq, ::prost::Message)]
14240pub struct MmPagePcpuDrainFtraceEvent {
14241    #[prost(int32, optional, tag="1")]
14242    pub migratetype: ::core::option::Option<i32>,
14243    #[prost(uint32, optional, tag="2")]
14244    pub order: ::core::option::Option<u32>,
14245    #[prost(uint64, optional, tag="3")]
14246    pub page: ::core::option::Option<u64>,
14247    #[prost(uint64, optional, tag="4")]
14248    pub pfn: ::core::option::Option<u64>,
14249}
14250#[derive(Clone, PartialEq, ::prost::Message)]
14251pub struct RssStatFtraceEvent {
14252    #[prost(int32, optional, tag="1")]
14253    pub member: ::core::option::Option<i32>,
14254    #[prost(int64, optional, tag="2")]
14255    pub size: ::core::option::Option<i64>,
14256    #[prost(uint32, optional, tag="3")]
14257    pub curr: ::core::option::Option<u32>,
14258    #[prost(uint32, optional, tag="4")]
14259    pub mm_id: ::core::option::Option<u32>,
14260}
14261#[derive(Clone, PartialEq, ::prost::Message)]
14262pub struct IonHeapShrinkFtraceEvent {
14263    #[prost(string, optional, tag="1")]
14264    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14265    #[prost(uint64, optional, tag="2")]
14266    pub len: ::core::option::Option<u64>,
14267    #[prost(int64, optional, tag="3")]
14268    pub total_allocated: ::core::option::Option<i64>,
14269}
14270#[derive(Clone, PartialEq, ::prost::Message)]
14271pub struct IonHeapGrowFtraceEvent {
14272    #[prost(string, optional, tag="1")]
14273    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14274    #[prost(uint64, optional, tag="2")]
14275    pub len: ::core::option::Option<u64>,
14276    #[prost(int64, optional, tag="3")]
14277    pub total_allocated: ::core::option::Option<i64>,
14278}
14279#[derive(Clone, PartialEq, ::prost::Message)]
14280pub struct IonBufferCreateFtraceEvent {
14281    #[prost(uint64, optional, tag="1")]
14282    pub addr: ::core::option::Option<u64>,
14283    #[prost(uint64, optional, tag="2")]
14284    pub len: ::core::option::Option<u64>,
14285}
14286#[derive(Clone, PartialEq, ::prost::Message)]
14287pub struct IonBufferDestroyFtraceEvent {
14288    #[prost(uint64, optional, tag="1")]
14289    pub addr: ::core::option::Option<u64>,
14290    #[prost(uint64, optional, tag="2")]
14291    pub len: ::core::option::Option<u64>,
14292}
14293#[derive(Clone, PartialEq, ::prost::Message)]
14294pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
14295    #[prost(uint64, optional, tag="1")]
14296    pub start: ::core::option::Option<u64>,
14297    #[prost(uint64, optional, tag="2")]
14298    pub end: ::core::option::Option<u64>,
14299    #[prost(uint64, optional, tag="3")]
14300    pub nr_migrated: ::core::option::Option<u64>,
14301    #[prost(uint64, optional, tag="4")]
14302    pub nr_reclaimed: ::core::option::Option<u64>,
14303    #[prost(uint64, optional, tag="5")]
14304    pub nr_mapped: ::core::option::Option<u64>,
14305    #[prost(int32, optional, tag="6")]
14306    pub migratetype: ::core::option::Option<i32>,
14307}
14308#[derive(Clone, PartialEq, ::prost::Message)]
14309pub struct DmabufRssStatFtraceEvent {
14310    #[prost(uint64, optional, tag="1")]
14311    pub rss: ::core::option::Option<u64>,
14312    #[prost(int64, optional, tag="2")]
14313    pub rss_delta: ::core::option::Option<i64>,
14314    #[prost(uint64, optional, tag="3")]
14315    pub i_ino: ::core::option::Option<u64>,
14316}
14317// End of protos/perfetto/trace/ftrace/kmem.proto
14318
14319// Begin of protos/perfetto/trace/ftrace/kvm.proto
14320
14321#[derive(Clone, PartialEq, ::prost::Message)]
14322pub struct KvmAccessFaultFtraceEvent {
14323    #[prost(uint64, optional, tag="1")]
14324    pub ipa: ::core::option::Option<u64>,
14325}
14326#[derive(Clone, PartialEq, ::prost::Message)]
14327pub struct KvmAckIrqFtraceEvent {
14328    #[prost(uint32, optional, tag="1")]
14329    pub irqchip: ::core::option::Option<u32>,
14330    #[prost(uint32, optional, tag="2")]
14331    pub pin: ::core::option::Option<u32>,
14332}
14333#[derive(Clone, PartialEq, ::prost::Message)]
14334pub struct KvmAgeHvaFtraceEvent {
14335    #[prost(uint64, optional, tag="1")]
14336    pub end: ::core::option::Option<u64>,
14337    #[prost(uint64, optional, tag="2")]
14338    pub start: ::core::option::Option<u64>,
14339}
14340#[derive(Clone, PartialEq, ::prost::Message)]
14341pub struct KvmAgePageFtraceEvent {
14342    #[prost(uint64, optional, tag="1")]
14343    pub gfn: ::core::option::Option<u64>,
14344    #[prost(uint64, optional, tag="2")]
14345    pub hva: ::core::option::Option<u64>,
14346    #[prost(uint32, optional, tag="3")]
14347    pub level: ::core::option::Option<u32>,
14348    #[prost(uint32, optional, tag="4")]
14349    pub referenced: ::core::option::Option<u32>,
14350}
14351#[derive(Clone, PartialEq, ::prost::Message)]
14352pub struct KvmArmClearDebugFtraceEvent {
14353    #[prost(uint32, optional, tag="1")]
14354    pub guest_debug: ::core::option::Option<u32>,
14355}
14356#[derive(Clone, PartialEq, ::prost::Message)]
14357pub struct KvmArmSetDreg32FtraceEvent {
14358    #[prost(string, optional, tag="1")]
14359    pub name: ::core::option::Option<::prost::alloc::string::String>,
14360    #[prost(uint32, optional, tag="2")]
14361    pub value: ::core::option::Option<u32>,
14362}
14363#[derive(Clone, PartialEq, ::prost::Message)]
14364pub struct KvmArmSetRegsetFtraceEvent {
14365    #[prost(int32, optional, tag="1")]
14366    pub len: ::core::option::Option<i32>,
14367    #[prost(string, optional, tag="2")]
14368    pub name: ::core::option::Option<::prost::alloc::string::String>,
14369}
14370#[derive(Clone, PartialEq, ::prost::Message)]
14371pub struct KvmArmSetupDebugFtraceEvent {
14372    #[prost(uint32, optional, tag="1")]
14373    pub guest_debug: ::core::option::Option<u32>,
14374    #[prost(uint64, optional, tag="2")]
14375    pub vcpu: ::core::option::Option<u64>,
14376}
14377#[derive(Clone, PartialEq, ::prost::Message)]
14378pub struct KvmEntryFtraceEvent {
14379    #[prost(uint64, optional, tag="1")]
14380    pub vcpu_pc: ::core::option::Option<u64>,
14381}
14382#[derive(Clone, PartialEq, ::prost::Message)]
14383pub struct KvmExitFtraceEvent {
14384    #[prost(uint32, optional, tag="1")]
14385    pub esr_ec: ::core::option::Option<u32>,
14386    #[prost(int32, optional, tag="2")]
14387    pub ret: ::core::option::Option<i32>,
14388    #[prost(uint64, optional, tag="3")]
14389    pub vcpu_pc: ::core::option::Option<u64>,
14390}
14391#[derive(Clone, PartialEq, ::prost::Message)]
14392pub struct KvmFpuFtraceEvent {
14393    #[prost(uint32, optional, tag="1")]
14394    pub load: ::core::option::Option<u32>,
14395}
14396#[derive(Clone, PartialEq, ::prost::Message)]
14397pub struct KvmGetTimerMapFtraceEvent {
14398    #[prost(int32, optional, tag="1")]
14399    pub direct_ptimer: ::core::option::Option<i32>,
14400    #[prost(int32, optional, tag="2")]
14401    pub direct_vtimer: ::core::option::Option<i32>,
14402    #[prost(int32, optional, tag="3")]
14403    pub emul_ptimer: ::core::option::Option<i32>,
14404    #[prost(uint64, optional, tag="4")]
14405    pub vcpu_id: ::core::option::Option<u64>,
14406}
14407#[derive(Clone, PartialEq, ::prost::Message)]
14408pub struct KvmGuestFaultFtraceEvent {
14409    #[prost(uint64, optional, tag="1")]
14410    pub hsr: ::core::option::Option<u64>,
14411    #[prost(uint64, optional, tag="2")]
14412    pub hxfar: ::core::option::Option<u64>,
14413    #[prost(uint64, optional, tag="3")]
14414    pub ipa: ::core::option::Option<u64>,
14415    #[prost(uint64, optional, tag="4")]
14416    pub vcpu_pc: ::core::option::Option<u64>,
14417}
14418#[derive(Clone, PartialEq, ::prost::Message)]
14419pub struct KvmHandleSysRegFtraceEvent {
14420    #[prost(uint64, optional, tag="1")]
14421    pub hsr: ::core::option::Option<u64>,
14422}
14423#[derive(Clone, PartialEq, ::prost::Message)]
14424pub struct KvmHvcArm64FtraceEvent {
14425    #[prost(uint64, optional, tag="1")]
14426    pub imm: ::core::option::Option<u64>,
14427    #[prost(uint64, optional, tag="2")]
14428    pub r0: ::core::option::Option<u64>,
14429    #[prost(uint64, optional, tag="3")]
14430    pub vcpu_pc: ::core::option::Option<u64>,
14431}
14432#[derive(Clone, PartialEq, ::prost::Message)]
14433pub struct KvmIrqLineFtraceEvent {
14434    #[prost(int32, optional, tag="1")]
14435    pub irq_num: ::core::option::Option<i32>,
14436    #[prost(int32, optional, tag="2")]
14437    pub level: ::core::option::Option<i32>,
14438    #[prost(uint32, optional, tag="3")]
14439    pub r#type: ::core::option::Option<u32>,
14440    #[prost(int32, optional, tag="4")]
14441    pub vcpu_idx: ::core::option::Option<i32>,
14442}
14443#[derive(Clone, PartialEq, ::prost::Message)]
14444pub struct KvmMmioFtraceEvent {
14445    #[prost(uint64, optional, tag="1")]
14446    pub gpa: ::core::option::Option<u64>,
14447    #[prost(uint32, optional, tag="2")]
14448    pub len: ::core::option::Option<u32>,
14449    #[prost(uint32, optional, tag="3")]
14450    pub r#type: ::core::option::Option<u32>,
14451    #[prost(uint64, optional, tag="4")]
14452    pub val: ::core::option::Option<u64>,
14453}
14454#[derive(Clone, PartialEq, ::prost::Message)]
14455pub struct KvmMmioEmulateFtraceEvent {
14456    #[prost(uint64, optional, tag="1")]
14457    pub cpsr: ::core::option::Option<u64>,
14458    #[prost(uint64, optional, tag="2")]
14459    pub instr: ::core::option::Option<u64>,
14460    #[prost(uint64, optional, tag="3")]
14461    pub vcpu_pc: ::core::option::Option<u64>,
14462}
14463#[derive(Clone, PartialEq, ::prost::Message)]
14464pub struct KvmSetGuestDebugFtraceEvent {
14465    #[prost(uint32, optional, tag="1")]
14466    pub guest_debug: ::core::option::Option<u32>,
14467    #[prost(uint64, optional, tag="2")]
14468    pub vcpu: ::core::option::Option<u64>,
14469}
14470#[derive(Clone, PartialEq, ::prost::Message)]
14471pub struct KvmSetIrqFtraceEvent {
14472    #[prost(uint32, optional, tag="1")]
14473    pub gsi: ::core::option::Option<u32>,
14474    #[prost(int32, optional, tag="2")]
14475    pub irq_source_id: ::core::option::Option<i32>,
14476    #[prost(int32, optional, tag="3")]
14477    pub level: ::core::option::Option<i32>,
14478}
14479#[derive(Clone, PartialEq, ::prost::Message)]
14480pub struct KvmSetSpteHvaFtraceEvent {
14481    #[prost(uint64, optional, tag="1")]
14482    pub hva: ::core::option::Option<u64>,
14483}
14484#[derive(Clone, PartialEq, ::prost::Message)]
14485pub struct KvmSetWayFlushFtraceEvent {
14486    #[prost(uint32, optional, tag="1")]
14487    pub cache: ::core::option::Option<u32>,
14488    #[prost(uint64, optional, tag="2")]
14489    pub vcpu_pc: ::core::option::Option<u64>,
14490}
14491#[derive(Clone, PartialEq, ::prost::Message)]
14492pub struct KvmSysAccessFtraceEvent {
14493    #[prost(uint32, optional, tag="1")]
14494    pub c_rm: ::core::option::Option<u32>,
14495    #[prost(uint32, optional, tag="2")]
14496    pub c_rn: ::core::option::Option<u32>,
14497    #[prost(uint32, optional, tag="3")]
14498    pub op0: ::core::option::Option<u32>,
14499    #[prost(uint32, optional, tag="4")]
14500    pub op1: ::core::option::Option<u32>,
14501    #[prost(uint32, optional, tag="5")]
14502    pub op2: ::core::option::Option<u32>,
14503    #[prost(uint32, optional, tag="6")]
14504    pub is_write: ::core::option::Option<u32>,
14505    #[prost(string, optional, tag="7")]
14506    pub name: ::core::option::Option<::prost::alloc::string::String>,
14507    #[prost(uint64, optional, tag="8")]
14508    pub vcpu_pc: ::core::option::Option<u64>,
14509}
14510#[derive(Clone, PartialEq, ::prost::Message)]
14511pub struct KvmTestAgeHvaFtraceEvent {
14512    #[prost(uint64, optional, tag="1")]
14513    pub hva: ::core::option::Option<u64>,
14514}
14515#[derive(Clone, PartialEq, ::prost::Message)]
14516pub struct KvmTimerEmulateFtraceEvent {
14517    #[prost(uint32, optional, tag="1")]
14518    pub should_fire: ::core::option::Option<u32>,
14519    #[prost(int32, optional, tag="2")]
14520    pub timer_idx: ::core::option::Option<i32>,
14521}
14522#[derive(Clone, PartialEq, ::prost::Message)]
14523pub struct KvmTimerHrtimerExpireFtraceEvent {
14524    #[prost(int32, optional, tag="1")]
14525    pub timer_idx: ::core::option::Option<i32>,
14526}
14527#[derive(Clone, PartialEq, ::prost::Message)]
14528pub struct KvmTimerRestoreStateFtraceEvent {
14529    #[prost(uint64, optional, tag="1")]
14530    pub ctl: ::core::option::Option<u64>,
14531    #[prost(uint64, optional, tag="2")]
14532    pub cval: ::core::option::Option<u64>,
14533    #[prost(int32, optional, tag="3")]
14534    pub timer_idx: ::core::option::Option<i32>,
14535}
14536#[derive(Clone, PartialEq, ::prost::Message)]
14537pub struct KvmTimerSaveStateFtraceEvent {
14538    #[prost(uint64, optional, tag="1")]
14539    pub ctl: ::core::option::Option<u64>,
14540    #[prost(uint64, optional, tag="2")]
14541    pub cval: ::core::option::Option<u64>,
14542    #[prost(int32, optional, tag="3")]
14543    pub timer_idx: ::core::option::Option<i32>,
14544}
14545#[derive(Clone, PartialEq, ::prost::Message)]
14546pub struct KvmTimerUpdateIrqFtraceEvent {
14547    #[prost(uint32, optional, tag="1")]
14548    pub irq: ::core::option::Option<u32>,
14549    #[prost(int32, optional, tag="2")]
14550    pub level: ::core::option::Option<i32>,
14551    #[prost(uint64, optional, tag="3")]
14552    pub vcpu_id: ::core::option::Option<u64>,
14553}
14554#[derive(Clone, PartialEq, ::prost::Message)]
14555pub struct KvmToggleCacheFtraceEvent {
14556    #[prost(uint32, optional, tag="1")]
14557    pub now: ::core::option::Option<u32>,
14558    #[prost(uint64, optional, tag="2")]
14559    pub vcpu_pc: ::core::option::Option<u64>,
14560    #[prost(uint32, optional, tag="3")]
14561    pub was: ::core::option::Option<u32>,
14562}
14563#[derive(Clone, PartialEq, ::prost::Message)]
14564pub struct KvmUnmapHvaRangeFtraceEvent {
14565    #[prost(uint64, optional, tag="1")]
14566    pub end: ::core::option::Option<u64>,
14567    #[prost(uint64, optional, tag="2")]
14568    pub start: ::core::option::Option<u64>,
14569}
14570#[derive(Clone, PartialEq, ::prost::Message)]
14571pub struct KvmUserspaceExitFtraceEvent {
14572    #[prost(uint32, optional, tag="1")]
14573    pub reason: ::core::option::Option<u32>,
14574}
14575#[derive(Clone, PartialEq, ::prost::Message)]
14576pub struct KvmVcpuWakeupFtraceEvent {
14577    #[prost(uint64, optional, tag="1")]
14578    pub ns: ::core::option::Option<u64>,
14579    #[prost(uint32, optional, tag="2")]
14580    pub valid: ::core::option::Option<u32>,
14581    #[prost(uint32, optional, tag="3")]
14582    pub waited: ::core::option::Option<u32>,
14583}
14584#[derive(Clone, PartialEq, ::prost::Message)]
14585pub struct KvmWfxArm64FtraceEvent {
14586    #[prost(uint32, optional, tag="1")]
14587    pub is_wfe: ::core::option::Option<u32>,
14588    #[prost(uint64, optional, tag="2")]
14589    pub vcpu_pc: ::core::option::Option<u64>,
14590}
14591#[derive(Clone, PartialEq, ::prost::Message)]
14592pub struct TrapRegFtraceEvent {
14593    #[prost(string, optional, tag="1")]
14594    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
14595    #[prost(uint32, optional, tag="2")]
14596    pub is_write: ::core::option::Option<u32>,
14597    #[prost(int32, optional, tag="3")]
14598    pub reg: ::core::option::Option<i32>,
14599    #[prost(uint64, optional, tag="4")]
14600    pub write_value: ::core::option::Option<u64>,
14601}
14602#[derive(Clone, PartialEq, ::prost::Message)]
14603pub struct VgicUpdateIrqPendingFtraceEvent {
14604    #[prost(uint32, optional, tag="1")]
14605    pub irq: ::core::option::Option<u32>,
14606    #[prost(uint32, optional, tag="2")]
14607    pub level: ::core::option::Option<u32>,
14608    #[prost(uint64, optional, tag="3")]
14609    pub vcpu_id: ::core::option::Option<u64>,
14610}
14611// End of protos/perfetto/trace/ftrace/kvm.proto
14612
14613// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14614
14615#[derive(Clone, PartialEq, ::prost::Message)]
14616pub struct LowmemoryKillFtraceEvent {
14617    #[prost(string, optional, tag="1")]
14618    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14619    #[prost(int32, optional, tag="2")]
14620    pub pid: ::core::option::Option<i32>,
14621    #[prost(int64, optional, tag="3")]
14622    pub pagecache_size: ::core::option::Option<i64>,
14623    #[prost(int64, optional, tag="4")]
14624    pub pagecache_limit: ::core::option::Option<i64>,
14625    #[prost(int64, optional, tag="5")]
14626    pub free: ::core::option::Option<i64>,
14627}
14628// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
14629
14630// Begin of protos/perfetto/trace/ftrace/lwis.proto
14631
14632#[derive(Clone, PartialEq, ::prost::Message)]
14633pub struct LwisTracingMarkWriteFtraceEvent {
14634    #[prost(string, optional, tag="1")]
14635    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
14636    #[prost(uint32, optional, tag="2")]
14637    pub r#type: ::core::option::Option<u32>,
14638    #[prost(int32, optional, tag="3")]
14639    pub pid: ::core::option::Option<i32>,
14640    #[prost(string, optional, tag="4")]
14641    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
14642    #[prost(int64, optional, tag="5")]
14643    pub value: ::core::option::Option<i64>,
14644}
14645// End of protos/perfetto/trace/ftrace/lwis.proto
14646
14647// Begin of protos/perfetto/trace/ftrace/mali.proto
14648
14649#[derive(Clone, PartialEq, ::prost::Message)]
14650pub struct MaliTracingMarkWriteFtraceEvent {
14651    #[prost(string, optional, tag="1")]
14652    pub name: ::core::option::Option<::prost::alloc::string::String>,
14653    #[prost(int32, optional, tag="2")]
14654    pub pid: ::core::option::Option<i32>,
14655    #[prost(uint32, optional, tag="3")]
14656    pub r#type: ::core::option::Option<u32>,
14657    #[prost(int32, optional, tag="4")]
14658    pub value: ::core::option::Option<i32>,
14659}
14660#[derive(Clone, PartialEq, ::prost::Message)]
14661pub struct MaliMaliKcpucqssetFtraceEvent {
14662    #[prost(uint32, optional, tag="1")]
14663    pub id: ::core::option::Option<u32>,
14664    #[prost(uint64, optional, tag="2")]
14665    pub info_val1: ::core::option::Option<u64>,
14666    #[prost(uint64, optional, tag="3")]
14667    pub info_val2: ::core::option::Option<u64>,
14668    #[prost(uint32, optional, tag="4")]
14669    pub kctx_id: ::core::option::Option<u32>,
14670    #[prost(int32, optional, tag="5")]
14671    pub kctx_tgid: ::core::option::Option<i32>,
14672}
14673#[derive(Clone, PartialEq, ::prost::Message)]
14674pub struct MaliMaliKcpucqswaitstartFtraceEvent {
14675    #[prost(uint32, optional, tag="1")]
14676    pub id: ::core::option::Option<u32>,
14677    #[prost(uint64, optional, tag="2")]
14678    pub info_val1: ::core::option::Option<u64>,
14679    #[prost(uint64, optional, tag="3")]
14680    pub info_val2: ::core::option::Option<u64>,
14681    #[prost(uint32, optional, tag="4")]
14682    pub kctx_id: ::core::option::Option<u32>,
14683    #[prost(int32, optional, tag="5")]
14684    pub kctx_tgid: ::core::option::Option<i32>,
14685}
14686#[derive(Clone, PartialEq, ::prost::Message)]
14687pub struct MaliMaliKcpucqswaitendFtraceEvent {
14688    #[prost(uint32, optional, tag="1")]
14689    pub id: ::core::option::Option<u32>,
14690    #[prost(uint64, optional, tag="2")]
14691    pub info_val1: ::core::option::Option<u64>,
14692    #[prost(uint64, optional, tag="3")]
14693    pub info_val2: ::core::option::Option<u64>,
14694    #[prost(uint32, optional, tag="4")]
14695    pub kctx_id: ::core::option::Option<u32>,
14696    #[prost(int32, optional, tag="5")]
14697    pub kctx_tgid: ::core::option::Option<i32>,
14698}
14699#[derive(Clone, PartialEq, ::prost::Message)]
14700pub struct MaliMaliKcpufencesignalFtraceEvent {
14701    #[prost(uint64, optional, tag="1")]
14702    pub info_val1: ::core::option::Option<u64>,
14703    #[prost(uint64, optional, tag="2")]
14704    pub info_val2: ::core::option::Option<u64>,
14705    #[prost(int32, optional, tag="3")]
14706    pub kctx_tgid: ::core::option::Option<i32>,
14707    #[prost(uint32, optional, tag="4")]
14708    pub kctx_id: ::core::option::Option<u32>,
14709    #[prost(uint32, optional, tag="5")]
14710    pub id: ::core::option::Option<u32>,
14711}
14712#[derive(Clone, PartialEq, ::prost::Message)]
14713pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14714    #[prost(uint64, optional, tag="1")]
14715    pub info_val1: ::core::option::Option<u64>,
14716    #[prost(uint64, optional, tag="2")]
14717    pub info_val2: ::core::option::Option<u64>,
14718    #[prost(int32, optional, tag="3")]
14719    pub kctx_tgid: ::core::option::Option<i32>,
14720    #[prost(uint32, optional, tag="4")]
14721    pub kctx_id: ::core::option::Option<u32>,
14722    #[prost(uint32, optional, tag="5")]
14723    pub id: ::core::option::Option<u32>,
14724}
14725#[derive(Clone, PartialEq, ::prost::Message)]
14726pub struct MaliMaliKcpufencewaitendFtraceEvent {
14727    #[prost(uint64, optional, tag="1")]
14728    pub info_val1: ::core::option::Option<u64>,
14729    #[prost(uint64, optional, tag="2")]
14730    pub info_val2: ::core::option::Option<u64>,
14731    #[prost(int32, optional, tag="3")]
14732    pub kctx_tgid: ::core::option::Option<i32>,
14733    #[prost(uint32, optional, tag="4")]
14734    pub kctx_id: ::core::option::Option<u32>,
14735    #[prost(uint32, optional, tag="5")]
14736    pub id: ::core::option::Option<u32>,
14737}
14738#[derive(Clone, PartialEq, ::prost::Message)]
14739pub struct MaliMaliCsfinterruptstartFtraceEvent {
14740    #[prost(int32, optional, tag="1")]
14741    pub kctx_tgid: ::core::option::Option<i32>,
14742    #[prost(uint32, optional, tag="2")]
14743    pub kctx_id: ::core::option::Option<u32>,
14744    #[prost(uint64, optional, tag="3")]
14745    pub info_val: ::core::option::Option<u64>,
14746}
14747#[derive(Clone, PartialEq, ::prost::Message)]
14748pub struct MaliMaliCsfinterruptendFtraceEvent {
14749    #[prost(int32, optional, tag="1")]
14750    pub kctx_tgid: ::core::option::Option<i32>,
14751    #[prost(uint32, optional, tag="2")]
14752    pub kctx_id: ::core::option::Option<u32>,
14753    #[prost(uint64, optional, tag="3")]
14754    pub info_val: ::core::option::Option<u64>,
14755}
14756#[derive(Clone, PartialEq, ::prost::Message)]
14757pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
14758    #[prost(int32, optional, tag="1")]
14759    pub kctx_tgid: ::core::option::Option<i32>,
14760    #[prost(uint32, optional, tag="2")]
14761    pub kctx_id: ::core::option::Option<u32>,
14762    #[prost(uint64, optional, tag="3")]
14763    pub info_val: ::core::option::Option<u64>,
14764}
14765#[derive(Clone, PartialEq, ::prost::Message)]
14766pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
14767    #[prost(int32, optional, tag="1")]
14768    pub kctx_tgid: ::core::option::Option<i32>,
14769    #[prost(uint32, optional, tag="2")]
14770    pub kctx_id: ::core::option::Option<u32>,
14771    #[prost(uint64, optional, tag="3")]
14772    pub info_val: ::core::option::Option<u64>,
14773}
14774#[derive(Clone, PartialEq, ::prost::Message)]
14775pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
14776    #[prost(int32, optional, tag="1")]
14777    pub kctx_tgid: ::core::option::Option<i32>,
14778    #[prost(uint32, optional, tag="2")]
14779    pub kctx_id: ::core::option::Option<u32>,
14780    #[prost(uint64, optional, tag="3")]
14781    pub info_val: ::core::option::Option<u64>,
14782}
14783#[derive(Clone, PartialEq, ::prost::Message)]
14784pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14785    #[prost(int32, optional, tag="1")]
14786    pub kctx_tgid: ::core::option::Option<i32>,
14787    #[prost(uint32, optional, tag="2")]
14788    pub kctx_id: ::core::option::Option<u32>,
14789    #[prost(uint64, optional, tag="3")]
14790    pub info_val: ::core::option::Option<u64>,
14791}
14792#[derive(Clone, PartialEq, ::prost::Message)]
14793pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14794    #[prost(int32, optional, tag="1")]
14795    pub kctx_tgid: ::core::option::Option<i32>,
14796    #[prost(uint32, optional, tag="2")]
14797    pub kctx_id: ::core::option::Option<u32>,
14798    #[prost(uint64, optional, tag="3")]
14799    pub info_val: ::core::option::Option<u64>,
14800}
14801#[derive(Clone, PartialEq, ::prost::Message)]
14802pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14803    #[prost(int32, optional, tag="1")]
14804    pub kctx_tgid: ::core::option::Option<i32>,
14805    #[prost(uint32, optional, tag="2")]
14806    pub kctx_id: ::core::option::Option<u32>,
14807    #[prost(uint64, optional, tag="3")]
14808    pub info_val: ::core::option::Option<u64>,
14809}
14810#[derive(Clone, PartialEq, ::prost::Message)]
14811pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14812    #[prost(int32, optional, tag="1")]
14813    pub kctx_tgid: ::core::option::Option<i32>,
14814    #[prost(uint32, optional, tag="2")]
14815    pub kctx_id: ::core::option::Option<u32>,
14816    #[prost(uint64, optional, tag="3")]
14817    pub info_val: ::core::option::Option<u64>,
14818}
14819#[derive(Clone, PartialEq, ::prost::Message)]
14820pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14821    #[prost(int32, optional, tag="1")]
14822    pub kctx_tgid: ::core::option::Option<i32>,
14823    #[prost(uint32, optional, tag="2")]
14824    pub kctx_id: ::core::option::Option<u32>,
14825    #[prost(uint64, optional, tag="3")]
14826    pub info_val: ::core::option::Option<u64>,
14827}
14828#[derive(Clone, PartialEq, ::prost::Message)]
14829pub struct MaliMaliPmmcuinsleepFtraceEvent {
14830    #[prost(int32, optional, tag="1")]
14831    pub kctx_tgid: ::core::option::Option<i32>,
14832    #[prost(uint32, optional, tag="2")]
14833    pub kctx_id: ::core::option::Option<u32>,
14834    #[prost(uint64, optional, tag="3")]
14835    pub info_val: ::core::option::Option<u64>,
14836}
14837#[derive(Clone, PartialEq, ::prost::Message)]
14838pub struct MaliMaliPmmcuoffFtraceEvent {
14839    #[prost(int32, optional, tag="1")]
14840    pub kctx_tgid: ::core::option::Option<i32>,
14841    #[prost(uint32, optional, tag="2")]
14842    pub kctx_id: ::core::option::Option<u32>,
14843    #[prost(uint64, optional, tag="3")]
14844    pub info_val: ::core::option::Option<u64>,
14845}
14846#[derive(Clone, PartialEq, ::prost::Message)]
14847pub struct MaliMaliPmmcuonFtraceEvent {
14848    #[prost(int32, optional, tag="1")]
14849    pub kctx_tgid: ::core::option::Option<i32>,
14850    #[prost(uint32, optional, tag="2")]
14851    pub kctx_id: ::core::option::Option<u32>,
14852    #[prost(uint64, optional, tag="3")]
14853    pub info_val: ::core::option::Option<u64>,
14854}
14855#[derive(Clone, PartialEq, ::prost::Message)]
14856pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14857    #[prost(int32, optional, tag="1")]
14858    pub kctx_tgid: ::core::option::Option<i32>,
14859    #[prost(uint32, optional, tag="2")]
14860    pub kctx_id: ::core::option::Option<u32>,
14861    #[prost(uint64, optional, tag="3")]
14862    pub info_val: ::core::option::Option<u64>,
14863}
14864#[derive(Clone, PartialEq, ::prost::Message)]
14865pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14866    #[prost(int32, optional, tag="1")]
14867    pub kctx_tgid: ::core::option::Option<i32>,
14868    #[prost(uint32, optional, tag="2")]
14869    pub kctx_id: ::core::option::Option<u32>,
14870    #[prost(uint64, optional, tag="3")]
14871    pub info_val: ::core::option::Option<u64>,
14872}
14873#[derive(Clone, PartialEq, ::prost::Message)]
14874pub struct MaliMaliPmmcuonhaltFtraceEvent {
14875    #[prost(int32, optional, tag="1")]
14876    pub kctx_tgid: ::core::option::Option<i32>,
14877    #[prost(uint32, optional, tag="2")]
14878    pub kctx_id: ::core::option::Option<u32>,
14879    #[prost(uint64, optional, tag="3")]
14880    pub info_val: ::core::option::Option<u64>,
14881}
14882#[derive(Clone, PartialEq, ::prost::Message)]
14883pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14884    #[prost(int32, optional, tag="1")]
14885    pub kctx_tgid: ::core::option::Option<i32>,
14886    #[prost(uint32, optional, tag="2")]
14887    pub kctx_id: ::core::option::Option<u32>,
14888    #[prost(uint64, optional, tag="3")]
14889    pub info_val: ::core::option::Option<u64>,
14890}
14891#[derive(Clone, PartialEq, ::prost::Message)]
14892pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14893    #[prost(int32, optional, tag="1")]
14894    pub kctx_tgid: ::core::option::Option<i32>,
14895    #[prost(uint32, optional, tag="2")]
14896    pub kctx_id: ::core::option::Option<u32>,
14897    #[prost(uint64, optional, tag="3")]
14898    pub info_val: ::core::option::Option<u64>,
14899}
14900#[derive(Clone, PartialEq, ::prost::Message)]
14901pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14902    #[prost(int32, optional, tag="1")]
14903    pub kctx_tgid: ::core::option::Option<i32>,
14904    #[prost(uint32, optional, tag="2")]
14905    pub kctx_id: ::core::option::Option<u32>,
14906    #[prost(uint64, optional, tag="3")]
14907    pub info_val: ::core::option::Option<u64>,
14908}
14909#[derive(Clone, PartialEq, ::prost::Message)]
14910pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14911    #[prost(int32, optional, tag="1")]
14912    pub kctx_tgid: ::core::option::Option<i32>,
14913    #[prost(uint32, optional, tag="2")]
14914    pub kctx_id: ::core::option::Option<u32>,
14915    #[prost(uint64, optional, tag="3")]
14916    pub info_val: ::core::option::Option<u64>,
14917}
14918#[derive(Clone, PartialEq, ::prost::Message)]
14919pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14920    #[prost(int32, optional, tag="1")]
14921    pub kctx_tgid: ::core::option::Option<i32>,
14922    #[prost(uint32, optional, tag="2")]
14923    pub kctx_id: ::core::option::Option<u32>,
14924    #[prost(uint64, optional, tag="3")]
14925    pub info_val: ::core::option::Option<u64>,
14926}
14927#[derive(Clone, PartialEq, ::prost::Message)]
14928pub struct MaliMaliPmmcupendoffFtraceEvent {
14929    #[prost(int32, optional, tag="1")]
14930    pub kctx_tgid: ::core::option::Option<i32>,
14931    #[prost(uint32, optional, tag="2")]
14932    pub kctx_id: ::core::option::Option<u32>,
14933    #[prost(uint64, optional, tag="3")]
14934    pub info_val: ::core::option::Option<u64>,
14935}
14936#[derive(Clone, PartialEq, ::prost::Message)]
14937pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14938    #[prost(int32, optional, tag="1")]
14939    pub kctx_tgid: ::core::option::Option<i32>,
14940    #[prost(uint32, optional, tag="2")]
14941    pub kctx_id: ::core::option::Option<u32>,
14942    #[prost(uint64, optional, tag="3")]
14943    pub info_val: ::core::option::Option<u64>,
14944}
14945#[derive(Clone, PartialEq, ::prost::Message)]
14946pub struct MaliMaliPmmcupowerdownFtraceEvent {
14947    #[prost(int32, optional, tag="1")]
14948    pub kctx_tgid: ::core::option::Option<i32>,
14949    #[prost(uint32, optional, tag="2")]
14950    pub kctx_id: ::core::option::Option<u32>,
14951    #[prost(uint64, optional, tag="3")]
14952    pub info_val: ::core::option::Option<u64>,
14953}
14954#[derive(Clone, PartialEq, ::prost::Message)]
14955pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14956    #[prost(int32, optional, tag="1")]
14957    pub kctx_tgid: ::core::option::Option<i32>,
14958    #[prost(uint32, optional, tag="2")]
14959    pub kctx_id: ::core::option::Option<u32>,
14960    #[prost(uint64, optional, tag="3")]
14961    pub info_val: ::core::option::Option<u64>,
14962}
14963#[derive(Clone, PartialEq, ::prost::Message)]
14964pub struct MaliGpuPowerStateFtraceEvent {
14965    #[prost(uint64, optional, tag="1")]
14966    pub change_ns: ::core::option::Option<u64>,
14967    #[prost(int32, optional, tag="2")]
14968    pub from_state: ::core::option::Option<i32>,
14969    #[prost(int32, optional, tag="3")]
14970    pub to_state: ::core::option::Option<i32>,
14971}
14972// End of protos/perfetto/trace/ftrace/mali.proto
14973
14974// Begin of protos/perfetto/trace/ftrace/mdss.proto
14975
14976#[derive(Clone, PartialEq, ::prost::Message)]
14977pub struct MdpCmdKickoffFtraceEvent {
14978    #[prost(uint32, optional, tag="1")]
14979    pub ctl_num: ::core::option::Option<u32>,
14980    #[prost(int32, optional, tag="2")]
14981    pub kickoff_cnt: ::core::option::Option<i32>,
14982}
14983#[derive(Clone, PartialEq, ::prost::Message)]
14984pub struct MdpCommitFtraceEvent {
14985    #[prost(uint32, optional, tag="1")]
14986    pub num: ::core::option::Option<u32>,
14987    #[prost(uint32, optional, tag="2")]
14988    pub play_cnt: ::core::option::Option<u32>,
14989    #[prost(uint32, optional, tag="3")]
14990    pub clk_rate: ::core::option::Option<u32>,
14991    #[prost(uint64, optional, tag="4")]
14992    pub bandwidth: ::core::option::Option<u64>,
14993}
14994#[derive(Clone, PartialEq, ::prost::Message)]
14995pub struct MdpPerfSetOtFtraceEvent {
14996    #[prost(uint32, optional, tag="1")]
14997    pub pnum: ::core::option::Option<u32>,
14998    #[prost(uint32, optional, tag="2")]
14999    pub xin_id: ::core::option::Option<u32>,
15000    #[prost(uint32, optional, tag="3")]
15001    pub rd_lim: ::core::option::Option<u32>,
15002    #[prost(uint32, optional, tag="4")]
15003    pub is_vbif_rt: ::core::option::Option<u32>,
15004}
15005#[derive(Clone, PartialEq, ::prost::Message)]
15006pub struct MdpSsppChangeFtraceEvent {
15007    #[prost(uint32, optional, tag="1")]
15008    pub num: ::core::option::Option<u32>,
15009    #[prost(uint32, optional, tag="2")]
15010    pub play_cnt: ::core::option::Option<u32>,
15011    #[prost(uint32, optional, tag="3")]
15012    pub mixer: ::core::option::Option<u32>,
15013    #[prost(uint32, optional, tag="4")]
15014    pub stage: ::core::option::Option<u32>,
15015    #[prost(uint32, optional, tag="5")]
15016    pub flags: ::core::option::Option<u32>,
15017    #[prost(uint32, optional, tag="6")]
15018    pub format: ::core::option::Option<u32>,
15019    #[prost(uint32, optional, tag="7")]
15020    pub img_w: ::core::option::Option<u32>,
15021    #[prost(uint32, optional, tag="8")]
15022    pub img_h: ::core::option::Option<u32>,
15023    #[prost(uint32, optional, tag="9")]
15024    pub src_x: ::core::option::Option<u32>,
15025    #[prost(uint32, optional, tag="10")]
15026    pub src_y: ::core::option::Option<u32>,
15027    #[prost(uint32, optional, tag="11")]
15028    pub src_w: ::core::option::Option<u32>,
15029    #[prost(uint32, optional, tag="12")]
15030    pub src_h: ::core::option::Option<u32>,
15031    #[prost(uint32, optional, tag="13")]
15032    pub dst_x: ::core::option::Option<u32>,
15033    #[prost(uint32, optional, tag="14")]
15034    pub dst_y: ::core::option::Option<u32>,
15035    #[prost(uint32, optional, tag="15")]
15036    pub dst_w: ::core::option::Option<u32>,
15037    #[prost(uint32, optional, tag="16")]
15038    pub dst_h: ::core::option::Option<u32>,
15039}
15040#[derive(Clone, PartialEq, ::prost::Message)]
15041pub struct TracingMarkWriteFtraceEvent {
15042    #[prost(int32, optional, tag="1")]
15043    pub pid: ::core::option::Option<i32>,
15044    #[prost(string, optional, tag="2")]
15045    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15046    #[prost(uint32, optional, tag="3")]
15047    pub trace_begin: ::core::option::Option<u32>,
15048}
15049#[derive(Clone, PartialEq, ::prost::Message)]
15050pub struct MdpCmdPingpongDoneFtraceEvent {
15051    #[prost(uint32, optional, tag="1")]
15052    pub ctl_num: ::core::option::Option<u32>,
15053    #[prost(uint32, optional, tag="2")]
15054    pub intf_num: ::core::option::Option<u32>,
15055    #[prost(uint32, optional, tag="3")]
15056    pub pp_num: ::core::option::Option<u32>,
15057    #[prost(int32, optional, tag="4")]
15058    pub koff_cnt: ::core::option::Option<i32>,
15059}
15060#[derive(Clone, PartialEq, ::prost::Message)]
15061pub struct MdpCompareBwFtraceEvent {
15062    #[prost(uint64, optional, tag="1")]
15063    pub new_ab: ::core::option::Option<u64>,
15064    #[prost(uint64, optional, tag="2")]
15065    pub new_ib: ::core::option::Option<u64>,
15066    #[prost(uint64, optional, tag="3")]
15067    pub new_wb: ::core::option::Option<u64>,
15068    #[prost(uint64, optional, tag="4")]
15069    pub old_ab: ::core::option::Option<u64>,
15070    #[prost(uint64, optional, tag="5")]
15071    pub old_ib: ::core::option::Option<u64>,
15072    #[prost(uint64, optional, tag="6")]
15073    pub old_wb: ::core::option::Option<u64>,
15074    #[prost(uint32, optional, tag="7")]
15075    pub params_changed: ::core::option::Option<u32>,
15076    #[prost(uint32, optional, tag="8")]
15077    pub update_bw: ::core::option::Option<u32>,
15078}
15079#[derive(Clone, PartialEq, ::prost::Message)]
15080pub struct MdpPerfSetPanicLutsFtraceEvent {
15081    #[prost(uint32, optional, tag="1")]
15082    pub pnum: ::core::option::Option<u32>,
15083    #[prost(uint32, optional, tag="2")]
15084    pub fmt: ::core::option::Option<u32>,
15085    #[prost(uint32, optional, tag="3")]
15086    pub mode: ::core::option::Option<u32>,
15087    #[prost(uint32, optional, tag="4")]
15088    pub panic_lut: ::core::option::Option<u32>,
15089    #[prost(uint32, optional, tag="5")]
15090    pub robust_lut: ::core::option::Option<u32>,
15091}
15092#[derive(Clone, PartialEq, ::prost::Message)]
15093pub struct MdpSsppSetFtraceEvent {
15094    #[prost(uint32, optional, tag="1")]
15095    pub num: ::core::option::Option<u32>,
15096    #[prost(uint32, optional, tag="2")]
15097    pub play_cnt: ::core::option::Option<u32>,
15098    #[prost(uint32, optional, tag="3")]
15099    pub mixer: ::core::option::Option<u32>,
15100    #[prost(uint32, optional, tag="4")]
15101    pub stage: ::core::option::Option<u32>,
15102    #[prost(uint32, optional, tag="5")]
15103    pub flags: ::core::option::Option<u32>,
15104    #[prost(uint32, optional, tag="6")]
15105    pub format: ::core::option::Option<u32>,
15106    #[prost(uint32, optional, tag="7")]
15107    pub img_w: ::core::option::Option<u32>,
15108    #[prost(uint32, optional, tag="8")]
15109    pub img_h: ::core::option::Option<u32>,
15110    #[prost(uint32, optional, tag="9")]
15111    pub src_x: ::core::option::Option<u32>,
15112    #[prost(uint32, optional, tag="10")]
15113    pub src_y: ::core::option::Option<u32>,
15114    #[prost(uint32, optional, tag="11")]
15115    pub src_w: ::core::option::Option<u32>,
15116    #[prost(uint32, optional, tag="12")]
15117    pub src_h: ::core::option::Option<u32>,
15118    #[prost(uint32, optional, tag="13")]
15119    pub dst_x: ::core::option::Option<u32>,
15120    #[prost(uint32, optional, tag="14")]
15121    pub dst_y: ::core::option::Option<u32>,
15122    #[prost(uint32, optional, tag="15")]
15123    pub dst_w: ::core::option::Option<u32>,
15124    #[prost(uint32, optional, tag="16")]
15125    pub dst_h: ::core::option::Option<u32>,
15126}
15127#[derive(Clone, PartialEq, ::prost::Message)]
15128pub struct MdpCmdReadptrDoneFtraceEvent {
15129    #[prost(uint32, optional, tag="1")]
15130    pub ctl_num: ::core::option::Option<u32>,
15131    #[prost(int32, optional, tag="2")]
15132    pub koff_cnt: ::core::option::Option<i32>,
15133}
15134#[derive(Clone, PartialEq, ::prost::Message)]
15135pub struct MdpMisrCrcFtraceEvent {
15136    #[prost(uint32, optional, tag="1")]
15137    pub block_id: ::core::option::Option<u32>,
15138    #[prost(uint32, optional, tag="2")]
15139    pub vsync_cnt: ::core::option::Option<u32>,
15140    #[prost(uint32, optional, tag="3")]
15141    pub crc: ::core::option::Option<u32>,
15142}
15143#[derive(Clone, PartialEq, ::prost::Message)]
15144pub struct MdpPerfSetQosLutsFtraceEvent {
15145    #[prost(uint32, optional, tag="1")]
15146    pub pnum: ::core::option::Option<u32>,
15147    #[prost(uint32, optional, tag="2")]
15148    pub fmt: ::core::option::Option<u32>,
15149    #[prost(uint32, optional, tag="3")]
15150    pub intf: ::core::option::Option<u32>,
15151    #[prost(uint32, optional, tag="4")]
15152    pub rot: ::core::option::Option<u32>,
15153    #[prost(uint32, optional, tag="5")]
15154    pub fl: ::core::option::Option<u32>,
15155    #[prost(uint32, optional, tag="6")]
15156    pub lut: ::core::option::Option<u32>,
15157    #[prost(uint32, optional, tag="7")]
15158    pub linear: ::core::option::Option<u32>,
15159}
15160#[derive(Clone, PartialEq, ::prost::Message)]
15161pub struct MdpTraceCounterFtraceEvent {
15162    #[prost(int32, optional, tag="1")]
15163    pub pid: ::core::option::Option<i32>,
15164    #[prost(string, optional, tag="2")]
15165    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
15166    #[prost(int32, optional, tag="3")]
15167    pub value: ::core::option::Option<i32>,
15168}
15169#[derive(Clone, PartialEq, ::prost::Message)]
15170pub struct MdpCmdReleaseBwFtraceEvent {
15171    #[prost(uint32, optional, tag="1")]
15172    pub ctl_num: ::core::option::Option<u32>,
15173}
15174#[derive(Clone, PartialEq, ::prost::Message)]
15175pub struct MdpMixerUpdateFtraceEvent {
15176    #[prost(uint32, optional, tag="1")]
15177    pub mixer_num: ::core::option::Option<u32>,
15178}
15179#[derive(Clone, PartialEq, ::prost::Message)]
15180pub struct MdpPerfSetWmLevelsFtraceEvent {
15181    #[prost(uint32, optional, tag="1")]
15182    pub pnum: ::core::option::Option<u32>,
15183    #[prost(uint32, optional, tag="2")]
15184    pub use_space: ::core::option::Option<u32>,
15185    #[prost(uint32, optional, tag="3")]
15186    pub priority_bytes: ::core::option::Option<u32>,
15187    #[prost(uint32, optional, tag="4")]
15188    pub wm0: ::core::option::Option<u32>,
15189    #[prost(uint32, optional, tag="5")]
15190    pub wm1: ::core::option::Option<u32>,
15191    #[prost(uint32, optional, tag="6")]
15192    pub wm2: ::core::option::Option<u32>,
15193    #[prost(uint32, optional, tag="7")]
15194    pub mb_cnt: ::core::option::Option<u32>,
15195    #[prost(uint32, optional, tag="8")]
15196    pub mb_size: ::core::option::Option<u32>,
15197}
15198#[derive(Clone, PartialEq, ::prost::Message)]
15199pub struct MdpVideoUnderrunDoneFtraceEvent {
15200    #[prost(uint32, optional, tag="1")]
15201    pub ctl_num: ::core::option::Option<u32>,
15202    #[prost(uint32, optional, tag="2")]
15203    pub underrun_cnt: ::core::option::Option<u32>,
15204}
15205#[derive(Clone, PartialEq, ::prost::Message)]
15206pub struct MdpCmdWaitPingpongFtraceEvent {
15207    #[prost(uint32, optional, tag="1")]
15208    pub ctl_num: ::core::option::Option<u32>,
15209    #[prost(int32, optional, tag="2")]
15210    pub kickoff_cnt: ::core::option::Option<i32>,
15211}
15212#[derive(Clone, PartialEq, ::prost::Message)]
15213pub struct MdpPerfPrefillCalcFtraceEvent {
15214    #[prost(uint32, optional, tag="1")]
15215    pub pnum: ::core::option::Option<u32>,
15216    #[prost(uint32, optional, tag="2")]
15217    pub latency_buf: ::core::option::Option<u32>,
15218    #[prost(uint32, optional, tag="3")]
15219    pub ot: ::core::option::Option<u32>,
15220    #[prost(uint32, optional, tag="4")]
15221    pub y_buf: ::core::option::Option<u32>,
15222    #[prost(uint32, optional, tag="5")]
15223    pub y_scaler: ::core::option::Option<u32>,
15224    #[prost(uint32, optional, tag="6")]
15225    pub pp_lines: ::core::option::Option<u32>,
15226    #[prost(uint32, optional, tag="7")]
15227    pub pp_bytes: ::core::option::Option<u32>,
15228    #[prost(uint32, optional, tag="8")]
15229    pub post_sc: ::core::option::Option<u32>,
15230    #[prost(uint32, optional, tag="9")]
15231    pub fbc_bytes: ::core::option::Option<u32>,
15232    #[prost(uint32, optional, tag="10")]
15233    pub prefill_bytes: ::core::option::Option<u32>,
15234}
15235#[derive(Clone, PartialEq, ::prost::Message)]
15236pub struct MdpPerfUpdateBusFtraceEvent {
15237    #[prost(int32, optional, tag="1")]
15238    pub client: ::core::option::Option<i32>,
15239    #[prost(uint64, optional, tag="2")]
15240    pub ab_quota: ::core::option::Option<u64>,
15241    #[prost(uint64, optional, tag="3")]
15242    pub ib_quota: ::core::option::Option<u64>,
15243}
15244#[derive(Clone, PartialEq, ::prost::Message)]
15245pub struct RotatorBwAoAsContextFtraceEvent {
15246    #[prost(uint32, optional, tag="1")]
15247    pub state: ::core::option::Option<u32>,
15248}
15249// End of protos/perfetto/trace/ftrace/mdss.proto
15250
15251// Begin of protos/perfetto/trace/ftrace/mm_event.proto
15252
15253#[derive(Clone, PartialEq, ::prost::Message)]
15254pub struct MmEventRecordFtraceEvent {
15255    #[prost(uint32, optional, tag="1")]
15256    pub avg_lat: ::core::option::Option<u32>,
15257    #[prost(uint32, optional, tag="2")]
15258    pub count: ::core::option::Option<u32>,
15259    #[prost(uint32, optional, tag="3")]
15260    pub max_lat: ::core::option::Option<u32>,
15261    #[prost(uint32, optional, tag="4")]
15262    pub r#type: ::core::option::Option<u32>,
15263}
15264// End of protos/perfetto/trace/ftrace/mm_event.proto
15265
15266// Begin of protos/perfetto/trace/ftrace/net.proto
15267
15268#[derive(Clone, PartialEq, ::prost::Message)]
15269pub struct NetifReceiveSkbFtraceEvent {
15270    #[prost(uint32, optional, tag="1")]
15271    pub len: ::core::option::Option<u32>,
15272    #[prost(string, optional, tag="2")]
15273    pub name: ::core::option::Option<::prost::alloc::string::String>,
15274    #[prost(uint64, optional, tag="3")]
15275    pub skbaddr: ::core::option::Option<u64>,
15276}
15277#[derive(Clone, PartialEq, ::prost::Message)]
15278pub struct NetDevXmitFtraceEvent {
15279    #[prost(uint32, optional, tag="1")]
15280    pub len: ::core::option::Option<u32>,
15281    #[prost(string, optional, tag="2")]
15282    pub name: ::core::option::Option<::prost::alloc::string::String>,
15283    #[prost(int32, optional, tag="3")]
15284    pub rc: ::core::option::Option<i32>,
15285    #[prost(uint64, optional, tag="4")]
15286    pub skbaddr: ::core::option::Option<u64>,
15287}
15288#[derive(Clone, PartialEq, ::prost::Message)]
15289pub struct NapiGroReceiveEntryFtraceEvent {
15290    #[prost(uint32, optional, tag="1")]
15291    pub data_len: ::core::option::Option<u32>,
15292    #[prost(uint32, optional, tag="2")]
15293    pub gso_size: ::core::option::Option<u32>,
15294    #[prost(uint32, optional, tag="3")]
15295    pub gso_type: ::core::option::Option<u32>,
15296    #[prost(uint32, optional, tag="4")]
15297    pub hash: ::core::option::Option<u32>,
15298    #[prost(uint32, optional, tag="5")]
15299    pub ip_summed: ::core::option::Option<u32>,
15300    #[prost(uint32, optional, tag="6")]
15301    pub l4_hash: ::core::option::Option<u32>,
15302    #[prost(uint32, optional, tag="7")]
15303    pub len: ::core::option::Option<u32>,
15304    #[prost(int32, optional, tag="8")]
15305    pub mac_header: ::core::option::Option<i32>,
15306    #[prost(uint32, optional, tag="9")]
15307    pub mac_header_valid: ::core::option::Option<u32>,
15308    #[prost(string, optional, tag="10")]
15309    pub name: ::core::option::Option<::prost::alloc::string::String>,
15310    #[prost(uint32, optional, tag="11")]
15311    pub napi_id: ::core::option::Option<u32>,
15312    #[prost(uint32, optional, tag="12")]
15313    pub nr_frags: ::core::option::Option<u32>,
15314    #[prost(uint32, optional, tag="13")]
15315    pub protocol: ::core::option::Option<u32>,
15316    #[prost(uint32, optional, tag="14")]
15317    pub queue_mapping: ::core::option::Option<u32>,
15318    #[prost(uint64, optional, tag="15")]
15319    pub skbaddr: ::core::option::Option<u64>,
15320    #[prost(uint32, optional, tag="16")]
15321    pub truesize: ::core::option::Option<u32>,
15322    #[prost(uint32, optional, tag="17")]
15323    pub vlan_proto: ::core::option::Option<u32>,
15324    #[prost(uint32, optional, tag="18")]
15325    pub vlan_tagged: ::core::option::Option<u32>,
15326    #[prost(uint32, optional, tag="19")]
15327    pub vlan_tci: ::core::option::Option<u32>,
15328}
15329#[derive(Clone, PartialEq, ::prost::Message)]
15330pub struct NapiGroReceiveExitFtraceEvent {
15331    #[prost(int32, optional, tag="1")]
15332    pub ret: ::core::option::Option<i32>,
15333}
15334// End of protos/perfetto/trace/ftrace/net.proto
15335
15336// Begin of protos/perfetto/trace/ftrace/oom.proto
15337
15338#[derive(Clone, PartialEq, ::prost::Message)]
15339pub struct OomScoreAdjUpdateFtraceEvent {
15340    #[prost(string, optional, tag="1")]
15341    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15342    #[prost(int32, optional, tag="2")]
15343    pub oom_score_adj: ::core::option::Option<i32>,
15344    #[prost(int32, optional, tag="3")]
15345    pub pid: ::core::option::Option<i32>,
15346}
15347#[derive(Clone, PartialEq, ::prost::Message)]
15348pub struct MarkVictimFtraceEvent {
15349    #[prost(int32, optional, tag="1")]
15350    pub pid: ::core::option::Option<i32>,
15351}
15352// End of protos/perfetto/trace/ftrace/oom.proto
15353
15354// Begin of protos/perfetto/trace/ftrace/panel.proto
15355
15356#[derive(Clone, PartialEq, ::prost::Message)]
15357pub struct DsiCmdFifoStatusFtraceEvent {
15358    #[prost(uint32, optional, tag="1")]
15359    pub header: ::core::option::Option<u32>,
15360    #[prost(uint32, optional, tag="2")]
15361    pub payload: ::core::option::Option<u32>,
15362}
15363#[derive(Clone, PartialEq, ::prost::Message)]
15364pub struct DsiRxFtraceEvent {
15365    #[prost(uint32, optional, tag="1")]
15366    pub cmd: ::core::option::Option<u32>,
15367    #[prost(bytes="vec", optional, tag="3")]
15368    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15369}
15370#[derive(Clone, PartialEq, ::prost::Message)]
15371pub struct DsiTxFtraceEvent {
15372    #[prost(uint32, optional, tag="1")]
15373    pub last: ::core::option::Option<u32>,
15374    #[prost(uint32, optional, tag="3")]
15375    pub r#type: ::core::option::Option<u32>,
15376    #[prost(bytes="vec", optional, tag="4")]
15377    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15378}
15379#[derive(Clone, PartialEq, ::prost::Message)]
15380pub struct PanelWriteGenericFtraceEvent {
15381    #[prost(int32, optional, tag="1")]
15382    pub pid: ::core::option::Option<i32>,
15383    #[prost(string, optional, tag="2")]
15384    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15385    #[prost(uint32, optional, tag="3")]
15386    pub trace_begin: ::core::option::Option<u32>,
15387    #[prost(string, optional, tag="4")]
15388    pub name: ::core::option::Option<::prost::alloc::string::String>,
15389    #[prost(uint32, optional, tag="5")]
15390    pub r#type: ::core::option::Option<u32>,
15391    #[prost(int32, optional, tag="6")]
15392    pub value: ::core::option::Option<i32>,
15393}
15394#[derive(Clone, PartialEq, ::prost::Message)]
15395pub struct GramCollisionFtraceEvent {
15396    #[prost(int32, optional, tag="1")]
15397    pub panel_index: ::core::option::Option<i32>,
15398    #[prost(uint32, optional, tag="2")]
15399    pub collision_cnt: ::core::option::Option<u32>,
15400}
15401// End of protos/perfetto/trace/ftrace/panel.proto
15402
15403// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15404
15405#[derive(Clone, PartialEq, ::prost::Message)]
15406pub struct SchedSwitchWithCtrsFtraceEvent {
15407    #[prost(int32, optional, tag="1")]
15408    pub old_pid: ::core::option::Option<i32>,
15409    #[prost(int32, optional, tag="2")]
15410    pub new_pid: ::core::option::Option<i32>,
15411    #[prost(uint64, optional, tag="3")]
15412    pub cctr: ::core::option::Option<u64>,
15413    #[prost(uint64, optional, tag="4")]
15414    pub ctr0: ::core::option::Option<u64>,
15415    #[prost(uint64, optional, tag="5")]
15416    pub ctr1: ::core::option::Option<u64>,
15417    #[prost(uint64, optional, tag="6")]
15418    pub ctr2: ::core::option::Option<u64>,
15419    #[prost(uint64, optional, tag="7")]
15420    pub ctr3: ::core::option::Option<u64>,
15421    #[prost(uint32, optional, tag="8")]
15422    pub lctr0: ::core::option::Option<u32>,
15423    #[prost(uint32, optional, tag="9")]
15424    pub lctr1: ::core::option::Option<u32>,
15425    #[prost(uint64, optional, tag="10")]
15426    pub ctr4: ::core::option::Option<u64>,
15427    #[prost(uint64, optional, tag="11")]
15428    pub ctr5: ::core::option::Option<u64>,
15429    #[prost(string, optional, tag="12")]
15430    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15431    #[prost(int32, optional, tag="13")]
15432    pub prev_pid: ::core::option::Option<i32>,
15433    #[prost(uint32, optional, tag="14")]
15434    pub cyc: ::core::option::Option<u32>,
15435    #[prost(uint32, optional, tag="15")]
15436    pub inst: ::core::option::Option<u32>,
15437    #[prost(uint32, optional, tag="16")]
15438    pub stallbm: ::core::option::Option<u32>,
15439    #[prost(uint32, optional, tag="17")]
15440    pub l3dm: ::core::option::Option<u32>,
15441    #[prost(int32, optional, tag="18")]
15442    pub next_pid: ::core::option::Option<i32>,
15443    #[prost(string, optional, tag="19")]
15444    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15445    #[prost(int64, optional, tag="20")]
15446    pub prev_state: ::core::option::Option<i64>,
15447    #[prost(uint64, optional, tag="21")]
15448    pub amu0: ::core::option::Option<u64>,
15449    #[prost(uint64, optional, tag="22")]
15450    pub amu1: ::core::option::Option<u64>,
15451    #[prost(uint64, optional, tag="23")]
15452    pub amu2: ::core::option::Option<u64>,
15453}
15454// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
15455
15456// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
15457
15458#[derive(Clone, PartialEq, ::prost::Message)]
15459pub struct PixelMmKswapdWakeFtraceEvent {
15460    #[prost(int32, optional, tag="1")]
15461    pub whatever: ::core::option::Option<i32>,
15462}
15463#[derive(Clone, PartialEq, ::prost::Message)]
15464pub struct PixelMmKswapdDoneFtraceEvent {
15465    #[prost(uint64, optional, tag="1")]
15466    pub delta_nr_scanned: ::core::option::Option<u64>,
15467    #[prost(uint64, optional, tag="2")]
15468    pub delta_nr_reclaimed: ::core::option::Option<u64>,
15469    #[prost(uint64, optional, tag="3")]
15470    pub delta_nr_allocated: ::core::option::Option<u64>,
15471    #[prost(uint64, optional, tag="4")]
15472    pub duration_ns: ::core::option::Option<u64>,
15473}
15474// End of protos/perfetto/trace/ftrace/pixel_mm.proto
15475
15476// Begin of protos/perfetto/trace/ftrace/power.proto
15477
15478#[derive(Clone, PartialEq, ::prost::Message)]
15479pub struct CpuFrequencyFtraceEvent {
15480    #[prost(uint32, optional, tag="1")]
15481    pub state: ::core::option::Option<u32>,
15482    #[prost(uint32, optional, tag="2")]
15483    pub cpu_id: ::core::option::Option<u32>,
15484}
15485#[derive(Clone, PartialEq, ::prost::Message)]
15486pub struct CpuFrequencyLimitsFtraceEvent {
15487    #[prost(uint32, optional, tag="1")]
15488    pub min_freq: ::core::option::Option<u32>,
15489    #[prost(uint32, optional, tag="2")]
15490    pub max_freq: ::core::option::Option<u32>,
15491    #[prost(uint32, optional, tag="3")]
15492    pub cpu_id: ::core::option::Option<u32>,
15493}
15494#[derive(Clone, PartialEq, ::prost::Message)]
15495pub struct CpuIdleFtraceEvent {
15496    #[prost(uint32, optional, tag="1")]
15497    pub state: ::core::option::Option<u32>,
15498    #[prost(uint32, optional, tag="2")]
15499    pub cpu_id: ::core::option::Option<u32>,
15500}
15501#[derive(Clone, PartialEq, ::prost::Message)]
15502pub struct ClockEnableFtraceEvent {
15503    #[prost(string, optional, tag="1")]
15504    pub name: ::core::option::Option<::prost::alloc::string::String>,
15505    #[prost(uint64, optional, tag="2")]
15506    pub state: ::core::option::Option<u64>,
15507    #[prost(uint64, optional, tag="3")]
15508    pub cpu_id: ::core::option::Option<u64>,
15509}
15510#[derive(Clone, PartialEq, ::prost::Message)]
15511pub struct ClockDisableFtraceEvent {
15512    #[prost(string, optional, tag="1")]
15513    pub name: ::core::option::Option<::prost::alloc::string::String>,
15514    #[prost(uint64, optional, tag="2")]
15515    pub state: ::core::option::Option<u64>,
15516    #[prost(uint64, optional, tag="3")]
15517    pub cpu_id: ::core::option::Option<u64>,
15518}
15519#[derive(Clone, PartialEq, ::prost::Message)]
15520pub struct ClockSetRateFtraceEvent {
15521    #[prost(string, optional, tag="1")]
15522    pub name: ::core::option::Option<::prost::alloc::string::String>,
15523    #[prost(uint64, optional, tag="2")]
15524    pub state: ::core::option::Option<u64>,
15525    #[prost(uint64, optional, tag="3")]
15526    pub cpu_id: ::core::option::Option<u64>,
15527}
15528#[derive(Clone, PartialEq, ::prost::Message)]
15529pub struct SuspendResumeFtraceEvent {
15530    #[prost(string, optional, tag="1")]
15531    pub action: ::core::option::Option<::prost::alloc::string::String>,
15532    #[prost(int32, optional, tag="2")]
15533    pub val: ::core::option::Option<i32>,
15534    #[prost(uint32, optional, tag="3")]
15535    pub start: ::core::option::Option<u32>,
15536}
15537#[derive(Clone, PartialEq, ::prost::Message)]
15538pub struct GpuFrequencyFtraceEvent {
15539    #[prost(uint32, optional, tag="1")]
15540    pub gpu_id: ::core::option::Option<u32>,
15541    #[prost(uint32, optional, tag="2")]
15542    pub state: ::core::option::Option<u32>,
15543}
15544#[derive(Clone, PartialEq, ::prost::Message)]
15545pub struct WakeupSourceActivateFtraceEvent {
15546    #[prost(string, optional, tag="1")]
15547    pub name: ::core::option::Option<::prost::alloc::string::String>,
15548    #[prost(uint64, optional, tag="2")]
15549    pub state: ::core::option::Option<u64>,
15550}
15551#[derive(Clone, PartialEq, ::prost::Message)]
15552pub struct WakeupSourceDeactivateFtraceEvent {
15553    #[prost(string, optional, tag="1")]
15554    pub name: ::core::option::Option<::prost::alloc::string::String>,
15555    #[prost(uint64, optional, tag="2")]
15556    pub state: ::core::option::Option<u64>,
15557}
15558#[derive(Clone, PartialEq, ::prost::Message)]
15559pub struct GpuWorkPeriodFtraceEvent {
15560    #[prost(uint32, optional, tag="1")]
15561    pub gpu_id: ::core::option::Option<u32>,
15562    #[prost(uint32, optional, tag="2")]
15563    pub uid: ::core::option::Option<u32>,
15564    #[prost(uint64, optional, tag="3")]
15565    pub start_time_ns: ::core::option::Option<u64>,
15566    #[prost(uint64, optional, tag="4")]
15567    pub end_time_ns: ::core::option::Option<u64>,
15568    #[prost(uint64, optional, tag="5")]
15569    pub total_active_duration_ns: ::core::option::Option<u64>,
15570}
15571#[derive(Clone, PartialEq, ::prost::Message)]
15572pub struct DevicePmCallbackStartFtraceEvent {
15573    #[prost(string, optional, tag="1")]
15574    pub device: ::core::option::Option<::prost::alloc::string::String>,
15575    #[prost(string, optional, tag="2")]
15576    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15577    #[prost(string, optional, tag="3")]
15578    pub parent: ::core::option::Option<::prost::alloc::string::String>,
15579    #[prost(string, optional, tag="4")]
15580    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
15581    #[prost(int32, optional, tag="5")]
15582    pub event: ::core::option::Option<i32>,
15583}
15584#[derive(Clone, PartialEq, ::prost::Message)]
15585pub struct DevicePmCallbackEndFtraceEvent {
15586    #[prost(string, optional, tag="1")]
15587    pub device: ::core::option::Option<::prost::alloc::string::String>,
15588    #[prost(string, optional, tag="2")]
15589    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15590    #[prost(int32, optional, tag="3")]
15591    pub error: ::core::option::Option<i32>,
15592}
15593#[derive(Clone, PartialEq, ::prost::Message)]
15594pub struct GpuPowerStateFtraceEvent {
15595    #[prost(int32, optional, tag="1")]
15596    pub old_state: ::core::option::Option<i32>,
15597    #[prost(int32, optional, tag="2")]
15598    pub new_state: ::core::option::Option<i32>,
15599}
15600// End of protos/perfetto/trace/ftrace/power.proto
15601
15602// Begin of protos/perfetto/trace/ftrace/printk.proto
15603
15604#[derive(Clone, PartialEq, ::prost::Message)]
15605pub struct ConsoleFtraceEvent {
15606    #[prost(string, optional, tag="1")]
15607    pub msg: ::core::option::Option<::prost::alloc::string::String>,
15608}
15609// End of protos/perfetto/trace/ftrace/printk.proto
15610
15611// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
15612
15613#[derive(Clone, PartialEq, ::prost::Message)]
15614pub struct SysEnterFtraceEvent {
15615    #[prost(int64, optional, tag="1")]
15616    pub id: ::core::option::Option<i64>,
15617    #[prost(uint64, repeated, packed="false", tag="2")]
15618    pub args: ::prost::alloc::vec::Vec<u64>,
15619}
15620#[derive(Clone, PartialEq, ::prost::Message)]
15621pub struct SysExitFtraceEvent {
15622    #[prost(int64, optional, tag="1")]
15623    pub id: ::core::option::Option<i64>,
15624    #[prost(int64, optional, tag="2")]
15625    pub ret: ::core::option::Option<i64>,
15626}
15627// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
15628
15629// Begin of protos/perfetto/trace/ftrace/regulator.proto
15630
15631#[derive(Clone, PartialEq, ::prost::Message)]
15632pub struct RegulatorDisableFtraceEvent {
15633    #[prost(string, optional, tag="1")]
15634    pub name: ::core::option::Option<::prost::alloc::string::String>,
15635}
15636#[derive(Clone, PartialEq, ::prost::Message)]
15637pub struct RegulatorDisableCompleteFtraceEvent {
15638    #[prost(string, optional, tag="1")]
15639    pub name: ::core::option::Option<::prost::alloc::string::String>,
15640}
15641#[derive(Clone, PartialEq, ::prost::Message)]
15642pub struct RegulatorEnableFtraceEvent {
15643    #[prost(string, optional, tag="1")]
15644    pub name: ::core::option::Option<::prost::alloc::string::String>,
15645}
15646#[derive(Clone, PartialEq, ::prost::Message)]
15647pub struct RegulatorEnableCompleteFtraceEvent {
15648    #[prost(string, optional, tag="1")]
15649    pub name: ::core::option::Option<::prost::alloc::string::String>,
15650}
15651#[derive(Clone, PartialEq, ::prost::Message)]
15652pub struct RegulatorEnableDelayFtraceEvent {
15653    #[prost(string, optional, tag="1")]
15654    pub name: ::core::option::Option<::prost::alloc::string::String>,
15655}
15656#[derive(Clone, PartialEq, ::prost::Message)]
15657pub struct RegulatorSetVoltageFtraceEvent {
15658    #[prost(string, optional, tag="1")]
15659    pub name: ::core::option::Option<::prost::alloc::string::String>,
15660    #[prost(int32, optional, tag="2")]
15661    pub min: ::core::option::Option<i32>,
15662    #[prost(int32, optional, tag="3")]
15663    pub max: ::core::option::Option<i32>,
15664}
15665#[derive(Clone, PartialEq, ::prost::Message)]
15666pub struct RegulatorSetVoltageCompleteFtraceEvent {
15667    #[prost(string, optional, tag="1")]
15668    pub name: ::core::option::Option<::prost::alloc::string::String>,
15669    #[prost(uint32, optional, tag="2")]
15670    pub val: ::core::option::Option<u32>,
15671}
15672// End of protos/perfetto/trace/ftrace/regulator.proto
15673
15674// Begin of protos/perfetto/trace/ftrace/rpm.proto
15675
15676#[derive(Clone, PartialEq, ::prost::Message)]
15677pub struct RpmStatusFtraceEvent {
15678    #[prost(string, optional, tag="1")]
15679    pub name: ::core::option::Option<::prost::alloc::string::String>,
15680    #[prost(int32, optional, tag="2")]
15681    pub status: ::core::option::Option<i32>,
15682}
15683// End of protos/perfetto/trace/ftrace/rpm.proto
15684
15685// Begin of protos/perfetto/trace/ftrace/samsung.proto
15686
15687#[derive(Clone, PartialEq, ::prost::Message)]
15688pub struct SamsungTracingMarkWriteFtraceEvent {
15689    #[prost(int32, optional, tag="1")]
15690    pub pid: ::core::option::Option<i32>,
15691    #[prost(string, optional, tag="2")]
15692    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15693    #[prost(uint32, optional, tag="3")]
15694    pub trace_begin: ::core::option::Option<u32>,
15695    #[prost(uint32, optional, tag="4")]
15696    pub trace_type: ::core::option::Option<u32>,
15697    #[prost(int32, optional, tag="5")]
15698    pub value: ::core::option::Option<i32>,
15699}
15700// End of protos/perfetto/trace/ftrace/samsung.proto
15701
15702// Begin of protos/perfetto/trace/ftrace/sched.proto
15703
15704#[derive(Clone, PartialEq, ::prost::Message)]
15705pub struct SchedSwitchFtraceEvent {
15706    #[prost(string, optional, tag="1")]
15707    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15708    #[prost(int32, optional, tag="2")]
15709    pub prev_pid: ::core::option::Option<i32>,
15710    #[prost(int32, optional, tag="3")]
15711    pub prev_prio: ::core::option::Option<i32>,
15712    #[prost(int64, optional, tag="4")]
15713    pub prev_state: ::core::option::Option<i64>,
15714    #[prost(string, optional, tag="5")]
15715    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15716    #[prost(int32, optional, tag="6")]
15717    pub next_pid: ::core::option::Option<i32>,
15718    #[prost(int32, optional, tag="7")]
15719    pub next_prio: ::core::option::Option<i32>,
15720}
15721#[derive(Clone, PartialEq, ::prost::Message)]
15722pub struct SchedWakeupFtraceEvent {
15723    #[prost(string, optional, tag="1")]
15724    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15725    #[prost(int32, optional, tag="2")]
15726    pub pid: ::core::option::Option<i32>,
15727    #[prost(int32, optional, tag="3")]
15728    pub prio: ::core::option::Option<i32>,
15729    #[prost(int32, optional, tag="4")]
15730    pub success: ::core::option::Option<i32>,
15731    #[prost(int32, optional, tag="5")]
15732    pub target_cpu: ::core::option::Option<i32>,
15733}
15734#[derive(Clone, PartialEq, ::prost::Message)]
15735pub struct SchedBlockedReasonFtraceEvent {
15736    #[prost(int32, optional, tag="1")]
15737    pub pid: ::core::option::Option<i32>,
15738    #[prost(uint64, optional, tag="2")]
15739    pub caller: ::core::option::Option<u64>,
15740    #[prost(uint32, optional, tag="3")]
15741    pub io_wait: ::core::option::Option<u32>,
15742}
15743#[derive(Clone, PartialEq, ::prost::Message)]
15744pub struct SchedCpuHotplugFtraceEvent {
15745    #[prost(int32, optional, tag="1")]
15746    pub affected_cpu: ::core::option::Option<i32>,
15747    #[prost(int32, optional, tag="2")]
15748    pub error: ::core::option::Option<i32>,
15749    #[prost(int32, optional, tag="3")]
15750    pub status: ::core::option::Option<i32>,
15751}
15752#[derive(Clone, PartialEq, ::prost::Message)]
15753pub struct SchedWakingFtraceEvent {
15754    #[prost(string, optional, tag="1")]
15755    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15756    #[prost(int32, optional, tag="2")]
15757    pub pid: ::core::option::Option<i32>,
15758    #[prost(int32, optional, tag="3")]
15759    pub prio: ::core::option::Option<i32>,
15760    #[prost(int32, optional, tag="4")]
15761    pub success: ::core::option::Option<i32>,
15762    #[prost(int32, optional, tag="5")]
15763    pub target_cpu: ::core::option::Option<i32>,
15764}
15765#[derive(Clone, PartialEq, ::prost::Message)]
15766pub struct SchedWakeupNewFtraceEvent {
15767    #[prost(string, optional, tag="1")]
15768    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15769    #[prost(int32, optional, tag="2")]
15770    pub pid: ::core::option::Option<i32>,
15771    #[prost(int32, optional, tag="3")]
15772    pub prio: ::core::option::Option<i32>,
15773    #[prost(int32, optional, tag="4")]
15774    pub success: ::core::option::Option<i32>,
15775    #[prost(int32, optional, tag="5")]
15776    pub target_cpu: ::core::option::Option<i32>,
15777}
15778#[derive(Clone, PartialEq, ::prost::Message)]
15779pub struct SchedProcessExecFtraceEvent {
15780    #[prost(string, optional, tag="1")]
15781    pub filename: ::core::option::Option<::prost::alloc::string::String>,
15782    #[prost(int32, optional, tag="2")]
15783    pub pid: ::core::option::Option<i32>,
15784    #[prost(int32, optional, tag="3")]
15785    pub old_pid: ::core::option::Option<i32>,
15786}
15787#[derive(Clone, PartialEq, ::prost::Message)]
15788pub struct SchedProcessExitFtraceEvent {
15789    #[prost(string, optional, tag="1")]
15790    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15791    #[prost(int32, optional, tag="2")]
15792    pub pid: ::core::option::Option<i32>,
15793    #[prost(int32, optional, tag="3")]
15794    pub tgid: ::core::option::Option<i32>,
15795    #[prost(int32, optional, tag="4")]
15796    pub prio: ::core::option::Option<i32>,
15797}
15798#[derive(Clone, PartialEq, ::prost::Message)]
15799pub struct SchedProcessForkFtraceEvent {
15800    #[prost(string, optional, tag="1")]
15801    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15802    #[prost(int32, optional, tag="2")]
15803    pub parent_pid: ::core::option::Option<i32>,
15804    #[prost(string, optional, tag="3")]
15805    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15806    #[prost(int32, optional, tag="4")]
15807    pub child_pid: ::core::option::Option<i32>,
15808}
15809#[derive(Clone, PartialEq, ::prost::Message)]
15810pub struct SchedProcessFreeFtraceEvent {
15811    #[prost(string, optional, tag="1")]
15812    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15813    #[prost(int32, optional, tag="2")]
15814    pub pid: ::core::option::Option<i32>,
15815    #[prost(int32, optional, tag="3")]
15816    pub prio: ::core::option::Option<i32>,
15817}
15818#[derive(Clone, PartialEq, ::prost::Message)]
15819pub struct SchedProcessHangFtraceEvent {
15820    #[prost(string, optional, tag="1")]
15821    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15822    #[prost(int32, optional, tag="2")]
15823    pub pid: ::core::option::Option<i32>,
15824}
15825#[derive(Clone, PartialEq, ::prost::Message)]
15826pub struct SchedProcessWaitFtraceEvent {
15827    #[prost(string, optional, tag="1")]
15828    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15829    #[prost(int32, optional, tag="2")]
15830    pub pid: ::core::option::Option<i32>,
15831    #[prost(int32, optional, tag="3")]
15832    pub prio: ::core::option::Option<i32>,
15833}
15834#[derive(Clone, PartialEq, ::prost::Message)]
15835pub struct SchedPiSetprioFtraceEvent {
15836    #[prost(string, optional, tag="1")]
15837    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15838    #[prost(int32, optional, tag="2")]
15839    pub newprio: ::core::option::Option<i32>,
15840    #[prost(int32, optional, tag="3")]
15841    pub oldprio: ::core::option::Option<i32>,
15842    #[prost(int32, optional, tag="4")]
15843    pub pid: ::core::option::Option<i32>,
15844}
15845#[derive(Clone, PartialEq, ::prost::Message)]
15846pub struct SchedCpuUtilCfsFtraceEvent {
15847    #[prost(int32, optional, tag="1")]
15848    pub active: ::core::option::Option<i32>,
15849    #[prost(uint64, optional, tag="2")]
15850    pub capacity: ::core::option::Option<u64>,
15851    #[prost(uint64, optional, tag="3")]
15852    pub capacity_orig: ::core::option::Option<u64>,
15853    #[prost(uint32, optional, tag="4")]
15854    pub cpu: ::core::option::Option<u32>,
15855    #[prost(uint64, optional, tag="5")]
15856    pub cpu_importance: ::core::option::Option<u64>,
15857    #[prost(uint64, optional, tag="6")]
15858    pub cpu_util: ::core::option::Option<u64>,
15859    #[prost(uint32, optional, tag="7")]
15860    pub exit_lat: ::core::option::Option<u32>,
15861    #[prost(uint64, optional, tag="8")]
15862    pub group_capacity: ::core::option::Option<u64>,
15863    #[prost(uint32, optional, tag="9")]
15864    pub grp_overutilized: ::core::option::Option<u32>,
15865    #[prost(uint32, optional, tag="10")]
15866    pub idle_cpu: ::core::option::Option<u32>,
15867    #[prost(uint32, optional, tag="11")]
15868    pub nr_running: ::core::option::Option<u32>,
15869    #[prost(int64, optional, tag="12")]
15870    pub spare_cap: ::core::option::Option<i64>,
15871    #[prost(uint32, optional, tag="13")]
15872    pub task_fits: ::core::option::Option<u32>,
15873    #[prost(uint64, optional, tag="14")]
15874    pub wake_group_util: ::core::option::Option<u64>,
15875    #[prost(uint64, optional, tag="15")]
15876    pub wake_util: ::core::option::Option<u64>,
15877}
15878#[derive(Clone, PartialEq, ::prost::Message)]
15879pub struct SchedMigrateTaskFtraceEvent {
15880    #[prost(string, optional, tag="1")]
15881    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15882    #[prost(int32, optional, tag="2")]
15883    pub pid: ::core::option::Option<i32>,
15884    #[prost(int32, optional, tag="3")]
15885    pub prio: ::core::option::Option<i32>,
15886    #[prost(int32, optional, tag="4")]
15887    pub orig_cpu: ::core::option::Option<i32>,
15888    #[prost(int32, optional, tag="5")]
15889    pub dest_cpu: ::core::option::Option<i32>,
15890    #[prost(int32, optional, tag="6")]
15891    pub running: ::core::option::Option<i32>,
15892    #[prost(uint32, optional, tag="7")]
15893    pub load: ::core::option::Option<u32>,
15894}
15895#[derive(Clone, PartialEq, ::prost::Message)]
15896pub struct SchedWakeupTaskAttrFtraceEvent {
15897    #[prost(int32, optional, tag="1")]
15898    pub pid: ::core::option::Option<i32>,
15899    #[prost(uint64, optional, tag="2")]
15900    pub cpu_affinity: ::core::option::Option<u64>,
15901    #[prost(uint64, optional, tag="3")]
15902    pub task_util: ::core::option::Option<u64>,
15903    #[prost(uint64, optional, tag="4")]
15904    pub uclamp_min: ::core::option::Option<u64>,
15905    #[prost(uint64, optional, tag="5")]
15906    pub vruntime: ::core::option::Option<u64>,
15907}
15908#[derive(Clone, PartialEq, ::prost::Message)]
15909pub struct SchedGroupTrackerFtraceEvent {
15910    #[prost(string, optional, tag="1")]
15911    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15912    #[prost(int32, optional, tag="2")]
15913    pub pid: ::core::option::Option<i32>,
15914    #[prost(string, optional, tag="3")]
15915    pub group: ::core::option::Option<::prost::alloc::string::String>,
15916    #[prost(int32, optional, tag="4")]
15917    pub group_num: ::core::option::Option<i32>,
15918}
15919// End of protos/perfetto/trace/ftrace/sched.proto
15920
15921// Begin of protos/perfetto/trace/ftrace/scm.proto
15922
15923#[derive(Clone, PartialEq, ::prost::Message)]
15924pub struct ScmCallStartFtraceEvent {
15925    #[prost(uint32, optional, tag="1")]
15926    pub arginfo: ::core::option::Option<u32>,
15927    #[prost(uint64, optional, tag="2")]
15928    pub x0: ::core::option::Option<u64>,
15929    #[prost(uint64, optional, tag="3")]
15930    pub x5: ::core::option::Option<u64>,
15931}
15932#[derive(Clone, PartialEq, ::prost::Message)]
15933pub struct ScmCallEndFtraceEvent {
15934}
15935// End of protos/perfetto/trace/ftrace/scm.proto
15936
15937// Begin of protos/perfetto/trace/ftrace/scsi.proto
15938
15939#[derive(Clone, PartialEq, ::prost::Message)]
15940pub struct ScsiDispatchCmdErrorFtraceEvent {
15941    #[prost(uint32, optional, tag="1")]
15942    pub host_no: ::core::option::Option<u32>,
15943    #[prost(uint32, optional, tag="2")]
15944    pub channel: ::core::option::Option<u32>,
15945    #[prost(uint32, optional, tag="3")]
15946    pub id: ::core::option::Option<u32>,
15947    #[prost(uint32, optional, tag="4")]
15948    pub lun: ::core::option::Option<u32>,
15949    #[prost(int32, optional, tag="5")]
15950    pub rtn: ::core::option::Option<i32>,
15951    #[prost(uint32, optional, tag="6")]
15952    pub opcode: ::core::option::Option<u32>,
15953    #[prost(uint32, optional, tag="7")]
15954    pub cmd_len: ::core::option::Option<u32>,
15955    #[prost(uint32, optional, tag="8")]
15956    pub data_sglen: ::core::option::Option<u32>,
15957    #[prost(uint32, optional, tag="9")]
15958    pub prot_sglen: ::core::option::Option<u32>,
15959    #[prost(uint32, optional, tag="10")]
15960    pub prot_op: ::core::option::Option<u32>,
15961    #[prost(int32, optional, tag="12")]
15962    pub driver_tag: ::core::option::Option<i32>,
15963    #[prost(int32, optional, tag="13")]
15964    pub scheduler_tag: ::core::option::Option<i32>,
15965    #[prost(bytes="vec", optional, tag="14")]
15966    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15967}
15968#[derive(Clone, PartialEq, ::prost::Message)]
15969pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15970    #[prost(uint32, optional, tag="1")]
15971    pub host_no: ::core::option::Option<u32>,
15972    #[prost(uint32, optional, tag="2")]
15973    pub channel: ::core::option::Option<u32>,
15974    #[prost(uint32, optional, tag="3")]
15975    pub id: ::core::option::Option<u32>,
15976    #[prost(uint32, optional, tag="4")]
15977    pub lun: ::core::option::Option<u32>,
15978    #[prost(int32, optional, tag="5")]
15979    pub result: ::core::option::Option<i32>,
15980    #[prost(uint32, optional, tag="6")]
15981    pub opcode: ::core::option::Option<u32>,
15982    #[prost(uint32, optional, tag="7")]
15983    pub cmd_len: ::core::option::Option<u32>,
15984    #[prost(uint32, optional, tag="8")]
15985    pub data_sglen: ::core::option::Option<u32>,
15986    #[prost(uint32, optional, tag="9")]
15987    pub prot_sglen: ::core::option::Option<u32>,
15988    #[prost(uint32, optional, tag="10")]
15989    pub prot_op: ::core::option::Option<u32>,
15990    #[prost(int32, optional, tag="12")]
15991    pub driver_tag: ::core::option::Option<i32>,
15992    #[prost(int32, optional, tag="13")]
15993    pub scheduler_tag: ::core::option::Option<i32>,
15994    #[prost(uint32, optional, tag="14")]
15995    pub sense_key: ::core::option::Option<u32>,
15996    #[prost(uint32, optional, tag="15")]
15997    pub asc: ::core::option::Option<u32>,
15998    #[prost(uint32, optional, tag="16")]
15999    pub ascq: ::core::option::Option<u32>,
16000    #[prost(bytes="vec", optional, tag="17")]
16001    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16002}
16003#[derive(Clone, PartialEq, ::prost::Message)]
16004pub struct ScsiEhWakeupFtraceEvent {
16005    #[prost(uint32, optional, tag="1")]
16006    pub host_no: ::core::option::Option<u32>,
16007}
16008// End of protos/perfetto/trace/ftrace/scsi.proto
16009
16010// Begin of protos/perfetto/trace/ftrace/sde.proto
16011
16012#[derive(Clone, PartialEq, ::prost::Message)]
16013pub struct SdeTracingMarkWriteFtraceEvent {
16014    #[prost(int32, optional, tag="1")]
16015    pub pid: ::core::option::Option<i32>,
16016    #[prost(string, optional, tag="2")]
16017    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16018    #[prost(uint32, optional, tag="3")]
16019    pub trace_type: ::core::option::Option<u32>,
16020    #[prost(int32, optional, tag="4")]
16021    pub value: ::core::option::Option<i32>,
16022    #[prost(uint32, optional, tag="5")]
16023    pub trace_begin: ::core::option::Option<u32>,
16024}
16025#[derive(Clone, PartialEq, ::prost::Message)]
16026pub struct SdeSdeEvtlogFtraceEvent {
16027    #[prost(string, optional, tag="1")]
16028    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
16029    #[prost(int32, optional, tag="2")]
16030    pub pid: ::core::option::Option<i32>,
16031    #[prost(uint32, optional, tag="3")]
16032    pub tag_id: ::core::option::Option<u32>,
16033}
16034#[derive(Clone, PartialEq, ::prost::Message)]
16035pub struct SdeSdePerfCalcCrtcFtraceEvent {
16036    #[prost(uint64, optional, tag="1")]
16037    pub bw_ctl_ebi: ::core::option::Option<u64>,
16038    #[prost(uint64, optional, tag="2")]
16039    pub bw_ctl_llcc: ::core::option::Option<u64>,
16040    #[prost(uint64, optional, tag="3")]
16041    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16042    #[prost(uint32, optional, tag="4")]
16043    pub core_clk_rate: ::core::option::Option<u32>,
16044    #[prost(uint32, optional, tag="5")]
16045    pub crtc: ::core::option::Option<u32>,
16046    #[prost(uint64, optional, tag="6")]
16047    pub ib_ebi: ::core::option::Option<u64>,
16048    #[prost(uint64, optional, tag="7")]
16049    pub ib_llcc: ::core::option::Option<u64>,
16050    #[prost(uint64, optional, tag="8")]
16051    pub ib_mnoc: ::core::option::Option<u64>,
16052}
16053#[derive(Clone, PartialEq, ::prost::Message)]
16054pub struct SdeSdePerfCrtcUpdateFtraceEvent {
16055    #[prost(uint64, optional, tag="1")]
16056    pub bw_ctl_ebi: ::core::option::Option<u64>,
16057    #[prost(uint64, optional, tag="2")]
16058    pub bw_ctl_llcc: ::core::option::Option<u64>,
16059    #[prost(uint64, optional, tag="3")]
16060    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16061    #[prost(uint32, optional, tag="4")]
16062    pub core_clk_rate: ::core::option::Option<u32>,
16063    #[prost(uint32, optional, tag="5")]
16064    pub crtc: ::core::option::Option<u32>,
16065    #[prost(int32, optional, tag="6")]
16066    pub params: ::core::option::Option<i32>,
16067    #[prost(uint64, optional, tag="7")]
16068    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
16069    #[prost(uint64, optional, tag="8")]
16070    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
16071    #[prost(uint64, optional, tag="9")]
16072    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
16073    #[prost(uint32, optional, tag="10")]
16074    pub stop_req: ::core::option::Option<u32>,
16075    #[prost(uint32, optional, tag="11")]
16076    pub update_bus: ::core::option::Option<u32>,
16077    #[prost(uint32, optional, tag="12")]
16078    pub update_clk: ::core::option::Option<u32>,
16079}
16080#[derive(Clone, PartialEq, ::prost::Message)]
16081pub struct SdeSdePerfSetQosLutsFtraceEvent {
16082    #[prost(uint32, optional, tag="1")]
16083    pub fl: ::core::option::Option<u32>,
16084    #[prost(uint32, optional, tag="2")]
16085    pub fmt: ::core::option::Option<u32>,
16086    #[prost(uint64, optional, tag="3")]
16087    pub lut: ::core::option::Option<u64>,
16088    #[prost(uint32, optional, tag="4")]
16089    pub lut_usage: ::core::option::Option<u32>,
16090    #[prost(uint32, optional, tag="5")]
16091    pub pnum: ::core::option::Option<u32>,
16092    #[prost(uint32, optional, tag="6")]
16093    pub rt: ::core::option::Option<u32>,
16094}
16095#[derive(Clone, PartialEq, ::prost::Message)]
16096pub struct SdeSdePerfUpdateBusFtraceEvent {
16097    #[prost(uint64, optional, tag="1")]
16098    pub ab_quota: ::core::option::Option<u64>,
16099    #[prost(uint32, optional, tag="2")]
16100    pub bus_id: ::core::option::Option<u32>,
16101    #[prost(int32, optional, tag="3")]
16102    pub client: ::core::option::Option<i32>,
16103    #[prost(uint64, optional, tag="4")]
16104    pub ib_quota: ::core::option::Option<u64>,
16105}
16106// End of protos/perfetto/trace/ftrace/sde.proto
16107
16108// Begin of protos/perfetto/trace/ftrace/signal.proto
16109
16110#[derive(Clone, PartialEq, ::prost::Message)]
16111pub struct SignalDeliverFtraceEvent {
16112    #[prost(int32, optional, tag="1")]
16113    pub code: ::core::option::Option<i32>,
16114    #[prost(uint64, optional, tag="2")]
16115    pub sa_flags: ::core::option::Option<u64>,
16116    #[prost(int32, optional, tag="3")]
16117    pub sig: ::core::option::Option<i32>,
16118}
16119#[derive(Clone, PartialEq, ::prost::Message)]
16120pub struct SignalGenerateFtraceEvent {
16121    #[prost(int32, optional, tag="1")]
16122    pub code: ::core::option::Option<i32>,
16123    #[prost(string, optional, tag="2")]
16124    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16125    #[prost(int32, optional, tag="3")]
16126    pub group: ::core::option::Option<i32>,
16127    #[prost(int32, optional, tag="4")]
16128    pub pid: ::core::option::Option<i32>,
16129    #[prost(int32, optional, tag="5")]
16130    pub result: ::core::option::Option<i32>,
16131    #[prost(int32, optional, tag="6")]
16132    pub sig: ::core::option::Option<i32>,
16133}
16134// End of protos/perfetto/trace/ftrace/signal.proto
16135
16136// Begin of protos/perfetto/trace/ftrace/skb.proto
16137
16138#[derive(Clone, PartialEq, ::prost::Message)]
16139pub struct KfreeSkbFtraceEvent {
16140    #[prost(uint64, optional, tag="1")]
16141    pub location: ::core::option::Option<u64>,
16142    #[prost(uint32, optional, tag="2")]
16143    pub protocol: ::core::option::Option<u32>,
16144    #[prost(uint64, optional, tag="3")]
16145    pub skbaddr: ::core::option::Option<u64>,
16146}
16147// End of protos/perfetto/trace/ftrace/skb.proto
16148
16149// Begin of protos/perfetto/trace/ftrace/sock.proto
16150
16151#[derive(Clone, PartialEq, ::prost::Message)]
16152pub struct InetSockSetStateFtraceEvent {
16153    #[prost(uint32, optional, tag="1")]
16154    pub daddr: ::core::option::Option<u32>,
16155    #[prost(uint32, optional, tag="2")]
16156    pub dport: ::core::option::Option<u32>,
16157    #[prost(uint32, optional, tag="3")]
16158    pub family: ::core::option::Option<u32>,
16159    #[prost(int32, optional, tag="4")]
16160    pub newstate: ::core::option::Option<i32>,
16161    #[prost(int32, optional, tag="5")]
16162    pub oldstate: ::core::option::Option<i32>,
16163    #[prost(uint32, optional, tag="6")]
16164    pub protocol: ::core::option::Option<u32>,
16165    #[prost(uint32, optional, tag="7")]
16166    pub saddr: ::core::option::Option<u32>,
16167    #[prost(uint64, optional, tag="8")]
16168    pub skaddr: ::core::option::Option<u64>,
16169    #[prost(uint32, optional, tag="9")]
16170    pub sport: ::core::option::Option<u32>,
16171}
16172// End of protos/perfetto/trace/ftrace/sock.proto
16173
16174// Begin of protos/perfetto/trace/ftrace/sync.proto
16175
16176#[derive(Clone, PartialEq, ::prost::Message)]
16177pub struct SyncPtFtraceEvent {
16178    #[prost(string, optional, tag="1")]
16179    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
16180    #[prost(string, optional, tag="2")]
16181    pub value: ::core::option::Option<::prost::alloc::string::String>,
16182}
16183#[derive(Clone, PartialEq, ::prost::Message)]
16184pub struct SyncTimelineFtraceEvent {
16185    #[prost(string, optional, tag="1")]
16186    pub name: ::core::option::Option<::prost::alloc::string::String>,
16187    #[prost(string, optional, tag="2")]
16188    pub value: ::core::option::Option<::prost::alloc::string::String>,
16189}
16190#[derive(Clone, PartialEq, ::prost::Message)]
16191pub struct SyncWaitFtraceEvent {
16192    #[prost(string, optional, tag="1")]
16193    pub name: ::core::option::Option<::prost::alloc::string::String>,
16194    #[prost(int32, optional, tag="2")]
16195    pub status: ::core::option::Option<i32>,
16196    #[prost(uint32, optional, tag="3")]
16197    pub begin: ::core::option::Option<u32>,
16198}
16199// End of protos/perfetto/trace/ftrace/sync.proto
16200
16201// Begin of protos/perfetto/trace/ftrace/synthetic.proto
16202
16203#[derive(Clone, PartialEq, ::prost::Message)]
16204pub struct RssStatThrottledFtraceEvent {
16205    #[prost(uint32, optional, tag="1")]
16206    pub curr: ::core::option::Option<u32>,
16207    #[prost(int32, optional, tag="2")]
16208    pub member: ::core::option::Option<i32>,
16209    #[prost(uint32, optional, tag="3")]
16210    pub mm_id: ::core::option::Option<u32>,
16211    #[prost(int64, optional, tag="4")]
16212    pub size: ::core::option::Option<i64>,
16213}
16214#[derive(Clone, PartialEq, ::prost::Message)]
16215pub struct SuspendResumeMinimalFtraceEvent {
16216    #[prost(uint32, optional, tag="1")]
16217    pub start: ::core::option::Option<u32>,
16218}
16219// End of protos/perfetto/trace/ftrace/synthetic.proto
16220
16221// Begin of protos/perfetto/trace/ftrace/systrace.proto
16222
16223#[derive(Clone, PartialEq, ::prost::Message)]
16224pub struct ZeroFtraceEvent {
16225    #[prost(int32, optional, tag="1")]
16226    pub flag: ::core::option::Option<i32>,
16227    #[prost(string, optional, tag="2")]
16228    pub name: ::core::option::Option<::prost::alloc::string::String>,
16229    #[prost(int32, optional, tag="3")]
16230    pub pid: ::core::option::Option<i32>,
16231    #[prost(int64, optional, tag="4")]
16232    pub value: ::core::option::Option<i64>,
16233}
16234// End of protos/perfetto/trace/ftrace/systrace.proto
16235
16236// Begin of protos/perfetto/trace/ftrace/task.proto
16237
16238#[derive(Clone, PartialEq, ::prost::Message)]
16239pub struct TaskNewtaskFtraceEvent {
16240    #[prost(int32, optional, tag="1")]
16241    pub pid: ::core::option::Option<i32>,
16242    #[prost(string, optional, tag="2")]
16243    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16244    #[prost(uint64, optional, tag="3")]
16245    pub clone_flags: ::core::option::Option<u64>,
16246    #[prost(int32, optional, tag="4")]
16247    pub oom_score_adj: ::core::option::Option<i32>,
16248}
16249#[derive(Clone, PartialEq, ::prost::Message)]
16250pub struct TaskRenameFtraceEvent {
16251    #[prost(int32, optional, tag="1")]
16252    pub pid: ::core::option::Option<i32>,
16253    #[prost(string, optional, tag="2")]
16254    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
16255    #[prost(string, optional, tag="3")]
16256    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
16257    #[prost(int32, optional, tag="4")]
16258    pub oom_score_adj: ::core::option::Option<i32>,
16259}
16260// End of protos/perfetto/trace/ftrace/task.proto
16261
16262// Begin of protos/perfetto/trace/ftrace/tcp.proto
16263
16264#[derive(Clone, PartialEq, ::prost::Message)]
16265pub struct TcpRetransmitSkbFtraceEvent {
16266    #[prost(uint32, optional, tag="1")]
16267    pub daddr: ::core::option::Option<u32>,
16268    #[prost(uint32, optional, tag="2")]
16269    pub dport: ::core::option::Option<u32>,
16270    #[prost(uint32, optional, tag="3")]
16271    pub saddr: ::core::option::Option<u32>,
16272    #[prost(uint64, optional, tag="4")]
16273    pub skaddr: ::core::option::Option<u64>,
16274    #[prost(uint64, optional, tag="5")]
16275    pub skbaddr: ::core::option::Option<u64>,
16276    #[prost(uint32, optional, tag="6")]
16277    pub sport: ::core::option::Option<u32>,
16278    #[prost(int32, optional, tag="7")]
16279    pub state: ::core::option::Option<i32>,
16280}
16281// End of protos/perfetto/trace/ftrace/tcp.proto
16282
16283// Begin of protos/perfetto/trace/ftrace/thermal.proto
16284
16285#[derive(Clone, PartialEq, ::prost::Message)]
16286pub struct ThermalTemperatureFtraceEvent {
16287    #[prost(int32, optional, tag="1")]
16288    pub id: ::core::option::Option<i32>,
16289    #[prost(int32, optional, tag="2")]
16290    pub temp: ::core::option::Option<i32>,
16291    #[prost(int32, optional, tag="3")]
16292    pub temp_prev: ::core::option::Option<i32>,
16293    #[prost(string, optional, tag="4")]
16294    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
16295}
16296#[derive(Clone, PartialEq, ::prost::Message)]
16297pub struct CdevUpdateFtraceEvent {
16298    #[prost(uint64, optional, tag="1")]
16299    pub target: ::core::option::Option<u64>,
16300    #[prost(string, optional, tag="2")]
16301    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
16302}
16303// End of protos/perfetto/trace/ftrace/thermal.proto
16304
16305// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
16306
16307#[derive(Clone, PartialEq, ::prost::Message)]
16308pub struct ThermalExynosAcpmBulkFtraceEvent {
16309    #[prost(uint32, optional, tag="1")]
16310    pub tz_id: ::core::option::Option<u32>,
16311    #[prost(uint32, optional, tag="2")]
16312    pub current_temp: ::core::option::Option<u32>,
16313    #[prost(uint32, optional, tag="3")]
16314    pub ctrl_temp: ::core::option::Option<u32>,
16315    #[prost(uint32, optional, tag="4")]
16316    pub cdev_state: ::core::option::Option<u32>,
16317    #[prost(int32, optional, tag="5")]
16318    pub pid_et_p: ::core::option::Option<i32>,
16319    #[prost(int32, optional, tag="6")]
16320    pub pid_power_range: ::core::option::Option<i32>,
16321    #[prost(int32, optional, tag="7")]
16322    pub pid_p: ::core::option::Option<i32>,
16323    #[prost(int32, optional, tag="8")]
16324    pub pid_i: ::core::option::Option<i32>,
16325    #[prost(int32, optional, tag="9")]
16326    pub k_p: ::core::option::Option<i32>,
16327    #[prost(int32, optional, tag="10")]
16328    pub k_i: ::core::option::Option<i32>,
16329    #[prost(uint64, optional, tag="11")]
16330    pub timestamp: ::core::option::Option<u64>,
16331}
16332#[derive(Clone, PartialEq, ::prost::Message)]
16333pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
16334    #[prost(int32, optional, tag="1")]
16335    pub tz_id: ::core::option::Option<i32>,
16336    #[prost(uint32, optional, tag="2")]
16337    pub current_temp: ::core::option::Option<u32>,
16338    #[prost(uint32, optional, tag="3")]
16339    pub ctrl_temp: ::core::option::Option<u32>,
16340    #[prost(uint32, optional, tag="4")]
16341    pub cdev_state: ::core::option::Option<u32>,
16342    #[prost(int32, optional, tag="5")]
16343    pub pid_et_p: ::core::option::Option<i32>,
16344    #[prost(int32, optional, tag="6")]
16345    pub k_p: ::core::option::Option<i32>,
16346    #[prost(int32, optional, tag="7")]
16347    pub k_i: ::core::option::Option<i32>,
16348}
16349// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
16350
16351// Begin of protos/perfetto/trace/ftrace/timer.proto
16352
16353#[derive(Clone, PartialEq, ::prost::Message)]
16354pub struct HrtimerStartFtraceEvent {
16355    #[prost(uint64, optional, tag="1")]
16356    pub hrtimer: ::core::option::Option<u64>,
16357    #[prost(uint64, optional, tag="2")]
16358    pub function: ::core::option::Option<u64>,
16359    #[prost(int64, optional, tag="3")]
16360    pub expires: ::core::option::Option<i64>,
16361    #[prost(int64, optional, tag="4")]
16362    pub softexpires: ::core::option::Option<i64>,
16363    #[prost(uint32, optional, tag="5")]
16364    pub mode: ::core::option::Option<u32>,
16365}
16366#[derive(Clone, PartialEq, ::prost::Message)]
16367pub struct HrtimerCancelFtraceEvent {
16368    #[prost(uint64, optional, tag="1")]
16369    pub hrtimer: ::core::option::Option<u64>,
16370}
16371#[derive(Clone, PartialEq, ::prost::Message)]
16372pub struct HrtimerExpireEntryFtraceEvent {
16373    #[prost(uint64, optional, tag="1")]
16374    pub hrtimer: ::core::option::Option<u64>,
16375    #[prost(int64, optional, tag="2")]
16376    pub now: ::core::option::Option<i64>,
16377    #[prost(uint64, optional, tag="3")]
16378    pub function: ::core::option::Option<u64>,
16379}
16380#[derive(Clone, PartialEq, ::prost::Message)]
16381pub struct HrtimerExpireExitFtraceEvent {
16382    #[prost(uint64, optional, tag="1")]
16383    pub hrtimer: ::core::option::Option<u64>,
16384}
16385#[derive(Clone, PartialEq, ::prost::Message)]
16386pub struct TimerStartFtraceEvent {
16387    #[prost(uint64, optional, tag="1")]
16388    pub timer: ::core::option::Option<u64>,
16389    #[prost(uint64, optional, tag="2")]
16390    pub function: ::core::option::Option<u64>,
16391    #[prost(uint64, optional, tag="3")]
16392    pub expires: ::core::option::Option<u64>,
16393    #[prost(uint64, optional, tag="4")]
16394    pub now: ::core::option::Option<u64>,
16395    #[prost(uint32, optional, tag="5")]
16396    pub deferrable: ::core::option::Option<u32>,
16397    #[prost(uint32, optional, tag="6")]
16398    pub flags: ::core::option::Option<u32>,
16399    #[prost(uint64, optional, tag="7")]
16400    pub bucket_expiry: ::core::option::Option<u64>,
16401}
16402#[derive(Clone, PartialEq, ::prost::Message)]
16403pub struct TimerCancelFtraceEvent {
16404    #[prost(uint64, optional, tag="1")]
16405    pub timer: ::core::option::Option<u64>,
16406}
16407#[derive(Clone, PartialEq, ::prost::Message)]
16408pub struct TimerExpireEntryFtraceEvent {
16409    #[prost(uint64, optional, tag="1")]
16410    pub timer: ::core::option::Option<u64>,
16411    #[prost(uint64, optional, tag="2")]
16412    pub now: ::core::option::Option<u64>,
16413    #[prost(uint64, optional, tag="3")]
16414    pub function: ::core::option::Option<u64>,
16415    #[prost(uint64, optional, tag="4")]
16416    pub baseclk: ::core::option::Option<u64>,
16417}
16418#[derive(Clone, PartialEq, ::prost::Message)]
16419pub struct TimerExpireExitFtraceEvent {
16420    #[prost(uint64, optional, tag="1")]
16421    pub timer: ::core::option::Option<u64>,
16422}
16423// End of protos/perfetto/trace/ftrace/timer.proto
16424
16425// Begin of protos/perfetto/trace/ftrace/trusty.proto
16426
16427#[derive(Clone, PartialEq, ::prost::Message)]
16428pub struct TrustySmcFtraceEvent {
16429    #[prost(uint64, optional, tag="1")]
16430    pub r0: ::core::option::Option<u64>,
16431    #[prost(uint64, optional, tag="2")]
16432    pub r1: ::core::option::Option<u64>,
16433    #[prost(uint64, optional, tag="3")]
16434    pub r2: ::core::option::Option<u64>,
16435    #[prost(uint64, optional, tag="4")]
16436    pub r3: ::core::option::Option<u64>,
16437}
16438#[derive(Clone, PartialEq, ::prost::Message)]
16439pub struct TrustySmcDoneFtraceEvent {
16440    #[prost(uint64, optional, tag="1")]
16441    pub ret: ::core::option::Option<u64>,
16442}
16443#[derive(Clone, PartialEq, ::prost::Message)]
16444pub struct TrustyStdCall32FtraceEvent {
16445    #[prost(uint64, optional, tag="1")]
16446    pub r0: ::core::option::Option<u64>,
16447    #[prost(uint64, optional, tag="2")]
16448    pub r1: ::core::option::Option<u64>,
16449    #[prost(uint64, optional, tag="3")]
16450    pub r2: ::core::option::Option<u64>,
16451    #[prost(uint64, optional, tag="4")]
16452    pub r3: ::core::option::Option<u64>,
16453}
16454#[derive(Clone, PartialEq, ::prost::Message)]
16455pub struct TrustyStdCall32DoneFtraceEvent {
16456    #[prost(int64, optional, tag="1")]
16457    pub ret: ::core::option::Option<i64>,
16458}
16459#[derive(Clone, PartialEq, ::prost::Message)]
16460pub struct TrustyShareMemoryFtraceEvent {
16461    #[prost(uint64, optional, tag="1")]
16462    pub len: ::core::option::Option<u64>,
16463    #[prost(uint32, optional, tag="2")]
16464    pub lend: ::core::option::Option<u32>,
16465    #[prost(uint32, optional, tag="3")]
16466    pub nents: ::core::option::Option<u32>,
16467}
16468#[derive(Clone, PartialEq, ::prost::Message)]
16469pub struct TrustyShareMemoryDoneFtraceEvent {
16470    #[prost(uint64, optional, tag="1")]
16471    pub handle: ::core::option::Option<u64>,
16472    #[prost(uint64, optional, tag="2")]
16473    pub len: ::core::option::Option<u64>,
16474    #[prost(uint32, optional, tag="3")]
16475    pub lend: ::core::option::Option<u32>,
16476    #[prost(uint32, optional, tag="4")]
16477    pub nents: ::core::option::Option<u32>,
16478    #[prost(int32, optional, tag="5")]
16479    pub ret: ::core::option::Option<i32>,
16480}
16481#[derive(Clone, PartialEq, ::prost::Message)]
16482pub struct TrustyReclaimMemoryFtraceEvent {
16483    #[prost(uint64, optional, tag="1")]
16484    pub id: ::core::option::Option<u64>,
16485}
16486#[derive(Clone, PartialEq, ::prost::Message)]
16487pub struct TrustyReclaimMemoryDoneFtraceEvent {
16488    #[prost(uint64, optional, tag="1")]
16489    pub id: ::core::option::Option<u64>,
16490    #[prost(int32, optional, tag="2")]
16491    pub ret: ::core::option::Option<i32>,
16492}
16493#[derive(Clone, PartialEq, ::prost::Message)]
16494pub struct TrustyIrqFtraceEvent {
16495    #[prost(int32, optional, tag="1")]
16496    pub irq: ::core::option::Option<i32>,
16497}
16498#[derive(Clone, PartialEq, ::prost::Message)]
16499pub struct TrustyIpcHandleEventFtraceEvent {
16500    #[prost(uint32, optional, tag="1")]
16501    pub chan: ::core::option::Option<u32>,
16502    #[prost(uint32, optional, tag="2")]
16503    pub event_id: ::core::option::Option<u32>,
16504    #[prost(string, optional, tag="3")]
16505    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16506}
16507#[derive(Clone, PartialEq, ::prost::Message)]
16508pub struct TrustyIpcConnectFtraceEvent {
16509    #[prost(uint32, optional, tag="1")]
16510    pub chan: ::core::option::Option<u32>,
16511    #[prost(string, optional, tag="2")]
16512    pub port: ::core::option::Option<::prost::alloc::string::String>,
16513    #[prost(int32, optional, tag="3")]
16514    pub state: ::core::option::Option<i32>,
16515}
16516#[derive(Clone, PartialEq, ::prost::Message)]
16517pub struct TrustyIpcConnectEndFtraceEvent {
16518    #[prost(uint32, optional, tag="1")]
16519    pub chan: ::core::option::Option<u32>,
16520    #[prost(int32, optional, tag="2")]
16521    pub err: ::core::option::Option<i32>,
16522    #[prost(int32, optional, tag="3")]
16523    pub state: ::core::option::Option<i32>,
16524}
16525#[derive(Clone, PartialEq, ::prost::Message)]
16526pub struct TrustyIpcWriteFtraceEvent {
16527    #[prost(uint64, optional, tag="1")]
16528    pub buf_id: ::core::option::Option<u64>,
16529    #[prost(uint32, optional, tag="2")]
16530    pub chan: ::core::option::Option<u32>,
16531    #[prost(int32, optional, tag="3")]
16532    pub kind_shm: ::core::option::Option<i32>,
16533    #[prost(int32, optional, tag="4")]
16534    pub len_or_err: ::core::option::Option<i32>,
16535    #[prost(uint64, optional, tag="5")]
16536    pub shm_cnt: ::core::option::Option<u64>,
16537    #[prost(string, optional, tag="6")]
16538    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16539}
16540#[derive(Clone, PartialEq, ::prost::Message)]
16541pub struct TrustyIpcPollFtraceEvent {
16542    #[prost(uint32, optional, tag="1")]
16543    pub chan: ::core::option::Option<u32>,
16544    #[prost(uint32, optional, tag="2")]
16545    pub poll_mask: ::core::option::Option<u32>,
16546    #[prost(string, optional, tag="3")]
16547    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16548}
16549#[derive(Clone, PartialEq, ::prost::Message)]
16550pub struct TrustyIpcReadFtraceEvent {
16551    #[prost(uint32, optional, tag="1")]
16552    pub chan: ::core::option::Option<u32>,
16553    #[prost(string, optional, tag="2")]
16554    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16555}
16556#[derive(Clone, PartialEq, ::prost::Message)]
16557pub struct TrustyIpcReadEndFtraceEvent {
16558    #[prost(uint64, optional, tag="1")]
16559    pub buf_id: ::core::option::Option<u64>,
16560    #[prost(uint32, optional, tag="2")]
16561    pub chan: ::core::option::Option<u32>,
16562    #[prost(int32, optional, tag="3")]
16563    pub len_or_err: ::core::option::Option<i32>,
16564    #[prost(uint64, optional, tag="4")]
16565    pub shm_cnt: ::core::option::Option<u64>,
16566    #[prost(string, optional, tag="5")]
16567    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16568}
16569#[derive(Clone, PartialEq, ::prost::Message)]
16570pub struct TrustyIpcRxFtraceEvent {
16571    #[prost(uint64, optional, tag="1")]
16572    pub buf_id: ::core::option::Option<u64>,
16573    #[prost(uint32, optional, tag="2")]
16574    pub chan: ::core::option::Option<u32>,
16575    #[prost(string, optional, tag="3")]
16576    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16577}
16578#[derive(Clone, PartialEq, ::prost::Message)]
16579pub struct TrustyEnqueueNopFtraceEvent {
16580    #[prost(uint32, optional, tag="1")]
16581    pub arg1: ::core::option::Option<u32>,
16582    #[prost(uint32, optional, tag="2")]
16583    pub arg2: ::core::option::Option<u32>,
16584    #[prost(uint32, optional, tag="3")]
16585    pub arg3: ::core::option::Option<u32>,
16586}
16587// End of protos/perfetto/trace/ftrace/trusty.proto
16588
16589// Begin of protos/perfetto/trace/ftrace/ufs.proto
16590
16591#[derive(Clone, PartialEq, ::prost::Message)]
16592pub struct UfshcdCommandFtraceEvent {
16593    #[prost(string, optional, tag="1")]
16594    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16595    #[prost(uint32, optional, tag="2")]
16596    pub doorbell: ::core::option::Option<u32>,
16597    #[prost(uint32, optional, tag="3")]
16598    pub intr: ::core::option::Option<u32>,
16599    #[prost(uint64, optional, tag="4")]
16600    pub lba: ::core::option::Option<u64>,
16601    #[prost(uint32, optional, tag="5")]
16602    pub opcode: ::core::option::Option<u32>,
16603    #[prost(string, optional, tag="6")]
16604    pub str: ::core::option::Option<::prost::alloc::string::String>,
16605    #[prost(uint32, optional, tag="7")]
16606    pub tag: ::core::option::Option<u32>,
16607    #[prost(int32, optional, tag="8")]
16608    pub transfer_len: ::core::option::Option<i32>,
16609    #[prost(uint32, optional, tag="9")]
16610    pub group_id: ::core::option::Option<u32>,
16611    #[prost(uint32, optional, tag="10")]
16612    pub str_t: ::core::option::Option<u32>,
16613}
16614#[derive(Clone, PartialEq, ::prost::Message)]
16615pub struct UfshcdClkGatingFtraceEvent {
16616    #[prost(string, optional, tag="1")]
16617    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16618    #[prost(int32, optional, tag="2")]
16619    pub state: ::core::option::Option<i32>,
16620}
16621// End of protos/perfetto/trace/ftrace/ufs.proto
16622
16623// Begin of protos/perfetto/trace/ftrace/v4l2.proto
16624
16625#[derive(Clone, PartialEq, ::prost::Message)]
16626pub struct V4l2QbufFtraceEvent {
16627    #[prost(uint32, optional, tag="1")]
16628    pub bytesused: ::core::option::Option<u32>,
16629    #[prost(uint32, optional, tag="2")]
16630    pub field: ::core::option::Option<u32>,
16631    #[prost(uint32, optional, tag="3")]
16632    pub flags: ::core::option::Option<u32>,
16633    #[prost(uint32, optional, tag="4")]
16634    pub index: ::core::option::Option<u32>,
16635    #[prost(int32, optional, tag="5")]
16636    pub minor: ::core::option::Option<i32>,
16637    #[prost(uint32, optional, tag="6")]
16638    pub sequence: ::core::option::Option<u32>,
16639    #[prost(uint32, optional, tag="7")]
16640    pub timecode_flags: ::core::option::Option<u32>,
16641    #[prost(uint32, optional, tag="8")]
16642    pub timecode_frames: ::core::option::Option<u32>,
16643    #[prost(uint32, optional, tag="9")]
16644    pub timecode_hours: ::core::option::Option<u32>,
16645    #[prost(uint32, optional, tag="10")]
16646    pub timecode_minutes: ::core::option::Option<u32>,
16647    #[prost(uint32, optional, tag="11")]
16648    pub timecode_seconds: ::core::option::Option<u32>,
16649    #[prost(uint32, optional, tag="12")]
16650    pub timecode_type: ::core::option::Option<u32>,
16651    #[prost(uint32, optional, tag="13")]
16652    pub timecode_userbits0: ::core::option::Option<u32>,
16653    #[prost(uint32, optional, tag="14")]
16654    pub timecode_userbits1: ::core::option::Option<u32>,
16655    #[prost(uint32, optional, tag="15")]
16656    pub timecode_userbits2: ::core::option::Option<u32>,
16657    #[prost(uint32, optional, tag="16")]
16658    pub timecode_userbits3: ::core::option::Option<u32>,
16659    #[prost(int64, optional, tag="17")]
16660    pub timestamp: ::core::option::Option<i64>,
16661    #[prost(uint32, optional, tag="18")]
16662    pub r#type: ::core::option::Option<u32>,
16663}
16664#[derive(Clone, PartialEq, ::prost::Message)]
16665pub struct V4l2DqbufFtraceEvent {
16666    #[prost(uint32, optional, tag="1")]
16667    pub bytesused: ::core::option::Option<u32>,
16668    #[prost(uint32, optional, tag="2")]
16669    pub field: ::core::option::Option<u32>,
16670    #[prost(uint32, optional, tag="3")]
16671    pub flags: ::core::option::Option<u32>,
16672    #[prost(uint32, optional, tag="4")]
16673    pub index: ::core::option::Option<u32>,
16674    #[prost(int32, optional, tag="5")]
16675    pub minor: ::core::option::Option<i32>,
16676    #[prost(uint32, optional, tag="6")]
16677    pub sequence: ::core::option::Option<u32>,
16678    #[prost(uint32, optional, tag="7")]
16679    pub timecode_flags: ::core::option::Option<u32>,
16680    #[prost(uint32, optional, tag="8")]
16681    pub timecode_frames: ::core::option::Option<u32>,
16682    #[prost(uint32, optional, tag="9")]
16683    pub timecode_hours: ::core::option::Option<u32>,
16684    #[prost(uint32, optional, tag="10")]
16685    pub timecode_minutes: ::core::option::Option<u32>,
16686    #[prost(uint32, optional, tag="11")]
16687    pub timecode_seconds: ::core::option::Option<u32>,
16688    #[prost(uint32, optional, tag="12")]
16689    pub timecode_type: ::core::option::Option<u32>,
16690    #[prost(uint32, optional, tag="13")]
16691    pub timecode_userbits0: ::core::option::Option<u32>,
16692    #[prost(uint32, optional, tag="14")]
16693    pub timecode_userbits1: ::core::option::Option<u32>,
16694    #[prost(uint32, optional, tag="15")]
16695    pub timecode_userbits2: ::core::option::Option<u32>,
16696    #[prost(uint32, optional, tag="16")]
16697    pub timecode_userbits3: ::core::option::Option<u32>,
16698    #[prost(int64, optional, tag="17")]
16699    pub timestamp: ::core::option::Option<i64>,
16700    #[prost(uint32, optional, tag="18")]
16701    pub r#type: ::core::option::Option<u32>,
16702}
16703#[derive(Clone, PartialEq, ::prost::Message)]
16704pub struct Vb2V4l2BufQueueFtraceEvent {
16705    #[prost(uint32, optional, tag="1")]
16706    pub field: ::core::option::Option<u32>,
16707    #[prost(uint32, optional, tag="2")]
16708    pub flags: ::core::option::Option<u32>,
16709    #[prost(int32, optional, tag="3")]
16710    pub minor: ::core::option::Option<i32>,
16711    #[prost(uint32, optional, tag="4")]
16712    pub sequence: ::core::option::Option<u32>,
16713    #[prost(uint32, optional, tag="5")]
16714    pub timecode_flags: ::core::option::Option<u32>,
16715    #[prost(uint32, optional, tag="6")]
16716    pub timecode_frames: ::core::option::Option<u32>,
16717    #[prost(uint32, optional, tag="7")]
16718    pub timecode_hours: ::core::option::Option<u32>,
16719    #[prost(uint32, optional, tag="8")]
16720    pub timecode_minutes: ::core::option::Option<u32>,
16721    #[prost(uint32, optional, tag="9")]
16722    pub timecode_seconds: ::core::option::Option<u32>,
16723    #[prost(uint32, optional, tag="10")]
16724    pub timecode_type: ::core::option::Option<u32>,
16725    #[prost(uint32, optional, tag="11")]
16726    pub timecode_userbits0: ::core::option::Option<u32>,
16727    #[prost(uint32, optional, tag="12")]
16728    pub timecode_userbits1: ::core::option::Option<u32>,
16729    #[prost(uint32, optional, tag="13")]
16730    pub timecode_userbits2: ::core::option::Option<u32>,
16731    #[prost(uint32, optional, tag="14")]
16732    pub timecode_userbits3: ::core::option::Option<u32>,
16733    #[prost(int64, optional, tag="15")]
16734    pub timestamp: ::core::option::Option<i64>,
16735}
16736#[derive(Clone, PartialEq, ::prost::Message)]
16737pub struct Vb2V4l2BufDoneFtraceEvent {
16738    #[prost(uint32, optional, tag="1")]
16739    pub field: ::core::option::Option<u32>,
16740    #[prost(uint32, optional, tag="2")]
16741    pub flags: ::core::option::Option<u32>,
16742    #[prost(int32, optional, tag="3")]
16743    pub minor: ::core::option::Option<i32>,
16744    #[prost(uint32, optional, tag="4")]
16745    pub sequence: ::core::option::Option<u32>,
16746    #[prost(uint32, optional, tag="5")]
16747    pub timecode_flags: ::core::option::Option<u32>,
16748    #[prost(uint32, optional, tag="6")]
16749    pub timecode_frames: ::core::option::Option<u32>,
16750    #[prost(uint32, optional, tag="7")]
16751    pub timecode_hours: ::core::option::Option<u32>,
16752    #[prost(uint32, optional, tag="8")]
16753    pub timecode_minutes: ::core::option::Option<u32>,
16754    #[prost(uint32, optional, tag="9")]
16755    pub timecode_seconds: ::core::option::Option<u32>,
16756    #[prost(uint32, optional, tag="10")]
16757    pub timecode_type: ::core::option::Option<u32>,
16758    #[prost(uint32, optional, tag="11")]
16759    pub timecode_userbits0: ::core::option::Option<u32>,
16760    #[prost(uint32, optional, tag="12")]
16761    pub timecode_userbits1: ::core::option::Option<u32>,
16762    #[prost(uint32, optional, tag="13")]
16763    pub timecode_userbits2: ::core::option::Option<u32>,
16764    #[prost(uint32, optional, tag="14")]
16765    pub timecode_userbits3: ::core::option::Option<u32>,
16766    #[prost(int64, optional, tag="15")]
16767    pub timestamp: ::core::option::Option<i64>,
16768}
16769#[derive(Clone, PartialEq, ::prost::Message)]
16770pub struct Vb2V4l2QbufFtraceEvent {
16771    #[prost(uint32, optional, tag="1")]
16772    pub field: ::core::option::Option<u32>,
16773    #[prost(uint32, optional, tag="2")]
16774    pub flags: ::core::option::Option<u32>,
16775    #[prost(int32, optional, tag="3")]
16776    pub minor: ::core::option::Option<i32>,
16777    #[prost(uint32, optional, tag="4")]
16778    pub sequence: ::core::option::Option<u32>,
16779    #[prost(uint32, optional, tag="5")]
16780    pub timecode_flags: ::core::option::Option<u32>,
16781    #[prost(uint32, optional, tag="6")]
16782    pub timecode_frames: ::core::option::Option<u32>,
16783    #[prost(uint32, optional, tag="7")]
16784    pub timecode_hours: ::core::option::Option<u32>,
16785    #[prost(uint32, optional, tag="8")]
16786    pub timecode_minutes: ::core::option::Option<u32>,
16787    #[prost(uint32, optional, tag="9")]
16788    pub timecode_seconds: ::core::option::Option<u32>,
16789    #[prost(uint32, optional, tag="10")]
16790    pub timecode_type: ::core::option::Option<u32>,
16791    #[prost(uint32, optional, tag="11")]
16792    pub timecode_userbits0: ::core::option::Option<u32>,
16793    #[prost(uint32, optional, tag="12")]
16794    pub timecode_userbits1: ::core::option::Option<u32>,
16795    #[prost(uint32, optional, tag="13")]
16796    pub timecode_userbits2: ::core::option::Option<u32>,
16797    #[prost(uint32, optional, tag="14")]
16798    pub timecode_userbits3: ::core::option::Option<u32>,
16799    #[prost(int64, optional, tag="15")]
16800    pub timestamp: ::core::option::Option<i64>,
16801}
16802#[derive(Clone, PartialEq, ::prost::Message)]
16803pub struct Vb2V4l2DqbufFtraceEvent {
16804    #[prost(uint32, optional, tag="1")]
16805    pub field: ::core::option::Option<u32>,
16806    #[prost(uint32, optional, tag="2")]
16807    pub flags: ::core::option::Option<u32>,
16808    #[prost(int32, optional, tag="3")]
16809    pub minor: ::core::option::Option<i32>,
16810    #[prost(uint32, optional, tag="4")]
16811    pub sequence: ::core::option::Option<u32>,
16812    #[prost(uint32, optional, tag="5")]
16813    pub timecode_flags: ::core::option::Option<u32>,
16814    #[prost(uint32, optional, tag="6")]
16815    pub timecode_frames: ::core::option::Option<u32>,
16816    #[prost(uint32, optional, tag="7")]
16817    pub timecode_hours: ::core::option::Option<u32>,
16818    #[prost(uint32, optional, tag="8")]
16819    pub timecode_minutes: ::core::option::Option<u32>,
16820    #[prost(uint32, optional, tag="9")]
16821    pub timecode_seconds: ::core::option::Option<u32>,
16822    #[prost(uint32, optional, tag="10")]
16823    pub timecode_type: ::core::option::Option<u32>,
16824    #[prost(uint32, optional, tag="11")]
16825    pub timecode_userbits0: ::core::option::Option<u32>,
16826    #[prost(uint32, optional, tag="12")]
16827    pub timecode_userbits1: ::core::option::Option<u32>,
16828    #[prost(uint32, optional, tag="13")]
16829    pub timecode_userbits2: ::core::option::Option<u32>,
16830    #[prost(uint32, optional, tag="14")]
16831    pub timecode_userbits3: ::core::option::Option<u32>,
16832    #[prost(int64, optional, tag="15")]
16833    pub timestamp: ::core::option::Option<i64>,
16834}
16835// End of protos/perfetto/trace/ftrace/v4l2.proto
16836
16837// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
16838
16839#[derive(Clone, PartialEq, ::prost::Message)]
16840pub struct VirtioGpuCmdQueueFtraceEvent {
16841    #[prost(uint32, optional, tag="1")]
16842    pub ctx_id: ::core::option::Option<u32>,
16843    #[prost(int32, optional, tag="2")]
16844    pub dev: ::core::option::Option<i32>,
16845    #[prost(uint64, optional, tag="3")]
16846    pub fence_id: ::core::option::Option<u64>,
16847    #[prost(uint32, optional, tag="4")]
16848    pub flags: ::core::option::Option<u32>,
16849    #[prost(string, optional, tag="5")]
16850    pub name: ::core::option::Option<::prost::alloc::string::String>,
16851    #[prost(uint32, optional, tag="6")]
16852    pub num_free: ::core::option::Option<u32>,
16853    #[prost(uint32, optional, tag="7")]
16854    pub seqno: ::core::option::Option<u32>,
16855    #[prost(uint32, optional, tag="8")]
16856    pub r#type: ::core::option::Option<u32>,
16857    #[prost(uint32, optional, tag="9")]
16858    pub vq: ::core::option::Option<u32>,
16859}
16860#[derive(Clone, PartialEq, ::prost::Message)]
16861pub struct VirtioGpuCmdResponseFtraceEvent {
16862    #[prost(uint32, optional, tag="1")]
16863    pub ctx_id: ::core::option::Option<u32>,
16864    #[prost(int32, optional, tag="2")]
16865    pub dev: ::core::option::Option<i32>,
16866    #[prost(uint64, optional, tag="3")]
16867    pub fence_id: ::core::option::Option<u64>,
16868    #[prost(uint32, optional, tag="4")]
16869    pub flags: ::core::option::Option<u32>,
16870    #[prost(string, optional, tag="5")]
16871    pub name: ::core::option::Option<::prost::alloc::string::String>,
16872    #[prost(uint32, optional, tag="6")]
16873    pub num_free: ::core::option::Option<u32>,
16874    #[prost(uint32, optional, tag="7")]
16875    pub seqno: ::core::option::Option<u32>,
16876    #[prost(uint32, optional, tag="8")]
16877    pub r#type: ::core::option::Option<u32>,
16878    #[prost(uint32, optional, tag="9")]
16879    pub vq: ::core::option::Option<u32>,
16880}
16881// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
16882
16883// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
16884
16885#[derive(Clone, PartialEq, ::prost::Message)]
16886pub struct VirtioVideoCmdFtraceEvent {
16887    #[prost(uint32, optional, tag="1")]
16888    pub stream_id: ::core::option::Option<u32>,
16889    #[prost(uint32, optional, tag="2")]
16890    pub r#type: ::core::option::Option<u32>,
16891}
16892#[derive(Clone, PartialEq, ::prost::Message)]
16893pub struct VirtioVideoCmdDoneFtraceEvent {
16894    #[prost(uint32, optional, tag="1")]
16895    pub stream_id: ::core::option::Option<u32>,
16896    #[prost(uint32, optional, tag="2")]
16897    pub r#type: ::core::option::Option<u32>,
16898}
16899#[derive(Clone, PartialEq, ::prost::Message)]
16900pub struct VirtioVideoResourceQueueFtraceEvent {
16901    #[prost(uint32, optional, tag="1")]
16902    pub data_size0: ::core::option::Option<u32>,
16903    #[prost(uint32, optional, tag="2")]
16904    pub data_size1: ::core::option::Option<u32>,
16905    #[prost(uint32, optional, tag="3")]
16906    pub data_size2: ::core::option::Option<u32>,
16907    #[prost(uint32, optional, tag="4")]
16908    pub data_size3: ::core::option::Option<u32>,
16909    #[prost(uint32, optional, tag="5")]
16910    pub queue_type: ::core::option::Option<u32>,
16911    #[prost(int32, optional, tag="6")]
16912    pub resource_id: ::core::option::Option<i32>,
16913    #[prost(int32, optional, tag="7")]
16914    pub stream_id: ::core::option::Option<i32>,
16915    #[prost(uint64, optional, tag="8")]
16916    pub timestamp: ::core::option::Option<u64>,
16917}
16918#[derive(Clone, PartialEq, ::prost::Message)]
16919pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16920    #[prost(uint32, optional, tag="1")]
16921    pub data_size0: ::core::option::Option<u32>,
16922    #[prost(uint32, optional, tag="2")]
16923    pub data_size1: ::core::option::Option<u32>,
16924    #[prost(uint32, optional, tag="3")]
16925    pub data_size2: ::core::option::Option<u32>,
16926    #[prost(uint32, optional, tag="4")]
16927    pub data_size3: ::core::option::Option<u32>,
16928    #[prost(uint32, optional, tag="5")]
16929    pub queue_type: ::core::option::Option<u32>,
16930    #[prost(int32, optional, tag="6")]
16931    pub resource_id: ::core::option::Option<i32>,
16932    #[prost(int32, optional, tag="7")]
16933    pub stream_id: ::core::option::Option<i32>,
16934    #[prost(uint64, optional, tag="8")]
16935    pub timestamp: ::core::option::Option<u64>,
16936}
16937// End of protos/perfetto/trace/ftrace/virtio_video.proto
16938
16939// Begin of protos/perfetto/trace/ftrace/vmscan.proto
16940
16941#[derive(Clone, PartialEq, ::prost::Message)]
16942pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16943    #[prost(int32, optional, tag="1")]
16944    pub order: ::core::option::Option<i32>,
16945    #[prost(int32, optional, tag="2")]
16946    pub may_writepage: ::core::option::Option<i32>,
16947    #[prost(uint32, optional, tag="3")]
16948    pub gfp_flags: ::core::option::Option<u32>,
16949}
16950#[derive(Clone, PartialEq, ::prost::Message)]
16951pub struct MmVmscanDirectReclaimEndFtraceEvent {
16952    #[prost(uint64, optional, tag="1")]
16953    pub nr_reclaimed: ::core::option::Option<u64>,
16954}
16955#[derive(Clone, PartialEq, ::prost::Message)]
16956pub struct MmVmscanKswapdWakeFtraceEvent {
16957    #[prost(int32, optional, tag="1")]
16958    pub nid: ::core::option::Option<i32>,
16959    #[prost(int32, optional, tag="2")]
16960    pub order: ::core::option::Option<i32>,
16961    #[prost(int32, optional, tag="3")]
16962    pub zid: ::core::option::Option<i32>,
16963}
16964#[derive(Clone, PartialEq, ::prost::Message)]
16965pub struct MmVmscanKswapdSleepFtraceEvent {
16966    #[prost(int32, optional, tag="1")]
16967    pub nid: ::core::option::Option<i32>,
16968}
16969#[derive(Clone, PartialEq, ::prost::Message)]
16970pub struct MmShrinkSlabStartFtraceEvent {
16971    #[prost(uint64, optional, tag="1")]
16972    pub cache_items: ::core::option::Option<u64>,
16973    #[prost(uint64, optional, tag="2")]
16974    pub delta: ::core::option::Option<u64>,
16975    #[prost(uint32, optional, tag="3")]
16976    pub gfp_flags: ::core::option::Option<u32>,
16977    #[prost(uint64, optional, tag="4")]
16978    pub lru_pgs: ::core::option::Option<u64>,
16979    #[prost(int64, optional, tag="5")]
16980    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16981    #[prost(uint64, optional, tag="6")]
16982    pub pgs_scanned: ::core::option::Option<u64>,
16983    #[prost(uint64, optional, tag="7")]
16984    pub shr: ::core::option::Option<u64>,
16985    #[prost(uint64, optional, tag="8")]
16986    pub shrink: ::core::option::Option<u64>,
16987    #[prost(uint64, optional, tag="9")]
16988    pub total_scan: ::core::option::Option<u64>,
16989    #[prost(int32, optional, tag="10")]
16990    pub nid: ::core::option::Option<i32>,
16991    #[prost(int32, optional, tag="11")]
16992    pub priority: ::core::option::Option<i32>,
16993}
16994#[derive(Clone, PartialEq, ::prost::Message)]
16995pub struct MmShrinkSlabEndFtraceEvent {
16996    #[prost(int64, optional, tag="1")]
16997    pub new_scan: ::core::option::Option<i64>,
16998    #[prost(int32, optional, tag="2")]
16999    pub retval: ::core::option::Option<i32>,
17000    #[prost(uint64, optional, tag="3")]
17001    pub shr: ::core::option::Option<u64>,
17002    #[prost(uint64, optional, tag="4")]
17003    pub shrink: ::core::option::Option<u64>,
17004    #[prost(int64, optional, tag="5")]
17005    pub total_scan: ::core::option::Option<i64>,
17006    #[prost(int64, optional, tag="6")]
17007    pub unused_scan: ::core::option::Option<i64>,
17008    #[prost(int32, optional, tag="7")]
17009    pub nid: ::core::option::Option<i32>,
17010}
17011// End of protos/perfetto/trace/ftrace/vmscan.proto
17012
17013// Begin of protos/perfetto/trace/ftrace/workqueue.proto
17014
17015#[derive(Clone, PartialEq, ::prost::Message)]
17016pub struct WorkqueueActivateWorkFtraceEvent {
17017    #[prost(uint64, optional, tag="1")]
17018    pub work: ::core::option::Option<u64>,
17019    #[prost(uint64, optional, tag="2")]
17020    pub function: ::core::option::Option<u64>,
17021}
17022#[derive(Clone, PartialEq, ::prost::Message)]
17023pub struct WorkqueueExecuteEndFtraceEvent {
17024    #[prost(uint64, optional, tag="1")]
17025    pub work: ::core::option::Option<u64>,
17026    #[prost(uint64, optional, tag="2")]
17027    pub function: ::core::option::Option<u64>,
17028}
17029#[derive(Clone, PartialEq, ::prost::Message)]
17030pub struct WorkqueueExecuteStartFtraceEvent {
17031    #[prost(uint64, optional, tag="1")]
17032    pub work: ::core::option::Option<u64>,
17033    #[prost(uint64, optional, tag="2")]
17034    pub function: ::core::option::Option<u64>,
17035}
17036#[derive(Clone, PartialEq, ::prost::Message)]
17037pub struct WorkqueueQueueWorkFtraceEvent {
17038    #[prost(uint64, optional, tag="1")]
17039    pub work: ::core::option::Option<u64>,
17040    #[prost(uint64, optional, tag="2")]
17041    pub function: ::core::option::Option<u64>,
17042    #[prost(int32, optional, tag="4")]
17043    pub req_cpu: ::core::option::Option<i32>,
17044    #[prost(int32, optional, tag="5")]
17045    pub cpu: ::core::option::Option<i32>,
17046    #[prost(string, optional, tag="6")]
17047    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
17048}
17049// End of protos/perfetto/trace/ftrace/workqueue.proto
17050
17051// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
17052
17053#[derive(Clone, PartialEq, ::prost::Message)]
17054pub struct FtraceEvent {
17055    /// Timestamp in nanoseconds using .../tracing/trace_clock.
17056    #[prost(uint64, optional, tag="1")]
17057    pub timestamp: ::core::option::Option<u64>,
17058    /// Kernel pid (do not confuse with userspace pid aka tgid).
17059    #[prost(uint32, optional, tag="2")]
17060    pub pid: ::core::option::Option<u32>,
17061    /// Not populated in actual traces. Wire format might change.
17062    /// Placeholder declaration so that the ftrace parsing code accepts the
17063    /// existence of this common field. If this becomes needed for all events:
17064    /// consider merging with common_preempt_count to avoid extra proto tags.
17065    #[prost(uint32, optional, tag="5")]
17066    pub common_flags: ::core::option::Option<u32>,
17067    #[prost(oneof="ftrace_event::Event", tags="3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604")]
17068    pub event: ::core::option::Option<ftrace_event::Event>,
17069}
17070/// Nested message and enum types in `FtraceEvent`.
17071pub mod ftrace_event {
17072    #[derive(Clone, PartialEq, ::prost::Oneof)]
17073    pub enum Event {
17074        #[prost(message, tag="3")]
17075        Print(super::PrintFtraceEvent),
17076        #[prost(message, tag="4")]
17077        SchedSwitch(super::SchedSwitchFtraceEvent),
17078        /// removed field with id 5;
17079        /// removed field with id 6;
17080        /// removed field with id 7;
17081        /// removed field with id 8;
17082        /// removed field with id 9;
17083        /// removed field with id 10;
17084        #[prost(message, tag="11")]
17085        CpuFrequency(super::CpuFrequencyFtraceEvent),
17086        #[prost(message, tag="12")]
17087        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
17088        #[prost(message, tag="13")]
17089        CpuIdle(super::CpuIdleFtraceEvent),
17090        #[prost(message, tag="14")]
17091        ClockEnable(super::ClockEnableFtraceEvent),
17092        #[prost(message, tag="15")]
17093        ClockDisable(super::ClockDisableFtraceEvent),
17094        #[prost(message, tag="16")]
17095        ClockSetRate(super::ClockSetRateFtraceEvent),
17096        #[prost(message, tag="17")]
17097        SchedWakeup(super::SchedWakeupFtraceEvent),
17098        #[prost(message, tag="18")]
17099        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
17100        #[prost(message, tag="19")]
17101        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
17102        #[prost(message, tag="20")]
17103        SchedWaking(super::SchedWakingFtraceEvent),
17104        #[prost(message, tag="21")]
17105        IpiEntry(super::IpiEntryFtraceEvent),
17106        #[prost(message, tag="22")]
17107        IpiExit(super::IpiExitFtraceEvent),
17108        #[prost(message, tag="23")]
17109        IpiRaise(super::IpiRaiseFtraceEvent),
17110        #[prost(message, tag="24")]
17111        SoftirqEntry(super::SoftirqEntryFtraceEvent),
17112        #[prost(message, tag="25")]
17113        SoftirqExit(super::SoftirqExitFtraceEvent),
17114        #[prost(message, tag="26")]
17115        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
17116        #[prost(message, tag="27")]
17117        I2cRead(super::I2cReadFtraceEvent),
17118        #[prost(message, tag="28")]
17119        I2cWrite(super::I2cWriteFtraceEvent),
17120        #[prost(message, tag="29")]
17121        I2cResult(super::I2cResultFtraceEvent),
17122        #[prost(message, tag="30")]
17123        I2cReply(super::I2cReplyFtraceEvent),
17124        #[prost(message, tag="31")]
17125        SmbusRead(super::SmbusReadFtraceEvent),
17126        #[prost(message, tag="32")]
17127        SmbusWrite(super::SmbusWriteFtraceEvent),
17128        #[prost(message, tag="33")]
17129        SmbusResult(super::SmbusResultFtraceEvent),
17130        #[prost(message, tag="34")]
17131        SmbusReply(super::SmbusReplyFtraceEvent),
17132        #[prost(message, tag="35")]
17133        LowmemoryKill(super::LowmemoryKillFtraceEvent),
17134        #[prost(message, tag="36")]
17135        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
17136        #[prost(message, tag="37")]
17137        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
17138        #[prost(message, tag="38")]
17139        SyncPt(super::SyncPtFtraceEvent),
17140        #[prost(message, tag="39")]
17141        SyncTimeline(super::SyncTimelineFtraceEvent),
17142        #[prost(message, tag="40")]
17143        SyncWait(super::SyncWaitFtraceEvent),
17144        #[prost(message, tag="41")]
17145        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
17146        #[prost(message, tag="42")]
17147        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
17148        #[prost(message, tag="43")]
17149        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
17150        #[prost(message, tag="44")]
17151        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
17152        #[prost(message, tag="45")]
17153        BlockRqIssue(super::BlockRqIssueFtraceEvent),
17154        #[prost(message, tag="46")]
17155        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
17156        #[prost(message, tag="47")]
17157        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
17158        #[prost(message, tag="48")]
17159        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
17160        #[prost(message, tag="49")]
17161        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
17162        #[prost(message, tag="50")]
17163        BinderTransaction(super::BinderTransactionFtraceEvent),
17164        #[prost(message, tag="51")]
17165        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
17166        #[prost(message, tag="52")]
17167        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
17168        #[prost(message, tag="53")]
17169        BinderLock(super::BinderLockFtraceEvent),
17170        #[prost(message, tag="54")]
17171        BinderLocked(super::BinderLockedFtraceEvent),
17172        #[prost(message, tag="55")]
17173        BinderUnlock(super::BinderUnlockFtraceEvent),
17174        #[prost(message, tag="56")]
17175        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
17176        #[prost(message, tag="57")]
17177        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
17178        #[prost(message, tag="58")]
17179        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
17180        #[prost(message, tag="59")]
17181        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
17182        #[prost(message, tag="60")]
17183        RegulatorDisable(super::RegulatorDisableFtraceEvent),
17184        #[prost(message, tag="61")]
17185        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
17186        #[prost(message, tag="62")]
17187        RegulatorEnable(super::RegulatorEnableFtraceEvent),
17188        #[prost(message, tag="63")]
17189        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
17190        #[prost(message, tag="64")]
17191        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
17192        #[prost(message, tag="65")]
17193        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
17194        #[prost(message, tag="66")]
17195        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
17196        #[prost(message, tag="67")]
17197        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
17198        #[prost(message, tag="68")]
17199        CgroupMkdir(super::CgroupMkdirFtraceEvent),
17200        #[prost(message, tag="69")]
17201        CgroupRemount(super::CgroupRemountFtraceEvent),
17202        #[prost(message, tag="70")]
17203        CgroupRmdir(super::CgroupRmdirFtraceEvent),
17204        #[prost(message, tag="71")]
17205        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
17206        #[prost(message, tag="72")]
17207        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
17208        #[prost(message, tag="73")]
17209        CgroupRelease(super::CgroupReleaseFtraceEvent),
17210        #[prost(message, tag="74")]
17211        CgroupRename(super::CgroupRenameFtraceEvent),
17212        #[prost(message, tag="75")]
17213        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
17214        #[prost(message, tag="76")]
17215        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
17216        #[prost(message, tag="77")]
17217        MdpCommit(super::MdpCommitFtraceEvent),
17218        #[prost(message, tag="78")]
17219        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
17220        #[prost(message, tag="79")]
17221        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
17222        #[prost(message, tag="80")]
17223        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
17224        #[prost(message, tag="81")]
17225        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
17226        #[prost(message, tag="82")]
17227        MdpCompareBw(super::MdpCompareBwFtraceEvent),
17228        #[prost(message, tag="83")]
17229        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
17230        #[prost(message, tag="84")]
17231        MdpSsppSet(super::MdpSsppSetFtraceEvent),
17232        #[prost(message, tag="85")]
17233        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
17234        #[prost(message, tag="86")]
17235        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
17236        #[prost(message, tag="87")]
17237        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
17238        #[prost(message, tag="88")]
17239        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
17240        #[prost(message, tag="89")]
17241        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
17242        #[prost(message, tag="90")]
17243        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
17244        #[prost(message, tag="91")]
17245        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
17246        #[prost(message, tag="92")]
17247        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
17248        #[prost(message, tag="93")]
17249        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
17250        #[prost(message, tag="94")]
17251        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
17252        #[prost(message, tag="95")]
17253        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
17254        #[prost(message, tag="96")]
17255        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
17256        #[prost(message, tag="97")]
17257        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
17258        #[prost(message, tag="98")]
17259        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
17260        #[prost(message, tag="99")]
17261        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
17262        #[prost(message, tag="100")]
17263        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
17264        #[prost(message, tag="101")]
17265        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
17266        #[prost(message, tag="102")]
17267        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
17268        #[prost(message, tag="103")]
17269        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
17270        #[prost(message, tag="104")]
17271        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
17272        #[prost(message, tag="105")]
17273        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
17274        #[prost(message, tag="106")]
17275        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
17276        #[prost(message, tag="107")]
17277        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
17278        #[prost(message, tag="108")]
17279        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
17280        #[prost(message, tag="109")]
17281        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
17282        #[prost(message, tag="110")]
17283        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
17284        #[prost(message, tag="111")]
17285        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
17286        #[prost(message, tag="112")]
17287        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
17288        #[prost(message, tag="113")]
17289        SuspendResume(super::SuspendResumeFtraceEvent),
17290        #[prost(message, tag="114")]
17291        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
17292        #[prost(message, tag="115")]
17293        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
17294        #[prost(message, tag="116")]
17295        BlockBioBounce(super::BlockBioBounceFtraceEvent),
17296        #[prost(message, tag="117")]
17297        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
17298        #[prost(message, tag="118")]
17299        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
17300        #[prost(message, tag="119")]
17301        BlockBioQueue(super::BlockBioQueueFtraceEvent),
17302        #[prost(message, tag="120")]
17303        BlockBioRemap(super::BlockBioRemapFtraceEvent),
17304        #[prost(message, tag="121")]
17305        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
17306        #[prost(message, tag="122")]
17307        BlockGetrq(super::BlockGetrqFtraceEvent),
17308        #[prost(message, tag="123")]
17309        BlockPlug(super::BlockPlugFtraceEvent),
17310        #[prost(message, tag="124")]
17311        BlockRqAbort(super::BlockRqAbortFtraceEvent),
17312        #[prost(message, tag="125")]
17313        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
17314        #[prost(message, tag="126")]
17315        BlockRqInsert(super::BlockRqInsertFtraceEvent),
17316        /// removed field with id 127;
17317        #[prost(message, tag="128")]
17318        BlockRqRemap(super::BlockRqRemapFtraceEvent),
17319        #[prost(message, tag="129")]
17320        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
17321        #[prost(message, tag="130")]
17322        BlockSleeprq(super::BlockSleeprqFtraceEvent),
17323        #[prost(message, tag="131")]
17324        BlockSplit(super::BlockSplitFtraceEvent),
17325        #[prost(message, tag="132")]
17326        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
17327        #[prost(message, tag="133")]
17328        BlockUnplug(super::BlockUnplugFtraceEvent),
17329        #[prost(message, tag="134")]
17330        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
17331        #[prost(message, tag="135")]
17332        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
17333        #[prost(message, tag="136")]
17334        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
17335        #[prost(message, tag="137")]
17336        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
17337        #[prost(message, tag="138")]
17338        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
17339        #[prost(message, tag="139")]
17340        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
17341        #[prost(message, tag="140")]
17342        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
17343        #[prost(message, tag="141")]
17344        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
17345        #[prost(message, tag="142")]
17346        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
17347        #[prost(message, tag="143")]
17348        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
17349        #[prost(message, tag="144")]
17350        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
17351        #[prost(message, tag="145")]
17352        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
17353        #[prost(message, tag="146")]
17354        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
17355        #[prost(message, tag="147")]
17356        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
17357        #[prost(message, tag="148")]
17358        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
17359        #[prost(message, tag="149")]
17360        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
17361        #[prost(message, tag="150")]
17362        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
17363        #[prost(message, tag="151")]
17364        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
17365        #[prost(message, tag="152")]
17366        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
17367        #[prost(message, tag="153")]
17368        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
17369        #[prost(message, tag="154")]
17370        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
17371        #[prost(message, tag="155")]
17372        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
17373        #[prost(message, tag="156")]
17374        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
17375        #[prost(message, tag="157")]
17376        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
17377        #[prost(message, tag="158")]
17378        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
17379        #[prost(message, tag="159")]
17380        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
17381        #[prost(message, tag="160")]
17382        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
17383        #[prost(message, tag="161")]
17384        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
17385        #[prost(message, tag="162")]
17386        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
17387        #[prost(message, tag="163")]
17388        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
17389        #[prost(message, tag="164")]
17390        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
17391        #[prost(message, tag="165")]
17392        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
17393        #[prost(message, tag="166")]
17394        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
17395        #[prost(message, tag="167")]
17396        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
17397        #[prost(message, tag="168")]
17398        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
17399        #[prost(message, tag="169")]
17400        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
17401        #[prost(message, tag="170")]
17402        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
17403        #[prost(message, tag="171")]
17404        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
17405        #[prost(message, tag="172")]
17406        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
17407        #[prost(message, tag="173")]
17408        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
17409        #[prost(message, tag="174")]
17410        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
17411        #[prost(message, tag="175")]
17412        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
17413        #[prost(message, tag="176")]
17414        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
17415        #[prost(message, tag="177")]
17416        Ext4Forget(super::Ext4ForgetFtraceEvent),
17417        #[prost(message, tag="178")]
17418        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
17419        #[prost(message, tag="179")]
17420        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
17421        #[prost(message, tag="180")]
17422        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
17423        #[prost(message, tag="181")]
17424        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
17425        #[prost(message, tag="182")]
17426        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
17427        #[prost(message, tag="183")]
17428        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
17429        #[prost(message, tag="184")]
17430        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
17431        #[prost(message, tag="185")]
17432        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
17433        #[prost(message, tag="186")]
17434        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
17435        #[prost(message, tag="187")]
17436        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
17437        #[prost(message, tag="188")]
17438        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
17439        #[prost(message, tag="189")]
17440        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
17441        #[prost(message, tag="190")]
17442        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
17443        #[prost(message, tag="191")]
17444        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
17445        #[prost(message, tag="192")]
17446        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
17447        #[prost(message, tag="193")]
17448        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
17449        #[prost(message, tag="194")]
17450        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
17451        #[prost(message, tag="195")]
17452        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
17453        #[prost(message, tag="196")]
17454        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
17455        #[prost(message, tag="197")]
17456        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
17457        #[prost(message, tag="198")]
17458        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
17459        #[prost(message, tag="199")]
17460        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
17461        #[prost(message, tag="200")]
17462        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
17463        #[prost(message, tag="201")]
17464        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
17465        #[prost(message, tag="202")]
17466        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
17467        #[prost(message, tag="203")]
17468        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
17469        #[prost(message, tag="204")]
17470        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
17471        #[prost(message, tag="205")]
17472        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
17473        #[prost(message, tag="206")]
17474        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
17475        #[prost(message, tag="207")]
17476        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
17477        #[prost(message, tag="208")]
17478        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
17479        #[prost(message, tag="209")]
17480        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
17481        #[prost(message, tag="210")]
17482        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
17483        #[prost(message, tag="211")]
17484        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
17485        #[prost(message, tag="212")]
17486        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
17487        #[prost(message, tag="213")]
17488        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
17489        #[prost(message, tag="214")]
17490        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
17491        #[prost(message, tag="215")]
17492        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
17493        #[prost(message, tag="216")]
17494        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
17495        #[prost(message, tag="217")]
17496        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
17497        #[prost(message, tag="218")]
17498        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
17499        #[prost(message, tag="219")]
17500        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
17501        /// removed field with id 220;
17502        /// removed field with id 221;
17503        /// removed field with id 222;
17504        /// removed field with id 223;
17505        /// removed field with id 224;
17506        /// removed field with id 225;
17507        /// removed field with id 226;
17508        /// removed field with id 227;
17509        /// removed field with id 228;
17510        /// removed field with id 229;
17511        #[prost(message, tag="230")]
17512        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
17513        #[prost(message, tag="231")]
17514        Ext4Writepage(super::Ext4WritepageFtraceEvent),
17515        #[prost(message, tag="232")]
17516        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
17517        #[prost(message, tag="233")]
17518        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
17519        #[prost(message, tag="234")]
17520        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
17521        #[prost(message, tag="235")]
17522        TaskNewtask(super::TaskNewtaskFtraceEvent),
17523        #[prost(message, tag="236")]
17524        TaskRename(super::TaskRenameFtraceEvent),
17525        #[prost(message, tag="237")]
17526        SchedProcessExec(super::SchedProcessExecFtraceEvent),
17527        #[prost(message, tag="238")]
17528        SchedProcessExit(super::SchedProcessExitFtraceEvent),
17529        #[prost(message, tag="239")]
17530        SchedProcessFork(super::SchedProcessForkFtraceEvent),
17531        #[prost(message, tag="240")]
17532        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
17533        #[prost(message, tag="241")]
17534        SchedProcessHang(super::SchedProcessHangFtraceEvent),
17535        #[prost(message, tag="242")]
17536        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
17537        #[prost(message, tag="243")]
17538        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
17539        #[prost(message, tag="244")]
17540        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
17541        #[prost(message, tag="245")]
17542        F2fsFallocate(super::F2fsFallocateFtraceEvent),
17543        #[prost(message, tag="246")]
17544        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
17545        #[prost(message, tag="247")]
17546        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
17547        #[prost(message, tag="248")]
17548        F2fsIget(super::F2fsIgetFtraceEvent),
17549        #[prost(message, tag="249")]
17550        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
17551        #[prost(message, tag="250")]
17552        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
17553        #[prost(message, tag="251")]
17554        F2fsReadpage(super::F2fsReadpageFtraceEvent),
17555        #[prost(message, tag="252")]
17556        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
17557        #[prost(message, tag="253")]
17558        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
17559        #[prost(message, tag="254")]
17560        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
17561        #[prost(message, tag="255")]
17562        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
17563        #[prost(message, tag="256")]
17564        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
17565        #[prost(message, tag="257")]
17566        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
17567        #[prost(message, tag="258")]
17568        F2fsTruncate(super::F2fsTruncateFtraceEvent),
17569        #[prost(message, tag="259")]
17570        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
17571        #[prost(message, tag="260")]
17572        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
17573        #[prost(message, tag="261")]
17574        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
17575        #[prost(message, tag="262")]
17576        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
17577        #[prost(message, tag="263")]
17578        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
17579        #[prost(message, tag="264")]
17580        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
17581        #[prost(message, tag="265")]
17582        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
17583        #[prost(message, tag="266")]
17584        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
17585        #[prost(message, tag="267")]
17586        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
17587        #[prost(message, tag="268")]
17588        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
17589        #[prost(message, tag="269")]
17590        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
17591        #[prost(message, tag="270")]
17592        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
17593        #[prost(message, tag="271")]
17594        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
17595        #[prost(message, tag="272")]
17596        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
17597        #[prost(message, tag="273")]
17598        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
17599        #[prost(message, tag="274")]
17600        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
17601        #[prost(message, tag="275")]
17602        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
17603        #[prost(message, tag="276")]
17604        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
17605        #[prost(message, tag="277")]
17606        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
17607        #[prost(message, tag="278")]
17608        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
17609        #[prost(message, tag="279")]
17610        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
17611        #[prost(message, tag="280")]
17612        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
17613        #[prost(message, tag="281")]
17614        IommuMapRange(super::IommuMapRangeFtraceEvent),
17615        #[prost(message, tag="282")]
17616        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
17617        #[prost(message, tag="283")]
17618        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
17619        #[prost(message, tag="284")]
17620        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17621        #[prost(message, tag="285")]
17622        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17623        #[prost(message, tag="286")]
17624        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17625        #[prost(message, tag="287")]
17626        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17627        #[prost(message, tag="288")]
17628        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17629        #[prost(message, tag="289")]
17630        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17631        #[prost(message, tag="290")]
17632        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17633        #[prost(message, tag="291")]
17634        IonPrefetching(super::IonPrefetchingFtraceEvent),
17635        #[prost(message, tag="292")]
17636        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17637        #[prost(message, tag="293")]
17638        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17639        #[prost(message, tag="294")]
17640        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17641        #[prost(message, tag="295")]
17642        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17643        #[prost(message, tag="296")]
17644        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17645        #[prost(message, tag="297")]
17646        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17647        #[prost(message, tag="298")]
17648        Kfree(super::KfreeFtraceEvent),
17649        #[prost(message, tag="299")]
17650        Kmalloc(super::KmallocFtraceEvent),
17651        #[prost(message, tag="300")]
17652        KmallocNode(super::KmallocNodeFtraceEvent),
17653        #[prost(message, tag="301")]
17654        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17655        #[prost(message, tag="302")]
17656        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17657        #[prost(message, tag="303")]
17658        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17659        #[prost(message, tag="304")]
17660        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17661        #[prost(message, tag="305")]
17662        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17663        #[prost(message, tag="306")]
17664        MigrateRetry(super::MigrateRetryFtraceEvent),
17665        #[prost(message, tag="307")]
17666        MmPageAlloc(super::MmPageAllocFtraceEvent),
17667        #[prost(message, tag="308")]
17668        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17669        #[prost(message, tag="309")]
17670        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17671        #[prost(message, tag="310")]
17672        MmPageFree(super::MmPageFreeFtraceEvent),
17673        #[prost(message, tag="311")]
17674        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17675        #[prost(message, tag="312")]
17676        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17677        #[prost(message, tag="313")]
17678        RssStat(super::RssStatFtraceEvent),
17679        #[prost(message, tag="314")]
17680        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17681        #[prost(message, tag="315")]
17682        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17683        #[prost(message, tag="316")]
17684        FenceInit(super::FenceInitFtraceEvent),
17685        #[prost(message, tag="317")]
17686        FenceDestroy(super::FenceDestroyFtraceEvent),
17687        #[prost(message, tag="318")]
17688        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17689        #[prost(message, tag="319")]
17690        FenceSignaled(super::FenceSignaledFtraceEvent),
17691        #[prost(message, tag="320")]
17692        ClkEnable(super::ClkEnableFtraceEvent),
17693        #[prost(message, tag="321")]
17694        ClkDisable(super::ClkDisableFtraceEvent),
17695        #[prost(message, tag="322")]
17696        ClkSetRate(super::ClkSetRateFtraceEvent),
17697        #[prost(message, tag="323")]
17698        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17699        #[prost(message, tag="324")]
17700        SignalDeliver(super::SignalDeliverFtraceEvent),
17701        #[prost(message, tag="325")]
17702        SignalGenerate(super::SignalGenerateFtraceEvent),
17703        #[prost(message, tag="326")]
17704        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17705        #[prost(message, tag="327")]
17706        Generic(super::GenericFtraceEvent),
17707        #[prost(message, tag="328")]
17708        MmEventRecord(super::MmEventRecordFtraceEvent),
17709        #[prost(message, tag="329")]
17710        SysEnter(super::SysEnterFtraceEvent),
17711        #[prost(message, tag="330")]
17712        SysExit(super::SysExitFtraceEvent),
17713        #[prost(message, tag="331")]
17714        Zero(super::ZeroFtraceEvent),
17715        #[prost(message, tag="332")]
17716        GpuFrequency(super::GpuFrequencyFtraceEvent),
17717        #[prost(message, tag="333")]
17718        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
17719        #[prost(message, tag="334")]
17720        MarkVictim(super::MarkVictimFtraceEvent),
17721        #[prost(message, tag="335")]
17722        IonStat(super::IonStatFtraceEvent),
17723        #[prost(message, tag="336")]
17724        IonBufferCreate(super::IonBufferCreateFtraceEvent),
17725        #[prost(message, tag="337")]
17726        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
17727        #[prost(message, tag="338")]
17728        ScmCallStart(super::ScmCallStartFtraceEvent),
17729        #[prost(message, tag="339")]
17730        ScmCallEnd(super::ScmCallEndFtraceEvent),
17731        #[prost(message, tag="340")]
17732        GpuMemTotal(super::GpuMemTotalFtraceEvent),
17733        #[prost(message, tag="341")]
17734        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
17735        #[prost(message, tag="342")]
17736        CdevUpdate(super::CdevUpdateFtraceEvent),
17737        #[prost(message, tag="343")]
17738        CpuhpExit(super::CpuhpExitFtraceEvent),
17739        #[prost(message, tag="344")]
17740        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
17741        #[prost(message, tag="345")]
17742        CpuhpEnter(super::CpuhpEnterFtraceEvent),
17743        #[prost(message, tag="346")]
17744        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
17745        #[prost(message, tag="347")]
17746        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
17747        #[prost(message, tag="348")]
17748        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
17749        #[prost(message, tag="349")]
17750        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
17751        #[prost(message, tag="350")]
17752        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
17753        #[prost(message, tag="351")]
17754        DmaHeapStat(super::DmaHeapStatFtraceEvent),
17755        #[prost(message, tag="352")]
17756        CpuhpPause(super::CpuhpPauseFtraceEvent),
17757        #[prost(message, tag="353")]
17758        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
17759        #[prost(message, tag="354")]
17760        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
17761        #[prost(message, tag="355")]
17762        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
17763        #[prost(message, tag="356")]
17764        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
17765        #[prost(message, tag="357")]
17766        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
17767        #[prost(message, tag="358")]
17768        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
17769        #[prost(message, tag="359")]
17770        RssStatThrottled(super::RssStatThrottledFtraceEvent),
17771        #[prost(message, tag="360")]
17772        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
17773        #[prost(message, tag="361")]
17774        NetDevXmit(super::NetDevXmitFtraceEvent),
17775        #[prost(message, tag="362")]
17776        InetSockSetState(super::InetSockSetStateFtraceEvent),
17777        #[prost(message, tag="363")]
17778        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
17779        #[prost(message, tag="364")]
17780        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
17781        #[prost(message, tag="365")]
17782        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
17783        #[prost(message, tag="366")]
17784        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
17785        #[prost(message, tag="367")]
17786        KfreeSkb(super::KfreeSkbFtraceEvent),
17787        #[prost(message, tag="368")]
17788        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
17789        #[prost(message, tag="369")]
17790        KvmAckIrq(super::KvmAckIrqFtraceEvent),
17791        #[prost(message, tag="370")]
17792        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
17793        #[prost(message, tag="371")]
17794        KvmAgePage(super::KvmAgePageFtraceEvent),
17795        #[prost(message, tag="372")]
17796        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
17797        #[prost(message, tag="373")]
17798        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
17799        #[prost(message, tag="374")]
17800        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
17801        #[prost(message, tag="375")]
17802        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
17803        #[prost(message, tag="376")]
17804        KvmEntry(super::KvmEntryFtraceEvent),
17805        #[prost(message, tag="377")]
17806        KvmExit(super::KvmExitFtraceEvent),
17807        #[prost(message, tag="378")]
17808        KvmFpu(super::KvmFpuFtraceEvent),
17809        #[prost(message, tag="379")]
17810        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17811        #[prost(message, tag="380")]
17812        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17813        #[prost(message, tag="381")]
17814        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17815        #[prost(message, tag="382")]
17816        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17817        #[prost(message, tag="383")]
17818        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17819        #[prost(message, tag="384")]
17820        KvmMmio(super::KvmMmioFtraceEvent),
17821        #[prost(message, tag="385")]
17822        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17823        #[prost(message, tag="386")]
17824        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17825        #[prost(message, tag="387")]
17826        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17827        #[prost(message, tag="388")]
17828        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17829        #[prost(message, tag="389")]
17830        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17831        #[prost(message, tag="390")]
17832        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17833        #[prost(message, tag="391")]
17834        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17835        #[prost(message, tag="392")]
17836        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17837        #[prost(message, tag="393")]
17838        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17839        #[prost(message, tag="394")]
17840        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17841        #[prost(message, tag="395")]
17842        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17843        #[prost(message, tag="396")]
17844        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17845        #[prost(message, tag="397")]
17846        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17847        #[prost(message, tag="398")]
17848        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17849        #[prost(message, tag="399")]
17850        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17851        #[prost(message, tag="400")]
17852        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17853        #[prost(message, tag="401")]
17854        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17855        #[prost(message, tag="402")]
17856        TrapReg(super::TrapRegFtraceEvent),
17857        #[prost(message, tag="403")]
17858        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17859        #[prost(message, tag="404")]
17860        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17861        #[prost(message, tag="405")]
17862        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17863        #[prost(message, tag="406")]
17864        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17865        #[prost(message, tag="407")]
17866        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17867        #[prost(message, tag="408")]
17868        Console(super::ConsoleFtraceEvent),
17869        #[prost(message, tag="409")]
17870        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17871        #[prost(message, tag="410")]
17872        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17873        #[prost(message, tag="411")]
17874        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17875        #[prost(message, tag="412")]
17876        DrmRunJob(super::DrmRunJobFtraceEvent),
17877        #[prost(message, tag="413")]
17878        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17879        #[prost(message, tag="414")]
17880        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17881        #[prost(message, tag="415")]
17882        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17883        #[prost(message, tag="416")]
17884        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17885        #[prost(message, tag="417")]
17886        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17887        #[prost(message, tag="418")]
17888        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17889        #[prost(message, tag="419")]
17890        F2fsIostat(super::F2fsIostatFtraceEvent),
17891        #[prost(message, tag="420")]
17892        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17893        #[prost(message, tag="421")]
17894        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17895        #[prost(message, tag="422")]
17896        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17897        #[prost(message, tag="423")]
17898        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17899        #[prost(message, tag="424")]
17900        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17901        #[prost(message, tag="425")]
17902        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17903        #[prost(message, tag="426")]
17904        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17905        #[prost(message, tag="427")]
17906        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17907        #[prost(message, tag="428")]
17908        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17909        #[prost(message, tag="429")]
17910        DsiRx(super::DsiRxFtraceEvent),
17911        #[prost(message, tag="430")]
17912        DsiTx(super::DsiTxFtraceEvent),
17913        #[prost(message, tag="431")]
17914        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17915        #[prost(message, tag="432")]
17916        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17917        #[prost(message, tag="433")]
17918        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17919        #[prost(message, tag="434")]
17920        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17921        #[prost(message, tag="435")]
17922        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17923        #[prost(message, tag="436")]
17924        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17925        #[prost(message, tag="437")]
17926        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17927        #[prost(message, tag="438")]
17928        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17929        #[prost(message, tag="439")]
17930        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17931        #[prost(message, tag="440")]
17932        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17933        #[prost(message, tag="441")]
17934        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17935        #[prost(message, tag="442")]
17936        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17937        #[prost(message, tag="443")]
17938        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17939        #[prost(message, tag="444")]
17940        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17941        #[prost(message, tag="445")]
17942        TrustySmc(super::TrustySmcFtraceEvent),
17943        #[prost(message, tag="446")]
17944        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17945        #[prost(message, tag="447")]
17946        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17947        #[prost(message, tag="448")]
17948        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17949        #[prost(message, tag="449")]
17950        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17951        #[prost(message, tag="450")]
17952        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17953        #[prost(message, tag="451")]
17954        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17955        #[prost(message, tag="452")]
17956        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17957        #[prost(message, tag="453")]
17958        TrustyIrq(super::TrustyIrqFtraceEvent),
17959        #[prost(message, tag="454")]
17960        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17961        #[prost(message, tag="455")]
17962        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17963        #[prost(message, tag="456")]
17964        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17965        #[prost(message, tag="457")]
17966        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17967        #[prost(message, tag="458")]
17968        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17969        /// removed field with id 459;
17970        #[prost(message, tag="460")]
17971        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17972        #[prost(message, tag="461")]
17973        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17974        #[prost(message, tag="462")]
17975        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17976        /// removed field with id 463;
17977        #[prost(message, tag="464")]
17978        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17979        #[prost(message, tag="465")]
17980        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17981        #[prost(message, tag="466")]
17982        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17983        #[prost(message, tag="467")]
17984        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17985        #[prost(message, tag="468")]
17986        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17987        #[prost(message, tag="469")]
17988        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17989        #[prost(message, tag="470")]
17990        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17991        #[prost(message, tag="471")]
17992        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17993        #[prost(message, tag="472")]
17994        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17995        #[prost(message, tag="473")]
17996        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17997        #[prost(message, tag="474")]
17998        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17999        #[prost(message, tag="475")]
18000        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
18001        #[prost(message, tag="476")]
18002        HypEnter(super::HypEnterFtraceEvent),
18003        #[prost(message, tag="477")]
18004        HypExit(super::HypExitFtraceEvent),
18005        #[prost(message, tag="478")]
18006        HostHcall(super::HostHcallFtraceEvent),
18007        #[prost(message, tag="479")]
18008        HostSmc(super::HostSmcFtraceEvent),
18009        #[prost(message, tag="480")]
18010        HostMemAbort(super::HostMemAbortFtraceEvent),
18011        #[prost(message, tag="481")]
18012        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
18013        #[prost(message, tag="482")]
18014        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
18015        #[prost(message, tag="483")]
18016        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
18017        #[prost(message, tag="484")]
18018        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
18019        #[prost(message, tag="485")]
18020        BinderCommand(super::BinderCommandFtraceEvent),
18021        #[prost(message, tag="486")]
18022        BinderReturn(super::BinderReturnFtraceEvent),
18023        #[prost(message, tag="487")]
18024        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
18025        #[prost(message, tag="488")]
18026        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
18027        #[prost(message, tag="489")]
18028        RpmStatus(super::RpmStatusFtraceEvent),
18029        #[prost(message, tag="490")]
18030        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
18031        #[prost(message, tag="491")]
18032        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
18033        #[prost(message, tag="492")]
18034        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
18035        #[prost(message, tag="493")]
18036        DpuDsiRx(super::DpuDsiRxFtraceEvent),
18037        #[prost(message, tag="494")]
18038        DpuDsiTx(super::DpuDsiTxFtraceEvent),
18039        #[prost(message, tag="495")]
18040        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
18041        #[prost(message, tag="496")]
18042        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
18043        #[prost(message, tag="497")]
18044        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
18045        #[prost(message, tag="498")]
18046        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
18047        #[prost(message, tag="499")]
18048        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
18049        #[prost(message, tag="500")]
18050        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
18051        #[prost(message, tag="501")]
18052        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
18053        #[prost(message, tag="502")]
18054        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
18055        #[prost(message, tag="503")]
18056        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
18057        #[prost(message, tag="504")]
18058        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
18059        #[prost(message, tag="505")]
18060        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
18061        #[prost(message, tag="506")]
18062        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
18063        #[prost(message, tag="507")]
18064        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
18065        #[prost(message, tag="508")]
18066        DcvshFreq(super::DcvshFreqFtraceEvent),
18067        #[prost(message, tag="509")]
18068        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
18069        #[prost(message, tag="510")]
18070        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
18071        #[prost(message, tag="511")]
18072        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
18073        #[prost(message, tag="512")]
18074        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
18075        #[prost(message, tag="513")]
18076        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
18077        #[prost(message, tag="514")]
18078        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
18079        #[prost(message, tag="515")]
18080        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
18081        #[prost(message, tag="516")]
18082        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
18083        #[prost(message, tag="517")]
18084        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
18085        #[prost(message, tag="518")]
18086        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
18087        #[prost(message, tag="519")]
18088        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
18089        #[prost(message, tag="520")]
18090        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
18091        #[prost(message, tag="521")]
18092        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
18093        #[prost(message, tag="522")]
18094        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
18095        #[prost(message, tag="523")]
18096        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
18097        #[prost(message, tag="524")]
18098        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
18099        #[prost(message, tag="525")]
18100        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
18101        #[prost(message, tag="526")]
18102        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
18103        #[prost(message, tag="527")]
18104        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
18105        #[prost(message, tag="528")]
18106        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
18107        #[prost(message, tag="529")]
18108        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
18109        #[prost(message, tag="530")]
18110        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
18111        #[prost(message, tag="531")]
18112        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
18113        #[prost(message, tag="532")]
18114        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
18115        #[prost(message, tag="533")]
18116        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
18117        #[prost(message, tag="534")]
18118        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
18119        #[prost(message, tag="535")]
18120        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
18121        #[prost(message, tag="536")]
18122        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
18123        #[prost(message, tag="537")]
18124        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
18125        #[prost(message, tag="538")]
18126        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
18127        #[prost(message, tag="539")]
18128        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
18129        #[prost(message, tag="540")]
18130        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
18131        #[prost(message, tag="541")]
18132        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
18133        #[prost(message, tag="542")]
18134        KprobeEvent(super::KprobeEvent),
18135        #[prost(message, tag="543")]
18136        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
18137        #[prost(message, tag="544")]
18138        DoSysOpen(super::DoSysOpenFtraceEvent),
18139        #[prost(message, tag="545")]
18140        OpenExec(super::OpenExecFtraceEvent),
18141        #[prost(message, tag="546")]
18142        BlockIoStart(super::BlockIoStartFtraceEvent),
18143        #[prost(message, tag="547")]
18144        BlockIoDone(super::BlockIoDoneFtraceEvent),
18145        #[prost(message, tag="548")]
18146        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
18147        #[prost(message, tag="549")]
18148        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
18149        #[prost(message, tag="550")]
18150        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
18151        #[prost(message, tag="551")]
18152        HrtimerStart(super::HrtimerStartFtraceEvent),
18153        #[prost(message, tag="552")]
18154        HrtimerCancel(super::HrtimerCancelFtraceEvent),
18155        #[prost(message, tag="553")]
18156        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
18157        #[prost(message, tag="554")]
18158        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
18159        #[prost(message, tag="555")]
18160        TimerStart(super::TimerStartFtraceEvent),
18161        #[prost(message, tag="556")]
18162        TimerCancel(super::TimerCancelFtraceEvent),
18163        #[prost(message, tag="557")]
18164        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
18165        #[prost(message, tag="558")]
18166        TimerExpireExit(super::TimerExpireExitFtraceEvent),
18167        #[prost(message, tag="559")]
18168        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
18169        #[prost(message, tag="560")]
18170        LocalTimerExit(super::LocalTimerExitFtraceEvent),
18171        #[prost(message, tag="561")]
18172        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
18173        #[prost(message, tag="562")]
18174        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
18175        #[prost(message, tag="563")]
18176        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
18177        #[prost(message, tag="564")]
18178        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
18179        #[prost(message, tag="565")]
18180        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
18181        #[prost(message, tag="566")]
18182        Dwc3Event(super::Dwc3EventFtraceEvent),
18183        #[prost(message, tag="567")]
18184        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
18185        #[prost(message, tag="568")]
18186        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
18187        #[prost(message, tag="569")]
18188        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
18189        #[prost(message, tag="570")]
18190        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
18191        #[prost(message, tag="571")]
18192        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
18193        #[prost(message, tag="572")]
18194        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
18195        #[prost(message, tag="573")]
18196        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
18197        #[prost(message, tag="574")]
18198        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
18199        #[prost(message, tag="575")]
18200        Dwc3Writel(super::Dwc3WritelFtraceEvent),
18201        #[prost(message, tag="576")]
18202        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
18203        #[prost(message, tag="577")]
18204        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
18205        #[prost(message, tag="578")]
18206        HostFfaCall(super::HostFfaCallFtraceEvent),
18207        #[prost(message, tag="579")]
18208        DmabufRssStat(super::DmabufRssStatFtraceEvent),
18209        #[prost(message, tag="580")]
18210        IommuIdmap(super::IommuIdmapFtraceEvent),
18211        #[prost(message, tag="581")]
18212        PsciMemProtect(super::PsciMemProtectFtraceEvent),
18213        #[prost(message, tag="582")]
18214        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
18215        #[prost(message, tag="583")]
18216        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
18217        #[prost(message, tag="584")]
18218        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
18219        #[prost(message, tag="585")]
18220        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
18221        #[prost(message, tag="586")]
18222        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
18223        #[prost(message, tag="587")]
18224        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
18225        #[prost(message, tag="588")]
18226        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
18227        #[prost(message, tag="589")]
18228        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
18229        #[prost(message, tag="590")]
18230        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
18231        #[prost(message, tag="591")]
18232        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
18233        #[prost(message, tag="592")]
18234        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
18235        #[prost(message, tag="593")]
18236        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
18237        #[prost(message, tag="594")]
18238        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
18239        #[prost(message, tag="595")]
18240        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
18241        #[prost(message, tag="596")]
18242        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
18243        #[prost(message, tag="597")]
18244        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
18245        #[prost(message, tag="598")]
18246        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
18247        #[prost(message, tag="599")]
18248        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
18249        #[prost(message, tag="600")]
18250        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
18251        #[prost(message, tag="601")]
18252        GpuPowerState(super::GpuPowerStateFtraceEvent),
18253        #[prost(message, tag="602")]
18254        GramCollision(super::GramCollisionFtraceEvent),
18255        #[prost(message, tag="603")]
18256        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
18257        #[prost(message, tag="604")]
18258        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
18259    }
18260}
18261// End of protos/perfetto/trace/ftrace/ftrace_event.proto
18262
18263// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
18264
18265/// Per-CPU kernel buffer stats for the ftrace data source gathered from
18266/// /sys/kernel/tracing/per_cpu/cpuX/stats.
18267#[derive(Clone, PartialEq, ::prost::Message)]
18268pub struct FtraceCpuStats {
18269    /// CPU index.
18270    #[prost(uint64, optional, tag="1")]
18271    pub cpu: ::core::option::Option<u64>,
18272    /// Number of entries currently in the kernel buffer.
18273    #[prost(uint64, optional, tag="2")]
18274    pub entries: ::core::option::Option<u64>,
18275    /// Number of events lost in kernel buffers due to overwriting of old events
18276    /// before userspace had a chance to drain them. Valid if the buffer is in
18277    /// "overwrite" mode, otherwise see |dropped_events|.
18278    #[prost(uint64, optional, tag="3")]
18279    pub overrun: ::core::option::Option<u64>,
18280    /// This should always be zero. If not the buffer size is way too small or
18281    /// something went wrong with the tracer. Quoting the kernel: "number of
18282    /// commits failing due to the buffer wrapping around while there are
18283    /// uncommitted events, such as during an interrupt storm".
18284    #[prost(uint64, optional, tag="4")]
18285    pub commit_overrun: ::core::option::Option<u64>,
18286    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
18287    /// The field should be named "bytes", but is misnamed for historical reasons.
18288    /// This value has known inaccuracies before Linux v6.6:
18289    /// <https://github.com/torvalds/linux/commit/45d99ea>
18290    #[prost(uint64, optional, tag="5")]
18291    pub bytes_read: ::core::option::Option<u64>,
18292    /// The timestamp for the oldest event still in the ring buffer.
18293    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18294    #[prost(double, optional, tag="6")]
18295    pub oldest_event_ts: ::core::option::Option<f64>,
18296    /// The current timestamp.
18297    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18298    #[prost(double, optional, tag="7")]
18299    pub now_ts: ::core::option::Option<f64>,
18300    /// If the kernel buffer has overwrite mode disabled, this will show the number
18301    /// of new events that were lost because the buffer was full. This is similar
18302    /// to |overrun| but only for the overwrite=false case.
18303    #[prost(uint64, optional, tag="8")]
18304    pub dropped_events: ::core::option::Option<u64>,
18305    /// The number of events read (consumed) from the buffer by userspace.
18306    #[prost(uint64, optional, tag="9")]
18307    pub read_events: ::core::option::Option<u64>,
18308}
18309/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
18310#[derive(Clone, PartialEq, ::prost::Message)]
18311pub struct FtraceKprobeStats {
18312    /// Cumulative number of kprobe events generated for this function
18313    #[prost(int64, optional, tag="1")]
18314    pub hits: ::core::option::Option<i64>,
18315    /// Cumulative number of kprobe events that could not be generated for this
18316    /// function and were missed.  This happens when too much nesting
18317    /// happens between a kprobe and its kretprobe, overflowing the
18318    /// maxactives buffer.
18319    #[prost(int64, optional, tag="2")]
18320    pub misses: ::core::option::Option<i64>,
18321}
18322/// Errors and kernel buffer stats for the ftrace data source.
18323#[derive(Clone, PartialEq, ::prost::Message)]
18324pub struct FtraceStats {
18325    /// A pair of FtraceStats is written on every trace flush:
18326    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
18327    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
18328    ///                   before this packet was written. For simple traces this
18329    ///                   will be once at the end of the trace.
18330    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
18331    pub phase: ::core::option::Option<i32>,
18332    /// Per-CPU stats (one entry for each CPU).
18333    #[prost(message, repeated, tag="2")]
18334    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
18335    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
18336    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
18337    /// trace or not. It can be used to debug kptr_restrict or security-related
18338    /// errors.
18339    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
18340    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
18341    #[prost(uint32, optional, tag="3")]
18342    pub kernel_symbols_parsed: ::core::option::Option<u32>,
18343    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
18344    #[prost(uint32, optional, tag="4")]
18345    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
18346    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
18347    /// one or more atrace categories not available on the device.
18348    #[prost(string, optional, tag="5")]
18349    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
18350    /// Error message due to exclusivity violation of a single-tenant feature.
18351    #[prost(string, optional, tag="13")]
18352    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
18353    /// Ftrace events requested by the config but not present on device.
18354    #[prost(string, repeated, tag="6")]
18355    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18356    /// Ftrace events requested by the config and present on device, but which we
18357    /// failed to enable due to permissions, or due to a conflicting option
18358    /// (currently FtraceConfig.disable_generic_events).
18359    #[prost(string, repeated, tag="7")]
18360    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18361    /// The data source was configured to preserve existing events in the ftrace
18362    /// buffer before the start of the trace.
18363    #[prost(bool, optional, tag="8")]
18364    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
18365    /// Unique errors encountered during reading and parsing of the raw ftrace
18366    /// data. Ring buffer ABI related errors will also be recorded in the
18367    /// affected FtraceEventBundles with a timestamp.
18368    /// Any traces with entries in this field should be investigated, as they
18369    /// indicate a bug in perfetto or the kernel.
18370    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
18371    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
18372    /// Kprobe profile stats for functions hits and misses
18373    #[prost(message, optional, tag="10")]
18374    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
18375    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
18376    /// Added in: perfetto v52.
18377    #[prost(uint32, optional, tag="11")]
18378    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
18379    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
18380    /// on the value we're writing into the tracefs control file. Might not be
18381    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
18382    /// scratch pages (and/or other factors). Added in: perfetto v52.
18383    #[prost(uint32, optional, tag="12")]
18384    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
18385}
18386/// Nested message and enum types in `FtraceStats`.
18387pub mod ftrace_stats {
18388    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18389    #[repr(i32)]
18390    pub enum Phase {
18391        Unspecified = 0,
18392        StartOfTrace = 1,
18393        EndOfTrace = 2,
18394    }
18395    impl Phase {
18396        /// String value of the enum field names used in the ProtoBuf definition.
18397        ///
18398        /// The values are not transformed in any way and thus are considered stable
18399        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18400        pub fn as_str_name(&self) -> &'static str {
18401            match self {
18402                Phase::Unspecified => "UNSPECIFIED",
18403                Phase::StartOfTrace => "START_OF_TRACE",
18404                Phase::EndOfTrace => "END_OF_TRACE",
18405            }
18406        }
18407    }
18408}
18409// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
18410
18411// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18412
18413/// The result of tracing one or more ftrace data pages from a single per-cpu
18414/// kernel ring buffer. If collating multiple pages' worth of events, all of
18415/// them come from contiguous pages, with no kernel data loss in between.
18416#[derive(Clone, PartialEq, ::prost::Message)]
18417pub struct FtraceEventBundle {
18418    #[prost(uint32, optional, tag="1")]
18419    pub cpu: ::core::option::Option<u32>,
18420    #[prost(message, repeated, tag="2")]
18421    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
18422    /// Set to true if there was data loss between the last time we've read from
18423    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
18424    /// in this bundle.
18425    #[prost(bool, optional, tag="3")]
18426    pub lost_events: ::core::option::Option<bool>,
18427    #[prost(message, optional, tag="4")]
18428    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
18429    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
18430    /// timestamps as that counts during suspend, is available to userspace, and
18431    /// is coherent across cpus.
18432    ///
18433    /// If this field is set, it means that a different clock was used during
18434    /// recording. Either because the boot clock is unavailable (e.g. old kernels
18435    /// before 3.x), or the trace config has set an incompatible option
18436    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
18437    /// trace_processor will do best-effort clock alignment using timestamp pairs
18438    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
18439    /// when the ftrace clock is "boot", as that is the default assumption.
18440    ///
18441    /// Some clocks (local/global) are technically per-cpu, but we make a
18442    /// simplifying assumption that they are global, as their inter-cpu skew
18443    /// should be reasonably bounded on modern systems.
18444    ///
18445    /// Added in: perfetto v19. Android T (13).
18446    #[prost(enumeration="FtraceClock", optional, tag="5")]
18447    pub ftrace_clock: ::core::option::Option<i32>,
18448    /// The timestamp according to the ftrace clock, taken at the same instant as
18449    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
18450    /// will be in the future relative to the data covered by this bundle.
18451    /// Implementation note: Populated by reading the 'now ts:' field in
18452    /// tracefs/per_cpu/cpu0/stat.
18453    ///
18454    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18455    #[prost(int64, optional, tag="6")]
18456    pub ftrace_timestamp: ::core::option::Option<i64>,
18457    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
18458    /// |ftrace_timestamp|.
18459    ///
18460    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18461    #[prost(int64, optional, tag="7")]
18462    pub boot_timestamp: ::core::option::Option<i64>,
18463    #[prost(message, repeated, tag="8")]
18464    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
18465    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
18466    /// primary difference is that this field tracked the last timestamp read from
18467    /// the per-cpu buffer, while the newer field tracks events that get
18468    /// serialised into the trace.
18469    /// Added in: perfetto v44.
18470    #[prost(uint64, optional, tag="9")]
18471    pub last_read_event_timestamp: ::core::option::Option<u64>,
18472    /// The timestamp (using ftrace clock) of the last event written into this
18473    /// data source on this cpu. In other words: the last event in the previous
18474    /// bundle.
18475    /// Lets the trace processing find an initial timestamp after which ftrace
18476    /// data is known to be valid across all cpus. Of particular importance when
18477    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
18478    /// oldest bundles can skew the first valid timestamp per cpu significantly.
18479    /// Added in: perfetto v47.
18480    #[prost(uint64, optional, tag="10")]
18481    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
18482    #[prost(message, repeated, tag="11")]
18483    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
18484    /// Written only on android builds if the config sets |debug_ftrace_abi|.
18485    /// Contains the raw ring buffer tracing page that the implementation could
18486    /// not parse.
18487    /// Addded in: perfetto v50.
18488    #[prost(bytes="vec", optional, tag="512")]
18489    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18490}
18491/// Nested message and enum types in `FtraceEventBundle`.
18492pub mod ftrace_event_bundle {
18493    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
18494    /// a subset of events & their fields is recorded.
18495    /// All fields (except comms) are stored in a structure-of-arrays form, one
18496    /// entry in each repeated field per event.
18497    #[derive(Clone, PartialEq, ::prost::Message)]
18498    pub struct CompactSched {
18499        /// Interned table of unique strings for this bundle.
18500        #[prost(string, repeated, tag="5")]
18501        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18502        /// Delta-encoded timestamps across all sched_switch events within this
18503        /// bundle. The first is absolute, each next one is relative to its
18504        /// predecessor.
18505        #[prost(uint64, repeated, tag="1")]
18506        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
18507        #[prost(int64, repeated, tag="2")]
18508        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
18509        #[prost(int32, repeated, tag="3")]
18510        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
18511        #[prost(int32, repeated, tag="4")]
18512        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
18513        /// One per event, index into |intern_table| corresponding to the
18514        /// next_comm field of the event.
18515        #[prost(uint32, repeated, tag="6")]
18516        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
18517        /// Delta-encoded timestamps across all sched_waking events within this
18518        /// bundle. The first is absolute, each next one is relative to its
18519        /// predecessor.
18520        #[prost(uint64, repeated, tag="7")]
18521        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
18522        #[prost(int32, repeated, tag="8")]
18523        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
18524        #[prost(int32, repeated, tag="9")]
18525        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
18526        #[prost(int32, repeated, tag="10")]
18527        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
18528        /// One per event, index into |intern_table| corresponding to the
18529        /// comm field of the event.
18530        #[prost(uint32, repeated, tag="11")]
18531        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
18532        #[prost(uint32, repeated, tag="12")]
18533        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
18534    }
18535    /// Errors encountered during parsing of the raw ftrace data. In case of ring
18536    /// buffer layout errors, the parser skips the rest of the offending kernel
18537    /// buffer page and continues from the next page.
18538    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
18539    /// seen within the duration of the trace (even if the affected bundles get
18540    /// overwritten in ring buffer mode).
18541    #[derive(Clone, PartialEq, ::prost::Message)]
18542    pub struct FtraceError {
18543        /// Timestamp of the data that we're unable to parse, in the ftrace clock
18544        /// domain. Currently, we use the base timestamp of the tracing page
18545        /// containing the bad record rather than the time of the record itself.
18546        #[prost(uint64, optional, tag="1")]
18547        pub timestamp: ::core::option::Option<u64>,
18548        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
18549        pub status: ::core::option::Option<i32>,
18550    }
18551    /// Describes the serialised |FtraceEvent| protos for events not known at
18552    /// compile time, when using the |denser_generic_event_encoding| option.
18553    /// Addded in: perfetto v50.
18554    #[derive(Clone, PartialEq, ::prost::Message)]
18555    pub struct GenericEventDescriptor {
18556        /// submessage id within FtraceEvent described by |event_descriptor|.
18557        #[prost(int32, optional, tag="1")]
18558        pub field_id: ::core::option::Option<i32>,
18559        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
18560        /// The event name itself is in |event_descriptor.name|.
18561        #[prost(string, optional, tag="3")]
18562        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
18563        /// serialised DescriptorProto.
18564        #[prost(bytes="vec", optional, tag="2")]
18565        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18566    }
18567}
18568// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
18569
18570// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
18571
18572/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
18573/// frequency change events in a generic kernel implementation.
18574#[derive(Clone, PartialEq, ::prost::Message)]
18575pub struct GenericKernelCpuFrequencyEvent {
18576    /// CPU in which the event occurred.
18577    #[prost(int32, optional, tag="1")]
18578    pub cpu: ::core::option::Option<i32>,
18579    /// Frequency (Hz) of the CPU.
18580    #[prost(int64, optional, tag="2")]
18581    pub freq_hz: ::core::option::Option<i64>,
18582}
18583// End of protos/perfetto/trace/generic_kernel/generic_power.proto
18584
18585// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
18586
18587/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18588/// change events in a generic kernel implementation. This is mainly for the
18589/// case where scheduler events are not directly supported in the kernel's
18590/// tracing mechanism.
18591///
18592/// By capturing these task state events Perfetto is able to infer higher-level
18593/// events such as context switches and task waking events, providing as much
18594/// parity as possible with established tracing frameworks such as
18595/// Linux's ftrace.
18596#[derive(Clone, PartialEq, ::prost::Message)]
18597pub struct GenericKernelTaskStateEvent {
18598    /// CPU in which the event occurred.
18599    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18600    /// no specific meaning to the cpu field in a non-running state event.
18601    #[prost(int32, optional, tag="1")]
18602    pub cpu: ::core::option::Option<i32>,
18603    /// Command name for the thread.
18604    #[prost(string, optional, tag="2")]
18605    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18606    /// Thread id.
18607    #[prost(int64, optional, tag="3")]
18608    pub tid: ::core::option::Option<i64>,
18609    /// New state of the thread.
18610    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
18611    pub state: ::core::option::Option<i32>,
18612    /// Priority of the thread.
18613    /// This value is OS agnostic and should only be interpreted based on the
18614    /// kernel who emitted the message.
18615    #[prost(int32, optional, tag="5")]
18616    pub prio: ::core::option::Option<i32>,
18617}
18618/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18619pub mod generic_kernel_task_state_event {
18620    /// TaskStateEnum represents the valid states of a thread.
18621    /// These states are a generic representation of the actual thread state and
18622    /// don't necessarily map one-to-one to the states the actual OS kernel
18623    /// tracks internally.
18624    ///
18625    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18626    /// an error resulting in potential data loss.
18627    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18628    #[repr(i32)]
18629    pub enum TaskStateEnum {
18630        TaskStateUnknown = 0,
18631        TaskStateCreated = 1,
18632        TaskStateRunnable = 2,
18633        TaskStateRunning = 3,
18634        TaskStateInterruptibleSleep = 4,
18635        TaskStateUninterruptibleSleep = 5,
18636        TaskStateStopped = 6,
18637        TaskStateDead = 7,
18638        TaskStateDestroyed = 8,
18639    }
18640    impl TaskStateEnum {
18641        /// String value of the enum field names used in the ProtoBuf definition.
18642        ///
18643        /// The values are not transformed in any way and thus are considered stable
18644        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18645        pub fn as_str_name(&self) -> &'static str {
18646            match self {
18647                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18648                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
18649                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18650                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
18651                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18652                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18653                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
18654                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
18655                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18656            }
18657        }
18658    }
18659}
18660/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18661/// of a thread.
18662#[derive(Clone, PartialEq, ::prost::Message)]
18663pub struct GenericKernelTaskRenameEvent {
18664    /// Thread id.
18665    #[prost(int64, optional, tag="1")]
18666    pub tid: ::core::option::Option<i64>,
18667    /// New command name for the thread.
18668    #[prost(string, optional, tag="2")]
18669    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18670}
18671/// Metadata about the processes and threads in the trace.
18672/// The main goal of this proto is to provide a generic kernel
18673/// implementation a mechanism to outline its process structure.
18674#[derive(Clone, PartialEq, ::prost::Message)]
18675pub struct GenericKernelProcessTree {
18676    /// List of processes and threads in the kernel. These lists are incremental
18677    /// and not exhaustive. A process and its threads might show up separately in
18678    /// different ProcessTree messages. A thread might not show up at all, if
18679    /// no sched switch activity was detected, for instance:
18680    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
18681    /// #1 { threads: [{tid: 12, pid: 10}] }
18682    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
18683    #[prost(message, repeated, tag="1")]
18684    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18685    #[prost(message, repeated, tag="2")]
18686    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18687}
18688/// Nested message and enum types in `GenericKernelProcessTree`.
18689pub mod generic_kernel_process_tree {
18690    /// Representation of a thread.
18691    #[derive(Clone, PartialEq, ::prost::Message)]
18692    pub struct Thread {
18693        /// Thread id.
18694        #[prost(int64, optional, tag="1")]
18695        pub tid: ::core::option::Option<i64>,
18696        /// Id of the parent process.
18697        #[prost(int64, optional, tag="2")]
18698        pub pid: ::core::option::Option<i64>,
18699        /// The command name of the thread.
18700        #[prost(string, optional, tag="3")]
18701        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18702        /// True if thread is the main thread.
18703        #[prost(bool, optional, tag="4")]
18704        pub is_main_thread: ::core::option::Option<bool>,
18705        /// True if thread is an idle thread.
18706        #[prost(bool, optional, tag="5")]
18707        pub is_idle: ::core::option::Option<bool>,
18708    }
18709    /// Representation of a process.
18710    #[derive(Clone, PartialEq, ::prost::Message)]
18711    pub struct Process {
18712        /// Process id.
18713        #[prost(int64, optional, tag="1")]
18714        pub pid: ::core::option::Option<i64>,
18715        /// Parent process id.
18716        #[prost(int64, optional, tag="2")]
18717        pub ppid: ::core::option::Option<i64>,
18718        /// The command line of the process.
18719        /// If the cmdline has spaces in it, then we use the characters from
18720        /// position 0 to the first instance of the space char (' ') as the name
18721        /// of the process. If no spaces are present, then the entire cmdline is
18722        /// used as the name.
18723        #[prost(string, optional, tag="3")]
18724        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
18725    }
18726}
18727// End of protos/perfetto/trace/generic_kernel/generic_task.proto
18728
18729// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
18730
18731#[derive(Clone, PartialEq, ::prost::Message)]
18732pub struct GpuCounterEvent {
18733    /// The first trace packet of each session should include counter_spec.
18734    #[prost(message, optional, tag="1")]
18735    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
18736    #[prost(message, repeated, tag="2")]
18737    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
18738    /// optional. Identifier for GPU in a multi-gpu device.
18739    #[prost(int32, optional, tag="3")]
18740    pub gpu_id: ::core::option::Option<i32>,
18741}
18742/// Nested message and enum types in `GpuCounterEvent`.
18743pub mod gpu_counter_event {
18744    #[derive(Clone, PartialEq, ::prost::Message)]
18745    pub struct GpuCounter {
18746        /// required. Identifier for counter.
18747        #[prost(uint32, optional, tag="1")]
18748        pub counter_id: ::core::option::Option<u32>,
18749        /// required. Value of the counter.
18750        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
18751        pub value: ::core::option::Option<gpu_counter::Value>,
18752    }
18753    /// Nested message and enum types in `GpuCounter`.
18754    pub mod gpu_counter {
18755        /// required. Value of the counter.
18756        #[derive(Clone, PartialEq, ::prost::Oneof)]
18757        pub enum Value {
18758            #[prost(int64, tag="2")]
18759            IntValue(i64),
18760            #[prost(double, tag="3")]
18761            DoubleValue(f64),
18762        }
18763    }
18764}
18765// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
18766
18767// Begin of protos/perfetto/trace/gpu/gpu_log.proto
18768
18769/// Message for logging events GPU data producer.
18770#[derive(Clone, PartialEq, ::prost::Message)]
18771pub struct GpuLog {
18772    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
18773    pub severity: ::core::option::Option<i32>,
18774    #[prost(string, optional, tag="2")]
18775    pub tag: ::core::option::Option<::prost::alloc::string::String>,
18776    #[prost(string, optional, tag="3")]
18777    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
18778}
18779/// Nested message and enum types in `GpuLog`.
18780pub mod gpu_log {
18781    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18782    #[repr(i32)]
18783    pub enum Severity {
18784        LogSeverityUnspecified = 0,
18785        LogSeverityVerbose = 1,
18786        LogSeverityDebug = 2,
18787        LogSeverityInfo = 3,
18788        LogSeverityWarning = 4,
18789        LogSeverityError = 5,
18790    }
18791    impl Severity {
18792        /// String value of the enum field names used in the ProtoBuf definition.
18793        ///
18794        /// The values are not transformed in any way and thus are considered stable
18795        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18796        pub fn as_str_name(&self) -> &'static str {
18797            match self {
18798                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
18799                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
18800                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
18801                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
18802                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
18803                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
18804            }
18805        }
18806    }
18807}
18808// End of protos/perfetto/trace/gpu/gpu_log.proto
18809
18810// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18811
18812/// next id: 18
18813#[derive(Clone, PartialEq, ::prost::Message)]
18814pub struct GpuRenderStageEvent {
18815    /// required. Unique ID for the event.
18816    #[prost(uint64, optional, tag="1")]
18817    pub event_id: ::core::option::Option<u64>,
18818    /// optional. Duration of the event in nanoseconds. If unset, this is a
18819    /// single time point event.
18820    #[prost(uint64, optional, tag="2")]
18821    pub duration: ::core::option::Option<u64>,
18822    /// required. ID to a hardware queue description in the specifications.
18823    /// InternedGpuRenderStageSpecification
18824    #[prost(uint64, optional, tag="13")]
18825    pub hw_queue_iid: ::core::option::Option<u64>,
18826    /// required. ID to a render stage description in the specifications.
18827    /// InternedGpuRenderStageSpecification
18828    #[prost(uint64, optional, tag="14")]
18829    pub stage_iid: ::core::option::Option<u64>,
18830    /// optional. Identifier for GPU in a multi-gpu device.
18831    #[prost(int32, optional, tag="11")]
18832    pub gpu_id: ::core::option::Option<i32>,
18833    /// required. Graphics context for the event.
18834    /// For OpenGL, this is the GL context.
18835    /// For Vulkan, this is the VkDevice.
18836    #[prost(uint64, optional, tag="5")]
18837    pub context: ::core::option::Option<u64>,
18838    /// optional. The render target for this event.
18839    /// For OpenGL, this is the GL frame buffer handle.
18840    /// For Vulkan, this is the VkFrameBuffer handle.
18841    #[prost(uint64, optional, tag="8")]
18842    pub render_target_handle: ::core::option::Option<u64>,
18843    /// optional. Submission ID generated by the UMD.
18844    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
18845    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
18846    /// to a single API submission should share the same ID.
18847    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18848    #[prost(uint32, optional, tag="10")]
18849    pub submission_id: ::core::option::Option<u32>,
18850    #[prost(message, repeated, tag="6")]
18851    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18852    // VULKAN SPECIFICS
18853
18854    /// optional. The Vulkan render pass handle.
18855    #[prost(uint64, optional, tag="9")]
18856    pub render_pass_handle: ::core::option::Option<u64>,
18857    /// optional. An ID for the render pass instance. This is used to correlate
18858    /// different events on different queues produced by the same Vulkan render
18859    /// pass instance.
18860    #[prost(uint64, optional, tag="16")]
18861    pub render_pass_instance_id: ::core::option::Option<u64>,
18862    /// optional. A bit mask representing which render subpasses contributed to
18863    /// this render stage event.  Subpass index 0 is represented by setting the
18864    /// LSB of the mask.  Additional mask can be added for subpass index greater
18865    /// than 63.
18866    #[prost(uint64, repeated, packed="false", tag="15")]
18867    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18868    /// optional. The Vulkan command buffer handle.
18869    #[prost(uint64, optional, tag="12")]
18870    pub command_buffer_handle: ::core::option::Option<u64>,
18871    /// optional. Custom name for this render stage event. When set, this
18872    /// provides a name for the stage instead of using the name from the stage
18873    /// specification.
18874    #[prost(string, optional, tag="17")]
18875    pub name: ::core::option::Option<::prost::alloc::string::String>,
18876    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18877    /// InternedGpuRenderStageSpecification instead.
18878    #[deprecated]
18879    #[prost(message, optional, tag="7")]
18880    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18881    /// Deprecated. Use hw_queue_iid instead;
18882    #[deprecated]
18883    #[prost(int32, optional, tag="3")]
18884    pub hw_queue_id: ::core::option::Option<i32>,
18885    /// Deprecated. Use stage_iid instead;
18886    #[deprecated]
18887    #[prost(int32, optional, tag="4")]
18888    pub stage_id: ::core::option::Option<i32>,
18889}
18890/// Nested message and enum types in `GpuRenderStageEvent`.
18891pub mod gpu_render_stage_event {
18892    /// optional. Additional data for the user. This may include attributes for
18893    /// the event like resource ids, shaders, etc.
18894    #[derive(Clone, PartialEq, ::prost::Message)]
18895    pub struct ExtraData {
18896        #[prost(string, optional, tag="1")]
18897        pub name: ::core::option::Option<::prost::alloc::string::String>,
18898        #[prost(string, optional, tag="2")]
18899        pub value: ::core::option::Option<::prost::alloc::string::String>,
18900    }
18901    // DEPRECATED
18902
18903    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18904    /// The first trace packet of each session should include a Specifications
18905    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18906    /// must be earlier than all other packets. Only one packet with Specifications
18907    /// is expected.
18908    #[derive(Clone, PartialEq, ::prost::Message)]
18909    pub struct Specifications {
18910        #[prost(message, optional, tag="1")]
18911        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18912        /// Labels to categorize the hw Queue this event goes on.
18913        #[prost(message, repeated, tag="2")]
18914        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18915        /// Labels to categorize render stage(binning, render, compute etc).
18916        #[prost(message, repeated, tag="3")]
18917        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18918    }
18919    /// Nested message and enum types in `Specifications`.
18920    pub mod specifications {
18921        #[derive(Clone, PartialEq, ::prost::Message)]
18922        pub struct ContextSpec {
18923            #[prost(uint64, optional, tag="1")]
18924            pub context: ::core::option::Option<u64>,
18925            #[prost(int32, optional, tag="2")]
18926            pub pid: ::core::option::Option<i32>,
18927        }
18928        #[derive(Clone, PartialEq, ::prost::Message)]
18929        pub struct Description {
18930            #[prost(string, optional, tag="1")]
18931            pub name: ::core::option::Option<::prost::alloc::string::String>,
18932            #[prost(string, optional, tag="2")]
18933            pub description: ::core::option::Option<::prost::alloc::string::String>,
18934        }
18935    }
18936}
18937// Interned data.
18938
18939/// The iid is the numeric value of either the GL Context or the VkDevice
18940/// handle.
18941#[derive(Clone, PartialEq, ::prost::Message)]
18942pub struct InternedGraphicsContext {
18943    #[prost(uint64, optional, tag="1")]
18944    pub iid: ::core::option::Option<u64>,
18945    #[prost(int32, optional, tag="2")]
18946    pub pid: ::core::option::Option<i32>,
18947    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
18948    pub api: ::core::option::Option<i32>,
18949}
18950/// Nested message and enum types in `InternedGraphicsContext`.
18951pub mod interned_graphics_context {
18952    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18953    #[repr(i32)]
18954    pub enum Api {
18955        Undefined = 0,
18956        OpenGl = 1,
18957        Vulkan = 2,
18958        OpenCl = 3,
18959        Cuda = 4,
18960        Hip = 5,
18961    }
18962    impl Api {
18963        /// String value of the enum field names used in the ProtoBuf definition.
18964        ///
18965        /// The values are not transformed in any way and thus are considered stable
18966        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18967        pub fn as_str_name(&self) -> &'static str {
18968            match self {
18969                Api::Undefined => "UNDEFINED",
18970                Api::OpenGl => "OPEN_GL",
18971                Api::Vulkan => "VULKAN",
18972                Api::OpenCl => "OPEN_CL",
18973                Api::Cuda => "CUDA",
18974                Api::Hip => "HIP",
18975            }
18976        }
18977    }
18978}
18979#[derive(Clone, PartialEq, ::prost::Message)]
18980pub struct InternedGpuRenderStageSpecification {
18981    #[prost(uint64, optional, tag="1")]
18982    pub iid: ::core::option::Option<u64>,
18983    #[prost(string, optional, tag="2")]
18984    pub name: ::core::option::Option<::prost::alloc::string::String>,
18985    #[prost(string, optional, tag="3")]
18986    pub description: ::core::option::Option<::prost::alloc::string::String>,
18987    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
18988    pub category: ::core::option::Option<i32>,
18989}
18990/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
18991pub mod interned_gpu_render_stage_specification {
18992    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18993    #[repr(i32)]
18994    pub enum RenderStageCategory {
18995        Other = 0,
18996        Graphics = 1,
18997        Compute = 2,
18998    }
18999    impl RenderStageCategory {
19000        /// String value of the enum field names used in the ProtoBuf definition.
19001        ///
19002        /// The values are not transformed in any way and thus are considered stable
19003        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19004        pub fn as_str_name(&self) -> &'static str {
19005            match self {
19006                RenderStageCategory::Other => "OTHER",
19007                RenderStageCategory::Graphics => "GRAPHICS",
19008                RenderStageCategory::Compute => "COMPUTE",
19009            }
19010        }
19011    }
19012}
19013// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
19014
19015// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
19016
19017/// Message for recording the Vulkan call.
19018#[derive(Clone, PartialEq, ::prost::Message)]
19019pub struct VulkanApiEvent {
19020    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
19021    pub event: ::core::option::Option<vulkan_api_event::Event>,
19022}
19023/// Nested message and enum types in `VulkanApiEvent`.
19024pub mod vulkan_api_event {
19025    /// For recording vkSetDebugUtilsObjectNameEXT and
19026    /// vkDebugMarkerSetObjectNameEXT
19027    #[derive(Clone, PartialEq, ::prost::Message)]
19028    pub struct VkDebugUtilsObjectName {
19029        #[prost(uint32, optional, tag="1")]
19030        pub pid: ::core::option::Option<u32>,
19031        #[prost(uint64, optional, tag="2")]
19032        pub vk_device: ::core::option::Option<u64>,
19033        /// VkObjectType.  Value must match
19034        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
19035        #[prost(int32, optional, tag="3")]
19036        pub object_type: ::core::option::Option<i32>,
19037        #[prost(uint64, optional, tag="4")]
19038        pub object: ::core::option::Option<u64>,
19039        #[prost(string, optional, tag="5")]
19040        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
19041    }
19042    /// For recording vkQueueSubmit call.
19043    #[derive(Clone, PartialEq, ::prost::Message)]
19044    pub struct VkQueueSubmit {
19045        #[prost(uint64, optional, tag="1")]
19046        pub duration_ns: ::core::option::Option<u64>,
19047        #[prost(uint32, optional, tag="2")]
19048        pub pid: ::core::option::Option<u32>,
19049        #[prost(uint32, optional, tag="3")]
19050        pub tid: ::core::option::Option<u32>,
19051        #[prost(uint64, optional, tag="4")]
19052        pub vk_queue: ::core::option::Option<u64>,
19053        #[prost(uint64, repeated, packed="false", tag="5")]
19054        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
19055        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
19056        /// submission_id must match GpuRenderStageEvent.submission_id if the
19057        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
19058        #[prost(uint32, optional, tag="6")]
19059        pub submission_id: ::core::option::Option<u32>,
19060    }
19061    #[derive(Clone, PartialEq, ::prost::Oneof)]
19062    pub enum Event {
19063        #[prost(message, tag="1")]
19064        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
19065        #[prost(message, tag="2")]
19066        VkQueueSubmit(VkQueueSubmit),
19067    }
19068}
19069// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
19070
19071// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
19072
19073/// All the information that cannot be sent within a VulkanMemoryEvent message,
19074/// are sent as annotations to the main memory event. One example is the
19075/// properties of the object that consumes the allocated memory, for example, a
19076/// buffer or an image.
19077/// key_iid and string_iid are both interned strings. Original string value is
19078/// stored in vulkan_memory_keys from
19079/// protos/perfetto/trace/interned_data/interned_data.proto.
19080#[derive(Clone, PartialEq, ::prost::Message)]
19081pub struct VulkanMemoryEventAnnotation {
19082    #[prost(uint64, optional, tag="1")]
19083    pub key_iid: ::core::option::Option<u64>,
19084    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
19085    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
19086}
19087/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
19088pub mod vulkan_memory_event_annotation {
19089    #[derive(Clone, PartialEq, ::prost::Oneof)]
19090    pub enum Value {
19091        #[prost(int64, tag="2")]
19092        IntValue(i64),
19093        #[prost(double, tag="3")]
19094        DoubleValue(f64),
19095        #[prost(uint64, tag="4")]
19096        StringIid(u64),
19097    }
19098}
19099/// Each VulkanMemoryEvent encompasses information regarding one single function
19100/// call that results in reserving, binding or freeing host or GPU memory. There
19101/// is a special message type, ANNOTATIONS, which is used to communicate
19102/// information that are not directly related to a memory event, nonetheless are
19103/// essential to understand the memory usage. An example is the size and memory
19104/// types of the memory heaps.
19105///
19106/// Next reserved id: 10 (up to 15).
19107/// Next id: 21.
19108#[derive(Clone, PartialEq, ::prost::Message)]
19109pub struct VulkanMemoryEvent {
19110    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
19111    pub source: ::core::option::Option<i32>,
19112    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
19113    pub operation: ::core::option::Option<i32>,
19114    #[prost(int64, optional, tag="3")]
19115    pub timestamp: ::core::option::Option<i64>,
19116    #[prost(uint32, optional, tag="4")]
19117    pub pid: ::core::option::Option<u32>,
19118    #[prost(fixed64, optional, tag="5")]
19119    pub memory_address: ::core::option::Option<u64>,
19120    #[prost(uint64, optional, tag="6")]
19121    pub memory_size: ::core::option::Option<u64>,
19122    /// Interned string. Original string value is stored in function_names from
19123    /// protos/perfetto/trace/interned_data/interned_data.proto.
19124    #[prost(uint64, optional, tag="7")]
19125    pub caller_iid: ::core::option::Option<u64>,
19126    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
19127    pub allocation_scope: ::core::option::Option<i32>,
19128    /// Extra related information, e.g., create configs, etc.
19129    #[prost(message, repeated, tag="9")]
19130    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
19131    /// Field IDs used for device memory (low sampling rate)
19132    #[prost(fixed64, optional, tag="16")]
19133    pub device: ::core::option::Option<u64>,
19134    #[prost(fixed64, optional, tag="17")]
19135    pub device_memory: ::core::option::Option<u64>,
19136    #[prost(uint32, optional, tag="18")]
19137    pub memory_type: ::core::option::Option<u32>,
19138    #[prost(uint32, optional, tag="19")]
19139    pub heap: ::core::option::Option<u32>,
19140    #[prost(fixed64, optional, tag="20")]
19141    pub object_handle: ::core::option::Option<u64>,
19142}
19143/// Nested message and enum types in `VulkanMemoryEvent`.
19144pub mod vulkan_memory_event {
19145    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19146    #[repr(i32)]
19147    pub enum Source {
19148        Unspecified = 0,
19149        Driver = 1,
19150        Device = 2,
19151        DeviceMemory = 3,
19152        Buffer = 4,
19153        Image = 5,
19154    }
19155    impl Source {
19156        /// String value of the enum field names used in the ProtoBuf definition.
19157        ///
19158        /// The values are not transformed in any way and thus are considered stable
19159        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19160        pub fn as_str_name(&self) -> &'static str {
19161            match self {
19162                Source::Unspecified => "SOURCE_UNSPECIFIED",
19163                Source::Driver => "SOURCE_DRIVER",
19164                Source::Device => "SOURCE_DEVICE",
19165                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
19166                Source::Buffer => "SOURCE_BUFFER",
19167                Source::Image => "SOURCE_IMAGE",
19168            }
19169        }
19170    }
19171    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19172    #[repr(i32)]
19173    pub enum Operation {
19174        OpUnspecified = 0,
19175        /// alloc, create
19176        OpCreate = 1,
19177        /// free, destroy(non-bound)
19178        OpDestroy = 2,
19179        /// bind buffer and image
19180        OpBind = 3,
19181        /// destroy (bound)
19182        OpDestroyBound = 4,
19183        /// only annotations
19184        OpAnnotations = 5,
19185    }
19186    impl Operation {
19187        /// String value of the enum field names used in the ProtoBuf definition.
19188        ///
19189        /// The values are not transformed in any way and thus are considered stable
19190        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19191        pub fn as_str_name(&self) -> &'static str {
19192            match self {
19193                Operation::OpUnspecified => "OP_UNSPECIFIED",
19194                Operation::OpCreate => "OP_CREATE",
19195                Operation::OpDestroy => "OP_DESTROY",
19196                Operation::OpBind => "OP_BIND",
19197                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
19198                Operation::OpAnnotations => "OP_ANNOTATIONS",
19199            }
19200        }
19201    }
19202    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19203    #[repr(i32)]
19204    pub enum AllocationScope {
19205        ScopeUnspecified = 0,
19206        ScopeCommand = 1,
19207        ScopeObject = 2,
19208        ScopeCache = 3,
19209        ScopeDevice = 4,
19210        ScopeInstance = 5,
19211    }
19212    impl AllocationScope {
19213        /// String value of the enum field names used in the ProtoBuf definition.
19214        ///
19215        /// The values are not transformed in any way and thus are considered stable
19216        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19217        pub fn as_str_name(&self) -> &'static str {
19218            match self {
19219                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19220                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
19221                AllocationScope::ScopeObject => "SCOPE_OBJECT",
19222                AllocationScope::ScopeCache => "SCOPE_CACHE",
19223                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
19224                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
19225            }
19226        }
19227    }
19228}
19229// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
19230
19231// Begin of protos/perfetto/trace/profiling/profile_common.proto
19232
19233/// The interning fields in this file can refer to 2 different intern tables,
19234/// depending on the message they are used in. If the interned fields are present
19235/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
19236/// should be used. If the intered fields are present in the
19237/// StreamingProfilePacket proto, then the intern tables included in all of the
19238/// previous InternedData message with same sequence ID should be used.
19239/// TODO(fmayer): Move to the intern tables to a common location.
19240#[derive(Clone, PartialEq, ::prost::Message)]
19241pub struct InternedString {
19242    /// Interning key. Starts from 1, 0 is the same as "not set".
19243    #[prost(uint64, optional, tag="1")]
19244    pub iid: ::core::option::Option<u64>,
19245    /// The actual string.
19246    #[prost(bytes="vec", optional, tag="2")]
19247    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19248}
19249/// Source line info.
19250#[derive(Clone, PartialEq, ::prost::Message)]
19251pub struct Line {
19252    #[prost(string, optional, tag="1")]
19253    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19254    #[prost(string, optional, tag="2")]
19255    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
19256    #[prost(uint32, optional, tag="3")]
19257    pub line_number: ::core::option::Option<u32>,
19258}
19259/// Symbols for a given address in a module.
19260#[derive(Clone, PartialEq, ::prost::Message)]
19261pub struct AddressSymbols {
19262    #[prost(uint64, optional, tag="1")]
19263    pub address: ::core::option::Option<u64>,
19264    /// Source lines that correspond to this address.
19265    ///
19266    /// These are repeated because when inlining happens, multiple functions'
19267    /// frames can be at a single address. Imagine function Foo calling the
19268    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
19269    /// both Foo and the std::vector<int> constructor when we symbolize the
19270    /// address.
19271    #[prost(message, repeated, tag="2")]
19272    pub lines: ::prost::alloc::vec::Vec<Line>,
19273}
19274/// Symbols for addresses seen in a module.
19275/// Used in re-symbolisation of complete traces.
19276#[derive(Clone, PartialEq, ::prost::Message)]
19277pub struct ModuleSymbols {
19278    /// Fully qualified path to the mapping.
19279    /// E.g. /system/lib64/libc.so.
19280    #[prost(string, optional, tag="1")]
19281    pub path: ::core::option::Option<::prost::alloc::string::String>,
19282    /// .note.gnu.build-id on Linux (not hex encoded).
19283    /// uuid on MacOS.
19284    /// Module GUID on Windows.
19285    #[prost(string, optional, tag="2")]
19286    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
19287    #[prost(message, repeated, tag="3")]
19288    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
19289}
19290#[derive(Clone, PartialEq, ::prost::Message)]
19291pub struct Mapping {
19292    /// Interning key.
19293    /// Starts from 1, 0 is the same as "not set".
19294    #[prost(uint64, optional, tag="1")]
19295    pub iid: ::core::option::Option<u64>,
19296    /// Interning key.
19297    /// Starts from 1, 0 is the same as "not set".
19298    #[prost(uint64, optional, tag="2")]
19299    pub build_id: ::core::option::Option<u64>,
19300    // The linker may create multiple memory mappings for the same shared
19301    // library.
19302    // This is so that the ELF header is mapped as read only, while the
19303    // executable memory is mapped as executable only.
19304    // The details of this depend on the linker, a possible mapping of an ELF
19305    // file is this:
19306    //          +----------------------+
19307    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
19308    //          +---------+------------+
19309    //          |         |
19310    //          | read    | executable
19311    //          v mapping v mapping
19312    //          +----------------------+
19313    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
19314    //          +------------------+---+
19315    //          ^         ^        ^
19316    //          +         +        +
19317    //        start     exact    relpc
19318    //        offset   offset    0x1800
19319    //        0x0000   0x1000
19320    //
19321    // exact_offset is the offset into the library file of this mapping.
19322    // start_offset is the offset into the library file of the first mapping
19323    // for that library. For native libraries (.so files) this should be 0.
19324
19325    /// This is not set on Android 10.
19326    #[prost(uint64, optional, tag="8")]
19327    pub exact_offset: ::core::option::Option<u64>,
19328    #[prost(uint64, optional, tag="3")]
19329    pub start_offset: ::core::option::Option<u64>,
19330    #[prost(uint64, optional, tag="4")]
19331    pub start: ::core::option::Option<u64>,
19332    #[prost(uint64, optional, tag="5")]
19333    pub end: ::core::option::Option<u64>,
19334    /// Libunwindstack-specific concept, not to be confused with bionic linker's
19335    /// notion of load_bias. Needed to correct relative pc addresses (as produced
19336    /// by libunwindstack) when doing offline resymbolisation.
19337    ///
19338    /// For an executable ELF PT_LOAD segment, this is:
19339    ///    p_vaddr - p_offset
19340    ///
19341    /// Where p_offset means that the code is at that offset into the ELF file on
19342    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
19343    /// to where the linker loads the ELF into the address space. For most ELFs,
19344    /// the two values are identical and therefore load_bias is zero.
19345    #[prost(uint64, optional, tag="6")]
19346    pub load_bias: ::core::option::Option<u64>,
19347    /// E.g. ["system", "lib64", "libc.so"]
19348    /// id of string.
19349    #[prost(uint64, repeated, packed="false", tag="7")]
19350    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
19351}
19352#[derive(Clone, PartialEq, ::prost::Message)]
19353pub struct Frame {
19354    /// Interning key. Starts from 1, 0 is the same as "not set".
19355    #[prost(uint64, optional, tag="1")]
19356    pub iid: ::core::option::Option<u64>,
19357    /// E.g. "fopen"
19358    /// id of string.
19359    #[prost(uint64, optional, tag="2")]
19360    pub function_name_id: ::core::option::Option<u64>,
19361    /// The mapping in which this frame's instruction pointer resides.
19362    /// iid of Mapping.iid.
19363    ///
19364    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
19365    /// this frame has no associated memory mapping (e.g., symbolized frames
19366    /// without address information).
19367    ///
19368    /// Starts from 1, 0 is the same as "not set".
19369    #[prost(uint64, optional, tag="3")]
19370    pub mapping_id: ::core::option::Option<u64>,
19371    /// Instruction pointer relative to the start of the mapping.
19372    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
19373    #[prost(uint64, optional, tag="4")]
19374    pub rel_pc: ::core::option::Option<u64>,
19375    /// Source file path for this frame.
19376    /// This is typically set during online symbolization when symbol information
19377    /// is available at trace collection time. If not set, source file paths may be
19378    /// added later via offline symbolization (see ModuleSymbols).
19379    ///
19380    /// Starts from 1, 0 is the same as "not set".
19381    ///
19382    /// iid of InternedData.source_paths.
19383    #[prost(uint64, optional, tag="5")]
19384    pub source_path_iid: ::core::option::Option<u64>,
19385    /// Line number in the source file for this frame.
19386    /// This is typically set during online symbolization when symbol information
19387    /// is available at trace collection time. If not set, line numbers may be
19388    /// added later via offline symbolization (see ModuleSymbols).
19389    #[prost(uint32, optional, tag="6")]
19390    pub line_number: ::core::option::Option<u32>,
19391}
19392#[derive(Clone, PartialEq, ::prost::Message)]
19393pub struct Callstack {
19394    /// Interning key. Starts from 1, 0 is the same as "not set".
19395    #[prost(uint64, optional, tag="1")]
19396    pub iid: ::core::option::Option<u64>,
19397    /// Frames of this callstack. Bottom frame first.
19398    #[prost(uint64, repeated, packed="false", tag="2")]
19399    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
19400}
19401// End of protos/perfetto/trace/profiling/profile_common.proto
19402
19403// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
19404
19405#[derive(Clone, PartialEq, ::prost::Message)]
19406pub struct HistogramName {
19407    #[prost(uint64, optional, tag="1")]
19408    pub iid: ::core::option::Option<u64>,
19409    #[prost(string, optional, tag="2")]
19410    pub name: ::core::option::Option<::prost::alloc::string::String>,
19411}
19412/// An individual histogram sample logged via Chrome's UMA metrics system.
19413#[derive(Clone, PartialEq, ::prost::Message)]
19414pub struct ChromeHistogramSample {
19415    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
19416    /// both must be present.
19417    #[prost(uint64, optional, tag="1")]
19418    pub name_hash: ::core::option::Option<u64>,
19419    #[prost(string, optional, tag="2")]
19420    pub name: ::core::option::Option<::prost::alloc::string::String>,
19421    #[prost(int64, optional, tag="3")]
19422    pub sample: ::core::option::Option<i64>,
19423    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
19424    #[prost(uint64, optional, tag="4")]
19425    pub name_iid: ::core::option::Option<u64>,
19426}
19427// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
19428
19429// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
19430
19431/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
19432/// macros. Users of the Perfetto SDK should prefer to use the
19433/// perfetto::TracedValue API to fill these protos, rather than filling them
19434/// manually.
19435///
19436/// Debug annotations are intended for debug use and are not considered a stable
19437/// API of the trace contents. Trace-based metrics that use debug annotation
19438/// values are prone to breakage, so please rely on typed TrackEvent fields for
19439/// these instead.
19440///
19441/// DebugAnnotations support nested arrays and dictionaries. Each entry is
19442/// encoded as a single DebugAnnotation message. Only dictionary entries
19443/// set the "name" field. The TrackEvent message forms an implicit root
19444/// dictionary.
19445///
19446/// Example TrackEvent with nested annotations:
19447///    track_event {
19448///      debug_annotations {
19449///        name: "foo"
19450///        dict_entries {
19451///          name: "a"
19452///          bool_value: true
19453///        }
19454///        dict_entries {
19455///          name: "b"
19456///          int_value: 123
19457///        }
19458///      }
19459///      debug_annotations {
19460///        name: "bar"
19461///        array_values {
19462///          string_value: "hello"
19463///        }
19464///        array_values {
19465///          string_value: "world"
19466///        }
19467///      }
19468///    }
19469///
19470/// Next ID: 18.
19471/// Reserved ID: 15
19472#[derive(Clone, PartialEq, ::prost::Message)]
19473pub struct DebugAnnotation {
19474    #[prost(bytes="vec", optional, tag="14")]
19475    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19476    #[prost(message, repeated, tag="11")]
19477    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
19478    #[prost(message, repeated, tag="12")]
19479    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
19480    /// Name fields are set only for dictionary entries.
19481    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
19482    pub name_field: ::core::option::Option<debug_annotation::NameField>,
19483    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
19484    pub value: ::core::option::Option<debug_annotation::Value>,
19485    /// Used to embed arbitrary proto messages (which are also typically used to
19486    /// represent typed TrackEvent arguments). |proto_type_name| or
19487    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19488    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19489    /// proto messages. See |TracedValue::WriteProto| for more details.
19490    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
19491    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
19492}
19493/// Nested message and enum types in `DebugAnnotation`.
19494pub mod debug_annotation {
19495    /// Deprecated legacy way to use nested values. Only kept for
19496    /// backwards-compatibility in TraceProcessor. May be removed in the future -
19497    /// code filling protos should use |dict_entries| and |array_values| instead.
19498    #[derive(Clone, PartialEq, ::prost::Message)]
19499    pub struct NestedValue {
19500        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
19501        pub nested_type: ::core::option::Option<i32>,
19502        #[prost(string, repeated, tag="2")]
19503        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19504        #[prost(message, repeated, tag="3")]
19505        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
19506        #[prost(message, repeated, tag="4")]
19507        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
19508        #[prost(int64, optional, tag="5")]
19509        pub int_value: ::core::option::Option<i64>,
19510        #[prost(double, optional, tag="6")]
19511        pub double_value: ::core::option::Option<f64>,
19512        #[prost(bool, optional, tag="7")]
19513        pub bool_value: ::core::option::Option<bool>,
19514        #[prost(string, optional, tag="8")]
19515        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
19516    }
19517    /// Nested message and enum types in `NestedValue`.
19518    pub mod nested_value {
19519        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19520        #[repr(i32)]
19521        pub enum NestedType {
19522            /// leaf value.
19523            Unspecified = 0,
19524            Dict = 1,
19525            Array = 2,
19526        }
19527        impl NestedType {
19528            /// String value of the enum field names used in the ProtoBuf definition.
19529            ///
19530            /// The values are not transformed in any way and thus are considered stable
19531            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19532            pub fn as_str_name(&self) -> &'static str {
19533                match self {
19534                    NestedType::Unspecified => "UNSPECIFIED",
19535                    NestedType::Dict => "DICT",
19536                    NestedType::Array => "ARRAY",
19537                }
19538            }
19539        }
19540    }
19541    /// Name fields are set only for dictionary entries.
19542    #[derive(Clone, PartialEq, ::prost::Oneof)]
19543    pub enum NameField {
19544        /// interned DebugAnnotationName.
19545        #[prost(uint64, tag="1")]
19546        NameIid(u64),
19547        /// non-interned variant.
19548        #[prost(string, tag="10")]
19549        Name(::prost::alloc::string::String),
19550    }
19551    #[derive(Clone, PartialEq, ::prost::Oneof)]
19552    pub enum Value {
19553        #[prost(bool, tag="2")]
19554        BoolValue(bool),
19555        #[prost(uint64, tag="3")]
19556        UintValue(u64),
19557        #[prost(int64, tag="4")]
19558        IntValue(i64),
19559        #[prost(double, tag="5")]
19560        DoubleValue(f64),
19561        /// Pointers are stored in a separate type as the JSON output treats them
19562        /// differently from other uint64 values.
19563        #[prost(uint64, tag="7")]
19564        PointerValue(u64),
19565        /// Deprecated. Use dict_entries / array_values instead.
19566        #[prost(message, tag="8")]
19567        NestedValue(NestedValue),
19568        /// Legacy instrumentation may not support conversion of nested data to
19569        /// NestedValue yet.
19570        #[prost(string, tag="9")]
19571        LegacyJsonValue(::prost::alloc::string::String),
19572        /// interned and non-interned variants of strings.
19573        #[prost(string, tag="6")]
19574        StringValue(::prost::alloc::string::String),
19575        /// Corresponds to |debug_annotation_string_values| field in InternedData.
19576        #[prost(uint64, tag="17")]
19577        StringValueIid(u64),
19578    }
19579    /// Used to embed arbitrary proto messages (which are also typically used to
19580    /// represent typed TrackEvent arguments). |proto_type_name| or
19581    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19582    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19583    /// proto messages. See |TracedValue::WriteProto| for more details.
19584    #[derive(Clone, PartialEq, ::prost::Oneof)]
19585    pub enum ProtoTypeDescriptor {
19586        #[prost(string, tag="16")]
19587        ProtoTypeName(::prost::alloc::string::String),
19588        /// interned DebugAnnotationValueTypeName.
19589        #[prost(uint64, tag="13")]
19590        ProtoTypeNameIid(u64),
19591    }
19592}
19593// --------------------
19594// Interned data types:
19595// --------------------
19596
19597#[derive(Clone, PartialEq, ::prost::Message)]
19598pub struct DebugAnnotationName {
19599    #[prost(uint64, optional, tag="1")]
19600    pub iid: ::core::option::Option<u64>,
19601    #[prost(string, optional, tag="2")]
19602    pub name: ::core::option::Option<::prost::alloc::string::String>,
19603}
19604/// See the |proto_type_descriptor| comment.
19605#[derive(Clone, PartialEq, ::prost::Message)]
19606pub struct DebugAnnotationValueTypeName {
19607    #[prost(uint64, optional, tag="1")]
19608    pub iid: ::core::option::Option<u64>,
19609    #[prost(string, optional, tag="2")]
19610    pub name: ::core::option::Option<::prost::alloc::string::String>,
19611}
19612// End of protos/perfetto/trace/track_event/debug_annotation.proto
19613
19614// Begin of protos/perfetto/trace/track_event/log_message.proto
19615
19616#[derive(Clone, PartialEq, ::prost::Message)]
19617pub struct LogMessage {
19618    /// interned SourceLocation.
19619    #[prost(uint64, optional, tag="1")]
19620    pub source_location_iid: ::core::option::Option<u64>,
19621    /// interned LogMessageBody.
19622    #[prost(uint64, optional, tag="2")]
19623    pub body_iid: ::core::option::Option<u64>,
19624    #[prost(enumeration="log_message::Priority", optional, tag="3")]
19625    pub prio: ::core::option::Option<i32>,
19626}
19627/// Nested message and enum types in `LogMessage`.
19628pub mod log_message {
19629    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19630    #[repr(i32)]
19631    pub enum Priority {
19632        PrioUnspecified = 0,
19633        PrioUnused = 1,
19634        PrioVerbose = 2,
19635        PrioDebug = 3,
19636        PrioInfo = 4,
19637        PrioWarn = 5,
19638        PrioError = 6,
19639        PrioFatal = 7,
19640    }
19641    impl Priority {
19642        /// String value of the enum field names used in the ProtoBuf definition.
19643        ///
19644        /// The values are not transformed in any way and thus are considered stable
19645        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19646        pub fn as_str_name(&self) -> &'static str {
19647            match self {
19648                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
19649                Priority::PrioUnused => "PRIO_UNUSED",
19650                Priority::PrioVerbose => "PRIO_VERBOSE",
19651                Priority::PrioDebug => "PRIO_DEBUG",
19652                Priority::PrioInfo => "PRIO_INFO",
19653                Priority::PrioWarn => "PRIO_WARN",
19654                Priority::PrioError => "PRIO_ERROR",
19655                Priority::PrioFatal => "PRIO_FATAL",
19656            }
19657        }
19658    }
19659}
19660// --------------------
19661// Interned data types:
19662// --------------------
19663
19664#[derive(Clone, PartialEq, ::prost::Message)]
19665pub struct LogMessageBody {
19666    #[prost(uint64, optional, tag="1")]
19667    pub iid: ::core::option::Option<u64>,
19668    #[prost(string, optional, tag="2")]
19669    pub body: ::core::option::Option<::prost::alloc::string::String>,
19670}
19671// End of protos/perfetto/trace/track_event/log_message.proto
19672
19673// Begin of protos/perfetto/trace/track_event/source_location.proto
19674
19675// --------------------
19676// Interned data types:
19677// --------------------
19678
19679/// A source location, represented as a native symbol.
19680/// This is similar to `message Frame` from
19681/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
19682/// source code locations (for example in track event args), not stack frames.
19683#[derive(Clone, PartialEq, ::prost::Message)]
19684pub struct UnsymbolizedSourceLocation {
19685    #[prost(uint64, optional, tag="1")]
19686    pub iid: ::core::option::Option<u64>,
19687    #[prost(uint64, optional, tag="2")]
19688    pub mapping_id: ::core::option::Option<u64>,
19689    #[prost(uint64, optional, tag="3")]
19690    pub rel_pc: ::core::option::Option<u64>,
19691}
19692#[derive(Clone, PartialEq, ::prost::Message)]
19693pub struct SourceLocation {
19694    #[prost(uint64, optional, tag="1")]
19695    pub iid: ::core::option::Option<u64>,
19696    #[prost(string, optional, tag="2")]
19697    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
19698    #[prost(string, optional, tag="3")]
19699    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19700    #[prost(uint32, optional, tag="4")]
19701    pub line_number: ::core::option::Option<u32>,
19702}
19703// End of protos/perfetto/trace/track_event/source_location.proto
19704
19705// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
19706
19707/// A list of processes connected to the tracing service.
19708#[derive(Clone, PartialEq, ::prost::Message)]
19709pub struct ChromeActiveProcesses {
19710    #[prost(int32, repeated, packed="false", tag="1")]
19711    pub pid: ::prost::alloc::vec::Vec<i32>,
19712}
19713// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
19714
19715/// Trace event arguments for application state changes.
19716#[derive(Clone, PartialEq, ::prost::Message)]
19717pub struct ChromeApplicationStateInfo {
19718    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
19719    pub application_state: ::core::option::Option<i32>,
19720}
19721/// Nested message and enum types in `ChromeApplicationStateInfo`.
19722pub mod chrome_application_state_info {
19723    /// Enum definition taken from:
19724    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
19725    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19726    #[repr(i32)]
19727    pub enum ChromeApplicationState {
19728        ApplicationStateUnknown = 0,
19729        ApplicationStateHasRunningActivities = 1,
19730        ApplicationStateHasPausedActivities = 2,
19731        ApplicationStateHasStoppedActivities = 3,
19732        ApplicationStateHasDestroyedActivities = 4,
19733    }
19734    impl ChromeApplicationState {
19735        /// String value of the enum field names used in the ProtoBuf definition.
19736        ///
19737        /// The values are not transformed in any way and thus are considered stable
19738        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19739        pub fn as_str_name(&self) -> &'static str {
19740            match self {
19741                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
19742                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
19743                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
19744                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
19745                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
19746            }
19747        }
19748    }
19749}
19750/// Next id: 18
19751#[derive(Clone, PartialEq, ::prost::Message)]
19752pub struct ChromeCompositorSchedulerState {
19753    #[prost(message, optional, tag="1")]
19754    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
19755    #[prost(bool, optional, tag="2")]
19756    pub observing_begin_frame_source: ::core::option::Option<bool>,
19757    #[prost(bool, optional, tag="3")]
19758    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
19759    #[prost(bool, optional, tag="4")]
19760    pub pending_begin_frame_task: ::core::option::Option<bool>,
19761    #[prost(bool, optional, tag="5")]
19762    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
19763    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
19764    pub inside_action: ::core::option::Option<i32>,
19765    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
19766    pub deadline_mode: ::core::option::Option<i32>,
19767    #[prost(int64, optional, tag="9")]
19768    pub deadline_us: ::core::option::Option<i64>,
19769    #[prost(int64, optional, tag="10")]
19770    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
19771    #[prost(int64, optional, tag="11")]
19772    pub now_us: ::core::option::Option<i64>,
19773    #[prost(int64, optional, tag="12")]
19774    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
19775    #[prost(int64, optional, tag="13")]
19776    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
19777    #[prost(message, optional, tag="14")]
19778    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
19779    #[prost(message, optional, tag="15")]
19780    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
19781    #[prost(message, optional, tag="16")]
19782    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
19783    #[prost(message, optional, tag="17")]
19784    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
19785}
19786/// Nested message and enum types in `ChromeCompositorSchedulerState`.
19787pub mod chrome_compositor_scheduler_state {
19788    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19789    #[repr(i32)]
19790    pub enum BeginImplFrameDeadlineMode {
19791        DeadlineModeUnspecified = 0,
19792        DeadlineModeNone = 1,
19793        DeadlineModeImmediate = 2,
19794        DeadlineModeRegular = 3,
19795        DeadlineModeLate = 4,
19796        DeadlineModeBlocked = 5,
19797    }
19798    impl BeginImplFrameDeadlineMode {
19799        /// String value of the enum field names used in the ProtoBuf definition.
19800        ///
19801        /// The values are not transformed in any way and thus are considered stable
19802        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19803        pub fn as_str_name(&self) -> &'static str {
19804            match self {
19805                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
19806                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
19807                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
19808                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
19809                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
19810                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
19811            }
19812        }
19813    }
19814}
19815/// Describes the current values stored in the Chrome Compositor state machine.
19816/// Next id: 3
19817#[derive(Clone, PartialEq, ::prost::Message)]
19818pub struct ChromeCompositorStateMachine {
19819    #[prost(message, optional, tag="1")]
19820    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
19821    #[prost(message, optional, tag="2")]
19822    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
19823}
19824/// Nested message and enum types in `ChromeCompositorStateMachine`.
19825pub mod chrome_compositor_state_machine {
19826    /// Next id: 6
19827    #[derive(Clone, PartialEq, ::prost::Message)]
19828    pub struct MajorState {
19829        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
19830        pub next_action: ::core::option::Option<i32>,
19831        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
19832        pub begin_impl_frame_state: ::core::option::Option<i32>,
19833        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
19834        pub begin_main_frame_state: ::core::option::Option<i32>,
19835        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
19836        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
19837        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
19838        pub forced_redraw_state: ::core::option::Option<i32>,
19839    }
19840    /// Nested message and enum types in `MajorState`.
19841    pub mod major_state {
19842        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19843        #[repr(i32)]
19844        pub enum BeginImplFrameState {
19845            BeginImplFrameUnspecified = 0,
19846            BeginImplFrameIdle = 1,
19847            BeginImplFrameInsideBeginFrame = 2,
19848            BeginImplFrameInsideDeadline = 3,
19849        }
19850        impl BeginImplFrameState {
19851            /// String value of the enum field names used in the ProtoBuf definition.
19852            ///
19853            /// The values are not transformed in any way and thus are considered stable
19854            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19855            pub fn as_str_name(&self) -> &'static str {
19856                match self {
19857                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
19858                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
19859                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
19860                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
19861                }
19862            }
19863        }
19864        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19865        #[repr(i32)]
19866        pub enum BeginMainFrameState {
19867            BeginMainFrameUnspecified = 0,
19868            BeginMainFrameIdle = 1,
19869            BeginMainFrameSent = 2,
19870            BeginMainFrameReadyToCommit = 3,
19871        }
19872        impl BeginMainFrameState {
19873            /// String value of the enum field names used in the ProtoBuf definition.
19874            ///
19875            /// The values are not transformed in any way and thus are considered stable
19876            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19877            pub fn as_str_name(&self) -> &'static str {
19878                match self {
19879                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
19880                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
19881                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
19882                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
19883                }
19884            }
19885        }
19886        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19887        #[repr(i32)]
19888        pub enum LayerTreeFrameSinkState {
19889            LayerTreeFrameUnspecified = 0,
19890            LayerTreeFrameNone = 1,
19891            LayerTreeFrameActive = 2,
19892            LayerTreeFrameCreating = 3,
19893            LayerTreeFrameWaitingForFirstCommit = 4,
19894            LayerTreeFrameWaitingForFirstActivation = 5,
19895        }
19896        impl LayerTreeFrameSinkState {
19897            /// String value of the enum field names used in the ProtoBuf definition.
19898            ///
19899            /// The values are not transformed in any way and thus are considered stable
19900            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19901            pub fn as_str_name(&self) -> &'static str {
19902                match self {
19903                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
19904                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
19905                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
19906                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
19907                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
19908                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
19909                }
19910            }
19911        }
19912        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19913        #[repr(i32)]
19914        pub enum ForcedRedrawOnTimeoutState {
19915            ForcedRedrawUnspecified = 0,
19916            ForcedRedrawIdle = 1,
19917            ForcedRedrawWaitingForCommit = 2,
19918            ForcedRedrawWaitingForActivation = 3,
19919            ForcedRedrawWaitingForDraw = 4,
19920        }
19921        impl ForcedRedrawOnTimeoutState {
19922            /// String value of the enum field names used in the ProtoBuf definition.
19923            ///
19924            /// The values are not transformed in any way and thus are considered stable
19925            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19926            pub fn as_str_name(&self) -> &'static str {
19927                match self {
19928                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
19929                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
19930                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
19931                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
19932                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
19933                }
19934            }
19935        }
19936    }
19937    /// Next id: 47
19938    #[derive(Clone, PartialEq, ::prost::Message)]
19939    pub struct MinorState {
19940        #[prost(int32, optional, tag="1")]
19941        pub commit_count: ::core::option::Option<i32>,
19942        #[prost(int32, optional, tag="2")]
19943        pub current_frame_number: ::core::option::Option<i32>,
19944        #[prost(int32, optional, tag="3")]
19945        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
19946        #[prost(int32, optional, tag="4")]
19947        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
19948        #[prost(int32, optional, tag="5")]
19949        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
19950        #[prost(bool, optional, tag="6")]
19951        pub did_draw: ::core::option::Option<bool>,
19952        #[prost(bool, optional, tag="7")]
19953        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
19954        #[prost(bool, optional, tag="8")]
19955        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
19956        #[prost(bool, optional, tag="9")]
19957        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
19958        #[prost(bool, optional, tag="10")]
19959        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
19960        #[prost(bool, optional, tag="11")]
19961        pub did_commit_during_frame: ::core::option::Option<bool>,
19962        #[prost(bool, optional, tag="12")]
19963        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
19964        #[prost(bool, optional, tag="13")]
19965        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
19966        #[prost(bool, optional, tag="14")]
19967        pub did_prepare_tiles: ::core::option::Option<bool>,
19968        #[prost(int32, optional, tag="15")]
19969        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
19970        #[prost(int32, optional, tag="16")]
19971        pub pending_submit_frames: ::core::option::Option<i32>,
19972        #[prost(int32, optional, tag="17")]
19973        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
19974        #[prost(bool, optional, tag="18")]
19975        pub needs_redraw: ::core::option::Option<bool>,
19976        #[prost(bool, optional, tag="19")]
19977        pub needs_prepare_tiles: ::core::option::Option<bool>,
19978        #[prost(bool, optional, tag="20")]
19979        pub needs_begin_main_frame: ::core::option::Option<bool>,
19980        #[prost(bool, optional, tag="21")]
19981        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
19982        #[prost(bool, optional, tag="22")]
19983        pub visible: ::core::option::Option<bool>,
19984        #[prost(bool, optional, tag="23")]
19985        pub begin_frame_source_paused: ::core::option::Option<bool>,
19986        #[prost(bool, optional, tag="24")]
19987        pub can_draw: ::core::option::Option<bool>,
19988        #[prost(bool, optional, tag="25")]
19989        pub resourceless_draw: ::core::option::Option<bool>,
19990        #[prost(bool, optional, tag="26")]
19991        pub has_pending_tree: ::core::option::Option<bool>,
19992        #[prost(bool, optional, tag="27")]
19993        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
19994        #[prost(bool, optional, tag="28")]
19995        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
19996        #[prost(bool, optional, tag="29")]
19997        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
19998        #[prost(bool, optional, tag="30")]
19999        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
20000        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
20001        pub tree_priority: ::core::option::Option<i32>,
20002        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
20003        pub scroll_handler_state: ::core::option::Option<i32>,
20004        #[prost(bool, optional, tag="33")]
20005        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
20006        #[prost(bool, optional, tag="34")]
20007        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
20008        #[prost(bool, optional, tag="36")]
20009        pub video_needs_begin_frames: ::core::option::Option<bool>,
20010        #[prost(bool, optional, tag="37")]
20011        pub defer_begin_main_frame: ::core::option::Option<bool>,
20012        #[prost(bool, optional, tag="38")]
20013        pub last_commit_had_no_updates: ::core::option::Option<bool>,
20014        #[prost(bool, optional, tag="39")]
20015        pub did_draw_in_last_frame: ::core::option::Option<bool>,
20016        #[prost(bool, optional, tag="40")]
20017        pub did_submit_in_last_frame: ::core::option::Option<bool>,
20018        #[prost(bool, optional, tag="41")]
20019        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
20020        #[prost(bool, optional, tag="42")]
20021        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
20022        #[prost(bool, optional, tag="43")]
20023        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
20024        #[prost(bool, optional, tag="44")]
20025        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
20026        #[prost(bool, optional, tag="45")]
20027        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
20028        #[prost(bool, optional, tag="46")]
20029        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
20030    }
20031    /// Nested message and enum types in `MinorState`.
20032    pub mod minor_state {
20033        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20034        #[repr(i32)]
20035        pub enum TreePriority {
20036            Unspecified = 0,
20037            SamePriorityForBothTrees = 1,
20038            SmoothnessTakesPriority = 2,
20039            NewContentTakesPriority = 3,
20040        }
20041        impl TreePriority {
20042            /// String value of the enum field names used in the ProtoBuf definition.
20043            ///
20044            /// The values are not transformed in any way and thus are considered stable
20045            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20046            pub fn as_str_name(&self) -> &'static str {
20047                match self {
20048                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
20049                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
20050                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
20051                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
20052                }
20053            }
20054        }
20055        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20056        #[repr(i32)]
20057        pub enum ScrollHandlerState {
20058            ScrollHandlerUnspecified = 0,
20059            ScrollAffectsScrollHandler = 1,
20060            ScrollDoesNotAffectScrollHandler = 2,
20061        }
20062        impl ScrollHandlerState {
20063            /// String value of the enum field names used in the ProtoBuf definition.
20064            ///
20065            /// The values are not transformed in any way and thus are considered stable
20066            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20067            pub fn as_str_name(&self) -> &'static str {
20068                match self {
20069                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
20070                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
20071                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
20072                }
20073            }
20074        }
20075    }
20076}
20077/// Next id: 13
20078#[derive(Clone, PartialEq, ::prost::Message)]
20079pub struct BeginFrameArgs {
20080    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
20081    pub r#type: ::core::option::Option<i32>,
20082    #[prost(uint64, optional, tag="2")]
20083    pub source_id: ::core::option::Option<u64>,
20084    #[prost(uint64, optional, tag="3")]
20085    pub sequence_number: ::core::option::Option<u64>,
20086    #[prost(int64, optional, tag="4")]
20087    pub frame_time_us: ::core::option::Option<i64>,
20088    #[prost(int64, optional, tag="5")]
20089    pub deadline_us: ::core::option::Option<i64>,
20090    #[prost(int64, optional, tag="6")]
20091    pub interval_delta_us: ::core::option::Option<i64>,
20092    #[prost(bool, optional, tag="7")]
20093    pub on_critical_path: ::core::option::Option<bool>,
20094    #[prost(bool, optional, tag="8")]
20095    pub animate_only: ::core::option::Option<bool>,
20096    #[prost(int64, optional, tag="12")]
20097    pub frames_throttled_since_last: ::core::option::Option<i64>,
20098    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
20099    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
20100}
20101/// Nested message and enum types in `BeginFrameArgs`.
20102pub mod begin_frame_args {
20103    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
20104    /// drop this in the proto representation, and instead make the JSON format
20105    /// "subtype" field become the type field.
20106    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20107    #[repr(i32)]
20108    pub enum BeginFrameArgsType {
20109        Unspecified = 0,
20110        Invalid = 1,
20111        Normal = 2,
20112        Missed = 3,
20113    }
20114    impl BeginFrameArgsType {
20115        /// String value of the enum field names used in the ProtoBuf definition.
20116        ///
20117        /// The values are not transformed in any way and thus are considered stable
20118        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20119        pub fn as_str_name(&self) -> &'static str {
20120            match self {
20121                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
20122                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
20123                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
20124                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
20125            }
20126        }
20127    }
20128    #[derive(Clone, PartialEq, ::prost::Oneof)]
20129    pub enum CreatedFrom {
20130        /// The interned SourceLocation.
20131        #[prost(uint64, tag="9")]
20132        SourceLocationIid(u64),
20133        /// The SourceLocation that this args was created from.
20134        /// TODO(nuskos): Eventually we will support interning inside of
20135        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
20136        /// since we can emit it as part of the InternedData message. When we can
20137        /// remove this |source_location|.
20138        #[prost(message, tag="10")]
20139        SourceLocation(super::SourceLocation),
20140    }
20141}
20142/// Next id: 7
20143#[derive(Clone, PartialEq, ::prost::Message)]
20144pub struct BeginImplFrameArgs {
20145    #[prost(int64, optional, tag="1")]
20146    pub updated_at_us: ::core::option::Option<i64>,
20147    #[prost(int64, optional, tag="2")]
20148    pub finished_at_us: ::core::option::Option<i64>,
20149    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
20150    pub state: ::core::option::Option<i32>,
20151    #[prost(message, optional, tag="6")]
20152    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
20153    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
20154    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
20155}
20156/// Nested message and enum types in `BeginImplFrameArgs`.
20157pub mod begin_impl_frame_args {
20158    #[derive(Clone, PartialEq, ::prost::Message)]
20159    pub struct TimestampsInUs {
20160        #[prost(int64, optional, tag="1")]
20161        pub interval_delta: ::core::option::Option<i64>,
20162        #[prost(int64, optional, tag="2")]
20163        pub now_to_deadline_delta: ::core::option::Option<i64>,
20164        #[prost(int64, optional, tag="3")]
20165        pub frame_time_to_now_delta: ::core::option::Option<i64>,
20166        #[prost(int64, optional, tag="4")]
20167        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
20168        #[prost(int64, optional, tag="5")]
20169        pub now: ::core::option::Option<i64>,
20170        #[prost(int64, optional, tag="6")]
20171        pub frame_time: ::core::option::Option<i64>,
20172        #[prost(int64, optional, tag="7")]
20173        pub deadline: ::core::option::Option<i64>,
20174    }
20175    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20176    #[repr(i32)]
20177    pub enum State {
20178        BeginFrameFinished = 0,
20179        BeginFrameUsing = 1,
20180    }
20181    impl State {
20182        /// String value of the enum field names used in the ProtoBuf definition.
20183        ///
20184        /// The values are not transformed in any way and thus are considered stable
20185        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20186        pub fn as_str_name(&self) -> &'static str {
20187            match self {
20188                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
20189                State::BeginFrameUsing => "BEGIN_FRAME_USING",
20190            }
20191        }
20192    }
20193    #[derive(Clone, PartialEq, ::prost::Oneof)]
20194    pub enum Args {
20195        /// Only set if |state| is BEGIN_FRAME_FINISHED.
20196        #[prost(message, tag="4")]
20197        CurrentArgs(super::BeginFrameArgs),
20198        /// Only set if |state| is BEGIN_FRAME_USING.
20199        #[prost(message, tag="5")]
20200        LastArgs(super::BeginFrameArgs),
20201    }
20202}
20203#[derive(Clone, PartialEq, ::prost::Message)]
20204pub struct BeginFrameObserverState {
20205    #[prost(int64, optional, tag="1")]
20206    pub dropped_begin_frame_args: ::core::option::Option<i64>,
20207    #[prost(message, optional, tag="2")]
20208    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20209}
20210#[derive(Clone, PartialEq, ::prost::Message)]
20211pub struct BeginFrameSourceState {
20212    #[prost(uint32, optional, tag="1")]
20213    pub source_id: ::core::option::Option<u32>,
20214    #[prost(bool, optional, tag="2")]
20215    pub paused: ::core::option::Option<bool>,
20216    #[prost(uint32, optional, tag="3")]
20217    pub num_observers: ::core::option::Option<u32>,
20218    #[prost(message, optional, tag="4")]
20219    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20220}
20221#[derive(Clone, PartialEq, ::prost::Message)]
20222pub struct CompositorTimingHistory {
20223    #[prost(int64, optional, tag="1")]
20224    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
20225    #[prost(int64, optional, tag="2")]
20226    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
20227    #[prost(int64, optional, tag="3")]
20228    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
20229    #[prost(int64, optional, tag="4")]
20230    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
20231    #[prost(int64, optional, tag="5")]
20232    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
20233    #[prost(int64, optional, tag="6")]
20234    pub activate_estimate_delta_us: ::core::option::Option<i64>,
20235    #[prost(int64, optional, tag="7")]
20236    pub draw_estimate_delta_us: ::core::option::Option<i64>,
20237}
20238// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
20239
20240// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
20241
20242/// Details about ContentSettings trace events.
20243#[derive(Clone, PartialEq, ::prost::Message)]
20244pub struct ChromeContentSettingsEventInfo {
20245    /// The number of user defined hostname patterns for content settings at
20246    /// browser start. Similar to UMA histogram
20247    /// 'ContentSettings.NumberOfExceptions'.
20248    #[prost(uint32, optional, tag="1")]
20249    pub number_of_exceptions: ::core::option::Option<u32>,
20250}
20251// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20252
20253/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
20254/// in
20255/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20256/// instead.
20257#[derive(Clone, PartialEq, ::prost::Message)]
20258pub struct ChromeFrameReporter {
20259    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
20260    pub state: ::core::option::Option<i32>,
20261    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
20262    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
20263    pub reason: ::core::option::Option<i32>,
20264    #[prost(uint64, optional, tag="3")]
20265    pub frame_source: ::core::option::Option<u64>,
20266    #[prost(uint64, optional, tag="4")]
20267    pub frame_sequence: ::core::option::Option<u64>,
20268    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
20269    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
20270    /// smoothness.
20271    #[prost(bool, optional, tag="5")]
20272    pub affects_smoothness: ::core::option::Option<bool>,
20273    /// The type of active scroll.
20274    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
20275    pub scroll_state: ::core::option::Option<i32>,
20276    /// If any main thread animation is active during this frame.
20277    #[prost(bool, optional, tag="7")]
20278    pub has_main_animation: ::core::option::Option<bool>,
20279    /// If any compositor thread animation is active during this frame.
20280    #[prost(bool, optional, tag="8")]
20281    pub has_compositor_animation: ::core::option::Option<bool>,
20282    /// If any touch-driven UX (not scroll) is active during this frame.
20283    #[prost(bool, optional, tag="9")]
20284    pub has_smooth_input_main: ::core::option::Option<bool>,
20285    /// Whether the frame contained any missing content (i.e. whether there was
20286    /// checkerboarding in the frame).  If has_missing_content,
20287    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
20288    /// values, has_missing_content should equal checkerboarded_needs_raster ||
20289    /// checkerboarded_needs_record.
20290    #[prost(bool, optional, tag="10")]
20291    pub has_missing_content: ::core::option::Option<bool>,
20292    /// The id of layer_tree_host that the frame has been produced for.
20293    #[prost(uint64, optional, tag="11")]
20294    pub layer_tree_host_id: ::core::option::Option<u64>,
20295    /// If total latency of PipelineReporter exceeds a certain limit.
20296    #[prost(bool, optional, tag="12")]
20297    pub has_high_latency: ::core::option::Option<bool>,
20298    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
20299    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
20300    /// (i.e. dropped frames when there are no partial compositor updates).
20301    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
20302    pub frame_type: ::core::option::Option<i32>,
20303    /// The breakdown stage of PipelineReporter that is most likely accountable for
20304    /// high latency.
20305    #[prost(string, repeated, tag="14")]
20306    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20307    /// Whether the frame contained any content that is not fully rastered.
20308    #[prost(bool, optional, tag="15")]
20309    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
20310    /// Whether the frame contained any content that is not fully recorded.
20311    #[prost(bool, optional, tag="16")]
20312    pub checkerboarded_needs_record: ::core::option::Option<bool>,
20313    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
20314    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
20315    #[prost(int64, optional, tag="17")]
20316    pub surface_frame_trace_id: ::core::option::Option<i64>,
20317    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
20318    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
20319    #[prost(int64, optional, tag="18")]
20320    pub display_trace_id: ::core::option::Option<i64>,
20321}
20322/// Nested message and enum types in `ChromeFrameReporter`.
20323pub mod chrome_frame_reporter {
20324    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20325    #[repr(i32)]
20326    pub enum State {
20327        /// The frame did not have any updates to present.
20328        NoUpdateDesired = 0,
20329        /// The frame presented all the desired updates (i.e. any updates requested
20330        /// from both the compositor thread and main-threads were handled).
20331        PresentedAll = 1,
20332        /// The frame was presented with some updates, but also missed some updates
20333        /// (e.g. missed updates from the main-thread, but included updates from the
20334        /// compositor thread).
20335        PresentedPartial = 2,
20336        /// The frame was dropped, i.e. some updates were desired for the frame, but
20337        /// was not presented.
20338        Dropped = 3,
20339    }
20340    impl State {
20341        /// String value of the enum field names used in the ProtoBuf definition.
20342        ///
20343        /// The values are not transformed in any way and thus are considered stable
20344        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20345        pub fn as_str_name(&self) -> &'static str {
20346            match self {
20347                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
20348                State::PresentedAll => "STATE_PRESENTED_ALL",
20349                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
20350                State::Dropped => "STATE_DROPPED",
20351            }
20352        }
20353    }
20354    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20355    #[repr(i32)]
20356    pub enum FrameDropReason {
20357        ReasonUnspecified = 0,
20358        /// Frame was dropped by the display-compositor.
20359        /// The display-compositor may drop a frame some times (e.g. the frame missed
20360        /// the deadline, or was blocked on surface-sync, etc.)
20361        ReasonDisplayCompositor = 1,
20362        /// Frame was dropped because of the main-thread.
20363        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
20364        /// is running expensive javascript, or doing a lot of layout updates, etc.
20365        ReasonMainThread = 2,
20366        /// Frame was dropped by the client compositor.
20367        /// The client compositor can drop some frames too (e.g. attempting to
20368        /// recover latency, missing the deadline, etc.).
20369        ReasonClientCompositor = 3,
20370    }
20371    impl FrameDropReason {
20372        /// String value of the enum field names used in the ProtoBuf definition.
20373        ///
20374        /// The values are not transformed in any way and thus are considered stable
20375        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20376        pub fn as_str_name(&self) -> &'static str {
20377            match self {
20378                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
20379                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
20380                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
20381                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
20382            }
20383        }
20384    }
20385    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20386    #[repr(i32)]
20387    pub enum ScrollState {
20388        ScrollNone = 0,
20389        ScrollMainThread = 1,
20390        ScrollCompositorThread = 2,
20391        ScrollRaster = 3,
20392        /// Used when it can't be determined whether a scroll is in progress or not.
20393        ScrollUnknown = 4,
20394    }
20395    impl ScrollState {
20396        /// String value of the enum field names used in the ProtoBuf definition.
20397        ///
20398        /// The values are not transformed in any way and thus are considered stable
20399        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20400        pub fn as_str_name(&self) -> &'static str {
20401            match self {
20402                ScrollState::ScrollNone => "SCROLL_NONE",
20403                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
20404                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
20405                ScrollState::ScrollRaster => "SCROLL_RASTER",
20406                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
20407            }
20408        }
20409    }
20410    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20411    #[repr(i32)]
20412    pub enum FrameType {
20413        Forked = 0,
20414        Backfill = 1,
20415    }
20416    impl FrameType {
20417        /// String value of the enum field names used in the ProtoBuf definition.
20418        ///
20419        /// The values are not transformed in any way and thus are considered stable
20420        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20421        pub fn as_str_name(&self) -> &'static str {
20422            match self {
20423                FrameType::Forked => "FORKED",
20424                FrameType::Backfill => "BACKFILL",
20425            }
20426        }
20427    }
20428}
20429// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
20430
20431// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20432
20433/// Details about one of Chrome's keyed services associated with the event.
20434#[derive(Clone, PartialEq, ::prost::Message)]
20435pub struct ChromeKeyedService {
20436    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
20437    /// Chrome, these are static strings known at compile time).
20438    #[prost(string, optional, tag="1")]
20439    pub name: ::core::option::Option<::prost::alloc::string::String>,
20440}
20441// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
20442
20443// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
20444
20445#[derive(Clone, PartialEq, ::prost::Message)]
20446pub struct ChromeLatencyInfo {
20447    #[prost(int64, optional, tag="1")]
20448    pub trace_id: ::core::option::Option<i64>,
20449    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
20450    pub step: ::core::option::Option<i32>,
20451    #[prost(int32, optional, tag="3")]
20452    pub frame_tree_node_id: ::core::option::Option<i32>,
20453    #[prost(message, repeated, tag="4")]
20454    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
20455    #[prost(bool, optional, tag="5")]
20456    pub is_coalesced: ::core::option::Option<bool>,
20457    #[prost(int64, optional, tag="6")]
20458    pub gesture_scroll_id: ::core::option::Option<i64>,
20459    #[prost(int64, optional, tag="7")]
20460    pub touch_id: ::core::option::Option<i64>,
20461    /// The type of input corresponding to this `ChromeLatencyInfo`.
20462    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
20463    pub input_type: ::core::option::Option<i32>,
20464}
20465/// Nested message and enum types in `ChromeLatencyInfo`.
20466pub mod chrome_latency_info {
20467    #[derive(Clone, PartialEq, ::prost::Message)]
20468    pub struct ComponentInfo {
20469        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
20470        pub component_type: ::core::option::Option<i32>,
20471        /// Microsecond timestamp in CLOCK_MONOTONIC domain
20472        #[prost(uint64, optional, tag="2")]
20473        pub time_us: ::core::option::Option<u64>,
20474    }
20475    /// NEXT ID: 12
20476    /// All step are optional but the enum is ordered (not by number) below in the
20477    /// order we expect them to appear if they are emitted in trace in a blocking
20478    /// fashion.
20479    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20480    #[repr(i32)]
20481    pub enum Step {
20482        Unspecified = 0,
20483        /// Emitted on the browser main thread.
20484        SendInputEventUi = 3,
20485        /// Happens on the renderer's compositor.
20486        HandleInputEventImpl = 5,
20487        DidHandleInputAndOverscroll = 8,
20488        /// Occurs on the Renderer's main thread.
20489        HandleInputEventMain = 4,
20490        MainThreadScrollUpdate = 2,
20491        HandleInputEventMainCommit = 1,
20492        /// Could be emitted on both the renderer's main OR compositor.
20493        HandledInputEventMainOrImpl = 9,
20494        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
20495        /// renderer's compositor and this will be emitted.
20496        HandledInputEventImpl = 10,
20497        /// Renderer's compositor.
20498        SwapBuffers = 6,
20499        /// Happens on the VizCompositor in the GPU process.
20500        DrawAndSwap = 7,
20501        /// Happens on the GPU main thread after the swap has completed.
20502        ///
20503        /// See above for NEXT ID, enum steps are not ordered by tag number.
20504        FinishedSwapBuffers = 11,
20505    }
20506    impl Step {
20507        /// String value of the enum field names used in the ProtoBuf definition.
20508        ///
20509        /// The values are not transformed in any way and thus are considered stable
20510        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20511        pub fn as_str_name(&self) -> &'static str {
20512            match self {
20513                Step::Unspecified => "STEP_UNSPECIFIED",
20514                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
20515                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
20516                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
20517                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
20518                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
20519                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
20520                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
20521                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
20522                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
20523                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
20524                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
20525            }
20526        }
20527    }
20528    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
20529    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
20530    /// practices.
20531    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20532    #[repr(i32)]
20533    pub enum LatencyComponentType {
20534        ComponentUnspecified = 0,
20535        ComponentInputEventLatencyBeginRwh = 1,
20536        ComponentInputEventLatencyScrollUpdateOriginal = 2,
20537        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
20538        ComponentInputEventLatencyOriginal = 4,
20539        ComponentInputEventLatencyUi = 5,
20540        ComponentInputEventLatencyRendererMain = 6,
20541        ComponentInputEventLatencyRenderingScheduledMain = 7,
20542        ComponentInputEventLatencyRenderingScheduledImpl = 8,
20543        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
20544        ComponentInputEventLatencyAckRwh = 10,
20545        ComponentInputEventLatencyRendererSwap = 11,
20546        ComponentDisplayCompositorReceivedFrame = 12,
20547        ComponentInputEventGpuSwapBuffer = 13,
20548        ComponentInputEventLatencyFrameSwap = 14,
20549    }
20550    impl LatencyComponentType {
20551        /// String value of the enum field names used in the ProtoBuf definition.
20552        ///
20553        /// The values are not transformed in any way and thus are considered stable
20554        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20555        pub fn as_str_name(&self) -> &'static str {
20556            match self {
20557                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
20558                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
20559                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
20560                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
20561                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
20562                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
20563                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
20564                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
20565                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
20566                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
20567                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
20568                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
20569                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
20570                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
20571                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
20572            }
20573        }
20574    }
20575    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20576    #[repr(i32)]
20577    pub enum InputType {
20578        UnspecifiedOrOther = 0,
20579        TouchMoved = 1,
20580        GestureScrollBegin = 2,
20581        GestureScrollUpdate = 3,
20582        GestureScrollEnd = 4,
20583        GestureTap = 5,
20584        GestureTapCancel = 6,
20585    }
20586    impl InputType {
20587        /// String value of the enum field names used in the ProtoBuf definition.
20588        ///
20589        /// The values are not transformed in any way and thus are considered stable
20590        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20591        pub fn as_str_name(&self) -> &'static str {
20592            match self {
20593                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
20594                InputType::TouchMoved => "TOUCH_MOVED",
20595                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
20596                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
20597                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
20598                InputType::GestureTap => "GESTURE_TAP",
20599                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
20600            }
20601        }
20602    }
20603}
20604// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
20605
20606// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20607
20608/// Details about a legacy Chrome IPC message that is either sent by the event.
20609/// TODO(eseckler): Also use this message on the receiving side?
20610#[derive(Clone, PartialEq, ::prost::Message)]
20611pub struct ChromeLegacyIpc {
20612    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
20613    /// enum, e.g. FrameMsgStart,
20614    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
20615    pub message_class: ::core::option::Option<i32>,
20616    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
20617    /// IPC_MESSAGE_START macros.
20618    #[prost(uint32, optional, tag="2")]
20619    pub message_line: ::core::option::Option<u32>,
20620}
20621/// Nested message and enum types in `ChromeLegacyIpc`.
20622pub mod chrome_legacy_ipc {
20623    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20624    #[repr(i32)]
20625    pub enum MessageClass {
20626        ClassUnspecified = 0,
20627        ClassAutomation = 1,
20628        ClassFrame = 2,
20629        ClassPage = 3,
20630        ClassView = 4,
20631        ClassWidget = 5,
20632        ClassInput = 6,
20633        ClassTest = 7,
20634        ClassWorker = 8,
20635        ClassNacl = 9,
20636        ClassGpuChannel = 10,
20637        ClassMedia = 11,
20638        ClassPpapi = 12,
20639        ClassChrome = 13,
20640        ClassDrag = 14,
20641        ClassPrint = 15,
20642        ClassExtension = 16,
20643        ClassTextInputClient = 17,
20644        ClassBlinkTest = 18,
20645        ClassAccessibility = 19,
20646        ClassPrerender = 20,
20647        ClassChromoting = 21,
20648        ClassBrowserPlugin = 22,
20649        ClassAndroidWebView = 23,
20650        ClassNaclHost = 24,
20651        ClassEncryptedMedia = 25,
20652        ClassCast = 26,
20653        ClassGinJavaBridge = 27,
20654        ClassChromeUtilityPrinting = 28,
20655        ClassOzoneGpu = 29,
20656        ClassWebTest = 30,
20657        ClassNetworkHints = 31,
20658        ClassExtensionsGuestView = 32,
20659        ClassGuestView = 33,
20660        ClassMediaPlayerDelegate = 34,
20661        ClassExtensionWorker = 35,
20662        ClassSubresourceFilter = 36,
20663        ClassUnfreezableFrame = 37,
20664    }
20665    impl MessageClass {
20666        /// String value of the enum field names used in the ProtoBuf definition.
20667        ///
20668        /// The values are not transformed in any way and thus are considered stable
20669        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20670        pub fn as_str_name(&self) -> &'static str {
20671            match self {
20672                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
20673                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
20674                MessageClass::ClassFrame => "CLASS_FRAME",
20675                MessageClass::ClassPage => "CLASS_PAGE",
20676                MessageClass::ClassView => "CLASS_VIEW",
20677                MessageClass::ClassWidget => "CLASS_WIDGET",
20678                MessageClass::ClassInput => "CLASS_INPUT",
20679                MessageClass::ClassTest => "CLASS_TEST",
20680                MessageClass::ClassWorker => "CLASS_WORKER",
20681                MessageClass::ClassNacl => "CLASS_NACL",
20682                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
20683                MessageClass::ClassMedia => "CLASS_MEDIA",
20684                MessageClass::ClassPpapi => "CLASS_PPAPI",
20685                MessageClass::ClassChrome => "CLASS_CHROME",
20686                MessageClass::ClassDrag => "CLASS_DRAG",
20687                MessageClass::ClassPrint => "CLASS_PRINT",
20688                MessageClass::ClassExtension => "CLASS_EXTENSION",
20689                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
20690                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
20691                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
20692                MessageClass::ClassPrerender => "CLASS_PRERENDER",
20693                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
20694                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
20695                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
20696                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
20697                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
20698                MessageClass::ClassCast => "CLASS_CAST",
20699                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
20700                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
20701                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
20702                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
20703                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
20704                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
20705                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
20706                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
20707                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
20708                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
20709                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
20710            }
20711        }
20712    }
20713}
20714// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
20715
20716// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
20717
20718/// Details about Chrome message pump events
20719#[derive(Clone, PartialEq, ::prost::Message)]
20720pub struct ChromeMessagePump {
20721    /// True if there are sent messages in the queue.
20722    #[prost(bool, optional, tag="1")]
20723    pub sent_messages_in_queue: ::core::option::Option<bool>,
20724    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
20725    /// invoke.
20726    #[prost(uint64, optional, tag="2")]
20727    pub io_handler_location_iid: ::core::option::Option<u64>,
20728}
20729// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
20730
20731// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
20732
20733/// Contains information to identify mojo handling events. The trace events in
20734/// mojo are common for all mojo interfaces and this information is used to
20735/// identify who is the caller or callee.
20736#[derive(Clone, PartialEq, ::prost::Message)]
20737pub struct ChromeMojoEventInfo {
20738    /// Contains the interface name or the file name of the creator of a mojo
20739    /// handle watcher, recorded when an event if notified to the watcher. The code
20740    /// that runs within the track event belongs to the interface.
20741    #[prost(string, optional, tag="1")]
20742    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20743    /// The hash of the IPC message that is being handled.
20744    #[prost(uint32, optional, tag="2")]
20745    pub ipc_hash: ::core::option::Option<u32>,
20746    /// A static string representing the mojo interface name of the message that is
20747    /// being handled.
20748    #[prost(string, optional, tag="3")]
20749    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
20750    /// Refers to an interned UnsymbolizedSourceLocation.
20751    /// The UnsymbolizedSourceLocation contains the interface method that's being
20752    /// handled, represented as a native symbol.
20753    /// The native symbol can be symbolized after the trace is recorded.
20754    /// Not using a symbolized source location for official Chromium builds to
20755    /// reduce binary size - emitting file/function names as strings into the
20756    /// trace requires storing them in the binary, which causes a significant
20757    /// binary size bloat for Chromium.
20758    #[prost(uint64, optional, tag="4")]
20759    pub mojo_interface_method_iid: ::core::option::Option<u64>,
20760    /// Indicate whether this is a message or reply.
20761    #[prost(bool, optional, tag="5")]
20762    pub is_reply: ::core::option::Option<bool>,
20763    /// The payload size of the message being sent through mojo messages.
20764    #[prost(uint64, optional, tag="6")]
20765    pub payload_size: ::core::option::Option<u64>,
20766    /// Represents the size of the message. Includes all headers and user payload.
20767    #[prost(uint64, optional, tag="7")]
20768    pub data_num_bytes: ::core::option::Option<u64>,
20769}
20770#[derive(Clone, PartialEq, ::prost::Message)]
20771pub struct ChromeRendererSchedulerState {
20772    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
20773    pub rail_mode: ::core::option::Option<i32>,
20774    #[prost(bool, optional, tag="2")]
20775    pub is_backgrounded: ::core::option::Option<bool>,
20776    #[prost(bool, optional, tag="3")]
20777    pub is_hidden: ::core::option::Option<bool>,
20778}
20779// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
20780
20781// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
20782
20783/// Details about a UI interaction initiated by the user, such as opening or
20784/// closing a tab or a context menu.
20785#[derive(Clone, PartialEq, ::prost::Message)]
20786pub struct ChromeUserEvent {
20787    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
20788    /// Chrome, these are usually static strings known at compile time, or
20789    /// concatenations of multiple such static strings).
20790    #[prost(string, optional, tag="1")]
20791    pub action: ::core::option::Option<::prost::alloc::string::String>,
20792    /// MD5 hash of the action string.
20793    #[prost(uint64, optional, tag="2")]
20794    pub action_hash: ::core::option::Option<u64>,
20795}
20796// End of protos/perfetto/trace/track_event/chrome_user_event.proto
20797
20798// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20799
20800/// Details about HWNDMessageHandler trace events.
20801#[derive(Clone, PartialEq, ::prost::Message)]
20802pub struct ChromeWindowHandleEventInfo {
20803    #[prost(uint32, optional, tag="1")]
20804    pub dpi: ::core::option::Option<u32>,
20805    #[prost(uint32, optional, tag="2")]
20806    pub message_id: ::core::option::Option<u32>,
20807    #[prost(fixed64, optional, tag="3")]
20808    pub hwnd_ptr: ::core::option::Option<u64>,
20809}
20810// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
20811
20812// Begin of protos/perfetto/trace/track_event/screenshot.proto
20813
20814#[derive(Clone, PartialEq, ::prost::Message)]
20815pub struct Screenshot {
20816    #[prost(bytes="vec", optional, tag="1")]
20817    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20818}
20819// End of protos/perfetto/trace/track_event/screenshot.proto
20820
20821// Begin of protos/perfetto/trace/track_event/task_execution.proto
20822
20823/// TrackEvent arguments describing the execution of a task.
20824#[derive(Clone, PartialEq, ::prost::Message)]
20825pub struct TaskExecution {
20826    /// Source location that the task was posted from.
20827    /// interned SourceLocation.
20828    #[prost(uint64, optional, tag="1")]
20829    pub posted_from_iid: ::core::option::Option<u64>,
20830}
20831// Begin of protos/perfetto/trace/track_event/track_event.proto
20832
20833// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
20834// protos are still subject to change. Don't depend on them staying as they are.
20835
20836/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
20837/// which describe activity on a track, such as a thread or asynchronous event
20838/// track. The track is specified using separate TrackDescriptor messages and
20839/// referred to via the track's UUID.
20840///
20841/// A simple TrackEvent packet specifies a timestamp, category, name and type:
20842/// ```protobuf
20843///    trace_packet {
20844///      timestamp: 1000
20845///      track_event {
20846///        categories: \["my_cat"\]
20847///        name: "my_event"
20848///        type: TYPE_INSTANT
20849///       }
20850///     }
20851/// ```
20852///
20853/// To associate an event with a custom track (e.g. a thread), the track is
20854/// defined in a separate packet and referred to from the TrackEvent by its UUID:
20855/// ```protobuf
20856///    trace_packet {
20857///      track_descriptor {
20858///        track_uuid: 1234
20859///        name: "my_track"
20860///
20861///        // Optionally, associate the track with a thread.
20862///        thread_descriptor {
20863///          pid: 10
20864///          tid: 10
20865///          ..
20866///        }
20867///      }
20868///    }
20869/// ```
20870///
20871/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
20872///
20873/// ```protobuf
20874///    trace_packet {
20875///      timestamp: 1200
20876///      track_event {
20877///        track_uuid: 1234
20878///        categories: \["my_cat"\]
20879///        name: "my_slice"
20880///        type: TYPE_SLICE_BEGIN
20881///      }
20882///    }
20883///    trace_packet {
20884///      timestamp: 1400
20885///      track_event {
20886///        track_uuid: 1234
20887///        type: TYPE_SLICE_END
20888///      }
20889///    }
20890/// ```
20891/// TrackEvents also support optimizations to reduce data repetition and encoded
20892/// data size, e.g. through data interning (names, categories, ...) and delta
20893/// encoding of timestamps/counters. For details, see the InternedData message.
20894/// Further, default values for attributes of events on the same sequence (e.g.
20895/// their default track association) can be emitted as part of a
20896/// TrackEventDefaults message.
20897///
20898/// Next reserved id: 13 (up to 15). Next id: 57.
20899#[derive(Clone, PartialEq, ::prost::Message)]
20900pub struct TrackEvent {
20901    /// Names of categories of the event. In the client library, categories are a
20902    /// way to turn groups of individual events on or off.
20903    /// interned EventCategoryName.
20904    #[prost(uint64, repeated, packed="false", tag="3")]
20905    pub category_iids: ::prost::alloc::vec::Vec<u64>,
20906    /// non-interned variant.
20907    #[prost(string, repeated, tag="22")]
20908    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20909    #[prost(enumeration="track_event::Type", optional, tag="9")]
20910    pub r#type: ::core::option::Option<i32>,
20911    /// Identifies the track of the event. The default value may be overridden
20912    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
20913    /// sequence (in most cases sequence = one thread). If no value is specified
20914    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
20915    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
20916    #[prost(uint64, optional, tag="11")]
20917    pub track_uuid: ::core::option::Option<u64>,
20918    /// To encode counter values more efficiently, we support attaching additional
20919    /// counter values to a TrackEvent of any type. All values will share the same
20920    /// timestamp specified in the TracePacket. The value at
20921    /// extra_counter_values\[N\] is for the counter track referenced by
20922    /// extra_counter_track_uuids\[N\].
20923    ///
20924    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
20925    /// should always be equal or more uuids than values. It is valid to set more
20926    /// uuids (e.g. via defaults) than values. If uuids are specified in
20927    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
20928    /// default uuid list.
20929    ///
20930    /// For example, this allows snapshotting the thread time clock at each
20931    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
20932    #[prost(uint64, repeated, packed="false", tag="31")]
20933    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20934    #[prost(int64, repeated, packed="false", tag="12")]
20935    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
20936    /// Counter snapshots using floating point instead of integer values.
20937    #[prost(uint64, repeated, packed="false", tag="45")]
20938    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20939    #[prost(double, repeated, packed="false", tag="46")]
20940    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
20941    /// IDs of flows originating, passing through, or ending at this event.
20942    /// Flow IDs are global within a trace.
20943    ///
20944    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
20945    /// an input event may be handled on one thread but cause another event on
20946    /// a different thread - a flow between the two events can associate them.
20947    ///
20948    /// The direction of the flows between events is inferred from the events'
20949    /// timestamps. The earliest event with the same flow ID becomes the source
20950    /// of the flow. Any events thereafter are intermediate steps of the flow,
20951    /// until the flow terminates at the last event with the flow ID.
20952    ///
20953    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
20954    /// that the same ID can later be reused for another flow.
20955    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
20956    #[deprecated]
20957    #[prost(uint64, repeated, packed="false", tag="36")]
20958    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20959    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
20960    /// consumption.
20961    #[prost(fixed64, repeated, packed="false", tag="47")]
20962    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
20963    /// List of flow ids which should terminate on this event, otherwise same as
20964    /// |flow_ids|.
20965    /// Any one flow ID should be either listed as part of |flow_ids| OR
20966    /// |terminating_flow_ids|, not both.
20967    /// DEPRECATED. Only kept for backwards compatibility.  Use
20968    /// |terminating_flow_ids|.
20969    #[deprecated]
20970    #[prost(uint64, repeated, packed="false", tag="42")]
20971    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20972    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
20973    /// "terminating_flow_ids" to reduce memory consumption.
20974    #[prost(fixed64, repeated, packed="false", tag="48")]
20975    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
20976    /// Debug annotations associated with this event. These are arbitrary key-value
20977    /// pairs that can be used to attach additional information to the event.
20978    /// See DebugAnnotation message for details on supported value types.
20979    ///
20980    /// For example, debug annotations can be used to attach a URL or resource
20981    /// identifier to a network request event. Arrays, dictionaries and full
20982    /// nested structures (e.g. arrays of dictionaries of dictionaries)
20983    /// are supported.
20984    #[prost(message, repeated, tag="4")]
20985    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
20986    // ---------------------------------------------------------------------------
20987    // TrackEvent arguments:
20988    // ---------------------------------------------------------------------------
20989    //
20990    // NOTE: The fields below this point are NOT part of the stable public API.
20991    // They are primarily intended for internal use by Chrome and Android. These
20992    // fields may change or be removed without notice. For custom/synthetic
20993    // traces, prefer using the fields above (name, categories, type, flows,
20994    // correlation_id, callstack, etc.) along with custom debug_annotations.
20995
20996    /// Typed event arguments:
20997    #[prost(message, optional, tag="5")]
20998    pub task_execution: ::core::option::Option<TaskExecution>,
20999    #[prost(message, optional, tag="21")]
21000    pub log_message: ::core::option::Option<LogMessage>,
21001    #[prost(message, optional, tag="24")]
21002    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
21003    #[prost(message, optional, tag="25")]
21004    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
21005    #[prost(message, optional, tag="26")]
21006    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
21007    #[prost(message, optional, tag="27")]
21008    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
21009    #[prost(message, optional, tag="28")]
21010    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
21011    #[prost(message, optional, tag="29")]
21012    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
21013    /// DEPRECATED. Only kept for backwards compatibility. Use the
21014    /// |ChromeTrackEvent.frame_reporter| extension in
21015    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
21016    /// instead.
21017    #[deprecated]
21018    #[prost(message, optional, tag="32")]
21019    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
21020    #[prost(message, optional, tag="39")]
21021    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
21022    #[prost(message, optional, tag="40")]
21023    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
21024    #[prost(message, optional, tag="41")]
21025    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
21026    #[prost(message, optional, tag="43")]
21027    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
21028    #[prost(message, optional, tag="49")]
21029    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
21030    #[prost(message, optional, tag="50")]
21031    pub screenshot: ::core::option::Option<Screenshot>,
21032    #[prost(message, optional, tag="35")]
21033    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
21034    #[prost(message, optional, tag="38")]
21035    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
21036    #[prost(message, optional, tag="6")]
21037    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
21038    /// Optional name of the event for its display in trace viewer. May be left
21039    /// unspecified for events with typed arguments.
21040    ///
21041    /// Note that metrics should not rely on event names, as they are prone to
21042    /// changing. Instead, they should use typed arguments to identify the events
21043    /// they are interested in.
21044    #[prost(oneof="track_event::NameField", tags="10, 23")]
21045    pub name_field: ::core::option::Option<track_event::NameField>,
21046    /// A new value for a counter track. |track_uuid| should refer to a track with
21047    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
21048    /// efficient encoding of counter values that are sampled at the beginning/end
21049    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
21050    /// Counter values can optionally be encoded in as delta values (positive or
21051    /// negative) on each packet sequence (see CounterIncrementalBase).
21052    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
21053    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
21054    /// An opaque identifier to correlate this slice with other slices that are
21055    /// considered part of the same logical operation, even if they are not
21056    /// causally connected. Examples uses of a correlation id might be the number
21057    /// of frame going through various stages of rendering in a GPU, the id for an
21058    /// RPC request going through a distributed system, or the id of a network
21059    /// request going through various stages of processing by the kernel.
21060    ///
21061    /// NOTE: if the events *are* causually connected, you probably want to use
21062    /// flows instead of OR in addition to correlation ids.
21063    ///
21064    /// UIs can use this identifier to visually link these slices, for instance,
21065    /// by assigning them a consistent color or highlighting the entire correlated
21066    /// set when one slice is hovered.
21067    ///
21068    /// Only one field within this 'oneof' should be set to define the correlation.
21069    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
21070    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
21071    /// Callstack associated with this event. This captures the program stack at
21072    /// the time the event occurred, useful for understanding what code path led
21073    /// to the event.
21074    ///
21075    /// Two variants are supported:
21076    /// - callstack: Inline callstack data (simpler when trace size is not a
21077    ///    concern or callstacks are unique)
21078    /// - callstack_iid: Reference to an interned Callstack in InternedData
21079    ///    (efficient for repeated callstacks)
21080    ///
21081    /// Only one of these fields should be set.
21082    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
21083    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
21084    /// This field is used only if the source location represents the function that
21085    /// executes during this event.
21086    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
21087    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
21088    // ---------------------------------------------------------------------------
21089    // Deprecated / legacy event fields, which will be removed in the future:
21090    // ---------------------------------------------------------------------------
21091
21092    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
21093    /// TracePacket instead.
21094    ///
21095    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
21096    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
21097    pub timestamp: ::core::option::Option<track_event::Timestamp>,
21098    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21099    /// encode thread time instead.
21100    ///
21101    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
21102    /// microseconds.
21103    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
21104    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
21105    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21106    /// encode thread instruction count instead.
21107    ///
21108    /// Value of the instruction counter for the current thread.
21109    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
21110    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
21111}
21112/// Nested message and enum types in `TrackEvent`.
21113pub mod track_event {
21114    /// Inline callstack for TrackEvents when interning is not needed.
21115    /// This is a simplified version of the profiling Callstack/Frame messages,
21116    /// designed for cases where trace size is not critical or callstacks are
21117    /// unique.
21118    ///
21119    /// Use this for simple callstacks with function names and source locations.
21120    /// For binary/library information (mappings, build IDs, relative PCs), use
21121    /// interned callstacks via callstack_iid instead.
21122    #[derive(Clone, PartialEq, ::prost::Message)]
21123    pub struct Callstack {
21124        /// Frames of this callstack, ordered from bottom (outermost) to top
21125        /// (innermost). For example, if main() calls foo() which calls bar(), the
21126        /// frames would be: [main, foo, bar]
21127        #[prost(message, repeated, tag="1")]
21128        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
21129    }
21130    /// Nested message and enum types in `Callstack`.
21131    pub mod callstack {
21132        /// Frame within an inline callstack.
21133        #[derive(Clone, PartialEq, ::prost::Message)]
21134        pub struct Frame {
21135            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
21136            #[prost(string, optional, tag="1")]
21137            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
21138            /// Optional: Source file path, e.g., "/src/foo.cc"
21139            #[prost(string, optional, tag="2")]
21140            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
21141            /// Optional: Line number in the source file
21142            #[prost(uint32, optional, tag="3")]
21143            pub line_number: ::core::option::Option<u32>,
21144        }
21145    }
21146    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
21147    /// event attributes are initially simply proxied for conversion to a JSON
21148    /// trace. We intend to gradually transition these attributes to similar native
21149    /// features in TrackEvent (e.g. async + flow events), or deprecate them
21150    /// without replacement where transition is unsuitable.
21151    ///
21152    /// Next reserved id: 16 (up to 16).
21153    /// Next id: 20.
21154    #[derive(Clone, PartialEq, ::prost::Message)]
21155    pub struct LegacyEvent {
21156        /// Deprecated, use TrackEvent::name(_iid) instead.
21157        /// interned EventName.
21158        #[prost(uint64, optional, tag="1")]
21159        pub name_iid: ::core::option::Option<u64>,
21160        #[prost(int32, optional, tag="2")]
21161        pub phase: ::core::option::Option<i32>,
21162        #[prost(int64, optional, tag="3")]
21163        pub duration_us: ::core::option::Option<i64>,
21164        #[prost(int64, optional, tag="4")]
21165        pub thread_duration_us: ::core::option::Option<i64>,
21166        /// Elapsed retired instruction count during the event.
21167        #[prost(int64, optional, tag="15")]
21168        pub thread_instruction_delta: ::core::option::Option<i64>,
21169        /// Additional optional scope for |id|.
21170        #[prost(string, optional, tag="7")]
21171        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
21172        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
21173        #[prost(bool, optional, tag="9")]
21174        pub use_async_tts: ::core::option::Option<bool>,
21175        /// Idenfifies a flow. Flow events with the same bind_id are connected.
21176        #[prost(uint64, optional, tag="8")]
21177        pub bind_id: ::core::option::Option<u64>,
21178        /// Use the enclosing slice as binding point for a flow end event instead of
21179        /// the next slice. Flow start/step events always bind to the enclosing
21180        /// slice.
21181        #[prost(bool, optional, tag="12")]
21182        pub bind_to_enclosing: ::core::option::Option<bool>,
21183        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
21184        pub flow_direction: ::core::option::Option<i32>,
21185        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
21186        pub instant_event_scope: ::core::option::Option<i32>,
21187        /// Override the pid/tid if the writer needs to emit events on behalf of
21188        /// another process/thread. This should be the exception. Normally, the
21189        /// pid+tid from ThreadDescriptor is used.
21190        #[prost(int32, optional, tag="18")]
21191        pub pid_override: ::core::option::Option<i32>,
21192        #[prost(int32, optional, tag="19")]
21193        pub tid_override: ::core::option::Option<i32>,
21194        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
21195        pub id: ::core::option::Option<legacy_event::Id>,
21196    }
21197    /// Nested message and enum types in `LegacyEvent`.
21198    pub mod legacy_event {
21199        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21200        #[repr(i32)]
21201        pub enum FlowDirection {
21202            FlowUnspecified = 0,
21203            FlowIn = 1,
21204            FlowOut = 2,
21205            FlowInout = 3,
21206        }
21207        impl FlowDirection {
21208            /// String value of the enum field names used in the ProtoBuf definition.
21209            ///
21210            /// The values are not transformed in any way and thus are considered stable
21211            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21212            pub fn as_str_name(&self) -> &'static str {
21213                match self {
21214                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
21215                    FlowDirection::FlowIn => "FLOW_IN",
21216                    FlowDirection::FlowOut => "FLOW_OUT",
21217                    FlowDirection::FlowInout => "FLOW_INOUT",
21218                }
21219            }
21220        }
21221        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21222        #[repr(i32)]
21223        pub enum InstantEventScope {
21224            ScopeUnspecified = 0,
21225            ScopeGlobal = 1,
21226            ScopeProcess = 2,
21227            ScopeThread = 3,
21228        }
21229        impl InstantEventScope {
21230            /// String value of the enum field names used in the ProtoBuf definition.
21231            ///
21232            /// The values are not transformed in any way and thus are considered stable
21233            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21234            pub fn as_str_name(&self) -> &'static str {
21235                match self {
21236                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
21237                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
21238                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
21239                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
21240                }
21241            }
21242        }
21243        #[derive(Clone, PartialEq, ::prost::Oneof)]
21244        pub enum Id {
21245            #[prost(uint64, tag="6")]
21246            UnscopedId(u64),
21247            #[prost(uint64, tag="10")]
21248            LocalId(u64),
21249            #[prost(uint64, tag="11")]
21250            GlobalId(u64),
21251        }
21252    }
21253    // TODO(eseckler): Support using binary symbols for category/event names.
21254
21255    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
21256    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21257    #[repr(i32)]
21258    pub enum Type {
21259        Unspecified = 0,
21260        /// Slice events are events that have a begin and end timestamp, i.e. a
21261        /// duration. They can be nested similar to a callstack: If, on the same
21262        /// track, event B begins after event A, but before A ends, B is a child
21263        /// event of A and will be drawn as a nested event underneath A in the UI.
21264        /// Note that child events should always end before their parents (e.g. B
21265        /// before A).
21266        ///
21267        /// Each slice event is formed by a pair of BEGIN + END events. The END event
21268        /// does not need to repeat any TrackEvent fields it has in common with its
21269        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
21270        /// END pair will be merged during trace import.
21271        ///
21272        /// Note that we deliberately chose not to support COMPLETE events (which
21273        /// would specify a duration directly) since clients would need to delay
21274        /// writing them until the slice is completed, which can result in reordered
21275        /// events in the trace and loss of unfinished events at the end of a trace.
21276        SliceBegin = 1,
21277        SliceEnd = 2,
21278        /// Instant events are nestable events without duration. They can be children
21279        /// of slice events on the same track.
21280        Instant = 3,
21281        /// Event that provides a value for a counter track. |track_uuid| should
21282        /// refer to a counter track and |counter_value| set to the new value. Note
21283        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
21284        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
21285        Counter = 4,
21286    }
21287    impl Type {
21288        /// String value of the enum field names used in the ProtoBuf definition.
21289        ///
21290        /// The values are not transformed in any way and thus are considered stable
21291        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21292        pub fn as_str_name(&self) -> &'static str {
21293            match self {
21294                Type::Unspecified => "TYPE_UNSPECIFIED",
21295                Type::SliceBegin => "TYPE_SLICE_BEGIN",
21296                Type::SliceEnd => "TYPE_SLICE_END",
21297                Type::Instant => "TYPE_INSTANT",
21298                Type::Counter => "TYPE_COUNTER",
21299            }
21300        }
21301    }
21302    /// Optional name of the event for its display in trace viewer. May be left
21303    /// unspecified for events with typed arguments.
21304    ///
21305    /// Note that metrics should not rely on event names, as they are prone to
21306    /// changing. Instead, they should use typed arguments to identify the events
21307    /// they are interested in.
21308    #[derive(Clone, PartialEq, ::prost::Oneof)]
21309    pub enum NameField {
21310        /// interned EventName.
21311        #[prost(uint64, tag="10")]
21312        NameIid(u64),
21313        /// non-interned variant.
21314        #[prost(string, tag="23")]
21315        Name(::prost::alloc::string::String),
21316    }
21317    /// A new value for a counter track. |track_uuid| should refer to a track with
21318    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
21319    /// efficient encoding of counter values that are sampled at the beginning/end
21320    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
21321    /// Counter values can optionally be encoded in as delta values (positive or
21322    /// negative) on each packet sequence (see CounterIncrementalBase).
21323    #[derive(Clone, PartialEq, ::prost::Oneof)]
21324    pub enum CounterValueField {
21325        #[prost(int64, tag="30")]
21326        CounterValue(i64),
21327        #[prost(double, tag="44")]
21328        DoubleCounterValue(f64),
21329    }
21330    /// An opaque identifier to correlate this slice with other slices that are
21331    /// considered part of the same logical operation, even if they are not
21332    /// causally connected. Examples uses of a correlation id might be the number
21333    /// of frame going through various stages of rendering in a GPU, the id for an
21334    /// RPC request going through a distributed system, or the id of a network
21335    /// request going through various stages of processing by the kernel.
21336    ///
21337    /// NOTE: if the events *are* causually connected, you probably want to use
21338    /// flows instead of OR in addition to correlation ids.
21339    ///
21340    /// UIs can use this identifier to visually link these slices, for instance,
21341    /// by assigning them a consistent color or highlighting the entire correlated
21342    /// set when one slice is hovered.
21343    ///
21344    /// Only one field within this 'oneof' should be set to define the correlation.
21345    #[derive(Clone, PartialEq, ::prost::Oneof)]
21346    pub enum CorrelationIdField {
21347        /// A 64-bit unsigned integer used as the correlation ID.
21348        ///
21349        /// Best for performance and compact traces if the identifier is naturally
21350        /// numerical or can be easily mapped to one by the trace producer.
21351        #[prost(uint64, tag="52")]
21352        CorrelationId(u64),
21353        /// A string value used as the correlation ID.
21354        ///
21355        /// Offers maximum flexibility for human-readable or complex identifiers
21356        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
21357        /// size. For frequently repeated string identifiers, consider
21358        /// 'correlation_id_string_iid'.
21359        #[prost(string, tag="53")]
21360        CorrelationIdStr(::prost::alloc::string::String),
21361        /// An interned string identifier (an IID) for correlation.
21362        ///
21363        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
21364        /// field within the packet sequence's InternedData. This approach combines
21365        /// the descriptiveness and uniqueness of strings with the efficiency of
21366        /// integer IDs for storage and comparison, especially for identifiers that
21367        /// repeat across many events.
21368        #[prost(uint64, tag="54")]
21369        CorrelationIdStrIid(u64),
21370    }
21371    /// Callstack associated with this event. This captures the program stack at
21372    /// the time the event occurred, useful for understanding what code path led
21373    /// to the event.
21374    ///
21375    /// Two variants are supported:
21376    /// - callstack: Inline callstack data (simpler when trace size is not a
21377    ///    concern or callstacks are unique)
21378    /// - callstack_iid: Reference to an interned Callstack in InternedData
21379    ///    (efficient for repeated callstacks)
21380    ///
21381    /// Only one of these fields should be set.
21382    #[derive(Clone, PartialEq, ::prost::Oneof)]
21383    pub enum CallstackField {
21384        /// Inline callstack data. Use this for simplicity when interning is not
21385        /// needed (e.g., for unique callstacks or when trace size is not critical).
21386        #[prost(message, tag="55")]
21387        Callstack(Callstack),
21388        /// Reference to interned Callstack (see InternedData.callstacks).
21389        /// This is the efficient option when callstacks are repeated.
21390        ///
21391        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
21392        #[prost(uint64, tag="56")]
21393        CallstackIid(u64),
21394    }
21395    /// This field is used only if the source location represents the function that
21396    /// executes during this event.
21397    #[derive(Clone, PartialEq, ::prost::Oneof)]
21398    pub enum SourceLocationField {
21399        /// Non-interned field.
21400        #[prost(message, tag="33")]
21401        SourceLocation(super::SourceLocation),
21402        /// Interned field.
21403        #[prost(uint64, tag="34")]
21404        SourceLocationIid(u64),
21405    }
21406    // ---------------------------------------------------------------------------
21407    // Deprecated / legacy event fields, which will be removed in the future:
21408    // ---------------------------------------------------------------------------
21409
21410    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
21411    /// TracePacket instead.
21412    ///
21413    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
21414    #[derive(Clone, PartialEq, ::prost::Oneof)]
21415    pub enum Timestamp {
21416        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21417        /// calculate the absolute timestamp value, sum up all delta values of the
21418        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21419        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21420        /// be positive.
21421        #[prost(int64, tag="1")]
21422        TimestampDeltaUs(i64),
21423        /// Absolute value (e.g. a manually specified timestamp in the macro).
21424        /// This is a one-off value that does not affect delta timestamp computation
21425        /// in subsequent TrackEvents.
21426        #[prost(int64, tag="16")]
21427        TimestampAbsoluteUs(i64),
21428    }
21429    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21430    /// encode thread time instead.
21431    ///
21432    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
21433    /// microseconds.
21434    #[derive(Clone, PartialEq, ::prost::Oneof)]
21435    pub enum ThreadTime {
21436        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
21437        /// calculate the absolute timestamp value, sum up all delta values of the
21438        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
21439        /// the |reference_timestamp| in ThreadDescriptor. This value should always
21440        /// be positive.
21441        #[prost(int64, tag="2")]
21442        ThreadTimeDeltaUs(i64),
21443        /// This is a one-off absolute value that does not affect delta timestamp
21444        /// computation in subsequent TrackEvents.
21445        #[prost(int64, tag="17")]
21446        ThreadTimeAbsoluteUs(i64),
21447    }
21448    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
21449    /// encode thread instruction count instead.
21450    ///
21451    /// Value of the instruction counter for the current thread.
21452    #[derive(Clone, PartialEq, ::prost::Oneof)]
21453    pub enum ThreadInstructionCount {
21454        /// Same encoding as |thread_time| field above.
21455        #[prost(int64, tag="8")]
21456        ThreadInstructionCountDelta(i64),
21457        #[prost(int64, tag="20")]
21458        ThreadInstructionCountAbsolute(i64),
21459    }
21460}
21461/// Default values for fields of all TrackEvents on the same packet sequence.
21462/// Should be emitted as part of TracePacketDefaults whenever incremental state
21463/// is cleared. It's defined here because field IDs should match those of the
21464/// corresponding fields in TrackEvent.
21465#[derive(Clone, PartialEq, ::prost::Message)]
21466pub struct TrackEventDefaults {
21467    #[prost(uint64, optional, tag="11")]
21468    pub track_uuid: ::core::option::Option<u64>,
21469    #[prost(uint64, repeated, packed="false", tag="31")]
21470    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21471    #[prost(uint64, repeated, packed="false", tag="45")]
21472    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21473}
21474// --------------------
21475// Interned data types:
21476// --------------------
21477
21478#[derive(Clone, PartialEq, ::prost::Message)]
21479pub struct EventCategory {
21480    #[prost(uint64, optional, tag="1")]
21481    pub iid: ::core::option::Option<u64>,
21482    #[prost(string, optional, tag="2")]
21483    pub name: ::core::option::Option<::prost::alloc::string::String>,
21484}
21485#[derive(Clone, PartialEq, ::prost::Message)]
21486pub struct EventName {
21487    #[prost(uint64, optional, tag="1")]
21488    pub iid: ::core::option::Option<u64>,
21489    #[prost(string, optional, tag="2")]
21490    pub name: ::core::option::Option<::prost::alloc::string::String>,
21491}
21492// End of protos/perfetto/trace/track_event/track_event.proto
21493
21494// Begin of protos/perfetto/trace/interned_data/interned_data.proto
21495
21496// ------------------------------ DATA INTERNING: ------------------------------
21497// Interning indexes are built up gradually by adding the entries contained in
21498// each TracePacket of the same packet sequence (packets emitted by the same
21499// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
21500// can only refer to interned data from other packets in the same sequence.
21501//
21502// The writer will emit new entries when it encounters new internable values
21503// that aren't yet in the index. Data in current and subsequent TracePackets can
21504// then refer to the entry by its position (interning ID, abbreviated "iid") in
21505// its index. An interning ID with value 0 is considered invalid (not set).
21506//
21507// Because of the incremental build-up, the interning index will miss data when
21508// TracePackets are lost, e.g. because a chunk was overridden in the central
21509// ring buffer. To avoid invalidation of the whole trace in such a case, the
21510// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
21511// When packet loss occurs, the reader will only lose interning data up to the
21512// next reset.
21513// -----------------------------------------------------------------------------
21514
21515/// Message that contains new entries for the interning indices of a packet
21516/// sequence.
21517///
21518/// The writer will usually emit new entries in the same TracePacket that first
21519/// refers to them (since the last reset of interning state). They may also be
21520/// emitted proactively in advance of referring to them in later packets.
21521///
21522/// Next reserved id: 8 (up to 15).
21523/// Next id: 45.
21524///
21525/// TODO(eseckler): Replace iid fields inside interned messages with
21526/// map<iid, message> type fields in InternedData.
21527#[derive(Clone, PartialEq, ::prost::Message)]
21528pub struct InternedData {
21529    /// Each field's message type needs to specify an |iid| field, which is the ID
21530    /// of the entry in the field's interning index. Each field constructs its own
21531    /// index, thus interning IDs are scoped to the tracing session and field
21532    /// (usually as a counter for efficient var-int encoding), and optionally to
21533    /// the incremental state generation of the packet sequence.
21534    #[prost(message, repeated, tag="1")]
21535    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
21536    #[prost(message, repeated, tag="2")]
21537    pub event_names: ::prost::alloc::vec::Vec<EventName>,
21538    #[prost(message, repeated, tag="3")]
21539    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
21540    #[prost(message, repeated, tag="27")]
21541    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
21542    #[prost(message, repeated, tag="4")]
21543    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
21544    #[prost(message, repeated, tag="28")]
21545    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
21546    #[prost(message, repeated, tag="20")]
21547    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
21548    #[prost(message, repeated, tag="25")]
21549    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
21550    // Note: field IDs up to 15 should be used for frequent data only.
21551
21552    /// Build IDs of exectuable files.
21553    #[prost(message, repeated, tag="16")]
21554    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
21555    /// Paths to executable files.
21556    #[prost(message, repeated, tag="17")]
21557    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
21558    /// Paths to source files.
21559    #[prost(message, repeated, tag="18")]
21560    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
21561    /// Names of functions used in frames below.
21562    #[prost(message, repeated, tag="5")]
21563    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
21564    /// Executable files mapped into processes.
21565    #[prost(message, repeated, tag="19")]
21566    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21567    /// Frames of callstacks of a program.
21568    #[prost(message, repeated, tag="6")]
21569    pub frames: ::prost::alloc::vec::Vec<Frame>,
21570    /// A callstack of a program.
21571    #[prost(message, repeated, tag="7")]
21572    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21573    /// Additional Vulkan information sent in a VulkanMemoryEvent message
21574    #[prost(message, repeated, tag="22")]
21575    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
21576    /// Graphics context of a render stage event.  This represent the GL
21577    /// context for an OpenGl app or the VkDevice for a Vulkan app.
21578    #[prost(message, repeated, tag="23")]
21579    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
21580    /// Description of a GPU hardware queue or render stage.
21581    #[prost(message, repeated, tag="24")]
21582    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
21583    /// This is set when FtraceConfig.symbolize_ksyms = true.
21584    /// The id of each symbol the number that will be reported in ftrace events
21585    /// like sched_block_reason.caller and is obtained from a monotonic counter.
21586    /// The same symbol can have different indexes in different bundles.
21587    /// This is is NOT the real address. This is to avoid disclosing KASLR through
21588    /// traces.
21589    #[prost(message, repeated, tag="26")]
21590    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
21591    /// Interned string values in the DebugAnnotation proto.
21592    #[prost(message, repeated, tag="29")]
21593    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
21594    /// Interned packet context for android.network_packets.
21595    #[prost(message, repeated, tag="30")]
21596    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
21597    /// Interned name of a js function. We only intern js functions as there is a
21598    /// lot of duplication for them, but less so for other strings in the V8 data
21599    /// source.
21600    #[prost(message, repeated, tag="31")]
21601    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
21602    /// Js functions can be emitted multiple times for various compilation tiers,
21603    /// so it makes sense to deduplicate all this.
21604    #[prost(message, repeated, tag="32")]
21605    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
21606    /// Interned JS script (there is one associated with each JS function)
21607    #[prost(message, repeated, tag="33")]
21608    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
21609    /// Interned Wasm script (there is one associated with each Wasm function)
21610    #[prost(message, repeated, tag="34")]
21611    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
21612    /// Every V8 event is associated with an isolate, intern the isolate to remove
21613    /// duplication.
21614    #[prost(message, repeated, tag="35")]
21615    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
21616    /// Interned protolog strings args.
21617    #[prost(message, repeated, tag="36")]
21618    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
21619    /// Interned protolog stacktraces.
21620    #[prost(message, repeated, tag="37")]
21621    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
21622    /// viewcapture
21623    #[prost(message, repeated, tag="38")]
21624    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
21625    #[prost(message, repeated, tag="39")]
21626    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
21627    #[prost(message, repeated, tag="40")]
21628    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
21629    #[prost(message, repeated, tag="41")]
21630    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
21631    #[prost(message, repeated, tag="45")]
21632    pub viewcapture_content_description: ::prost::alloc::vec::Vec<InternedString>,
21633    #[prost(message, repeated, tag="46")]
21634    pub viewcapture_text: ::prost::alloc::vec::Vec<InternedString>,
21635    /// Interned context for android.app_wakelocks.
21636    #[prost(message, repeated, tag="42")]
21637    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
21638    /// Interned correlation ids in track_event.
21639    #[prost(message, repeated, tag="43")]
21640    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
21641    /// Interned job names for Android Job Names. These are separate from
21642    /// other strings because they are under app control.
21643    #[prost(message, repeated, tag="44")]
21644    pub android_job_name: ::prost::alloc::vec::Vec<AndroidJobName>,
21645}
21646#[derive(Clone, PartialEq, ::prost::Message)]
21647pub struct AndroidJobName {
21648    #[prost(uint64, optional, tag="1")]
21649    pub iid: ::core::option::Option<u64>,
21650    #[prost(string, optional, tag="2")]
21651    pub name: ::core::option::Option<::prost::alloc::string::String>,
21652}
21653// End of protos/perfetto/trace/interned_data/interned_data.proto
21654
21655// Begin of protos/perfetto/trace/memory_graph.proto
21656
21657// Message definitions for app-reported memory breakdowns. At the moment, this
21658// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
21659// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
21660// This is unrelated to the native or java heap profilers (those protos live
21661// in //protos/perfetto/trace/profiling/).
21662
21663#[derive(Clone, PartialEq, ::prost::Message)]
21664pub struct MemoryTrackerSnapshot {
21665    /// Unique ID that represents the global memory dump.
21666    #[prost(uint64, optional, tag="1")]
21667    pub global_dump_id: ::core::option::Option<u64>,
21668    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
21669    pub level_of_detail: ::core::option::Option<i32>,
21670    #[prost(message, repeated, tag="3")]
21671    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
21672}
21673/// Nested message and enum types in `MemoryTrackerSnapshot`.
21674pub mod memory_tracker_snapshot {
21675    /// Memory snapshot of a process. The snapshot contains memory data that is
21676    /// from 2 different sources, namely system stats and instrumentation stats.
21677    /// The system memory usage stats come from the OS based on standard API
21678    /// available in the platform to query memory usage. The instrumentation stats
21679    /// are added by instrumenting specific piece of code which tracks memory
21680    /// allocations and deallocations made by a small sub-system within the
21681    /// application.
21682    /// The system stats of the global memory snapshot are recorded as part of
21683    /// ProcessStats and SmapsPacket fields in trace packet with the same
21684    /// timestamp.
21685    #[derive(Clone, PartialEq, ::prost::Message)]
21686    pub struct ProcessSnapshot {
21687        /// Process ID of the process
21688        #[prost(int32, optional, tag="1")]
21689        pub pid: ::core::option::Option<i32>,
21690        #[prost(message, repeated, tag="2")]
21691        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
21692        #[prost(message, repeated, tag="3")]
21693        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
21694    }
21695    /// Nested message and enum types in `ProcessSnapshot`.
21696    pub mod process_snapshot {
21697        // Memory dumps are represented as a graph of memory nodes which contain
21698        // statistics. To avoid double counting the same memory across different
21699        // nodes, edges are used to mark nodes that account for the same memory. See
21700        // this doc for examples of the usage:
21701        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
21702
21703        /// A single node in the memory graph.
21704        #[derive(Clone, PartialEq, ::prost::Message)]
21705        pub struct MemoryNode {
21706            /// Unique ID of the node across all processes involved in the global
21707            /// memory dump. The ID is only unique within this particular global dump
21708            /// identified by GlobalMemoryDumpPacket.global_dump_id.
21709            #[prost(uint64, optional, tag="1")]
21710            pub id: ::core::option::Option<u64>,
21711            /// Absolute name is a unique name for the memory node within the process
21712            /// with ProcessMemoryDump.pid. The name can contain multiple parts
21713            /// separated by '/', which traces the edges of the node from the root
21714            /// node.
21715            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
21716            /// node "buffer1" in a graph structure of:
21717            ///    root -> partition_allocator -> array_buffers -> buffer1.
21718            #[prost(string, optional, tag="2")]
21719            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
21720            /// A weak node means that the instrumentation that added the current node
21721            /// is unsure about the existence of the actual memory. Unless a "strong"
21722            /// (non-weak is default) node that has an edge to the current node exists
21723            /// in the current global dump, the current node will be discarded.
21724            #[prost(bool, optional, tag="3")]
21725            pub weak: ::core::option::Option<bool>,
21726            /// Size of the node in bytes, used to compute the effective size of the
21727            /// nodes without double counting.
21728            #[prost(uint64, optional, tag="4")]
21729            pub size_bytes: ::core::option::Option<u64>,
21730            #[prost(message, repeated, tag="5")]
21731            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
21732        }
21733        /// Nested message and enum types in `MemoryNode`.
21734        pub mod memory_node {
21735            /// Entries in the memory node that contain statistics and additional
21736            /// debuggable information about the memory. The size of the node is
21737            /// tracked separately in the |size_bytes| field.
21738            #[derive(Clone, PartialEq, ::prost::Message)]
21739            pub struct MemoryNodeEntry {
21740                #[prost(string, optional, tag="1")]
21741                pub name: ::core::option::Option<::prost::alloc::string::String>,
21742                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
21743                pub units: ::core::option::Option<i32>,
21744                /// Contains either one of uint64 or string value.
21745                #[prost(uint64, optional, tag="3")]
21746                pub value_uint64: ::core::option::Option<u64>,
21747                #[prost(string, optional, tag="4")]
21748                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
21749            }
21750            /// Nested message and enum types in `MemoryNodeEntry`.
21751            pub mod memory_node_entry {
21752                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21753                #[repr(i32)]
21754                pub enum Units {
21755                    Unspecified = 0,
21756                    Bytes = 1,
21757                    Count = 2,
21758                }
21759                impl Units {
21760                    /// String value of the enum field names used in the ProtoBuf definition.
21761                    ///
21762                    /// The values are not transformed in any way and thus are considered stable
21763                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21764                    pub fn as_str_name(&self) -> &'static str {
21765                        match self {
21766                            Units::Unspecified => "UNSPECIFIED",
21767                            Units::Bytes => "BYTES",
21768                            Units::Count => "COUNT",
21769                        }
21770                    }
21771                }
21772            }
21773        }
21774        /// A directed edge that connects any 2 nodes in the graph above. These are
21775        /// in addition to the inherent edges added due to the tree structure of the
21776        /// node's absolute names.
21777        /// Node with id |source_id| owns the node with id |target_id|, and has the
21778        /// effect of attributing the memory usage of target to source. |importance|
21779        /// is optional and relevant only for the cases of co-ownership, where it
21780        /// acts as a z-index: the owner with the highest importance will be
21781        /// attributed target's memory.
21782        #[derive(Clone, PartialEq, ::prost::Message)]
21783        pub struct MemoryEdge {
21784            #[prost(uint64, optional, tag="1")]
21785            pub source_id: ::core::option::Option<u64>,
21786            #[prost(uint64, optional, tag="2")]
21787            pub target_id: ::core::option::Option<u64>,
21788            #[prost(uint32, optional, tag="3")]
21789            pub importance: ::core::option::Option<u32>,
21790            #[prost(bool, optional, tag="4")]
21791            pub overridable: ::core::option::Option<bool>,
21792        }
21793    }
21794    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21795    #[repr(i32)]
21796    pub enum LevelOfDetail {
21797        DetailFull = 0,
21798        DetailLight = 1,
21799        DetailBackground = 2,
21800    }
21801    impl LevelOfDetail {
21802        /// String value of the enum field names used in the ProtoBuf definition.
21803        ///
21804        /// The values are not transformed in any way and thus are considered stable
21805        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21806        pub fn as_str_name(&self) -> &'static str {
21807            match self {
21808                LevelOfDetail::DetailFull => "DETAIL_FULL",
21809                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
21810                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
21811            }
21812        }
21813    }
21814}
21815// End of protos/perfetto/trace/memory_graph.proto
21816
21817// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21818
21819/// Used to trace the execution of perfetto itself.
21820#[derive(Clone, PartialEq, ::prost::Message)]
21821pub struct PerfettoMetatrace {
21822    /// Only when using |event_id|.
21823    #[prost(uint64, optional, tag="3")]
21824    pub event_duration_ns: ::core::option::Option<u64>,
21825    /// Only when using |counter_id|.
21826    #[prost(int32, optional, tag="4")]
21827    pub counter_value: ::core::option::Option<i32>,
21828    /// ID of the thread that emitted the event.
21829    #[prost(uint32, optional, tag="5")]
21830    pub thread_id: ::core::option::Option<u32>,
21831    /// If true the meta-tracing ring buffer had overruns and hence some data is
21832    /// missing from this point.
21833    #[prost(bool, optional, tag="6")]
21834    pub has_overruns: ::core::option::Option<bool>,
21835    /// Args for the event.
21836    #[prost(message, repeated, tag="7")]
21837    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
21838    #[prost(message, repeated, tag="10")]
21839    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
21840    /// See base/metatrace_events.h for definitions.
21841    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
21842    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
21843}
21844/// Nested message and enum types in `PerfettoMetatrace`.
21845pub mod perfetto_metatrace {
21846    #[derive(Clone, PartialEq, ::prost::Message)]
21847    pub struct Arg {
21848        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
21849        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
21850        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
21851        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
21852    }
21853    /// Nested message and enum types in `Arg`.
21854    pub mod arg {
21855        #[derive(Clone, PartialEq, ::prost::Oneof)]
21856        pub enum KeyOrInternedKey {
21857            #[prost(string, tag="1")]
21858            Key(::prost::alloc::string::String),
21859            #[prost(uint64, tag="3")]
21860            KeyIid(u64),
21861        }
21862        #[derive(Clone, PartialEq, ::prost::Oneof)]
21863        pub enum ValueOrInternedValue {
21864            #[prost(string, tag="2")]
21865            Value(::prost::alloc::string::String),
21866            #[prost(uint64, tag="4")]
21867            ValueIid(u64),
21868        }
21869    }
21870    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
21871    /// |value_iid| above.
21872    #[derive(Clone, PartialEq, ::prost::Message)]
21873    pub struct InternedString {
21874        #[prost(uint64, optional, tag="1")]
21875        pub iid: ::core::option::Option<u64>,
21876        #[prost(string, optional, tag="2")]
21877        pub value: ::core::option::Option<::prost::alloc::string::String>,
21878    }
21879    /// See base/metatrace_events.h for definitions.
21880    #[derive(Clone, PartialEq, ::prost::Oneof)]
21881    pub enum RecordType {
21882        #[prost(uint32, tag="1")]
21883        EventId(u32),
21884        #[prost(uint32, tag="2")]
21885        CounterId(u32),
21886        /// For trace processor metatracing.
21887        #[prost(string, tag="8")]
21888        EventName(::prost::alloc::string::String),
21889        #[prost(uint64, tag="11")]
21890        EventNameIid(u64),
21891        #[prost(string, tag="9")]
21892        CounterName(::prost::alloc::string::String),
21893    }
21894}
21895// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21896
21897// Begin of protos/perfetto/trace/perfetto/trace_provenance.proto
21898
21899#[derive(Clone, PartialEq, ::prost::Message)]
21900pub struct TraceProvenance {
21901    #[prost(message, repeated, tag="2")]
21902    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
21903}
21904/// Nested message and enum types in `TraceProvenance`.
21905pub mod trace_provenance {
21906    #[derive(Clone, PartialEq, ::prost::Message)]
21907    pub struct Sequence {
21908        /// The trusted_packet_sequence_id reported in each TracePacket.
21909        #[prost(uint32, optional, tag="1")]
21910        pub id: ::core::option::Option<u32>,
21911        /// ID of the producer, as per Producer.id.
21912        #[prost(int32, optional, tag="2")]
21913        pub producer_id: ::core::option::Option<i32>,
21914    }
21915    /// Describes a trace buffer and all the sequences writing to it.
21916    #[derive(Clone, PartialEq, ::prost::Message)]
21917    pub struct Buffer {
21918        #[prost(message, repeated, tag="1")]
21919        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
21920    }
21921}
21922// End of protos/perfetto/trace/perfetto/trace_provenance.proto
21923
21924// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
21925
21926/// Events emitted by the tracing service.
21927/// Next id: 12.
21928#[derive(Clone, PartialEq, ::prost::Message)]
21929pub struct TracingServiceEvent {
21930    /// When each of the following booleans are set to true, they report the
21931    /// point in time (through TracePacket's timestamp) where the condition
21932    /// they describe happened.
21933    /// The order of the booleans below matches the timestamp ordering
21934    /// they would generally be expected to have.
21935    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
21936    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
21937}
21938/// Nested message and enum types in `TracingServiceEvent`.
21939pub mod tracing_service_event {
21940    #[derive(Clone, PartialEq, ::prost::Message)]
21941    pub struct DataSources {
21942        #[prost(message, repeated, tag="1")]
21943        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
21944    }
21945    /// Nested message and enum types in `DataSources`.
21946    pub mod data_sources {
21947        #[derive(Clone, PartialEq, ::prost::Message)]
21948        pub struct DataSource {
21949            #[prost(string, optional, tag="1")]
21950            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
21951            #[prost(string, optional, tag="2")]
21952            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21953        }
21954    }
21955    /// When each of the following booleans are set to true, they report the
21956    /// point in time (through TracePacket's timestamp) where the condition
21957    /// they describe happened.
21958    /// The order of the booleans below matches the timestamp ordering
21959    /// they would generally be expected to have.
21960    #[derive(Clone, PartialEq, ::prost::Oneof)]
21961    pub enum EventType {
21962        /// Emitted when we start tracing and specifically, this will be before any
21963        /// producer is notified about the existence of this trace. This is always
21964        /// emitted before the all_data_sources_started event. This event is also
21965        /// guaranteed to be seen (byte-offset wise) before any data packets from
21966        /// producers.
21967        #[prost(bool, tag="2")]
21968        TracingStarted(bool),
21969        /// Emitted after all data sources saw the start event and ACKed it.
21970        /// This identifies the point in time when it's safe to assume that all data
21971        /// sources have been recording events.
21972        #[prost(bool, tag="1")]
21973        AllDataSourcesStarted(bool),
21974        /// Emitted when a flush is started.
21975        #[prost(bool, tag="9")]
21976        FlushStarted(bool),
21977        /// Emitted when all data sources have been flushed successfully or with an
21978        /// error (including timeouts). This can generally happen many times over the
21979        /// course of the trace.
21980        #[prost(bool, tag="3")]
21981        AllDataSourcesFlushed(bool),
21982        /// Emitted when reading back the central tracing buffers has been completed.
21983        /// If |write_into_file| is specified, this can happen many times over the
21984        /// course of the trace.
21985        #[prost(bool, tag="4")]
21986        ReadTracingBuffersCompleted(bool),
21987        /// Emitted after tracing has been disabled and specifically, this will be
21988        /// after all packets from producers have been included in the central
21989        /// tracing buffer.
21990        #[prost(bool, tag="5")]
21991        TracingDisabled(bool),
21992        /// Emitted if perfetto --save-for-bugreport was invoked while the current
21993        /// tracing session was running and it had the highest bugreport_score. In
21994        /// this case the original consumer will see a nearly empty trace, because
21995        /// the contents are routed onto the bugreport file. This event flags the
21996        /// situation explicitly. Traces that contain this marker should be discarded
21997        /// by test infrastructures / pipelines.
21998        /// Deprecated since Android U, where --save-for-bugreport uses
21999        /// non-destructive cloning.
22000        #[prost(bool, tag="6")]
22001        SeizedForBugreport(bool),
22002        /// Emitted when not all data sources in all producers reply to a start
22003        /// request after some time.
22004        #[prost(message, tag="7")]
22005        SlowStartingDataSources(DataSources),
22006        /// Emitted when the last flush request has failed. Lists data sources that
22007        /// did not reply on time.
22008        #[prost(message, tag="8")]
22009        LastFlushSlowDataSources(DataSources),
22010        /// If this was a cloned tracing session, emitted when the tracing serice
22011        /// started the clone operation.
22012        #[prost(bool, tag="10")]
22013        CloneStarted(bool),
22014        /// If this was a cloned tracing session, emitted when the tracing service
22015        /// finished the clone operation (for a specific buffer).
22016        #[prost(uint32, tag="11")]
22017        BufferCloned(u32),
22018    }
22019}
22020// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
22021
22022// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
22023
22024/// Energy consumer based on aidl class:
22025/// android.hardware.power.stats.EnergyConsumer.
22026#[derive(Clone, PartialEq, ::prost::Message)]
22027pub struct AndroidEnergyConsumer {
22028    /// Unique ID of this energy consumer.  Matches the ID in a
22029    /// AndroidEnergyEstimationBreakdown.
22030    #[prost(int32, optional, tag="1")]
22031    pub energy_consumer_id: ::core::option::Option<i32>,
22032    /// For a group of energy consumers of the same logical type, sorting by
22033    /// ordinal gives their physical order. Ordinals must be consecutive integers
22034    /// starting from 0.
22035    #[prost(int32, optional, tag="2")]
22036    pub ordinal: ::core::option::Option<i32>,
22037    /// Type of this energy consumer.
22038    #[prost(string, optional, tag="3")]
22039    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
22040    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
22041    /// framework.
22042    #[prost(string, optional, tag="4")]
22043    pub name: ::core::option::Option<::prost::alloc::string::String>,
22044}
22045#[derive(Clone, PartialEq, ::prost::Message)]
22046pub struct AndroidEnergyConsumerDescriptor {
22047    #[prost(message, repeated, tag="1")]
22048    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
22049}
22050// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
22051
22052// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
22053
22054/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
22055/// This proto represents the aidl class:
22056/// android.hardware.power.stats.EnergyConsumerResult.
22057#[derive(Clone, PartialEq, ::prost::Message)]
22058pub struct AndroidEnergyEstimationBreakdown {
22059    /// The first trace packet of each session should include a energy consumer
22060    /// descriptor.
22061    #[prost(message, optional, tag="1")]
22062    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
22063    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
22064    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
22065    /// should be sent at the beginning of a trace.
22066    #[prost(int32, optional, tag="2")]
22067    pub energy_consumer_id: ::core::option::Option<i32>,
22068    /// Total accumulated energy since boot in microwatt-seconds (uWs)
22069    #[prost(int64, optional, tag="3")]
22070    pub energy_uws: ::core::option::Option<i64>,
22071    /// Optional attributed energy per Android ID / Linux UID for this
22072    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
22073    /// to total accumulated energy.
22074    #[prost(message, repeated, tag="4")]
22075    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
22076}
22077/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
22078pub mod android_energy_estimation_breakdown {
22079    #[derive(Clone, PartialEq, ::prost::Message)]
22080    pub struct EnergyUidBreakdown {
22081        /// Android ID/Linux UID, the accumulated energy is attributed to.
22082        #[prost(int32, optional, tag="1")]
22083        pub uid: ::core::option::Option<i32>,
22084        /// Accumulated energy since boot in microwatt-seconds (uWs).
22085        #[prost(int64, optional, tag="2")]
22086        pub energy_uws: ::core::option::Option<i64>,
22087    }
22088}
22089// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
22090
22091// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
22092
22093#[derive(Clone, PartialEq, ::prost::Message)]
22094pub struct EntityStateResidency {
22095    /// This is only emitted at the beginning of the trace.
22096    #[prost(message, repeated, tag="1")]
22097    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
22098    #[prost(message, repeated, tag="2")]
22099    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
22100}
22101/// Nested message and enum types in `EntityStateResidency`.
22102pub mod entity_state_residency {
22103    #[derive(Clone, PartialEq, ::prost::Message)]
22104    pub struct PowerEntityState {
22105        /// Index corresponding to the entity
22106        #[prost(int32, optional, tag="1")]
22107        pub entity_index: ::core::option::Option<i32>,
22108        /// Index corresponding to the state
22109        #[prost(int32, optional, tag="2")]
22110        pub state_index: ::core::option::Option<i32>,
22111        /// Name of the entity. This is device-specific, determined by the PowerStats
22112        /// HAL, and cannot be configured by the user. An example would be
22113        /// "Bluetooth".
22114        #[prost(string, optional, tag="3")]
22115        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
22116        /// Name of the state. This is device-specific, determined by the PowerStats
22117        /// HAL, and cannot be configured by the user. An example would be
22118        /// "Active".
22119        #[prost(string, optional, tag="4")]
22120        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
22121    }
22122    #[derive(Clone, PartialEq, ::prost::Message)]
22123    pub struct StateResidency {
22124        /// Index corresponding to PowerEntityState.entity_index
22125        #[prost(int32, optional, tag="1")]
22126        pub entity_index: ::core::option::Option<i32>,
22127        /// Index corresponding to PowerEntityState.state_index
22128        #[prost(int32, optional, tag="2")]
22129        pub state_index: ::core::option::Option<i32>,
22130        /// Time since boot that this entity has been in this state
22131        #[prost(uint64, optional, tag="3")]
22132        pub total_time_in_state_ms: ::core::option::Option<u64>,
22133        /// Total number of times since boot that the entity has entered this state
22134        #[prost(uint64, optional, tag="4")]
22135        pub total_state_entry_count: ::core::option::Option<u64>,
22136        /// Timestamp of the last time the entity entered this state
22137        #[prost(uint64, optional, tag="5")]
22138        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
22139    }
22140}
22141// End of protos/perfetto/trace/power/android_entity_state_residency.proto
22142
22143// Begin of protos/perfetto/trace/power/battery_counters.proto
22144
22145#[derive(Clone, PartialEq, ::prost::Message)]
22146pub struct BatteryCounters {
22147    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
22148    #[prost(int64, optional, tag="1")]
22149    pub charge_counter_uah: ::core::option::Option<i64>,
22150    /// Remaining battery capacity percentage of total capacity
22151    #[prost(float, optional, tag="2")]
22152    pub capacity_percent: ::core::option::Option<f32>,
22153    /// Instantaneous battery current in microamperes(µA).
22154    /// Negative values indicate current being drained from the battery and
22155    /// positive values indicate current feeding the battery from a charge source
22156    /// (USB).
22157    ///
22158    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
22159    #[prost(int64, optional, tag="3")]
22160    pub current_ua: ::core::option::Option<i64>,
22161    /// Instantaneous battery current in microamperes(µA).
22162    #[prost(int64, optional, tag="4")]
22163    pub current_avg_ua: ::core::option::Option<i64>,
22164    /// Battery name, emitted only on multiple batteries.
22165    #[prost(string, optional, tag="5")]
22166    pub name: ::core::option::Option<::prost::alloc::string::String>,
22167    /// Battery capacity in microwatt-hours(µWh).
22168    #[prost(int64, optional, tag="6")]
22169    pub energy_counter_uwh: ::core::option::Option<i64>,
22170    /// Battery voltage in microvolts(µV).
22171    #[prost(int64, optional, tag="7")]
22172    pub voltage_uv: ::core::option::Option<i64>,
22173}
22174// End of protos/perfetto/trace/power/battery_counters.proto
22175
22176// Begin of protos/perfetto/trace/power/power_rails.proto
22177
22178#[derive(Clone, PartialEq, ::prost::Message)]
22179pub struct PowerRails {
22180    /// This is only emitted at the beginning of the trace.
22181    #[prost(message, repeated, tag="1")]
22182    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
22183    #[prost(message, repeated, tag="2")]
22184    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
22185    /// A unique session id that can be used to match energy data to sets of
22186    /// descriptors. The indices used by rail descriptors and energy data packets
22187    /// are meant to be unique to a given session uuid. When multiple data sources
22188    /// are running in parallel, each data source should use a unique id.
22189    #[prost(uint64, optional, tag="3")]
22190    pub session_uuid: ::core::option::Option<u64>,
22191}
22192/// Nested message and enum types in `PowerRails`.
22193pub mod power_rails {
22194    #[derive(Clone, PartialEq, ::prost::Message)]
22195    pub struct RailDescriptor {
22196        /// Index corresponding to the rail
22197        #[prost(uint32, optional, tag="1")]
22198        pub index: ::core::option::Option<u32>,
22199        /// Name of the rail
22200        #[prost(string, optional, tag="2")]
22201        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
22202        /// Name of the subsystem to which this rail belongs
22203        #[prost(string, optional, tag="3")]
22204        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
22205        /// Hardware sampling rate (Hz).
22206        #[prost(uint32, optional, tag="4")]
22207        pub sampling_rate: ::core::option::Option<u32>,
22208    }
22209    #[derive(Clone, PartialEq, ::prost::Message)]
22210    pub struct EnergyData {
22211        /// Index corresponding to RailDescriptor.index
22212        #[prost(uint32, optional, tag="1")]
22213        pub index: ::core::option::Option<u32>,
22214        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
22215        #[prost(uint64, optional, tag="2")]
22216        pub timestamp_ms: ::core::option::Option<u64>,
22217        /// Accumulated energy since device boot in microwatt-seconds (uWs).
22218        #[prost(uint64, optional, tag="3")]
22219        pub energy: ::core::option::Option<u64>,
22220    }
22221}
22222// End of protos/perfetto/trace/power/power_rails.proto
22223
22224// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
22225
22226#[derive(Clone, PartialEq, ::prost::Message)]
22227pub struct ObfuscatedMember {
22228    /// This is the obfuscated field name relative to the class containing the
22229    /// ObfuscatedMember.
22230    #[prost(string, optional, tag="1")]
22231    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22232    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
22233    /// field name including its class. Otherwise, this is this the unqualified
22234    /// deobfuscated field name relative to the class containing this
22235    /// ObfuscatedMember.
22236    #[prost(string, optional, tag="2")]
22237    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22238    /// R8 inline method support: line number ranges for disambiguation.
22239    /// When multiple methods map to the same obfuscated name, the line number
22240    /// from the stack frame is used to select the correct mapping.
22241    ///
22242    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
22243    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
22244    /// - source_line_start/end = 10:12 (line range in original source)
22245    ///
22246    /// Methods with the same obfuscated_name and overlapping obfuscated line
22247    /// ranges form an inline chain, ordered innermost (inlined) first.
22248    #[prost(uint32, optional, tag="3")]
22249    pub obfuscated_line_start: ::core::option::Option<u32>,
22250    #[prost(uint32, optional, tag="4")]
22251    pub obfuscated_line_end: ::core::option::Option<u32>,
22252    #[prost(uint32, optional, tag="5")]
22253    pub source_line_start: ::core::option::Option<u32>,
22254    #[prost(uint32, optional, tag="6")]
22255    pub source_line_end: ::core::option::Option<u32>,
22256}
22257#[derive(Clone, PartialEq, ::prost::Message)]
22258pub struct ObfuscatedClass {
22259    #[prost(string, optional, tag="1")]
22260    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22261    #[prost(string, optional, tag="2")]
22262    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
22263    /// fields.
22264    #[prost(message, repeated, tag="3")]
22265    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22266    #[prost(message, repeated, tag="4")]
22267    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
22268}
22269#[derive(Clone, PartialEq, ::prost::Message)]
22270pub struct DeobfuscationMapping {
22271    #[prost(string, optional, tag="1")]
22272    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
22273    #[prost(int64, optional, tag="2")]
22274    pub version_code: ::core::option::Option<i64>,
22275    #[prost(message, repeated, tag="3")]
22276    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
22277}
22278// Begin of protos/perfetto/trace/profiling/heap_graph.proto
22279
22280#[derive(Clone, PartialEq, ::prost::Message)]
22281pub struct HeapGraphRoot {
22282    /// Objects retained by this root.
22283    #[prost(uint64, repeated, tag="1")]
22284    pub object_ids: ::prost::alloc::vec::Vec<u64>,
22285    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
22286    pub root_type: ::core::option::Option<i32>,
22287}
22288/// Nested message and enum types in `HeapGraphRoot`.
22289pub mod heap_graph_root {
22290    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22291    #[repr(i32)]
22292    pub enum Type {
22293        RootUnknown = 0,
22294        RootJniGlobal = 1,
22295        RootJniLocal = 2,
22296        RootJavaFrame = 3,
22297        RootNativeStack = 4,
22298        RootStickyClass = 5,
22299        RootThreadBlock = 6,
22300        RootMonitorUsed = 7,
22301        RootThreadObject = 8,
22302        RootInternedString = 9,
22303        RootFinalizing = 10,
22304        RootDebugger = 11,
22305        RootReferenceCleanup = 12,
22306        RootVmInternal = 13,
22307        RootJniMonitor = 14,
22308    }
22309    impl Type {
22310        /// String value of the enum field names used in the ProtoBuf definition.
22311        ///
22312        /// The values are not transformed in any way and thus are considered stable
22313        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22314        pub fn as_str_name(&self) -> &'static str {
22315            match self {
22316                Type::RootUnknown => "ROOT_UNKNOWN",
22317                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
22318                Type::RootJniLocal => "ROOT_JNI_LOCAL",
22319                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
22320                Type::RootNativeStack => "ROOT_NATIVE_STACK",
22321                Type::RootStickyClass => "ROOT_STICKY_CLASS",
22322                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
22323                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
22324                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
22325                Type::RootInternedString => "ROOT_INTERNED_STRING",
22326                Type::RootFinalizing => "ROOT_FINALIZING",
22327                Type::RootDebugger => "ROOT_DEBUGGER",
22328                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
22329                Type::RootVmInternal => "ROOT_VM_INTERNAL",
22330                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
22331            }
22332        }
22333    }
22334}
22335#[derive(Clone, PartialEq, ::prost::Message)]
22336pub struct HeapGraphType {
22337    /// TODO(fmayer): Consider removing this and using the index in the repeaed
22338    /// field to save space.
22339    #[prost(uint64, optional, tag="1")]
22340    pub id: ::core::option::Option<u64>,
22341    #[prost(uint64, optional, tag="2")]
22342    pub location_id: ::core::option::Option<u64>,
22343    #[prost(string, optional, tag="3")]
22344    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
22345    /// Size of objects of this type.
22346    #[prost(uint64, optional, tag="4")]
22347    pub object_size: ::core::option::Option<u64>,
22348    #[prost(uint64, optional, tag="5")]
22349    pub superclass_id: ::core::option::Option<u64>,
22350    /// Indices for InternedData.field_names for the names of the fields of
22351    /// instances of this class. This does NOT include the fields from
22352    /// superclasses. The consumer of this data needs to walk all super
22353    /// classes to get a full lists of fields. Objects always write the
22354    /// fields in order of most specific class to the furthest up superclass.
22355    #[prost(uint64, repeated, tag="6")]
22356    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
22357    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
22358    pub kind: ::core::option::Option<i32>,
22359    #[prost(uint64, optional, tag="8")]
22360    pub classloader_id: ::core::option::Option<u64>,
22361}
22362/// Nested message and enum types in `HeapGraphType`.
22363pub mod heap_graph_type {
22364    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22365    #[repr(i32)]
22366    pub enum Kind {
22367        Unknown = 0,
22368        Normal = 1,
22369        Noreferences = 2,
22370        String = 3,
22371        Array = 4,
22372        Class = 5,
22373        Classloader = 6,
22374        Dexcache = 7,
22375        SoftReference = 8,
22376        WeakReference = 9,
22377        FinalizerReference = 10,
22378        PhantomReference = 11,
22379    }
22380    impl Kind {
22381        /// String value of the enum field names used in the ProtoBuf definition.
22382        ///
22383        /// The values are not transformed in any way and thus are considered stable
22384        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22385        pub fn as_str_name(&self) -> &'static str {
22386            match self {
22387                Kind::Unknown => "KIND_UNKNOWN",
22388                Kind::Normal => "KIND_NORMAL",
22389                Kind::Noreferences => "KIND_NOREFERENCES",
22390                Kind::String => "KIND_STRING",
22391                Kind::Array => "KIND_ARRAY",
22392                Kind::Class => "KIND_CLASS",
22393                Kind::Classloader => "KIND_CLASSLOADER",
22394                Kind::Dexcache => "KIND_DEXCACHE",
22395                Kind::SoftReference => "KIND_SOFT_REFERENCE",
22396                Kind::WeakReference => "KIND_WEAK_REFERENCE",
22397                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
22398                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
22399            }
22400        }
22401    }
22402}
22403#[derive(Clone, PartialEq, ::prost::Message)]
22404pub struct HeapGraphObject {
22405    /// Index for InternedData.types for the name of the type of this object.
22406    #[prost(uint64, optional, tag="2")]
22407    pub type_id: ::core::option::Option<u64>,
22408    /// Bytes occupied by this objects.
22409    #[prost(uint64, optional, tag="3")]
22410    pub self_size: ::core::option::Option<u64>,
22411    /// Add this to all non-zero values in reference_object_id. This is used to
22412    /// get more compact varint encoding.
22413    ///
22414    /// The name is confusing, but this has always been used as a base for
22415    /// reference_object_id. The field should be named reference_object_id_base.
22416    #[prost(uint64, optional, tag="6")]
22417    pub reference_field_id_base: ::core::option::Option<u64>,
22418    /// Indices for InternedData.field_names for the name of the field referring
22419    /// to the object. For Android S+ and for instances of normal classes (e.g.
22420    /// not instances of java.lang.Class or arrays), this is instead set in the
22421    /// corresponding HeapGraphType, and this is left empty.
22422    #[prost(uint64, repeated, tag="4")]
22423    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
22424    /// Ids of the Object that is referred to.
22425    #[prost(uint64, repeated, tag="5")]
22426    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
22427    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
22428    /// the value of the `size` field.
22429    ///
22430    /// N.B. This is not the native size of this object.
22431    #[prost(int64, optional, tag="8")]
22432    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
22433    /// To reduce the space required we only emit the heap type if it has changed
22434    /// from the previous object we recorded.
22435    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
22436    pub heap_type_delta: ::core::option::Option<i32>,
22437    /// Ids of the Objects referred by this object, not via fields, but via
22438    /// internal runtime structures.
22439    #[prost(uint64, repeated, tag="10")]
22440    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
22441    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
22442    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
22443}
22444/// Nested message and enum types in `HeapGraphObject`.
22445pub mod heap_graph_object {
22446    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22447    #[repr(i32)]
22448    pub enum HeapType {
22449        Unknown = 0,
22450        App = 1,
22451        Zygote = 2,
22452        BootImage = 3,
22453    }
22454    impl HeapType {
22455        /// String value of the enum field names used in the ProtoBuf definition.
22456        ///
22457        /// The values are not transformed in any way and thus are considered stable
22458        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22459        pub fn as_str_name(&self) -> &'static str {
22460            match self {
22461                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
22462                HeapType::App => "HEAP_TYPE_APP",
22463                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
22464                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
22465            }
22466        }
22467    }
22468    #[derive(Clone, PartialEq, ::prost::Oneof)]
22469    pub enum Identifier {
22470        #[prost(uint64, tag="1")]
22471        Id(u64),
22472        #[prost(uint64, tag="7")]
22473        IdDelta(u64),
22474    }
22475}
22476#[derive(Clone, PartialEq, ::prost::Message)]
22477pub struct HeapGraph {
22478    #[prost(int32, optional, tag="1")]
22479    pub pid: ::core::option::Option<i32>,
22480    /// This contains all objects at the time this dump was taken. Some of these
22481    /// will be live, some of those unreachable (garbage). To find the live
22482    /// objects, the client needs to build the transitive closure of objects
22483    /// reachable from |roots|.
22484    /// All objects not contained within that transitive closure are garbage that
22485    /// has not yet been collected.
22486    #[prost(message, repeated, tag="2")]
22487    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
22488    /// Roots at the time this dump was taken.
22489    /// All live objects are reachable from the roots. All other objects are
22490    /// garbage.
22491    #[prost(message, repeated, tag="7")]
22492    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
22493    /// Types used in HeapGraphObjects.
22494    #[prost(message, repeated, tag="9")]
22495    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
22496    /// Field names for references in managed heap graph.
22497    #[prost(message, repeated, tag="4")]
22498    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
22499    /// Paths of files used in managed heap graph.
22500    #[prost(message, repeated, tag="8")]
22501    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
22502    #[prost(bool, optional, tag="5")]
22503    pub continued: ::core::option::Option<bool>,
22504    #[prost(uint64, optional, tag="6")]
22505    pub index: ::core::option::Option<u64>,
22506}
22507// End of protos/perfetto/trace/profiling/heap_graph.proto
22508
22509// Begin of protos/perfetto/trace/profiling/profile_packet.proto
22510
22511// This file contains a mixture of messages emitted by various sampling
22512// profilers:
22513//
22514// Memory allocator profiling
22515// ----------------
22516// ProfilePacket:
22517//    The packet emitted by heapprofd, which started off as a native heap
22518//    (malloc/free) profiler, but now supports custom allocators as well. Each
22519//    packet contains a preaggregated state of the heap at snapshot time, which
22520//    report the total allocated/free bytes per callstack (plus other info such
22521//    as the number of samples).
22522// StreamingAllocation/StreamingFree:
22523//    Emitted by heapprofd when configured in streaming mode (i.e. when
22524//    stream_allocations = true). This is only for local testing, and doesn't
22525//    report callstacks (only address time and size of each alloc/free). It can
22526//    lead to enormous traces, as it contains the stream of each alloc/free call.
22527//
22528// Callstack sampling
22529// ------------------
22530// StreamingProfilePacket:
22531//    The packet emitted by the chromium in-process sampling profiler, which is
22532//    based on periodically sending a signal to itself, and unwinding the stack
22533//    in the signal handler. Each packet contains a series of individual stack
22534//    samples for a Chromium thread.
22535//
22536// Callstack and performance counter sampling
22537// ---------------------
22538// PerfSample:
22539//    The packet emitted by traced_perf sampling performance profiler based on
22540//    the perf_event_open syscall. Each packet represents an individual sample
22541//    of a performance counter (which might be a timer), and optionally a
22542//    callstack of the process that was scheduled at the time of the sample.
22543//
22544
22545/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
22546/// involve more than one ProfilePacket if the snapshot is big (when |continued|
22547/// is true). The cardinality and grouping is as follows:
22548/// A ProfilePacket contains:
22549///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
22550///     one heap per process (the main malloc/free heap), but there can be more if
22551///     the process is using the heapprofd API to profile custom allocators.
22552///   - Globally interned strings, mappings and frames (to allow de-duplicating
22553///     frames/mapping in common between different processes).
22554/// A ProcessHeapSamples contains:
22555///   - The process and heap identifier.
22556///   - A number of HeapSample, one for each callsite that had some alloc/frees.
22557///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
22558/// A HeapSample contains statistics about callsites:
22559///   - Total number of bytes allocated and freed from that callsite.
22560///   - Total number of alloc/free calls sampled.
22561///   - Stats at the local maximum when dump_at_max = true.
22562/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
22563#[derive(Clone, PartialEq, ::prost::Message)]
22564pub struct ProfilePacket {
22565    /// The following interning tables are only used in Android version Q.
22566    /// In newer versions, these tables are in InternedData
22567    /// (see protos/perfetto/trace/interned_data) and are shared across
22568    /// multiple ProfilePackets.
22569    /// For backwards compatibility, consumers need to first look up interned
22570    /// data in the tables within the ProfilePacket, and then, if they are empty,
22571    /// look up in the InternedData instead.
22572    #[prost(message, repeated, tag="1")]
22573    pub strings: ::prost::alloc::vec::Vec<InternedString>,
22574    #[prost(message, repeated, tag="4")]
22575    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22576    #[prost(message, repeated, tag="2")]
22577    pub frames: ::prost::alloc::vec::Vec<Frame>,
22578    #[prost(message, repeated, tag="3")]
22579    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22580    #[prost(message, repeated, tag="5")]
22581    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
22582    /// If this is true, the next ProfilePacket in this package_sequence_id is a
22583    /// continuation of this one.
22584    /// To get all samples for a process, accummulate its
22585    /// ProcessHeapSamples.samples until you see continued=false.
22586    #[prost(bool, optional, tag="6")]
22587    pub continued: ::core::option::Option<bool>,
22588    /// Index of this ProfilePacket on its package_sequence_id. Can be used
22589    /// to detect dropped data.
22590    /// Verify these are consecutive.
22591    #[prost(uint64, optional, tag="7")]
22592    pub index: ::core::option::Option<u64>,
22593}
22594/// Nested message and enum types in `ProfilePacket`.
22595pub mod profile_packet {
22596    /// Next ID: 9
22597    #[derive(Clone, PartialEq, ::prost::Message)]
22598    pub struct HeapSample {
22599        #[prost(uint64, optional, tag="1")]
22600        pub callstack_id: ::core::option::Option<u64>,
22601        /// bytes allocated at this callstack.
22602        #[prost(uint64, optional, tag="2")]
22603        pub self_allocated: ::core::option::Option<u64>,
22604        /// bytes allocated at this callstack that have been freed.
22605        #[prost(uint64, optional, tag="3")]
22606        pub self_freed: ::core::option::Option<u64>,
22607        /// Bytes allocated by this callstack but not freed at the time the malloc
22608        /// heap usage of this process was maximal. This is only set if dump_at_max
22609        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
22610        /// self_idle will not be set.
22611        #[prost(uint64, optional, tag="8")]
22612        pub self_max: ::core::option::Option<u64>,
22613        /// Number of allocations that were sampled at this callstack but not freed
22614        /// at the time the malloc heap usage of this process was maximal. This is
22615        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
22616        /// self_allocated, self_freed and self_idle will not be set.
22617        #[prost(uint64, optional, tag="9")]
22618        pub self_max_count: ::core::option::Option<u64>,
22619        /// timestamp \[opt\]
22620        #[prost(uint64, optional, tag="4")]
22621        pub timestamp: ::core::option::Option<u64>,
22622        /// Number of allocations that were sampled at this callstack.
22623        #[prost(uint64, optional, tag="5")]
22624        pub alloc_count: ::core::option::Option<u64>,
22625        /// Number of allocations that were sampled at this callstack that have been
22626        /// freed.
22627        #[prost(uint64, optional, tag="6")]
22628        pub free_count: ::core::option::Option<u64>,
22629    }
22630    #[derive(Clone, PartialEq, ::prost::Message)]
22631    pub struct Histogram {
22632        #[prost(message, repeated, tag="1")]
22633        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
22634    }
22635    /// Nested message and enum types in `Histogram`.
22636    pub mod histogram {
22637        #[derive(Clone, PartialEq, ::prost::Message)]
22638        pub struct Bucket {
22639            /// This bucket counts values from the previous bucket's (or -infinity if
22640            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
22641            /// (exclusive).
22642            #[prost(uint64, optional, tag="1")]
22643            pub upper_limit: ::core::option::Option<u64>,
22644            /// This is the highest bucket. This is set instead of the upper_limit. Any
22645            /// values larger or equal to the previous bucket's upper_limit are counted
22646            /// in this bucket.
22647            #[prost(bool, optional, tag="2")]
22648            pub max_bucket: ::core::option::Option<bool>,
22649            /// Number of values that fall into this range.
22650            #[prost(uint64, optional, tag="3")]
22651            pub count: ::core::option::Option<u64>,
22652        }
22653    }
22654    #[derive(Clone, PartialEq, ::prost::Message)]
22655    pub struct ProcessStats {
22656        #[prost(uint64, optional, tag="1")]
22657        pub unwinding_errors: ::core::option::Option<u64>,
22658        #[prost(uint64, optional, tag="2")]
22659        pub heap_samples: ::core::option::Option<u64>,
22660        #[prost(uint64, optional, tag="3")]
22661        pub map_reparses: ::core::option::Option<u64>,
22662        #[prost(message, optional, tag="4")]
22663        pub unwinding_time_us: ::core::option::Option<Histogram>,
22664        #[prost(uint64, optional, tag="5")]
22665        pub total_unwinding_time_us: ::core::option::Option<u64>,
22666        #[prost(uint64, optional, tag="6")]
22667        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
22668    }
22669    #[derive(Clone, PartialEq, ::prost::Message)]
22670    pub struct ProcessHeapSamples {
22671        #[prost(uint64, optional, tag="1")]
22672        pub pid: ::core::option::Option<u64>,
22673        /// This process was profiled from startup.
22674        /// If false, this process was already running when profiling started.
22675        #[prost(bool, optional, tag="3")]
22676        pub from_startup: ::core::option::Option<bool>,
22677        /// This process was not profiled because a concurrent session was active.
22678        /// If this is true, samples will be empty.
22679        #[prost(bool, optional, tag="4")]
22680        pub rejected_concurrent: ::core::option::Option<bool>,
22681        /// This process disconnected while it was profiled.
22682        /// If false, the process outlived the profiling session.
22683        #[prost(bool, optional, tag="6")]
22684        pub disconnected: ::core::option::Option<bool>,
22685        /// If disconnected, this disconnect was caused by the client overrunning
22686        /// the buffer.
22687        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
22688        /// on new S builds.
22689        #[prost(bool, optional, tag="7")]
22690        pub buffer_overran: ::core::option::Option<bool>,
22691        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
22692        pub client_error: ::core::option::Option<i32>,
22693        /// If disconnected, this disconnected was caused by the shared memory
22694        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
22695        /// MEMORY CORRUPTION.
22696        #[prost(bool, optional, tag="8")]
22697        pub buffer_corrupted: ::core::option::Option<bool>,
22698        /// If disconnected, this disconnect was caused by heapprofd exceeding
22699        /// guardrails during this profiling session.
22700        #[prost(bool, optional, tag="10")]
22701        pub hit_guardrail: ::core::option::Option<bool>,
22702        #[prost(string, optional, tag="11")]
22703        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
22704        #[prost(uint64, optional, tag="12")]
22705        pub sampling_interval_bytes: ::core::option::Option<u64>,
22706        #[prost(uint64, optional, tag="13")]
22707        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
22708        /// Timestamp of the state of the target process that this dump represents.
22709        /// This can be different to the timestamp of the TracePackets for various
22710        /// reasons:
22711        /// * If disconnected is set above, this is the timestamp of last state
22712        ///    heapprofd had of the process before it disconnected.
22713        /// * Otherwise, if the rate of events produced by the process is high,
22714        ///    heapprofd might be behind.
22715        ///
22716        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
22717        ///                to have a type enum that we can reuse here.
22718        #[prost(uint64, optional, tag="9")]
22719        pub timestamp: ::core::option::Option<u64>,
22720        /// Metadata about heapprofd.
22721        #[prost(message, optional, tag="5")]
22722        pub stats: ::core::option::Option<ProcessStats>,
22723        #[prost(message, repeated, tag="2")]
22724        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
22725    }
22726    /// Nested message and enum types in `ProcessHeapSamples`.
22727    pub mod process_heap_samples {
22728        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22729        #[repr(i32)]
22730        pub enum ClientError {
22731            None = 0,
22732            HitTimeout = 1,
22733            InvalidStackBounds = 2,
22734        }
22735        impl ClientError {
22736            /// String value of the enum field names used in the ProtoBuf definition.
22737            ///
22738            /// The values are not transformed in any way and thus are considered stable
22739            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22740            pub fn as_str_name(&self) -> &'static str {
22741                match self {
22742                    ClientError::None => "CLIENT_ERROR_NONE",
22743                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
22744                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
22745                }
22746            }
22747        }
22748    }
22749}
22750/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22751/// testing. Doesn't report the callsite.
22752#[derive(Clone, PartialEq, ::prost::Message)]
22753pub struct StreamingAllocation {
22754    /// TODO(fmayer): Add callstack.
22755    #[prost(uint64, repeated, packed="false", tag="1")]
22756    pub address: ::prost::alloc::vec::Vec<u64>,
22757    #[prost(uint64, repeated, packed="false", tag="2")]
22758    pub size: ::prost::alloc::vec::Vec<u64>,
22759    #[prost(uint64, repeated, packed="false", tag="3")]
22760    pub sample_size: ::prost::alloc::vec::Vec<u64>,
22761    #[prost(uint64, repeated, packed="false", tag="4")]
22762    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
22763    #[prost(uint32, repeated, packed="false", tag="5")]
22764    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22765    #[prost(uint64, repeated, packed="false", tag="6")]
22766    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22767}
22768/// Packet emitted by heapprofd when stream_allocations = true. Only for local
22769/// testing. Doesn't report the callsite.
22770#[derive(Clone, PartialEq, ::prost::Message)]
22771pub struct StreamingFree {
22772    /// TODO(fmayer): Add callstack.
22773    #[prost(uint64, repeated, packed="false", tag="1")]
22774    pub address: ::prost::alloc::vec::Vec<u64>,
22775    #[prost(uint32, repeated, packed="false", tag="2")]
22776    pub heap_id: ::prost::alloc::vec::Vec<u32>,
22777    #[prost(uint64, repeated, packed="false", tag="3")]
22778    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
22779}
22780/// Packet emitted by the chromium in-process signal-based callstack sampler.
22781/// Represents a series of individual stack samples (sampled at discrete points
22782/// in time), rather than aggregated over an interval.
22783#[derive(Clone, PartialEq, ::prost::Message)]
22784pub struct StreamingProfilePacket {
22785    /// Index into InternedData.callstacks
22786    #[prost(uint64, repeated, packed="false", tag="1")]
22787    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
22788    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
22789    /// this with ClockSnapshot-based delta encoding instead.
22790    #[prost(int64, repeated, packed="false", tag="2")]
22791    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
22792    #[prost(int32, optional, tag="3")]
22793    pub process_priority: ::core::option::Option<i32>,
22794}
22795/// Namespace for the contained enums.
22796#[derive(Clone, PartialEq, ::prost::Message)]
22797pub struct Profiling {
22798}
22799/// Nested message and enum types in `Profiling`.
22800pub mod profiling {
22801    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22802    #[repr(i32)]
22803    pub enum CpuMode {
22804        ModeUnknown = 0,
22805        ModeKernel = 1,
22806        ModeUser = 2,
22807        /// The following values aren't expected, but included for completeness:
22808        ModeHypervisor = 3,
22809        ModeGuestKernel = 4,
22810        ModeGuestUser = 5,
22811    }
22812    impl CpuMode {
22813        /// String value of the enum field names used in the ProtoBuf definition.
22814        ///
22815        /// The values are not transformed in any way and thus are considered stable
22816        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22817        pub fn as_str_name(&self) -> &'static str {
22818            match self {
22819                CpuMode::ModeUnknown => "MODE_UNKNOWN",
22820                CpuMode::ModeKernel => "MODE_KERNEL",
22821                CpuMode::ModeUser => "MODE_USER",
22822                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
22823                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
22824                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
22825            }
22826        }
22827    }
22828    /// Enumeration of libunwindstack's error codes.
22829    /// NB: the integral representations of the two enums are different.
22830    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22831    #[repr(i32)]
22832    pub enum StackUnwindError {
22833        UnwindErrorUnknown = 0,
22834        UnwindErrorNone = 1,
22835        UnwindErrorMemoryInvalid = 2,
22836        UnwindErrorUnwindInfo = 3,
22837        UnwindErrorUnsupported = 4,
22838        UnwindErrorInvalidMap = 5,
22839        UnwindErrorMaxFramesExceeded = 6,
22840        UnwindErrorRepeatedFrame = 7,
22841        UnwindErrorInvalidElf = 8,
22842        UnwindErrorSystemCall = 9,
22843        UnwindErrorThreadTimeout = 10,
22844        UnwindErrorThreadDoesNotExist = 11,
22845        UnwindErrorBadArch = 12,
22846        UnwindErrorMapsParse = 13,
22847        UnwindErrorInvalidParameter = 14,
22848        UnwindErrorPtraceCall = 15,
22849    }
22850    impl StackUnwindError {
22851        /// String value of the enum field names used in the ProtoBuf definition.
22852        ///
22853        /// The values are not transformed in any way and thus are considered stable
22854        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22855        pub fn as_str_name(&self) -> &'static str {
22856            match self {
22857                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
22858                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
22859                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
22860                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
22861                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
22862                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
22863                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
22864                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
22865                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
22866                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
22867                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
22868                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
22869                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
22870                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
22871                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
22872                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
22873            }
22874        }
22875    }
22876}
22877/// Packet emitted by the traced_perf sampling performance profiler, which
22878/// gathers data via the perf_event_open syscall. Each packet contains an
22879/// individual sample with a counter value, and optionally a
22880/// callstack.
22881///
22882/// Timestamps are within the root packet. The config can specify the clock, or
22883/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
22884/// timeframe, the default was CLOCK_BOOTTIME.
22885///
22886/// There are several distinct views of this message:
22887/// * indication of kernel buffer data loss (kernel_records_lost set)
22888/// * indication of skipped samples (sample_skipped_reason set)
22889/// * notable event in the sampling implementation (producer_event set)
22890/// * normal sample (timebase_count set, typically also callstack_iid)
22891#[derive(Clone, PartialEq, ::prost::Message)]
22892pub struct PerfSample {
22893    #[prost(uint32, optional, tag="1")]
22894    pub cpu: ::core::option::Option<u32>,
22895    #[prost(uint32, optional, tag="2")]
22896    pub pid: ::core::option::Option<u32>,
22897    #[prost(uint32, optional, tag="3")]
22898    pub tid: ::core::option::Option<u32>,
22899    /// Execution state that the process was sampled at.
22900    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
22901    pub cpu_mode: ::core::option::Option<i32>,
22902    /// Value of the timebase counter (since the event was configured, no deltas).
22903    #[prost(uint64, optional, tag="6")]
22904    pub timebase_count: ::core::option::Option<u64>,
22905    /// Value of the followers counter (since the event was configured, no deltas).
22906    #[prost(uint64, repeated, packed="false", tag="7")]
22907    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
22908    /// Unwound callstack. Might be partial, in which case a synthetic "error"
22909    /// frame is appended, and |unwind_error| is set accordingly.
22910    #[prost(uint64, optional, tag="4")]
22911    pub callstack_iid: ::core::option::Option<u64>,
22912    /// If set, indicates that this message is not a sample, but rather an
22913    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
22914    /// loss occurs when the kernel has insufficient ring buffer capacity to write
22915    /// a record (which gets discarded). A record in this context is an individual
22916    /// ring buffer entry, and counts more than just sample records.
22917    ///
22918    /// The |timestamp| of the packet corresponds to the time that the producer
22919    /// wrote the packet for trace-sorting purposes alone, and should not be
22920    /// interpreted relative to the sample timestamps. This field is sufficient to
22921    /// detect that *some* kernel data loss happened within the trace, but not the
22922    /// specific time bounds of that loss (which would require tracking precedessor
22923    /// & successor timestamps, which is not deemed necessary at the moment).
22924    #[prost(uint64, optional, tag="17")]
22925    pub kernel_records_lost: ::core::option::Option<u64>,
22926    #[prost(message, optional, tag="19")]
22927    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
22928    /// If set, stack unwinding was incomplete due to an error.
22929    /// Unset values should be treated as UNWIND_ERROR_NONE.
22930    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
22931    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
22932    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
22933    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
22934}
22935/// Nested message and enum types in `PerfSample`.
22936pub mod perf_sample {
22937    /// A notable event within the sampling implementation.
22938    #[derive(Clone, PartialEq, ::prost::Message)]
22939    pub struct ProducerEvent {
22940        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
22941        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
22942    }
22943    /// Nested message and enum types in `ProducerEvent`.
22944    pub mod producer_event {
22945        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22946        #[repr(i32)]
22947        pub enum DataSourceStopReason {
22948            ProfilerStopUnknown = 0,
22949            ProfilerStopGuardrail = 1,
22950        }
22951        impl DataSourceStopReason {
22952            /// String value of the enum field names used in the ProtoBuf definition.
22953            ///
22954            /// The values are not transformed in any way and thus are considered stable
22955            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22956            pub fn as_str_name(&self) -> &'static str {
22957                match self {
22958                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
22959                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
22960                }
22961            }
22962        }
22963        #[derive(Clone, PartialEq, ::prost::Oneof)]
22964        pub enum OptionalSourceStopReason {
22965            #[prost(enumeration="DataSourceStopReason", tag="1")]
22966            SourceStopReason(i32),
22967        }
22968    }
22969    /// If set, indicates that the profiler encountered a sample that was relevant,
22970    /// but was skipped.
22971    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22972    #[repr(i32)]
22973    pub enum SampleSkipReason {
22974        ProfilerSkipUnknown = 0,
22975        ProfilerSkipReadStage = 1,
22976        ProfilerSkipUnwindStage = 2,
22977        ProfilerSkipUnwindEnqueue = 3,
22978        ProfilerSkipNotInScope = 4,
22979    }
22980    impl SampleSkipReason {
22981        /// String value of the enum field names used in the ProtoBuf definition.
22982        ///
22983        /// The values are not transformed in any way and thus are considered stable
22984        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22985        pub fn as_str_name(&self) -> &'static str {
22986            match self {
22987                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
22988                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
22989                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
22990                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
22991                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
22992            }
22993        }
22994    }
22995    /// If set, stack unwinding was incomplete due to an error.
22996    /// Unset values should be treated as UNWIND_ERROR_NONE.
22997    #[derive(Clone, PartialEq, ::prost::Oneof)]
22998    pub enum OptionalUnwindError {
22999        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
23000        UnwindError(i32),
23001    }
23002    #[derive(Clone, PartialEq, ::prost::Oneof)]
23003    pub enum OptionalSampleSkippedReason {
23004        #[prost(enumeration="SampleSkipReason", tag="18")]
23005        SampleSkippedReason(i32),
23006    }
23007}
23008/// Submessage for TracePacketDefaults.
23009#[derive(Clone, PartialEq, ::prost::Message)]
23010pub struct PerfSampleDefaults {
23011    /// The sampling timebase. Might not be identical to the data source config if
23012    /// the implementation decided to default/override some parameters.
23013    #[prost(message, optional, tag="1")]
23014    pub timebase: ::core::option::Option<perf_events::Timebase>,
23015    /// Description of followers event
23016    #[prost(message, repeated, tag="4")]
23017    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
23018    /// If the config requested process sharding, report back the count and which
23019    /// of those bins was selected. Never changes for the duration of a trace.
23020    #[prost(uint32, optional, tag="2")]
23021    pub process_shard_count: ::core::option::Option<u32>,
23022    #[prost(uint32, optional, tag="3")]
23023    pub chosen_process_shard: ::core::option::Option<u32>,
23024}
23025// End of protos/perfetto/trace/profiling/profile_packet.proto
23026
23027// Begin of protos/perfetto/trace/profiling/smaps.proto
23028
23029#[derive(Clone, PartialEq, ::prost::Message)]
23030pub struct SmapsEntry {
23031    #[prost(string, optional, tag="1")]
23032    pub path: ::core::option::Option<::prost::alloc::string::String>,
23033    #[prost(uint64, optional, tag="2")]
23034    pub size_kb: ::core::option::Option<u64>,
23035    #[prost(uint64, optional, tag="3")]
23036    pub private_dirty_kb: ::core::option::Option<u64>,
23037    #[prost(uint64, optional, tag="4")]
23038    pub swap_kb: ::core::option::Option<u64>,
23039    /// for field upload (instead of path).
23040    #[prost(string, optional, tag="5")]
23041    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
23042    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
23043    #[prost(uint64, optional, tag="6")]
23044    pub start_address: ::core::option::Option<u64>,
23045    #[prost(uint64, optional, tag="7")]
23046    pub module_timestamp: ::core::option::Option<u64>,
23047    #[prost(string, optional, tag="8")]
23048    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
23049    #[prost(string, optional, tag="9")]
23050    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
23051    #[prost(uint32, optional, tag="10")]
23052    pub protection_flags: ::core::option::Option<u32>,
23053    #[prost(uint64, optional, tag="11")]
23054    pub private_clean_resident_kb: ::core::option::Option<u64>,
23055    #[prost(uint64, optional, tag="12")]
23056    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
23057    #[prost(uint64, optional, tag="13")]
23058    pub shared_clean_resident_kb: ::core::option::Option<u64>,
23059    #[prost(uint64, optional, tag="14")]
23060    pub locked_kb: ::core::option::Option<u64>,
23061    #[prost(uint64, optional, tag="15")]
23062    pub proportional_resident_kb: ::core::option::Option<u64>,
23063}
23064#[derive(Clone, PartialEq, ::prost::Message)]
23065pub struct SmapsPacket {
23066    #[prost(uint32, optional, tag="1")]
23067    pub pid: ::core::option::Option<u32>,
23068    #[prost(message, repeated, tag="2")]
23069    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
23070}
23071// End of protos/perfetto/trace/profiling/smaps.proto
23072
23073// Begin of protos/perfetto/trace/ps/process_stats.proto
23074
23075/// Per-process periodically sampled stats. These samples are wrapped in a
23076/// dedicated message (as opposite to be fields in process_tree.proto) because
23077/// they are dumped at a different rate than cmdline and thread list.
23078/// Note: not all of these stats will be present in every ProcessStats message
23079/// and sometimes processes may be missing. This is because counters are
23080/// cached to reduce emission of counters which do not change.
23081#[derive(Clone, PartialEq, ::prost::Message)]
23082pub struct ProcessStats {
23083    #[prost(message, repeated, tag="1")]
23084    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
23085    /// The time at which we finish collecting this batch of samples;
23086    /// the top-level packet timestamp is the time at which
23087    /// we begin collection.
23088    #[prost(uint64, optional, tag="2")]
23089    pub collection_end_timestamp: ::core::option::Option<u64>,
23090}
23091/// Nested message and enum types in `ProcessStats`.
23092pub mod process_stats {
23093    /// Per-thread periodically sampled stats.
23094    /// Note: not all of these stats will be present in every message. See the note
23095    /// for ProcessStats.
23096    #[derive(Clone, PartialEq, ::prost::Message)]
23097    pub struct Thread {
23098        #[prost(int32, optional, tag="1")]
23099        pub tid: ::core::option::Option<i32>,
23100    }
23101    #[derive(Clone, PartialEq, ::prost::Message)]
23102    pub struct FdInfo {
23103        #[prost(uint64, optional, tag="1")]
23104        pub fd: ::core::option::Option<u64>,
23105        #[prost(string, optional, tag="2")]
23106        pub path: ::core::option::Option<::prost::alloc::string::String>,
23107    }
23108    #[derive(Clone, PartialEq, ::prost::Message)]
23109    pub struct Process {
23110        #[prost(int32, optional, tag="1")]
23111        pub pid: ::core::option::Option<i32>,
23112        #[prost(message, repeated, tag="11")]
23113        pub threads: ::prost::alloc::vec::Vec<Thread>,
23114        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
23115        #[prost(uint64, optional, tag="2")]
23116        pub vm_size_kb: ::core::option::Option<u64>,
23117        #[prost(uint64, optional, tag="3")]
23118        pub vm_rss_kb: ::core::option::Option<u64>,
23119        #[prost(uint64, optional, tag="4")]
23120        pub rss_anon_kb: ::core::option::Option<u64>,
23121        #[prost(uint64, optional, tag="5")]
23122        pub rss_file_kb: ::core::option::Option<u64>,
23123        #[prost(uint64, optional, tag="6")]
23124        pub rss_shmem_kb: ::core::option::Option<u64>,
23125        #[prost(uint64, optional, tag="7")]
23126        pub vm_swap_kb: ::core::option::Option<u64>,
23127        #[prost(uint64, optional, tag="8")]
23128        pub vm_locked_kb: ::core::option::Option<u64>,
23129        /// When adding a new field remember to update kProcMemCounterSize in
23130        /// the trace processor.
23131        #[prost(uint64, optional, tag="9")]
23132        pub vm_hwm_kb: ::core::option::Option<u64>,
23133        #[prost(int64, optional, tag="10")]
23134        pub oom_score_adj: ::core::option::Option<i64>,
23135        /// The peak resident set size is resettable in newer Posix kernels.
23136        /// This field specifies if reset is supported and if the writer had reset
23137        /// the peaks after each process stats recording.
23138        #[prost(bool, optional, tag="12")]
23139        pub is_peak_rss_resettable: ::core::option::Option<bool>,
23140        /// Private, shared and swap footprint of the process as measured by
23141        /// Chrome. To know more about these metrics refer to:
23142        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
23143        #[prost(uint32, optional, tag="13")]
23144        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
23145        #[prost(uint32, optional, tag="14")]
23146        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
23147        #[prost(message, repeated, tag="15")]
23148        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
23149        /// These fields are set only when scan_smaps_rollup=true
23150        #[prost(uint64, optional, tag="16")]
23151        pub smr_rss_kb: ::core::option::Option<u64>,
23152        #[prost(uint64, optional, tag="17")]
23153        pub smr_pss_kb: ::core::option::Option<u64>,
23154        #[prost(uint64, optional, tag="18")]
23155        pub smr_pss_anon_kb: ::core::option::Option<u64>,
23156        #[prost(uint64, optional, tag="19")]
23157        pub smr_pss_file_kb: ::core::option::Option<u64>,
23158        #[prost(uint64, optional, tag="20")]
23159        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
23160        #[prost(uint64, optional, tag="23")]
23161        pub smr_swap_pss_kb: ::core::option::Option<u64>,
23162        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
23163        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23164        /// Resolution of "clock ticks", usually 10ms.
23165        #[prost(uint64, optional, tag="21")]
23166        pub runtime_user_mode: ::core::option::Option<u64>,
23167        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
23168        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
23169        /// Resolution of "clock ticks", usually 10ms.
23170        #[prost(uint64, optional, tag="22")]
23171        pub runtime_kernel_mode: ::core::option::Option<u64>,
23172        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
23173        #[prost(uint64, optional, tag="24")]
23174        pub dmabuf_rss_kb: ::core::option::Option<u64>,
23175    }
23176}
23177// End of protos/perfetto/trace/ps/process_stats.proto
23178
23179// Begin of protos/perfetto/trace/ps/process_tree.proto
23180
23181/// Metadata about the processes and threads in the trace.
23182/// Note: this proto was designed to be filled in by traced_probes and should
23183/// only be populated with accurate information coming from the system. Other
23184/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
23185/// in TrackDescriptor.
23186#[derive(Clone, PartialEq, ::prost::Message)]
23187pub struct ProcessTree {
23188    /// List of processes and threads in the client. These lists are incremental
23189    /// and not exhaustive. A process and its threads might show up separately in
23190    /// different ProcessTree messages. A thread might event not show up at all, if
23191    /// no sched_switch activity was detected, for instance:
23192    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
23193    /// #1 { threads: [{pid: 12, tgid: 10}] }
23194    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
23195    #[prost(message, repeated, tag="1")]
23196    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
23197    #[prost(message, repeated, tag="2")]
23198    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
23199    /// The time at which we finish collecting this process tree;
23200    /// the top-level packet timestamp is the time at which
23201    /// we begin collection.
23202    #[prost(uint64, optional, tag="3")]
23203    pub collection_end_timestamp: ::core::option::Option<u64>,
23204}
23205/// Nested message and enum types in `ProcessTree`.
23206pub mod process_tree {
23207    /// Representation of a thread.
23208    #[derive(Clone, PartialEq, ::prost::Message)]
23209    pub struct Thread {
23210        /// The thread ID (as per gettid()) in the root PID namespace.
23211        #[prost(int32, optional, tag="1")]
23212        pub tid: ::core::option::Option<i32>,
23213        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
23214        #[prost(int32, optional, tag="3")]
23215        pub tgid: ::core::option::Option<i32>,
23216        /// The name of the thread.
23217        #[prost(string, optional, tag="2")]
23218        pub name: ::core::option::Option<::prost::alloc::string::String>,
23219        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
23220        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
23221        /// level thread ID) omitted.
23222        #[prost(int32, repeated, packed="false", tag="4")]
23223        pub nstid: ::prost::alloc::vec::Vec<i32>,
23224    }
23225    /// Representation of a process.
23226    #[derive(Clone, PartialEq, ::prost::Message)]
23227    pub struct Process {
23228        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
23229        /// PID namespace.
23230        #[prost(int32, optional, tag="1")]
23231        pub pid: ::core::option::Option<i32>,
23232        /// The parent process ID, as per getppid().
23233        #[prost(int32, optional, tag="2")]
23234        pub ppid: ::core::option::Option<i32>,
23235        /// The command line for the process, as per /proc/pid/cmdline, broken up on
23236        /// NUL bytes.
23237        /// If it is a kernel thread or a zombie, there will only be one cmdline
23238        /// field and it will contain /proc/pid/comm.
23239        #[prost(string, repeated, tag="3")]
23240        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23241        /// If true, the |cmdline| field was filled with the main thread's "comm"
23242        /// field instead.
23243        /// Introduced in: perfetto v50.
23244        #[prost(bool, optional, tag="9")]
23245        pub cmdline_is_comm: ::core::option::Option<bool>,
23246        /// The uid for the process, as per /proc/pid/status.
23247        #[prost(int32, optional, tag="5")]
23248        pub uid: ::core::option::Option<i32>,
23249        /// The non-root-level process IDs if the process runs in a PID namespace.
23250        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
23251        /// (root-level process ID) omitted.
23252        #[prost(int32, repeated, packed="false", tag="6")]
23253        pub nspid: ::prost::alloc::vec::Vec<i32>,
23254        /// Timestamp of when the process was created, in nanoseconds
23255        /// from boot. Parsed from starttime in /proc/pid/stat.
23256        /// Recorded if record_process_age config option is set.
23257        /// Resolution of "clock ticks", usually 10ms.
23258        #[prost(uint64, optional, tag="7")]
23259        pub process_start_from_boot: ::core::option::Option<u64>,
23260        /// If true, the process is a kernel thread.
23261        /// Set only on linux v6.4+. For traces from older devices, it is possible to
23262        /// infer most kthreads by checking that they're a descendant of kthreadd
23263        /// (pid=2), or are the idle process (pid=0).
23264        /// Introduced in: perfetto v50.
23265        #[prost(bool, optional, tag="8")]
23266        pub is_kthread: ::core::option::Option<bool>,
23267    }
23268}
23269// End of protos/perfetto/trace/ps/process_tree.proto
23270
23271// Begin of protos/perfetto/trace/remote_clock_sync.proto
23272
23273/// Records the parameters for aligning clock readings between machines.
23274#[derive(Clone, PartialEq, ::prost::Message)]
23275pub struct RemoteClockSync {
23276    #[prost(message, repeated, tag="1")]
23277    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
23278}
23279/// Nested message and enum types in `RemoteClockSync`.
23280pub mod remote_clock_sync {
23281    /// Synchronized clock snapshots taken on both sides of the relay port (the
23282    /// tracing service and the relay service). A round of clock synchronization
23283    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
23284    /// snapshot -> client snapshot -> host snapshot.
23285    #[derive(Clone, PartialEq, ::prost::Message)]
23286    pub struct SyncedClocks {
23287        #[prost(message, optional, tag="2")]
23288        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
23289        #[prost(message, optional, tag="3")]
23290        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
23291    }
23292}
23293// End of protos/perfetto/trace/remote_clock_sync.proto
23294
23295// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
23296
23297/// Deliberate empty message. See comment on StatsdAtom#atom below.
23298#[derive(Clone, PartialEq, ::prost::Message)]
23299pub struct Atom {
23300}
23301/// One or more statsd atoms. This must continue to match:
23302/// perfetto/protos/third_party/statsd/shell_data.proto
23303/// So that we can efficiently add data from statsd directly to the
23304/// trace.
23305#[derive(Clone, PartialEq, ::prost::Message)]
23306pub struct StatsdAtom {
23307    /// Atom should be filled with an Atom proto from:
23308    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
23309    /// We don't reference Atom directly here since we don't want to import
23310    /// Atom.proto and all its transitive dependencies into Perfetto.
23311    /// atom and timestamp_nanos have the same cardinality
23312    #[prost(message, repeated, tag="1")]
23313    pub atom: ::prost::alloc::vec::Vec<Atom>,
23314    #[prost(int64, repeated, packed="false", tag="2")]
23315    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
23316}
23317// End of protos/perfetto/trace/statsd/statsd_atom.proto
23318
23319// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
23320
23321/// Various Linux system stat counters from /proc.
23322/// The fields in this message can be reported at different rates and with
23323/// different granularity. See sys_stats_config.proto.
23324#[derive(Clone, PartialEq, ::prost::Message)]
23325pub struct SysStats {
23326    #[prost(message, repeated, tag="1")]
23327    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
23328    #[prost(message, repeated, tag="2")]
23329    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
23330    /// One entry per cpu.
23331    #[prost(message, repeated, tag="3")]
23332    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
23333    /// Num processes forked since boot.
23334    /// Populated only if FORK_COUNT in config.stat_counters.
23335    #[prost(uint64, optional, tag="4")]
23336    pub num_forks: ::core::option::Option<u64>,
23337    // Number of interrupts, broken by IRQ number.
23338    // Populated only if IRQ_COUNTS in config.stat_counters.
23339
23340    /// Total num of irqs serviced since boot.
23341    #[prost(uint64, optional, tag="5")]
23342    pub num_irq_total: ::core::option::Option<u64>,
23343    #[prost(message, repeated, tag="6")]
23344    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
23345    // Number of softirqs, broken by softirq number.
23346    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
23347
23348    /// Total num of softirqs since boot.
23349    #[prost(uint64, optional, tag="7")]
23350    pub num_softirq_total: ::core::option::Option<u64>,
23351    /// Per-softirq count.
23352    #[prost(message, repeated, tag="8")]
23353    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
23354    /// The time at which we finish collecting this set of samples;
23355    /// the top-level packet timestamp is the time at which
23356    /// we begin collection.
23357    #[prost(uint64, optional, tag="9")]
23358    pub collection_end_timestamp: ::core::option::Option<u64>,
23359    /// One entry per device.
23360    #[prost(message, repeated, tag="10")]
23361    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
23362    /// Cpu current frequency from
23363    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
23364    /// One entry per cpu. Report 0 for offline cpu
23365    #[prost(uint32, repeated, packed="false", tag="11")]
23366    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
23367    /// One entry per each node's zones.
23368    #[prost(message, repeated, tag="12")]
23369    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
23370    /// One entry per disk device.
23371    #[prost(message, repeated, tag="13")]
23372    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
23373    /// One entry per PsiResource type.
23374    #[prost(message, repeated, tag="14")]
23375    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
23376    #[prost(message, repeated, tag="15")]
23377    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
23378    #[prost(message, repeated, tag="16")]
23379    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
23380    /// Read GPU frequency info on Intel/AMD devices.
23381    #[prost(uint64, repeated, packed="false", tag="17")]
23382    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
23383}
23384/// Nested message and enum types in `SysStats`.
23385pub mod sys_stats {
23386    /// Counters from /proc/meminfo. Values are in KB.
23387    #[derive(Clone, PartialEq, ::prost::Message)]
23388    pub struct MeminfoValue {
23389        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
23390        pub key: ::core::option::Option<i32>,
23391        #[prost(uint64, optional, tag="2")]
23392        pub value: ::core::option::Option<u64>,
23393    }
23394    /// Counter from /proc/vmstat. Units are often pages, not KB.
23395    #[derive(Clone, PartialEq, ::prost::Message)]
23396    pub struct VmstatValue {
23397        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
23398        pub key: ::core::option::Option<i32>,
23399        #[prost(uint64, optional, tag="2")]
23400        pub value: ::core::option::Option<u64>,
23401    }
23402    /// Times in each mode, since boot. Unit: nanoseconds.
23403    #[derive(Clone, PartialEq, ::prost::Message)]
23404    pub struct CpuTimes {
23405        #[prost(uint32, optional, tag="1")]
23406        pub cpu_id: ::core::option::Option<u32>,
23407        /// Time spent in user mode.
23408        #[prost(uint64, optional, tag="2")]
23409        pub user_ns: ::core::option::Option<u64>,
23410        /// Time spent in user mode (low prio).
23411        #[prost(uint64, optional, tag="3")]
23412        pub user_nice_ns: ::core::option::Option<u64>,
23413        /// Time spent in system mode.
23414        #[prost(uint64, optional, tag="4")]
23415        pub system_mode_ns: ::core::option::Option<u64>,
23416        /// Time spent in the idle task.
23417        #[prost(uint64, optional, tag="5")]
23418        pub idle_ns: ::core::option::Option<u64>,
23419        /// Time spent waiting for I/O.
23420        #[prost(uint64, optional, tag="6")]
23421        pub io_wait_ns: ::core::option::Option<u64>,
23422        /// Time spent servicing interrupts.
23423        #[prost(uint64, optional, tag="7")]
23424        pub irq_ns: ::core::option::Option<u64>,
23425        /// Time spent servicing softirqs.
23426        #[prost(uint64, optional, tag="8")]
23427        pub softirq_ns: ::core::option::Option<u64>,
23428        /// Time spent executing something else on host than this guest.
23429        #[prost(uint64, optional, tag="9")]
23430        pub steal_ns: ::core::option::Option<u64>,
23431    }
23432    #[derive(Clone, PartialEq, ::prost::Message)]
23433    pub struct InterruptCount {
23434        #[prost(int32, optional, tag="1")]
23435        pub irq: ::core::option::Option<i32>,
23436        #[prost(uint64, optional, tag="2")]
23437        pub count: ::core::option::Option<u64>,
23438    }
23439    /// Frequencies for /sys/class/devfreq/ entries in kHz.
23440    #[derive(Clone, PartialEq, ::prost::Message)]
23441    pub struct DevfreqValue {
23442        #[prost(string, optional, tag="1")]
23443        pub key: ::core::option::Option<::prost::alloc::string::String>,
23444        #[prost(uint64, optional, tag="2")]
23445        pub value: ::core::option::Option<u64>,
23446    }
23447    #[derive(Clone, PartialEq, ::prost::Message)]
23448    pub struct BuddyInfo {
23449        #[prost(string, optional, tag="1")]
23450        pub node: ::core::option::Option<::prost::alloc::string::String>,
23451        #[prost(string, optional, tag="2")]
23452        pub zone: ::core::option::Option<::prost::alloc::string::String>,
23453        #[prost(uint32, repeated, packed="false", tag="3")]
23454        pub order_pages: ::prost::alloc::vec::Vec<u32>,
23455    }
23456    /// Counters from /proc/diskstats.
23457    #[derive(Clone, PartialEq, ::prost::Message)]
23458    pub struct DiskStat {
23459        #[prost(string, optional, tag="1")]
23460        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
23461        #[prost(uint64, optional, tag="2")]
23462        pub read_sectors: ::core::option::Option<u64>,
23463        #[prost(uint64, optional, tag="3")]
23464        pub read_time_ms: ::core::option::Option<u64>,
23465        #[prost(uint64, optional, tag="4")]
23466        pub write_sectors: ::core::option::Option<u64>,
23467        #[prost(uint64, optional, tag="5")]
23468        pub write_time_ms: ::core::option::Option<u64>,
23469        #[prost(uint64, optional, tag="6")]
23470        pub discard_sectors: ::core::option::Option<u64>,
23471        #[prost(uint64, optional, tag="7")]
23472        pub discard_time_ms: ::core::option::Option<u64>,
23473        #[prost(uint64, optional, tag="8")]
23474        pub flush_count: ::core::option::Option<u64>,
23475        #[prost(uint64, optional, tag="9")]
23476        pub flush_time_ms: ::core::option::Option<u64>,
23477    }
23478    /// Reading from /proc/pressure/*.
23479    #[derive(Clone, PartialEq, ::prost::Message)]
23480    pub struct PsiSample {
23481        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
23482        pub resource: ::core::option::Option<i32>,
23483        /// Total absolute stall time (in nanos) for a given resource.
23484        /// While PSI readings are in micros, we store in nanos for consistency with
23485        /// most other time-based counters.
23486        #[prost(uint64, optional, tag="2")]
23487        pub total_ns: ::core::option::Option<u64>,
23488    }
23489    /// Nested message and enum types in `PsiSample`.
23490    pub mod psi_sample {
23491        /// Type of resource that may have exhibited pressure stalls.
23492        ///     * _SOME indicates some resource tasks stalled.
23493        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
23494        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23495        #[repr(i32)]
23496        pub enum PsiResource {
23497            Unspecified = 0,
23498            CpuSome = 1,
23499            CpuFull = 2,
23500            IoSome = 3,
23501            IoFull = 4,
23502            MemorySome = 5,
23503            MemoryFull = 6,
23504        }
23505        impl PsiResource {
23506            /// String value of the enum field names used in the ProtoBuf definition.
23507            ///
23508            /// The values are not transformed in any way and thus are considered stable
23509            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23510            pub fn as_str_name(&self) -> &'static str {
23511                match self {
23512                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
23513                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
23514                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
23515                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
23516                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
23517                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
23518                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
23519                }
23520            }
23521        }
23522    }
23523    /// Reading from /sys/class/thermal/*.
23524    #[derive(Clone, PartialEq, ::prost::Message)]
23525    pub struct ThermalZone {
23526        #[prost(string, optional, tag="1")]
23527        pub name: ::core::option::Option<::prost::alloc::string::String>,
23528        #[prost(uint64, optional, tag="2")]
23529        pub temp: ::core::option::Option<u64>,
23530        #[prost(string, optional, tag="3")]
23531        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23532    }
23533    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
23534    #[derive(Clone, PartialEq, ::prost::Message)]
23535    pub struct CpuIdleStateEntry {
23536        /// Name of the idle state, e.g. C1-C10
23537        #[prost(string, optional, tag="1")]
23538        pub state: ::core::option::Option<::prost::alloc::string::String>,
23539        #[prost(uint64, optional, tag="2")]
23540        pub duration_us: ::core::option::Option<u64>,
23541    }
23542    #[derive(Clone, PartialEq, ::prost::Message)]
23543    pub struct CpuIdleState {
23544        #[prost(uint32, optional, tag="1")]
23545        pub cpu_id: ::core::option::Option<u32>,
23546        #[prost(message, repeated, tag="2")]
23547        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
23548    }
23549}
23550// End of protos/perfetto/trace/sys_stats/sys_stats.proto
23551
23552// Begin of protos/perfetto/trace/system_info/cpu_info.proto
23553
23554/// Information about CPUs from procfs and sysfs.
23555#[derive(Clone, PartialEq, ::prost::Message)]
23556pub struct CpuInfo {
23557    /// Describes available CPUs, one entry per CPU.
23558    #[prost(message, repeated, tag="1")]
23559    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
23560}
23561/// Nested message and enum types in `CpuInfo`.
23562pub mod cpu_info {
23563    #[derive(Clone, PartialEq, ::prost::Message)]
23564    pub struct ArmCpuIdentifier {
23565        /// Implementer code
23566        #[prost(uint32, optional, tag="1")]
23567        pub implementer: ::core::option::Option<u32>,
23568        /// Architecture code
23569        #[prost(uint32, optional, tag="2")]
23570        pub architecture: ::core::option::Option<u32>,
23571        /// CPU variant
23572        #[prost(uint32, optional, tag="3")]
23573        pub variant: ::core::option::Option<u32>,
23574        /// CPU part
23575        #[prost(uint32, optional, tag="4")]
23576        pub part: ::core::option::Option<u32>,
23577        /// CPU revision
23578        #[prost(uint32, optional, tag="5")]
23579        pub revision: ::core::option::Option<u32>,
23580    }
23581    /// Information about a single CPU.
23582    #[derive(Clone, PartialEq, ::prost::Message)]
23583    pub struct Cpu {
23584        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
23585        /// Example: "AArch64 Processor rev 12 (aarch64)"
23586        #[prost(string, optional, tag="1")]
23587        pub processor: ::core::option::Option<::prost::alloc::string::String>,
23588        /// Frequencies from
23589        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
23590        /// where X is the index of this CPU.
23591        #[prost(uint32, repeated, packed="false", tag="2")]
23592        pub frequencies: ::prost::alloc::vec::Vec<u32>,
23593        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
23594        /// the index of this CPU.
23595        #[prost(uint32, optional, tag="3")]
23596        pub capacity: ::core::option::Option<u32>,
23597        /// Features is a bitmap containing a bit set for each feature defined in
23598        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
23599        /// index.
23600        #[prost(uint64, optional, tag="5")]
23601        pub features: ::core::option::Option<u64>,
23602        /// Code to identify the CPU
23603        #[prost(oneof="cpu::Identifier", tags="4")]
23604        pub identifier: ::core::option::Option<cpu::Identifier>,
23605    }
23606    /// Nested message and enum types in `Cpu`.
23607    pub mod cpu {
23608        /// Code to identify the CPU
23609        #[derive(Clone, PartialEq, ::prost::Oneof)]
23610        pub enum Identifier {
23611            #[prost(message, tag="4")]
23612            ArmIdentifier(super::ArmCpuIdentifier),
23613        }
23614    }
23615}
23616// End of protos/perfetto/trace/system_info/cpu_info.proto
23617
23618// Begin of protos/perfetto/trace/test_event.proto
23619
23620/// Event used by testing code.
23621#[derive(Clone, PartialEq, ::prost::Message)]
23622pub struct TestEvent {
23623    /// Arbitrary string used in tests.
23624    #[prost(string, optional, tag="1")]
23625    pub str: ::core::option::Option<::prost::alloc::string::String>,
23626    /// The current value of the random number sequence used in tests.
23627    #[prost(uint32, optional, tag="2")]
23628    pub seq_value: ::core::option::Option<u32>,
23629    /// Monotonically increased on each packet.
23630    #[prost(uint64, optional, tag="3")]
23631    pub counter: ::core::option::Option<u64>,
23632    /// No more packets should follow (from the current sequence).
23633    #[prost(bool, optional, tag="4")]
23634    pub is_last: ::core::option::Option<bool>,
23635    #[prost(message, optional, tag="5")]
23636    pub payload: ::core::option::Option<test_event::TestPayload>,
23637    #[prost(message, optional, tag="6")]
23638    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
23639    #[prost(message, optional, tag="7")]
23640    pub protovm_incremental_state: ::core::option::Option<test_event::ProtoVmIncrementalState>,
23641}
23642/// Nested message and enum types in `TestEvent`.
23643pub mod test_event {
23644    #[derive(Clone, PartialEq, ::prost::Message)]
23645    pub struct TestPayload {
23646        #[prost(string, repeated, tag="1")]
23647        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23648        #[prost(message, repeated, tag="2")]
23649        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
23650        #[prost(string, optional, tag="4")]
23651        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
23652        #[prost(int32, optional, tag="5")]
23653        pub single_int: ::core::option::Option<i32>,
23654        #[prost(int32, repeated, packed="false", tag="6")]
23655        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
23656        /// When 0 this is the bottom-most nested message.
23657        #[prost(uint32, optional, tag="3")]
23658        pub remaining_nesting_depth: ::core::option::Option<u32>,
23659        #[prost(message, repeated, tag="7")]
23660        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
23661    }
23662    /// Simple ProtoVm patch and incremental state formats used for integration
23663    /// testing
23664    #[derive(Clone, PartialEq, ::prost::Message)]
23665    pub struct ProtoVmPatch {
23666        #[prost(string, optional, tag="1")]
23667        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
23668        #[prost(int32, optional, tag="2")]
23669        pub int_to_merge: ::core::option::Option<i32>,
23670    }
23671    #[derive(Clone, PartialEq, ::prost::Message)]
23672    pub struct ProtoVmIncrementalState {
23673        #[prost(string, optional, tag="1")]
23674        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
23675        #[prost(int32, optional, tag="2")]
23676        pub int_merged: ::core::option::Option<i32>,
23677    }
23678}
23679// End of protos/perfetto/trace/test_event.proto
23680
23681// Begin of protos/perfetto/trace/trace_packet_defaults.proto
23682
23683/// Default values for TracePacket fields that hold for a particular TraceWriter
23684/// packet sequence. This message contains a subset of the TracePacket fields
23685/// with matching IDs. When provided, these fields define the default values
23686/// that should be applied, at import time, to all TracePacket(s) with the same
23687/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
23688///
23689/// Should be reemitted whenever incremental state is cleared on the sequence.
23690#[derive(Clone, PartialEq, ::prost::Message)]
23691pub struct TracePacketDefaults {
23692    #[prost(uint32, optional, tag="58")]
23693    pub timestamp_clock_id: ::core::option::Option<u32>,
23694    /// Default values for TrackEvents (e.g. default track).
23695    #[prost(message, optional, tag="11")]
23696    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
23697    /// Defaults for perf profiler packets (PerfSample).
23698    #[prost(message, optional, tag="12")]
23699    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
23700    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
23701    /// V8RegexpCode)
23702    #[prost(message, optional, tag="99")]
23703    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
23704}
23705// Begin of protos/perfetto/trace/trace_uuid.proto
23706
23707/// A random unique ID that identifies the trace.
23708/// This message has been introduced in v32. Prior to that, the UUID was
23709/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
23710/// This has been moved to a standalone packet to deal with new use-cases for
23711/// go/gapless-aot, where the same tracing session can be serialized several
23712/// times, in which case the UUID is changed on each snapshot and does not match
23713/// the one in the TraceConfig.
23714#[derive(Clone, PartialEq, ::prost::Message)]
23715pub struct TraceUuid {
23716    #[prost(int64, optional, tag="1")]
23717    pub msb: ::core::option::Option<i64>,
23718    #[prost(int64, optional, tag="2")]
23719    pub lsb: ::core::option::Option<i64>,
23720}
23721// End of protos/perfetto/trace/trace_uuid.proto
23722
23723// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
23724
23725/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
23726/// usually by the process's main thread.
23727///
23728/// Next id: 9.
23729#[derive(Clone, PartialEq, ::prost::Message)]
23730pub struct ProcessDescriptor {
23731    #[prost(int32, optional, tag="1")]
23732    pub pid: ::core::option::Option<i32>,
23733    #[prost(string, repeated, tag="2")]
23734    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23735    #[prost(string, optional, tag="6")]
23736    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
23737    #[prost(int32, optional, tag="5")]
23738    pub process_priority: ::core::option::Option<i32>,
23739    /// Process start time in nanoseconds.
23740    /// The timestamp refers to the trace clock by default. Other clock IDs
23741    /// provided in TracePacket are not supported.
23742    #[prost(int64, optional, tag="7")]
23743    pub start_timestamp_ns: ::core::option::Option<i64>,
23744    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
23745    pub chrome_process_type: ::core::option::Option<i32>,
23746    /// To support old UI. New UI should determine default sorting by process_type.
23747    #[prost(int32, optional, tag="3")]
23748    pub legacy_sort_index: ::core::option::Option<i32>,
23749    /// Labels can be used to further describe properties of the work performed by
23750    /// the process. For example, these can be used by Chrome renderer process to
23751    /// provide titles of frames being rendered.
23752    #[prost(string, repeated, tag="8")]
23753    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23754}
23755/// Nested message and enum types in `ProcessDescriptor`.
23756pub mod process_descriptor {
23757    // ---------------------------------------------------------------------------
23758    // Deprecated / legacy fields, which will be removed in the future:
23759    // ---------------------------------------------------------------------------
23760
23761    /// See chromium's content::ProcessType.
23762    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23763    #[repr(i32)]
23764    pub enum ChromeProcessType {
23765        ProcessUnspecified = 0,
23766        ProcessBrowser = 1,
23767        ProcessRenderer = 2,
23768        ProcessUtility = 3,
23769        ProcessZygote = 4,
23770        ProcessSandboxHelper = 5,
23771        ProcessGpu = 6,
23772        ProcessPpapiPlugin = 7,
23773        ProcessPpapiBroker = 8,
23774    }
23775    impl ChromeProcessType {
23776        /// String value of the enum field names used in the ProtoBuf definition.
23777        ///
23778        /// The values are not transformed in any way and thus are considered stable
23779        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23780        pub fn as_str_name(&self) -> &'static str {
23781            match self {
23782                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
23783                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
23784                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
23785                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
23786                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
23787                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
23788                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
23789                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
23790                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
23791            }
23792        }
23793    }
23794}
23795// End of protos/perfetto/trace/track_event/process_descriptor.proto
23796
23797// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
23798
23799/// This message specifies the "range of interest" for track events. With the
23800/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
23801/// Trace Processor drops track events outside of this range.
23802#[derive(Clone, PartialEq, ::prost::Message)]
23803pub struct TrackEventRangeOfInterest {
23804    #[prost(int64, optional, tag="1")]
23805    pub start_us: ::core::option::Option<i64>,
23806}
23807// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
23808
23809/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
23810/// usually by the thread's trace writer.
23811///
23812/// Next id: 9.
23813#[derive(Clone, PartialEq, ::prost::Message)]
23814pub struct ThreadDescriptor {
23815    #[prost(int32, optional, tag="1")]
23816    pub pid: ::core::option::Option<i32>,
23817    #[prost(int32, optional, tag="2")]
23818    pub tid: ::core::option::Option<i32>,
23819    #[prost(string, optional, tag="5")]
23820    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
23821    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
23822    pub chrome_thread_type: ::core::option::Option<i32>,
23823    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
23824    /// and timestamp_clock_id fields instead.
23825    #[prost(int64, optional, tag="6")]
23826    pub reference_timestamp_us: ::core::option::Option<i64>,
23827    /// Absolute reference values. Clock values in subsequent TrackEvents can be
23828    /// encoded accumulatively and relative to these. This reduces their var-int
23829    /// encoding size.
23830    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
23831    #[prost(int64, optional, tag="7")]
23832    pub reference_thread_time_us: ::core::option::Option<i64>,
23833    #[prost(int64, optional, tag="8")]
23834    pub reference_thread_instruction_count: ::core::option::Option<i64>,
23835    /// To support old UI. New UI should determine default sorting by thread_type.
23836    #[prost(int32, optional, tag="3")]
23837    pub legacy_sort_index: ::core::option::Option<i32>,
23838}
23839/// Nested message and enum types in `ThreadDescriptor`.
23840pub mod thread_descriptor {
23841    // ---------------------------------------------------------------------------
23842    // Deprecated / legacy fields, which will be removed in the future:
23843    // ---------------------------------------------------------------------------
23844
23845    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23846    #[repr(i32)]
23847    pub enum ChromeThreadType {
23848        ChromeThreadUnspecified = 0,
23849        ChromeThreadMain = 1,
23850        ChromeThreadIo = 2,
23851        /// Scheduler:
23852        ChromeThreadPoolBgWorker = 3,
23853        ChromeThreadPoolFgWorker = 4,
23854        ChromeThreadPoolFbBlocking = 5,
23855        ChromeThreadPoolBgBlocking = 6,
23856        ChromeThreadPoolService = 7,
23857        /// Compositor:
23858        ChromeThreadCompositor = 8,
23859        ChromeThreadVizCompositor = 9,
23860        ChromeThreadCompositorWorker = 10,
23861        /// Renderer:
23862        ChromeThreadServiceWorker = 11,
23863        /// Tracing related threads:
23864        ChromeThreadMemoryInfra = 50,
23865        ChromeThreadSamplingProfiler = 51,
23866    }
23867    impl ChromeThreadType {
23868        /// String value of the enum field names used in the ProtoBuf definition.
23869        ///
23870        /// The values are not transformed in any way and thus are considered stable
23871        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23872        pub fn as_str_name(&self) -> &'static str {
23873            match self {
23874                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
23875                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
23876                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
23877                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
23878                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
23879                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
23880                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
23881                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
23882                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
23883                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
23884                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
23885                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
23886                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
23887                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
23888            }
23889        }
23890    }
23891}
23892// End of protos/perfetto/trace/track_event/thread_descriptor.proto
23893
23894// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23895
23896/// Describes the attributes for a Chrome process. Must be paired with a
23897/// ProcessDescriptor in the same TrackDescriptor.
23898///
23899/// Next id: 6.
23900#[derive(Clone, PartialEq, ::prost::Message)]
23901pub struct ChromeProcessDescriptor {
23902    /// This is a chrome_enums::ProcessType from
23903    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23904    /// be imported here because of a dependency loop.
23905    #[prost(int32, optional, tag="1")]
23906    pub process_type: ::core::option::Option<i32>,
23907    #[prost(int32, optional, tag="2")]
23908    pub process_priority: ::core::option::Option<i32>,
23909    /// To support old UI. New UI should determine default sorting by process_type.
23910    #[prost(int32, optional, tag="3")]
23911    pub legacy_sort_index: ::core::option::Option<i32>,
23912    /// Name of the hosting app for WebView. Used to match renderer processes to
23913    /// their hosting apps.
23914    #[prost(string, optional, tag="4")]
23915    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
23916    /// The ID to link crashes to trace.
23917    /// Notes:
23918    /// * The ID is per process. So, each trace may contain many IDs, and you need
23919    ///    to look for the ID from crashed process to find the crash report.
23920    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
23921    ///    get an uploaded trace, since uploads could have failed.
23922    /// * On the other hand, if there was a crash during the session and trace was
23923    ///    uploaded, it is very likely to find a crash report with the trace ID.
23924    /// * This is not crash ID or trace ID. It is just a random 64-bit number
23925    ///    recorded in both traces and crashes. It is possible to have collisions,
23926    ///    though very rare.
23927    #[prost(uint64, optional, tag="5")]
23928    pub crash_trace_id: ::core::option::Option<u64>,
23929}
23930// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23931
23932// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23933
23934/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
23935/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
23936/// in the same TrackDescriptor.
23937///
23938/// Next id: 3.
23939#[derive(Clone, PartialEq, ::prost::Message)]
23940pub struct ChromeThreadDescriptor {
23941    /// This is a chrome_enums::ThreadType from
23942    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23943    /// be imported here because of a dependency loop.
23944    #[prost(int32, optional, tag="1")]
23945    pub thread_type: ::core::option::Option<i32>,
23946    /// To support old UI. New UI should determine default sorting by thread_type.
23947    #[prost(int32, optional, tag="2")]
23948    pub legacy_sort_index: ::core::option::Option<i32>,
23949    /// Indicates whether the thread's tid specified in the thread descriptor is
23950    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
23951    #[prost(bool, optional, tag="3")]
23952    pub is_sandboxed_tid: ::core::option::Option<bool>,
23953}
23954// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23955
23956// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
23957
23958/// Defines properties of a counter track, e.g. for built-in counters (thread
23959/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
23960/// a specific app component).
23961///
23962/// Counter tracks only support TYPE_COUNTER track events, which specify new
23963/// values for the counter. For counters that require per-slice values, counter
23964/// values can instead be provided in a more efficient encoding via TrackEvent's
23965/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
23966/// slice-type events cannot be emitted onto a counter track.
23967///
23968/// Values for counters that are only emitted on a single packet sequence can
23969/// optionally be delta-encoded, see |is_incremental|.
23970///
23971/// Next id: 7.
23972#[derive(Clone, PartialEq, ::prost::Message)]
23973pub struct CounterDescriptor {
23974    /// For built-in counters (e.g. thread time). Custom user-specified counters
23975    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
23976    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
23977    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
23978    pub r#type: ::core::option::Option<i32>,
23979    /// Names of categories of the counter (usually for user-specified counters).
23980    /// In the client library, categories are a way to turn groups of individual
23981    /// counters (or events) on or off.
23982    #[prost(string, repeated, tag="2")]
23983    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23984    /// Type of the counter's values. Built-in counters imply a value for this
23985    /// field.
23986    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
23987    pub unit: ::core::option::Option<i32>,
23988    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
23989    /// name can be used instead.
23990    #[prost(string, optional, tag="6")]
23991    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
23992    /// Multiplication factor of this counter's values, e.g. to supply
23993    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
23994    #[prost(int64, optional, tag="4")]
23995    pub unit_multiplier: ::core::option::Option<i64>,
23996    /// Whether values for this counter are provided as delta values. Only
23997    /// supported for counters that are emitted on a single packet-sequence (e.g.
23998    /// thread time). Counter values in subsequent packets on the current packet
23999    /// sequence will be interpreted as delta values from the sequence's most
24000    /// recent value for the counter. When incremental state is cleared, the
24001    /// counter value is considered to be reset to 0. Thus, the first value after
24002    /// incremental state is cleared is effectively an absolute value.
24003    #[prost(bool, optional, tag="5")]
24004    pub is_incremental: ::core::option::Option<bool>,
24005    // TODO(eseckler): Support arguments describing the counter (?).
24006    // repeated DebugAnnotation debug_annotations;
24007
24008    /// When visualizing multiple counter tracks, it is often useful to have them
24009    /// share the same Y-axis range. This allows for easy comparison of their
24010    /// values.
24011    ///
24012    /// All counter tracks with the same |y_axis_share_key| and the same parent
24013    /// track (e.g. grouped under the same process track) will share their y-axis
24014    /// range in the UI.
24015    #[prost(string, optional, tag="7")]
24016    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
24017}
24018/// Nested message and enum types in `CounterDescriptor`.
24019pub mod counter_descriptor {
24020    /// Built-in counters, usually with special meaning in the client library,
24021    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
24022    /// track name from the enum value if none is provided in TrackDescriptor.
24023    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24024    #[repr(i32)]
24025    pub enum BuiltinCounterType {
24026        CounterUnspecified = 0,
24027        // Thread-scoped counters. The thread's track should be specified via
24028        // |parent_uuid| in the TrackDescriptor for such a counter.
24029
24030        /// implies UNIT_TIME_NS.
24031        CounterThreadTimeNs = 1,
24032        /// implies UNIT_COUNT.
24033        CounterThreadInstructionCount = 2,
24034    }
24035    impl BuiltinCounterType {
24036        /// String value of the enum field names used in the ProtoBuf definition.
24037        ///
24038        /// The values are not transformed in any way and thus are considered stable
24039        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24040        pub fn as_str_name(&self) -> &'static str {
24041            match self {
24042                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
24043                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
24044                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
24045            }
24046        }
24047    }
24048    /// Type of the values for the counters - to supply lower granularity units,
24049    /// see also |unit_multiplier|.
24050    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24051    #[repr(i32)]
24052    pub enum Unit {
24053        Unspecified = 0,
24054        TimeNs = 1,
24055        Count = 2,
24056        /// TODO(eseckler): Support more units as necessary.
24057        SizeBytes = 3,
24058    }
24059    impl Unit {
24060        /// String value of the enum field names used in the ProtoBuf definition.
24061        ///
24062        /// The values are not transformed in any way and thus are considered stable
24063        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24064        pub fn as_str_name(&self) -> &'static str {
24065            match self {
24066                Unit::Unspecified => "UNIT_UNSPECIFIED",
24067                Unit::TimeNs => "UNIT_TIME_NS",
24068                Unit::Count => "UNIT_COUNT",
24069                Unit::SizeBytes => "UNIT_SIZE_BYTES",
24070            }
24071        }
24072    }
24073}
24074// End of protos/perfetto/trace/track_event/counter_descriptor.proto
24075
24076// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
24077
24078/// Defines a track for TrackEvents. Slices and instant events on the same track
24079/// will be nested based on their timestamps, see TrackEvent::Type.
24080///
24081/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
24082/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
24083/// when the ring buffer wraps, it should be reemitted whenever incremental state
24084/// is cleared.
24085///
24086/// As a fallback, TrackEvents emitted without an explicit track association will
24087/// be associated with an implicit trace-global track (uuid = 0), see also
24088/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
24089/// TrackDescriptor for this implicit track.
24090///
24091/// Next id: 18.
24092#[derive(Clone, PartialEq, ::prost::Message)]
24093pub struct TrackDescriptor {
24094    /// Unique ID that identifies this track. This ID is global to the whole trace.
24095    /// Producers should ensure that it is unlikely to clash with IDs emitted by
24096    /// other producers. A value of 0 denotes the implicit trace-global track.
24097    ///
24098    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
24099    /// event id + id_scope, pid, and/or tid to compute this ID.
24100    #[prost(uint64, optional, tag="1")]
24101    pub uuid: ::core::option::Option<u64>,
24102    /// A parent track reference can be used to describe relationships between
24103    /// tracks. For example, to define an asynchronous track which is scoped to a
24104    /// specific process, specify the uuid for that process's process track here.
24105    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
24106    /// thread, specify the uuid for that thread's thread track here. In general,
24107    /// setting a parent will *nest* that track under the parent in the UI and in
24108    /// the trace processor data model (with the important exception noted below).
24109    ///
24110    /// If not specified, the track will be a root track, i.e. not nested under any
24111    /// other track.
24112    ///
24113    /// Note: if the `thread` or `process` fields are set, this value will be
24114    /// *ignored* as priority is given to those fields.
24115    ///
24116    /// Note: if the parent is set to a track with `thread` or `process` fields
24117    /// set, the track will *not* be nested under the parent in the UI and in the
24118    /// trace processor data model. Instead, the track will inherit the parent's
24119    /// thread/process association and will appear as a *sibling* of the parent.
24120    /// This semantic exists for back-compat reasons as the UI used to work this
24121    /// way for years and changing this leads to a lot of traces subtly breaking.
24122    /// If you want to force nesting, create *another* intermediate track to act as
24123    /// the parent.
24124    #[prost(uint64, optional, tag="5")]
24125    pub parent_uuid: ::core::option::Option<u64>,
24126    /// A human-readable description of the track providing more context about its
24127    /// data. In the UI, this is shown in a popup when the track's help button is
24128    /// clicked.
24129    #[prost(string, optional, tag="14")]
24130    pub description: ::core::option::Option<::prost::alloc::string::String>,
24131    /// Associate the track with a process, making it the process-global track.
24132    /// There should only be one such track per process (usually for instant
24133    /// events; trace processor uses this fact to detect pid reuse). If you need
24134    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
24135    ///
24136    /// Trace processor will merge events on a process track with slice-type events
24137    /// from other sources (e.g. ftrace) for the same process into a single
24138    /// timeline view.
24139    #[prost(message, optional, tag="3")]
24140    pub process: ::core::option::Option<ProcessDescriptor>,
24141    #[prost(message, optional, tag="6")]
24142    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
24143    /// Associate the track with a thread, indicating that the track's events
24144    /// describe synchronous code execution on the thread. There should only be one
24145    /// such track per thread (trace processor uses this fact to detect tid reuse).
24146    ///
24147    /// Trace processor will merge events on a thread track with slice-type events
24148    /// from other sources (e.g. ftrace) for the same thread into a single timeline
24149    /// view.
24150    #[prost(message, optional, tag="4")]
24151    pub thread: ::core::option::Option<ThreadDescriptor>,
24152    #[prost(message, optional, tag="7")]
24153    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
24154    /// Descriptor for a counter track. If set, the track will only support
24155    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
24156    /// |extra_counter_values|).
24157    #[prost(message, optional, tag="8")]
24158    pub counter: ::core::option::Option<CounterDescriptor>,
24159    /// If true, forces Trace Processor to use separate tracks for track events
24160    /// and system events for the same thread.
24161    ///
24162    /// Track events timestamps in Chrome have microsecond resolution, while
24163    /// system events use nanoseconds. It results in broken event nesting when
24164    /// track events and system events share a track.
24165    #[prost(bool, optional, tag="9")]
24166    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
24167    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
24168    pub child_ordering: ::core::option::Option<i32>,
24169    /// An opaque value which allows specifying how two sibling tracks should be
24170    /// ordered relative to each other: tracks with lower ranks will appear before
24171    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
24172    /// 0.
24173    ///
24174    /// Note: this option is only relevant for tracks where the parent has
24175    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
24176    ///
24177    /// Note: for tracks where the parent has `thread` or `process` are set, this
24178    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
24179    /// See `parent_uuid` for details.
24180    #[prost(int32, optional, tag="12")]
24181    pub sibling_order_rank: ::core::option::Option<i32>,
24182    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
24183    pub sibling_merge_behavior: ::core::option::Option<i32>,
24184    /// Name of the track.
24185    ///
24186    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24187    /// emitted before any `TrackEvent`s on the same track.
24188    ///
24189    /// Note: any name specified here will be *ignored* for the root thread scoped
24190    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24191    /// case, the name of the track is shared by many different data sources and so
24192    /// is centrally controlled by trace processor.
24193    ///
24194    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24195    /// a descriptor *has* to be emitted multiple times (e.g. between different
24196    /// processes), it's recommended to ensure that the name is consistent across
24197    /// all TrackDescriptors with the same `uuid`.
24198    ///
24199    /// If the the above recommendation is not followed and the same uuid is
24200    /// emitted with different names, it is implementation defined how the final
24201    /// name will be chosen and may change at any time.
24202    ///
24203    /// The current implementation of trace processor chooses the name in the
24204    /// following way, depending on the value of the `sibling_merge_behavior`
24205    /// field:
24206    ///
24207    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24208    ///    * The *last* non-null name in the whole trace according to trace order
24209    ///      will be used.
24210    ///    * If no non-null name is present in the whole trace, the trace processor
24211    ///      may fall back to other sources to provide a name for the track (e.g.
24212    ///      the first event name for slice tracks, the counter name for counter
24213    ///      tracks). This is implementation defined and may change at any time.
24214    ///
24215    /// 2. If `sibling_merge_behavior` is set to any other value:
24216    ///    * The first non-null name before the first event on the track *or on any
24217    ///      descendant tracks* is processed will be used. For example, consider
24218    ///      the following sequence of events:
24219    ///        ts=100: TrackDescriptor(uuid=A)
24220    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
24221    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
24222    ///        ts=400: TrackEvent(track_uuid=B)
24223    ///      In this case, the name for track A will be "Track A" because the
24224    ///      descriptor with the name was emitted before the first event on a
24225    ///      descendant track (B).
24226    ///    * If no non-null name is present before the event is processed, the trace
24227    ///      processor may fall back to other sources to provide a name for the
24228    ///      track (e.g. the first event name for slice tracks, the counter name for
24229    ///      counter tracks). This is implementation defined and may change at any
24230    ///      time.
24231    ///    * Note on processing order: In the standard trace processor pipeline,
24232    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
24233    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
24234    ///      track, all its descriptors in the trace are processed before its
24235    ///      events. Consequently, the "first non-null name before the first event"
24236    ///      will be the name from the first `TrackDescriptor` for that track in the
24237    ///      trace file that has a non-null name. However, in a streaming parsing
24238    ///      scenario, the timestamp order of descriptors and events is significant,
24239    ///      and a descriptor arriving after an event has been processed will not be
24240    ///      used to name the track.
24241    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
24242    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
24243    /// An opaque value which allows specifying which tracks should be merged
24244    /// together.
24245    ///
24246    /// Only meaningful when `sibling_merge_behavior` is set to
24247    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
24248    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
24249    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
24250}
24251/// Nested message and enum types in `TrackDescriptor`.
24252pub mod track_descriptor {
24253    /// Specifies how the UI should display child tracks of this track (i.e. tracks
24254    /// where `parent_uuid` is specified to this track `uuid`). Note that this
24255    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
24256    /// this if it has a good reason not to do so.
24257    ///
24258    /// Note: for tracks where `thread` or `process` are set, this option is
24259    /// *ignored*. See `parent_uuid` for details.
24260    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24261    #[repr(i32)]
24262    pub enum ChildTracksOrdering {
24263        /// The default ordering, with no bearing on how the UI will visualise the
24264        /// tracks.
24265        Unknown = 0,
24266        /// Order tracks by `name` or `static_name` depending on which one has been
24267        /// specified.
24268        Lexicographic = 1,
24269        /// Order tracks by the first `ts` event in a track.
24270        Chronological = 2,
24271        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
24272        /// the lower values will be shown before tracks with higher values. Tracks
24273        /// with no value will be treated as having 0 rank.
24274        Explicit = 3,
24275    }
24276    impl ChildTracksOrdering {
24277        /// String value of the enum field names used in the ProtoBuf definition.
24278        ///
24279        /// The values are not transformed in any way and thus are considered stable
24280        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24281        pub fn as_str_name(&self) -> &'static str {
24282            match self {
24283                ChildTracksOrdering::Unknown => "UNKNOWN",
24284                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
24285                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
24286                ChildTracksOrdering::Explicit => "EXPLICIT",
24287            }
24288        }
24289    }
24290    /// Specifies how the analysis tools should "merge" different sibling
24291    /// TrackEvent tracks.
24292    ///
24293    /// For two or more tracks to be merged, they must be "eligible" siblings.
24294    /// Eligibility is determined by the following rules:
24295    /// 1. All tracks must have the same parent.
24296    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
24297    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
24298    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
24299    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
24300    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
24301    ///
24302    /// Specifically:
24303    ///    - in the UI, all tracks which are merged together will be
24304    ///      displayed as a single "visual" track.
24305    ///    - in the trace processor, all tracks which are merged together will be
24306    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
24307    ///      of tracks which have an active event at the same time.
24308    ///
24309    /// When tracks are merged togther, the properties for the merged track will be
24310    /// chosen from the source tracks based on the following rules:
24311    ///    - for `sibling_order_rank`: the rank of the merged track will be the
24312    ///      smallest rank among the source tracks.
24313    ///    - for all other properties: the property taken is unspecified and can
24314    ///      be any value provided by one of the source tracks. This can lead to
24315    ///      non-deterministic behavior.
24316    ///       - examples of other properties include `name`, `child_ordering` etc.
24317    ///       - because of this, it's strongly recommended to ensure that all source
24318    ///         tracks have the same value for these properties.
24319    ///       - the trace processor will also emit an error stat if it detects
24320    ///         that the properties are not the same across all source tracks.
24321    ///
24322    /// Note: merging is done *recursively* so entire trees of tracks can be merged
24323    /// together. To make this clearer, consider an example track hierarchy (in
24324    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
24325    /// track line, like "Updater", is its 'name' property):
24326    ///
24327    ///    Initial track hierarchy:
24328    ///      SystemActivity
24329    ///      ├── AuthService (smk: "auth_main_cluster")
24330    ///      │   └── LoginOp (smk: "login_v1")
24331    ///      ├── AuthService (smk: "auth_main_cluster")
24332    ///      │   └── LoginOp (smk: "login_v1")
24333    ///      ├── AuthService (smk: "auth_backup_cluster")
24334    ///      │   └── GuestOp (smk: "guest_v1")
24335    ///      └── UserProfileService (smk: "profile_cluster")
24336    ///          └── GetProfileOp (smk: "getprofile_v1")
24337    ///
24338    /// Merging outcomes:
24339    ///
24340    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
24341    ///    - The first two "AuthService" tracks merge because they share
24342    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
24343    ///      aligning with recommendations. The merged track is named "AuthService".
24344    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
24345    ///      remains separate, as its `sibling_merge_key` is different.
24346    ///    - "UserProfileService" also remains separate.
24347    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
24348    ///      "LoginOp" get merged as they have the same sibling merge key.
24349    ///
24350    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
24351    ///      SystemActivity
24352    ///      ├── AuthService (merged by smk: "auth_main_cluster")
24353    ///      │   ├── LoginOp (merged by smk: "login_v1")
24354    ///      ├── AuthService (smk: "auth_backup_cluster")
24355    ///      │   └── GuestOp (smk: "guest_v1")
24356    ///      └── UserProfileService (smk: "profile_cluster")
24357    ///          └── GetProfileOp (smk: "getprofile_v1")
24358    ///
24359    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
24360    ///    - All three tracks named "AuthService" merge because they share the same
24361    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
24362    ///      for this merged track would be taken from one of the source tracks
24363    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
24364    ///      relevant if its children had key-based merge behaviors.
24365    ///    - "UserProfileService" remains separate due to its different name.
24366    ///    - Within the single merged "AuthService" track:
24367    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
24368    ///      they have the same name.
24369    ///
24370    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
24371    ///      SystemActivity
24372    ///      ├── AuthService (merged from 3 "AuthService" tracks)
24373    ///      │   ├── LoginOp (smk: "login_v1")
24374    ///      │   └── GuestOp (smk: "guest_v1")
24375    ///      └── UserProfileService (smk: "profile_cluster")
24376    ///          └── GetProfileOp (smk: "getprofile_v1")
24377    ///
24378    /// Note: for tracks where `thread` or `process` are set, this option is
24379    /// *ignored*. See `parent_uuid` for details.
24380    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24381    #[repr(i32)]
24382    pub enum SiblingMergeBehavior {
24383        /// When unspecified or not set, defaults to
24384        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
24385        Unspecified = 0,
24386        /// Merge this track with eligible siblings which have the same `name`.
24387        ///
24388        /// This is the default behavior.option.
24389        ///
24390        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
24391        /// worked this way for years and inherited this behavior from
24392        /// chrome://tracing which has worked this way for even longer
24393        ByTrackName = 1,
24394        /// Never merge this track with any siblings. Useful if if this track has a
24395        /// specific meaning and you want to see separately from any others.
24396        None = 2,
24397        /// Merge this track with eligible siblings which have the same
24398        /// `sibling_merge_key`.
24399        BySiblingMergeKey = 3,
24400    }
24401    impl SiblingMergeBehavior {
24402        /// String value of the enum field names used in the ProtoBuf definition.
24403        ///
24404        /// The values are not transformed in any way and thus are considered stable
24405        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24406        pub fn as_str_name(&self) -> &'static str {
24407            match self {
24408                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
24409                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
24410                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
24411                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
24412            }
24413        }
24414    }
24415    /// Name of the track.
24416    ///
24417    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
24418    /// emitted before any `TrackEvent`s on the same track.
24419    ///
24420    /// Note: any name specified here will be *ignored* for the root thread scoped
24421    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
24422    /// case, the name of the track is shared by many different data sources and so
24423    /// is centrally controlled by trace processor.
24424    ///
24425    /// It's strongly recommended to only emit the name for a track uuid *once*. If
24426    /// a descriptor *has* to be emitted multiple times (e.g. between different
24427    /// processes), it's recommended to ensure that the name is consistent across
24428    /// all TrackDescriptors with the same `uuid`.
24429    ///
24430    /// If the the above recommendation is not followed and the same uuid is
24431    /// emitted with different names, it is implementation defined how the final
24432    /// name will be chosen and may change at any time.
24433    ///
24434    /// The current implementation of trace processor chooses the name in the
24435    /// following way, depending on the value of the `sibling_merge_behavior`
24436    /// field:
24437    ///
24438    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
24439    ///    * The *last* non-null name in the whole trace according to trace order
24440    ///      will be used.
24441    ///    * If no non-null name is present in the whole trace, the trace processor
24442    ///      may fall back to other sources to provide a name for the track (e.g.
24443    ///      the first event name for slice tracks, the counter name for counter
24444    ///      tracks). This is implementation defined and may change at any time.
24445    ///
24446    /// 2. If `sibling_merge_behavior` is set to any other value:
24447    ///    * The first non-null name before the first event on the track *or on any
24448    ///      descendant tracks* is processed will be used. For example, consider
24449    ///      the following sequence of events:
24450    ///        ts=100: TrackDescriptor(uuid=A)
24451    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
24452    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
24453    ///        ts=400: TrackEvent(track_uuid=B)
24454    ///      In this case, the name for track A will be "Track A" because the
24455    ///      descriptor with the name was emitted before the first event on a
24456    ///      descendant track (B).
24457    ///    * If no non-null name is present before the event is processed, the trace
24458    ///      processor may fall back to other sources to provide a name for the
24459    ///      track (e.g. the first event name for slice tracks, the counter name for
24460    ///      counter tracks). This is implementation defined and may change at any
24461    ///      time.
24462    ///    * Note on processing order: In the standard trace processor pipeline,
24463    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
24464    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
24465    ///      track, all its descriptors in the trace are processed before its
24466    ///      events. Consequently, the "first non-null name before the first event"
24467    ///      will be the name from the first `TrackDescriptor` for that track in the
24468    ///      trace file that has a non-null name. However, in a streaming parsing
24469    ///      scenario, the timestamp order of descriptors and events is significant,
24470    ///      and a descriptor arriving after an event has been processed will not be
24471    ///      used to name the track.
24472    #[derive(Clone, PartialEq, ::prost::Oneof)]
24473    pub enum StaticOrDynamicName {
24474        #[prost(string, tag="2")]
24475        Name(::prost::alloc::string::String),
24476        /// This field is only set by the SDK when perfetto::StaticString is
24477        /// provided.
24478        #[prost(string, tag="10")]
24479        StaticName(::prost::alloc::string::String),
24480        /// Equivalent to name, used just to mark that the data is coming from
24481        /// android.os.Trace.
24482        #[prost(string, tag="13")]
24483        AtraceName(::prost::alloc::string::String),
24484    }
24485    /// An opaque value which allows specifying which tracks should be merged
24486    /// together.
24487    ///
24488    /// Only meaningful when `sibling_merge_behavior` is set to
24489    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
24490    #[derive(Clone, PartialEq, ::prost::Oneof)]
24491    pub enum SiblingMergeKeyField {
24492        #[prost(string, tag="16")]
24493        SiblingMergeKey(::prost::alloc::string::String),
24494        #[prost(uint64, tag="17")]
24495        SiblingMergeKeyInt(u64),
24496    }
24497}
24498// End of protos/perfetto/trace/track_event/track_descriptor.proto
24499
24500// Begin of protos/perfetto/trace/translation/translation_table.proto
24501
24502/// Translation rules for the trace processor.
24503/// See the comments for each rule type for specific meaning.
24504#[derive(Clone, PartialEq, ::prost::Message)]
24505pub struct TranslationTable {
24506    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
24507    pub table: ::core::option::Option<translation_table::Table>,
24508}
24509/// Nested message and enum types in `TranslationTable`.
24510pub mod translation_table {
24511    #[derive(Clone, PartialEq, ::prost::Oneof)]
24512    pub enum Table {
24513        #[prost(message, tag="1")]
24514        ChromeHistogram(super::ChromeHistorgramTranslationTable),
24515        #[prost(message, tag="2")]
24516        ChromeUserEvent(super::ChromeUserEventTranslationTable),
24517        #[prost(message, tag="3")]
24518        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
24519        #[prost(message, tag="4")]
24520        SliceName(super::SliceNameTranslationTable),
24521        #[prost(message, tag="5")]
24522        ProcessTrackName(super::ProcessTrackNameTranslationTable),
24523        #[prost(message, tag="6")]
24524        ChromeStudy(super::ChromeStudyTranslationTable),
24525    }
24526}
24527/// Chrome histogram sample hash -> name translation rules.
24528#[derive(Clone, PartialEq, ::prost::Message)]
24529pub struct ChromeHistorgramTranslationTable {
24530    #[prost(map="uint64, string", tag="1")]
24531    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24532}
24533/// Chrome user event action hash -> name translation rules.
24534#[derive(Clone, PartialEq, ::prost::Message)]
24535pub struct ChromeUserEventTranslationTable {
24536    #[prost(map="uint64, string", tag="1")]
24537    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24538}
24539/// Chrome performance mark translation rules.
24540#[derive(Clone, PartialEq, ::prost::Message)]
24541pub struct ChromePerformanceMarkTranslationTable {
24542    #[prost(map="uint32, string", tag="1")]
24543    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24544    #[prost(map="uint32, string", tag="2")]
24545    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
24546}
24547/// Raw -> deobfuscated slice name translation rules.
24548#[derive(Clone, PartialEq, ::prost::Message)]
24549pub struct SliceNameTranslationTable {
24550    #[prost(map="string, string", tag="1")]
24551    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24552}
24553/// Raw -> deobfuscated process track name translation rules.
24554#[derive(Clone, PartialEq, ::prost::Message)]
24555pub struct ProcessTrackNameTranslationTable {
24556    #[prost(map="string, string", tag="1")]
24557    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
24558}
24559/// Chrome study hash -> name translation rules.
24560#[derive(Clone, PartialEq, ::prost::Message)]
24561pub struct ChromeStudyTranslationTable {
24562    #[prost(map="uint64, string", tag="1")]
24563    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
24564}
24565// End of protos/perfetto/trace/translation/translation_table.proto
24566
24567// Begin of protos/perfetto/trace/trigger.proto
24568
24569/// When a TracingSession receives a trigger it records the boot time nanoseconds
24570/// in the TracePacket's timestamp field as well as the name of the producer that
24571/// triggered it. We emit this data so filtering can be done on triggers received
24572/// in the trace.
24573#[derive(Clone, PartialEq, ::prost::Message)]
24574pub struct Trigger {
24575    /// Name of the trigger which was received.
24576    #[prost(string, optional, tag="1")]
24577    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
24578    /// The actual producer that activated |trigger|.
24579    #[prost(string, optional, tag="2")]
24580    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
24581    /// The verified UID of the producer.
24582    #[prost(int32, optional, tag="3")]
24583    pub trusted_producer_uid: ::core::option::Option<i32>,
24584    /// The value of stop_delay_ms from the configuration.
24585    #[prost(uint64, optional, tag="4")]
24586    pub stop_delay_ms: ::core::option::Option<u64>,
24587}
24588// End of protos/perfetto/trace/trigger.proto
24589
24590// Begin of protos/perfetto/trace/ui_state.proto
24591
24592/// Common state for UIs visualizing Perfetto traces.
24593/// This message can be appended as a TracePacket by UIs to save the
24594/// visible state (e.g. scroll position/zoom state) for future opening
24595/// of the trace.
24596/// Design doc: go/trace-ui-state.
24597#[derive(Clone, PartialEq, ::prost::Message)]
24598pub struct UiState {
24599    /// The start and end bounds of the viewport of the UI in nanoseconds.
24600    ///
24601    /// This is the absolute time associated to slices and other events in
24602    /// trace processor tables (i.e. the |ts| column of most tables)
24603    #[prost(int64, optional, tag="1")]
24604    pub timeline_start_ts: ::core::option::Option<i64>,
24605    #[prost(int64, optional, tag="2")]
24606    pub timeline_end_ts: ::core::option::Option<i64>,
24607    #[prost(message, optional, tag="3")]
24608    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
24609}
24610/// Nested message and enum types in `UiState`.
24611pub mod ui_state {
24612    /// Indicates that the given process should be highlighted by the UI.
24613    #[derive(Clone, PartialEq, ::prost::Message)]
24614    pub struct HighlightProcess {
24615        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
24616        pub selector: ::core::option::Option<highlight_process::Selector>,
24617    }
24618    /// Nested message and enum types in `HighlightProcess`.
24619    pub mod highlight_process {
24620        #[derive(Clone, PartialEq, ::prost::Oneof)]
24621        pub enum Selector {
24622            /// The pid of the process to highlight. This is useful for UIs to focus
24623            /// on tracks of a particular process in the trace.
24624            ///
24625            /// If more than one process in a trace has the same pid, it is UI
24626            /// implementation specific how the process to be focused will be
24627            /// chosen.
24628            #[prost(uint32, tag="1")]
24629            Pid(u32),
24630            /// The command line of the process to highlight; for most Android apps,
24631            /// this is the package name of the app. This is useful for UIs to focus
24632            /// on a particular app in the trace.
24633            ///
24634            /// If more than one process hasthe same cmdline, it is UI implementation
24635            /// specific how the process to be focused will be chosen.
24636            #[prost(string, tag="2")]
24637            Cmdline(::prost::alloc::string::String),
24638        }
24639    }
24640}
24641// Begin of protos/perfetto/trace/trace_packet.proto
24642
24643/// TracePacket is the root object of a Perfetto trace.
24644/// A Perfetto trace is a linear sequence of TracePacket(s).
24645///
24646/// The tracing service guarantees that all TracePacket(s) written by a given
24647/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
24648/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
24649/// to the Consumer (or written into the trace file).
24650/// TracePacket(s) written by different TraceWriter(s), hence even different
24651/// data sources, can be seen in arbitrary order.
24652/// The consumer can re-establish a total order, if interested, using the packet
24653/// timestamps, after having synchronized the different clocks onto a global
24654/// clock.
24655///
24656/// The tracing service is agnostic of the content of TracePacket, with the
24657/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
24658/// the service itself.
24659///
24660/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
24661///
24662/// Next reserved id: 14 (up to 15).
24663/// Next id: 127.
24664#[derive(Clone, PartialEq, ::prost::Message)]
24665pub struct TracePacket {
24666    /// The timestamp of the TracePacket.
24667    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
24668    /// Android). It can be overridden using a different timestamp_clock_id.
24669    /// The clock domain definition in ClockSnapshot can also override:
24670    /// - The unit (default: 1ns).
24671    /// - The absolute vs delta encoding (default: absolute timestamp).
24672    #[prost(uint64, optional, tag="8")]
24673    pub timestamp: ::core::option::Option<u64>,
24674    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
24675    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
24676    /// producer-defined clock id.
24677    /// If unspecified and if no default per-sequence value has been provided via
24678    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
24679    #[prost(uint32, optional, tag="58")]
24680    pub timestamp_clock_id: ::core::option::Option<u32>,
24681    /// Trusted process id of the producer which generated this packet, written by
24682    /// the service.
24683    #[prost(int32, optional, tag="79")]
24684    pub trusted_pid: ::core::option::Option<i32>,
24685    /// Incrementally emitted interned data, valid only on the packet's sequence
24686    /// (packets with the same |trusted_packet_sequence_id|). The writer will
24687    /// usually emit new interned data in the same TracePacket that first refers to
24688    /// it (since the last reset of interning state). It may also be emitted
24689    /// proactively in advance of referring to them in later packets.
24690    #[prost(message, optional, tag="12")]
24691    pub interned_data: ::core::option::Option<InternedData>,
24692    #[prost(uint32, optional, tag="13")]
24693    pub sequence_flags: ::core::option::Option<u32>,
24694    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
24695    #[prost(bool, optional, tag="41")]
24696    pub incremental_state_cleared: ::core::option::Option<bool>,
24697    /// Default values for fields of later TracePackets emitted on this packet's
24698    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
24699    /// It must be reemitted when incremental state is cleared (see
24700    /// |incremental_state_cleared|).
24701    /// Requires that any future packet emitted on the same sequence specifies
24702    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
24703    /// TracePacketDefaults always override the global defaults for any future
24704    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
24705    #[prost(message, optional, tag="59")]
24706    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
24707    /// Flag set by the service if, for the current packet sequence (see
24708    /// |trusted_packet_sequence_id|), either:
24709    /// * this is the first packet, or
24710    /// * one or multiple packets were dropped since the last packet that the
24711    ///    consumer read from the sequence. This can happen if chunks in the trace
24712    ///    buffer are overridden before the consumer could read them when the trace
24713    ///    is configured in ring buffer mode.
24714    ///
24715    /// When packet loss occurs, incrementally emitted data (including interned
24716    /// data) on the sequence should be considered invalid up until the next packet
24717    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
24718    #[prost(bool, optional, tag="42")]
24719    pub previous_packet_dropped: ::core::option::Option<bool>,
24720    /// Flag set by a producer (starting from SDK v29) if, for the current packet
24721    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
24722    ///
24723    /// This flag can be used for distinguishing the two situations when
24724    /// processing the trace:
24725    /// 1. There are no prior events for the sequence because of data loss, e.g.
24726    ///     due to ring buffer wrapping.
24727    /// 2. There are no prior events for the sequence because it didn't start
24728    ///     before this packet (= there's definitely no preceding data loss).
24729    ///
24730    /// Given that older SDK versions do not support this flag, this flag not
24731    /// being present for a particular sequence does not necessarily imply data
24732    /// loss.
24733    #[prost(bool, optional, tag="87")]
24734    pub first_packet_on_sequence: ::core::option::Option<bool>,
24735    /// The machine ID for identifying trace packets in a multi-machine tracing
24736    /// session. Is emitted by the tracing service for producers running on a
24737    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
24738    #[prost(uint32, optional, tag="98")]
24739    pub machine_id: ::core::option::Option<u32>,
24740    #[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, 126, 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")]
24741    pub data: ::core::option::Option<trace_packet::Data>,
24742    /// Trusted user id of the producer which generated this packet. Keep in sync
24743    /// with TrustedPacket.trusted_uid.
24744    ///
24745    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24746    /// instead.
24747    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
24748    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
24749    /// Service-assigned identifier of the packet sequence this packet belongs to.
24750    /// Uniquely identifies a producer + writer pair within the tracing session. A
24751    /// value of zero denotes an invalid ID. Keep in sync with
24752    /// TrustedPacket.trusted_packet_sequence_id.
24753    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
24754    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
24755}
24756/// Nested message and enum types in `TracePacket`.
24757pub mod trace_packet {
24758    /// Encapsulates the state and configuration of the ProtoVM instances running
24759    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
24760    /// and use them to inflate patches into full-state packets.
24761    /// Note: this message can't be defined in a dedicated file because it has a
24762    /// recursive dependency with TracePacket (see 'state' field below).
24763    #[derive(Clone, PartialEq, ::prost::Message)]
24764    pub struct ProtoVms {
24765        #[prost(message, repeated, tag="1")]
24766        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
24767    }
24768    /// Nested message and enum types in `ProtoVms`.
24769    pub mod proto_vms {
24770        #[derive(Clone, PartialEq, ::prost::Message)]
24771        pub struct Instance {
24772            #[prost(message, optional, tag="1")]
24773            pub program: ::core::option::Option<super::super::VmProgram>,
24774            #[prost(message, optional, tag="2")]
24775            pub state: ::core::option::Option<super::super::TracePacket>,
24776            #[prost(uint32, optional, tag="3")]
24777            pub memory_limit_kb: ::core::option::Option<u32>,
24778            #[prost(int32, repeated, packed="false", tag="4")]
24779            pub producer_id: ::prost::alloc::vec::Vec<i32>,
24780        }
24781    }
24782    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24783    #[repr(i32)]
24784    pub enum SequenceFlags {
24785        SeqUnspecified = 0,
24786        /// Set by the writer to indicate that it will re-emit any incremental data
24787        /// for the packet's sequence before referring to it again. This includes
24788        /// interned data as well as periodically emitted data like
24789        /// Process/ThreadDescriptors. This flag only affects the current packet
24790        /// sequence (see |trusted_packet_sequence_id|).
24791        ///
24792        /// When set, this TracePacket and subsequent TracePackets on the same
24793        /// sequence will not refer to any incremental data emitted before this
24794        /// TracePacket. For example, previously emitted interned data will be
24795        /// re-emitted if it is referred to again.
24796        ///
24797        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
24798        /// to skip packets in the sequence until the next one with this flag set, to
24799        /// ensure intact incremental data.
24800        SeqIncrementalStateCleared = 1,
24801        /// This packet requires incremental state, such as TracePacketDefaults or
24802        /// InternedData, to be parsed correctly. The trace reader should skip this
24803        /// packet if incremental state is not valid on this sequence, i.e. if no
24804        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
24805        /// current |trusted_packet_sequence_id|.
24806        SeqNeedsIncrementalState = 2,
24807    }
24808    impl SequenceFlags {
24809        /// String value of the enum field names used in the ProtoBuf definition.
24810        ///
24811        /// The values are not transformed in any way and thus are considered stable
24812        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24813        pub fn as_str_name(&self) -> &'static str {
24814            match self {
24815                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
24816                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
24817                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
24818            }
24819        }
24820    }
24821    #[derive(Clone, PartialEq, ::prost::Oneof)]
24822    pub enum Data {
24823        #[prost(message, tag="2")]
24824        ProcessTree(super::ProcessTree),
24825        #[prost(message, tag="9")]
24826        ProcessStats(super::ProcessStats),
24827        #[prost(message, tag="4")]
24828        InodeFileMap(super::InodeFileMap),
24829        #[prost(message, tag="5")]
24830        ChromeEvents(super::ChromeEventBundle),
24831        #[prost(message, tag="6")]
24832        ClockSnapshot(super::ClockSnapshot),
24833        #[prost(message, tag="7")]
24834        SysStats(super::SysStats),
24835        #[prost(message, tag="11")]
24836        TrackEvent(super::TrackEvent),
24837        // IDs up to 15 are reserved. They take only one byte to encode their
24838        // preamble so should be used for frequent events.
24839
24840        #[prost(message, tag="89")]
24841        TraceUuid(super::TraceUuid),
24842        #[prost(message, tag="33")]
24843        TraceConfig(super::TraceConfig),
24844        #[prost(message, tag="34")]
24845        FtraceStats(super::FtraceStats),
24846        #[prost(message, tag="35")]
24847        TraceStats(super::TraceStats),
24848        #[prost(message, tag="37")]
24849        ProfilePacket(super::ProfilePacket),
24850        #[prost(message, tag="74")]
24851        StreamingAllocation(super::StreamingAllocation),
24852        #[prost(message, tag="75")]
24853        StreamingFree(super::StreamingFree),
24854        #[prost(message, tag="38")]
24855        Battery(super::BatteryCounters),
24856        #[prost(message, tag="40")]
24857        PowerRails(super::PowerRails),
24858        #[prost(message, tag="39")]
24859        AndroidLog(super::AndroidLogPacket),
24860        #[prost(message, tag="45")]
24861        SystemInfo(super::SystemInfo),
24862        #[prost(message, tag="46")]
24863        Trigger(super::Trigger),
24864        #[prost(message, tag="109")]
24865        ChromeTrigger(super::ChromeTrigger),
24866        #[prost(message, tag="47")]
24867        PackagesList(super::PackagesList),
24868        #[prost(message, tag="48")]
24869        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
24870        #[prost(message, tag="49")]
24871        PerfettoMetatrace(super::PerfettoMetatrace),
24872        #[prost(message, tag="51")]
24873        ChromeMetadata(super::ChromeMetadataPacket),
24874        #[prost(message, tag="52")]
24875        GpuCounterEvent(super::GpuCounterEvent),
24876        #[prost(message, tag="53")]
24877        GpuRenderStageEvent(super::GpuRenderStageEvent),
24878        #[prost(message, tag="54")]
24879        StreamingProfilePacket(super::StreamingProfilePacket),
24880        #[prost(message, tag="56")]
24881        HeapGraph(super::HeapGraph),
24882        #[prost(message, tag="57")]
24883        GraphicsFrameEvent(super::GraphicsFrameEvent),
24884        #[prost(message, tag="62")]
24885        VulkanMemoryEvent(super::VulkanMemoryEvent),
24886        #[prost(message, tag="63")]
24887        GpuLog(super::GpuLog),
24888        #[prost(message, tag="65")]
24889        VulkanApiEvent(super::VulkanApiEvent),
24890        #[prost(message, tag="66")]
24891        PerfSample(super::PerfSample),
24892        #[prost(message, tag="67")]
24893        CpuInfo(super::CpuInfo),
24894        #[prost(message, tag="68")]
24895        SmapsPacket(super::SmapsPacket),
24896        #[prost(message, tag="69")]
24897        ServiceEvent(super::TracingServiceEvent),
24898        #[prost(message, tag="70")]
24899        InitialDisplayState(super::InitialDisplayState),
24900        #[prost(message, tag="71")]
24901        GpuMemTotalEvent(super::GpuMemTotalEvent),
24902        #[prost(message, tag="73")]
24903        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
24904        #[prost(message, tag="76")]
24905        FrameTimelineEvent(super::FrameTimelineEvent),
24906        #[prost(message, tag="77")]
24907        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
24908        #[prost(message, tag="78")]
24909        UiState(super::UiState),
24910        #[prost(message, tag="80")]
24911        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
24912        #[prost(message, tag="81")]
24913        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
24914        #[prost(message, tag="82")]
24915        TranslationTable(super::TranslationTable),
24916        #[prost(message, tag="83")]
24917        AndroidGameInterventionList(super::AndroidGameInterventionList),
24918        #[prost(message, tag="84")]
24919        StatsdAtom(super::StatsdAtom),
24920        #[prost(message, tag="86")]
24921        AndroidSystemProperty(super::AndroidSystemProperty),
24922        #[prost(message, tag="91")]
24923        EntityStateResidency(super::EntityStateResidency),
24924        #[prost(message, tag="124")]
24925        TraceProvenance(super::TraceProvenance),
24926        #[prost(message, tag="125")]
24927        Protovms(ProtoVms),
24928        #[prost(message, tag="126")]
24929        TraceAttributes(super::TraceAttributes),
24930        /// Only used in profile packets.
24931        #[prost(message, tag="61")]
24932        ModuleSymbols(super::ModuleSymbols),
24933        #[prost(message, tag="64")]
24934        DeobfuscationMapping(super::DeobfuscationMapping),
24935        /// Only used by TrackEvent.
24936        #[prost(message, tag="60")]
24937        TrackDescriptor(super::TrackDescriptor),
24938        /// Deprecated, use TrackDescriptor instead.
24939        #[prost(message, tag="43")]
24940        ProcessDescriptor(super::ProcessDescriptor),
24941        /// Deprecated, use TrackDescriptor instead.
24942        #[prost(message, tag="44")]
24943        ThreadDescriptor(super::ThreadDescriptor),
24944        /// Events from the Linux kernel ftrace infrastructure.
24945        #[prost(message, tag="1")]
24946        FtraceEvents(super::FtraceEventBundle),
24947        /// This field is emitted at periodic intervals (~10s) and
24948        /// contains always the binary representation of the UUID
24949        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
24950        /// efficiently partition long traces without having to fully parse them.
24951        #[prost(bytes, tag="36")]
24952        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
24953        /// Zero or more proto encoded trace packets compressed using deflate.
24954        /// Each compressed_packets TracePacket (including the two field ids and
24955        /// sizes) should be less than 512KB.
24956        #[prost(bytes, tag="50")]
24957        CompressedPackets(::prost::alloc::vec::Vec<u8>),
24958        /// Data sources can extend the trace proto with custom extension protos (see
24959        /// docs/design-docs/extensions.md). When they do that, the descriptor of
24960        /// their extension proto descriptor is serialized in this packet. This
24961        /// allows trace_processor to deserialize extended messages using reflection
24962        /// even if the extension proto is not checked in the Perfetto repo.
24963        #[prost(message, tag="72")]
24964        ExtensionDescriptor(super::ExtensionDescriptor),
24965        /// Represents a single packet sent or received by the network.
24966        #[prost(message, tag="88")]
24967        NetworkPacket(super::NetworkPacketEvent),
24968        /// Represents one or more packets sent or received by the network.
24969        #[prost(message, tag="92")]
24970        NetworkPacketBundle(super::NetworkPacketBundle),
24971        /// The "range of interest" for track events. See the message definition
24972        /// comments for more details.
24973        #[prost(message, tag="90")]
24974        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
24975        /// Winscope traces
24976        #[prost(message, tag="93")]
24977        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
24978        #[prost(message, tag="94")]
24979        SurfaceflingerTransactions(super::TransactionTraceEntry),
24980        #[prost(message, tag="96")]
24981        ShellTransition(super::ShellTransition),
24982        #[prost(message, tag="97")]
24983        ShellHandlerMappings(super::ShellHandlerMappings),
24984        #[prost(message, tag="104")]
24985        ProtologMessage(super::ProtoLogMessage),
24986        #[prost(message, tag="105")]
24987        ProtologViewerConfig(super::ProtoLogViewerConfig),
24988        #[prost(message, tag="112")]
24989        WinscopeExtensions(super::WinscopeExtensions),
24990        /// Events from the Windows etw infrastructure.
24991        #[prost(message, tag="95")]
24992        EtwEvents(super::EtwTraceEventBundle),
24993        #[prost(message, tag="99")]
24994        V8JsCode(super::V8JsCode),
24995        #[prost(message, tag="100")]
24996        V8InternalCode(super::V8InternalCode),
24997        #[prost(message, tag="101")]
24998        V8WasmCode(super::V8WasmCode),
24999        #[prost(message, tag="102")]
25000        V8RegExpCode(super::V8RegExpCode),
25001        #[prost(message, tag="103")]
25002        V8CodeMove(super::V8CodeMove),
25003        /// Clock synchronization with remote machines.
25004        #[prost(message, tag="107")]
25005        RemoteClockSync(super::RemoteClockSync),
25006        #[prost(message, tag="110")]
25007        PixelModemEvents(super::PixelModemEvents),
25008        #[prost(message, tag="111")]
25009        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
25010        #[prost(message, tag="113")]
25011        CloneSnapshotTrigger(super::Trigger),
25012        #[prost(message, tag="114")]
25013        BluetoothTraceEvent(super::BluetoothTraceEvent),
25014        #[prost(message, tag="115")]
25015        KernelWakelockData(super::KernelWakelockData),
25016        #[prost(message, tag="116")]
25017        AppWakelockBundle(super::AppWakelockBundle),
25018        /// Generic events for a standard kernel implementation
25019        #[prost(message, tag="117")]
25020        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
25021        #[prost(message, tag="118")]
25022        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
25023        #[prost(message, tag="120")]
25024        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
25025        #[prost(message, tag="122")]
25026        GenericKernelProcessTree(super::GenericKernelProcessTree),
25027        #[prost(message, tag="119")]
25028        CpuPerUidData(super::CpuPerUidData),
25029        #[prost(message, tag="121")]
25030        EvdevEvent(super::EvdevEvent),
25031        #[prost(message, tag="123")]
25032        UserList(super::AndroidUserList),
25033        /// This field is only used for testing.
25034        /// In previous versions of this proto this field had the id 268435455
25035        /// This caused many problems:
25036        /// - protozero decoder does not handle field ids larger than 999.
25037        /// - old versions of protoc produce Java bindings with syntax errors when
25038        ///    the field id is large enough.
25039        #[prost(message, tag="900")]
25040        ForTesting(super::TestEvent),
25041    }
25042    /// Trusted user id of the producer which generated this packet. Keep in sync
25043    /// with TrustedPacket.trusted_uid.
25044    ///
25045    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
25046    /// instead.
25047    #[derive(Clone, PartialEq, ::prost::Oneof)]
25048    pub enum OptionalTrustedUid {
25049        #[prost(int32, tag="3")]
25050        TrustedUid(i32),
25051    }
25052    /// Service-assigned identifier of the packet sequence this packet belongs to.
25053    /// Uniquely identifies a producer + writer pair within the tracing session. A
25054    /// value of zero denotes an invalid ID. Keep in sync with
25055    /// TrustedPacket.trusted_packet_sequence_id.
25056    #[derive(Clone, PartialEq, ::prost::Oneof)]
25057    pub enum OptionalTrustedPacketSequenceId {
25058        #[prost(uint32, tag="10")]
25059        TrustedPacketSequenceId(u32),
25060    }
25061}
25062// End of protos/perfetto/trace/trace_packet.proto
25063
25064// Begin of protos/perfetto/trace/trace.proto
25065
25066#[derive(Clone, PartialEq, ::prost::Message)]
25067pub struct Trace {
25068    #[prost(message, repeated, tag="1")]
25069    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
25070}
25071#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25072#[repr(i32)]
25073pub enum VmCursorEnum {
25074    VmCursorUnspecified = 0,
25075    VmCursorSrc = 1,
25076    VmCursorDst = 2,
25077    VmCursorBoth = 3,
25078}
25079impl VmCursorEnum {
25080    /// String value of the enum field names used in the ProtoBuf definition.
25081    ///
25082    /// The values are not transformed in any way and thus are considered stable
25083    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25084    pub fn as_str_name(&self) -> &'static str {
25085        match self {
25086            VmCursorEnum::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
25087            VmCursorEnum::VmCursorSrc => "VM_CURSOR_SRC",
25088            VmCursorEnum::VmCursorDst => "VM_CURSOR_DST",
25089            VmCursorEnum::VmCursorBoth => "VM_CURSOR_BOTH",
25090        }
25091    }
25092}
25093// End of protos/perfetto/common/tracing_service_state.proto
25094
25095// Begin of protos/perfetto/common/builtin_clock.proto
25096
25097/// Builtin clock domains used in Perfetto traces.
25098///
25099/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
25100/// representing the trace file's own timeline. Each trace file gets its own
25101/// instance (scoped by trace file index).
25102///
25103/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
25104/// fallback: if the first timestamp conversion uses a clock other than the
25105/// trace file clock and no explicit clock snapshot data exists, the trace time
25106/// is switched to BOOTTIME. This fallback does not fire for modern traces that
25107/// include ClockSnapshots or that only use the trace file clock directly.
25108///
25109/// The `primary_trace_clock` field in ClockSnapshot can definitively override
25110/// the trace time clock regardless of the above.
25111#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25112#[repr(i32)]
25113pub enum BuiltinClock {
25114    Unknown = 0,
25115    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
25116    Realtime = 1,
25117    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
25118    RealtimeCoarse = 2,
25119    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
25120    Monotonic = 3,
25121    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
25122    MonotonicCoarse = 4,
25123    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
25124    MonotonicRaw = 5,
25125    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
25126    /// For proto traces, this is used as a backwards-compatible fallback trace
25127    /// time clock when no explicit clock snapshots are present.
25128    Boottime = 6,
25129    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
25130    Tsc = 9,
25131    /// Corresponds to the perf event clock (PERF_CLOCK).
25132    Perf = 10,
25133    /// A synthetic clock representing the trace file's own timeline. Each trace
25134    /// file gets its own instance (scoped by trace file index). This is the
25135    /// default trace time clock before any clock snapshot or format-specific
25136    /// override takes effect.
25137    TraceFile = 11,
25138    MaxId = 63,
25139}
25140impl BuiltinClock {
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            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
25148            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
25149            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
25150            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
25151            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
25152            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
25153            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
25154            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
25155            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
25156            BuiltinClock::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
25157            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
25158        }
25159    }
25160}
25161// End of protos/perfetto/common/builtin_clock.proto
25162
25163// Begin of protos/perfetto/common/semantic_type.proto
25164
25165/// Semantic types for string fields. This tells the filter what kind of
25166/// data the field contains, so it can apply the right filtering rules.
25167/// See /rfcs/0011-subset-string-filter-rules.md for design details.
25168/// Introduced in: Perfetto v54.
25169#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25170#[repr(i32)]
25171pub enum SemanticType {
25172    Unspecified = 0,
25173    Atrace = 1,
25174    Job = 2,
25175    Wakelock = 3,
25176}
25177impl SemanticType {
25178    /// String value of the enum field names used in the ProtoBuf definition.
25179    ///
25180    /// The values are not transformed in any way and thus are considered stable
25181    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25182    pub fn as_str_name(&self) -> &'static str {
25183        match self {
25184            SemanticType::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
25185            SemanticType::Atrace => "SEMANTIC_TYPE_ATRACE",
25186            SemanticType::Job => "SEMANTIC_TYPE_JOB",
25187            SemanticType::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
25188        }
25189    }
25190}
25191// End of protos/perfetto/config/android/android_input_event_config.proto
25192
25193// Begin of protos/perfetto/common/android_log_constants.proto
25194
25195/// Values from NDK's android/log.h.
25196#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25197#[repr(i32)]
25198pub enum AndroidLogId {
25199    /// MAIN.
25200    LidDefault = 0,
25201    LidRadio = 1,
25202    LidEvents = 2,
25203    LidSystem = 3,
25204    LidCrash = 4,
25205    LidStats = 5,
25206    LidSecurity = 6,
25207    LidKernel = 7,
25208}
25209impl AndroidLogId {
25210    /// String value of the enum field names used in the ProtoBuf definition.
25211    ///
25212    /// The values are not transformed in any way and thus are considered stable
25213    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25214    pub fn as_str_name(&self) -> &'static str {
25215        match self {
25216            AndroidLogId::LidDefault => "LID_DEFAULT",
25217            AndroidLogId::LidRadio => "LID_RADIO",
25218            AndroidLogId::LidEvents => "LID_EVENTS",
25219            AndroidLogId::LidSystem => "LID_SYSTEM",
25220            AndroidLogId::LidCrash => "LID_CRASH",
25221            AndroidLogId::LidStats => "LID_STATS",
25222            AndroidLogId::LidSecurity => "LID_SECURITY",
25223            AndroidLogId::LidKernel => "LID_KERNEL",
25224        }
25225    }
25226}
25227#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25228#[repr(i32)]
25229pub enum AndroidLogPriority {
25230    PrioUnspecified = 0,
25231    /// _DEFAULT, but should never be seen in logs.
25232    PrioUnused = 1,
25233    PrioVerbose = 2,
25234    PrioDebug = 3,
25235    PrioInfo = 4,
25236    PrioWarn = 5,
25237    PrioError = 6,
25238    PrioFatal = 7,
25239}
25240impl AndroidLogPriority {
25241    /// String value of the enum field names used in the ProtoBuf definition.
25242    ///
25243    /// The values are not transformed in any way and thus are considered stable
25244    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25245    pub fn as_str_name(&self) -> &'static str {
25246        match self {
25247            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
25248            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
25249            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
25250            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
25251            AndroidLogPriority::PrioInfo => "PRIO_INFO",
25252            AndroidLogPriority::PrioWarn => "PRIO_WARN",
25253            AndroidLogPriority::PrioError => "PRIO_ERROR",
25254            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
25255        }
25256    }
25257}
25258// End of protos/perfetto/config/android/pixel_modem_config.proto
25259
25260// Begin of protos/perfetto/common/protolog_common.proto
25261
25262#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25263#[repr(i32)]
25264pub enum ProtoLogLevel {
25265    ProtologLevelUndefined = 0,
25266    ProtologLevelDebug = 1,
25267    ProtologLevelVerbose = 2,
25268    ProtologLevelInfo = 3,
25269    ProtologLevelWarn = 4,
25270    ProtologLevelError = 5,
25271    ProtologLevelWtf = 6,
25272}
25273impl ProtoLogLevel {
25274    /// String value of the enum field names used in the ProtoBuf definition.
25275    ///
25276    /// The values are not transformed in any way and thus are considered stable
25277    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25278    pub fn as_str_name(&self) -> &'static str {
25279        match self {
25280            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
25281            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
25282            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
25283            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
25284            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
25285            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
25286            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
25287        }
25288    }
25289}
25290// End of protos/perfetto/config/qnx/qnx_config.proto
25291
25292// Begin of protos/perfetto/config/statsd/atom_ids.proto
25293
25294/// This enum is obtained by post-processing
25295/// AOSP/frameworks/proto_logging/stats/atoms.proto through
25296/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
25297/// enum value for each proto field defined in the upstream atoms.proto.
25298#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25299#[repr(i32)]
25300pub enum AtomId {
25301    AtomUnspecified = 0,
25302    AtomBleScanStateChanged = 2,
25303    AtomProcessStateChanged = 3,
25304    AtomBleScanResultReceived = 4,
25305    AtomSensorStateChanged = 5,
25306    AtomGpsScanStateChanged = 6,
25307    AtomSyncStateChanged = 7,
25308    AtomScheduledJobStateChanged = 8,
25309    AtomScreenBrightnessChanged = 9,
25310    AtomWakelockStateChanged = 10,
25311    AtomLongPartialWakelockStateChanged = 11,
25312    AtomMobileRadioPowerStateChanged = 12,
25313    AtomWifiRadioPowerStateChanged = 13,
25314    AtomActivityManagerSleepStateChanged = 14,
25315    AtomMemoryFactorStateChanged = 15,
25316    AtomExcessiveCpuUsageReported = 16,
25317    AtomCachedKillReported = 17,
25318    AtomProcessMemoryStatReported = 18,
25319    AtomLauncherEvent = 19,
25320    AtomBatterySaverModeStateChanged = 20,
25321    AtomDeviceIdleModeStateChanged = 21,
25322    AtomDeviceIdlingModeStateChanged = 22,
25323    AtomAudioStateChanged = 23,
25324    AtomMediaCodecStateChanged = 24,
25325    AtomCameraStateChanged = 25,
25326    AtomFlashlightStateChanged = 26,
25327    AtomUidProcessStateChanged = 27,
25328    AtomProcessLifeCycleStateChanged = 28,
25329    AtomScreenStateChanged = 29,
25330    AtomBatteryLevelChanged = 30,
25331    AtomChargingStateChanged = 31,
25332    AtomPluggedStateChanged = 32,
25333    AtomInteractiveStateChanged = 33,
25334    AtomTouchEventReported = 34,
25335    AtomWakeupAlarmOccurred = 35,
25336    AtomKernelWakeupReported = 36,
25337    AtomWifiLockStateChanged = 37,
25338    AtomWifiSignalStrengthChanged = 38,
25339    AtomWifiScanStateChanged = 39,
25340    AtomPhoneSignalStrengthChanged = 40,
25341    AtomSettingChanged = 41,
25342    AtomActivityForegroundStateChanged = 42,
25343    AtomIsolatedUidChanged = 43,
25344    AtomPacketWakeupOccurred = 44,
25345    AtomWallClockTimeShifted = 45,
25346    AtomAnomalyDetected = 46,
25347    AtomAppBreadcrumbReported = 47,
25348    AtomAppStartOccurred = 48,
25349    AtomAppStartCanceled = 49,
25350    AtomAppStartFullyDrawn = 50,
25351    AtomLmkKillOccurred = 51,
25352    AtomPictureInPictureStateChanged = 52,
25353    AtomWifiMulticastLockStateChanged = 53,
25354    AtomAppStartMemoryStateCaptured = 55,
25355    AtomShutdownSequenceReported = 56,
25356    AtomBootSequenceReported = 57,
25357    AtomOverlayStateChanged = 59,
25358    AtomForegroundServiceStateChanged = 60,
25359    AtomCallStateChanged = 61,
25360    AtomKeyguardStateChanged = 62,
25361    AtomKeyguardBouncerStateChanged = 63,
25362    AtomKeyguardBouncerPasswordEntered = 64,
25363    AtomAppDied = 65,
25364    AtomResourceConfigurationChanged = 66,
25365    AtomBluetoothEnabledStateChanged = 67,
25366    AtomBluetoothConnectionStateChanged = 68,
25367    AtomGpsSignalQualityChanged = 69,
25368    AtomUsbConnectorStateChanged = 70,
25369    AtomSpeakerImpedanceReported = 71,
25370    AtomHardwareFailed = 72,
25371    AtomPhysicalDropDetected = 73,
25372    AtomChargeCyclesReported = 74,
25373    AtomMobileConnectionStateChanged = 75,
25374    AtomMobileRadioTechnologyChanged = 76,
25375    AtomUsbDeviceAttached = 77,
25376    AtomAppCrashOccurred = 78,
25377    AtomAnrOccurred = 79,
25378    AtomWtfOccurred = 80,
25379    AtomLowMemReported = 81,
25380    AtomGenericAtom = 82,
25381    AtomVibratorStateChanged = 84,
25382    AtomDeferredJobStatsReported = 85,
25383    AtomThermalThrottling = 86,
25384    AtomBiometricAcquired = 87,
25385    AtomBiometricAuthenticated = 88,
25386    AtomBiometricErrorOccurred = 89,
25387    AtomUiEventReported = 90,
25388    AtomBatteryHealthSnapshot = 91,
25389    AtomSlowIo = 92,
25390    AtomBatteryCausedShutdown = 93,
25391    AtomPhoneServiceStateChanged = 94,
25392    AtomPhoneStateChanged = 95,
25393    AtomUserRestrictionChanged = 96,
25394    AtomSettingsUiChanged = 97,
25395    AtomConnectivityStateChanged = 98,
25396    AtomServiceStateChanged = 99,
25397    AtomServiceLaunchReported = 100,
25398    AtomFlagFlipUpdateOccurred = 101,
25399    AtomBinaryPushStateChanged = 102,
25400    AtomDevicePolicyEvent = 103,
25401    AtomDocsUiFileOpCanceled = 104,
25402    AtomDocsUiFileOpCopyMoveModeReported = 105,
25403    AtomDocsUiFileOpFailure = 106,
25404    AtomDocsUiProviderFileOp = 107,
25405    AtomDocsUiInvalidScopedAccessRequest = 108,
25406    AtomDocsUiLaunchReported = 109,
25407    AtomDocsUiRootVisited = 110,
25408    AtomDocsUiStartupMs = 111,
25409    AtomDocsUiUserActionReported = 112,
25410    AtomWifiEnabledStateChanged = 113,
25411    AtomWifiRunningStateChanged = 114,
25412    AtomAppCompacted = 115,
25413    AtomNetworkDnsEventReported = 116,
25414    AtomDocsUiPickerLaunchedFromReported = 117,
25415    AtomDocsUiPickResultReported = 118,
25416    AtomDocsUiSearchModeReported = 119,
25417    AtomDocsUiSearchTypeReported = 120,
25418    AtomDataStallEvent = 121,
25419    AtomRescuePartyResetReported = 122,
25420    AtomSignedConfigReported = 123,
25421    AtomGnssNiEventReported = 124,
25422    AtomBluetoothLinkLayerConnectionEvent = 125,
25423    AtomBluetoothAclConnectionStateChanged = 126,
25424    AtomBluetoothScoConnectionStateChanged = 127,
25425    AtomAppDowngraded = 128,
25426    AtomAppOptimizedAfterDowngraded = 129,
25427    AtomLowStorageStateChanged = 130,
25428    AtomGnssNfwNotificationReported = 131,
25429    AtomGnssConfigurationReported = 132,
25430    AtomUsbPortOverheatEventReported = 133,
25431    AtomNfcErrorOccurred = 134,
25432    AtomNfcStateChanged = 135,
25433    AtomNfcBeamOccurred = 136,
25434    AtomNfcCardemulationOccurred = 137,
25435    AtomNfcTagOccurred = 138,
25436    AtomNfcHceTransactionOccurred = 139,
25437    AtomSeStateChanged = 140,
25438    AtomSeOmapiReported = 141,
25439    AtomBroadcastDispatchLatencyReported = 142,
25440    AtomAttentionManagerServiceResultReported = 143,
25441    AtomAdbConnectionChanged = 144,
25442    AtomSpeechDspStatReported = 145,
25443    AtomUsbContaminantReported = 146,
25444    AtomWatchdogRollbackOccurred = 147,
25445    AtomBiometricSystemHealthIssueDetected = 148,
25446    AtomBubbleUiChanged = 149,
25447    AtomScheduledJobConstraintChanged = 150,
25448    AtomBluetoothActiveDeviceChanged = 151,
25449    AtomBluetoothA2dpPlaybackStateChanged = 152,
25450    AtomBluetoothA2dpCodecConfigChanged = 153,
25451    AtomBluetoothA2dpCodecCapabilityChanged = 154,
25452    AtomBluetoothA2dpAudioUnderrunReported = 155,
25453    AtomBluetoothA2dpAudioOverrunReported = 156,
25454    AtomBluetoothDeviceRssiReported = 157,
25455    AtomBluetoothDeviceFailedContactCounterReported = 158,
25456    AtomBluetoothDeviceTxPowerLevelReported = 159,
25457    AtomBluetoothHciTimeoutReported = 160,
25458    AtomBluetoothQualityReportReported = 161,
25459    AtomBluetoothDeviceInfoReported = 162,
25460    AtomBluetoothRemoteVersionInfoReported = 163,
25461    AtomBluetoothSdpAttributeReported = 164,
25462    AtomBluetoothBondStateChanged = 165,
25463    AtomBluetoothClassicPairingEventReported = 166,
25464    AtomBluetoothSmpPairingEventReported = 167,
25465    AtomScreenTimeoutExtensionReported = 168,
25466    AtomProcessStartTime = 169,
25467    AtomPermissionGrantRequestResultReported = 170,
25468    AtomBluetoothSocketConnectionStateChanged = 171,
25469    AtomDeviceIdentifierAccessDenied = 172,
25470    AtomBubbleDeveloperErrorReported = 173,
25471    AtomAssistGestureStageReported = 174,
25472    AtomAssistGestureFeedbackReported = 175,
25473    AtomAssistGestureProgressReported = 176,
25474    AtomTouchGestureClassified = 177,
25475    AtomHiddenApiUsed = 178,
25476    AtomStyleUiChanged = 179,
25477    AtomPrivacyIndicatorsInteracted = 180,
25478    AtomAppInstallOnExternalStorageReported = 181,
25479    AtomNetworkStackReported = 182,
25480    AtomAppMovedStorageReported = 183,
25481    AtomBiometricEnrolled = 184,
25482    AtomSystemServerWatchdogOccurred = 185,
25483    AtomTombStoneOccurred = 186,
25484    AtomBluetoothClassOfDeviceReported = 187,
25485    AtomIntelligenceEventReported = 188,
25486    AtomThermalThrottlingSeverityStateChanged = 189,
25487    AtomRoleRequestResultReported = 190,
25488    AtomMediametricsAudiopolicyReported = 191,
25489    AtomMediametricsAudiorecordReported = 192,
25490    AtomMediametricsAudiothreadReported = 193,
25491    AtomMediametricsAudiotrackReported = 194,
25492    AtomMediametricsCodecReported = 195,
25493    AtomMediametricsDrmWidevineReported = 196,
25494    AtomMediametricsExtractorReported = 197,
25495    AtomMediametricsMediadrmReported = 198,
25496    AtomMediametricsNuplayerReported = 199,
25497    AtomMediametricsRecorderReported = 200,
25498    AtomMediametricsDrmmanagerReported = 201,
25499    AtomCarPowerStateChanged = 203,
25500    AtomGarageModeInfo = 204,
25501    AtomTestAtomReported = 205,
25502    AtomContentCaptureCallerMismatchReported = 206,
25503    AtomContentCaptureServiceEvents = 207,
25504    AtomContentCaptureSessionEvents = 208,
25505    AtomContentCaptureFlushed = 209,
25506    AtomLocationManagerApiUsageReported = 210,
25507    AtomReviewPermissionsFragmentResultReported = 211,
25508    AtomRuntimePermissionsUpgradeResult = 212,
25509    AtomGrantPermissionsActivityButtonActions = 213,
25510    AtomLocationAccessCheckNotificationAction = 214,
25511    AtomAppPermissionFragmentActionReported = 215,
25512    AtomAppPermissionFragmentViewed = 216,
25513    AtomAppPermissionsFragmentViewed = 217,
25514    AtomPermissionAppsFragmentViewed = 218,
25515    AtomTextSelectionEvent = 219,
25516    AtomTextLinkifyEvent = 220,
25517    AtomConversationActionsEvent = 221,
25518    AtomLanguageDetectionEvent = 222,
25519    AtomExclusionRectStateChanged = 223,
25520    AtomBackGestureReportedReported = 224,
25521    AtomUpdateEngineUpdateAttemptReported = 225,
25522    AtomUpdateEngineSuccessfulUpdateReported = 226,
25523    AtomCameraActionEvent = 227,
25524    AtomAppCompatibilityChangeReported = 228,
25525    AtomPerfettoUploaded = 229,
25526    AtomVmsClientConnectionStateChanged = 230,
25527    AtomMediaProviderScanOccurred = 233,
25528    AtomMediaContentDeleted = 234,
25529    AtomMediaProviderPermissionRequested = 235,
25530    AtomMediaProviderSchemaChanged = 236,
25531    AtomMediaProviderIdleMaintenanceFinished = 237,
25532    AtomRebootEscrowRecoveryReported = 238,
25533    AtomBootTimeEventDurationReported = 239,
25534    AtomBootTimeEventElapsedTimeReported = 240,
25535    AtomBootTimeEventUtcTimeReported = 241,
25536    AtomBootTimeEventErrorCodeReported = 242,
25537    AtomUserspaceRebootReported = 243,
25538    AtomNotificationReported = 244,
25539    AtomNotificationPanelReported = 245,
25540    AtomNotificationChannelModified = 246,
25541    AtomIntegrityCheckResultReported = 247,
25542    AtomIntegrityRulesPushed = 248,
25543    AtomCbMessageReported = 249,
25544    AtomCbMessageError = 250,
25545    AtomWifiHealthStatReported = 251,
25546    AtomWifiFailureStatReported = 252,
25547    AtomWifiConnectionResultReported = 253,
25548    AtomAppFreezeChanged = 254,
25549    AtomSnapshotMergeReported = 255,
25550    AtomForegroundServiceAppOpSessionEnded = 256,
25551    AtomDisplayJankReported = 257,
25552    AtomAppStandbyBucketChanged = 258,
25553    AtomSharesheetStarted = 259,
25554    AtomRankingSelected = 260,
25555    AtomTvsettingsUiInteracted = 261,
25556    AtomLauncherSnapshot = 262,
25557    AtomPackageInstallerV2Reported = 263,
25558    AtomUserLifecycleJourneyReported = 264,
25559    AtomUserLifecycleEventOccurred = 265,
25560    AtomAccessibilityShortcutReported = 266,
25561    AtomAccessibilityServiceReported = 267,
25562    AtomDocsUiDragAndDropReported = 268,
25563    AtomAppUsageEventOccurred = 269,
25564    AtomAutoRevokeNotificationClicked = 270,
25565    AtomAutoRevokeFragmentAppViewed = 271,
25566    AtomAutoRevokedAppInteraction = 272,
25567    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
25568    AtomEvsUsageStatsReported = 274,
25569    AtomAudioPowerUsageDataReported = 275,
25570    AtomTvTunerStateChanged = 276,
25571    AtomMediaoutputOpSwitchReported = 277,
25572    AtomCbMessageFiltered = 278,
25573    AtomTvTunerDvrStatus = 279,
25574    AtomTvCasSessionOpenStatus = 280,
25575    AtomAssistantInvocationReported = 281,
25576    AtomDisplayWakeReported = 282,
25577    AtomCarUserHalModifyUserRequestReported = 283,
25578    AtomCarUserHalModifyUserResponseReported = 284,
25579    AtomCarUserHalPostSwitchResponseReported = 285,
25580    AtomCarUserHalInitialUserInfoRequestReported = 286,
25581    AtomCarUserHalInitialUserInfoResponseReported = 287,
25582    AtomCarUserHalUserAssociationRequestReported = 288,
25583    AtomCarUserHalSetUserAssociationResponseReported = 289,
25584    AtomNetworkIpProvisioningReported = 290,
25585    AtomNetworkDhcpRenewReported = 291,
25586    AtomNetworkValidationReported = 292,
25587    AtomNetworkStackQuirkReported = 293,
25588    AtomMediametricsAudiorecorddeviceusageReported = 294,
25589    AtomMediametricsAudiothreaddeviceusageReported = 295,
25590    AtomMediametricsAudiotrackdeviceusageReported = 296,
25591    AtomMediametricsAudiodeviceconnectionReported = 297,
25592    AtomBlobCommitted = 298,
25593    AtomBlobLeased = 299,
25594    AtomBlobOpened = 300,
25595    AtomContactsProviderStatusReported = 301,
25596    AtomKeystoreKeyEventReported = 302,
25597    AtomNetworkTetheringReported = 303,
25598    AtomImeTouchReported = 304,
25599    AtomUiInteractionFrameInfoReported = 305,
25600    AtomUiActionLatencyReported = 306,
25601    AtomWifiDisconnectReported = 307,
25602    AtomWifiConnectionStateChanged = 308,
25603    AtomHdmiCecActiveSourceChanged = 309,
25604    AtomHdmiCecMessageReported = 310,
25605    AtomAirplaneMode = 311,
25606    AtomModemRestart = 312,
25607    AtomCarrierIdMismatchReported = 313,
25608    AtomCarrierIdTableUpdated = 314,
25609    AtomDataStallRecoveryReported = 315,
25610    AtomMediametricsMediaparserReported = 316,
25611    AtomTlsHandshakeReported = 317,
25612    AtomTextClassifierApiUsageReported = 318,
25613    AtomCarWatchdogKillStatsReported = 319,
25614    AtomMediametricsPlaybackReported = 320,
25615    AtomMediaNetworkInfoChanged = 321,
25616    AtomMediaPlaybackStateChanged = 322,
25617    AtomMediaPlaybackErrorReported = 323,
25618    AtomMediaPlaybackTrackChanged = 324,
25619    AtomWifiScanReported = 325,
25620    AtomWifiPnoScanReported = 326,
25621    AtomTifTuneChanged = 327,
25622    AtomAutoRotateReported = 328,
25623    AtomPerfettoTrigger = 329,
25624    AtomTranscodingData = 330,
25625    AtomImsServiceEntitlementUpdated = 331,
25626    AtomDeviceRotated = 333,
25627    AtomSimSpecificSettingsRestored = 334,
25628    AtomTextClassifierDownloadReported = 335,
25629    AtomPinStorageEvent = 336,
25630    AtomFaceDownReported = 337,
25631    AtomBluetoothHalCrashReasonReported = 338,
25632    AtomRebootEscrowPreparationReported = 339,
25633    AtomRebootEscrowLskfCaptureReported = 340,
25634    AtomRebootEscrowRebootReported = 341,
25635    AtomBinderLatencyReported = 342,
25636    AtomMediametricsAaudiostreamReported = 343,
25637    AtomMediaTranscodingSessionEnded = 344,
25638    AtomMagnificationUsageReported = 345,
25639    AtomMagnificationModeWithImeOnReported = 346,
25640    AtomAppSearchCallStatsReported = 347,
25641    AtomAppSearchPutDocumentStatsReported = 348,
25642    AtomDeviceControlChanged = 349,
25643    AtomDeviceStateChanged = 350,
25644    AtomInputdeviceRegistered = 351,
25645    AtomSmartspaceCardReported = 352,
25646    AtomAuthPromptAuthenticateInvoked = 353,
25647    AtomAuthManagerCanAuthenticateInvoked = 354,
25648    AtomAuthEnrollActionInvoked = 355,
25649    AtomAuthDeprecatedApiUsed = 356,
25650    AtomUnattendedRebootOccurred = 357,
25651    AtomLongRebootBlockingReported = 358,
25652    AtomLocationTimeZoneProviderStateChanged = 359,
25653    AtomFdtrackEventOccurred = 364,
25654    AtomTimeoutAutoExtendedReported = 365,
25655    AtomAlarmBatchDelivered = 367,
25656    AtomAlarmScheduled = 368,
25657    AtomCarWatchdogIoOveruseStatsReported = 369,
25658    AtomUserLevelHibernationStateChanged = 370,
25659    AtomAppSearchInitializeStatsReported = 371,
25660    AtomAppSearchQueryStatsReported = 372,
25661    AtomAppProcessDied = 373,
25662    AtomNetworkIpReachabilityMonitorReported = 374,
25663    AtomSlowInputEventReported = 375,
25664    AtomAnrOccurredProcessingStarted = 376,
25665    AtomAppSearchRemoveStatsReported = 377,
25666    AtomMediaCodecReported = 378,
25667    AtomPermissionUsageFragmentInteraction = 379,
25668    AtomPermissionDetailsInteraction = 380,
25669    AtomPrivacySensorToggleInteraction = 381,
25670    AtomPrivacyToggleDialogInteraction = 382,
25671    AtomAppSearchOptimizeStatsReported = 383,
25672    AtomNonA11yToolServiceWarningReport = 384,
25673    AtomAppCompatStateChanged = 386,
25674    AtomSizeCompatRestartButtonEventReported = 387,
25675    AtomSplitscreenUiChanged = 388,
25676    AtomNetworkDnsHandshakeReported = 389,
25677    AtomBluetoothCodePathCounter = 390,
25678    AtomBluetoothLeBatchScanReportDelay = 392,
25679    AtomAccessibilityFloatingMenuUiChanged = 393,
25680    AtomNeuralnetworksCompilationCompleted = 394,
25681    AtomNeuralnetworksExecutionCompleted = 395,
25682    AtomNeuralnetworksCompilationFailed = 396,
25683    AtomNeuralnetworksExecutionFailed = 397,
25684    AtomContextHubBooted = 398,
25685    AtomContextHubRestarted = 399,
25686    AtomContextHubLoadedNanoappSnapshotReported = 400,
25687    AtomChreCodeDownloadTransacted = 401,
25688    AtomUwbSessionInited = 402,
25689    AtomUwbSessionClosed = 403,
25690    AtomUwbFirstRangingReceived = 404,
25691    AtomUwbRangingMeasurementReceived = 405,
25692    AtomTextClassifierDownloadWorkScheduled = 406,
25693    AtomTextClassifierDownloadWorkCompleted = 407,
25694    AtomClipboardCleared = 408,
25695    AtomVmCreationRequested = 409,
25696    AtomNearbyDeviceScanStateChanged = 410,
25697    AtomApplicationLocalesChanged = 412,
25698    AtomMediametricsAudiotrackstatusReported = 413,
25699    AtomFoldStateDurationReported = 414,
25700    AtomLocationTimeZoneProviderControllerStateChanged = 415,
25701    AtomDisplayHbmStateChanged = 416,
25702    AtomDisplayHbmBrightnessChanged = 417,
25703    AtomPersistentUriPermissionsFlushed = 418,
25704    AtomEarlyBootCompOsArtifactsCheckReported = 419,
25705    AtomVbmetaDigestReported = 420,
25706    AtomApexInfoGathered = 421,
25707    AtomPvmInfoGathered = 422,
25708    AtomWearSettingsUiInteracted = 423,
25709    AtomTracingServiceReportEvent = 424,
25710    AtomMediametricsAudiorecordstatusReported = 425,
25711    AtomLauncherLatency = 426,
25712    AtomDropboxEntryDropped = 427,
25713    AtomWifiP2pConnectionReported = 428,
25714    AtomGameStateChanged = 429,
25715    AtomHotwordDetectorCreateRequested = 430,
25716    AtomHotwordDetectionServiceInitResultReported = 431,
25717    AtomHotwordDetectionServiceRestarted = 432,
25718    AtomHotwordDetectorKeyphraseTriggered = 433,
25719    AtomHotwordDetectorEvents = 434,
25720    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
25721    AtomContactsIndexerUpdateStatsReported = 440,
25722    AtomAppBackgroundRestrictionsInfo = 441,
25723    AtomMmsSmsProviderGetThreadIdFailed = 442,
25724    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
25725    AtomPermissionReminderNotificationInteracted = 444,
25726    AtomRecentPermissionDecisionsInteracted = 445,
25727    AtomGnssPsdsDownloadReported = 446,
25728    AtomLeAudioConnectionSessionReported = 447,
25729    AtomLeAudioBroadcastSessionReported = 448,
25730    AtomDreamUiEventReported = 449,
25731    AtomTaskManagerEventReported = 450,
25732    AtomCdmAssociationAction = 451,
25733    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
25734    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
25735    AtomAccessibilityTextReadingOptionsChanged = 454,
25736    AtomWifiSetupFailureCrashReported = 455,
25737    AtomUwbDeviceErrorReported = 456,
25738    AtomIsolatedCompilationScheduled = 457,
25739    AtomIsolatedCompilationEnded = 458,
25740    AtomOnsOpportunisticEsimProvisioningComplete = 459,
25741    AtomSystemServerPreWatchdogOccurred = 460,
25742    AtomTelephonyAnomalyDetected = 461,
25743    AtomLetterboxPositionChanged = 462,
25744    AtomRemoteKeyProvisioningAttempt = 463,
25745    AtomRemoteKeyProvisioningNetworkInfo = 464,
25746    AtomRemoteKeyProvisioningTiming = 465,
25747    AtomMediaoutputOpInteractionReport = 466,
25748    AtomSyncExemptionOccurred = 468,
25749    AtomAutofillPresentationEventReported = 469,
25750    AtomDockStateChanged = 470,
25751    AtomSafetySourceStateCollected = 471,
25752    AtomSafetyCenterSystemEventReported = 472,
25753    AtomSafetyCenterInteractionReported = 473,
25754    AtomSettingsProviderSettingChanged = 474,
25755    AtomBroadcastDeliveryEventReported = 475,
25756    AtomServiceRequestEventReported = 476,
25757    AtomProviderAcquisitionEventReported = 477,
25758    AtomBluetoothDeviceNameReported = 478,
25759    AtomCbConfigUpdated = 479,
25760    AtomCbModuleErrorReported = 480,
25761    AtomCbServiceFeatureChanged = 481,
25762    AtomCbReceiverFeatureChanged = 482,
25763    AtomPrivacySignalNotificationInteraction = 484,
25764    AtomPrivacySignalIssueCardInteraction = 485,
25765    AtomPrivacySignalsJobFailure = 486,
25766    AtomVibrationReported = 487,
25767    AtomUwbRangingStart = 489,
25768    AtomAppCompactedV2 = 491,
25769    AtomDisplayBrightnessChanged = 494,
25770    AtomActivityActionBlocked = 495,
25771    AtomNetworkDnsServerSupportReported = 504,
25772    AtomVmBooted = 505,
25773    AtomVmExited = 506,
25774    AtomAmbientBrightnessStatsReported = 507,
25775    AtomMediametricsSpatializercapabilitiesReported = 508,
25776    AtomMediametricsSpatializerdeviceenabledReported = 509,
25777    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
25778    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
25779    AtomHearingAidInfoReported = 513,
25780    AtomDeviceWideJobConstraintChanged = 514,
25781    AtomAmbientModeChanged = 515,
25782    AtomAnrLatencyReported = 516,
25783    AtomResourceApiInfo = 517,
25784    AtomSystemDefaultNetworkChanged = 518,
25785    AtomIwlanSetupDataCallResultReported = 519,
25786    AtomIwlanPdnDisconnectedReasonReported = 520,
25787    AtomAirplaneModeSessionReported = 521,
25788    AtomVmCpuStatusReported = 522,
25789    AtomVmMemStatusReported = 523,
25790    AtomPackageInstallationSessionReported = 524,
25791    AtomDefaultNetworkRematchInfo = 525,
25792    AtomNetworkSelectionPerformance = 526,
25793    AtomNetworkNsdReported = 527,
25794    AtomBluetoothDisconnectionReasonReported = 529,
25795    AtomBluetoothLocalVersionsReported = 530,
25796    AtomBluetoothRemoteSupportedFeaturesReported = 531,
25797    AtomBluetoothLocalSupportedFeaturesReported = 532,
25798    AtomBluetoothGattAppInfo = 533,
25799    AtomBrightnessConfigurationUpdated = 534,
25800    AtomWearMediaOutputSwitcherLaunched = 538,
25801    AtomWearMediaOutputSwitcherFinished = 539,
25802    AtomWearMediaOutputSwitcherConnectionReported = 540,
25803    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
25804    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
25805    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
25806    AtomPackageManagerSnapshotReported = 544,
25807    AtomPackageManagerAppsFilterCacheBuildReported = 545,
25808    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
25809    AtomLauncherImpressionEvent = 547,
25810    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
25811    AtomWsWatchFaceEdited = 551,
25812    AtomWsWatchFaceFavoriteActionReported = 552,
25813    AtomWsWatchFaceSetActionReported = 553,
25814    AtomPackageUninstallationReported = 554,
25815    AtomGameModeChanged = 555,
25816    AtomGameModeConfigurationChanged = 556,
25817    AtomBedtimeModeStateChanged = 557,
25818    AtomNetworkSliceSessionEnded = 558,
25819    AtomNetworkSliceDailyDataUsageReported = 559,
25820    AtomNfcTagTypeOccurred = 560,
25821    AtomNfcAidConflictOccurred = 561,
25822    AtomNfcReaderConflictOccurred = 562,
25823    AtomWsTileListChanged = 563,
25824    AtomGetTypeAccessedWithoutPermission = 564,
25825    AtomMobileBundledAppInfoGathered = 566,
25826    AtomWsWatchFaceComplicationSetChanged = 567,
25827    AtomMediaDrmCreated = 568,
25828    AtomMediaDrmErrored = 569,
25829    AtomMediaDrmSessionOpened = 570,
25830    AtomMediaDrmSessionClosed = 571,
25831    AtomUserSelectedResolution = 572,
25832    AtomUnsafeIntentEventReported = 573,
25833    AtomPerformanceHintSessionReported = 574,
25834    AtomMediametricsMidiDeviceCloseReported = 576,
25835    AtomBiometricTouchReported = 577,
25836    AtomHotwordAudioEgressEventReported = 578,
25837    AtomLocationEnabledStateChanged = 580,
25838    AtomImeRequestFinished = 581,
25839    AtomUsbComplianceWarningsReported = 582,
25840    AtomAppSupportedLocalesChanged = 583,
25841    AtomMediaProviderVolumeRecoveryReported = 586,
25842    AtomBiometricPropertiesCollected = 587,
25843    AtomKernelWakeupAttributed = 588,
25844    AtomScreenStateChangedV2 = 589,
25845    AtomWsBackupActionReported = 590,
25846    AtomWsRestoreActionReported = 591,
25847    AtomDeviceLogAccessEventReported = 592,
25848    AtomMediaSessionUpdated = 594,
25849    AtomWearOobeStateChanged = 595,
25850    AtomWsNotificationUpdated = 596,
25851    AtomNetworkValidationFailureStatsDailyReported = 601,
25852    AtomWsComplicationTapped = 602,
25853    AtomWsNotificationBlocking = 780,
25854    AtomWsNotificationBridgemodeUpdated = 822,
25855    AtomWsNotificationDismissalActioned = 823,
25856    AtomWsNotificationActioned = 824,
25857    AtomWsNotificationLatency = 880,
25858    AtomWifiBytesTransfer = 10000,
25859    AtomWifiBytesTransferByFgBg = 10001,
25860    AtomMobileBytesTransfer = 10002,
25861    AtomMobileBytesTransferByFgBg = 10003,
25862    AtomBluetoothBytesTransfer = 10006,
25863    AtomKernelWakelock = 10004,
25864    AtomSubsystemSleepState = 10005,
25865    AtomCpuTimePerUid = 10009,
25866    AtomCpuTimePerUidFreq = 10010,
25867    AtomWifiActivityInfo = 10011,
25868    AtomModemActivityInfo = 10012,
25869    AtomBluetoothActivityInfo = 10007,
25870    AtomProcessMemoryState = 10013,
25871    AtomSystemElapsedRealtime = 10014,
25872    AtomSystemUptime = 10015,
25873    AtomCpuActiveTime = 10016,
25874    AtomCpuClusterTime = 10017,
25875    AtomDiskSpace = 10018,
25876    AtomRemainingBatteryCapacity = 10019,
25877    AtomFullBatteryCapacity = 10020,
25878    AtomTemperature = 10021,
25879    AtomBinderCalls = 10022,
25880    AtomBinderCallsExceptions = 10023,
25881    AtomLooperStats = 10024,
25882    AtomDiskStats = 10025,
25883    AtomDirectoryUsage = 10026,
25884    AtomAppSize = 10027,
25885    AtomCategorySize = 10028,
25886    AtomProcStats = 10029,
25887    AtomBatteryVoltage = 10030,
25888    AtomNumFingerprintsEnrolled = 10031,
25889    AtomDiskIo = 10032,
25890    AtomPowerProfile = 10033,
25891    AtomProcStatsPkgProc = 10034,
25892    AtomProcessCpuTime = 10035,
25893    AtomCpuTimePerThreadFreq = 10037,
25894    AtomOnDevicePowerMeasurement = 10038,
25895    AtomDeviceCalculatedPowerUse = 10039,
25896    AtomProcessMemoryHighWaterMark = 10042,
25897    AtomBatteryLevel = 10043,
25898    AtomBuildInformation = 10044,
25899    AtomBatteryCycleCount = 10045,
25900    AtomDebugElapsedClock = 10046,
25901    AtomDebugFailingElapsedClock = 10047,
25902    AtomNumFacesEnrolled = 10048,
25903    AtomRoleHolder = 10049,
25904    AtomDangerousPermissionState = 10050,
25905    AtomTrainInfo = 10051,
25906    AtomTimeZoneDataInfo = 10052,
25907    AtomExternalStorageInfo = 10053,
25908    AtomGpuStatsGlobalInfo = 10054,
25909    AtomGpuStatsAppInfo = 10055,
25910    AtomSystemIonHeapSize = 10056,
25911    AtomAppsOnExternalStorageInfo = 10057,
25912    AtomFaceSettings = 10058,
25913    AtomCoolingDevice = 10059,
25914    AtomAppOps = 10060,
25915    AtomProcessSystemIonHeapSize = 10061,
25916    AtomSurfaceflingerStatsGlobalInfo = 10062,
25917    AtomSurfaceflingerStatsLayerInfo = 10063,
25918    AtomProcessMemorySnapshot = 10064,
25919    AtomVmsClientStats = 10065,
25920    AtomNotificationRemoteViews = 10066,
25921    AtomDangerousPermissionStateSampled = 10067,
25922    AtomGraphicsStats = 10068,
25923    AtomRuntimeAppOpAccess = 10069,
25924    AtomIonHeapSize = 10070,
25925    AtomPackageNotificationPreferences = 10071,
25926    AtomPackageNotificationChannelPreferences = 10072,
25927    AtomPackageNotificationChannelGroupPreferences = 10073,
25928    AtomGnssStats = 10074,
25929    AtomAttributedAppOps = 10075,
25930    AtomVoiceCallSession = 10076,
25931    AtomVoiceCallRatUsage = 10077,
25932    AtomSimSlotState = 10078,
25933    AtomSupportedRadioAccessFamily = 10079,
25934    AtomSettingSnapshot = 10080,
25935    AtomBlobInfo = 10081,
25936    AtomDataUsageBytesTransfer = 10082,
25937    AtomBytesTransferByTagAndMetered = 10083,
25938    AtomDndModeRule = 10084,
25939    AtomGeneralExternalStorageAccessStats = 10085,
25940    AtomIncomingSms = 10086,
25941    AtomOutgoingSms = 10087,
25942    AtomCarrierIdTableVersion = 10088,
25943    AtomDataCallSession = 10089,
25944    AtomCellularServiceState = 10090,
25945    AtomCellularDataServiceSwitch = 10091,
25946    AtomSystemMemory = 10092,
25947    AtomImsRegistrationTermination = 10093,
25948    AtomImsRegistrationStats = 10094,
25949    AtomCpuTimePerClusterFreq = 10095,
25950    AtomCpuCyclesPerUidCluster = 10096,
25951    AtomDeviceRotatedData = 10097,
25952    AtomCpuCyclesPerThreadGroupCluster = 10098,
25953    AtomMediaDrmActivityInfo = 10099,
25954    AtomOemManagedBytesTransfer = 10100,
25955    AtomGnssPowerStats = 10101,
25956    AtomTimeZoneDetectorState = 10102,
25957    AtomKeystore2StorageStats = 10103,
25958    AtomRkpPoolStats = 10104,
25959    AtomProcessDmabufMemory = 10105,
25960    AtomPendingAlarmInfo = 10106,
25961    AtomUserLevelHibernatedApps = 10107,
25962    AtomLauncherLayoutSnapshot = 10108,
25963    AtomGlobalHibernatedApps = 10109,
25964    AtomInputEventLatencySketch = 10110,
25965    AtomBatteryUsageStatsBeforeReset = 10111,
25966    AtomBatteryUsageStatsSinceReset = 10112,
25967    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
25968    AtomInstalledIncrementalPackage = 10114,
25969    AtomTelephonyNetworkRequests = 10115,
25970    AtomAppSearchStorageInfo = 10116,
25971    AtomVmstat = 10117,
25972    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
25973    AtomKeystore2KeyCreationWithAuthInfo = 10119,
25974    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
25975    AtomKeystore2AtomWithOverflow = 10121,
25976    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
25977    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
25978    AtomRkpErrorStats = 10124,
25979    AtomKeystore2CrashStats = 10125,
25980    AtomVendorApexInfo = 10126,
25981    AtomAccessibilityShortcutStats = 10127,
25982    AtomAccessibilityFloatingMenuStats = 10128,
25983    AtomDataUsageBytesTransferV2 = 10129,
25984    AtomMediaCapabilities = 10130,
25985    AtomCarWatchdogSystemIoUsageSummary = 10131,
25986    AtomCarWatchdogUidIoUsageSummary = 10132,
25987    AtomImsRegistrationFeatureTagStats = 10133,
25988    AtomRcsClientProvisioningStats = 10134,
25989    AtomRcsAcsProvisioningStats = 10135,
25990    AtomSipDelegateStats = 10136,
25991    AtomSipTransportFeatureTagStats = 10137,
25992    AtomSipMessageResponse = 10138,
25993    AtomSipTransportSession = 10139,
25994    AtomImsDedicatedBearerListenerEvent = 10140,
25995    AtomImsDedicatedBearerEvent = 10141,
25996    AtomImsRegistrationServiceDescStats = 10142,
25997    AtomUceEventStats = 10143,
25998    AtomPresenceNotifyEvent = 10144,
25999    AtomGbaEvent = 10145,
26000    AtomPerSimStatus = 10146,
26001    AtomGpuWorkPerUid = 10147,
26002    AtomPersistentUriPermissionsAmountPerPackage = 10148,
26003    AtomSignedPartitionInfo = 10149,
26004    AtomPinnedFileSizesPerPackage = 10150,
26005    AtomPendingIntentsPerPackage = 10151,
26006    AtomUserInfo = 10152,
26007    AtomTelephonyNetworkRequestsV2 = 10153,
26008    AtomDeviceTelephonyProperties = 10154,
26009    AtomRemoteKeyProvisioningErrorCounts = 10155,
26010    AtomSafetyState = 10156,
26011    AtomIncomingMms = 10157,
26012    AtomOutgoingMms = 10158,
26013    AtomMultiUserInfo = 10160,
26014    AtomNetworkBpfMapInfo = 10161,
26015    AtomOutgoingShortCodeSms = 10162,
26016    AtomConnectivityStateSample = 10163,
26017    AtomNetworkSelectionRematchReasonsInfo = 10164,
26018    AtomGameModeInfo = 10165,
26019    AtomGameModeConfiguration = 10166,
26020    AtomGameModeListener = 10167,
26021    AtomNetworkSliceRequestCount = 10168,
26022    AtomWsTileSnapshot = 10169,
26023    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
26024    AtomProcessState = 10171,
26025    AtomProcessAssociation = 10172,
26026    AtomAdpfSystemComponentInfo = 10173,
26027    AtomNotificationMemoryUse = 10174,
26028    AtomHdrCapabilities = 10175,
26029    AtomWsFavouriteWatchFaceListSnapshot = 10176,
26030    AtomAccessibilityCheckResultReported = 910,
26031    AtomAdaptiveAuthUnlockAfterLockReported = 820,
26032    AtomThermalStatusCalled = 772,
26033    AtomThermalHeadroomCalled = 773,
26034    AtomThermalHeadroomThresholdsCalled = 774,
26035    AtomAdpfHintSessionTidCleanup = 839,
26036    AtomThermalHeadroomThresholds = 10201,
26037    AtomAdpfSessionSnapshot = 10218,
26038    AtomJsscriptengineLatencyReported = 483,
26039    AtomAdServicesApiCalled = 435,
26040    AtomAdServicesMesurementReportsUploaded = 436,
26041    AtomMobileDataDownloadFileGroupStatusReported = 490,
26042    AtomMobileDataDownloadDownloadResultReported = 502,
26043    AtomAdServicesSettingsUsageReported = 493,
26044    AtomBackgroundFetchProcessReported = 496,
26045    AtomUpdateCustomAudienceProcessReported = 497,
26046    AtomRunAdBiddingProcessReported = 498,
26047    AtomRunAdScoringProcessReported = 499,
26048    AtomRunAdSelectionProcessReported = 500,
26049    AtomRunAdBiddingPerCaProcessReported = 501,
26050    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
26051    AtomAdServicesMeasurementRegistrations = 512,
26052    AtomAdServicesGetTopicsReported = 535,
26053    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
26054    AtomAdServicesEpochComputationClassifierReported = 537,
26055    AtomAdServicesBackCompatGetTopicsReported = 598,
26056    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
26057    AtomAdServicesMeasurementDebugKeys = 640,
26058    AtomAdServicesErrorReported = 662,
26059    AtomAdServicesBackgroundJobsExecutionReported = 663,
26060    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
26061    AtomAdServicesMeasurementAttribution = 674,
26062    AtomAdServicesMeasurementJobs = 675,
26063    AtomAdServicesMeasurementWipeout = 676,
26064    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
26065    AtomAdServicesEnrollmentDataStored = 697,
26066    AtomAdServicesEnrollmentFileDownloaded = 698,
26067    AtomAdServicesEnrollmentMatched = 699,
26068    AtomAdServicesConsentMigrated = 702,
26069    AtomAdServicesEnrollmentFailed = 714,
26070    AtomAdServicesMeasurementClickVerification = 756,
26071    AtomAdServicesEncryptionKeyFetched = 765,
26072    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
26073    AtomDestinationRegisteredBeacons = 767,
26074    AtomReportInteractionApiCalled = 768,
26075    AtomInteractionReportingTableCleared = 769,
26076    AtomAppManifestConfigHelperCalled = 788,
26077    AtomAdFilteringProcessJoinCaReported = 793,
26078    AtomAdFilteringProcessAdSelectionReported = 794,
26079    AtomAdCounterHistogramUpdaterReported = 795,
26080    AtomSignatureVerification = 807,
26081    AtomKAnonImmediateSignJoinStatusReported = 808,
26082    AtomKAnonBackgroundJobStatusReported = 809,
26083    AtomKAnonInitializeStatusReported = 810,
26084    AtomKAnonSignStatusReported = 811,
26085    AtomKAnonJoinStatusReported = 812,
26086    AtomKAnonKeyAttestationStatusReported = 813,
26087    AtomGetAdSelectionDataApiCalled = 814,
26088    AtomGetAdSelectionDataBuyerInputGenerated = 815,
26089    AtomBackgroundJobSchedulingReported = 834,
26090    AtomTopicsEncryptionEpochComputationReported = 840,
26091    AtomTopicsEncryptionGetTopicsReported = 841,
26092    AtomAdservicesShellCommandCalled = 842,
26093    AtomUpdateSignalsApiCalled = 843,
26094    AtomEncodingJobRun = 844,
26095    AtomEncodingJsFetch = 845,
26096    AtomEncodingJsExecution = 846,
26097    AtomPersistAdSelectionResultCalled = 847,
26098    AtomServerAuctionKeyFetchCalled = 848,
26099    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
26100    AtomAdServicesMeasurementProcessOdpRegistration = 864,
26101    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
26102    AtomSelectAdsFromOutcomesApiCalled = 876,
26103    AtomReportImpressionApiCalled = 877,
26104    AtomAdServicesEnrollmentTransactionStats = 885,
26105    AtomAdServicesCobaltLoggerEventReported = 902,
26106    AtomAdServicesCobaltPeriodicJobEventReported = 903,
26107    AtomUpdateSignalsProcessReported = 905,
26108    AtomTopicsScheduleEpochJobSettingReported = 930,
26109    AtomAiWallpapersButtonPressed = 706,
26110    AtomAiWallpapersTemplateSelected = 707,
26111    AtomAiWallpapersTermSelected = 708,
26112    AtomAiWallpapersWallpaperSet = 709,
26113    AtomAiWallpapersSessionSummary = 710,
26114    AtomApexInstallationRequested = 732,
26115    AtomApexInstallationStaged = 733,
26116    AtomApexInstallationEnded = 734,
26117    AtomAppSearchSetSchemaStatsReported = 385,
26118    AtomAppSearchSchemaMigrationStatsReported = 579,
26119    AtomAppSearchUsageSearchIntentStatsReported = 825,
26120    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
26121    AtomAppSearchAppsIndexerStatsReported = 909,
26122    AtomArtDatumReported = 332,
26123    AtomArtDeviceDatumReported = 550,
26124    AtomArtDatumDeltaReported = 565,
26125    AtomArtDex2oatReported = 929,
26126    AtomArtDeviceStatus = 10205,
26127    AtomBackgroundDexoptJobEnded = 467,
26128    AtomPrerebootDexoptJobEnded = 883,
26129    AtomOdrefreshReported = 366,
26130    AtomOdsignReported = 548,
26131    AtomAutofillUiEventReported = 603,
26132    AtomAutofillFillRequestReported = 604,
26133    AtomAutofillFillResponseReported = 605,
26134    AtomAutofillSaveEventReported = 606,
26135    AtomAutofillSessionCommitted = 607,
26136    AtomAutofillFieldClassificationEventReported = 659,
26137    AtomCarRecentsEventReported = 770,
26138    AtomCarCalmModeEventReported = 797,
26139    AtomCarWakeupFromSuspendReported = 852,
26140    AtomPluginInitialized = 655,
26141    AtomBluetoothHashedDeviceNameReported = 613,
26142    AtomBluetoothL2capCocClientConnection = 614,
26143    AtomBluetoothL2capCocServerConnection = 615,
26144    AtomBluetoothLeSessionConnected = 656,
26145    AtomRestrictedBluetoothDeviceNameReported = 666,
26146    AtomBluetoothProfileConnectionAttempted = 696,
26147    AtomBluetoothContentProfileErrorReported = 781,
26148    AtomBluetoothRfcommConnectionAttempted = 782,
26149    AtomRemoteDeviceInformationWithMetricId = 862,
26150    AtomLeAppScanStateChanged = 870,
26151    AtomLeRadioScanStopped = 871,
26152    AtomLeScanResultReceived = 872,
26153    AtomLeScanAbused = 873,
26154    AtomLeAdvStateChanged = 874,
26155    AtomLeAdvErrorReported = 875,
26156    AtomA2dpSessionReported = 904,
26157    AtomBluetoothCrossLayerEventReported = 916,
26158    AtomBroadcastAudioSessionReported = 927,
26159    AtomBroadcastAudioSyncReported = 928,
26160    AtomBluetoothRfcommConnectionReportedAtClose = 982,
26161    AtomBluetoothLeConnection = 988,
26162    AtomBroadcastSent = 922,
26163    AtomCameraFeatureCombinationQueryEvent = 900,
26164    AtomCertificateTransparencyLogListStateChanged = 934,
26165    AtomCertificateTransparencyLogListUpdateFailed = 972,
26166    AtomDailyKeepaliveInfoReported = 650,
26167    AtomNetworkRequestStateChanged = 779,
26168    AtomTetheringActiveSessionsReported = 925,
26169    AtomNetworkStatsRecorderFileOperated = 783,
26170    AtomCoreNetworkingTerribleErrorOccurred = 979,
26171    AtomApfSessionInfoReported = 777,
26172    AtomIpClientRaInfoReported = 778,
26173    AtomVpnConnectionStateChanged = 850,
26174    AtomVpnConnectionReported = 851,
26175    AtomCpuPolicy = 10199,
26176    AtomCredentialManagerApiCalled = 585,
26177    AtomCredentialManagerInitPhaseReported = 651,
26178    AtomCredentialManagerCandidatePhaseReported = 652,
26179    AtomCredentialManagerFinalPhaseReported = 653,
26180    AtomCredentialManagerTotalReported = 667,
26181    AtomCredentialManagerFinalnouidReported = 668,
26182    AtomCredentialManagerGetReported = 669,
26183    AtomCredentialManagerAuthClickReported = 670,
26184    AtomCredentialManagerApiv2Called = 671,
26185    AtomCronetEngineCreated = 703,
26186    AtomCronetTrafficReported = 704,
26187    AtomCronetEngineBuilderInitialized = 762,
26188    AtomCronetHttpFlagsInitialized = 763,
26189    AtomCronetInitialized = 764,
26190    AtomDesktopModeUiChanged = 818,
26191    AtomDesktopModeSessionTaskUpdate = 819,
26192    AtomDesktopModeTaskSizeUpdated = 935,
26193    AtomDeviceLockCheckInRequestReported = 726,
26194    AtomDeviceLockProvisioningCompleteReported = 727,
26195    AtomDeviceLockKioskAppRequestReported = 728,
26196    AtomDeviceLockCheckInRetryReported = 789,
26197    AtomDeviceLockProvisionFailureReported = 790,
26198    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
26199    AtomDevicePolicyManagementMode = 10216,
26200    AtomDevicePolicyState = 10217,
26201    AtomDisplayModeDirectorVoteChanged = 792,
26202    AtomExternalDisplayStateChanged = 806,
26203    AtomDndStateChanged = 657,
26204    AtomDreamSettingChanged = 705,
26205    AtomDreamSettingSnapshot = 10192,
26206    AtomExpressEventReported = 528,
26207    AtomExpressHistogramSampleReported = 593,
26208    AtomExpressUidEventReported = 644,
26209    AtomExpressUidHistogramSampleReported = 658,
26210    AtomFederatedComputeApiCalled = 712,
26211    AtomFederatedComputeTrainingEventReported = 771,
26212    AtomExampleIteratorNextLatencyReported = 838,
26213    AtomFullScreenIntentLaunched = 631,
26214    AtomBalAllowed = 632,
26215    AtomInTaskActivityStarted = 685,
26216    AtomDeviceOrientationChanged = 906,
26217    AtomCachedAppsHighWatermark = 10189,
26218    AtomStylusPredictionMetricsReported = 718,
26219    AtomUserRiskEventReported = 725,
26220    AtomMediaProjectionStateChanged = 729,
26221    AtomMediaProjectionTargetChanged = 730,
26222    AtomExcessiveBinderProxyCountReported = 853,
26223    AtomProxyBytesTransferByFgBg = 10200,
26224    AtomMobileBytesTransferByProcState = 10204,
26225    AtomBiometricFrrNotification = 817,
26226    AtomSensitiveContentMediaProjectionSession = 830,
26227    AtomSensitiveNotificationAppProtectionSession = 831,
26228    AtomSensitiveNotificationAppProtectionApplied = 832,
26229    AtomSensitiveNotificationRedaction = 833,
26230    AtomSensitiveContentAppProtection = 835,
26231    AtomAppRestrictionStateChanged = 866,
26232    AtomBatteryUsageStatsPerUid = 10209,
26233    AtomPostgcMemorySnapshot = 924,
26234    AtomPowerSaveTempAllowlistChanged = 926,
26235    AtomAppOpAccessTracked = 931,
26236    AtomContentOrFileUriEventReported = 933,
26237    AtomApplicationGrammaticalInflectionChanged = 584,
26238    AtomSystemGrammaticalInflectionChanged = 816,
26239    AtomBatteryHealth = 10220,
26240    AtomHdmiEarcStatusReported = 701,
26241    AtomHdmiSoundbarModeStatusReported = 724,
26242    AtomHealthConnectApiCalled = 616,
26243    AtomHealthConnectUsageStats = 617,
26244    AtomHealthConnectStorageStats = 618,
26245    AtomHealthConnectApiInvoked = 643,
26246    AtomExerciseRouteApiCalled = 654,
26247    AtomHealthConnectExportInvoked = 907,
26248    AtomHealthConnectImportInvoked = 918,
26249    AtomHealthConnectExportImportStatsReported = 919,
26250    AtomHealthConnectUiImpression = 623,
26251    AtomHealthConnectUiInteraction = 624,
26252    AtomHealthConnectAppOpenedReported = 625,
26253    AtomHotwordEgressSizeAtomReported = 761,
26254    AtomIkeSessionTerminated = 678,
26255    AtomIkeLivenessCheckSessionValidated = 760,
26256    AtomNegotiatedSecurityAssociation = 821,
26257    AtomKeyboardConfigured = 682,
26258    AtomKeyboardSystemsEventReported = 683,
26259    AtomInputdeviceUsageReported = 686,
26260    AtomInputEventLatencyReported = 932,
26261    AtomTouchpadUsage = 10191,
26262    AtomKernelOomKillOccurred = 754,
26263    AtomEmergencyStateChanged = 633,
26264    AtomChreSignificantMotionStateChanged = 868,
26265    AtomPopulationDensityProviderLoadingReported = 1002,
26266    AtomDensityBasedCoarseLocationsUsageReported = 1003,
26267    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
26268    AtomMediaCodecReclaimRequestCompleted = 600,
26269    AtomMediaCodecStarted = 641,
26270    AtomMediaCodecStopped = 642,
26271    AtomMediaCodecRendered = 684,
26272    AtomMediaEditingEndedReported = 798,
26273    AtomMteState = 10181,
26274    AtomMicroxrDeviceBootCompleteReported = 901,
26275    AtomNfcObserveModeStateChanged = 855,
26276    AtomNfcFieldChanged = 856,
26277    AtomNfcPollingLoopNotificationReported = 857,
26278    AtomNfcProprietaryCapabilitiesReported = 858,
26279    AtomOndevicepersonalizationApiCalled = 711,
26280    AtomComponentStateChangedReported = 863,
26281    AtomPdfLoadReported = 859,
26282    AtomPdfApiUsageReported = 860,
26283    AtomPdfSearchReported = 861,
26284    AtomPressureStallInformation = 10229,
26285    AtomPermissionRationaleDialogViewed = 645,
26286    AtomPermissionRationaleDialogActionReported = 646,
26287    AtomAppDataSharingUpdatesNotificationInteraction = 647,
26288    AtomAppDataSharingUpdatesFragmentViewed = 648,
26289    AtomAppDataSharingUpdatesFragmentActionReported = 649,
26290    AtomEnhancedConfirmationDialogResultReported = 827,
26291    AtomEnhancedConfirmationRestrictionCleared = 828,
26292    AtomPhotopickerSessionInfoReported = 886,
26293    AtomPhotopickerApiInfoReported = 887,
26294    AtomPhotopickerUiEventLogged = 888,
26295    AtomPhotopickerMediaItemStatusReported = 889,
26296    AtomPhotopickerPreviewInfoLogged = 890,
26297    AtomPhotopickerMenuInteractionLogged = 891,
26298    AtomPhotopickerBannerInteractionLogged = 892,
26299    AtomPhotopickerMediaLibraryInfoLogged = 893,
26300    AtomPhotopickerPageInfoLogged = 894,
26301    AtomPhotopickerMediaGridSyncInfoReported = 895,
26302    AtomPhotopickerAlbumSyncInfoReported = 896,
26303    AtomPhotopickerSearchInfoReported = 897,
26304    AtomSearchDataExtractionDetailsReported = 898,
26305    AtomEmbeddedPhotopickerInfoReported = 899,
26306    AtomAtom9999 = 9999,
26307    AtomAtom99999 = 99999,
26308    AtomScreenOffReported = 776,
26309    AtomScreenTimeoutOverrideReported = 836,
26310    AtomScreenInteractiveSessionReported = 837,
26311    AtomScreenDimReported = 867,
26312    AtomMediaProviderDatabaseRollbackReported = 784,
26313    AtomBackupSetupStatusReported = 785,
26314    AtomRangingSessionConfigured = 993,
26315    AtomRangingSessionStarted = 994,
26316    AtomRangingSessionClosed = 995,
26317    AtomRangingTechnologyStarted = 996,
26318    AtomRangingTechnologyStopped = 997,
26319    AtomRkpdPoolStats = 664,
26320    AtomRkpdClientOperation = 665,
26321    AtomSandboxApiCalled = 488,
26322    AtomSandboxActivityEventOccurred = 735,
26323    AtomSdkSandboxRestrictedAccessInSession = 796,
26324    AtomSandboxSdkStorage = 10159,
26325    AtomSelinuxAuditLog = 799,
26326    AtomSettingsSpaReported = 622,
26327    AtomTestExtensionAtomReported = 660,
26328    AtomTestRestrictedAtomReported = 672,
26329    AtomStatsSocketLossReported = 752,
26330    AtomLockscreenShortcutSelected = 611,
26331    AtomLockscreenShortcutTriggered = 612,
26332    AtomLauncherImpressionEventV2 = 716,
26333    AtomDisplaySwitchLatencyTracked = 753,
26334    AtomNotificationListenerService = 829,
26335    AtomNavHandleTouchPoints = 869,
26336    AtomCommunalHubWidgetEventReported = 908,
26337    AtomCommunalHubSnapshot = 10226,
26338    AtomEmergencyNumberDialed = 637,
26339    AtomCallStats = 10221,
26340    AtomCallAudioRouteStats = 10222,
26341    AtomTelecomApiStats = 10223,
26342    AtomTelecomErrorStats = 10224,
26343    AtomCellularRadioPowerStateChanged = 713,
26344    AtomEmergencyNumbersInfo = 10180,
26345    AtomDataNetworkValidation = 10207,
26346    AtomDataRatStateChanged = 854,
26347    AtomConnectedChannelChanged = 882,
26348    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
26349    AtomQualifiedRatListChanged = 634,
26350    AtomQnsImsCallDropStats = 635,
26351    AtomQnsFallbackRestrictionChanged = 636,
26352    AtomQnsRatPreferenceMismatchInfo = 10177,
26353    AtomQnsHandoverTimeMillis = 10178,
26354    AtomQnsHandoverPingpong = 10179,
26355    AtomSatelliteController = 10182,
26356    AtomSatelliteSession = 10183,
26357    AtomSatelliteIncomingDatagram = 10184,
26358    AtomSatelliteOutgoingDatagram = 10185,
26359    AtomSatelliteProvision = 10186,
26360    AtomSatelliteSosMessageRecommender = 10187,
26361    AtomCarrierRoamingSatelliteSession = 10211,
26362    AtomCarrierRoamingSatelliteControllerStats = 10212,
26363    AtomControllerStatsPerPackage = 10213,
26364    AtomSatelliteEntitlement = 10214,
26365    AtomSatelliteConfigUpdater = 10215,
26366    AtomSatelliteAccessController = 10219,
26367    AtomCellularIdentifierDisclosed = 800,
26368    AtomThreadnetworkTelemetryDataReported = 738,
26369    AtomThreadnetworkTopoEntryRepeated = 739,
26370    AtomThreadnetworkDeviceInfoReported = 740,
26371    AtomBootIntegrityInfoReported = 775,
26372    AtomTvLowPowerStandbyPolicy = 679,
26373    AtomExternalTvInputEvent = 717,
26374    AtomTestUprobestatsAtomReported = 915,
26375    AtomUwbActivityInfo = 10188,
26376    AtomMediatorUpdated = 721,
26377    AtomSysproxyBluetoothBytesTransfer = 10196,
26378    AtomSysproxyConnectionUpdated = 786,
26379    AtomWearCompanionConnectionState = 921,
26380    AtomMediaActionReported = 608,
26381    AtomMediaControlsLaunched = 609,
26382    AtomMediaSessionStateChanged = 677,
26383    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
26384    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
26385    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
26386    AtomWearModeStateChanged = 715,
26387    AtomRendererInitialized = 736,
26388    AtomSchemaVersionReceived = 737,
26389    AtomLayoutInspected = 741,
26390    AtomLayoutExpressionInspected = 742,
26391    AtomLayoutAnimationsInspected = 743,
26392    AtomMaterialComponentsInspected = 744,
26393    AtomTileRequested = 745,
26394    AtomStateResponseReceived = 746,
26395    AtomTileResponseReceived = 747,
26396    AtomInflationFinished = 748,
26397    AtomInflationFailed = 749,
26398    AtomIgnoredInflationFailuresReported = 750,
26399    AtomDrawableRendered = 751,
26400    AtomWearTimeSyncRequested = 911,
26401    AtomWearTimeUpdateStarted = 912,
26402    AtomWearTimeSyncAttemptCompleted = 913,
26403    AtomWearTimeChanged = 914,
26404    AtomWearAdaptiveSuspendStatsReported = 619,
26405    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
26406    AtomWearPowerAnomalyServiceEventStatsReported = 621,
26407    AtomWsWearTimeSession = 610,
26408    AtomWsIncomingCallActionReported = 626,
26409    AtomWsCallDisconnectionReported = 627,
26410    AtomWsCallDurationReported = 628,
26411    AtomWsCallUserExperienceLatencyReported = 629,
26412    AtomWsCallInteractionReported = 630,
26413    AtomWsOnBodyStateChanged = 787,
26414    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
26415    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
26416    AtomWsComplicationsImpactedNotificationEventReported = 804,
26417    AtomWsRemoteEventUsageReported = 920,
26418    AtomWsBugreportRequested = 936,
26419    AtomWsBugreportTriggered = 937,
26420    AtomWsBugreportFinished = 938,
26421    AtomWsBugreportResultReceived = 939,
26422    AtomWsStandaloneModeSnapshot = 10197,
26423    AtomWsFavoriteWatchFaceSnapshot = 10206,
26424    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
26425    AtomWsWatchFaceCustomizationSnapshot = 10227,
26426    AtomWearPowerMenuOpened = 731,
26427    AtomWearAssistantOpened = 755,
26428    AtomFirstOverlayStateChanged = 917,
26429    AtomWifiAwareNdpReported = 638,
26430    AtomWifiAwareAttachReported = 639,
26431    AtomWifiSelfRecoveryTriggered = 661,
26432    AtomSoftApStarted = 680,
26433    AtomSoftApStopped = 681,
26434    AtomWifiLockReleased = 687,
26435    AtomWifiLockDeactivated = 688,
26436    AtomWifiConfigSaved = 689,
26437    AtomWifiAwareResourceUsingChanged = 690,
26438    AtomWifiAwareHalApiCalled = 691,
26439    AtomWifiLocalOnlyRequestReceived = 692,
26440    AtomWifiLocalOnlyRequestScanTriggered = 693,
26441    AtomWifiThreadTaskExecuted = 694,
26442    AtomWifiStateChanged = 700,
26443    AtomPnoScanStarted = 719,
26444    AtomPnoScanStopped = 720,
26445    AtomWifiIsUnusableReported = 722,
26446    AtomWifiApCapabilitiesReported = 723,
26447    AtomSoftApStateChanged = 805,
26448    AtomScorerPredictionResultReported = 884,
26449    AtomWifiAwareCapabilities = 10190,
26450    AtomWifiModuleInfo = 10193,
26451    AtomWifiSettingInfo = 10194,
26452    AtomWifiComplexSettingInfo = 10195,
26453    AtomWifiConfiguredNetworkInfo = 10198,
26454}
26455impl AtomId {
26456    /// String value of the enum field names used in the ProtoBuf definition.
26457    ///
26458    /// The values are not transformed in any way and thus are considered stable
26459    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26460    pub fn as_str_name(&self) -> &'static str {
26461        match self {
26462            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
26463            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
26464            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
26465            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
26466            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
26467            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
26468            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
26469            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
26470            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
26471            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
26472            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
26473            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
26474            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
26475            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
26476            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
26477            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
26478            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
26479            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
26480            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
26481            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
26482            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
26483            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
26484            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
26485            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
26486            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
26487            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
26488            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
26489            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
26490            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
26491            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
26492            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
26493            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
26494            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
26495            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
26496            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
26497            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
26498            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
26499            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
26500            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
26501            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
26502            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
26503            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
26504            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
26505            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
26506            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
26507            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
26508            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
26509            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
26510            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
26511            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
26512            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
26513            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
26514            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
26515            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
26516            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
26517            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
26518            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
26519            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
26520            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
26521            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
26522            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
26523            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
26524            AtomId::AtomAppDied => "ATOM_APP_DIED",
26525            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
26526            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
26527            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
26528            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
26529            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
26530            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
26531            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
26532            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
26533            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
26534            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
26535            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
26536            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
26537            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
26538            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
26539            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
26540            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
26541            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
26542            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
26543            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
26544            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
26545            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
26546            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
26547            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
26548            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
26549            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
26550            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
26551            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
26552            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
26553            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
26554            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
26555            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
26556            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
26557            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
26558            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
26559            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
26560            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
26561            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
26562            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
26563            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
26564            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
26565            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
26566            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
26567            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
26568            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
26569            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
26570            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
26571            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
26572            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
26573            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
26574            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
26575            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
26576            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
26577            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
26578            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
26579            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
26580            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
26581            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
26582            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
26583            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
26584            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
26585            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
26586            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
26587            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
26588            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
26589            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
26590            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
26591            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
26592            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
26593            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
26594            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
26595            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
26596            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
26597            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
26598            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
26599            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
26600            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
26601            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
26602            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
26603            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
26604            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
26605            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
26606            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
26607            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
26608            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
26609            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
26610            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
26611            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
26612            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
26613            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
26614            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
26615            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
26616            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
26617            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
26618            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
26619            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
26620            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
26621            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
26622            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
26623            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
26624            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
26625            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
26626            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
26627            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
26628            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
26629            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
26630            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
26631            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
26632            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
26633            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
26634            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
26635            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
26636            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
26637            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
26638            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
26639            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
26640            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
26641            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
26642            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
26643            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
26644            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
26645            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
26646            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
26647            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
26648            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
26649            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
26650            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
26651            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
26652            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
26653            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
26654            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
26655            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
26656            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
26657            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
26658            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
26659            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
26660            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
26661            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
26662            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
26663            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
26664            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
26665            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
26666            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
26667            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
26668            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
26669            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
26670            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
26671            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
26672            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
26673            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
26674            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
26675            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
26676            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
26677            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
26678            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
26679            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
26680            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
26681            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
26682            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
26683            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
26684            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
26685            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
26686            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
26687            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
26688            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
26689            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
26690            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
26691            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
26692            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
26693            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
26694            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
26695            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
26696            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
26697            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
26698            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
26699            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
26700            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
26701            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
26702            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
26703            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
26704            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
26705            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
26706            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
26707            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
26708            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
26709            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
26710            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
26711            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
26712            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
26713            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
26714            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
26715            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
26716            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
26717            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
26718            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
26719            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
26720            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
26721            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
26722            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
26723            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
26724            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
26725            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
26726            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
26727            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
26728            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
26729            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
26730            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
26731            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
26732            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
26733            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
26734            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
26735            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
26736            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
26737            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
26738            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
26739            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
26740            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
26741            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
26742            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
26743            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
26744            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
26745            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
26746            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
26747            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
26748            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
26749            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
26750            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
26751            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
26752            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
26753            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
26754            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
26755            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
26756            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
26757            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
26758            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
26759            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
26760            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
26761            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
26762            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
26763            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
26764            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
26765            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
26766            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
26767            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
26768            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
26769            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
26770            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
26771            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
26772            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
26773            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
26774            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
26775            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
26776            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
26777            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
26778            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
26779            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
26780            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
26781            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
26782            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
26783            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
26784            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
26785            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
26786            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
26787            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
26788            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
26789            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
26790            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
26791            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
26792            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
26793            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
26794            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
26795            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
26796            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
26797            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
26798            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
26799            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
26800            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
26801            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
26802            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
26803            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
26804            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
26805            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
26806            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
26807            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
26808            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
26809            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
26810            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
26811            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
26812            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
26813            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
26814            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
26815            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
26816            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
26817            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
26818            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
26819            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
26820            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
26821            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
26822            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
26823            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
26824            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
26825            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
26826            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
26827            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
26828            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
26829            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
26830            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
26831            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
26832            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
26833            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
26834            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
26835            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
26836            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
26837            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
26838            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
26839            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
26840            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
26841            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
26842            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
26843            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
26844            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
26845            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
26846            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
26847            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
26848            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
26849            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
26850            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
26851            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
26852            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
26853            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
26854            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
26855            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
26856            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
26857            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
26858            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
26859            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
26860            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
26861            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
26862            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
26863            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
26864            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
26865            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
26866            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
26867            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
26868            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
26869            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
26870            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
26871            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
26872            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
26873            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
26874            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
26875            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
26876            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
26877            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
26878            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
26879            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
26880            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
26881            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
26882            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
26883            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
26884            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
26885            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
26886            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
26887            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
26888            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
26889            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
26890            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
26891            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
26892            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
26893            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
26894            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
26895            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
26896            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
26897            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
26898            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
26899            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
26900            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
26901            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
26902            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
26903            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
26904            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
26905            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
26906            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
26907            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
26908            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
26909            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
26910            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
26911            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
26912            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
26913            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
26914            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
26915            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
26916            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
26917            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
26918            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
26919            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
26920            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
26921            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
26922            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
26923            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
26924            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
26925            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
26926            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
26927            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
26928            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
26929            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
26930            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
26931            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
26932            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
26933            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
26934            AtomId::AtomVmExited => "ATOM_VM_EXITED",
26935            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
26936            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
26937            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
26938            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
26939            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
26940            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
26941            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
26942            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
26943            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
26944            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
26945            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
26946            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
26947            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
26948            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
26949            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
26950            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
26951            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
26952            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
26953            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
26954            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
26955            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
26956            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
26957            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
26958            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
26959            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
26960            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
26961            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
26962            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
26963            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
26964            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
26965            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
26966            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
26967            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
26968            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
26969            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
26970            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
26971            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
26972            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
26973            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
26974            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
26975            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
26976            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
26977            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
26978            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
26979            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
26980            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
26981            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
26982            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
26983            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
26984            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
26985            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
26986            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
26987            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
26988            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
26989            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
26990            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
26991            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
26992            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
26993            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
26994            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
26995            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
26996            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
26997            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
26998            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
26999            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
27000            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
27001            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
27002            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
27003            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
27004            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
27005            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
27006            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
27007            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
27008            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
27009            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
27010            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
27011            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
27012            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
27013            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
27014            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
27015            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
27016            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
27017            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
27018            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
27019            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
27020            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
27021            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
27022            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
27023            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
27024            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
27025            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
27026            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
27027            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
27028            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
27029            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
27030            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
27031            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
27032            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
27033            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
27034            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
27035            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
27036            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
27037            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
27038            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
27039            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
27040            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
27041            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
27042            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
27043            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
27044            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
27045            AtomId::AtomAppSize => "ATOM_APP_SIZE",
27046            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
27047            AtomId::AtomProcStats => "ATOM_PROC_STATS",
27048            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
27049            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
27050            AtomId::AtomDiskIo => "ATOM_DISK_IO",
27051            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
27052            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
27053            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
27054            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
27055            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
27056            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
27057            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
27058            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
27059            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
27060            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
27061            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
27062            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
27063            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
27064            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
27065            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
27066            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
27067            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
27068            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
27069            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
27070            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
27071            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
27072            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
27073            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
27074            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
27075            AtomId::AtomAppOps => "ATOM_APP_OPS",
27076            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
27077            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
27078            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
27079            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
27080            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
27081            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
27082            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
27083            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
27084            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
27085            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
27086            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
27087            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
27088            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
27089            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
27090            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
27091            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
27092            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
27093            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
27094            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
27095            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
27096            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
27097            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
27098            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
27099            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
27100            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
27101            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
27102            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
27103            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
27104            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
27105            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
27106            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
27107            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
27108            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
27109            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
27110            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
27111            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
27112            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
27113            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
27114            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
27115            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
27116            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
27117            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
27118            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
27119            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
27120            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
27121            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
27122            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
27123            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
27124            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
27125            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
27126            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
27127            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
27128            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
27129            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
27130            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
27131            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
27132            AtomId::AtomVmstat => "ATOM_VMSTAT",
27133            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
27134            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
27135            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
27136            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
27137            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
27138            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
27139            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
27140            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
27141            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
27142            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
27143            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
27144            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
27145            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
27146            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
27147            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
27148            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
27149            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
27150            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
27151            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
27152            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
27153            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
27154            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
27155            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
27156            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
27157            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
27158            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
27159            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
27160            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
27161            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
27162            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
27163            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
27164            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
27165            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
27166            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
27167            AtomId::AtomUserInfo => "ATOM_USER_INFO",
27168            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
27169            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
27170            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
27171            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
27172            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
27173            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
27174            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
27175            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
27176            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
27177            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
27178            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
27179            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
27180            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
27181            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
27182            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
27183            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
27184            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
27185            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
27186            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
27187            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
27188            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
27189            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
27190            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
27191            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
27192            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
27193            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
27194            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
27195            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
27196            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
27197            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
27198            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
27199            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
27200            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
27201            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
27202            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
27203            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
27204            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
27205            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
27206            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
27207            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
27208            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
27209            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
27210            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
27211            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
27212            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
27213            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
27214            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
27215            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
27216            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
27217            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
27218            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
27219            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
27220            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
27221            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
27222            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
27223            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
27224            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
27225            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
27226            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
27227            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
27228            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
27229            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
27230            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
27231            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
27232            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
27233            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
27234            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
27235            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
27236            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
27237            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
27238            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
27239            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
27240            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
27241            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
27242            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
27243            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
27244            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
27245            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
27246            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
27247            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
27248            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
27249            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
27250            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
27251            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
27252            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
27253            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
27254            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
27255            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
27256            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
27257            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
27258            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
27259            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
27260            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
27261            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
27262            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
27263            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
27264            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
27265            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
27266            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
27267            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
27268            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
27269            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
27270            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
27271            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
27272            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
27273            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
27274            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
27275            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
27276            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
27277            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
27278            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
27279            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
27280            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
27281            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
27282            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
27283            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
27284            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
27285            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
27286            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
27287            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
27288            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
27289            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
27290            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
27291            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
27292            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
27293            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
27294            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
27295            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
27296            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
27297            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
27298            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
27299            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
27300            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
27301            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
27302            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
27303            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
27304            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
27305            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
27306            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
27307            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
27308            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
27309            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
27310            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
27311            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
27312            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
27313            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
27314            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
27315            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
27316            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
27317            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
27318            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
27319            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
27320            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
27321            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
27322            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
27323            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
27324            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
27325            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
27326            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
27327            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
27328            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
27329            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
27330            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
27331            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
27332            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
27333            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
27334            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
27335            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
27336            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
27337            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
27338            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
27339            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
27340            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
27341            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
27342            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
27343            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
27344            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
27345            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
27346            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
27347            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
27348            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
27349            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
27350            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
27351            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
27352            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
27353            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
27354            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
27355            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
27356            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
27357            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
27358            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
27359            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
27360            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
27361            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
27362            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
27363            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
27364            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
27365            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
27366            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
27367            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
27368            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
27369            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
27370            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
27371            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
27372            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
27373            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
27374            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
27375            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
27376            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
27377            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
27378            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
27379            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
27380            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
27381            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
27382            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
27383            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
27384            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
27385            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
27386            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
27387            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
27388            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
27389            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
27390            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
27391            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
27392            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
27393            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
27394            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
27395            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
27396            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
27397            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
27398            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
27399            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
27400            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
27401            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
27402            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
27403            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
27404            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
27405            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
27406            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
27407            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
27408            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
27409            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
27410            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
27411            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
27412            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
27413            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
27414            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
27415            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
27416            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
27417            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
27418            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
27419            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
27420            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
27421            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
27422            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
27423            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
27424            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
27425            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
27426            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
27427            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
27428            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
27429            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
27430            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
27431            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
27432            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
27433            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
27434            AtomId::AtomMteState => "ATOM_MTE_STATE",
27435            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
27436            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
27437            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
27438            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
27439            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
27440            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
27441            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
27442            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
27443            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
27444            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
27445            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
27446            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
27447            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
27448            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
27449            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
27450            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
27451            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
27452            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
27453            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
27454            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
27455            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
27456            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
27457            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
27458            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
27459            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
27460            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
27461            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
27462            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
27463            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
27464            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
27465            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
27466            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
27467            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
27468            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
27469            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
27470            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
27471            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
27472            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
27473            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
27474            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
27475            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
27476            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
27477            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
27478            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
27479            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
27480            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
27481            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
27482            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
27483            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
27484            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
27485            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
27486            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
27487            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
27488            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
27489            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
27490            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
27491            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
27492            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
27493            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
27494            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
27495            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
27496            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
27497            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
27498            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
27499            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
27500            AtomId::AtomCallStats => "ATOM_CALL_STATS",
27501            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
27502            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
27503            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
27504            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
27505            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
27506            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
27507            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
27508            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
27509            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
27510            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
27511            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
27512            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
27513            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
27514            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
27515            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
27516            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
27517            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
27518            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
27519            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
27520            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
27521            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
27522            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
27523            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
27524            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
27525            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
27526            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
27527            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
27528            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
27529            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
27530            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
27531            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
27532            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
27533            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
27534            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
27535            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
27536            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
27537            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
27538            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
27539            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
27540            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
27541            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
27542            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
27543            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
27544            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
27545            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
27546            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
27547            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
27548            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
27549            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
27550            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
27551            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
27552            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
27553            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
27554            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
27555            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
27556            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
27557            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
27558            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
27559            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
27560            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
27561            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
27562            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
27563            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
27564            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
27565            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
27566            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
27567            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
27568            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
27569            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
27570            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
27571            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
27572            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
27573            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
27574            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
27575            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
27576            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
27577            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
27578            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
27579            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
27580            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
27581            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
27582            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
27583            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
27584            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
27585            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
27586            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
27587            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
27588            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
27589            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
27590            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
27591            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
27592            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
27593            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
27594            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
27595            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
27596            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
27597            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
27598            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
27599            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
27600            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
27601            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
27602            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
27603            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
27604            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
27605            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
27606            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
27607            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
27608            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
27609            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
27610            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
27611            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
27612            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
27613            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
27614            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
27615        }
27616    }
27617}
27618// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
27619
27620// Begin of protos/perfetto/common/sys_stats_counters.proto
27621
27622// When editing entries here remember also to update "sys_stats_counters.h" with
27623// the corresponding string definitions for the actual /proc files parser.
27624
27625/// Counter definitions for Linux's /proc/meminfo.
27626#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27627#[repr(i32)]
27628pub enum MeminfoCounters {
27629    MeminfoUnspecified = 0,
27630    MeminfoMemTotal = 1,
27631    MeminfoMemFree = 2,
27632    MeminfoMemAvailable = 3,
27633    MeminfoBuffers = 4,
27634    MeminfoCached = 5,
27635    MeminfoSwapCached = 6,
27636    MeminfoActive = 7,
27637    MeminfoInactive = 8,
27638    MeminfoActiveAnon = 9,
27639    MeminfoInactiveAnon = 10,
27640    MeminfoActiveFile = 11,
27641    MeminfoInactiveFile = 12,
27642    MeminfoUnevictable = 13,
27643    MeminfoMlocked = 14,
27644    MeminfoSwapTotal = 15,
27645    MeminfoSwapFree = 16,
27646    MeminfoDirty = 17,
27647    MeminfoWriteback = 18,
27648    MeminfoAnonPages = 19,
27649    MeminfoMapped = 20,
27650    MeminfoShmem = 21,
27651    MeminfoSlab = 22,
27652    MeminfoSlabReclaimable = 23,
27653    MeminfoSlabUnreclaimable = 24,
27654    MeminfoKernelStack = 25,
27655    MeminfoPageTables = 26,
27656    MeminfoCommitLimit = 27,
27657    MeminfoCommitedAs = 28,
27658    MeminfoVmallocTotal = 29,
27659    MeminfoVmallocUsed = 30,
27660    MeminfoVmallocChunk = 31,
27661    MeminfoCmaTotal = 32,
27662    MeminfoCmaFree = 33,
27663    MeminfoGpu = 34,
27664    MeminfoZram = 35,
27665    MeminfoMisc = 36,
27666    MeminfoIonHeap = 37,
27667    MeminfoIonHeapPool = 38,
27668}
27669impl MeminfoCounters {
27670    /// String value of the enum field names used in the ProtoBuf definition.
27671    ///
27672    /// The values are not transformed in any way and thus are considered stable
27673    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27674    pub fn as_str_name(&self) -> &'static str {
27675        match self {
27676            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
27677            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
27678            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
27679            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
27680            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
27681            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
27682            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
27683            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
27684            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
27685            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
27686            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
27687            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
27688            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
27689            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
27690            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
27691            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
27692            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
27693            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
27694            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
27695            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
27696            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
27697            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
27698            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
27699            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
27700            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
27701            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
27702            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
27703            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
27704            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
27705            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
27706            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
27707            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
27708            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
27709            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
27710            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
27711            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
27712            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
27713            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
27714            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
27715        }
27716    }
27717}
27718/// Counter definitions for Linux's /proc/vmstat.
27719#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27720#[repr(i32)]
27721pub enum VmstatCounters {
27722    VmstatUnspecified = 0,
27723    VmstatNrFreePages = 1,
27724    VmstatNrAllocBatch = 2,
27725    VmstatNrInactiveAnon = 3,
27726    VmstatNrActiveAnon = 4,
27727    VmstatNrInactiveFile = 5,
27728    VmstatNrActiveFile = 6,
27729    VmstatNrUnevictable = 7,
27730    VmstatNrMlock = 8,
27731    VmstatNrAnonPages = 9,
27732    VmstatNrMapped = 10,
27733    VmstatNrFilePages = 11,
27734    VmstatNrDirty = 12,
27735    VmstatNrWriteback = 13,
27736    VmstatNrSlabReclaimable = 14,
27737    VmstatNrSlabUnreclaimable = 15,
27738    VmstatNrPageTablePages = 16,
27739    VmstatNrKernelStack = 17,
27740    VmstatNrOverhead = 18,
27741    VmstatNrUnstable = 19,
27742    VmstatNrBounce = 20,
27743    VmstatNrVmscanWrite = 21,
27744    VmstatNrVmscanImmediateReclaim = 22,
27745    VmstatNrWritebackTemp = 23,
27746    VmstatNrIsolatedAnon = 24,
27747    VmstatNrIsolatedFile = 25,
27748    VmstatNrShmem = 26,
27749    VmstatNrDirtied = 27,
27750    VmstatNrWritten = 28,
27751    VmstatNrPagesScanned = 29,
27752    VmstatWorkingsetRefault = 30,
27753    VmstatWorkingsetActivate = 31,
27754    VmstatWorkingsetNodereclaim = 32,
27755    VmstatNrAnonTransparentHugepages = 33,
27756    VmstatNrFreeCma = 34,
27757    VmstatNrSwapcache = 35,
27758    VmstatNrDirtyThreshold = 36,
27759    VmstatNrDirtyBackgroundThreshold = 37,
27760    VmstatPgpgin = 38,
27761    VmstatPgpgout = 39,
27762    VmstatPgpgoutclean = 40,
27763    VmstatPswpin = 41,
27764    VmstatPswpout = 42,
27765    VmstatPgallocDma = 43,
27766    VmstatPgallocNormal = 44,
27767    VmstatPgallocMovable = 45,
27768    VmstatPgfree = 46,
27769    VmstatPgactivate = 47,
27770    VmstatPgdeactivate = 48,
27771    VmstatPgfault = 49,
27772    VmstatPgmajfault = 50,
27773    VmstatPgrefillDma = 51,
27774    VmstatPgrefillNormal = 52,
27775    VmstatPgrefillMovable = 53,
27776    VmstatPgstealKswapdDma = 54,
27777    VmstatPgstealKswapdNormal = 55,
27778    VmstatPgstealKswapdMovable = 56,
27779    VmstatPgstealDirectDma = 57,
27780    VmstatPgstealDirectNormal = 58,
27781    VmstatPgstealDirectMovable = 59,
27782    VmstatPgscanKswapdDma = 60,
27783    VmstatPgscanKswapdNormal = 61,
27784    VmstatPgscanKswapdMovable = 62,
27785    VmstatPgscanDirectDma = 63,
27786    VmstatPgscanDirectNormal = 64,
27787    VmstatPgscanDirectMovable = 65,
27788    VmstatPgscanDirectThrottle = 66,
27789    VmstatPginodesteal = 67,
27790    VmstatSlabsScanned = 68,
27791    VmstatKswapdInodesteal = 69,
27792    VmstatKswapdLowWmarkHitQuickly = 70,
27793    VmstatKswapdHighWmarkHitQuickly = 71,
27794    VmstatPageoutrun = 72,
27795    VmstatAllocstall = 73,
27796    VmstatPgrotated = 74,
27797    VmstatDropPagecache = 75,
27798    VmstatDropSlab = 76,
27799    VmstatPgmigrateSuccess = 77,
27800    VmstatPgmigrateFail = 78,
27801    VmstatCompactMigrateScanned = 79,
27802    VmstatCompactFreeScanned = 80,
27803    VmstatCompactIsolated = 81,
27804    VmstatCompactStall = 82,
27805    VmstatCompactFail = 83,
27806    VmstatCompactSuccess = 84,
27807    VmstatCompactDaemonWake = 85,
27808    VmstatUnevictablePgsCulled = 86,
27809    VmstatUnevictablePgsScanned = 87,
27810    VmstatUnevictablePgsRescued = 88,
27811    VmstatUnevictablePgsMlocked = 89,
27812    VmstatUnevictablePgsMunlocked = 90,
27813    VmstatUnevictablePgsCleared = 91,
27814    VmstatUnevictablePgsStranded = 92,
27815    VmstatNrZspages = 93,
27816    VmstatNrIonHeap = 94,
27817    VmstatNrGpuHeap = 95,
27818    VmstatAllocstallDma = 96,
27819    VmstatAllocstallMovable = 97,
27820    VmstatAllocstallNormal = 98,
27821    VmstatCompactDaemonFreeScanned = 99,
27822    VmstatCompactDaemonMigrateScanned = 100,
27823    VmstatNrFastrpc = 101,
27824    VmstatNrIndirectlyReclaimable = 102,
27825    VmstatNrIonHeapPool = 103,
27826    VmstatNrKernelMiscReclaimable = 104,
27827    VmstatNrShadowCallStackBytes = 105,
27828    VmstatNrShmemHugepages = 106,
27829    VmstatNrShmemPmdmapped = 107,
27830    VmstatNrUnreclaimablePages = 108,
27831    VmstatNrZoneActiveAnon = 109,
27832    VmstatNrZoneActiveFile = 110,
27833    VmstatNrZoneInactiveAnon = 111,
27834    VmstatNrZoneInactiveFile = 112,
27835    VmstatNrZoneUnevictable = 113,
27836    VmstatNrZoneWritePending = 114,
27837    VmstatOomKill = 115,
27838    VmstatPglazyfree = 116,
27839    VmstatPglazyfreed = 117,
27840    VmstatPgrefill = 118,
27841    VmstatPgscanDirect = 119,
27842    VmstatPgscanKswapd = 120,
27843    VmstatPgskipDma = 121,
27844    VmstatPgskipMovable = 122,
27845    VmstatPgskipNormal = 123,
27846    VmstatPgstealDirect = 124,
27847    VmstatPgstealKswapd = 125,
27848    VmstatSwapRa = 126,
27849    VmstatSwapRaHit = 127,
27850    VmstatWorkingsetRestore = 128,
27851    VmstatAllocstallDevice = 129,
27852    VmstatAllocstallDma32 = 130,
27853    VmstatBalloonDeflate = 131,
27854    VmstatBalloonInflate = 132,
27855    VmstatBalloonMigrate = 133,
27856    VmstatCmaAllocFail = 134,
27857    VmstatCmaAllocSuccess = 135,
27858    VmstatNrFileHugepages = 136,
27859    VmstatNrFilePmdmapped = 137,
27860    VmstatNrFollPinAcquired = 138,
27861    VmstatNrFollPinReleased = 139,
27862    VmstatNrSecPageTablePages = 140,
27863    VmstatNrShadowCallStack = 141,
27864    VmstatNrSwapcached = 142,
27865    VmstatNrThrottledWritten = 143,
27866    VmstatPgallocDevice = 144,
27867    VmstatPgallocDma32 = 145,
27868    VmstatPgdemoteDirect = 146,
27869    VmstatPgdemoteKswapd = 147,
27870    VmstatPgreuse = 148,
27871    VmstatPgscanAnon = 149,
27872    VmstatPgscanFile = 150,
27873    VmstatPgskipDevice = 151,
27874    VmstatPgskipDma32 = 152,
27875    VmstatPgstealAnon = 153,
27876    VmstatPgstealFile = 154,
27877    VmstatThpCollapseAlloc = 155,
27878    VmstatThpCollapseAllocFailed = 156,
27879    VmstatThpDeferredSplitPage = 157,
27880    VmstatThpFaultAlloc = 158,
27881    VmstatThpFaultFallback = 159,
27882    VmstatThpFaultFallbackCharge = 160,
27883    VmstatThpFileAlloc = 161,
27884    VmstatThpFileFallback = 162,
27885    VmstatThpFileFallbackCharge = 163,
27886    VmstatThpFileMapped = 164,
27887    VmstatThpMigrationFail = 165,
27888    VmstatThpMigrationSplit = 166,
27889    VmstatThpMigrationSuccess = 167,
27890    VmstatThpScanExceedNonePte = 168,
27891    VmstatThpScanExceedSharePte = 169,
27892    VmstatThpScanExceedSwapPte = 170,
27893    VmstatThpSplitPage = 171,
27894    VmstatThpSplitPageFailed = 172,
27895    VmstatThpSplitPmd = 173,
27896    VmstatThpSwpout = 174,
27897    VmstatThpSwpoutFallback = 175,
27898    VmstatThpZeroPageAlloc = 176,
27899    VmstatThpZeroPageAllocFailed = 177,
27900    VmstatVmaLockAbort = 178,
27901    VmstatVmaLockMiss = 179,
27902    VmstatVmaLockRetry = 180,
27903    VmstatVmaLockSuccess = 181,
27904    VmstatWorkingsetActivateAnon = 182,
27905    VmstatWorkingsetActivateFile = 183,
27906    VmstatWorkingsetNodes = 184,
27907    VmstatWorkingsetRefaultAnon = 185,
27908    VmstatWorkingsetRefaultFile = 186,
27909    VmstatWorkingsetRestoreAnon = 187,
27910    VmstatWorkingsetRestoreFile = 188,
27911}
27912impl VmstatCounters {
27913    /// String value of the enum field names used in the ProtoBuf definition.
27914    ///
27915    /// The values are not transformed in any way and thus are considered stable
27916    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27917    pub fn as_str_name(&self) -> &'static str {
27918        match self {
27919            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
27920            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
27921            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
27922            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
27923            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
27924            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
27925            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
27926            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
27927            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
27928            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
27929            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
27930            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
27931            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
27932            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
27933            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
27934            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
27935            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
27936            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
27937            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
27938            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
27939            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
27940            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
27941            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
27942            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
27943            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
27944            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
27945            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
27946            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
27947            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
27948            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
27949            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
27950            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
27951            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
27952            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
27953            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
27954            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
27955            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
27956            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
27957            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
27958            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
27959            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
27960            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
27961            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
27962            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
27963            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
27964            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
27965            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
27966            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
27967            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
27968            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
27969            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
27970            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
27971            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
27972            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
27973            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
27974            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
27975            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
27976            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
27977            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
27978            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
27979            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
27980            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
27981            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
27982            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
27983            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
27984            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
27985            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
27986            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
27987            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
27988            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
27989            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
27990            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
27991            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
27992            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
27993            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
27994            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
27995            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
27996            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
27997            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
27998            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
27999            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
28000            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
28001            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
28002            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
28003            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
28004            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
28005            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
28006            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
28007            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
28008            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
28009            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
28010            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
28011            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
28012            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
28013            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
28014            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
28015            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
28016            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
28017            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
28018            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
28019            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
28020            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
28021            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
28022            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
28023            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
28024            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
28025            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
28026            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
28027            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
28028            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
28029            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
28030            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
28031            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
28032            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
28033            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
28034            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
28035            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
28036            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
28037            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
28038            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
28039            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
28040            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
28041            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
28042            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
28043            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
28044            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
28045            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
28046            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
28047            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
28048            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
28049            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
28050            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
28051            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
28052            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
28053            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
28054            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
28055            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
28056            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
28057            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
28058            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
28059            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
28060            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
28061            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
28062            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
28063            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
28064            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
28065            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
28066            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
28067            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
28068            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
28069            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
28070            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
28071            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
28072            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
28073            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
28074            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
28075            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
28076            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
28077            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
28078            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
28079            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
28080            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
28081            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
28082            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
28083            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
28084            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
28085            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
28086            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
28087            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
28088            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
28089            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
28090            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
28091            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
28092            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
28093            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
28094            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
28095            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
28096            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
28097            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
28098            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
28099            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
28100            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
28101            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
28102            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
28103            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
28104            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
28105            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
28106            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
28107            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
28108        }
28109    }
28110}
28111// End of protos/perfetto/trace/android/app_wakelock_data.proto
28112
28113// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
28114
28115/// Describes the packet type and direction. CMD and EVT are unidirectional, so
28116/// no need to differentiate the direction.
28117#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28118#[repr(i32)]
28119pub enum BluetoothTracePacketType {
28120    HciCmd = 1,
28121    HciEvt = 2,
28122    HciAclRx = 3,
28123    HciAclTx = 4,
28124    HciScoRx = 5,
28125    HciScoTx = 6,
28126    HciIsoRx = 7,
28127    HciIsoTx = 8,
28128}
28129impl BluetoothTracePacketType {
28130    /// String value of the enum field names used in the ProtoBuf definition.
28131    ///
28132    /// The values are not transformed in any way and thus are considered stable
28133    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28134    pub fn as_str_name(&self) -> &'static str {
28135        match self {
28136            BluetoothTracePacketType::HciCmd => "HCI_CMD",
28137            BluetoothTracePacketType::HciEvt => "HCI_EVT",
28138            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
28139            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
28140            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
28141            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
28142            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
28143            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
28144        }
28145    }
28146}
28147// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
28148
28149// Begin of protos/perfetto/trace/android/network_trace.proto
28150
28151#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28152#[repr(i32)]
28153pub enum TrafficDirection {
28154    DirUnspecified = 0,
28155    DirIngress = 1,
28156    DirEgress = 2,
28157}
28158impl TrafficDirection {
28159    /// String value of the enum field names used in the ProtoBuf definition.
28160    ///
28161    /// The values are not transformed in any way and thus are considered stable
28162    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28163    pub fn as_str_name(&self) -> &'static str {
28164        match self {
28165            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
28166            TrafficDirection::DirIngress => "DIR_INGRESS",
28167            TrafficDirection::DirEgress => "DIR_EGRESS",
28168        }
28169    }
28170}
28171#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28172#[repr(i32)]
28173pub enum TrustedOverlay {
28174    Unset = 0,
28175    Disabled = 1,
28176    Enabled = 2,
28177}
28178impl TrustedOverlay {
28179    /// String value of the enum field names used in the ProtoBuf definition.
28180    ///
28181    /// The values are not transformed in any way and thus are considered stable
28182    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28183    pub fn as_str_name(&self) -> &'static str {
28184        match self {
28185            TrustedOverlay::Unset => "UNSET",
28186            TrustedOverlay::Disabled => "DISABLED",
28187            TrustedOverlay::Enabled => "ENABLED",
28188        }
28189    }
28190}
28191/// Must match definition in the IComposerClient HAL
28192#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28193#[repr(i32)]
28194pub enum HwcCompositionType {
28195    /// Invalid composition type
28196    HwcTypeUnspecified = 0,
28197    /// Layer was composited by the client into the client target buffer
28198    HwcTypeClient = 1,
28199    /// Layer was composited by the device through hardware overlays
28200    HwcTypeDevice = 2,
28201    /// Layer was composited by the device using a color
28202    HwcTypeSolidColor = 3,
28203    /// Similar to DEVICE, but the layer position may have been asynchronously set
28204    /// through setCursorPosition
28205    HwcTypeCursor = 4,
28206    /// Layer was composited by the device via a sideband stream
28207    HwcTypeSideband = 5,
28208    /// Layer was composited by hardware optimized for display decoration
28209    HwcTypeDisplayDecoration = 6,
28210}
28211impl HwcCompositionType {
28212    /// String value of the enum field names used in the ProtoBuf definition.
28213    ///
28214    /// The values are not transformed in any way and thus are considered stable
28215    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28216    pub fn as_str_name(&self) -> &'static str {
28217        match self {
28218            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
28219            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
28220            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
28221            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
28222            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
28223            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
28224            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
28225        }
28226    }
28227}
28228#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28229#[repr(i32)]
28230pub enum FtraceParseStatus {
28231    FtraceStatusUnspecified = 0,
28232    /// Not written, used for convenience of implementation:
28233    FtraceStatusOk = 1,
28234    /// Issues with reading data out of the ftrace ring buffer:
28235    FtraceStatusUnexpectedReadError = 2,
28236    FtraceStatusPartialPageRead = 3,
28237    /// Ring buffer binary data not matching our understanding of the layout:
28238    FtraceStatusAbiInvalidPageHeader = 4,
28239    FtraceStatusAbiShortEventHeader = 5,
28240    FtraceStatusAbiNullPadding = 6,
28241    FtraceStatusAbiShortPaddingLength = 7,
28242    FtraceStatusAbiInvalidPaddingLength = 8,
28243    FtraceStatusAbiShortTimeExtend = 9,
28244    FtraceStatusAbiShortTimeStamp = 10,
28245    FtraceStatusAbiShortDataLength = 11,
28246    FtraceStatusAbiZeroDataLength = 12,
28247    FtraceStatusAbiInvalidDataLength = 13,
28248    FtraceStatusAbiShortEventId = 14,
28249    FtraceStatusAbiEndOverflow = 15,
28250    /// Issues with parsing the event payload:
28251    FtraceStatusShortCompactEvent = 16,
28252    FtraceStatusInvalidEvent = 17,
28253}
28254impl FtraceParseStatus {
28255    /// String value of the enum field names used in the ProtoBuf definition.
28256    ///
28257    /// The values are not transformed in any way and thus are considered stable
28258    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28259    pub fn as_str_name(&self) -> &'static str {
28260        match self {
28261            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
28262            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
28263            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
28264            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
28265            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
28266            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
28267            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
28268            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
28269            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
28270            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
28271            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
28272            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
28273            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
28274            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
28275            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
28276            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
28277            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
28278            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
28279        }
28280    }
28281}
28282#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28283#[repr(i32)]
28284pub enum FtraceClock {
28285    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
28286    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
28287    Unspecified = 0,
28288    Unknown = 1,
28289    Global = 2,
28290    Local = 3,
28291    MonoRaw = 4,
28292}
28293impl FtraceClock {
28294    /// String value of the enum field names used in the ProtoBuf definition.
28295    ///
28296    /// The values are not transformed in any way and thus are considered stable
28297    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28298    pub fn as_str_name(&self) -> &'static str {
28299        match self {
28300            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
28301            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
28302            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
28303            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
28304            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
28305        }
28306    }
28307}
28308// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
28309
28310// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
28311
28312// Describes Chrome's Compositor scheduler's current state and associated
28313// variables.
28314//
28315// These protos and enums were adapted from the corresponding original JSON
28316// trace event for the scheduler state. In contrast to the JSON, we use strongly
28317// typed enum values instead of strings for many fields, and
28318// microsecond-granularity timestamps.
28319//
28320// The original format was generated in JSON by the code at
28321// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
28322//
28323// And is now generated as protozero:
28324// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
28325//
28326// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
28327
28328#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28329#[repr(i32)]
28330pub enum ChromeCompositorSchedulerAction {
28331    CcSchedulerActionUnspecified = 0,
28332    CcSchedulerActionNone = 1,
28333    CcSchedulerActionSendBeginMainFrame = 2,
28334    CcSchedulerActionCommit = 3,
28335    CcSchedulerActionActivateSyncTree = 4,
28336    CcSchedulerActionDrawIfPossible = 5,
28337    CcSchedulerActionDrawForced = 6,
28338    CcSchedulerActionDrawAbort = 7,
28339    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
28340    CcSchedulerActionPrepareTiles = 9,
28341    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
28342    CcSchedulerActionPerformImplSideInvalidation = 11,
28343    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
28344    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
28345}
28346impl ChromeCompositorSchedulerAction {
28347    /// String value of the enum field names used in the ProtoBuf definition.
28348    ///
28349    /// The values are not transformed in any way and thus are considered stable
28350    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28351    pub fn as_str_name(&self) -> &'static str {
28352        match self {
28353            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
28354            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
28355            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
28356            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
28357            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
28358            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
28359            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
28360            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
28361            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
28362            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
28363            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
28364            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
28365            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
28366            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
28367        }
28368    }
28369}
28370// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
28371
28372// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
28373
28374// Describes the state of the RendererScheduler for a given Renderer Process.
28375
28376/// RAIL Mode is an indication of the kind of work that a Renderer is currently
28377/// performing which is in turn used to prioritise work accordingly.
28378/// A fuller description of these modes can be found <https://web.dev/rail/>
28379#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28380#[repr(i32)]
28381pub enum ChromeRailMode {
28382    RailModeNone = 0,
28383    RailModeResponse = 1,
28384    RailModeAnimation = 2,
28385    RailModeIdle = 3,
28386    RailModeLoad = 4,
28387}
28388impl ChromeRailMode {
28389    /// String value of the enum field names used in the ProtoBuf definition.
28390    ///
28391    /// The values are not transformed in any way and thus are considered stable
28392    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28393    pub fn as_str_name(&self) -> &'static str {
28394        match self {
28395            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
28396            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
28397            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
28398            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
28399            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
28400        }
28401    }
28402}