Skip to main content

perfetto_trace_protos/
perfetto.protos.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct FtraceDescriptor {
4    /// Report the available atrace categories.
5    ///
6    /// Used by Traceur via `perfetto --query`.
7    #[prost(message, repeated, tag = "1")]
8    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
9}
10/// Nested message and enum types in `FtraceDescriptor`.
11pub mod ftrace_descriptor {
12    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13    pub struct AtraceCategory {
14        #[prost(string, optional, tag = "1")]
15        pub name: ::core::option::Option<::prost::alloc::string::String>,
16        #[prost(string, optional, tag = "2")]
17        pub description: ::core::option::Option<::prost::alloc::string::String>,
18    }
19}
20/// Description of GPU counters.
21/// This message is sent by a GPU counter producer to specify the counters
22/// available in the hardware.
23#[derive(Clone, PartialEq, ::prost::Message)]
24pub struct GpuCounterDescriptor {
25    #[prost(message, repeated, tag = "1")]
26    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
27    #[prost(message, repeated, tag = "2")]
28    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
29    #[prost(message, repeated, tag = "6")]
30    pub counter_groups: ::prost::alloc::vec::Vec<
31        gpu_counter_descriptor::GpuCounterGroupSpec,
32    >,
33    /// optional.  Minimum sampling period supported by the producer in
34    /// nanoseconds.
35    #[prost(uint64, optional, tag = "3")]
36    pub min_sampling_period_ns: ::core::option::Option<u64>,
37    /// optional.  Maximum sampling period supported by the producer in
38    /// nanoseconds.
39    #[prost(uint64, optional, tag = "4")]
40    pub max_sampling_period_ns: ::core::option::Option<u64>,
41    /// optional.  The producer supports counter sampling by instrumenting the
42    /// command buffer.
43    #[prost(bool, optional, tag = "5")]
44    pub supports_instrumented_sampling: ::core::option::Option<bool>,
45    /// optional.  The producer supports selecting counters by name via
46    /// GpuCounterConfig.counter_names. Not all producers support this; Android
47    /// GPU producers typically do not.
48    #[prost(bool, optional, tag = "7")]
49    pub supports_counter_names: ::core::option::Option<bool>,
50    /// optional.  The producer supports glob patterns in
51    /// GpuCounterConfig.counter_names for matching multiple counters by name.
52    #[prost(bool, optional, tag = "8")]
53    pub supports_counter_name_globs: ::core::option::Option<bool>,
54}
55/// Nested message and enum types in `GpuCounterDescriptor`.
56pub mod gpu_counter_descriptor {
57    #[derive(Clone, PartialEq, ::prost::Message)]
58    pub struct GpuCounterSpec {
59        #[prost(uint32, optional, tag = "1")]
60        pub counter_id: ::core::option::Option<u32>,
61        #[prost(string, optional, tag = "2")]
62        pub name: ::core::option::Option<::prost::alloc::string::String>,
63        #[prost(string, optional, tag = "3")]
64        pub description: ::core::option::Option<::prost::alloc::string::String>,
65        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
66        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
67        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
68        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
69        #[prost(bool, optional, tag = "9")]
70        pub select_by_default: ::core::option::Option<bool>,
71        #[prost(enumeration = "GpuCounterGroup", repeated, packed = "false", tag = "10")]
72        pub groups: ::prost::alloc::vec::Vec<i32>,
73        #[prost(enumeration = "gpu_counter_spec::ValueDirection", optional, tag = "11")]
74        pub value_direction: ::core::option::Option<i32>,
75        #[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
76        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
77    }
78    /// Nested message and enum types in `GpuCounterSpec`.
79    pub mod gpu_counter_spec {
80        /// Direction of the time interval that each emitted sample applies to.
81        /// A GPU counter is sampled at discrete timestamps, but its value really
82        /// represents a measurement over some interval around that timestamp
83        /// (e.g. average GPU utilization over the sampling window). This field
84        /// tells trace processor on which side of the timestamp that interval
85        /// lies, which controls where the value is drawn in the UI.
86        ///
87        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
88        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
89        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
90        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
91        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
92        #[derive(
93            Clone,
94            Copy,
95            Debug,
96            PartialEq,
97            Eq,
98            Hash,
99            PartialOrd,
100            Ord,
101            ::prost::Enumeration
102        )]
103        #[repr(i32)]
104        pub enum ValueDirection {
105            /// Treated as BACKWARDS_LOOKING (the historical default).
106            Unspecified = 0,
107            /// The value applies to the interval ending at this event's timestamp.
108            /// This is the convention used by AGI and most existing GPU producers,
109            /// where a sample reports what happened during the window leading up
110            /// to the timestamp.
111            BackwardsLooking = 1,
112            /// The value applies to the interval starting at this event's
113            /// timestamp, matching standard Perfetto counters. Producers that emit
114            /// explicit zero samples to denote "no activity from here on" should
115            /// use this so the zero is not back-propagated over earlier non-zero
116            /// samples (<https://github.com/google/perfetto/issues/5683>).
117            ForwardsLooking = 2,
118        }
119        impl ValueDirection {
120            /// String value of the enum field names used in the ProtoBuf definition.
121            ///
122            /// The values are not transformed in any way and thus are considered stable
123            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
124            pub fn as_str_name(&self) -> &'static str {
125                match self {
126                    Self::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
127                    Self::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
128                    Self::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
129                }
130            }
131            /// Creates an enum from field names used in the ProtoBuf definition.
132            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
133                match value {
134                    "VALUE_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
135                    "VALUE_DIRECTION_BACKWARDS_LOOKING" => Some(Self::BackwardsLooking),
136                    "VALUE_DIRECTION_FORWARDS_LOOKING" => Some(Self::ForwardsLooking),
137                    _ => None,
138                }
139            }
140        }
141        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
142        pub enum PeakValue {
143            #[prost(int64, tag = "5")]
144            IntPeakValue(i64),
145            #[prost(double, tag = "6")]
146            DoublePeakValue(f64),
147        }
148    }
149    /// Allow producer to group counters into block to represent counter islands.
150    /// A capacity may be specified to indicate the number of counters that can be
151    /// enable simultaneously in that block.
152    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
153    pub struct GpuCounterBlock {
154        /// required. Unique ID for the counter group.
155        #[prost(uint32, optional, tag = "1")]
156        pub block_id: ::core::option::Option<u32>,
157        /// optional. Number of counters supported by the block. No limit if unset.
158        #[prost(uint32, optional, tag = "2")]
159        pub block_capacity: ::core::option::Option<u32>,
160        /// optional. Name of block.
161        #[prost(string, optional, tag = "3")]
162        pub name: ::core::option::Option<::prost::alloc::string::String>,
163        /// optional. Description for the block.
164        #[prost(string, optional, tag = "4")]
165        pub description: ::core::option::Option<::prost::alloc::string::String>,
166        /// list of counters that are part of the block.
167        #[prost(uint32, repeated, packed = "false", tag = "5")]
168        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
169    }
170    /// Allow producer to define custom counter groups. Unlike the fixed
171    /// GpuCounterGroup enum (which provides broad categories), these groups
172    /// let the producer define hardware-specific groupings that the UI uses
173    /// to organize counter tracks. Can also be used to provide display names
174    /// and descriptions for the fixed GpuCounterGroup enum values by setting
175    /// group_id to the enum value.
176    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
177    pub struct GpuCounterGroupSpec {
178        /// required. Unique ID for this group within the descriptor.
179        #[prost(uint32, optional, tag = "1")]
180        pub group_id: ::core::option::Option<u32>,
181        /// optional. Display name for the group.
182        #[prost(string, optional, tag = "2")]
183        pub name: ::core::option::Option<::prost::alloc::string::String>,
184        /// optional. Description of the group.
185        #[prost(string, optional, tag = "3")]
186        pub description: ::core::option::Option<::prost::alloc::string::String>,
187        /// Counters that belong directly to this group (by counter_id).
188        #[prost(uint32, repeated, packed = "false", tag = "4")]
189        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
190    }
191    /// Logical groups for a counter.  This is used in the UI to present the
192    /// related counters together.
193    #[derive(
194        Clone,
195        Copy,
196        Debug,
197        PartialEq,
198        Eq,
199        Hash,
200        PartialOrd,
201        Ord,
202        ::prost::Enumeration
203    )]
204    #[repr(i32)]
205    pub enum GpuCounterGroup {
206        Unclassified = 0,
207        System = 1,
208        Vertices = 2,
209        Fragments = 3,
210        Primitives = 4,
211        /// Includes counters relating to caching and bandwidth.
212        Memory = 5,
213        Compute = 6,
214        RayTracing = 7,
215    }
216    impl GpuCounterGroup {
217        /// String value of the enum field names used in the ProtoBuf definition.
218        ///
219        /// The values are not transformed in any way and thus are considered stable
220        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
221        pub fn as_str_name(&self) -> &'static str {
222            match self {
223                Self::Unclassified => "UNCLASSIFIED",
224                Self::System => "SYSTEM",
225                Self::Vertices => "VERTICES",
226                Self::Fragments => "FRAGMENTS",
227                Self::Primitives => "PRIMITIVES",
228                Self::Memory => "MEMORY",
229                Self::Compute => "COMPUTE",
230                Self::RayTracing => "RAY_TRACING",
231            }
232        }
233        /// Creates an enum from field names used in the ProtoBuf definition.
234        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
235            match value {
236                "UNCLASSIFIED" => Some(Self::Unclassified),
237                "SYSTEM" => Some(Self::System),
238                "VERTICES" => Some(Self::Vertices),
239                "FRAGMENTS" => Some(Self::Fragments),
240                "PRIMITIVES" => Some(Self::Primitives),
241                "MEMORY" => Some(Self::Memory),
242                "COMPUTE" => Some(Self::Compute),
243                "RAY_TRACING" => Some(Self::RayTracing),
244                _ => None,
245            }
246        }
247    }
248    /// next id: 41
249    #[derive(
250        Clone,
251        Copy,
252        Debug,
253        PartialEq,
254        Eq,
255        Hash,
256        PartialOrd,
257        Ord,
258        ::prost::Enumeration
259    )]
260    #[repr(i32)]
261    pub enum MeasureUnit {
262        None = 0,
263        Bit = 1,
264        Kilobit = 2,
265        Megabit = 3,
266        Gigabit = 4,
267        Terabit = 5,
268        Petabit = 6,
269        Byte = 7,
270        Kilobyte = 8,
271        Megabyte = 9,
272        Gigabyte = 10,
273        Terabyte = 11,
274        Petabyte = 12,
275        Hertz = 13,
276        Kilohertz = 14,
277        Megahertz = 15,
278        Gigahertz = 16,
279        Terahertz = 17,
280        Petahertz = 18,
281        Nanosecond = 19,
282        Microsecond = 20,
283        Millisecond = 21,
284        Second = 22,
285        Minute = 23,
286        Hour = 24,
287        Vertex = 25,
288        Pixel = 26,
289        Triangle = 27,
290        Primitive = 38,
291        Fragment = 39,
292        Milliwatt = 28,
293        Watt = 29,
294        Kilowatt = 30,
295        Joule = 31,
296        Volt = 32,
297        Ampere = 33,
298        Celsius = 34,
299        Fahrenheit = 35,
300        Kelvin = 36,
301        /// Values should be out of 100.
302        Percent = 37,
303        Instruction = 40,
304    }
305    impl MeasureUnit {
306        /// String value of the enum field names used in the ProtoBuf definition.
307        ///
308        /// The values are not transformed in any way and thus are considered stable
309        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
310        pub fn as_str_name(&self) -> &'static str {
311            match self {
312                Self::None => "NONE",
313                Self::Bit => "BIT",
314                Self::Kilobit => "KILOBIT",
315                Self::Megabit => "MEGABIT",
316                Self::Gigabit => "GIGABIT",
317                Self::Terabit => "TERABIT",
318                Self::Petabit => "PETABIT",
319                Self::Byte => "BYTE",
320                Self::Kilobyte => "KILOBYTE",
321                Self::Megabyte => "MEGABYTE",
322                Self::Gigabyte => "GIGABYTE",
323                Self::Terabyte => "TERABYTE",
324                Self::Petabyte => "PETABYTE",
325                Self::Hertz => "HERTZ",
326                Self::Kilohertz => "KILOHERTZ",
327                Self::Megahertz => "MEGAHERTZ",
328                Self::Gigahertz => "GIGAHERTZ",
329                Self::Terahertz => "TERAHERTZ",
330                Self::Petahertz => "PETAHERTZ",
331                Self::Nanosecond => "NANOSECOND",
332                Self::Microsecond => "MICROSECOND",
333                Self::Millisecond => "MILLISECOND",
334                Self::Second => "SECOND",
335                Self::Minute => "MINUTE",
336                Self::Hour => "HOUR",
337                Self::Vertex => "VERTEX",
338                Self::Pixel => "PIXEL",
339                Self::Triangle => "TRIANGLE",
340                Self::Primitive => "PRIMITIVE",
341                Self::Fragment => "FRAGMENT",
342                Self::Milliwatt => "MILLIWATT",
343                Self::Watt => "WATT",
344                Self::Kilowatt => "KILOWATT",
345                Self::Joule => "JOULE",
346                Self::Volt => "VOLT",
347                Self::Ampere => "AMPERE",
348                Self::Celsius => "CELSIUS",
349                Self::Fahrenheit => "FAHRENHEIT",
350                Self::Kelvin => "KELVIN",
351                Self::Percent => "PERCENT",
352                Self::Instruction => "INSTRUCTION",
353            }
354        }
355        /// Creates an enum from field names used in the ProtoBuf definition.
356        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
357            match value {
358                "NONE" => Some(Self::None),
359                "BIT" => Some(Self::Bit),
360                "KILOBIT" => Some(Self::Kilobit),
361                "MEGABIT" => Some(Self::Megabit),
362                "GIGABIT" => Some(Self::Gigabit),
363                "TERABIT" => Some(Self::Terabit),
364                "PETABIT" => Some(Self::Petabit),
365                "BYTE" => Some(Self::Byte),
366                "KILOBYTE" => Some(Self::Kilobyte),
367                "MEGABYTE" => Some(Self::Megabyte),
368                "GIGABYTE" => Some(Self::Gigabyte),
369                "TERABYTE" => Some(Self::Terabyte),
370                "PETABYTE" => Some(Self::Petabyte),
371                "HERTZ" => Some(Self::Hertz),
372                "KILOHERTZ" => Some(Self::Kilohertz),
373                "MEGAHERTZ" => Some(Self::Megahertz),
374                "GIGAHERTZ" => Some(Self::Gigahertz),
375                "TERAHERTZ" => Some(Self::Terahertz),
376                "PETAHERTZ" => Some(Self::Petahertz),
377                "NANOSECOND" => Some(Self::Nanosecond),
378                "MICROSECOND" => Some(Self::Microsecond),
379                "MILLISECOND" => Some(Self::Millisecond),
380                "SECOND" => Some(Self::Second),
381                "MINUTE" => Some(Self::Minute),
382                "HOUR" => Some(Self::Hour),
383                "VERTEX" => Some(Self::Vertex),
384                "PIXEL" => Some(Self::Pixel),
385                "TRIANGLE" => Some(Self::Triangle),
386                "PRIMITIVE" => Some(Self::Primitive),
387                "FRAGMENT" => Some(Self::Fragment),
388                "MILLIWATT" => Some(Self::Milliwatt),
389                "WATT" => Some(Self::Watt),
390                "KILOWATT" => Some(Self::Kilowatt),
391                "JOULE" => Some(Self::Joule),
392                "VOLT" => Some(Self::Volt),
393                "AMPERE" => Some(Self::Ampere),
394                "CELSIUS" => Some(Self::Celsius),
395                "FAHRENHEIT" => Some(Self::Fahrenheit),
396                "KELVIN" => Some(Self::Kelvin),
397                "PERCENT" => Some(Self::Percent),
398                "INSTRUCTION" => Some(Self::Instruction),
399                _ => None,
400            }
401        }
402    }
403}
404#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
405pub struct TrackEventCategory {
406    #[prost(string, optional, tag = "1")]
407    pub name: ::core::option::Option<::prost::alloc::string::String>,
408    #[prost(string, optional, tag = "2")]
409    pub description: ::core::option::Option<::prost::alloc::string::String>,
410    #[prost(string, repeated, tag = "3")]
411    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
412}
413#[derive(Clone, PartialEq, ::prost::Message)]
414pub struct TrackEventDescriptor {
415    #[prost(message, repeated, tag = "1")]
416    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
417}
418#[derive(Clone, PartialEq, ::prost::Message)]
419pub struct VmProgram {
420    #[prost(uint32, optional, tag = "1")]
421    pub version: ::core::option::Option<u32>,
422    #[prost(message, repeated, tag = "2")]
423    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
424}
425#[derive(Clone, PartialEq, ::prost::Message)]
426pub struct VmInstruction {
427    #[prost(enumeration = "vm_instruction::AbortLevel", optional, tag = "6")]
428    pub abort_level: ::core::option::Option<i32>,
429    /// Sub-instructions executed if the current instruction succeeds
430    #[prost(message, repeated, tag = "7")]
431    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
432    #[prost(oneof = "vm_instruction::Operation", tags = "1, 2, 3, 4, 5")]
433    pub operation: ::core::option::Option<vm_instruction::Operation>,
434}
435/// Nested message and enum types in `VmInstruction`.
436pub mod vm_instruction {
437    #[derive(
438        Clone,
439        Copy,
440        Debug,
441        PartialEq,
442        Eq,
443        Hash,
444        PartialOrd,
445        Ord,
446        ::prost::Enumeration
447    )]
448    #[repr(i32)]
449    pub enum AbortLevel {
450        /// Skip current instruction but execute following ones
451        SkipCurrentInstruction = 1,
452        /// Skip current instruction as well as following ones (default)
453        SkipCurrentInstructionAndBreakOuter = 2,
454        /// Abort whole program
455        Abort = 3,
456    }
457    impl AbortLevel {
458        /// String value of the enum field names used in the ProtoBuf definition.
459        ///
460        /// The values are not transformed in any way and thus are considered stable
461        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
462        pub fn as_str_name(&self) -> &'static str {
463            match self {
464                Self::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
465                Self::SkipCurrentInstructionAndBreakOuter => {
466                    "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER"
467                }
468                Self::Abort => "ABORT",
469            }
470        }
471        /// Creates an enum from field names used in the ProtoBuf definition.
472        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
473            match value {
474                "SKIP_CURRENT_INSTRUCTION" => Some(Self::SkipCurrentInstruction),
475                "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER" => {
476                    Some(Self::SkipCurrentInstructionAndBreakOuter)
477                }
478                "ABORT" => Some(Self::Abort),
479                _ => None,
480            }
481        }
482    }
483    #[derive(Clone, PartialEq, ::prost::Oneof)]
484    pub enum Operation {
485        #[prost(message, tag = "1")]
486        Select(super::VmOpSelect),
487        #[prost(message, tag = "2")]
488        RegLoad(super::VmOpRegLoad),
489        #[prost(message, tag = "3")]
490        Merge(super::VmOpMerge),
491        #[prost(message, tag = "4")]
492        Set(super::VmOpSet),
493        #[prost(message, tag = "5")]
494        Del(super::VmOpDel),
495    }
496}
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct VmOpSelect {
499    /// Enum SRC|DST|BOTH. Default=SRC.
500    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
501    pub cursor: ::core::option::Option<i32>,
502    #[prost(message, repeated, tag = "2")]
503    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
504    /// Creates the submessage if doesn't exist in the DST cursor
505    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
506    #[prost(bool, optional, tag = "3")]
507    pub create_if_not_exist: ::core::option::Option<bool>,
508}
509/// Nested message and enum types in `VmOpSelect`.
510pub mod vm_op_select {
511    /// A path component is either: (1) a field id to descend into (common case);
512    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
513    /// repeated fields, where we snoop a sub-field as a map key)
514    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
515    pub struct PathComponent {
516        /// Only valid when using field_id. This makes select have foreach
517        /// semantics. This means that the body of nested_instructions is
518        /// executed several times, once per each repeated submessage.
519        #[prost(bool, optional, tag = "5")]
520        pub is_repeated: ::core::option::Option<bool>,
521        /// Only valid when using map_key_field_id. This defines which
522        /// register (R1..R32) should be used to match the key of the dict
523        /// in a map lookup operation.
524        /// In other words:
525        /// foreach msg in repeated message {
526        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
527        ///       break;  // Lookup succeeded, PathComponent resolves here.
528        ///    }
529        /// }
530        #[prost(uint32, optional, tag = "6")]
531        pub register_to_match: ::core::option::Option<u32>,
532        /// Only valid when using field_id and is_repeated=true. When iterating
533        /// over repeated fields, stores the current iteration index into the
534        /// the register R1..R32 defined below. This can be used to do complex
535        /// operations like "find the entry in the array that has width==100,
536        /// remember its offset in the SRC array and overwrite the matching
537        /// i-th element in the DST array. We will probably never implement
538        /// this but it's here for completeness.
539        #[prost(uint32, optional, tag = "7")]
540        pub store_foreach_index_into_register: ::core::option::Option<u32>,
541        #[prost(oneof = "path_component::Field", tags = "1, 2, 3")]
542        pub field: ::core::option::Option<path_component::Field>,
543    }
544    /// Nested message and enum types in `PathComponent`.
545    pub mod path_component {
546        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
547        pub enum Field {
548            #[prost(uint32, tag = "1")]
549            FieldId(u32),
550            #[prost(uint32, tag = "2")]
551            ArrayIndex(u32),
552            /// The ID of the field in the repeated submessage that we
553            /// use as a key (e.g. LayerState.layer_id). When setting this
554            /// register_to_match must also be set, to tell what's the
555            /// expected value of the key we are looking up.
556            #[prost(uint32, tag = "3")]
557            MapKeyFieldId(u32),
558        }
559    }
560}
561#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
562pub struct VmOpRegLoad {
563    /// SRC(default) | DST.
564    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
565    pub cursor: ::core::option::Option<i32>,
566    /// 1=R1, 2=R2... 32=R32
567    #[prost(uint32, optional, tag = "2")]
568    pub dst_register: ::core::option::Option<u32>,
569}
570/// Merges SRC into DST. Both need to point to a message (not a field).
571#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
572pub struct VmOpMerge {
573    /// When true, the merge operation will skip any field that is already
574    /// resolved as a message node in the destination tree.
575    ///
576    /// This is used to support merging of nested messages. Because ProtoVM
577    /// does not know the schema, a standard MERGE cannot distinguish
578    /// between a string and a message on the wire and it would overwrite
579    /// the entire blob, destroying granular updates.
580    ///
581    /// By setting this to true, a program can be implemented to do a
582    /// bottom-up, multi-step merge by traversing into and merging
583    /// the deepest submessages first, then moving up to the parent
584    /// message and merging it with skip_submessages = true.
585    #[prost(bool, optional, tag = "1")]
586    pub skip_submessages: ::core::option::Option<bool>,
587    /// When true, the merge operation will remove the dst field if the src field
588    /// is empty.
589    ///
590    /// This can be used to replicate the removal of a subobject within the
591    /// producer's state. E.g.
592    /// This event on the producer side: mProducerState.mSubobject = nullptr
593    /// can be represented by this patch: { producer_state { subobject {} }}
594    #[prost(bool, optional, tag = "2")]
595    pub del_if_src_empty: ::core::option::Option<bool>,
596}
597/// Copies SRC into DST. If a message, replaces the DST node, discarding any
598/// pre-existing field.
599#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
600pub struct VmOpSet {}
601/// Delete the field or message pointed by DST.
602#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
603pub struct VmOpDel {}
604/// This message is sent from Producer(s) to the tracing Service when registering
605/// to advertise their capabilities. It describes the structure of tracing
606/// protos that will be produced by the data source and the supported filters.
607#[derive(Clone, PartialEq, ::prost::Message)]
608pub struct DataSourceDescriptor {
609    /// e.g., "linux.ftrace", "chromium.tracing"
610    #[prost(string, optional, tag = "1")]
611    pub name: ::core::option::Option<::prost::alloc::string::String>,
612    /// When non-zero, this is a unique ID within the scope of the Producer for
613    /// this data source (it is NOT globally unique). This is useful to
614    /// differentiate between data sources with matching names when calling
615    /// UpdateDataSource(). This field has been introduced in November 2021
616    /// (v22, Android T) and is not supported on older versions.
617    #[prost(uint64, optional, tag = "7")]
618    pub id: ::core::option::Option<u64>,
619    /// When true the data source is expected to ack the stop request through the
620    /// NotifyDataSourceStopped() IPC. This field has been introduced after
621    /// Android P in Jul 2018 and is not supported on older versions.
622    #[prost(bool, optional, tag = "2")]
623    pub will_notify_on_stop: ::core::option::Option<bool>,
624    /// When true the data source is expected to ack the start request through the
625    /// NotifyDataSourceStarted() IPC. This field has been introduced after
626    /// Android P in March 2019 and is not supported on older versions.
627    #[prost(bool, optional, tag = "3")]
628    pub will_notify_on_start: ::core::option::Option<bool>,
629    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
630    /// set if the data source writes packets that refer to previous trace
631    /// contents, and knows how to stop referring to the already-emitted data.
632    #[prost(bool, optional, tag = "4")]
633    pub handles_incremental_state_clear: ::core::option::Option<bool>,
634    /// If true, indicates that the data source does nothing upon Flush. This
635    /// allows the service to reduce the flush-related IPC traffic and better deal
636    /// with frozen producers (see go/perfetto-frozen). This is usually the case
637    /// for data sources like 'track_event' that don't have access to the various
638    /// thread task runners to post a flush task and rely purely on server-side
639    /// scraping.
640    /// Introduced in v39 / Android V.
641    #[prost(bool, optional, tag = "9")]
642    pub no_flush: ::core::option::Option<bool>,
643    /// If present, the tracing service executes this program within a ProtoVM to
644    /// process overwritten packets (patches). The service computes a hash of the
645    /// program to detect and disambiguate between different versions; if multiple
646    /// versions (from different producers) are specified for the same data source,
647    /// the service instantiates a dedicated ProtoVM for each.
648    #[prost(message, optional, tag = "10")]
649    pub protovm_program: ::core::option::Option<VmProgram>,
650    /// Optional specification about available GPU counters.
651    #[prost(message, optional, tag = "5")]
652    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
653    #[prost(message, optional, tag = "6")]
654    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
655    #[prost(message, optional, tag = "8")]
656    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
657}
658/// Reports the state of the tracing service. Used to gather details about the
659/// data sources connected.
660/// See ConsumerPort::QueryServiceState().
661#[derive(Clone, PartialEq, ::prost::Message)]
662pub struct TracingServiceState {
663    /// Lists all the producers connected.
664    #[prost(message, repeated, tag = "1")]
665    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
666    /// Lists the data sources available.
667    #[prost(message, repeated, tag = "2")]
668    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
669    /// Lists the tracing sessions active AND owned by a consumer that has the same
670    /// UID of the caller (or all of them if the caller is root).
671    /// Introduced in v24 / Android T.
672    #[prost(message, repeated, tag = "6")]
673    pub tracing_sessions: ::prost::alloc::vec::Vec<
674        tracing_service_state::TracingSession,
675    >,
676    /// This is always set to true from v24 and beyond. This flag is only used to
677    /// tell the difference between: (1) talking to a recent service which happens
678    /// to have no tracing session active; (2) talking to an older version of the
679    /// service which will never report any tracing session.
680    #[prost(bool, optional, tag = "7")]
681    pub supports_tracing_sessions: ::core::option::Option<bool>,
682    /// Total number of tracing sessions.
683    #[prost(int32, optional, tag = "3")]
684    pub num_sessions: ::core::option::Option<i32>,
685    /// Number of tracing sessions in the started state. Always <= num_sessions.
686    #[prost(int32, optional, tag = "4")]
687    pub num_sessions_started: ::core::option::Option<i32>,
688    /// The version of traced (the same returned by `traced --version`).
689    /// This is a human readable string with and its format varies depending on
690    /// the build system and the repo (standalone vs AOSP).
691    /// This is intended for human debugging only.
692    #[prost(string, optional, tag = "5")]
693    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
694}
695/// Nested message and enum types in `TracingServiceState`.
696pub mod tracing_service_state {
697    /// Describes a producer process.
698    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
699    pub struct Producer {
700        /// Unique ID of the producer (monotonic counter).
701        #[prost(int32, optional, tag = "1")]
702        pub id: ::core::option::Option<i32>,
703        /// Typically matches the process name.
704        #[prost(string, optional, tag = "2")]
705        pub name: ::core::option::Option<::prost::alloc::string::String>,
706        /// Unix pid of the remote process. Supported only on Linux-based systems.
707        /// Introduced in v24 / Android T.
708        #[prost(int32, optional, tag = "5")]
709        pub pid: ::core::option::Option<i32>,
710        /// Unix uid of the remote process.
711        #[prost(int32, optional, tag = "3")]
712        pub uid: ::core::option::Option<i32>,
713        /// The version of the client library used by the producer.
714        /// This is a human readable string with and its format varies depending on
715        /// the build system and the repo (standalone vs AOSP).
716        /// This is intended for human debugging only.
717        #[prost(string, optional, tag = "4")]
718        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
719        /// Returns true if the process appears to be frozen (Android only).
720        /// Introduced in Perfetto V49 / Android 24Q4.
721        #[prost(bool, optional, tag = "6")]
722        pub frozen: ::core::option::Option<bool>,
723        /// Identifies the machine this producer is connected from in multi-machine
724        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
725        /// means the producer is connected from the local/host machine where the
726        /// tracing service is running.
727        /// Introduced in Perfetto V56 / Android 26Q3.
728        #[prost(uint32, optional, tag = "7")]
729        pub machine_id: ::core::option::Option<u32>,
730        /// Human-readable name of the machine, as advertised by the relay (usually
731        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
732        /// remote's `uname -s`). Only set when machine_id is non-zero.
733        /// Introduced in Perfetto V56 / Android 26Q3.
734        #[prost(string, optional, tag = "8")]
735        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
736    }
737    /// Describes a data source registered by a producer. Data sources are listed
738    /// regardless of the fact that they are being used or not.
739    #[derive(Clone, PartialEq, ::prost::Message)]
740    pub struct DataSource {
741        /// Descriptor passed by the data source when calling RegisterDataSource().
742        #[prost(message, optional, tag = "1")]
743        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
744        /// ID of the producer, as per Producer.id.
745        #[prost(int32, optional, tag = "2")]
746        pub producer_id: ::core::option::Option<i32>,
747    }
748    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
749    pub struct TracingSession {
750        /// The TracingSessionID.
751        #[prost(uint64, optional, tag = "1")]
752        pub id: ::core::option::Option<u64>,
753        /// The Unix uid of the consumer that started the session.
754        /// This is meaningful only if the caller is root. In all other cases only
755        /// tracing sessions that match the caller UID will be displayed.
756        #[prost(int32, optional, tag = "2")]
757        pub consumer_uid: ::core::option::Option<i32>,
758        /// Internal state of the tracing session.
759        /// These strings are FYI only and subjected to change.
760        #[prost(string, optional, tag = "3")]
761        pub state: ::core::option::Option<::prost::alloc::string::String>,
762        /// The unique_session_name as set in the trace config (might be empty).
763        #[prost(string, optional, tag = "4")]
764        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
765        /// The number and size of each buffer.
766        #[prost(uint32, repeated, packed = "false", tag = "5")]
767        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
768        /// Duration, as specified in the TraceConfig.duration_ms.
769        #[prost(uint32, optional, tag = "6")]
770        pub duration_ms: ::core::option::Option<u32>,
771        /// Number of data sources involved in the session.
772        #[prost(uint32, optional, tag = "7")]
773        pub num_data_sources: ::core::option::Option<u32>,
774        /// Time when the session was started, in the CLOCK_REALTIME domain.
775        /// Available only on Linux-based systems.
776        #[prost(int64, optional, tag = "8")]
777        pub start_realtime_ns: ::core::option::Option<i64>,
778        /// The bugreport_score, as set in TraceConfig.bugreport_score.
779        #[prost(int32, optional, tag = "9")]
780        pub bugreport_score: ::core::option::Option<i32>,
781        /// As per TraceConfig.bugreport_filename.
782        #[prost(string, optional, tag = "10")]
783        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
784        /// If true, the session is in the STARTED state. If false the session is in
785        /// any other state (see `state` field).
786        #[prost(bool, optional, tag = "11")]
787        pub is_started: ::core::option::Option<bool>,
788    }
789}
790/// Arbitrary key value pairs which can attached to a trace to provide context
791/// about any facet of the trace. This can include, what data it contains,
792/// properties of the host / machine the trace was collected on, and other
793/// interesting information about a trace.
794/// /
795/// Examples include:
796/// gradle_version = "9.0.10-alpha01"
797/// java_major_version = 24
798/// /
799/// Attributes can be written as a TracePacket or set in
800/// `TraceConfig.trace_attributes` (e.g. via `perfetto --add-attribute`).
801/// /
802/// All keys get prefixed with `trace_attribute.` in the UI and in
803/// `traceprocessor`. If there are multiple trace attribute packets that use the
804/// same key, then the latest value wins.
805/// These key value pairs show up in the `Overview` section in
806/// Perfetto UI. Additionally, these key, value pairs can also be queried using
807/// Pefetto SQL by using the following query:
808/// /
809/// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
810#[derive(Clone, PartialEq, ::prost::Message)]
811pub struct TraceAttributes {
812    #[prost(message, repeated, tag = "1")]
813    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
814}
815/// Nested message and enum types in `TraceAttributes`.
816pub mod trace_attributes {
817    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
818    pub struct Attribute {
819        /// The key
820        #[prost(string, optional, tag = "1")]
821        pub key: ::core::option::Option<::prost::alloc::string::String>,
822        /// The value
823        #[prost(oneof = "attribute::Value", tags = "2, 3")]
824        pub value: ::core::option::Option<attribute::Value>,
825    }
826    /// Nested message and enum types in `Attribute`.
827    pub mod attribute {
828        /// The value
829        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
830        pub enum Value {
831            #[prost(int64, tag = "2")]
832            LongValue(i64),
833            #[prost(string, tag = "3")]
834            StringValue(::prost::alloc::string::String),
835        }
836    }
837}
838/// Options for the android.aflags data source.
839/// This data source captures snapshots of Android aconfig flags.
840/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
841/// for more information on aconfig flags.
842#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
843pub struct AndroidAflagsConfig {
844    /// Frequency of polling. If absent or 0, the state will be recorded once,
845    /// at the start of the trace.
846    ///
847    /// It is recommended to either leave this absent or set it to a large
848    /// value as each invocation of the `aflags` tool can be time consuming
849    /// (approx. 350ms) and also triggers an expensive flush. This is required to
850    /// be > 1000ms if set, to avoid excessive CPU usage.
851    #[prost(uint32, optional, tag = "1")]
852    pub poll_ms: ::core::option::Option<u32>,
853}
854/// Data source that lists game modes and game interventions of games
855/// on an Android device.
856#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
857pub struct AndroidGameInterventionListConfig {
858    /// If not empty, emit info about only the following list of package names
859    /// (exact match, no regex). Otherwise, emit info about all packages.
860    #[prost(string, repeated, tag = "1")]
861    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
862}
863/// Custom configuration for the "android.input.inputevent" data source.
864///
865/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
866///
867/// Next ID: 6
868#[derive(Clone, PartialEq, ::prost::Message)]
869pub struct AndroidInputEventConfig {
870    /// The tracing mode to use. If unspecified, it will default to
871    /// TRACE_MODE_USE_RULES.
872    #[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
873    pub mode: ::core::option::Option<i32>,
874    /// The list of rules to use to determine the trace level of events.
875    /// Each event will be traced using the TraceLevel of the first rule that it
876    /// triggers from this list. The rules are evaluated in the order in which they
877    /// are specified. If an event does not match any of the rules,
878    /// TRACE_LEVEL_NONE will be used by default.
879    #[prost(message, repeated, tag = "2")]
880    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
881    /// Trace input events processed by the system as they are being dispatched
882    /// to application windows. All trace rules will apply.
883    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
884    ///    it will
885    ///      trace InputDispatcher's inbound events (which does not include events
886    ///      synthesized within InputDispatcher) that match the rules.
887    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
888    ///    events
889    ///      matching the rules, including all events synthesized within
890    ///      InputDispatcher, will be traced.
891    #[prost(bool, optional, tag = "3")]
892    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
893    /// Trace details about which windows the system is sending each input event
894    /// to. All trace rules will apply.
895    #[prost(bool, optional, tag = "4")]
896    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
897    /// Trace evdev events received from the kernel, including device additions and
898    /// removals.
899    #[prost(bool, optional, tag = "5")]
900    pub trace_evdev_events: ::core::option::Option<bool>,
901}
902/// Nested message and enum types in `AndroidInputEventConfig`.
903pub mod android_input_event_config {
904    /// A rule that specifies the TraceLevel for an event based on matching
905    /// conditions. All matchers in the rule are optional. To trigger this rule, an
906    /// event must match all of its specified matchers (i.e. the matchers function
907    /// like a series of conditions connected by a logical 'AND' operator). A rule
908    /// with no specified matchers will match all events. Next ID: 6
909    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
910    pub struct TraceRule {
911        /// The trace level to be used for events that trigger this rule.
912        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
913        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
914        pub trace_level: ::core::option::Option<i32>,
915        /// Package matchers
916        ///
917        /// Respectively matches if all or any of the target apps for this event are
918        /// contained in the specified list of package names.
919        ///
920        /// Intended usage:
921        ///    - Use match_all_packages to selectively allow tracing for the listed
922        ///    packages.
923        ///    - Use match_any_packages to selectively deny tracing for certain
924        ///    packages.
925        ///
926        /// WARNING: Great care must be taken when designing rules for field tracing!
927        ///           This is because each event is almost always sent to more than
928        ///           one app.
929        ///               For example, when allowing tracing for a package that has a
930        ///               spy window
931        ///           over the display (e.g. SystemUI) using match_any_packages,
932        ///           essentially all input will be recorded on that display. This is
933        ///           because the events will be sent to the spy as well as the
934        ///           foreground app, and regardless of what the foreground app is,
935        ///           the event will end up being traced.
936        ///               Alternatively, when attempting to block tracing for specific
937        ///               packages using
938        ///           match_all_packages, no events will likely be blocked. This is
939        ///           because the event will also be sent to other apps (such as, but
940        ///           not limited to, ones with spy windows), so the matcher will not
941        ///           match unless all other targets are also listed under the
942        ///           match_all_packages list.
943        #[prost(string, repeated, tag = "2")]
944        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
945        #[prost(string, repeated, tag = "3")]
946        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
947        /// Matches if the event is secure, which means that at least one of the
948        /// targets of this event is using the window flag FLAG_SECURE.
949        #[prost(bool, optional, tag = "4")]
950        pub match_secure: ::core::option::Option<bool>,
951        /// Matches if there was an active IME connection while this event was being
952        /// processed.
953        #[prost(bool, optional, tag = "5")]
954        pub match_ime_connection_active: ::core::option::Option<bool>,
955    }
956    /// Trace modes are tracing presets that are included in the system.
957    #[derive(
958        Clone,
959        Copy,
960        Debug,
961        PartialEq,
962        Eq,
963        Hash,
964        PartialOrd,
965        Ord,
966        ::prost::Enumeration
967    )]
968    #[repr(i32)]
969    pub enum TraceMode {
970        /// Preset mode for maximal tracing.
971        /// WARNING: This will bypass all privacy measures on debuggable builds, and
972        /// will record all
973        ///           input events processed by the system, regardless of the context
974        ///           in which they were processed. It should only be used for tracing
975        ///           on a local device or for tests. It should NEVER be used for
976        ///           field tracing.
977        TraceAll = 0,
978        /// Use the tracing rules defined in this config to specify what events to
979        /// trace.
980        UseRules = 1,
981    }
982    impl TraceMode {
983        /// String value of the enum field names used in the ProtoBuf definition.
984        ///
985        /// The values are not transformed in any way and thus are considered stable
986        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
987        pub fn as_str_name(&self) -> &'static str {
988            match self {
989                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
990                Self::UseRules => "TRACE_MODE_USE_RULES",
991            }
992        }
993        /// Creates an enum from field names used in the ProtoBuf definition.
994        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
995            match value {
996                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
997                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
998                _ => None,
999            }
1000        }
1001    }
1002    /// The level of tracing that should be applied to an event.
1003    #[derive(
1004        Clone,
1005        Copy,
1006        Debug,
1007        PartialEq,
1008        Eq,
1009        Hash,
1010        PartialOrd,
1011        Ord,
1012        ::prost::Enumeration
1013    )]
1014    #[repr(i32)]
1015    pub enum TraceLevel {
1016        /// Do not trace the input event.
1017        None = 0,
1018        /// Trace the event as a redacted event, where certain sensitive fields are
1019        /// omitted from the trace, including the coordinates of pointer events and
1020        /// the key/scan codes of key events.
1021        Redacted = 1,
1022        /// Trace the complete event.
1023        Complete = 2,
1024    }
1025    impl TraceLevel {
1026        /// String value of the enum field names used in the ProtoBuf definition.
1027        ///
1028        /// The values are not transformed in any way and thus are considered stable
1029        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1030        pub fn as_str_name(&self) -> &'static str {
1031            match self {
1032                Self::None => "TRACE_LEVEL_NONE",
1033                Self::Redacted => "TRACE_LEVEL_REDACTED",
1034                Self::Complete => "TRACE_LEVEL_COMPLETE",
1035            }
1036        }
1037        /// Creates an enum from field names used in the ProtoBuf definition.
1038        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1039            match value {
1040                "TRACE_LEVEL_NONE" => Some(Self::None),
1041                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
1042                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
1043                _ => None,
1044            }
1045        }
1046    }
1047}
1048#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1049pub struct AndroidLogConfig {
1050    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
1051    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1052    /// If set ignores all log messages whose prio is < the given value.
1053    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
1054    pub min_prio: ::core::option::Option<i32>,
1055    /// If non-empty ignores all log messages whose tag doesn't match one of the
1056    /// specified values.
1057    #[prost(string, repeated, tag = "4")]
1058    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1059    /// If true, includes the contents of the logcat buffers that were already
1060    /// present before the data source started. By default (false), only new
1061    /// log entries produced after the data source starts are recorded.
1062    /// Can be useful for boot traces or situations where logs from before
1063    /// traced started are important.
1064    #[prost(bool, optional, tag = "5")]
1065    pub preserve_log_buffer: ::core::option::Option<bool>,
1066}
1067/// Data source that polls for display state. This should only be used for
1068/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1069#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1070pub struct AndroidPolledStateConfig {
1071    /// Frequency of polling. If absent the state will be recorded once, at the
1072    /// start of the trace.
1073    /// This is required to be > 100ms to avoid excessive CPU usage.
1074    #[prost(uint32, optional, tag = "1")]
1075    pub poll_ms: ::core::option::Option<u32>,
1076}
1077/// Configuration for the "android.process_state" data source.
1078#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1079pub struct AndroidProcessStateConfig {
1080    /// If true, dumps process name, start seq id, and start time in the snapshot.
1081    /// When false (default), these fields are omitted to save trace buffer space.
1082    #[prost(bool, optional, tag = "1")]
1083    pub dump_process_metadata: ::core::option::Option<bool>,
1084}
1085/// Data source that controls the system properties used to guard initialization
1086/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1087/// processes like SurfaceFlinger.
1088///
1089/// This data source only tells Skia to initialized the Perfetto SDK and start
1090/// routing data to the Track Event system instead of ATrace. For those events
1091/// to actually show up in a trace, the track_event data source must be used as
1092/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1093/// processes may need to be restarted for Skia to revert to using ATrace if
1094/// Track Events are no longer desired.
1095///
1096/// In addition to switching Skia to use Perfetto's track_event data source,
1097/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1098/// internal tracing constraints and allows the track_event config to specify
1099/// which categories should be traced. Filtering to the "skia.always" category
1100/// *tag* in a track_event config can be used to re-enable the standard
1101/// constraints typically used with ATrace.
1102///
1103/// Data source name: android.sdk_sysprop_guard
1104/// Introduced in Android 14 (U) QPR1.
1105/// Next id: 4
1106#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1107pub struct AndroidSdkSyspropGuardConfig {
1108    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1109    /// integration with the track_event data source in RenderEngine.
1110    /// If false or omitted, the simpler ATrace fallback is used.
1111    ///
1112    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1113    /// restarted.
1114    ///
1115    /// Specifically this sets the following system properties:
1116    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1117    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1118    ///
1119    /// Does not affect actual track_event data *collection*, which must be
1120    /// configured separately.
1121    #[prost(bool, optional, tag = "1")]
1122    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1123    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1124    /// with the track_event data source. hwui_package_name_filter
1125    /// can be used to control which apps are affected.
1126    /// If false or omitted, the simpler ATrace fallback is used.
1127    ///
1128    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1129    /// restarted.
1130    ///
1131    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1132    /// If filtering is NOT set, this controls these GLOBAL system properties:
1133    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1134    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1135    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1136    /// for each package listed in the filter:
1137    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1138    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1139    ///
1140    /// Does not affect actual track_event data *collection*, which must be
1141    /// configured separately.
1142    #[prost(bool, optional, tag = "2")]
1143    pub hwui_skia_track_events: ::core::option::Option<bool>,
1144    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1145    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1146    #[prost(string, repeated, tag = "3")]
1147    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1148        ::prost::alloc::string::String,
1149    >,
1150}
1151/// Data source that polls for system properties.
1152#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1153pub struct AndroidSystemPropertyConfig {
1154    /// Frequency of polling. If absent the state will be recorded once, at the
1155    /// start of the trace.
1156    /// This is required to be > 100ms to avoid excessive CPU usage.
1157    #[prost(uint32, optional, tag = "1")]
1158    pub poll_ms: ::core::option::Option<u32>,
1159    /// Properties to poll. All property names must start with "debug.tracing.".
1160    #[prost(string, repeated, tag = "2")]
1161    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1162}
1163/// Configuration for the android.app_wakelocks data source.
1164#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1165pub struct AppWakelocksConfig {
1166    /// Specifies the delay (in milliseconds) after which the data source will
1167    /// attempt to write events. Writing less frequently reduces the trace size by
1168    /// making better use of the packed arrays and reducing the total number of
1169    /// TracePackets needed (which each have dozens of bytes of overhead). The
1170    /// suggested delay is 5000ms.
1171    #[prost(int32, optional, tag = "1")]
1172    pub write_delay_ms: ::core::option::Option<i32>,
1173    /// When set, wakelocks held for less than this amount of time are filtered
1174    /// from the resulting trace. Note: duration is computed by matching wakelocks
1175    /// with identical attributes, not by tracking the underlying objects. The
1176    /// threshold should be < the trace's flush_period_ms.
1177    #[prost(int32, optional, tag = "2")]
1178    pub filter_duration_below_ms: ::core::option::Option<i32>,
1179    /// When true, the owner_pid is dropped from the resulting output, reducing the
1180    /// size of the interning tables.
1181    #[prost(bool, optional, tag = "3")]
1182    pub drop_owner_pid: ::core::option::Option<bool>,
1183}
1184/// Data source that records CPU per UID data.
1185#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1186pub struct CpuPerUidConfig {
1187    /// Record at this frequency.
1188    #[prost(uint32, optional, tag = "1")]
1189    pub poll_ms: ::core::option::Option<u32>,
1190}
1191/// Config for the "android.display.video" data source. Unset/0 fields use
1192/// the producer's default.
1193#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1194pub struct DisplayVideoConfig {
1195    /// Scale applied to each display's resolution before capture (0.25 =
1196    /// quarter size).
1197    #[prost(float, optional, tag = "1")]
1198    pub scale: ::core::option::Option<f32>,
1199    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
1200    pub format: ::core::option::Option<i32>,
1201    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
1202    #[prost(uint32, optional, tag = "3")]
1203    pub key_frame_interval_secs: ::core::option::Option<u32>,
1204    /// Per-display cap on emitted bytes. On reaching it the stream is torn
1205    /// down with a VideoFrameError (SIZE_CAP_HIT).
1206    #[prost(uint64, optional, tag = "4")]
1207    pub max_stream_size_bytes: ::core::option::Option<u64>,
1208    /// Target video encoder bitrate in bits per second. Controls quality vs
1209    /// trace size at a fixed resolution (unlike `scale`, which changes the
1210    /// resolution). Unset lets the producer pick a default from the (scaled)
1211    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
1212    #[prost(uint32, optional, tag = "5")]
1213    pub bitrate_bps: ::core::option::Option<u32>,
1214}
1215/// Nested message and enum types in `DisplayVideoConfig`.
1216pub mod display_video_config {
1217    #[derive(
1218        Clone,
1219        Copy,
1220        Debug,
1221        PartialEq,
1222        Eq,
1223        Hash,
1224        PartialOrd,
1225        Ord,
1226        ::prost::Enumeration
1227    )]
1228    #[repr(i32)]
1229    pub enum Format {
1230        /// Default (H.264).
1231        Unspecified = 0,
1232        H264 = 1,
1233        Hevc = 2,
1234    }
1235    impl Format {
1236        /// String value of the enum field names used in the ProtoBuf definition.
1237        ///
1238        /// The values are not transformed in any way and thus are considered stable
1239        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1240        pub fn as_str_name(&self) -> &'static str {
1241            match self {
1242                Self::Unspecified => "FORMAT_UNSPECIFIED",
1243                Self::H264 => "FORMAT_H264",
1244                Self::Hevc => "FORMAT_HEVC",
1245            }
1246        }
1247        /// Creates an enum from field names used in the ProtoBuf definition.
1248        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1249            match value {
1250                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1251                "FORMAT_H264" => Some(Self::H264),
1252                "FORMAT_HEVC" => Some(Self::Hevc),
1253                _ => None,
1254            }
1255        }
1256    }
1257}
1258/// Custom configuration for the "android.inputmethod" data source.
1259#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1260pub struct InputMethodConfig {
1261    /// If true, enables tracing in the clients.
1262    #[prost(bool, optional, tag = "1")]
1263    pub client: ::core::option::Option<bool>,
1264    /// If true, enables tracing in InputMethodService.
1265    #[prost(bool, optional, tag = "2")]
1266    pub service: ::core::option::Option<bool>,
1267    /// If true, enables tracing in InputMethodManagerService.
1268    #[prost(bool, optional, tag = "3")]
1269    pub manager_service: ::core::option::Option<bool>,
1270}
1271/// Data source that records kernel (and native) wakelock data.
1272#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1273pub struct KernelWakelocksConfig {
1274    /// Record at this frequency.
1275    #[prost(uint32, optional, tag = "1")]
1276    pub poll_ms: ::core::option::Option<u32>,
1277}
1278/// Network tracing data source that records details on all packets sent or
1279/// received by the network.
1280#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1281pub struct NetworkPacketTraceConfig {
1282    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1283    /// ring buffer. The polling interval should be such that the ring buffer is
1284    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1285    /// The minimum polling rate is 100ms (values below this are ignored).
1286    /// Introduced in Android 14 (U).
1287    #[prost(uint32, optional, tag = "1")]
1288    pub poll_ms: ::core::option::Option<u32>,
1289    /// The aggregation_threshold is the number of packets at which an event will
1290    /// switch from per-packet details to aggregate details. For example, a value
1291    /// of 50 means that if a particular event (grouped by the unique combinations
1292    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1293    /// packets, the exact timestamp and length are recorded for each packet. If
1294    /// there were 50 or more packets in an event, it would only record the total
1295    /// duration, packets, and length. A value of zero or unspecified will always
1296    /// / record per-packet details. A value of 1 always records aggregate details.
1297    #[prost(uint32, optional, tag = "2")]
1298    pub aggregation_threshold: ::core::option::Option<u32>,
1299    /// Specifies the maximum number of packet contexts to intern at a time. This
1300    /// prevents the interning table from growing too large and controls whether
1301    /// interning is enabled or disabled (a value of zero disables interning and
1302    /// is the default). When a data sources interning table reaches this amount,
1303    /// packet contexts will be inlined into NetworkPacketEvents.
1304    #[prost(uint32, optional, tag = "3")]
1305    pub intern_limit: ::core::option::Option<u32>,
1306    /// The following fields specify whether certain fields should be dropped from
1307    /// the output. Dropping fields improves normalization results, reduces the
1308    /// size of the interning table, and slightly reduces event size.
1309    #[prost(bool, optional, tag = "4")]
1310    pub drop_local_port: ::core::option::Option<bool>,
1311    #[prost(bool, optional, tag = "5")]
1312    pub drop_remote_port: ::core::option::Option<bool>,
1313    #[prost(bool, optional, tag = "6")]
1314    pub drop_tcp_flags: ::core::option::Option<bool>,
1315}
1316/// Data source that lists details (such as version code) about packages on an
1317/// Android device.
1318#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1319pub struct PackagesListConfig {
1320    /// If not empty, emit info about only the following list of package names
1321    /// (exact match, no regex). Can be combined with
1322    /// |package_name_regex_filter|: a package is included if it matches either
1323    /// filter. If both filters are empty, emit info about all packages.
1324    #[prost(string, repeated, tag = "1")]
1325    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1326    /// If not empty, emit info about only the packages whose names match any of
1327    /// the following regexes (full match, not partial). Can be combined with
1328    /// |package_name_filter|: a package is included if it matches either filter.
1329    /// If both filters are empty, emit info about all packages.
1330    /// This field was introduced in Android 26Q2 (Perfetto v55).
1331    #[prost(string, repeated, tag = "3")]
1332    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1333        ::prost::alloc::string::String,
1334    >,
1335    /// If present and non-zero, the data source will periodically poll for CPU
1336    /// use by packages and only emit results for those that it sees. If absent,
1337    /// the data source will emit results for all packages at startup. The package
1338    /// name filters apply either way.
1339    #[prost(uint32, optional, tag = "2")]
1340    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1341}
1342/// Data source that records events from the modem.
1343#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1344pub struct PixelModemConfig {
1345    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1346    pub event_group: ::core::option::Option<i32>,
1347    /// If set, record only events with these hashes.
1348    #[prost(int64, repeated, packed = "false", tag = "2")]
1349    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1350    /// If set and allow_list is not set, deny events with these hashes.
1351    #[prost(int64, repeated, packed = "false", tag = "3")]
1352    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1353}
1354/// Nested message and enum types in `PixelModemConfig`.
1355pub mod pixel_modem_config {
1356    /// Event group to record, as defined by the modem.
1357    #[derive(
1358        Clone,
1359        Copy,
1360        Debug,
1361        PartialEq,
1362        Eq,
1363        Hash,
1364        PartialOrd,
1365        Ord,
1366        ::prost::Enumeration
1367    )]
1368    #[repr(i32)]
1369    pub enum EventGroup {
1370        Unknown = 0,
1371        /// Events suitable for low bandwidth tracing only.
1372        LowBandwidth = 1,
1373        /// Events suitable for high and low bandwidth tracing.
1374        HighAndLowBandwidth = 2,
1375    }
1376    impl EventGroup {
1377        /// String value of the enum field names used in the ProtoBuf definition.
1378        ///
1379        /// The values are not transformed in any way and thus are considered stable
1380        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1381        pub fn as_str_name(&self) -> &'static str {
1382            match self {
1383                Self::Unknown => "EVENT_GROUP_UNKNOWN",
1384                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1385                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1386            }
1387        }
1388        /// Creates an enum from field names used in the ProtoBuf definition.
1389        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1390            match value {
1391                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
1392                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
1393                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
1394                _ => None,
1395            }
1396        }
1397    }
1398}
1399/// Custom configuration for the "android.protolog" data source.
1400/// ProtoLog is a logging mechanism that is intented to be more efficient than
1401/// logcat. This configures what logs to capture in the tracing instance.
1402#[derive(Clone, PartialEq, ::prost::Message)]
1403pub struct ProtoLogConfig {
1404    /// Specified the configurations for each of the logging groups. If none is
1405    /// specified for a group the defaults will be used.
1406    #[prost(message, repeated, tag = "1")]
1407    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1408    /// Specified what tracing mode to use for the tracing instance.
1409    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
1410    pub tracing_mode: ::core::option::Option<i32>,
1411    /// If set, any message with log level higher than this level (inclusive) will
1412    /// be traced. Group overrides take precedence over this value.
1413    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
1414    pub default_log_from_level: ::core::option::Option<i32>,
1415}
1416/// Nested message and enum types in `ProtoLogConfig`.
1417pub mod proto_log_config {
1418    #[derive(
1419        Clone,
1420        Copy,
1421        Debug,
1422        PartialEq,
1423        Eq,
1424        Hash,
1425        PartialOrd,
1426        Ord,
1427        ::prost::Enumeration
1428    )]
1429    #[repr(i32)]
1430    pub enum TracingMode {
1431        /// When using the DEFAULT tracing mode, only log groups and levels specified
1432        /// in the group_overrides are traced.
1433        Default = 0,
1434        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1435        /// traced, unless specified in the group_overrides.
1436        EnableAll = 1,
1437    }
1438    impl TracingMode {
1439        /// String value of the enum field names used in the ProtoBuf definition.
1440        ///
1441        /// The values are not transformed in any way and thus are considered stable
1442        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1443        pub fn as_str_name(&self) -> &'static str {
1444            match self {
1445                Self::Default => "DEFAULT",
1446                Self::EnableAll => "ENABLE_ALL",
1447            }
1448        }
1449        /// Creates an enum from field names used in the ProtoBuf definition.
1450        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1451            match value {
1452                "DEFAULT" => Some(Self::Default),
1453                "ENABLE_ALL" => Some(Self::EnableAll),
1454                _ => None,
1455            }
1456        }
1457    }
1458}
1459#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1460pub struct ProtoLogGroup {
1461    /// The ProtoLog group name this configuration entry applies to.
1462    #[prost(string, optional, tag = "1")]
1463    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1464    /// Specify the level from which to start capturing protologs.
1465    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1466    /// message will be traced.
1467    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
1468    pub log_from: ::core::option::Option<i32>,
1469    /// When set to true we will collect the stacktrace for each protolog message
1470    /// in this group that we are tracing.
1471    #[prost(bool, optional, tag = "3")]
1472    pub collect_stacktrace: ::core::option::Option<bool>,
1473}
1474/// Custom configuration for the "android.surfaceflinger.layers" data source.
1475#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1476pub struct SurfaceFlingerLayersConfig {
1477    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
1478    pub mode: ::core::option::Option<i32>,
1479    #[prost(
1480        enumeration = "surface_flinger_layers_config::TraceFlag",
1481        repeated,
1482        packed = "false",
1483        tag = "2"
1484    )]
1485    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1486}
1487/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1488pub mod surface_flinger_layers_config {
1489    #[derive(
1490        Clone,
1491        Copy,
1492        Debug,
1493        PartialEq,
1494        Eq,
1495        Hash,
1496        PartialOrd,
1497        Ord,
1498        ::prost::Enumeration
1499    )]
1500    #[repr(i32)]
1501    pub enum Mode {
1502        Unspecified = 0,
1503        /// Trace layers snapshots. A snapshot is taken every time a layers change
1504        /// occurs.
1505        Active = 1,
1506        /// Generate layers snapshots from the transactions kept in the
1507        /// SurfaceFlinger's internal ring buffer.
1508        /// The layers snapshots generation occurs when this data source is flushed.
1509        Generated = 2,
1510        /// Trace a single layers snapshot.
1511        Dump = 3,
1512        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1513        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1514        /// when a bugreport is taken.
1515        GeneratedBugreportOnly = 4,
1516        /// Layer snapshots are generated by ProtoVM from layer patches
1517        Protovm = 5,
1518    }
1519    impl Mode {
1520        /// String value of the enum field names used in the ProtoBuf definition.
1521        ///
1522        /// The values are not transformed in any way and thus are considered stable
1523        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1524        pub fn as_str_name(&self) -> &'static str {
1525            match self {
1526                Self::Unspecified => "MODE_UNSPECIFIED",
1527                Self::Active => "MODE_ACTIVE",
1528                Self::Generated => "MODE_GENERATED",
1529                Self::Dump => "MODE_DUMP",
1530                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1531                Self::Protovm => "MODE_PROTOVM",
1532            }
1533        }
1534        /// Creates an enum from field names used in the ProtoBuf definition.
1535        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1536            match value {
1537                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1538                "MODE_ACTIVE" => Some(Self::Active),
1539                "MODE_GENERATED" => Some(Self::Generated),
1540                "MODE_DUMP" => Some(Self::Dump),
1541                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
1542                "MODE_PROTOVM" => Some(Self::Protovm),
1543                _ => None,
1544            }
1545        }
1546    }
1547    #[derive(
1548        Clone,
1549        Copy,
1550        Debug,
1551        PartialEq,
1552        Eq,
1553        Hash,
1554        PartialOrd,
1555        Ord,
1556        ::prost::Enumeration
1557    )]
1558    #[repr(i32)]
1559    pub enum TraceFlag {
1560        Unspecified = 0,
1561        Input = 2,
1562        Composition = 4,
1563        Extra = 8,
1564        Hwc = 16,
1565        Buffers = 32,
1566        VirtualDisplays = 64,
1567        /// INPUT | COMPOSITION | EXTRA
1568        All = 14,
1569    }
1570    impl TraceFlag {
1571        /// String value of the enum field names used in the ProtoBuf definition.
1572        ///
1573        /// The values are not transformed in any way and thus are considered stable
1574        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1575        pub fn as_str_name(&self) -> &'static str {
1576            match self {
1577                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1578                Self::Input => "TRACE_FLAG_INPUT",
1579                Self::Composition => "TRACE_FLAG_COMPOSITION",
1580                Self::Extra => "TRACE_FLAG_EXTRA",
1581                Self::Hwc => "TRACE_FLAG_HWC",
1582                Self::Buffers => "TRACE_FLAG_BUFFERS",
1583                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1584                Self::All => "TRACE_FLAG_ALL",
1585            }
1586        }
1587        /// Creates an enum from field names used in the ProtoBuf definition.
1588        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1589            match value {
1590                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
1591                "TRACE_FLAG_INPUT" => Some(Self::Input),
1592                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
1593                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
1594                "TRACE_FLAG_HWC" => Some(Self::Hwc),
1595                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
1596                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
1597                "TRACE_FLAG_ALL" => Some(Self::All),
1598                _ => None,
1599            }
1600        }
1601    }
1602}
1603/// Custom configuration for the "android.surfaceflinger.transactions" data
1604/// source.
1605#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1606pub struct SurfaceFlingerTransactionsConfig {
1607    #[prost(
1608        enumeration = "surface_flinger_transactions_config::Mode",
1609        optional,
1610        tag = "1"
1611    )]
1612    pub mode: ::core::option::Option<i32>,
1613}
1614/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1615pub mod surface_flinger_transactions_config {
1616    #[derive(
1617        Clone,
1618        Copy,
1619        Debug,
1620        PartialEq,
1621        Eq,
1622        Hash,
1623        PartialOrd,
1624        Ord,
1625        ::prost::Enumeration
1626    )]
1627    #[repr(i32)]
1628    pub enum Mode {
1629        Unspecified = 0,
1630        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1631        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1632        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1633        /// initial state and the latest transactions.
1634        Continuous = 1,
1635        /// SurfaceFlinger writes the initial state and then each incoming
1636        /// transaction until the data source is stopped.
1637        Active = 2,
1638    }
1639    impl Mode {
1640        /// String value of the enum field names used in the ProtoBuf definition.
1641        ///
1642        /// The values are not transformed in any way and thus are considered stable
1643        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1644        pub fn as_str_name(&self) -> &'static str {
1645            match self {
1646                Self::Unspecified => "MODE_UNSPECIFIED",
1647                Self::Continuous => "MODE_CONTINUOUS",
1648                Self::Active => "MODE_ACTIVE",
1649            }
1650        }
1651        /// Creates an enum from field names used in the ProtoBuf definition.
1652        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1653            match value {
1654                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1655                "MODE_CONTINUOUS" => Some(Self::Continuous),
1656                "MODE_ACTIVE" => Some(Self::Active),
1657                _ => None,
1658            }
1659        }
1660    }
1661}
1662/// Data source that lists details (such as version code) about users on an
1663/// Android device.
1664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1665pub struct AndroidUserListConfig {
1666    /// An allowlist of user type strings, used to control the granularity of
1667    /// user type information emitted in the trace. Exact, case-sensitive string
1668    /// matching is used.
1669    ///
1670    /// Any user type read from the device that is NOT present in the
1671    /// effective allowlist will have its type reported as
1672    /// "android.os.usertype.FILTERED".
1673    ///
1674    /// The effective allowlist is determined as follows:
1675    ///
1676    /// 1. If this 'user_type_filter' field is provided and non-empty:
1677    ///     This list itself is the effective allowlist.
1678    ///     Example TraceConfig:
1679    ///     --------------------
1680    ///     data_sources {
1681    ///         config {
1682    ///             name: "android.user_list"
1683    ///             target_buffer: 0
1684    ///             user_list_config {
1685    ///               # Only report these specific types, others become FILTERED.
1686    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1687    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1688    ///             }
1689    ///         }
1690    ///     }
1691    ///
1692    ///
1693    /// Note: This field does not support regular expressions.
1694    #[prost(string, repeated, tag = "1")]
1695    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1696}
1697/// Custom configuration for the "android.windowmanager" data source.
1698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1699pub struct WindowManagerConfig {
1700    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
1701    pub log_frequency: ::core::option::Option<i32>,
1702    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
1703    pub log_level: ::core::option::Option<i32>,
1704    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
1705    pub log_mode: ::core::option::Option<i32>,
1706}
1707/// Nested message and enum types in `WindowManagerConfig`.
1708pub mod window_manager_config {
1709    #[derive(
1710        Clone,
1711        Copy,
1712        Debug,
1713        PartialEq,
1714        Eq,
1715        Hash,
1716        PartialOrd,
1717        Ord,
1718        ::prost::Enumeration
1719    )]
1720    #[repr(i32)]
1721    pub enum LogFrequency {
1722        Unspecified = 0,
1723        /// Trace state snapshots when a frame is committed.
1724        Frame = 1,
1725        /// Trace state snapshots every time a transaction is committed.
1726        Transaction = 2,
1727        /// Trace single state snapshots when the data source is started.
1728        SingleDump = 3,
1729    }
1730    impl LogFrequency {
1731        /// String value of the enum field names used in the ProtoBuf definition.
1732        ///
1733        /// The values are not transformed in any way and thus are considered stable
1734        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1735        pub fn as_str_name(&self) -> &'static str {
1736            match self {
1737                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1738                Self::Frame => "LOG_FREQUENCY_FRAME",
1739                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
1740                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1741            }
1742        }
1743        /// Creates an enum from field names used in the ProtoBuf definition.
1744        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1745            match value {
1746                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
1747                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
1748                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
1749                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
1750                _ => None,
1751            }
1752        }
1753    }
1754    #[derive(
1755        Clone,
1756        Copy,
1757        Debug,
1758        PartialEq,
1759        Eq,
1760        Hash,
1761        PartialOrd,
1762        Ord,
1763        ::prost::Enumeration
1764    )]
1765    #[repr(i32)]
1766    pub enum LogLevel {
1767        Unspecified = 0,
1768        /// Logs all elements with maximum amount of information.
1769        Verbose = 1,
1770        /// Logs all elements but doesn't write all configuration data.
1771        Debug = 2,
1772        /// Logs only visible elements, with the minimum amount of performance
1773        /// overhead
1774        Critical = 3,
1775    }
1776    impl LogLevel {
1777        /// String value of the enum field names used in the ProtoBuf definition.
1778        ///
1779        /// The values are not transformed in any way and thus are considered stable
1780        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1781        pub fn as_str_name(&self) -> &'static str {
1782            match self {
1783                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1784                Self::Verbose => "LOG_LEVEL_VERBOSE",
1785                Self::Debug => "LOG_LEVEL_DEBUG",
1786                Self::Critical => "LOG_LEVEL_CRITICAL",
1787            }
1788        }
1789        /// Creates an enum from field names used in the ProtoBuf definition.
1790        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1791            match value {
1792                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
1793                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
1794                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
1795                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
1796                _ => None,
1797            }
1798        }
1799    }
1800    #[derive(
1801        Clone,
1802        Copy,
1803        Debug,
1804        PartialEq,
1805        Eq,
1806        Hash,
1807        PartialOrd,
1808        Ord,
1809        ::prost::Enumeration
1810    )]
1811    #[repr(i32)]
1812    pub enum LogMode {
1813        Unspecified = 0,
1814        /// Always logs a full state dump of the window hierarchy.
1815        FullState = 1,
1816        /// Logs a full state dump of the window hierarchy only when tracing starts.
1817        /// The following trace packets are lightweight patches containing only the
1818        /// last changes.
1819        Incremental = 2,
1820    }
1821    impl LogMode {
1822        /// String value of the enum field names used in the ProtoBuf definition.
1823        ///
1824        /// The values are not transformed in any way and thus are considered stable
1825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1826        pub fn as_str_name(&self) -> &'static str {
1827            match self {
1828                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
1829                Self::FullState => "LOG_MODE_FULL_STATE",
1830                Self::Incremental => "LOG_MODE_INCREMENTAL",
1831            }
1832        }
1833        /// Creates an enum from field names used in the ProtoBuf definition.
1834        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1835            match value {
1836                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1837                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
1838                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
1839                _ => None,
1840            }
1841        }
1842    }
1843}
1844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1845pub struct ChromeConfig {
1846    #[prost(string, optional, tag = "1")]
1847    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1848    /// When enabled, the data source should only fill in fields in the output that
1849    /// are not potentially privacy sensitive.
1850    #[prost(bool, optional, tag = "2")]
1851    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1852    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1853    /// JSON format. Note that the trace data will still be returned as a series of
1854    /// TracePackets, but the embedded data will be JSON instead of serialized
1855    /// protobuf.
1856    #[prost(bool, optional, tag = "3")]
1857    pub convert_to_legacy_json: ::core::option::Option<bool>,
1858    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
1859    pub client_priority: ::core::option::Option<i32>,
1860    /// Applicable only when using legacy JSON format.
1861    /// If |json_agent_label_filter| is not empty, only data pertaining to
1862    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1863    #[prost(string, optional, tag = "5")]
1864    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1865    ///   When enabled, event names should not contain package names.
1866    #[prost(bool, optional, tag = "6")]
1867    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1868}
1869/// Nested message and enum types in `ChromeConfig`.
1870pub mod chrome_config {
1871    /// Priority of the tracing session client. A higher priority session may
1872    /// preempt a lower priority one in configurations where concurrent sessions
1873    /// aren't supported.
1874    #[derive(
1875        Clone,
1876        Copy,
1877        Debug,
1878        PartialEq,
1879        Eq,
1880        Hash,
1881        PartialOrd,
1882        Ord,
1883        ::prost::Enumeration
1884    )]
1885    #[repr(i32)]
1886    pub enum ClientPriority {
1887        Unknown = 0,
1888        Background = 1,
1889        UserInitiated = 2,
1890    }
1891    impl ClientPriority {
1892        /// String value of the enum field names used in the ProtoBuf definition.
1893        ///
1894        /// The values are not transformed in any way and thus are considered stable
1895        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1896        pub fn as_str_name(&self) -> &'static str {
1897            match self {
1898                Self::Unknown => "UNKNOWN",
1899                Self::Background => "BACKGROUND",
1900                Self::UserInitiated => "USER_INITIATED",
1901            }
1902        }
1903        /// Creates an enum from field names used in the ProtoBuf definition.
1904        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1905            match value {
1906                "UNKNOWN" => Some(Self::Unknown),
1907                "BACKGROUND" => Some(Self::Background),
1908                "USER_INITIATED" => Some(Self::UserInitiated),
1909                _ => None,
1910            }
1911        }
1912    }
1913}
1914#[derive(Clone, PartialEq, ::prost::Message)]
1915pub struct ChromiumHistogramSamplesConfig {
1916    /// List of histograms to record. If no histogram is specified, all histograms
1917    /// are recorded.
1918    #[prost(message, repeated, tag = "1")]
1919    pub histograms: ::prost::alloc::vec::Vec<
1920        chromium_histogram_samples_config::HistogramSample,
1921    >,
1922    /// Default: false (i.e. histogram names are NOT filtered out by default)
1923    /// When true, histogram_name will be filtered out.
1924    #[prost(bool, optional, tag = "2")]
1925    pub filter_histogram_names: ::core::option::Option<bool>,
1926}
1927/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1928pub mod chromium_histogram_samples_config {
1929    /// Records when a value within the specified bounds \[min_value, max_value\] is
1930    /// emitted into a Chrome histogram.
1931    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1932    pub struct HistogramSample {
1933        #[prost(string, optional, tag = "1")]
1934        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1935        #[prost(int64, optional, tag = "2")]
1936        pub min_value: ::core::option::Option<i64>,
1937        #[prost(int64, optional, tag = "3")]
1938        pub max_value: ::core::option::Option<i64>,
1939    }
1940}
1941#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1942pub struct ChromiumSamplingHeapProfilerConfig {
1943    /// Sampling interval in bytes.
1944    #[prost(uint64, optional, tag = "1")]
1945    pub sampling_interval_bytes: ::core::option::Option<u64>,
1946    /// Sampling interval in milliseconds.
1947    #[prost(uint32, optional, tag = "2")]
1948    pub sampling_interval_ms: ::core::option::Option<u32>,
1949}
1950#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1951pub struct ChromiumStackSamplingProfilerConfig {
1952    /// Sampling interval in milliseconds.
1953    #[prost(uint32, optional, tag = "1")]
1954    pub sampling_interval_ms: ::core::option::Option<u32>,
1955}
1956#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1957pub struct ChromiumSystemMetricsConfig {
1958    /// Samples counters every X ms.
1959    #[prost(uint32, optional, tag = "1")]
1960    pub sampling_interval_ms: ::core::option::Option<u32>,
1961}
1962#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1963pub struct V8Config {
1964    /// Whether to log the actual content of scripts (e.g. content of the JS file
1965    /// that was compiled to generate code).
1966    /// ATTENTION: This could considerably increase the size of the resuling trace
1967    ///             file.
1968    #[prost(bool, optional, tag = "1")]
1969    pub log_script_sources: ::core::option::Option<bool>,
1970    /// Whether to log the generated code for jitted functions (machine code or
1971    /// bytecode).
1972    /// ATTENTION: This could considerably increase the size of the resuling trace
1973    ///             file.
1974    #[prost(bool, optional, tag = "2")]
1975    pub log_instructions: ::core::option::Option<bool>,
1976}
1977/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1978/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1979/// ns-evntrace-event_trace_properties
1980///
1981/// See the list of keywords for for individual providers.
1982/// <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1983#[derive(Clone, PartialEq, ::prost::Message)]
1984pub struct EtwConfig {
1985    /// The kernel_flags determines the flags that will be used by the etw tracing
1986    /// session. These kernel flags have been built to expose the useful events
1987    /// captured from the kernel mode only.
1988    #[deprecated]
1989    #[prost(
1990        enumeration = "etw_config::KernelFlag",
1991        repeated,
1992        packed = "false",
1993        tag = "1"
1994    )]
1995    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1996    /// Provides events relating to the scheduler.
1997    #[prost(string, repeated, tag = "2")]
1998    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
1999        ::prost::alloc::string::String,
2000    >,
2001    /// Provides events relating to the memory manager.
2002    #[prost(string, repeated, tag = "3")]
2003    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2004    /// Provides events relating to file I/O.
2005    #[deprecated]
2006    #[prost(string, repeated, tag = "4")]
2007    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2008    /// Events for which stacks should be collected.
2009    #[prost(string, repeated, tag = "5")]
2010    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2011    /// Provides events relating to disk I/O.
2012    #[deprecated]
2013    #[prost(string, repeated, tag = "6")]
2014    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2015    /// Provides events relating to multiple kinds of IO including disk, cache, and
2016    /// network.
2017    #[prost(string, repeated, tag = "7")]
2018    pub system_io_provider_events: ::prost::alloc::vec::Vec<
2019        ::prost::alloc::string::String,
2020    >,
2021    /// Debug IDs for images whose stack samples should be symbolized.
2022    #[prost(message, repeated, tag = "8")]
2023    pub stack_sampling_debug_ids: ::prost::alloc::vec::Vec<etw_config::DebugId>,
2024}
2025/// Nested message and enum types in `EtwConfig`.
2026pub mod etw_config {
2027    /// A debug ID that uniquely identifies an image (i.e., executable) for
2028    /// symbolization when stack sampling.
2029    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2030    pub struct DebugId {
2031        /// The full path to the image file.
2032        #[prost(string, optional, tag = "1")]
2033        pub path: ::core::option::Option<::prost::alloc::string::String>,
2034        /// The unique identifier for the image file.
2035        #[prost(string, optional, tag = "2")]
2036        pub debug_id: ::core::option::Option<::prost::alloc::string::String>,
2037    }
2038    /// The KernelFlag represent list of kernel flags that we are intrested in.
2039    /// To get a more extensive list run 'xperf -providers k'.
2040    #[derive(
2041        Clone,
2042        Copy,
2043        Debug,
2044        PartialEq,
2045        Eq,
2046        Hash,
2047        PartialOrd,
2048        Ord,
2049        ::prost::Enumeration
2050    )]
2051    #[repr(i32)]
2052    pub enum KernelFlag {
2053        Cswitch = 0,
2054        Dispatcher = 1,
2055    }
2056    impl KernelFlag {
2057        /// String value of the enum field names used in the ProtoBuf definition.
2058        ///
2059        /// The values are not transformed in any way and thus are considered stable
2060        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2061        pub fn as_str_name(&self) -> &'static str {
2062            match self {
2063                Self::Cswitch => "CSWITCH",
2064                Self::Dispatcher => "DISPATCHER",
2065            }
2066        }
2067        /// Creates an enum from field names used in the ProtoBuf definition.
2068        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2069            match value {
2070                "CSWITCH" => Some(Self::Cswitch),
2071                "DISPATCHER" => Some(Self::Dispatcher),
2072                _ => None,
2073            }
2074        }
2075    }
2076}
2077#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2078pub struct FrozenFtraceConfig {
2079    /// The instance name which stores the previous boot ftrace data. Required.
2080    #[prost(string, optional, tag = "1")]
2081    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2082}
2083/// Next id: 38
2084#[derive(Clone, PartialEq, ::prost::Message)]
2085pub struct FtraceConfig {
2086    /// Ftrace events to record, example: "sched/sched_switch".
2087    #[prost(string, repeated, tag = "1")]
2088    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2089    /// Android-specific event categories:
2090    #[prost(string, repeated, tag = "2")]
2091    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2092    #[prost(string, repeated, tag = "3")]
2093    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2094    /// Some processes can emit data through atrace or through the perfetto SDK via
2095    /// the "track_event" data source. For these categories, the SDK will be
2096    /// preferred, if possible, for this config.
2097    #[prost(string, repeated, tag = "28")]
2098    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2099        ::prost::alloc::string::String,
2100    >,
2101    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2102    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2103    /// events for convenience (and the vendor-specific events on top).
2104    /// Introduced in: perfetto v52.
2105    #[prost(bool, optional, tag = "34")]
2106    pub atrace_userspace_only: ::core::option::Option<bool>,
2107    /// Size of each per-cpu kernel ftrace ring buffer.
2108    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2109    /// buffers cannot be resized without pausing recording in the kernel.
2110    #[prost(uint32, optional, tag = "10")]
2111    pub buffer_size_kb: ::core::option::Option<u32>,
2112    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2113    /// implementation to choose a bigger buffer size.
2114    ///
2115    /// Most configs for perfetto v43+ should simply leave both fields unset.
2116    ///
2117    /// If you need a config compatible with a range of perfetto builds and you
2118    /// used to set a non-default buffer_size_kb, consider setting both fields.
2119    /// Example:
2120    ///    buffer_size_kb: 4096
2121    ///    buffer_size_lower_bound: true
2122    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2123    /// On v43+, buffers will be at least 4 MB.
2124    /// In both cases, neither is guaranteed if there are other concurrent
2125    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2126    /// the recording in the kernel.
2127    /// Introduced in: perfetto v43.
2128    #[prost(bool, optional, tag = "27")]
2129    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2130    /// If set, specifies how often the tracing daemon reads from the kernel ring
2131    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2132    /// Leave unset unless you're fine-tuning a local config.
2133    #[prost(uint32, optional, tag = "11")]
2134    pub drain_period_ms: ::core::option::Option<u32>,
2135    /// If set, the tracing daemon will read kernel ring buffers as soon as
2136    /// they're filled past this percentage of occupancy. In other words, a value
2137    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2138    /// half-full. Not guaranteed if there are multiple concurrent tracing
2139    /// sessions.
2140    /// Currently does nothing on Linux kernels below v6.9.
2141    /// Introduced in: perfetto v48.
2142    #[prost(uint32, optional, tag = "29")]
2143    pub drain_buffer_percent: ::core::option::Option<u32>,
2144    #[prost(message, optional, tag = "12")]
2145    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2146    #[prost(message, optional, tag = "22")]
2147    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2148    /// Enables symbol name resolution against /proc/kallsyms.
2149    /// It requires that either traced_probes is running as root or that
2150    /// kptr_restrict has been manually lowered.
2151    /// It does not disclose KASLR, symbol addresses are mangled.
2152    #[prost(bool, optional, tag = "13")]
2153    pub symbolize_ksyms: ::core::option::Option<bool>,
2154    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2155    pub ksyms_mem_policy: ::core::option::Option<i32>,
2156    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2157    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2158    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2159    /// The historical context for this is the following:
2160    /// - Up to Android S (12), the rss_stat was internally throttled in its
2161    ///    kernel implementation.
2162    /// - A change introduced in the kernels after S has introduced a new
2163    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2164    ///    (hence very spammy).
2165    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2166    ///    need to deal with both cases.
2167    /// For more context: go/rss-stat-throttled.
2168    #[prost(bool, optional, tag = "15")]
2169    pub throttle_rss_stat: ::core::option::Option<bool>,
2170    /// If true, use self-describing proto messages when writing events not known
2171    /// at compile time (aka generic events). Each event bundle will have a set of
2172    /// serialised proto descriptors for events within that bundle.
2173    ///
2174    /// Default if unset:
2175    /// * v53+: true
2176    /// * before v53: false
2177    ///
2178    /// Added in: perfetto v50.
2179    #[prost(bool, optional, tag = "32")]
2180    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2181    /// If true, avoid enabling events that aren't statically known by
2182    /// traced_probes. Otherwise, the default is to emit such events as
2183    /// GenericFtraceEvent protos.
2184    /// Prefer to keep this flag at its default. This was added for Android
2185    /// tracing, where atrace categories and/or atrace HAL requested events can
2186    /// expand to events that aren't of interest to the tracing user.
2187    /// Introduced in: Android T.
2188    #[prost(bool, optional, tag = "16")]
2189    pub disable_generic_events: ::core::option::Option<bool>,
2190    /// The subset of syscalls to record. To record all syscalls, leave this unset
2191    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2192    /// * before perfetto v43, requires the config to also enable
2193    ///    raw_syscalls/sys_{enter,exit}.
2194    /// * perfetto v43+ does the right thing if you set only this field.
2195    /// Example: \["sys_read", "sys_open"\].
2196    /// Introduced in: Android U.
2197    #[prost(string, repeated, tag = "18")]
2198    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2199    /// If true, enable the "function_graph" kernel tracer that emits events
2200    /// whenever a kernel function is entered and exited
2201    /// (funcgraph_entry/funcgraph_exit).
2202    /// Notes on use:
2203    /// * Requires |symbolize_ksyms| for function name resolution.
2204    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2205    ///    set of functions, otherwise the event bandwidth will be too high for
2206    ///    practical use.
2207    /// * The data source might be rejected if there is already a concurrent
2208    ///    ftrace data source that does not use function graph itself, as we do not
2209    ///    support switching kernel tracers mid-trace.
2210    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2211    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2212    ///    "function_graph".
2213    /// Android:
2214    /// * Available only on debuggable builds.
2215    /// * Introduced in: Android U.
2216    #[prost(bool, optional, tag = "19")]
2217    pub enable_function_graph: ::core::option::Option<bool>,
2218    /// Constrains the set of functions traced when |enable_function_graph| is
2219    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2220    /// in which case all matching functions will be traced. See kernel
2221    /// documentation on ftrace "set_ftrace_filter" file for more details.
2222    /// Android:
2223    /// * Available only on debuggable builds.
2224    /// * Introduced in: Android U.
2225    #[prost(string, repeated, tag = "20")]
2226    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2227    /// If |enable_function_graph| is true, trace this set of functions *and* all
2228    /// of its callees. Supports globs. Can be set together with
2229    /// |function_filters|, in which case only callees matching the filter will be
2230    /// traced. If setting both, you most likely want all roots to also be
2231    /// included in |function_filters|.
2232    /// Android:
2233    /// * Available only on debuggable builds.
2234    /// * Introduced in: Android U.
2235    #[prost(string, repeated, tag = "21")]
2236    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2237    /// If |enable_function_graph| is true, only trace the specified
2238    /// number of calls down the stack. Sets the max_graph_depth value
2239    /// in sys/kernel/tracing/
2240    ///
2241    /// Only respected for the first tracing session that enables
2242    /// function_graph tracing.
2243    ///
2244    /// Introduced in: perfetto v51.
2245    /// Supported on: Android 25Q3+.
2246    #[prost(uint32, optional, tag = "33")]
2247    pub function_graph_max_depth: ::core::option::Option<u32>,
2248    /// Ftrace events to record, specific for kprobes and kretprobes
2249    #[prost(message, repeated, tag = "30")]
2250    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2251    /// If true, does not clear kernel ftrace buffers when starting the trace.
2252    /// This makes sense only if this is the first ftrace data source instance
2253    /// created after the daemon has been started. Can be useful for gathering boot
2254    /// traces, if ftrace has been separately configured (e.g. via kernel
2255    /// commandline).
2256    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2257    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2258    /// anything besides ftrace. Otherwise timestamps might be skewed.
2259    #[prost(bool, optional, tag = "23")]
2260    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2261    /// If true, overrides the default timestamp clock and uses a raw hardware
2262    /// based monotonic clock for getting timestamps.
2263    /// * Introduced in: Android U.
2264    #[prost(bool, optional, tag = "24")]
2265    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2266    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2267    /// for event recording. Normally, this means
2268    /// `/sys/kernel/tracing/instances/$instance_name`.
2269    ///
2270    /// Names "hyp" and "hypervisor" are reserved.
2271    ///
2272    /// The instance must already exist, the tracing daemon *will not* create it
2273    /// for you as it typically doesn't have such permissions.
2274    /// Only a subset of features is guaranteed to work with non-default instances,
2275    /// at the time of writing:
2276    ///   * ftrace_events
2277    ///   * buffer_size_kb
2278    #[prost(string, optional, tag = "25")]
2279    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2280    /// For perfetto developer use. If true and on a debuggable android build,
2281    /// serialise raw tracing pages that the implementation cannot parse.
2282    #[prost(bool, optional, tag = "31")]
2283    pub debug_ftrace_abi: ::core::option::Option<bool>,
2284    /// Filter ftrace events by Thread ID (TID).
2285    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2286    ///
2287    /// Note: this is an exclusive feature, see:
2288    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2289    ///
2290    /// Introduced in: perfetto v52.
2291    /// Supported on: Android 25Q3+.
2292    #[prost(uint32, repeated, packed = "false", tag = "35")]
2293    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2294    #[prost(message, repeated, tag = "36")]
2295    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2296    /// This mask restricts tracing to a specific set of CPUs using a
2297    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2298    /// 32-bit chunk of the CPU mask.
2299    ///
2300    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2301    ///    - Rightmost chunk: CPUs 0-31
2302    ///    - 2nd chunk from right: CPUs 32-63
2303    ///    - ...and so on.
2304    ///
2305    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2306    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2307    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2308    /// chunk0 to 0-31.
2309    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2310    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2311    ///
2312    /// Note: This is an exclusive feature, see:
2313    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2314    ///
2315    /// Introduced in: perfetto v52.
2316    /// Supported on: Android 25Q3+.
2317    #[prost(string, optional, tag = "37")]
2318    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2319    /// No-op in perfetto v28+. Name preserved because of existing references in
2320    /// textproto configs.
2321    #[deprecated]
2322    #[prost(bool, optional, tag = "14")]
2323    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2324}
2325/// Nested message and enum types in `FtraceConfig`.
2326pub mod ftrace_config {
2327    /// Configuration for compact encoding of scheduler events. When enabled (and
2328    /// recording the relevant ftrace events), specific high-volume events are
2329    /// encoded in a denser format than normal.
2330    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2331    pub struct CompactSchedConfig {
2332        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2333        /// record those events in the compact format.
2334        ///
2335        /// If the field is unset, the default is:
2336        /// * perfetto v42.0+: enabled
2337        /// * before: disabled
2338        #[prost(bool, optional, tag = "1")]
2339        pub enabled: ::core::option::Option<bool>,
2340    }
2341    /// Optional filter for "ftrace/print" events.
2342    ///
2343    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2344    /// are processed in order), its `allow` field will be used as the outcome: if
2345    /// `allow` is true, the event will be included in the trace, otherwise it will
2346    /// be discarded. If an event does not match any rule, it will be allowed by
2347    /// default (a rule with an empty prefix and allow=false, disallows everything
2348    /// by default).
2349    #[derive(Clone, PartialEq, ::prost::Message)]
2350    pub struct PrintFilter {
2351        #[prost(message, repeated, tag = "1")]
2352        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2353    }
2354    /// Nested message and enum types in `PrintFilter`.
2355    pub mod print_filter {
2356        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2357        pub struct Rule {
2358            #[prost(bool, optional, tag = "2")]
2359            pub allow: ::core::option::Option<bool>,
2360            #[prost(oneof = "rule::Match", tags = "1, 3")]
2361            pub r#match: ::core::option::Option<rule::Match>,
2362        }
2363        /// Nested message and enum types in `Rule`.
2364        pub mod rule {
2365            /// Matches an atrace message of the form:
2366            /// <type>|pid|<prefix>...
2367            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2368            pub struct AtraceMessage {
2369                #[prost(string, optional, tag = "1")]
2370                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2371                #[prost(string, optional, tag = "2")]
2372                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2373            }
2374            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2375            pub enum Match {
2376                /// This rule matches if `prefix` matches exactly with the beginning of
2377                /// the "ftrace/print" "buf" field.
2378                #[prost(string, tag = "1")]
2379                Prefix(::prost::alloc::string::String),
2380                /// This rule matches if the "buf" field contains an atrace-style print
2381                /// message as specified in `atrace_msg`.
2382                #[prost(message, tag = "3")]
2383                AtraceMsg(AtraceMessage),
2384            }
2385        }
2386    }
2387    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2388    pub struct KprobeEvent {
2389        /// Kernel function name to attach to, for example "fuse_file_write_iter"
2390        #[prost(string, optional, tag = "1")]
2391        pub probe: ::core::option::Option<::prost::alloc::string::String>,
2392        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
2393        pub r#type: ::core::option::Option<i32>,
2394    }
2395    /// Nested message and enum types in `KprobeEvent`.
2396    pub mod kprobe_event {
2397        #[derive(
2398            Clone,
2399            Copy,
2400            Debug,
2401            PartialEq,
2402            Eq,
2403            Hash,
2404            PartialOrd,
2405            Ord,
2406            ::prost::Enumeration
2407        )]
2408        #[repr(i32)]
2409        pub enum KprobeType {
2410            Unknown = 0,
2411            Kprobe = 1,
2412            Kretprobe = 2,
2413            Both = 3,
2414        }
2415        impl KprobeType {
2416            /// String value of the enum field names used in the ProtoBuf definition.
2417            ///
2418            /// The values are not transformed in any way and thus are considered stable
2419            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2420            pub fn as_str_name(&self) -> &'static str {
2421                match self {
2422                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
2423                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
2424                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
2425                    Self::Both => "KPROBE_TYPE_BOTH",
2426                }
2427            }
2428            /// Creates an enum from field names used in the ProtoBuf definition.
2429            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2430                match value {
2431                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
2432                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
2433                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
2434                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
2435                    _ => None,
2436                }
2437            }
2438        }
2439    }
2440    /// Tracefs options to set directly in the tracefs instance. This is a very
2441    /// niche feature since almost all of the options deal with formatting textual
2442    /// output (the /trace file), which perfetto doesn't use.
2443    ///
2444    /// The options with a known use-case:
2445    /// * event-fork: when using `tids_to_trace` above, the kernel will
2446    ///    automatically add newly spawned descendant threads to the set of TIDs.
2447    ///
2448    /// Full list of options is available at
2449    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
2450    ///
2451    /// Note: this is an exclusive feature, see:
2452    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2453    ///
2454    /// Introduced in: perfetto v52.
2455    /// Supported on: Android 25Q3+.
2456    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2457    pub struct TracefsOption {
2458        /// The name of the tracefs option as found in tracefs/trace_options (without
2459        /// the "no" prefix).
2460        #[prost(string, optional, tag = "1")]
2461        pub name: ::core::option::Option<::prost::alloc::string::String>,
2462        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
2463        pub state: ::core::option::Option<i32>,
2464    }
2465    /// Nested message and enum types in `TracefsOption`.
2466    pub mod tracefs_option {
2467        #[derive(
2468            Clone,
2469            Copy,
2470            Debug,
2471            PartialEq,
2472            Eq,
2473            Hash,
2474            PartialOrd,
2475            Ord,
2476            ::prost::Enumeration
2477        )]
2478        #[repr(i32)]
2479        pub enum State {
2480            Unknown = 0,
2481            Enabled = 1,
2482            Disabled = 2,
2483        }
2484        impl State {
2485            /// String value of the enum field names used in the ProtoBuf definition.
2486            ///
2487            /// The values are not transformed in any way and thus are considered stable
2488            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2489            pub fn as_str_name(&self) -> &'static str {
2490                match self {
2491                    Self::Unknown => "STATE_UNKNOWN",
2492                    Self::Enabled => "STATE_ENABLED",
2493                    Self::Disabled => "STATE_DISABLED",
2494                }
2495            }
2496            /// Creates an enum from field names used in the ProtoBuf definition.
2497            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2498                match value {
2499                    "STATE_UNKNOWN" => Some(Self::Unknown),
2500                    "STATE_ENABLED" => Some(Self::Enabled),
2501                    "STATE_DISABLED" => Some(Self::Disabled),
2502                    _ => None,
2503                }
2504            }
2505        }
2506    }
2507    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
2508    /// should keep the symbol map in memory (and reuse it for future tracing
2509    /// sessions) or clear it (saving memory) and re-create it on each tracing
2510    /// session (wasting cpu and wall time).
2511    /// The tradeoff is roughly:
2512    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
2513    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
2514    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
2515    #[derive(
2516        Clone,
2517        Copy,
2518        Debug,
2519        PartialEq,
2520        Eq,
2521        Hash,
2522        PartialOrd,
2523        Ord,
2524        ::prost::Enumeration
2525    )]
2526    #[repr(i32)]
2527    pub enum KsymsMemPolicy {
2528        KsymsUnspecified = 0,
2529        KsymsCleanupOnStop = 1,
2530        KsymsRetain = 2,
2531    }
2532    impl KsymsMemPolicy {
2533        /// String value of the enum field names used in the ProtoBuf definition.
2534        ///
2535        /// The values are not transformed in any way and thus are considered stable
2536        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2537        pub fn as_str_name(&self) -> &'static str {
2538            match self {
2539                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
2540                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
2541                Self::KsymsRetain => "KSYMS_RETAIN",
2542            }
2543        }
2544        /// Creates an enum from field names used in the ProtoBuf definition.
2545        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2546            match value {
2547                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
2548                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
2549                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
2550                _ => None,
2551            }
2552        }
2553    }
2554}
2555#[derive(Clone, PartialEq, ::prost::Message)]
2556pub struct GpuCounterConfig {
2557    /// Desired sampling interval for counters.
2558    #[prost(uint64, optional, tag = "1")]
2559    pub counter_period_ns: ::core::option::Option<u64>,
2560    /// Selects which counters to sample. Use either counter_ids or counter_names,
2561    /// not both. Counter IDs and names correspond to the ones described in
2562    /// GpuCounterSpec in the data source descriptor.
2563    ///
2564    /// List of counter IDs to be sampled.
2565    #[prost(uint32, repeated, packed = "false", tag = "2")]
2566    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
2567    /// List of counter names to be sampled. Requires producer support; check
2568    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
2569    /// Glob patterns may be used to match multiple counters by name; check
2570    /// GpuCounterDescriptor.supports_counter_name_globs for support.
2571    #[prost(string, repeated, tag = "6")]
2572    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2573    /// Fix gpu clock rate during trace session.
2574    #[prost(bool, optional, tag = "4")]
2575    pub fix_gpu_clock: ::core::option::Option<bool>,
2576    /// Sample counters by instrumenting command buffers.
2577    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
2578    pub instrumented_sampling_mode: ::core::option::Option<
2579        gpu_counter_config::InstrumentedSamplingMode,
2580    >,
2581}
2582/// Nested message and enum types in `GpuCounterConfig`.
2583pub mod gpu_counter_config {
2584    /// Configuration for sampling counters by instrumenting command buffers.
2585    ///
2586    /// When instrumented_sampling_config is used (instead of the
2587    /// instrumented_sampling bool), the following steps determine whether
2588    /// instrumented counters are enabled for a given GPU activity:
2589    ///
2590    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
2591    ///     activity must match at least one filter. If empty, all activities
2592    ///     pass this step.
2593    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
2594    ///     activity must fall within a matching TX range. Activities in TX
2595    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
2596    ///     take precedence over includes). If both are empty, all activities
2597    ///     pass this step.
2598    /// 3. Range-based sampling: If activity_ranges is non-empty, only
2599    ///     activities within the specified skip/count ranges are instrumented.
2600    ///     If empty, all activities that passed the previous steps are
2601    ///     instrumented.
2602    #[derive(Clone, PartialEq, ::prost::Message)]
2603    pub struct InstrumentedSamplingConfig {
2604        /// GPU activity name filters. An activity matches if it matches any filter.
2605        #[prost(message, repeated, tag = "3")]
2606        pub activity_name_filters: ::prost::alloc::vec::Vec<
2607            instrumented_sampling_config::ActivityNameFilter,
2608        >,
2609        /// Glob patterns to use for including GPU activities in TX ranges. TX
2610        /// ranges are in-process annotations that mark different sections of GPU
2611        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
2612        /// activity is included if any range in its nesting hierarchy matches.
2613        /// Only activities that fall within a matching TX range will be
2614        /// instrumented.
2615        #[prost(string, repeated, tag = "6")]
2616        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
2617            ::prost::alloc::string::String,
2618        >,
2619        /// Glob patterns to use for excluding GPU activities from TX ranges.
2620        /// TX ranges can be nested, and an activity is excluded if any range
2621        /// in its nesting hierarchy matches. Excludes take precedence over
2622        /// includes.
2623        #[prost(string, repeated, tag = "7")]
2624        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
2625            ::prost::alloc::string::String,
2626        >,
2627        /// Ranges of GPU activities to instrument. Applied after activity name
2628        /// and TX range filters. If empty, all activities that passed the
2629        /// previous filters are instrumented.
2630        #[prost(message, repeated, tag = "5")]
2631        pub activity_ranges: ::prost::alloc::vec::Vec<
2632            instrumented_sampling_config::ActivityRange,
2633        >,
2634    }
2635    /// Nested message and enum types in `InstrumentedSamplingConfig`.
2636    pub mod instrumented_sampling_config {
2637        /// Filters GPU activities by name. Each filter specifies a glob pattern
2638        /// and the basis for matching (mangled or demangled kernel name).
2639        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2640        pub struct ActivityNameFilter {
2641            /// required. Glob pattern to use for GPU activity name filtering.
2642            #[prost(string, optional, tag = "1")]
2643            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
2644            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
2645            /// specified.
2646            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
2647            pub name_base: ::core::option::Option<i32>,
2648        }
2649        /// Nested message and enum types in `ActivityNameFilter`.
2650        pub mod activity_name_filter {
2651            #[derive(
2652                Clone,
2653                Copy,
2654                Debug,
2655                PartialEq,
2656                Eq,
2657                Hash,
2658                PartialOrd,
2659                Ord,
2660                ::prost::Enumeration
2661            )]
2662            #[repr(i32)]
2663            pub enum NameBase {
2664                /// Match against the mangled (compiler-encoded) kernel name.
2665                /// Example: for a kernel whose demangled name is
2666                /// "matmul(float*,int,int)", the mangled name might be
2667                /// "_Z6matmulPfii". The glob pattern is matched against this
2668                /// mangled form.
2669                MangledKernelName = 0,
2670                /// Match against the fully demangled kernel name, including
2671                /// parameters, templates, and qualifiers.
2672                /// Example: "matmul(float*,int,int)". The glob pattern is
2673                /// matched against this full demangled form.
2674                DemangledKernelName = 1,
2675                /// Match against only the function name portion of the
2676                /// demangled kernel name, without parameters, templates,
2677                /// return types, or namespaces.
2678                /// Example: "matmul". The glob pattern is matched against
2679                /// just the bare function name.
2680                FunctionName = 2,
2681            }
2682            impl NameBase {
2683                /// String value of the enum field names used in the ProtoBuf definition.
2684                ///
2685                /// The values are not transformed in any way and thus are considered stable
2686                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2687                pub fn as_str_name(&self) -> &'static str {
2688                    match self {
2689                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
2690                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
2691                        Self::FunctionName => "FUNCTION_NAME",
2692                    }
2693                }
2694                /// Creates an enum from field names used in the ProtoBuf definition.
2695                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2696                    match value {
2697                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
2698                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
2699                        "FUNCTION_NAME" => Some(Self::FunctionName),
2700                        _ => None,
2701                    }
2702                }
2703            }
2704        }
2705        /// Defines a range of GPU activities to instrument.
2706        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2707        pub struct ActivityRange {
2708            /// Number of GPU activities to skip before starting to instrument
2709            /// command buffers. Defaults to 0 if not specified.
2710            #[prost(uint32, optional, tag = "1")]
2711            pub skip: ::core::option::Option<u32>,
2712            /// Limit for the number of GPU activities to sample counters for by
2713            /// instrumenting command buffers. Defaults to UINT32_MAX (all
2714            /// remaining activities) if not specified.
2715            #[prost(uint32, optional, tag = "2")]
2716            pub count: ::core::option::Option<u32>,
2717        }
2718    }
2719    /// Sample counters by instrumenting command buffers.
2720    #[derive(Clone, PartialEq, ::prost::Oneof)]
2721    pub enum InstrumentedSamplingMode {
2722        #[prost(bool, tag = "3")]
2723        InstrumentedSampling(bool),
2724        #[prost(message, tag = "5")]
2725        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
2726    }
2727}
2728#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2729pub struct GpuRenderStagesConfig {
2730    /// Enable to separate the color and depth/stencil load and store stages
2731    /// into a separate stages. If disabled, the depth/stencil load and store
2732    /// stages will be combined.  Disabled by default. This option has no effect if
2733    /// Low Overhead mode is enabled.
2734    #[prost(bool, optional, tag = "1")]
2735    pub full_loadstore: ::core::option::Option<bool>,
2736    /// Use the low overhead mode for traces. In this mode render stages are
2737    /// combined into a single workload stage. This provides less granular data but
2738    /// induces minimal GPU overhead. Disabled by default.
2739    #[prost(bool, optional, tag = "2")]
2740    pub low_overhead: ::core::option::Option<bool>,
2741    /// Trace metrics to capture for each render stage
2742    #[prost(string, repeated, tag = "3")]
2743    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2744    /// Enable per-draw-call slices, with real per-occurrence timestamps and metric
2745    /// values, on the gpu.renderstages data source. Disabled by default.
2746    /// When drawcall_stages is enabled, full_loadstore and low_overhead are
2747    /// ignored and their default values are used.
2748    #[prost(bool, optional, tag = "4")]
2749    pub drawcall_stages: ::core::option::Option<bool>,
2750}
2751#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2752pub struct VulkanMemoryConfig {
2753    /// Tracking driver memory usage events
2754    #[prost(bool, optional, tag = "1")]
2755    pub track_driver_memory_usage: ::core::option::Option<bool>,
2756    /// Tracking device memory usage events
2757    #[prost(bool, optional, tag = "2")]
2758    pub track_device_memory_usage: ::core::option::Option<bool>,
2759}
2760/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2761/// systems.
2762#[derive(Clone, PartialEq, ::prost::Message)]
2763pub struct InodeFileConfig {
2764    /// How long to pause between batches.
2765    #[prost(uint32, optional, tag = "1")]
2766    pub scan_interval_ms: ::core::option::Option<u32>,
2767    /// How long to wait before the first scan in order to accumulate inodes.
2768    #[prost(uint32, optional, tag = "2")]
2769    pub scan_delay_ms: ::core::option::Option<u32>,
2770    /// How many inodes to scan in one batch.
2771    #[prost(uint32, optional, tag = "3")]
2772    pub scan_batch_size: ::core::option::Option<u32>,
2773    /// Do not scan for inodes not found in the static map.
2774    #[prost(bool, optional, tag = "4")]
2775    pub do_not_scan: ::core::option::Option<bool>,
2776    /// If non-empty, only scan inodes corresponding to block devices named in
2777    /// this list.
2778    #[prost(string, repeated, tag = "5")]
2779    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2780    /// When encountering an inode belonging to a block device corresponding
2781    /// to one of the mount points in this map, scan its scan_roots instead.
2782    #[prost(message, repeated, tag = "6")]
2783    pub mount_point_mapping: ::prost::alloc::vec::Vec<
2784        inode_file_config::MountPointMappingEntry,
2785    >,
2786}
2787/// Nested message and enum types in `InodeFileConfig`.
2788pub mod inode_file_config {
2789    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2790    pub struct MountPointMappingEntry {
2791        #[prost(string, optional, tag = "1")]
2792        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2793        #[prost(string, repeated, tag = "2")]
2794        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2795    }
2796}
2797#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2798pub struct ConsoleConfig {
2799    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
2800    pub output: ::core::option::Option<i32>,
2801    #[prost(bool, optional, tag = "2")]
2802    pub enable_colors: ::core::option::Option<bool>,
2803}
2804/// Nested message and enum types in `ConsoleConfig`.
2805pub mod console_config {
2806    #[derive(
2807        Clone,
2808        Copy,
2809        Debug,
2810        PartialEq,
2811        Eq,
2812        Hash,
2813        PartialOrd,
2814        Ord,
2815        ::prost::Enumeration
2816    )]
2817    #[repr(i32)]
2818    pub enum Output {
2819        Unspecified = 0,
2820        Stdout = 1,
2821        Stderr = 2,
2822    }
2823    impl Output {
2824        /// String value of the enum field names used in the ProtoBuf definition.
2825        ///
2826        /// The values are not transformed in any way and thus are considered stable
2827        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2828        pub fn as_str_name(&self) -> &'static str {
2829            match self {
2830                Self::Unspecified => "OUTPUT_UNSPECIFIED",
2831                Self::Stdout => "OUTPUT_STDOUT",
2832                Self::Stderr => "OUTPUT_STDERR",
2833            }
2834        }
2835        /// Creates an enum from field names used in the ProtoBuf definition.
2836        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2837            match value {
2838                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
2839                "OUTPUT_STDOUT" => Some(Self::Stdout),
2840                "OUTPUT_STDERR" => Some(Self::Stderr),
2841                _ => None,
2842            }
2843        }
2844    }
2845}
2846/// Configuration for trace packet interception. Used for diverting trace data to
2847/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2848/// Perfetto SDK.
2849#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2850pub struct InterceptorConfig {
2851    /// Matches the name given to RegisterInterceptor().
2852    #[prost(string, optional, tag = "1")]
2853    pub name: ::core::option::Option<::prost::alloc::string::String>,
2854    #[prost(message, optional, tag = "100")]
2855    pub console_config: ::core::option::Option<ConsoleConfig>,
2856}
2857/// Configuration for the "linux.systemd_journald" data source.
2858/// Next field id: 4
2859#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2860pub struct SystemdJournaldConfig {
2861    /// Minimum syslog priority level to capture (inclusive).
2862    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
2863    /// Default (0 / unset): capture all priorities (equivalent to 7).
2864    #[prost(uint32, optional, tag = "1")]
2865    pub min_prio: ::core::option::Option<u32>,
2866    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
2867    /// matches one of these strings.
2868    #[prost(string, repeated, tag = "2")]
2869    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2870    /// If non-empty, only capture journal entries from these systemd unit names.
2871    #[prost(string, repeated, tag = "3")]
2872    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2873}
2874#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2875pub struct AndroidPowerConfig {
2876    #[prost(uint32, optional, tag = "1")]
2877    pub battery_poll_ms: ::core::option::Option<u32>,
2878    #[prost(
2879        enumeration = "android_power_config::BatteryCounters",
2880        repeated,
2881        packed = "false",
2882        tag = "2"
2883    )]
2884    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2885    /// Where available enables per-power-rail measurements.
2886    #[prost(bool, optional, tag = "3")]
2887    pub collect_power_rails: ::core::option::Option<bool>,
2888    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2889    /// Available from Android S.
2890    #[prost(bool, optional, tag = "4")]
2891    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2892    /// Provides a breakdown of time in state for various subsystems.
2893    /// Available from Android U.
2894    #[prost(bool, optional, tag = "5")]
2895    pub collect_entity_state_residency: ::core::option::Option<bool>,
2896}
2897/// Nested message and enum types in `AndroidPowerConfig`.
2898pub mod android_power_config {
2899    #[derive(
2900        Clone,
2901        Copy,
2902        Debug,
2903        PartialEq,
2904        Eq,
2905        Hash,
2906        PartialOrd,
2907        Ord,
2908        ::prost::Enumeration
2909    )]
2910    #[repr(i32)]
2911    pub enum BatteryCounters {
2912        BatteryCounterUnspecified = 0,
2913        /// Coulomb counter.
2914        BatteryCounterCharge = 1,
2915        /// Charge (%).
2916        BatteryCounterCapacityPercent = 2,
2917        /// Instantaneous current.
2918        BatteryCounterCurrent = 3,
2919        /// Avg current.
2920        BatteryCounterCurrentAvg = 4,
2921        /// Instantaneous voltage.
2922        BatteryCounterVoltage = 5,
2923    }
2924    impl BatteryCounters {
2925        /// String value of the enum field names used in the ProtoBuf definition.
2926        ///
2927        /// The values are not transformed in any way and thus are considered stable
2928        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2929        pub fn as_str_name(&self) -> &'static str {
2930            match self {
2931                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2932                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2933                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2934                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2935                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2936                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2937            }
2938        }
2939        /// Creates an enum from field names used in the ProtoBuf definition.
2940        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2941            match value {
2942                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
2943                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
2944                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
2945                    Some(Self::BatteryCounterCapacityPercent)
2946                }
2947                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
2948                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
2949                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
2950                _ => None,
2951            }
2952        }
2953    }
2954}
2955/// Configuration that allows to boost the priority of the 'traced' or
2956/// 'traced_probs' processes, by changing the scheduler configuration.
2957/// Only supported on Linux and Android the boosted process must have
2958/// 'CAP_SYS_NICE' capability.
2959#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2960pub struct PriorityBoostConfig {
2961    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
2962    pub policy: ::core::option::Option<i32>,
2963    #[prost(uint32, optional, tag = "2")]
2964    pub priority: ::core::option::Option<u32>,
2965}
2966/// Nested message and enum types in `PriorityBoostConfig`.
2967pub mod priority_boost_config {
2968    #[derive(
2969        Clone,
2970        Copy,
2971        Debug,
2972        PartialEq,
2973        Eq,
2974        Hash,
2975        PartialOrd,
2976        Ord,
2977        ::prost::Enumeration
2978    )]
2979    #[repr(i32)]
2980    pub enum BoostPolicy {
2981        PolicyUnspecified = 0,
2982        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
2983        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2984        /// than default 0, 20 is the highest priority.
2985        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2986        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2987        PolicySchedOther = 1,
2988        /// The Real-time policy, Priority range: \[1; 99\]
2989        PolicySchedFifo = 2,
2990    }
2991    impl BoostPolicy {
2992        /// String value of the enum field names used in the ProtoBuf definition.
2993        ///
2994        /// The values are not transformed in any way and thus are considered stable
2995        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2996        pub fn as_str_name(&self) -> &'static str {
2997            match self {
2998                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
2999                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
3000                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
3001            }
3002        }
3003        /// Creates an enum from field names used in the ProtoBuf definition.
3004        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3005            match value {
3006                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
3007                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
3008                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
3009                _ => None,
3010            }
3011        }
3012    }
3013}
3014/// Config for polling process-related information from /proc/pid/status and
3015/// related files on Linux.
3016///
3017/// Data source name: "linux.process_stats".
3018#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3019pub struct ProcessStatsConfig {
3020    #[prost(
3021        enumeration = "process_stats_config::Quirks",
3022        repeated,
3023        packed = "false",
3024        tag = "1"
3025    )]
3026    pub quirks: ::prost::alloc::vec::Vec<i32>,
3027    /// If enabled all processes will be scanned and dumped when the trace starts.
3028    #[prost(bool, optional, tag = "2")]
3029    pub scan_all_processes_on_start: ::core::option::Option<bool>,
3030    /// If enabled thread names are also recoded (this is redundant if sched_switch
3031    /// is enabled).
3032    #[prost(bool, optional, tag = "3")]
3033    pub record_thread_names: ::core::option::Option<bool>,
3034    /// If > 0 samples counters (see process_stats.proto) from
3035    /// /proc/pid/status and oom_score_adj every X ms.
3036    /// This is required to be > 100ms to avoid excessive CPU usage.
3037    #[prost(uint32, optional, tag = "4")]
3038    pub proc_stats_poll_ms: ::core::option::Option<u32>,
3039    /// Explicit caching period during which the polling won't re-emit identical
3040    /// counter values. This is required to be either = 0 or a multiple of
3041    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
3042    /// rounded down to the nearest multiple.
3043    #[prost(uint32, optional, tag = "6")]
3044    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
3045    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
3046    /// /proc/pid/smaps_rollup.
3047    ///
3048    /// Android: does NOT work with the system daemons by default, as it requires
3049    /// running the recording process (traced_probes or tracebox) as root. It is
3050    /// possible to avoid the root requirement, but the exact steps depend on the
3051    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
3052    /// check, and might be further covered by the procfs "hidepid" mount option.
3053    #[prost(bool, optional, tag = "10")]
3054    pub scan_smaps_rollup: ::core::option::Option<bool>,
3055    /// If true: process descriptions will include process age (starttime in
3056    /// /proc/pid/stat).
3057    /// Introduced in: perfetto v44.
3058    #[prost(bool, optional, tag = "11")]
3059    pub record_process_age: ::core::option::Option<bool>,
3060    /// If true and |proc_stats_poll_ms| is set, process stats will include time
3061    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
3062    /// Introduced in: perfetto v44.
3063    #[prost(bool, optional, tag = "12")]
3064    pub record_process_runtime: ::core::option::Option<bool>,
3065    /// If true obtain per-process dmabuf resident set size from
3066    /// /proc/pid/dmabuf_rss.
3067    /// This feature is not in upstream linux, and is available only on some
3068    /// Android kernels.
3069    #[prost(bool, optional, tag = "13")]
3070    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
3071    /// WARNING: unmaintained and deprecated. If true this will resolve file
3072    /// descriptors for each process so these can be mapped to their actual device
3073    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
3074    /// or new fds opened after initially scanning a process will not be
3075    /// recognized.
3076    #[prost(bool, optional, tag = "9")]
3077    pub resolve_process_fds: ::core::option::Option<bool>,
3078    /// If true, do *not* write a ProcessTree::Thread message for the main thread
3079    /// of a process. This was the default behaviour before perfetto v58.
3080    ///
3081    /// Added in perfetto v58.
3082    #[prost(bool, optional, tag = "14")]
3083    pub skip_main_thread_message: ::core::option::Option<bool>,
3084}
3085/// Nested message and enum types in `ProcessStatsConfig`.
3086pub mod process_stats_config {
3087    #[derive(
3088        Clone,
3089        Copy,
3090        Debug,
3091        PartialEq,
3092        Eq,
3093        Hash,
3094        PartialOrd,
3095        Ord,
3096        ::prost::Enumeration
3097    )]
3098    #[repr(i32)]
3099    pub enum Quirks {
3100        Unspecified = 0,
3101        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
3102        /// startup is now disabled by default and can be re-enabled using the
3103        /// |scan_all_processes_on_start| arg.
3104        #[deprecated]
3105        DisableInitialDump = 1,
3106        /// If set, disables the special interaction with "linux.ftrace" data source,
3107        /// where the process stats rescrapes any thread id seen in the ftrace
3108        /// stream.
3109        DisableOnDemand = 2,
3110    }
3111    impl Quirks {
3112        /// String value of the enum field names used in the ProtoBuf definition.
3113        ///
3114        /// The values are not transformed in any way and thus are considered stable
3115        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3116        pub fn as_str_name(&self) -> &'static str {
3117            match self {
3118                Self::Unspecified => "QUIRKS_UNSPECIFIED",
3119                #[allow(deprecated)]
3120                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
3121                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
3122            }
3123        }
3124        /// Creates an enum from field names used in the ProtoBuf definition.
3125        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3126            match value {
3127                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
3128                "DISABLE_INITIAL_DUMP" => {
3129                    Some(#[allow(deprecated)] Self::DisableInitialDump)
3130                }
3131                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
3132                _ => None,
3133            }
3134        }
3135    }
3136}
3137/// Configuration for go/heapprofd.
3138/// Next id: 28
3139#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3140pub struct HeapprofdConfig {
3141    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
3142    ///
3143    /// These are:
3144    /// * All heaps if heap_sampling_intervals is empty.
3145    /// * Those profiled due to all_heaps and not named in heaps if
3146    ///    heap_sampling_intervals is not empty.
3147    /// * The implicit libc.malloc heap if heaps is empty.
3148    ///
3149    /// Set to 1 for perfect accuracy.
3150    /// Otherwise, sample every sample_interval_bytes on average.
3151    ///
3152    /// See
3153    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
3154    /// for more details.
3155    ///
3156    /// BUGS
3157    /// Before Android 12, setting this to 0 would crash the target process.
3158    ///
3159    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
3160    /// this field or with heap_sampling_intervals), otherwise the producer will
3161    /// not start.
3162    #[prost(uint64, optional, tag = "1")]
3163    pub sampling_interval_bytes: ::core::option::Option<u64>,
3164    /// If less than the given numbers of bytes are left free in the shared
3165    /// memory buffer, increase sampling interval by a factor of two.
3166    /// Adaptive sampling is disabled when set to 0.
3167    #[prost(uint64, optional, tag = "24")]
3168    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
3169    /// Stop doubling the sampling_interval once the sampling interval has reached
3170    /// this value.
3171    #[prost(uint64, optional, tag = "25")]
3172    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
3173    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
3174    /// as the following section (A), and on newer versions are both (A) and (B):
3175    ///
3176    /// (A) E.g. surfaceflinger, com.android.phone
3177    /// This input is normalized in the following way: if it contains slashes,
3178    /// everything up to the last slash is discarded. If it contains "@",
3179    /// everything after the first @ is discared.
3180    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
3181    /// This transformation is also applied to the processes' command lines when
3182    /// matching.
3183    ///
3184    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
3185    /// case it is matched against running processes' command lines using glob
3186    /// semantics. If the pattern starts with '/' it is matched against the full
3187    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
3188    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
3189    /// normalized as described above.
3190    /// Wildcard patterns are supported only for profiling already-running
3191    /// processes. A config must set no_startup=true if using wildcards, or it will
3192    /// be rejected.
3193    #[prost(string, repeated, tag = "2")]
3194    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3195    /// For watermark based triggering or local debugging.
3196    #[prost(uint64, repeated, packed = "false", tag = "4")]
3197    pub pid: ::prost::alloc::vec::Vec<u64>,
3198    /// Only profile target if it was installed by one of the packages given.
3199    /// Special values are:
3200    /// * @system: installed on the system partition
3201    /// * @product: installed on the product partition
3202    /// * @null: sideloaded
3203    /// Supported on Android 12+.
3204    #[prost(string, repeated, tag = "26")]
3205    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3206    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
3207    /// "malloc".
3208    ///
3209    /// Introduced in Android 12.
3210    #[prost(string, repeated, tag = "20")]
3211    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3212    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
3213    /// combination with all_heaps;
3214    ///
3215    /// Introduced in Android 12.
3216    #[prost(string, repeated, tag = "27")]
3217    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3218    #[prost(bool, optional, tag = "23")]
3219    pub stream_allocations: ::core::option::Option<bool>,
3220    /// If given, needs to be the same length as heaps and gives the sampling
3221    /// interval for the respective entry in heaps.
3222    ///
3223    /// Otherwise, sampling_interval_bytes is used.
3224    ///
3225    /// It is recommended to set sampling_interval_bytes to a reasonable default
3226    /// value when using this, as a value of 0 for sampling_interval_bytes will
3227    /// crash the target process before Android 12.
3228    ///
3229    /// Introduced in Android 12.
3230    ///
3231    /// All values must be non-zero or the producer will not start.
3232    #[prost(uint64, repeated, packed = "false", tag = "22")]
3233    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
3234    /// Sample all heaps registered by target process. Introduced in Android 12.
3235    #[prost(bool, optional, tag = "21")]
3236    pub all_heaps: ::core::option::Option<bool>,
3237    /// Profile all processes eligible for profiling on the system.
3238    /// See
3239    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
3240    /// for which processes are eligible.
3241    ///
3242    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
3243    /// will crash when trying to launch a new process as it will have an
3244    /// unexpected open socket to heapprofd.
3245    ///
3246    /// heapprofd will likely be overloaded by the amount of data for low
3247    /// sampling intervals.
3248    #[prost(bool, optional, tag = "5")]
3249    pub all: ::core::option::Option<bool>,
3250    /// Do not profile processes whose anon RSS + swap < given value.
3251    /// Introduced in Android 11.
3252    #[prost(uint32, optional, tag = "15")]
3253    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3254    /// Stop profile if heapprofd memory usage goes beyond the given value.
3255    /// Introduced in Android 11.
3256    #[prost(uint32, optional, tag = "16")]
3257    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
3258    /// Stop profile if heapprofd CPU time since start of this data-source
3259    /// goes beyond given value.
3260    /// Introduced in Android 11.
3261    #[prost(uint64, optional, tag = "17")]
3262    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
3263    /// Do not emit function names for mappings starting with this prefix.
3264    /// E.g. /system to not emit symbols for any system libraries.
3265    #[prost(string, repeated, tag = "7")]
3266    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3267    /// Dump at a predefined interval.
3268    #[prost(message, optional, tag = "6")]
3269    pub continuous_dump_config: ::core::option::Option<
3270        heapprofd_config::ContinuousDumpConfig,
3271    >,
3272    /// Size of the shared memory buffer between the profiled processes and
3273    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
3274    /// MiB.
3275    ///
3276    /// Needs to be:
3277    /// * at least 8192,
3278    /// * a power of two,
3279    /// * a multiple of 4096.
3280    #[prost(uint64, optional, tag = "8")]
3281    pub shmem_size_bytes: ::core::option::Option<u64>,
3282    /// When the shmem buffer is full, block the client instead of ending the
3283    /// trace. Use with caution as this will significantly slow down the target
3284    /// process.
3285    #[prost(bool, optional, tag = "9")]
3286    pub block_client: ::core::option::Option<bool>,
3287    /// If set, stop the trace session after blocking the client for this
3288    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
3289    /// Introduced in Android 11.
3290    #[prost(uint32, optional, tag = "14")]
3291    pub block_client_timeout_us: ::core::option::Option<u32>,
3292    /// Do not profile processes from startup, only match already running
3293    /// processes.
3294    ///
3295    /// Can not be set at the same time as no_running.
3296    /// Introduced in Android 11.
3297    #[prost(bool, optional, tag = "10")]
3298    pub no_startup: ::core::option::Option<bool>,
3299    /// Do not profile running processes. Only match processes on startup.
3300    ///
3301    /// Can not be set at the same time as no_startup.
3302    /// Introduced in Android 11.
3303    #[prost(bool, optional, tag = "11")]
3304    pub no_running: ::core::option::Option<bool>,
3305    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
3306    /// at the point in time when the sampled heap usage of the process was at its
3307    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
3308    /// self_allocated and self_freed to not be set.
3309    /// Introduced in Android 11.
3310    #[prost(bool, optional, tag = "13")]
3311    pub dump_at_max: ::core::option::Option<bool>,
3312    /// Escape hatch if the session is being torn down because of a forked child
3313    /// that shares memory space, but is not correctly identified as a vforked
3314    /// child.
3315    /// Introduced in Android 11.
3316    #[prost(bool, optional, tag = "18")]
3317    pub disable_fork_teardown: ::core::option::Option<bool>,
3318    /// We try to automatically detect when a target applicatation vforks but then
3319    /// does a memory allocation (or free). This auto-detection can be disabled
3320    /// with this.
3321    /// Introduced in Android 11.
3322    #[prost(bool, optional, tag = "19")]
3323    pub disable_vfork_detection: ::core::option::Option<bool>,
3324}
3325/// Nested message and enum types in `HeapprofdConfig`.
3326pub mod heapprofd_config {
3327    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3328    pub struct ContinuousDumpConfig {
3329        /// ms to wait before first dump.
3330        #[prost(uint32, optional, tag = "5")]
3331        pub dump_phase_ms: ::core::option::Option<u32>,
3332        /// ms to wait between following dumps.
3333        #[prost(uint32, optional, tag = "6")]
3334        pub dump_interval_ms: ::core::option::Option<u32>,
3335    }
3336}
3337/// Config for the "linux.smaps" data source, describes one-shot or periodic
3338/// /proc/pid/smaps collection.
3339///
3340/// A valid config must specify at least one |target_cmdline| or |target_uid|.
3341/// Example:
3342///
3343/// data_sources {
3344///    config {
3345///      name: "linux.smaps"
3346///      process_smaps_config {
3347///        scope {
3348///          target_cmdline: "top"
3349///          target_cmdline: "tmux"
3350///        }
3351///      }
3352///    }
3353/// }
3354#[derive(Clone, PartialEq, ::prost::Message)]
3355pub struct ProcessSmapsConfig {
3356    /// Which fields to record per process.
3357    /// If unset, defaults to {size, rss, anon, swap}, aggregated by path name.
3358    #[prost(message, optional, tag = "1")]
3359    pub smaps_config: ::core::option::Option<SmapsConfig>,
3360    #[prost(message, optional, tag = "2")]
3361    pub scope: ::core::option::Option<process_smaps_config::Scope>,
3362    /// How often to recapture the smaps, including re-evaluating which processes
3363    /// match the |scope|. May be overridden by the implementation (at the time of
3364    /// writing, \[1s, 24hr\] range).
3365    /// If zero or unset, each process is captured only once at start.
3366    #[prost(uint32, optional, tag = "3")]
3367    pub read_period_ms: ::core::option::Option<u32>,
3368    /// Caps the number of processes handled per |read_period_ms|, or overall if
3369    /// the config is one-shot (period = 0). The immediate use case is to limit
3370    /// work if too many processes match the |scope|.
3371    /// Additionally, this option can be used for sampling, since the
3372    /// implementation inspects processes in a shuffled order (not in numeric pid
3373    /// order), and successive periods cover separate subsets of pids.
3374    /// So a config with scope=*, period=10s, and max_processes=5 would
3375    /// progressively scan all processes on the machine by parsing 5 processes at
3376    /// a time with 10s breaks in between.
3377    /// If zero or unset, there is no limit.
3378    #[prost(uint32, optional, tag = "4")]
3379    pub max_processes_per_period: ::core::option::Option<u32>,
3380}
3381/// Nested message and enum types in `ProcessSmapsConfig`.
3382pub mod process_smaps_config {
3383    /// Which processes to record. At least one field must be set.
3384    /// Multiples of the same option (e.g. target_cmdline) are ORed.
3385    /// Different options are ANDed, skipping fields that are unset.
3386    #[derive(Clone, PartialEq, ::prost::Message)]
3387    pub struct Scope {
3388        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3389        /// comm string).
3390        ///
3391        /// This field can specify a single wildcard (*), and the profiler will
3392        /// attempt to match it in two possible ways:
3393        /// * if the pattern starts with a '/', then it is matched against the first
3394        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3395        ///    "/bin/echo".
3396        /// * otherwise the pattern is matched against the part of argv0
3397        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3398        ///    For example "echo" would match "/bin/echo".
3399        ///
3400        /// Implementation note: at most 511 characters of cmdline are considered.
3401        #[prost(string, repeated, tag = "1")]
3402        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3403        #[prost(message, repeated, tag = "2")]
3404        pub target_uid: ::prost::alloc::vec::Vec<scope::UidRange>,
3405    }
3406    /// Nested message and enum types in `Scope`.
3407    pub mod scope {
3408        /// Range of UIDs.
3409        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3410        pub struct UidRange {
3411            /// inclusive, must be set
3412            #[prost(uint32, optional, tag = "1")]
3413            pub min_uid: ::core::option::Option<u32>,
3414            /// inclusive, must be set
3415            #[prost(uint32, optional, tag = "2")]
3416            pub max_uid: ::core::option::Option<u32>,
3417            /// Android: if true, compare the UID modulo the per-user/profile offset
3418            /// (AID_USER_OFFSET, 100000).
3419            #[prost(bool, optional, tag = "3")]
3420            pub android_match_across_profiles: ::core::option::Option<bool>,
3421        }
3422    }
3423}
3424/// Describes what to record from /proc/pid/smaps.
3425#[derive(Clone, PartialEq, ::prost::Message)]
3426pub struct SmapsConfig {
3427    /// Set of fields to collect.
3428    /// If unset, defaults to: size, rss, anonymous, swap.
3429    #[prost(
3430        enumeration = "smaps_config::VmaField",
3431        repeated,
3432        packed = "false",
3433        tag = "1"
3434    )]
3435    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
3436    /// If false, mappings are aggregated by their path name.
3437    /// If true, each mapping is serialised separately.
3438    #[prost(bool, optional, tag = "2")]
3439    pub unaggregated: ::core::option::Option<bool>,
3440    /// Optional ordered list of redaction rules for the name of the mapping.
3441    /// Note that all mappings will still be emitted, these rules only affect the
3442    /// emitted name.
3443    /// If unset, all names are written as is.
3444    /// If set, the first matching rule decides on the action.
3445    /// If no rules match, the name is written as is.
3446    #[prost(message, repeated, tag = "3")]
3447    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
3448}
3449/// Nested message and enum types in `SmapsConfig`.
3450pub mod smaps_config {
3451    #[derive(
3452        Clone,
3453        Copy,
3454        Debug,
3455        PartialEq,
3456        Eq,
3457        Hash,
3458        PartialOrd,
3459        Ord,
3460        ::prost::Enumeration
3461    )]
3462    #[repr(i32)]
3463    pub enum VmaField {
3464        Unknown = 0,
3465        Size = 1,
3466        Rss = 2,
3467        Anonymous = 3,
3468        Swap = 4,
3469        SharedClean = 5,
3470        SharedDirty = 6,
3471        PrivateClean = 7,
3472        PrivateDirty = 8,
3473        Locked = 9,
3474        Pss = 10,
3475        PssDirty = 11,
3476        SwapPss = 12,
3477    }
3478    impl VmaField {
3479        /// String value of the enum field names used in the ProtoBuf definition.
3480        ///
3481        /// The values are not transformed in any way and thus are considered stable
3482        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3483        pub fn as_str_name(&self) -> &'static str {
3484            match self {
3485                Self::Unknown => "VMA_FIELD_UNKNOWN",
3486                Self::Size => "VMA_FIELD_SIZE",
3487                Self::Rss => "VMA_FIELD_RSS",
3488                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
3489                Self::Swap => "VMA_FIELD_SWAP",
3490                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
3491                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
3492                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
3493                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
3494                Self::Locked => "VMA_FIELD_LOCKED",
3495                Self::Pss => "VMA_FIELD_PSS",
3496                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
3497                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
3498            }
3499        }
3500        /// Creates an enum from field names used in the ProtoBuf definition.
3501        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3502            match value {
3503                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
3504                "VMA_FIELD_SIZE" => Some(Self::Size),
3505                "VMA_FIELD_RSS" => Some(Self::Rss),
3506                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
3507                "VMA_FIELD_SWAP" => Some(Self::Swap),
3508                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
3509                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
3510                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
3511                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
3512                "VMA_FIELD_LOCKED" => Some(Self::Locked),
3513                "VMA_FIELD_PSS" => Some(Self::Pss),
3514                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
3515                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
3516                _ => None,
3517            }
3518        }
3519    }
3520}
3521#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3522pub struct RedactionRule {
3523    /// The pattern to match against.
3524    #[prost(string, optional, tag = "1")]
3525    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
3526    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
3527    pub match_mode: ::core::option::Option<i32>,
3528    /// If the pattern matches, keep the entire name. In other words, do not
3529    /// redact. This option exists since the rules are evaluated in order, so a
3530    /// more specific allow rule with keep_full can match before a more general
3531    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
3532    /// |keep_path_elements|.
3533    #[prost(bool, optional, tag = "3")]
3534    pub keep_full: ::core::option::Option<bool>,
3535    /// If the pattern matches, replace the name with this string (defaulting to
3536    /// <pf_redacted> if unset). The final emitted name might be further augmented
3537    /// by the options below keeping parts of the original name.
3538    #[prost(string, optional, tag = "4")]
3539    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
3540    /// If the pattern matches, keep the file extension, if any.
3541    /// Can be combined with |keep_path_elements|.
3542    #[prost(bool, optional, tag = "5")]
3543    pub keep_file_extension: ::core::option::Option<bool>,
3544    /// If the pattern matches, keep the first N path elements (as separated by
3545    /// '/'). If the name is not a path, this option does nothing. Can be combined
3546    /// with |keep_file_extension|.
3547    #[prost(uint32, optional, tag = "6")]
3548    pub keep_path_elements: ::core::option::Option<u32>,
3549}
3550/// Nested message and enum types in `RedactionRule`.
3551pub mod redaction_rule {
3552    /// How to match |pattern| against the name of the mapping.
3553    /// Note for future extensions: unrecognised enums are treated as always
3554    /// matching.
3555    #[derive(
3556        Clone,
3557        Copy,
3558        Debug,
3559        PartialEq,
3560        Eq,
3561        Hash,
3562        PartialOrd,
3563        Ord,
3564        ::prost::Enumeration
3565    )]
3566    #[repr(i32)]
3567    pub enum MatchMode {
3568        Unknown = 0,
3569        /// The pattern matches if it is a prefix of the mapping name.
3570        Prefix = 1,
3571        /// The pattern is matched against the mapping name as a pathname glob
3572        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
3573        /// The key distinction is that path separators in the name are *not* matched
3574        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
3575        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
3576        /// Note: any "(deleted)" suffix is excluded before matching.
3577        GlobPath = 2,
3578        /// The pattern is matched against the mapping name without special-casing
3579        /// path separators. So a pattern of the form "/usr/*/llvm" would match
3580        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
3581        /// Note: any "(deleted)" suffix is excluded before matching.
3582        GlobString = 3,
3583    }
3584    impl MatchMode {
3585        /// String value of the enum field names used in the ProtoBuf definition.
3586        ///
3587        /// The values are not transformed in any way and thus are considered stable
3588        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3589        pub fn as_str_name(&self) -> &'static str {
3590            match self {
3591                Self::Unknown => "MATCH_MODE_UNKNOWN",
3592                Self::Prefix => "MATCH_MODE_PREFIX",
3593                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
3594                Self::GlobString => "MATCH_MODE_GLOB_STRING",
3595            }
3596        }
3597        /// Creates an enum from field names used in the ProtoBuf definition.
3598        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3599            match value {
3600                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
3601                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
3602                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
3603                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
3604                _ => None,
3605            }
3606        }
3607    }
3608}
3609/// Configuration for managed app heap graph snapshots.
3610#[derive(Clone, PartialEq, ::prost::Message)]
3611pub struct JavaHprofConfig {
3612    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3613    /// comm string). The semantics of this field were changed since its original
3614    /// introduction.
3615    ///
3616    /// On Android T+ (13+), this field can specify a single wildcard (*), and
3617    /// the profiler will attempt to match it in two possible ways:
3618    /// * if the pattern starts with a '/', then it is matched against the first
3619    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3620    ///    "/bin/echo".
3621    /// * otherwise the pattern is matched against the part of argv0
3622    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3623    ///    For example "echo" would match "/bin/echo".
3624    ///
3625    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3626    /// normalized prior to an exact string comparison. Normalization is as
3627    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3628    /// the string contains forward slashes, trim everything up to and including
3629    /// the last one.
3630    ///
3631    /// Implementation note: in either case, at most 511 characters of cmdline
3632    /// are considered.
3633    #[prost(string, repeated, tag = "1")]
3634    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3635    /// For watermark based triggering or local debugging.
3636    #[prost(uint64, repeated, packed = "false", tag = "2")]
3637    pub pid: ::prost::alloc::vec::Vec<u64>,
3638    /// Only profile target if it was installed by one of the packages given.
3639    /// Special values are:
3640    /// * @system: installed on the system partition
3641    /// * @product: installed on the product partition
3642    /// * @null: sideloaded
3643    /// Supported on Android 12+.
3644    #[prost(string, repeated, tag = "7")]
3645    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3646    /// Dump at a predefined interval.
3647    #[prost(message, optional, tag = "3")]
3648    pub continuous_dump_config: ::core::option::Option<
3649        java_hprof_config::ContinuousDumpConfig,
3650    >,
3651    /// Do not profile processes whose anon RSS + swap < given value.
3652    #[prost(uint32, optional, tag = "4")]
3653    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3654    /// Do not profile processes whose Java heap size < given value.
3655    #[prost(uint32, optional, tag = "9")]
3656    pub min_java_heap_size_kb: ::core::option::Option<u32>,
3657    /// Include the process' /proc/self/smaps.
3658    /// This only shows maps that:
3659    /// * start with /system
3660    /// * start with /vendor
3661    /// * start with /data/app
3662    /// * contain "extracted in memory from Y", where Y matches any of the above
3663    ///
3664    /// Superseded by |smaps_config| in perfetto v58+.
3665    #[prost(bool, optional, tag = "5")]
3666    pub dump_smaps: ::core::option::Option<bool>,
3667    /// If set, include /proc/self/smaps memory mappings.
3668    ///
3669    /// Added in perfetto v58.
3670    #[prost(message, optional, tag = "8")]
3671    pub smaps_config: ::core::option::Option<SmapsConfig>,
3672    /// Exclude objects of the following types from the profile. This can be
3673    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
3674    #[prost(string, repeated, tag = "6")]
3675    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3676    /// Dump the callsite of the thread triggering the OutOfMemoryError.
3677    /// Only applicable to OutOfMemoryError heap dumps
3678    #[prost(bool, optional, tag = "10")]
3679    pub dump_oome_callstack: ::core::option::Option<bool>,
3680}
3681/// Nested message and enum types in `JavaHprofConfig`.
3682pub mod java_hprof_config {
3683    /// If dump_interval_ms != 0, the following configuration is used.
3684    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3685    pub struct ContinuousDumpConfig {
3686        /// ms to wait before first continuous dump.
3687        /// A dump is always created at the beginning of the trace.
3688        #[prost(uint32, optional, tag = "1")]
3689        pub dump_phase_ms: ::core::option::Option<u32>,
3690        /// ms to wait between following dumps.
3691        #[prost(uint32, optional, tag = "2")]
3692        pub dump_interval_ms: ::core::option::Option<u32>,
3693        /// If true, scans all the processes to find `process_cmdline` and filter by
3694        /// `min_anonymous_memory_kb` only at data source start. Default on Android
3695        /// S-.
3696        ///
3697        /// If false, rescans all the processes to find on every dump. Default on
3698        /// Android T+.
3699        #[prost(bool, optional, tag = "3")]
3700        pub scan_pids_only_on_start: ::core::option::Option<bool>,
3701    }
3702}
3703#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3704pub struct PerfEvents {}
3705/// Nested message and enum types in `PerfEvents`.
3706pub mod perf_events {
3707    /// The primary event to count. If recording multiple events, this
3708    /// counter is the "group leader".
3709    /// Commented from the perspective of its use in |PerfEventConfig|.
3710    /// Next id: 13
3711    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3712    pub struct Timebase {
3713        /// Optional modifiers for the event. Modelled after the perftool's
3714        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
3715        /// Currently supported: count scoping such as :u, :k, :uk, ...
3716        /// Modifiers can differ between the timebase and followers.
3717        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
3718        pub modifiers: ::prost::alloc::vec::Vec<i32>,
3719        /// If set, samples will be timestamped with the given clock.
3720        /// If unset, the clock is chosen by the implementation.
3721        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
3722        /// used for hardware events (due to interrupt safety), for which the
3723        /// recommendation is to use one of the monotonic clocks.
3724        #[prost(enumeration = "PerfClock", optional, tag = "11")]
3725        pub timestamp_clock: ::core::option::Option<i32>,
3726        /// Optional arbitrary name for the event, to identify it in the parsed
3727        /// trace. Does *not* affect the profiling itself. If unset, the trace
3728        /// parser will choose a suitable name.
3729        #[prost(string, optional, tag = "10")]
3730        pub name: ::core::option::Option<::prost::alloc::string::String>,
3731        /// How often to snapshot the counter, along with any follower events and
3732        /// any additional sampled data such as callstacks.
3733        ///
3734        /// This choice also controls how the readings are taken:
3735        /// * With |frequency| or |period|, samples are taken by the kernel
3736        ///    into a ring buffer. Analogous to `perf record`.
3737        /// * With |poll_period_ms|, the userspace periodically snapshots
3738        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3739        /// Prefer the sampling options unless you're recording PMUs whose
3740        /// perf drivers only support the reading mode.
3741        ///
3742        /// If unset, an implementation-defined sampling default is used.
3743        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
3744        pub interval: ::core::option::Option<timebase::Interval>,
3745        /// Counting event to use as the timebase.
3746        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3747        /// which is what you usually want.
3748        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
3749        pub event: ::core::option::Option<timebase::Event>,
3750    }
3751    /// Nested message and enum types in `Timebase`.
3752    pub mod timebase {
3753        /// How often to snapshot the counter, along with any follower events and
3754        /// any additional sampled data such as callstacks.
3755        ///
3756        /// This choice also controls how the readings are taken:
3757        /// * With |frequency| or |period|, samples are taken by the kernel
3758        ///    into a ring buffer. Analogous to `perf record`.
3759        /// * With |poll_period_ms|, the userspace periodically snapshots
3760        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3761        /// Prefer the sampling options unless you're recording PMUs whose
3762        /// perf drivers only support the reading mode.
3763        ///
3764        /// If unset, an implementation-defined sampling default is used.
3765        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
3766        pub enum Interval {
3767            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
3768            /// same as 1/period.
3769            /// Details: the actual sampling will still be based on a period, but the
3770            /// kernel will dynamically adjust it based on the observed event rate, to
3771            /// approximate this frequency. Works best with steady-rate events like
3772            /// timers.
3773            /// Not guaranteed to be honored as the kernel can throttle the sampling
3774            /// rate if it's too high.
3775            #[prost(uint64, tag = "2")]
3776            Frequency(u64),
3777            /// Per-cpu sampling will occur every |period| counts of |event|.
3778            /// Prefer |frequency| by default, as it's easier to oversample with a
3779            /// fixed period.
3780            /// Not guaranteed to be honored as the kernel can throttle the sampling
3781            /// rate if it's too high.
3782            #[prost(uint64, tag = "1")]
3783            Period(u64),
3784            /// Per-cpu values are read by the userspace every interval. If using this
3785            /// mode, only follower events are supported. Options such as
3786            /// |PerfEventConfig.CallstackSampling| are incompatible.
3787            /// The period can't be guaranteed to be exact since the readings are taken
3788            /// by userspace.
3789            #[prost(uint32, tag = "6")]
3790            PollPeriodMs(u32),
3791        }
3792        /// Counting event to use as the timebase.
3793        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3794        /// which is what you usually want.
3795        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
3796        pub enum Event {
3797            #[prost(enumeration = "super::Counter", tag = "4")]
3798            Counter(i32),
3799            #[prost(message, tag = "3")]
3800            Tracepoint(super::Tracepoint),
3801            #[prost(message, tag = "5")]
3802            RawEvent(super::RawEvent),
3803        }
3804    }
3805    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3806    pub struct Tracepoint {
3807        /// Group and name for the tracepoint, acceptable forms:
3808        /// * "sched/sched_switch"
3809        /// * "sched:sched_switch"
3810        #[prost(string, optional, tag = "1")]
3811        pub name: ::core::option::Option<::prost::alloc::string::String>,
3812        /// Optional field-level filter for the tracepoint. Only events matching this
3813        /// filter will be counted (and therefore contribute to the sampling period).
3814        /// Example: "prev_pid >= 42 && next_pid == 0".
3815        /// For full syntax, see kernel documentation on "Event filtering":
3816        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
3817        #[prost(string, optional, tag = "2")]
3818        pub filter: ::core::option::Option<::prost::alloc::string::String>,
3819    }
3820    /// Syscall-level description of the event, propagated to the perf_event_attr
3821    /// struct. Primarily for local use-cases, since the event availability and
3822    /// encoding is hardware-specific.
3823    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3824    pub struct RawEvent {
3825        /// Either |type| or |pmu_name| can be set.
3826        #[prost(uint32, optional, tag = "1")]
3827        pub r#type: ::core::option::Option<u32>,
3828        #[prost(uint64, optional, tag = "2")]
3829        pub config: ::core::option::Option<u64>,
3830        #[prost(uint64, optional, tag = "3")]
3831        pub config1: ::core::option::Option<u64>,
3832        #[prost(uint64, optional, tag = "4")]
3833        pub config2: ::core::option::Option<u64>,
3834        /// The name of a dynamic PMU under /sys/bus/event_source/devices
3835        /// (e.g. "armv8_pmuv3").
3836        /// If set, leave |type| unset.
3837        /// Android: the relevant sysfs paths are not allowlisted by default, so
3838        /// this option will require a rooted device with selinux disabled.
3839        #[prost(string, optional, tag = "5")]
3840        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
3841    }
3842    /// Builtin counter names from the uapi header. Commented with their perf tool
3843    /// aliases.
3844    /// TODO(rsavitski): consider generating enums for cache events (should be
3845    /// finite), and generally make this list as extensive as possible. Excluding
3846    /// things like dynamic PMUs since those don't fit into a static enum.
3847    /// Next id: 21
3848    #[derive(
3849        Clone,
3850        Copy,
3851        Debug,
3852        PartialEq,
3853        Eq,
3854        Hash,
3855        PartialOrd,
3856        Ord,
3857        ::prost::Enumeration
3858    )]
3859    #[repr(i32)]
3860    pub enum Counter {
3861        UnknownCounter = 0,
3862        /// cpu-clock
3863        SwCpuClock = 1,
3864        /// page-faults, faults
3865        SwPageFaults = 2,
3866        /// task-clock
3867        SwTaskClock = 3,
3868        /// context-switches, cs
3869        SwContextSwitches = 4,
3870        /// cpu-migrations, migrations
3871        SwCpuMigrations = 5,
3872        /// minor-faults
3873        SwPageFaultsMin = 6,
3874        /// major-faults
3875        SwPageFaultsMaj = 7,
3876        /// alignment-faults
3877        SwAlignmentFaults = 8,
3878        /// emulation-faults
3879        SwEmulationFaults = 9,
3880        /// dummy
3881        SwDummy = 20,
3882        /// cpu-cycles, cycles
3883        HwCpuCycles = 10,
3884        /// instructions
3885        HwInstructions = 11,
3886        /// cache-references
3887        HwCacheReferences = 12,
3888        /// cache-misses
3889        HwCacheMisses = 13,
3890        /// branch-instructions, branches
3891        HwBranchInstructions = 14,
3892        /// branch-misses
3893        HwBranchMisses = 15,
3894        /// bus-cycles
3895        HwBusCycles = 16,
3896        /// stalled-cycles-frontend, idle-cycles-frontend
3897        HwStalledCyclesFrontend = 17,
3898        /// stalled-cycles-backend, idle-cycles-backend
3899        HwStalledCyclesBackend = 18,
3900        /// ref-cycles
3901        HwRefCpuCycles = 19,
3902    }
3903    impl Counter {
3904        /// String value of the enum field names used in the ProtoBuf definition.
3905        ///
3906        /// The values are not transformed in any way and thus are considered stable
3907        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3908        pub fn as_str_name(&self) -> &'static str {
3909            match self {
3910                Self::UnknownCounter => "UNKNOWN_COUNTER",
3911                Self::SwCpuClock => "SW_CPU_CLOCK",
3912                Self::SwPageFaults => "SW_PAGE_FAULTS",
3913                Self::SwTaskClock => "SW_TASK_CLOCK",
3914                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
3915                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
3916                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
3917                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
3918                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
3919                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
3920                Self::SwDummy => "SW_DUMMY",
3921                Self::HwCpuCycles => "HW_CPU_CYCLES",
3922                Self::HwInstructions => "HW_INSTRUCTIONS",
3923                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
3924                Self::HwCacheMisses => "HW_CACHE_MISSES",
3925                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
3926                Self::HwBranchMisses => "HW_BRANCH_MISSES",
3927                Self::HwBusCycles => "HW_BUS_CYCLES",
3928                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
3929                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
3930                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
3931            }
3932        }
3933        /// Creates an enum from field names used in the ProtoBuf definition.
3934        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3935            match value {
3936                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
3937                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
3938                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
3939                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
3940                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
3941                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
3942                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
3943                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
3944                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
3945                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
3946                "SW_DUMMY" => Some(Self::SwDummy),
3947                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
3948                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
3949                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
3950                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
3951                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
3952                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
3953                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
3954                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
3955                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
3956                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
3957                _ => None,
3958            }
3959        }
3960    }
3961    /// Subset of clocks that is supported by perf timestamping.
3962    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
3963    /// would require additions to the trace clock synchronisation logic.
3964    #[derive(
3965        Clone,
3966        Copy,
3967        Debug,
3968        PartialEq,
3969        Eq,
3970        Hash,
3971        PartialOrd,
3972        Ord,
3973        ::prost::Enumeration
3974    )]
3975    #[repr(i32)]
3976    pub enum PerfClock {
3977        UnknownPerfClock = 0,
3978        Realtime = 1,
3979        Monotonic = 2,
3980        MonotonicRaw = 3,
3981        Boottime = 4,
3982    }
3983    impl PerfClock {
3984        /// String value of the enum field names used in the ProtoBuf definition.
3985        ///
3986        /// The values are not transformed in any way and thus are considered stable
3987        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3988        pub fn as_str_name(&self) -> &'static str {
3989            match self {
3990                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
3991                Self::Realtime => "PERF_CLOCK_REALTIME",
3992                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
3993                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
3994                Self::Boottime => "PERF_CLOCK_BOOTTIME",
3995            }
3996        }
3997        /// Creates an enum from field names used in the ProtoBuf definition.
3998        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3999            match value {
4000                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
4001                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
4002                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
4003                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
4004                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
4005                _ => None,
4006            }
4007        }
4008    }
4009    #[derive(
4010        Clone,
4011        Copy,
4012        Debug,
4013        PartialEq,
4014        Eq,
4015        Hash,
4016        PartialOrd,
4017        Ord,
4018        ::prost::Enumeration
4019    )]
4020    #[repr(i32)]
4021    pub enum EventModifier {
4022        UnknownEventModifier = 0,
4023        /// count only while in userspace
4024        CountUserspace = 1,
4025        /// count only while in kernel
4026        CountKernel = 2,
4027        /// count only while in hypervisor
4028        CountHypervisor = 3,
4029    }
4030    impl EventModifier {
4031        /// String value of the enum field names used in the ProtoBuf definition.
4032        ///
4033        /// The values are not transformed in any way and thus are considered stable
4034        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4035        pub fn as_str_name(&self) -> &'static str {
4036            match self {
4037                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
4038                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
4039                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
4040                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
4041            }
4042        }
4043        /// Creates an enum from field names used in the ProtoBuf definition.
4044        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4045            match value {
4046                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
4047                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
4048                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
4049                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
4050                _ => None,
4051            }
4052        }
4053    }
4054}
4055/// Additional events associated with a leader.
4056/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
4057#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4058pub struct FollowerEvent {
4059    /// Modifiers can differ between the timebase and followers.
4060    #[prost(
4061        enumeration = "perf_events::EventModifier",
4062        repeated,
4063        packed = "false",
4064        tag = "5"
4065    )]
4066    pub modifiers: ::prost::alloc::vec::Vec<i32>,
4067    /// Optional arbitrary name for the event, to identify it in the parsed
4068    /// trace. Does *not* affect the profiling itself. If unset, the trace
4069    /// parser will choose a suitable name.
4070    #[prost(string, optional, tag = "4")]
4071    pub name: ::core::option::Option<::prost::alloc::string::String>,
4072    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
4073    pub event: ::core::option::Option<follower_event::Event>,
4074}
4075/// Nested message and enum types in `FollowerEvent`.
4076pub mod follower_event {
4077    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
4078    pub enum Event {
4079        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
4080        Counter(i32),
4081        #[prost(message, tag = "2")]
4082        Tracepoint(super::perf_events::Tracepoint),
4083        #[prost(message, tag = "3")]
4084        RawEvent(super::perf_events::RawEvent),
4085    }
4086}
4087/// Configuration for the traced_perf profiler.
4088///
4089/// Example config for basic cpu profiling:
4090///    perf_event_config {
4091///      timebase {
4092///        frequency: 80
4093///      }
4094///      callstack_sampling {
4095///        scope {
4096///          target_cmdline: "surfaceflinger"
4097///          target_cmdline: "system_server"
4098///        }
4099///        kernel_frames: true
4100///      }
4101///    }
4102///
4103/// Next id: 23
4104#[derive(Clone, PartialEq, ::prost::Message)]
4105pub struct PerfEventConfig {
4106    /// What event to sample on, and how often.
4107    /// Defined in common/perf_events.proto.
4108    #[prost(message, optional, tag = "15")]
4109    pub timebase: ::core::option::Option<perf_events::Timebase>,
4110    /// Other events associated with the leader described in the timebase.
4111    #[prost(message, repeated, tag = "19")]
4112    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
4113    /// If set, the profiler will sample userspace processes' callstacks at the
4114    /// interval specified by the |timebase|.
4115    /// If unset, the profiler will record only the event counts.
4116    #[prost(message, optional, tag = "16")]
4117    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
4118    /// List of cpu indices for counting. If empty, the default is all cpus.
4119    ///
4120    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
4121    /// counter-only traces. A future change will likely reorganise the options,
4122    /// but this field will continue to be supported.
4123    ///
4124    /// Available since: perfetto v50.
4125    #[prost(uint32, repeated, packed = "false", tag = "20")]
4126    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
4127    /// Allow failure of perf_event_open
4128    #[prost(bool, optional, tag = "21")]
4129    pub ignore_open_failure: ::core::option::Option<bool>,
4130    /// If not empty, consider only CPUs whose CPUID matches one of these values.
4131    #[prost(string, repeated, tag = "22")]
4132    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4133    /// How often the per-cpu ring buffers are read by the producer.
4134    /// If unset, an implementation-defined default is used.
4135    #[prost(uint32, optional, tag = "8")]
4136    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
4137    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
4138    /// kernel. If set, must be a power of two.
4139    /// If unset, an implementation-defined default is used.
4140    #[prost(uint32, optional, tag = "3")]
4141    pub ring_buffer_pages: ::core::option::Option<u32>,
4142    /// Drop samples if the heap memory held by the samples in the unwinder queue
4143    /// is above the given limit. This counts the memory across all concurrent data
4144    /// sources (not just this one's), and there is no fairness guarantee - the
4145    /// whole quota might be used up by a concurrent source.
4146    #[prost(uint64, optional, tag = "17")]
4147    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
4148    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
4149    /// footprint exceeds this value.
4150    #[prost(uint32, optional, tag = "13")]
4151    pub max_daemon_memory_kb: ::core::option::Option<u32>,
4152    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
4153    /// sampled process. This is primarily for Android, where this lookup is
4154    /// asynchronous. As long as the producer is waiting, the associated samples
4155    /// will be kept enqueued (putting pressure on the capacity of the shared
4156    /// unwinding queue). Once a lookup for a process expires, all associated
4157    /// samples are discarded. However, if the lookup still succeeds after the
4158    /// timeout, future samples will be handled normally.
4159    /// If unset, an implementation-defined default is used.
4160    #[prost(uint32, optional, tag = "9")]
4161    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
4162    /// Optional period for clearing state cached by the userspace unwinder. This
4163    /// is a heavy operation that is only necessary for traces that target a wide
4164    /// set of processes, and require the memory footprint to be reset
4165    /// periodically. To effectively disable the cache clearing, set to a value
4166    /// greater than your trace duration.
4167    ///
4168    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
4169    ///
4170    /// If zero or unset:
4171    /// * before perfetto v52: no cache clearing.
4172    /// * perfetto v52+: implementation chooses an infrequent default.
4173    #[prost(uint32, optional, tag = "10")]
4174    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
4175    /// If set, only profile target if it was installed by a package with one of
4176    /// these names. Special values:
4177    /// * "@system": installed on the system partition
4178    /// * "@product": installed on the product partition
4179    /// * "@null": sideloaded
4180    /// Supported on Android 12+.
4181    #[prost(string, repeated, tag = "18")]
4182    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4183    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
4184    /// We rely on this to detect such configs.
4185    #[prost(bool, optional, tag = "1")]
4186    pub all_cpus: ::core::option::Option<bool>,
4187    #[prost(uint32, optional, tag = "2")]
4188    pub sampling_frequency: ::core::option::Option<u32>,
4189    #[prost(bool, optional, tag = "12")]
4190    pub kernel_frames: ::core::option::Option<bool>,
4191    #[prost(int32, repeated, packed = "false", tag = "4")]
4192    pub target_pid: ::prost::alloc::vec::Vec<i32>,
4193    #[prost(string, repeated, tag = "5")]
4194    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4195    #[prost(int32, repeated, packed = "false", tag = "6")]
4196    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4197    #[prost(string, repeated, tag = "7")]
4198    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4199    #[prost(uint32, optional, tag = "11")]
4200    pub additional_cmdline_count: ::core::option::Option<u32>,
4201}
4202/// Nested message and enum types in `PerfEventConfig`.
4203pub mod perf_event_config {
4204    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4205    pub struct CallstackSampling {
4206        /// Defines a set of processes for which samples are retained/skipped. If
4207        /// unset, all samples are kept, but beware that it will be very heavy on the
4208        /// stack unwinder, which might start dropping samples due to overload.
4209        #[prost(message, optional, tag = "1")]
4210        pub scope: ::core::option::Option<Scope>,
4211        /// If true, callstacks will include the kernel-space frames. Such frames can
4212        /// be identified by a magical "kernel" string as their mapping name.
4213        /// Requires traced_perf to be running as root, or kptr_restrict to have been
4214        /// manually unrestricted. On Android, the platform should do the right thing
4215        /// on debug builds.
4216        /// This does *not* disclose KASLR, as only the function names are emitted.
4217        #[prost(bool, optional, tag = "2")]
4218        pub kernel_frames: ::core::option::Option<bool>,
4219        /// Whether to record and unwind userspace callstacks. If unset, defaults to
4220        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
4221        /// as the most common default (this defaulting is only applicable if the
4222        /// outer CallstackSampling message is explicitly set).
4223        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
4224        pub user_frames: ::core::option::Option<i32>,
4225    }
4226    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4227    pub struct Scope {
4228        /// Process ID (TGID) allowlist. If this list is not empty, only matching
4229        /// samples will be retained. If multiple allow/deny-lists are
4230        /// specified by the config, then all of them are evaluated for each sampled
4231        /// process.
4232        #[prost(int32, repeated, packed = "false", tag = "1")]
4233        pub target_pid: ::prost::alloc::vec::Vec<i32>,
4234        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4235        /// comm string). The semantics of this field were changed since its original
4236        /// introduction.
4237        ///
4238        /// On Android T+ (13+), this field can specify a single wildcard (*), and
4239        /// the profiler will attempt to match it in two possible ways:
4240        /// * if the pattern starts with a '/', then it is matched against the first
4241        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4242        ///    "/bin/echo".
4243        /// * otherwise the pattern is matched against the part of argv0
4244        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4245        ///    For example "echo" would match "/bin/echo".
4246        ///
4247        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
4248        /// normalized prior to an exact string comparison. Normalization is as
4249        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
4250        /// the string contains forward slashes, trim everything up to and including
4251        /// the last one.
4252        ///
4253        /// Implementation note: in either case, at most 511 characters of cmdline
4254        /// are considered.
4255        #[prost(string, repeated, tag = "2")]
4256        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4257        /// List of excluded pids.
4258        #[prost(int32, repeated, packed = "false", tag = "3")]
4259        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4260        /// List of excluded cmdlines. See description of |target_cmdline| for how
4261        /// this is handled.
4262        #[prost(string, repeated, tag = "4")]
4263        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4264        /// Number of additional command lines to sample. Only those which are
4265        /// neither explicitly included nor excluded will be considered. Processes
4266        /// are accepted on a first come, first served basis.
4267        #[prost(uint32, optional, tag = "5")]
4268        pub additional_cmdline_count: ::core::option::Option<u32>,
4269        /// If set to N, all encountered processes will be put into one of the N
4270        /// possible bins, and only one randomly-chosen bin will be selected for
4271        /// unwinding. The binning is simply "pid % N", under the assumption that
4272        /// low-order bits of pids are roughly uniformly distributed. Other explicit
4273        /// inclusions/exclusions in this |Scope| message are still respected.
4274        ///
4275        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
4276        /// values will be queryable in trace processor under the "stats" table as
4277        /// "perf_process_shard_count" and "perf_chosen_process_shard".
4278        ///
4279        /// NB: all data sources in a config that set |process_shard_count| must set
4280        /// it to the same value. The profiler will choose one bin for all those data
4281        /// sources.
4282        #[prost(uint32, optional, tag = "6")]
4283        pub process_shard_count: ::core::option::Option<u32>,
4284    }
4285    /// Userspace unwinding mode.
4286    #[derive(
4287        Clone,
4288        Copy,
4289        Debug,
4290        PartialEq,
4291        Eq,
4292        Hash,
4293        PartialOrd,
4294        Ord,
4295        ::prost::Enumeration
4296    )]
4297    #[repr(i32)]
4298    pub enum UnwindMode {
4299        UnwindUnknown = 0,
4300        /// Do not unwind userspace:
4301        UnwindSkip = 1,
4302        /// Use libunwindstack (default):
4303        UnwindDwarf = 2,
4304        /// Use userspace frame pointer unwinder:
4305        UnwindFramePointer = 3,
4306        /// Ask the kernel to unwind the userspace stack via frame pointers, using
4307        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
4308        /// sample, which avoids the per-sample copy cost and the depth limit
4309        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
4310        /// (including system libraries) is built with frame pointers - the kernel
4311        /// walks the chain and returns instruction addresses, which still need to
4312        /// be symbolized offline using the recorded process mappings.
4313        UnwindKernelFramePointer = 4,
4314    }
4315    impl UnwindMode {
4316        /// String value of the enum field names used in the ProtoBuf definition.
4317        ///
4318        /// The values are not transformed in any way and thus are considered stable
4319        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4320        pub fn as_str_name(&self) -> &'static str {
4321            match self {
4322                Self::UnwindUnknown => "UNWIND_UNKNOWN",
4323                Self::UnwindSkip => "UNWIND_SKIP",
4324                Self::UnwindDwarf => "UNWIND_DWARF",
4325                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
4326                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
4327            }
4328        }
4329        /// Creates an enum from field names used in the ProtoBuf definition.
4330        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4331            match value {
4332                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
4333                "UNWIND_SKIP" => Some(Self::UnwindSkip),
4334                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
4335                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
4336                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
4337                _ => None,
4338            }
4339        }
4340    }
4341}
4342#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4343pub struct ProtoVmConfig {
4344    #[prost(uint32, optional, tag = "1")]
4345    pub memory_limit_kb: ::core::option::Option<u32>,
4346}
4347/// QnxConfig is used with trace_qnx_probes build from
4348/// <https://github.com/qnx-ports/perfetto>
4349#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4350pub struct QnxConfig {
4351    /// The number of buffers that tracelog will init for the QNX trace.
4352    #[prost(uint32, optional, tag = "1")]
4353    pub qnx_kernel_buffers: ::core::option::Option<u32>,
4354    /// The number of kernel buffers that tracelog will init for the QNX trace.
4355    #[prost(uint32, optional, tag = "2")]
4356    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
4357    /// Flag indicating whether the QNX kernel tracing should produce wide
4358    /// events which contain additional data or fast events which are most
4359    /// concise. In fast mode we lose the priority information
4360    #[prost(bool, optional, tag = "3")]
4361    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
4362    /// The number of pages initialized by default the parser's page cache.
4363    #[prost(uint32, optional, tag = "4")]
4364    pub qnx_cache_pages: ::core::option::Option<u32>,
4365    /// The max pages the page cache should allocate (must be at least as big)
4366    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
4367    /// unbounded. The cache will prefer to re-use existing pages so growth will
4368    /// only happen when needed (when parser is not keeping up).
4369    #[prost(int32, optional, tag = "5")]
4370    pub qnx_cache_max_pages: ::core::option::Option<i32>,
4371    /// The initial size of the the buffer used to hold the trace header values
4372    /// this dynamic buffer will grow as needed but reallocs can be avoided by
4373    /// selecting an initial size large enough to hold all the initial header
4374    /// data.
4375    #[prost(uint32, optional, tag = "6")]
4376    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
4377}
4378/// This file is named 'statsd_tracing_config.proto' rather than
4379/// 'statsd_config.proto' (which would be more consistent with the other
4380/// config protos) so it doesn't show up and confuse folks looking for
4381/// the existing statsd_config.proto for configuring statsd itself.
4382/// Same for the config proto itself.
4383#[derive(Clone, PartialEq, ::prost::Message)]
4384pub struct StatsdTracingConfig {
4385    /// This is for the common case of the atom id being known in the enum AtomId.
4386    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
4387    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
4388    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
4389    /// (e.g. non-upstream atoms that don't exist in AOSP).
4390    #[prost(int32, repeated, packed = "false", tag = "2")]
4391    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
4392    #[prost(message, repeated, tag = "3")]
4393    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
4394}
4395#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4396pub struct StatsdPullAtomConfig {
4397    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
4398    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4399    #[prost(int32, repeated, packed = "false", tag = "2")]
4400    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4401    #[prost(int32, optional, tag = "3")]
4402    pub pull_frequency_ms: ::core::option::Option<i32>,
4403    #[prost(string, repeated, tag = "4")]
4404    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4405}
4406/// This file defines the configuration for the Linux /proc poller data source,
4407/// which injects counters in the trace.
4408/// Counters that are needed in the trace must be explicitly listed in the
4409/// *_counters fields. This is to avoid spamming the trace with all counters
4410/// at all times.
4411/// The sampling rate is configurable. All polling rates (*_period_ms) need
4412/// to be integer multiples of each other.
4413/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
4414/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
4415#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4416pub struct SysStatsConfig {
4417    /// Polls /proc/meminfo every X ms, if non-zero.
4418    /// This is required to be > 10ms to avoid excessive CPU usage.
4419    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
4420    #[prost(uint32, optional, tag = "1")]
4421    pub meminfo_period_ms: ::core::option::Option<u32>,
4422    /// If empty all known counters are reported. Otherwise, only the counters
4423    /// specified below are reported.
4424    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
4425    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
4426    /// Polls /proc/vmstat every X ms, if non-zero.
4427    /// This is required to be > 10ms to avoid excessive CPU usage.
4428    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
4429    #[prost(uint32, optional, tag = "3")]
4430    pub vmstat_period_ms: ::core::option::Option<u32>,
4431    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
4432    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
4433    /// Pols /proc/stat every X ms, if non-zero.
4434    /// This is required to be > 10ms to avoid excessive CPU usage.
4435    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
4436    #[prost(uint32, optional, tag = "5")]
4437    pub stat_period_ms: ::core::option::Option<u32>,
4438    #[prost(
4439        enumeration = "sys_stats_config::StatCounters",
4440        repeated,
4441        packed = "false",
4442        tag = "6"
4443    )]
4444    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
4445    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
4446    /// This is required to be > 10ms to avoid excessive CPU usage.
4447    /// This option can be used to record unchanging values.
4448    /// Updates from frequency changes can come from ftrace/set_clock_rate.
4449    #[prost(uint32, optional, tag = "7")]
4450    pub devfreq_period_ms: ::core::option::Option<u32>,
4451    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
4452    /// This is required to be > 10ms to avoid excessive CPU usage.
4453    #[prost(uint32, optional, tag = "8")]
4454    pub cpufreq_period_ms: ::core::option::Option<u32>,
4455    /// Polls /proc/buddyinfo every X ms, if non-zero.
4456    /// This is required to be > 10ms to avoid excessive CPU usage.
4457    #[prost(uint32, optional, tag = "9")]
4458    pub buddyinfo_period_ms: ::core::option::Option<u32>,
4459    /// Polls /proc/diskstats every X ms, if non-zero.
4460    /// This is required to be > 10ms to avoid excessive CPU usage.
4461    #[prost(uint32, optional, tag = "10")]
4462    pub diskstat_period_ms: ::core::option::Option<u32>,
4463    /// Polls /proc/pressure/* every X ms, if non-zero.
4464    /// This is required to be > 10ms to avoid excessive CPU usage.
4465    #[prost(uint32, optional, tag = "11")]
4466    pub psi_period_ms: ::core::option::Option<u32>,
4467    /// Polls /sys/class/thermal/* every X ms, if non-zero.
4468    /// This is required to be > 10ms to avoid excessive CPU usage.
4469    #[prost(uint32, optional, tag = "12")]
4470    pub thermal_period_ms: ::core::option::Option<u32>,
4471    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
4472    /// This is required to be > 10ms to avoid excessive CPU usage.
4473    #[prost(uint32, optional, tag = "13")]
4474    pub cpuidle_period_ms: ::core::option::Option<u32>,
4475    /// Polls device-specific GPU frequency info every X ms, if non-zero.
4476    /// This is required to be > 10ms to avoid excessive CPU usage.
4477    #[prost(uint32, optional, tag = "14")]
4478    pub gpufreq_period_ms: ::core::option::Option<u32>,
4479    /// Polls /proc/slabinfo every X ms, if non-zero.
4480    /// This is required to be > 10ms to avoid excessive CPU usage.
4481    #[prost(uint32, optional, tag = "15")]
4482    pub slab_period_ms: ::core::option::Option<u32>,
4483}
4484/// Nested message and enum types in `SysStatsConfig`.
4485pub mod sys_stats_config {
4486    #[derive(
4487        Clone,
4488        Copy,
4489        Debug,
4490        PartialEq,
4491        Eq,
4492        Hash,
4493        PartialOrd,
4494        Ord,
4495        ::prost::Enumeration
4496    )]
4497    #[repr(i32)]
4498    pub enum StatCounters {
4499        StatUnspecified = 0,
4500        StatCpuTimes = 1,
4501        StatIrqCounts = 2,
4502        StatSoftirqCounts = 3,
4503        StatForkCount = 4,
4504    }
4505    impl StatCounters {
4506        /// String value of the enum field names used in the ProtoBuf definition.
4507        ///
4508        /// The values are not transformed in any way and thus are considered stable
4509        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4510        pub fn as_str_name(&self) -> &'static str {
4511            match self {
4512                Self::StatUnspecified => "STAT_UNSPECIFIED",
4513                Self::StatCpuTimes => "STAT_CPU_TIMES",
4514                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
4515                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
4516                Self::StatForkCount => "STAT_FORK_COUNT",
4517            }
4518        }
4519        /// Creates an enum from field names used in the ProtoBuf definition.
4520        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4521            match value {
4522                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
4523                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
4524                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
4525                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
4526                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
4527                _ => None,
4528            }
4529        }
4530    }
4531}
4532/// This data-source does a one-off recording of system information when
4533/// the trace starts.
4534/// Currently this includes:
4535/// - Values of
4536/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
4537/// datasource has no configuration options at present.
4538#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4539pub struct SystemInfoConfig {
4540    /// If true, records hardware interrupt ID-to-name mappings from
4541    /// /proc/interrupts.
4542    #[prost(bool, optional, tag = "1")]
4543    pub irq_names: ::core::option::Option<bool>,
4544}
4545/// The configuration for a fake producer used in tests.
4546#[derive(Clone, PartialEq, ::prost::Message)]
4547pub struct TestConfig {
4548    /// The number of messages the fake producer should send.
4549    #[prost(uint32, optional, tag = "1")]
4550    pub message_count: ::core::option::Option<u32>,
4551    /// The maximum number of messages which should be sent each second.
4552    /// The actual obserced speed may be lower if the producer is unable to
4553    /// work fast enough.
4554    /// If this is zero or unset, the producer will send as fast as possible.
4555    #[prost(uint32, optional, tag = "2")]
4556    pub max_messages_per_second: ::core::option::Option<u32>,
4557    /// The seed value for a simple multiplicative congruential pseudo-random
4558    /// number sequence.
4559    #[prost(uint32, optional, tag = "3")]
4560    pub seed: ::core::option::Option<u32>,
4561    /// The size of each message in bytes. Should be greater than or equal 5 to
4562    /// account for the number of bytes needed to encode the random number and a
4563    /// null byte for the string.
4564    #[prost(uint32, optional, tag = "4")]
4565    pub message_size: ::core::option::Option<u32>,
4566    /// Whether the producer should send a event batch when the data source is
4567    /// is initially registered.
4568    #[prost(bool, optional, tag = "5")]
4569    pub send_batch_on_register: ::core::option::Option<bool>,
4570    #[prost(message, optional, tag = "6")]
4571    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
4572}
4573/// Nested message and enum types in `TestConfig`.
4574pub mod test_config {
4575    #[derive(Clone, PartialEq, ::prost::Message)]
4576    pub struct DummyFields {
4577        #[prost(uint32, optional, tag = "1")]
4578        pub field_uint32: ::core::option::Option<u32>,
4579        #[prost(int32, optional, tag = "2")]
4580        pub field_int32: ::core::option::Option<i32>,
4581        #[prost(uint64, optional, tag = "3")]
4582        pub field_uint64: ::core::option::Option<u64>,
4583        #[prost(int64, optional, tag = "4")]
4584        pub field_int64: ::core::option::Option<i64>,
4585        #[prost(fixed64, optional, tag = "5")]
4586        pub field_fixed64: ::core::option::Option<u64>,
4587        #[prost(sfixed64, optional, tag = "6")]
4588        pub field_sfixed64: ::core::option::Option<i64>,
4589        #[prost(fixed32, optional, tag = "7")]
4590        pub field_fixed32: ::core::option::Option<u32>,
4591        #[prost(sfixed32, optional, tag = "8")]
4592        pub field_sfixed32: ::core::option::Option<i32>,
4593        #[prost(double, optional, tag = "9")]
4594        pub field_double: ::core::option::Option<f64>,
4595        #[prost(float, optional, tag = "10")]
4596        pub field_float: ::core::option::Option<f32>,
4597        #[prost(sint64, optional, tag = "11")]
4598        pub field_sint64: ::core::option::Option<i64>,
4599        #[prost(sint32, optional, tag = "12")]
4600        pub field_sint32: ::core::option::Option<i32>,
4601        #[prost(string, optional, tag = "13")]
4602        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
4603        #[prost(bytes = "vec", optional, tag = "14")]
4604        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4605    }
4606}
4607/// The following fields define the set of enabled trace categories. Each list
4608/// item is a glob.
4609///
4610/// To determine if category is enabled, it is checked against the filters in
4611/// the following order:
4612///
4613///    1. Exact matches in enabled categories.
4614///    2. Exact matches in enabled tags.
4615///    3. Exact matches in disabled categories.
4616///    4. Exact matches in disabled tags.
4617///    5. Pattern matches in enabled categories.
4618///    6. Pattern matches in enabled tags.
4619///    7. Pattern matches in disabled categories.
4620///    8. Pattern matches in disabled tags.
4621///
4622/// If none of the steps produced a match:
4623///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
4624///   default.
4625///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
4626///
4627/// Examples:
4628///
4629///   - To enable all non-slow/debug categories:
4630///
4631///        enabled_categories: "*"
4632///
4633///   - To enable specific categories:
4634///
4635///        disabled_categories: "*"
4636///        enabled_categories: "my_category"
4637///        enabled_categories: "my_category2"
4638///
4639///   - To enable only categories with a specific tag:
4640///
4641///        disabled_tags: "*"
4642///        enabled_tags: "my_tag"
4643///
4644#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4645pub struct TrackEventConfig {
4646    /// Default: \[\]
4647    #[prost(string, repeated, tag = "1")]
4648    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4649    /// Default: \[\]
4650    #[prost(string, repeated, tag = "2")]
4651    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4652    /// Default: \["slow", "debug"\]
4653    #[prost(string, repeated, tag = "3")]
4654    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4655    /// Default: \[\]
4656    #[prost(string, repeated, tag = "4")]
4657    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4658    /// Default: false (i.e. enabled by default)
4659    #[prost(bool, optional, tag = "5")]
4660    pub disable_incremental_timestamps: ::core::option::Option<bool>,
4661    /// Allows to specify a custom unit different than the default (ns).
4662    /// Also affects thread timestamps if enable_thread_time_sampling = true.
4663    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
4664    /// 3000 ns = 3 us.
4665    /// Default: 1 (if unset, it should be read as 1).
4666    #[prost(uint64, optional, tag = "6")]
4667    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
4668    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
4669    /// When true, any debug annotations provided as arguments to the
4670    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
4671    /// still be emitted even if set to true.
4672    #[prost(bool, optional, tag = "7")]
4673    pub filter_debug_annotations: ::core::option::Option<bool>,
4674    /// Default: false (i.e. disabled)
4675    /// When true, the SDK samples and emits the current thread time counter value
4676    /// for each event on the current thread's track. This value represents the
4677    /// total CPU time consumed by that thread since its creation.
4678    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
4679    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
4680    #[prost(bool, optional, tag = "8")]
4681    pub enable_thread_time_sampling: ::core::option::Option<bool>,
4682    /// When enable_thread_time_sampling is true, and this is specified, thread
4683    /// time is sampled only if the elapsed wall time >
4684    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
4685    /// Effectively, this means thread time will have a leeway of
4686    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
4687    #[prost(uint64, optional, tag = "10")]
4688    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
4689    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
4690    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
4691    /// out.
4692    #[prost(bool, optional, tag = "9")]
4693    pub filter_dynamic_event_names: ::core::option::Option<bool>,
4694}
4695/// The configuration that is passed to each data source when starting tracing.
4696///
4697/// Keep the lower IDs (up to 99) for fields that are *not* specific to
4698/// data-sources and needs to be processed by the traced daemon.
4699///
4700/// All data source config fields must be marked as \[lazy=true\]. This prevents
4701/// the proto-to-cpp generator from recursing into those when generating the
4702/// cpp classes and polluting tracing/core with data-source-specific classes.
4703/// Instead they are treated as opaque strings containing raw proto bytes.
4704///
4705/// Next id: 149
4706#[derive(Clone, PartialEq, ::prost::Message)]
4707pub struct DataSourceConfig {
4708    /// Data source unique name, e.g., "linux.ftrace". This must match
4709    /// the name passed by the data source when it registers (see
4710    /// RegisterDataSource()).
4711    #[prost(string, optional, tag = "1")]
4712    pub name: ::core::option::Option<::prost::alloc::string::String>,
4713    /// The index of the logging buffer where TracePacket(s) will be stored.
4714    /// This field is quite subtle as it has a double semantic:
4715    /// 1) When the config is passed, this field is a 0-based index relative to the
4716    ///     buffer array in the TraceConfig and defines the mapping between data
4717    ///     sources and config. From v54 this is optional because the user can
4718    ///     instead use target_buffer_name.
4719    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
4720    ///     producer, it overwrites this field with the global buffer index (which
4721    ///     depends on other tracing sessions active). This tells the producer which
4722    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
4723    ///     service always sets the resolved global id, even when using
4724    ///     `target_buffer_name`.
4725    /// In hindsight we should have used two different fields given even in v0 they
4726    /// had a different semantic. But now it's too late as this would be a major
4727    /// protocol breaking change.
4728    #[prost(uint32, optional, tag = "2")]
4729    pub target_buffer: ::core::option::Option<u32>,
4730    /// Alternative to |target_buffer|. References a buffer by name (as specified
4731    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
4732    /// readable and less error-prone than using buffer indices.
4733    /// If both |target_buffer| and |target_buffer_name| are specified, they must
4734    /// refer to the same buffer, otherwise the service will reject the config.
4735    /// Using both fields allows configs to work with both old and new versions
4736    /// of the tracing service. Introduced in v54.
4737    #[prost(string, optional, tag = "11")]
4738    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
4739    /// Set by the service to indicate the duration of the trace.
4740    /// DO NOT SET in consumer as this will be overridden by the service.
4741    #[prost(uint32, optional, tag = "3")]
4742    pub trace_duration_ms: ::core::option::Option<u32>,
4743    /// If true, |trace_duration_ms| should count also time in suspend. This
4744    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
4745    #[prost(bool, optional, tag = "122")]
4746    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
4747    /// Set by the service to indicate how long it waits after StopDataSource.
4748    /// DO NOT SET in consumer as this will be overridden by the service.
4749    #[prost(uint32, optional, tag = "7")]
4750    pub stop_timeout_ms: ::core::option::Option<u32>,
4751    /// Set by the service to indicate whether this tracing session has extra
4752    /// guardrails.
4753    /// DO NOT SET in consumer as this will be overridden by the service.
4754    #[prost(bool, optional, tag = "6")]
4755    pub enable_extra_guardrails: ::core::option::Option<bool>,
4756    /// Set by the service to indicate which user initiated this trace.
4757    /// DO NOT SET in consumer as this will be overridden by the service.
4758    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
4759    pub session_initiator: ::core::option::Option<i32>,
4760    /// Set by the service to indicate which tracing session the data source
4761    /// belongs to. The intended use case for this is checking if two data sources,
4762    /// one of which produces metadata for the other one, belong to the same trace
4763    /// session and hence should be linked together.
4764    /// This field was introduced in Aug 2018 after Android P.
4765    /// DO NOT SET in consumer as this will be overridden by the service.
4766    #[prost(uint64, optional, tag = "4")]
4767    pub tracing_session_id: ::core::option::Option<u64>,
4768    /// How to behave when the producer runs out of space in the shared memory
4769    /// buffer. This is only honored by some data sources (in the SDK, the data
4770    /// sources registered with a configurable buffer exhausted policy).
4771    #[prost(
4772        enumeration = "data_source_config::BufferExhaustedPolicy",
4773        optional,
4774        tag = "9"
4775    )]
4776    pub buffer_exhausted_policy: ::core::option::Option<i32>,
4777    #[prost(message, optional, tag = "10")]
4778    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
4779    /// If specified, the data source requires the tracing service to process
4780    /// overwritten packets (patches) using a ProtoVM instance with this config.
4781    /// The ProtoVM program is specified at data source registration time through
4782    /// the descriptor.
4783    ///
4784    /// TODO(primiano): today when we enable a protovm_config, we actually accept
4785    /// that if N producers advertise M different versions of the same program we
4786    /// will create M instances of that program.
4787    /// To overcome this, we could move the program to the TraceConfig. But doing
4788    /// so would bloat the trace config size too big and create problems to statsd.
4789    /// Once the config store (b/482305876) exists we should move protovm programs
4790    /// onto that.
4791    #[prost(message, optional, tag = "12")]
4792    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
4793    /// Set by the service to indicate that this data source can write to its
4794    /// target buffer through the tracing v2 ring buffer. True only if:
4795    /// - v2 is in the connection's common ProtocolAbiVersion mask, and
4796    /// - the target buffer is a TraceBufferV2.
4797    /// Absent means false. True permits v2 but does not select it. The producer
4798    /// can select v1 only if v1 is also in the common mask. If no common version
4799    /// is permitted by the config and target buffer, the instance cannot run.
4800    /// One buffer can hold both formats. Each writer sequence uses one format.
4801    ///
4802    /// Not supported: a ProtoVM data source on the same buffer.
4803    /// DO NOT SET in consumer as this will be overridden by the service.
4804    #[prost(bool, optional, tag = "147")]
4805    pub supports_tracing_v2: ::core::option::Option<bool>,
4806    #[prost(message, optional, tag = "148")]
4807    pub experimental_tracing_v2: ::core::option::Option<
4808        data_source_config::ExperimentalTracingV2Config,
4809    >,
4810    /// Data source name: linux.ftrace
4811    #[prost(message, optional, tag = "100")]
4812    pub ftrace_config: ::core::option::Option<FtraceConfig>,
4813    /// Data source name: linux.inode_file_map
4814    #[prost(message, optional, tag = "102")]
4815    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
4816    /// Data source name: linux.process_stats
4817    #[prost(message, optional, tag = "103")]
4818    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
4819    /// Data source name: linux.sys_stats
4820    #[prost(message, optional, tag = "104")]
4821    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
4822    /// Data source name: android.heapprofd
4823    /// Introduced in Android 10.
4824    #[prost(message, optional, tag = "105")]
4825    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
4826    /// Data source name: android.java_hprof
4827    /// Introduced in Android 11.
4828    #[prost(message, optional, tag = "110")]
4829    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
4830    /// Data source name: android.power
4831    #[prost(message, optional, tag = "106")]
4832    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
4833    /// Data source name: android.log
4834    #[prost(message, optional, tag = "107")]
4835    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
4836    /// Data source name: gpu.counters
4837    #[prost(message, optional, tag = "108")]
4838    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
4839    /// Data source name: android.game_interventions
4840    #[prost(message, optional, tag = "116")]
4841    pub android_game_intervention_list_config: ::core::option::Option<
4842        AndroidGameInterventionListConfig,
4843    >,
4844    /// Data source name: android.packages_list
4845    #[prost(message, optional, tag = "109")]
4846    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
4847    /// Data source name: linux.perf
4848    #[prost(message, optional, tag = "111")]
4849    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
4850    /// Data source name: vulkan.memory_tracker
4851    #[prost(message, optional, tag = "112")]
4852    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
4853    /// Data source name: track_event
4854    #[prost(message, optional, tag = "113")]
4855    pub track_event_config: ::core::option::Option<TrackEventConfig>,
4856    /// Data source name: android.polled_state
4857    #[prost(message, optional, tag = "114")]
4858    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
4859    /// Data source name: android.system_property
4860    #[prost(message, optional, tag = "118")]
4861    pub android_system_property_config: ::core::option::Option<
4862        AndroidSystemPropertyConfig,
4863    >,
4864    /// Data source name: android.statsd
4865    #[prost(message, optional, tag = "117")]
4866    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
4867    /// Data source name: linux.system_info
4868    #[prost(message, optional, tag = "119")]
4869    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
4870    /// Data source name: linux.frozen_ftrace
4871    #[prost(message, optional, tag = "136")]
4872    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
4873    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
4874    /// avoid proto serialization and de-serialization there because that would
4875    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
4876    /// C++ class for it so it can pass around plain C++ objets.
4877    #[prost(message, optional, tag = "101")]
4878    pub chrome_config: ::core::option::Option<ChromeConfig>,
4879    /// Data source name: code.v8.dev
4880    #[prost(message, optional, tag = "127")]
4881    pub v8_config: ::core::option::Option<V8Config>,
4882    /// If an interceptor is specified here, packets for this data source will be
4883    /// rerouted to the interceptor instead of the main trace buffer. This can be
4884    /// used, for example, to write trace data into ETW or for logging trace points
4885    /// to the console.
4886    ///
4887    /// Note that interceptors are only supported by data sources registered
4888    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
4889    /// traced_probes) may not support interception.
4890    #[prost(message, optional, tag = "115")]
4891    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
4892    /// Data source name: android.network_packets.
4893    /// Introduced in Android 14 (U).
4894    #[prost(message, optional, tag = "120")]
4895    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
4896    /// Data source name: android.surfaceflinger.layers
4897    #[prost(message, optional, tag = "121")]
4898    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
4899    /// Data source name: android.surfaceflinger.transactions
4900    #[prost(message, optional, tag = "123")]
4901    pub surfaceflinger_transactions_config: ::core::option::Option<
4902        SurfaceFlingerTransactionsConfig,
4903    >,
4904    /// Data source name: android.sdk_sysprop_guard
4905    /// Introduced in Android 14 (U) QPR1.
4906    #[prost(message, optional, tag = "124")]
4907    pub android_sdk_sysprop_guard_config: ::core::option::Option<
4908        AndroidSdkSyspropGuardConfig,
4909    >,
4910    /// Data source name: windows.etw
4911    #[prost(message, optional, tag = "125")]
4912    pub etw_config: ::core::option::Option<EtwConfig>,
4913    /// Data source name: android.protolog
4914    #[prost(message, optional, tag = "126")]
4915    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
4916    /// Data source name: android.input.inputevent
4917    #[prost(message, optional, tag = "128")]
4918    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
4919    /// Data source name: android.pixel.modem
4920    #[prost(message, optional, tag = "129")]
4921    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
4922    /// Data source name: android.windowmanager
4923    #[prost(message, optional, tag = "130")]
4924    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
4925    /// Data source name: org.chromium.system_metrics
4926    #[prost(message, optional, tag = "131")]
4927    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
4928    /// Data source name: android.kernel_wakelocks
4929    #[prost(message, optional, tag = "132")]
4930    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
4931    /// Data source name: gpu.renderstages
4932    #[prost(message, optional, tag = "133")]
4933    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
4934    /// Data source name: org.chromium.histogram_samples
4935    #[prost(message, optional, tag = "134")]
4936    pub chromium_histogram_samples: ::core::option::Option<
4937        ChromiumHistogramSamplesConfig,
4938    >,
4939    /// Data source name: android.app_wakelocks
4940    #[prost(message, optional, tag = "135")]
4941    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
4942    /// Data source name: android.cpu_per_uid
4943    #[prost(message, optional, tag = "137")]
4944    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
4945    /// Data source name: android.user_list
4946    #[prost(message, optional, tag = "138")]
4947    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
4948    /// Data source name: android.inputmethod
4949    #[prost(message, optional, tag = "139")]
4950    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
4951    /// Data source name: android.aflags
4952    #[prost(message, optional, tag = "140")]
4953    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
4954    /// Data source name: linux.systemd_journald
4955    #[prost(message, optional, tag = "141")]
4956    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
4957    /// Data source name: android.display.video
4958    #[prost(message, optional, tag = "142")]
4959    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
4960    /// Data source name: org.chromium.sampler_profiler
4961    #[prost(message, optional, tag = "143")]
4962    pub chromium_stack_sampling_profiler: ::core::option::Option<
4963        ChromiumStackSamplingProfilerConfig,
4964    >,
4965    /// Data source name: org.chromium.native_heap_profiler
4966    #[prost(message, optional, tag = "144")]
4967    pub chromium_sampling_heap_profiler: ::core::option::Option<
4968        ChromiumSamplingHeapProfilerConfig,
4969    >,
4970    /// Data source name: android.process_state
4971    #[prost(message, optional, tag = "145")]
4972    pub android_process_state_config: ::core::option::Option<AndroidProcessStateConfig>,
4973    /// Data source name: linux.smaps
4974    #[prost(message, optional, tag = "146")]
4975    pub process_smaps_config: ::core::option::Option<ProcessSmapsConfig>,
4976    /// Data source name: qnx.kernel
4977    #[prost(message, optional, tag = "150")]
4978    pub qnx_config: ::core::option::Option<QnxConfig>,
4979    /// This is a fallback mechanism to send a free-form text config to the
4980    /// producer. In theory this should never be needed. All the code that
4981    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
4982    /// the trace config proto and propagate unknown fields. However, if anything
4983    /// in the pipeline (client or backend) ends up breaking this forward compat
4984    /// plan, this field will become the escape hatch to allow future data sources
4985    /// to get some meaningful configuration.
4986    #[prost(string, optional, tag = "1000")]
4987    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
4988    /// This field is only used for testing.
4989    #[prost(message, optional, tag = "1001")]
4990    pub for_testing: ::core::option::Option<TestConfig>,
4991}
4992/// Nested message and enum types in `DataSourceConfig`.
4993pub mod data_source_config {
4994    /// Experimental.
4995    /// Lets the producer write this data source through the tracing v2 ring
4996    /// buffer.
4997    /// - Selecting v2 requires a TRACE_BUFFER_V2 target buffer and support from
4998    ///    the producer and data source.
4999    /// - Instances that do not select v2 use v1 only if the connection permits it.
5000    ///    If neither transport is available, writers discard their data.
5001    /// - If the producer cannot create or attach the ring buffer, selected
5002    ///    instances discard their data and do not fall back to v1.
5003    #[derive(Clone, PartialEq, ::prost::Message)]
5004    pub struct ExperimentalTracingV2Config {
5005        /// Percent of instances that use v2, from 0 (the default) to 100.
5006        /// The service rejects a nonzero use_v2_probability_percent and a
5007        /// ProtoVM data source on the same buffer.
5008        #[prost(uint32, optional, tag = "1")]
5009        pub use_v2_probability_percent: ::core::option::Option<u32>,
5010        /// The producer chooses one option at random, by weight, when it creates
5011        /// the ring buffer.
5012        /// With no option, or with all weights 0, it uses 256 bytes.
5013        ///
5014        /// The first instance that selects v2 chooses the size for the connection,
5015        /// and the options of later instances have no effect.
5016        #[prost(message, repeated, tag = "2")]
5017        pub chunk_size_options: ::prost::alloc::vec::Vec<
5018            experimental_tracing_v2_config::ChunkSizeOption,
5019        >,
5020        /// When the writers ask the service to drain the ring buffer.
5021        /// After each publication, a writer counts the ring buffer positions that
5022        /// wait for the reader, and asks for a drain when the count reaches:
5023        /// - 0 or absent: 25% of the positions.
5024        /// - 1 to 100: this percent of the positions, and at least one.
5025        /// - -1: one position, so it asks after every publication.
5026        /// Flushes and full ring buffers still ask for a drain at once.
5027        /// The service rejects other values.
5028        ///
5029        /// As for chunk_size_options, the first instance that selects v2 sets it
5030        /// for the connection, and the values of later instances have no effect.
5031        #[prost(int32, optional, tag = "3")]
5032        pub drain_occupancy_percent: ::core::option::Option<i32>,
5033    }
5034    /// Nested message and enum types in `ExperimentalTracingV2Config`.
5035    pub mod experimental_tracing_v2_config {
5036        /// One chunk size that the producer can choose for the ring buffer.
5037        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5038        pub struct ChunkSizeOption {
5039            /// Bytes per chunk, from 256 to 65536, and a multiple of 4.
5040            /// The service rejects other values.
5041            #[prost(uint32, optional, tag = "1")]
5042            pub size_bytes: ::core::option::Option<u32>,
5043            /// The chance of this option, relative to the other options.
5044            /// Absent means 1, and 0 means never.
5045            #[prost(uint32, optional, tag = "2")]
5046            pub weight: ::core::option::Option<u32>,
5047        }
5048    }
5049    #[derive(
5050        Clone,
5051        Copy,
5052        Debug,
5053        PartialEq,
5054        Eq,
5055        Hash,
5056        PartialOrd,
5057        Ord,
5058        ::prost::Enumeration
5059    )]
5060    #[repr(i32)]
5061    pub enum SessionInitiator {
5062        Unspecified = 0,
5063        /// This trace was initiated from a trusted system app has DUMP and
5064        /// USAGE_STATS permission. This system app is expected to not expose the
5065        /// trace to the user of the device.
5066        /// This is determined by checking the UID initiating the trace.
5067        TrustedSystem = 1,
5068    }
5069    impl SessionInitiator {
5070        /// String value of the enum field names used in the ProtoBuf definition.
5071        ///
5072        /// The values are not transformed in any way and thus are considered stable
5073        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5074        pub fn as_str_name(&self) -> &'static str {
5075            match self {
5076                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
5077                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
5078            }
5079        }
5080        /// Creates an enum from field names used in the ProtoBuf definition.
5081        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5082            match value {
5083                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
5084                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
5085                _ => None,
5086            }
5087        }
5088    }
5089    #[derive(
5090        Clone,
5091        Copy,
5092        Debug,
5093        PartialEq,
5094        Eq,
5095        Hash,
5096        PartialOrd,
5097        Ord,
5098        ::prost::Enumeration
5099    )]
5100    #[repr(i32)]
5101    pub enum BufferExhaustedPolicy {
5102        /// The data source will use its default buffer exhausted policy, specified
5103        /// by the code when the data source is registered.
5104        BufferExhaustedUnspecified = 0,
5105        /// The data source will drop packets when there's no space in the shared
5106        /// memory buffer.
5107        BufferExhaustedDrop = 1,
5108        /// The data source will wait when there's no space in the shared memory
5109        /// buffer. If there's still not space, after a few seconds, the whole
5110        /// producer process will be aborted.
5111        BufferExhaustedStallThenAbort = 2,
5112        /// The data source will wait when there's no space in the shared memory
5113        /// buffer.  If there's still not space, after a few seconds, the data source
5114        /// will drop packets.
5115        BufferExhaustedStallThenDrop = 3,
5116    }
5117    impl BufferExhaustedPolicy {
5118        /// String value of the enum field names used in the ProtoBuf definition.
5119        ///
5120        /// The values are not transformed in any way and thus are considered stable
5121        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5122        pub fn as_str_name(&self) -> &'static str {
5123            match self {
5124                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
5125                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
5126                Self::BufferExhaustedStallThenAbort => {
5127                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
5128                }
5129                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
5130            }
5131        }
5132        /// Creates an enum from field names used in the ProtoBuf definition.
5133        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5134            match value {
5135                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
5136                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
5137                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
5138                    Some(Self::BufferExhaustedStallThenAbort)
5139                }
5140                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
5141                    Some(Self::BufferExhaustedStallThenDrop)
5142                }
5143                _ => None,
5144            }
5145        }
5146    }
5147}
5148/// The overall config that is used when starting a new tracing session through
5149/// ProducerPort::StartTracing().
5150/// It contains the general config for the logging buffer(s) and the configs for
5151/// all the data source being enabled.
5152///
5153/// Next id: 51.
5154#[derive(Clone, PartialEq, ::prost::Message)]
5155pub struct TraceConfig {
5156    #[prost(message, repeated, tag = "1")]
5157    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
5158    /// Enables compaction after reads for this session's TraceBufferV2.
5159    /// Defaults to false and does not affect V1, DISCARD, or read-only buffers.
5160    #[prost(bool, optional, tag = "50")]
5161    pub experimental_trace_buffer_v2_compaction: ::core::option::Option<bool>,
5162    #[prost(message, repeated, tag = "2")]
5163    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
5164    #[prost(message, optional, tag = "20")]
5165    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
5166    /// If specified, the trace will be stopped |duration_ms| after starting.
5167    /// This does *not* count the time the system is suspended, so we will run
5168    /// for duration_ms of system activity, not wall time.
5169    ///
5170    /// However in case of traces with triggers, see
5171    /// TriggerConfig.trigger_timeout_ms instead.
5172    #[prost(uint32, optional, tag = "3")]
5173    pub duration_ms: ::core::option::Option<u32>,
5174    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
5175    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
5176    /// Linux/Android, no-op on other platforms. This is used when dealing with
5177    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
5178    /// wall-time, making them more likely to hit device reboots (and hence loss).
5179    /// This option also changes consistently the semantic of
5180    /// TriggerConfig.stop_delay_ms.
5181    #[prost(bool, optional, tag = "36")]
5182    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
5183    /// This is set when --dropbox is passed to the Perfetto command line client
5184    /// and enables guardrails that limit resource usage for traces requested
5185    /// by statsd.
5186    #[prost(bool, optional, tag = "4")]
5187    pub enable_extra_guardrails: ::core::option::Option<bool>,
5188    /// Reject producers that are not running under the same UID as the tracing
5189    /// service.
5190    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
5191    pub lockdown_mode: ::core::option::Option<i32>,
5192    #[prost(message, repeated, tag = "6")]
5193    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
5194    /// Statsd-specific metadata.
5195    #[prost(message, optional, tag = "7")]
5196    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
5197    /// When true && |output_path| is empty, the EnableTracing() request must
5198    /// provide a file descriptor. The service will then periodically read packets
5199    /// out of the trace buffer and store it into the passed file.
5200    /// If |output_path| is not empty no fd should be passed, the service
5201    /// will create a new file and write into that (see comment below).
5202    #[prost(bool, optional, tag = "8")]
5203    pub write_into_file: ::core::option::Option<bool>,
5204    /// This must point to a non-existing file. If the file exists the service
5205    /// will NOT overwrite and will fail instead as a security precaution.
5206    /// On Android, when this is used with the system traced, the path must be
5207    /// within /data/misc/perfetto-traces/ or the trace will fail.
5208    /// This option has been introduced in Android R. Before R write_into_file
5209    /// can be used only with the "pass a file descriptor over IPC" mode.
5210    #[prost(string, optional, tag = "29")]
5211    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
5212    /// Optional. If non-zero tunes the write period. A min value of 100ms is
5213    /// enforced (i.e. smaller values are ignored).
5214    #[prost(uint32, optional, tag = "9")]
5215    pub file_write_period_ms: ::core::option::Option<u32>,
5216    /// Optional. When non zero the periodic write stops once at most X bytes
5217    /// have been written into the file. Tracing is disabled when this limit is
5218    /// reached, even if |duration_ms| has not been reached yet.
5219    #[prost(uint64, optional, tag = "10")]
5220    pub max_file_size_bytes: ::core::option::Option<u64>,
5221    #[prost(message, optional, tag = "11")]
5222    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
5223    /// When true, data sources are not started until an explicit call to
5224    /// StartTracing() on the consumer port. This is to support early
5225    /// initialization and fast trace triggering. This can be used only when the
5226    /// Consumer explicitly triggers the StartTracing() method.
5227    /// This should not be used in a remote trace config via statsd, doing so will
5228    /// result in a hung trace session.
5229    #[prost(bool, optional, tag = "12")]
5230    pub deferred_start: ::core::option::Option<bool>,
5231    /// When set, it periodically issues a Flush() to all data source, forcing them
5232    /// to commit their data into the tracing service. This can be used for
5233    /// quasi-real-time streaming mode and to guarantee some partial ordering of
5234    /// events in the trace in windows of X ms.
5235    ///
5236    /// Warning: Perfetto automatically handles periodic flushing so in most
5237    /// scenarios setting this field is not needed. High frequency flushing can
5238    /// significantly impact performance.
5239    #[prost(uint32, optional, tag = "13")]
5240    pub flush_period_ms: ::core::option::Option<u32>,
5241    /// Wait for this long for producers to acknowledge flush requests.
5242    /// Default 5s.
5243    #[prost(uint32, optional, tag = "14")]
5244    pub flush_timeout_ms: ::core::option::Option<u32>,
5245    /// Wait for this long for producers to acknowledge stop requests.
5246    /// Default 5s.
5247    #[prost(uint32, optional, tag = "23")]
5248    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
5249    /// Android-only. If set, sends an intent to the Traceur system app when the
5250    /// trace ends to notify it about the trace readiness.
5251    #[prost(bool, optional, tag = "16")]
5252    pub notify_traceur: ::core::option::Option<bool>,
5253    /// This field was introduced in Android S.
5254    /// Android-only. If set to a value > 0, marks the trace session as a candidate
5255    /// for being attached to a bugreport. This field effectively acts as a z-index
5256    /// for bugreports. When Android's dumpstate runs perfetto
5257    /// --save-for-bugreport, traced will pick the tracing session with the highest
5258    /// score (score <= 0 is ignored) and:
5259    /// On Android S, T:  will steal its contents, save the trace into
5260    ///      a known path and stop prematurely.
5261    /// On Android U+: will create a read-only snapshot and save that into a known
5262    ///      path, without stoppin the original tracing session.
5263    /// When this field is set the tracing session becomes eligible to be cloned
5264    /// by other UIDs.
5265    #[prost(int32, optional, tag = "30")]
5266    pub bugreport_score: ::core::option::Option<i32>,
5267    /// When set, defines name of the file that will be saved under
5268    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
5269    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
5270    /// starting from the highest `bugreport_score`.
5271    /// Introduced in v42 / Android V.
5272    #[prost(string, optional, tag = "38")]
5273    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
5274    #[prost(message, optional, tag = "17")]
5275    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
5276    /// When this is non-empty the perfetto command line tool will ignore the rest
5277    /// of this TraceConfig and instead connect to the perfetto service as a
5278    /// producer and send these triggers, potentially stopping or starting traces
5279    /// that were previous configured to use a TriggerConfig.
5280    #[prost(string, repeated, tag = "18")]
5281    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5282    #[prost(message, optional, tag = "21")]
5283    pub incremental_state_config: ::core::option::Option<
5284        trace_config::IncrementalStateConfig,
5285    >,
5286    /// No longer needed as we unconditionally allow tracing on user builds.
5287    #[deprecated]
5288    #[prost(bool, optional, tag = "19")]
5289    pub allow_user_build_tracing: ::core::option::Option<bool>,
5290    /// If set the tracing service will ensure there is at most one tracing session
5291    /// with this key.
5292    #[prost(string, optional, tag = "22")]
5293    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
5294    #[deprecated]
5295    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
5296    pub compression_type: ::core::option::Option<i32>,
5297    #[prost(message, optional, tag = "47")]
5298    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
5299    #[prost(message, optional, tag = "25")]
5300    pub incident_report_config: ::core::option::Option<
5301        trace_config::IncidentReportConfig,
5302    >,
5303    /// Android-only. Not for general use. If specified, sets the logging to statsd
5304    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
5305    /// this to enabled (if not explicitly set in the config) when specifying
5306    /// --upload.
5307    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
5308    pub statsd_logging: ::core::option::Option<i32>,
5309    /// An identifier clients can use to tie this trace to other logging.
5310    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
5311    /// Trace UUID. If this field is set, the tracing service will respect the
5312    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
5313    /// gap-less snapshotting is not used.
5314    #[deprecated]
5315    #[prost(int64, optional, tag = "27")]
5316    pub trace_uuid_msb: ::core::option::Option<i64>,
5317    #[deprecated]
5318    #[prost(int64, optional, tag = "28")]
5319    pub trace_uuid_lsb: ::core::option::Option<i64>,
5320    #[prost(message, optional, tag = "33")]
5321    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
5322    #[prost(message, optional, tag = "34")]
5323    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
5324    #[prost(message, optional, tag = "35")]
5325    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
5326    #[prost(message, repeated, tag = "39")]
5327    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
5328    /// Priority boost to be applied to the traced process, when the session is
5329    /// running.
5330    #[prost(message, optional, tag = "40")]
5331    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
5332    /// When set to a value > 0, this tracing session will be started in
5333    /// "exclusive mode". This has the following semantics:
5334    /// - It can only be set by shell or root users.
5335    /// - A new exclusive session will only be started if its priority is strictly
5336    ///    higher than any other active tracing session.
5337    /// - If a new exclusive session is started, all other existing tracing
5338    ///    sessions (exclusive or not) are aborted.
5339    /// - While an exclusive session is active, any new non-exclusive session (or
5340    ///    any exclusive session with a lower or equal priority) will be rejected.
5341    ///
5342    /// Introduced in: perfetto v52.
5343    /// Supported on: Android 25Q3+.
5344    #[prost(uint32, optional, tag = "41")]
5345    pub exclusive_prio: ::core::option::Option<u32>,
5346    /// Configures how the service should handle flushing data from producers
5347    /// before periodically writing the trace into the output file.
5348    /// Only applicable when |write_into_file| is true.
5349    ///
5350    /// By default, if |write_into_file| is set, the service periodically issues
5351    /// a Flush() to all data sources before writing buffers into the file.
5352    /// This ensures the file always contains the latest available data.
5353    ///
5354    /// Introduced in: perfetto v54.
5355    /// Supported on: Android 26Q1+.
5356    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
5357    pub write_flush_mode: ::core::option::Option<i32>,
5358    /// Whether to sync the output file to storage after each periodic write pass.
5359    /// Only applicable when |write_into_file| is true.
5360    ///
5361    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
5362    /// sync to storage on every write.
5363    ///
5364    /// Introduced in: perfetto v54.
5365    /// Supported on: Android 26Q1+.
5366    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
5367    pub fflush_post_write: ::core::option::Option<i32>,
5368    /// When true, data sources in remote producers (machines connected via
5369    /// traced_relay) will be matched by default. When false (the default), data
5370    /// sources only match the host machine. In either case, an explicit
5371    /// |DataSource.machine_name_filter| takes priority.
5372    ///
5373    /// NB: perfetto versions before v54 do not have this option and match across
5374    /// machines by default. To be compatible across this version boundary, either
5375    /// set this field to true, or set an explicit machine_name_filter on all data
5376    /// sources.
5377    ///
5378    /// Introduced in: perfetto v54.
5379    #[prost(bool, optional, tag = "43")]
5380    pub trace_all_machines: ::core::option::Option<bool>,
5381    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
5382    /// into it and surfaced by trace_processor in the `metadata` table (see
5383    /// common/trace_attributes.proto). Typically set via
5384    /// `perfetto --add-attribute key=value`.
5385    ///
5386    /// Introduced in: perfetto v58.
5387    #[prost(message, optional, tag = "48")]
5388    pub trace_attributes: ::core::option::Option<TraceAttributes>,
5389    /// Android-only. Not for general use. If set to true, writes trace chunks to a
5390    /// persistent file
5391    /// (/data/misc/perfetto-traces/persistent/$unique_session_name.tmp) that
5392    /// survives device reboots (e.g. during OTA updates or battery depletion).
5393    ///
5394    /// Introduced in: perfetto v59.
5395    /// Supported on: Android 26Q4+.
5396    #[prost(bool, optional, tag = "49")]
5397    pub persist_trace_across_reboots: ::core::option::Option<bool>,
5398}
5399/// Nested message and enum types in `TraceConfig`.
5400pub mod trace_config {
5401    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5402    pub struct BufferConfig {
5403        #[prost(uint32, optional, tag = "1")]
5404        pub size_kb: ::core::option::Option<u32>,
5405        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
5406        pub fill_policy: ::core::option::Option<i32>,
5407        /// When true the buffer is moved (rather than copied) onto the cloned
5408        /// session, and an empty buffer of the same size is allocated in the source
5409        /// tracing session. This feature will likely get deprecated in the future.
5410        /// It been introduced mainly to support the surfaceflinger snapshot dump
5411        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
5412        /// that case we don't want to retain another in-memory copy of the buffer.
5413        #[prost(bool, optional, tag = "5")]
5414        pub transfer_on_clone: ::core::option::Option<bool>,
5415        /// Used in conjunction with transfer_on_clone. When true the buffer is
5416        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
5417        /// that if the data source took too long to write the data in a previous
5418        /// clone-related flush, we don't end up with a mixture of leftovers from
5419        /// the previous write and new data.
5420        #[prost(bool, optional, tag = "6")]
5421        pub clear_before_clone: ::core::option::Option<bool>,
5422        /// Optional name for this buffer. If set, data sources can reference this
5423        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
5424        /// using the buffer index. Buffer names must be unique within a tracing
5425        /// session. This provides a more human-readable and less error-prone way to
5426        /// configure which buffer a data source writes to.
5427        #[prost(string, optional, tag = "7")]
5428        pub name: ::core::option::Option<::prost::alloc::string::String>,
5429        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
5430        pub experimental_mode: ::core::option::Option<i32>,
5431    }
5432    /// Nested message and enum types in `BufferConfig`.
5433    pub mod buffer_config {
5434        #[derive(
5435            Clone,
5436            Copy,
5437            Debug,
5438            PartialEq,
5439            Eq,
5440            Hash,
5441            PartialOrd,
5442            Ord,
5443            ::prost::Enumeration
5444        )]
5445        #[repr(i32)]
5446        pub enum FillPolicy {
5447            Unspecified = 0,
5448            /// Default behavior. The buffer operates as a conventional ring buffer.
5449            /// If the writer is faster than the reader (or if the reader reads only
5450            /// after tracing is stopped) newly written packets will overwrite old
5451            /// packets.
5452            RingBuffer = 1,
5453            /// Behaves like RING_BUFFER as long as there is space in the buffer or
5454            /// the reader catches up with the writer. As soon as the writer hits
5455            /// an unread chunk, it stops accepting new data in the buffer.
5456            Discard = 2,
5457        }
5458        impl FillPolicy {
5459            /// String value of the enum field names used in the ProtoBuf definition.
5460            ///
5461            /// The values are not transformed in any way and thus are considered stable
5462            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5463            pub fn as_str_name(&self) -> &'static str {
5464                match self {
5465                    Self::Unspecified => "UNSPECIFIED",
5466                    Self::RingBuffer => "RING_BUFFER",
5467                    Self::Discard => "DISCARD",
5468                }
5469            }
5470            /// Creates an enum from field names used in the ProtoBuf definition.
5471            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5472                match value {
5473                    "UNSPECIFIED" => Some(Self::Unspecified),
5474                    "RING_BUFFER" => Some(Self::RingBuffer),
5475                    "DISCARD" => Some(Self::Discard),
5476                    _ => None,
5477                }
5478            }
5479        }
5480        /// When true, uses the experimental TraceBufferV2 implementation for this
5481        /// buffer. This is for testing purposes only and may be removed in future
5482        /// versions.
5483        #[derive(
5484            Clone,
5485            Copy,
5486            Debug,
5487            PartialEq,
5488            Eq,
5489            Hash,
5490            PartialOrd,
5491            Ord,
5492            ::prost::Enumeration
5493        )]
5494        #[repr(i32)]
5495        pub enum ExperimentalMode {
5496            /// Use the default V1 implementation.
5497            ModeUnspecified = 0,
5498            /// Use TraceBufferV2.
5499            TraceBufferV2 = 1,
5500        }
5501        impl ExperimentalMode {
5502            /// String value of the enum field names used in the ProtoBuf definition.
5503            ///
5504            /// The values are not transformed in any way and thus are considered stable
5505            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5506            pub fn as_str_name(&self) -> &'static str {
5507                match self {
5508                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
5509                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
5510                }
5511            }
5512            /// Creates an enum from field names used in the ProtoBuf definition.
5513            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5514                match value {
5515                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
5516                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
5517                    _ => None,
5518                }
5519            }
5520        }
5521    }
5522    #[derive(Clone, PartialEq, ::prost::Message)]
5523    pub struct DataSource {
5524        /// Filters and data-source specific config. It contains also the unique name
5525        /// of the data source, the one passed in the  DataSourceDescriptor when they
5526        /// register on the service.
5527        #[prost(message, optional, tag = "1")]
5528        pub config: ::core::option::Option<super::DataSourceConfig>,
5529        /// Optional. If multiple producers (~processes) expose the same data source
5530        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
5531        /// the data source is enabled only for producers whose names match any of
5532        /// the filters.
5533        /// |producer_name_filter| has to be an exact match, while
5534        /// |producer_name_regex_filter| is a regular expression.
5535        /// This allows to enable a data source only for specific processes.
5536        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
5537        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
5538        #[prost(string, repeated, tag = "2")]
5539        pub producer_name_filter: ::prost::alloc::vec::Vec<
5540            ::prost::alloc::string::String,
5541        >,
5542        #[prost(string, repeated, tag = "3")]
5543        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
5544            ::prost::alloc::string::String,
5545        >,
5546        /// Filter by machine names. The name of a machine is determined by the
5547        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
5548        /// variable is not set then the
5549        /// persist.traced_relay.machine_name system property is used. If the
5550        /// sysprop isn't set or not in an Android system, then the machine name by
5551        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
5552        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
5553        /// to the host machine, which is the machine running traced.
5554        #[prost(string, repeated, tag = "4")]
5555        pub machine_name_filter: ::prost::alloc::vec::Vec<
5556            ::prost::alloc::string::String,
5557        >,
5558    }
5559    /// Config for disabling builtin data sources in the tracing service.
5560    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5561    pub struct BuiltinDataSource {
5562        /// Disable emitting clock timestamps into the trace.
5563        #[prost(bool, optional, tag = "1")]
5564        pub disable_clock_snapshotting: ::core::option::Option<bool>,
5565        /// Disable echoing the original trace config in the trace.
5566        #[prost(bool, optional, tag = "2")]
5567        pub disable_trace_config: ::core::option::Option<bool>,
5568        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
5569        #[prost(bool, optional, tag = "3")]
5570        pub disable_system_info: ::core::option::Option<bool>,
5571        /// Disable emitting events for data-source state changes (e.g. the marker
5572        /// for all data sources having ACKed the start of the trace).
5573        #[prost(bool, optional, tag = "4")]
5574        pub disable_service_events: ::core::option::Option<bool>,
5575        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
5576        /// also ClockSnapshot's primary_trace_clock. The configured value is written
5577        /// into the trace as part of the ClockSnapshots emitted by the service.
5578        /// Trace processor will attempt to translate packet/event timestamps from
5579        /// various data sources (and their chosen clock domains) to this domain
5580        /// during import. Added in Android R.
5581        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
5582        pub primary_trace_clock: ::core::option::Option<i32>,
5583        /// Time interval in between snapshotting of sync markers, clock snapshots,
5584        /// stats, and other periodic service-emitted events. Note that the service
5585        /// only keeps track of the first and the most recent snapshot until
5586        /// ReadBuffers() is called.
5587        #[prost(uint32, optional, tag = "6")]
5588        pub snapshot_interval_ms: ::core::option::Option<u32>,
5589        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
5590        /// clock should be used for periodic snapshots of service-emitted events.
5591        /// This means, if a snapshot *should* have happened during suspend, it will
5592        /// happen immediately after the device resumes.
5593        ///
5594        /// Choosing a clock like this is done on best-effort basis; not all
5595        /// platforms (e.g. Windows) expose a clock which can be used for periodic
5596        /// tasks counting suspend. If such a clock is not available, the service
5597        /// falls back to the best-available alternative.
5598        ///
5599        /// Introduced in Android S.
5600        /// TODO(lalitm): deprecate this in T and make this the default if nothing
5601        /// crashes in S.
5602        #[prost(bool, optional, tag = "7")]
5603        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
5604        /// Disables the reporting of per-trace-writer histograms in TraceStats.
5605        #[prost(bool, optional, tag = "8")]
5606        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
5607        /// Disable emitting extension descriptors into the trace.
5608        #[prost(bool, optional, tag = "9")]
5609        pub disable_extension_descriptors: ::core::option::Option<bool>,
5610        /// Emit state changes of other tracing sessions running concurrently
5611        /// with this one (see ConcurrentSessionEvent).
5612        ///
5613        /// Introduced in v58 / Android 26Q3+.
5614        #[prost(bool, optional, tag = "10")]
5615        pub enable_concurrent_session_events: ::core::option::Option<bool>,
5616    }
5617    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5618    pub struct ProducerConfig {
5619        /// Identifies the producer for which this config is for.
5620        #[prost(string, optional, tag = "1")]
5621        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
5622        /// Specifies the preferred size of the shared memory buffer. If the size is
5623        /// larger than the max size, the max will be used. If it is smaller than
5624        /// the page size or doesn't fit pages evenly into it, it will fall back to
5625        /// the size specified by the producer or finally the default shared memory
5626        /// size.
5627        #[prost(uint32, optional, tag = "2")]
5628        pub shm_size_kb: ::core::option::Option<u32>,
5629        /// Specifies the preferred size of each page in the shared memory buffer.
5630        /// Must be an integer multiple of 4K.
5631        #[prost(uint32, optional, tag = "3")]
5632        pub page_size_kb: ::core::option::Option<u32>,
5633    }
5634    /// Contains statsd-specific metadata about an alert associated with the trace.
5635    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5636    pub struct StatsdMetadata {
5637        /// The identifier of the alert which triggered this trace.
5638        #[prost(int64, optional, tag = "1")]
5639        pub triggering_alert_id: ::core::option::Option<i64>,
5640        /// The uid which registered the triggering configuration with statsd.
5641        #[prost(int32, optional, tag = "2")]
5642        pub triggering_config_uid: ::core::option::Option<i32>,
5643        /// The identifier of the config which triggered the alert.
5644        #[prost(int64, optional, tag = "3")]
5645        pub triggering_config_id: ::core::option::Option<i64>,
5646        /// The identifier of the subscription which triggered this trace.
5647        #[prost(int64, optional, tag = "4")]
5648        pub triggering_subscription_id: ::core::option::Option<i64>,
5649    }
5650    /// Contains flags which override the default values of the guardrails inside
5651    /// Perfetto.
5652    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5653    pub struct GuardrailOverrides {
5654        /// Override the default limit (in bytes) for uploading data to server within
5655        /// a 24 hour period.
5656        /// On R-, this override only affected userdebug builds. Since S, it also
5657        /// affects user builds.
5658        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
5659        /// was removed from Perfetto.
5660        #[deprecated]
5661        #[prost(uint64, optional, tag = "1")]
5662        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
5663        /// Overrides the guardrail for maximum trace buffer size.
5664        /// Available on U+
5665        #[prost(uint32, optional, tag = "2")]
5666        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
5667    }
5668    /// Triggers allow producers to start or stop the tracing session when an event
5669    /// occurs.
5670    ///
5671    /// For example if we are tracing probabilistically, most traces will be
5672    /// uninteresting. Triggers allow us to keep only the interesting ones such as
5673    /// those traces during which the device temperature reached a certain
5674    /// threshold. In this case the producer can activate a trigger to keep
5675    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
5676    /// (START_TRACING) because it knows something is about to happen.
5677    #[derive(Clone, PartialEq, ::prost::Message)]
5678    pub struct TriggerConfig {
5679        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
5680        pub trigger_mode: ::core::option::Option<i32>,
5681        /// This flag is really a workaround for b/274931668. This is needed only
5682        /// when deploying configs to different versions of the tracing service.
5683        /// When this is set to true this has the same effect of setting trigger_mode
5684        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
5685        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
5686        /// versions of Android and fall back to STOP_TRACING on older versions where
5687        /// CLONE_SNAPSHOT did not exist.
5688        /// When using this flag, trigger_mode must be set to STOP_TRACING.
5689        #[prost(bool, optional, tag = "5")]
5690        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
5691        /// A list of triggers which are related to this configuration. If ANY
5692        /// trigger is seen then an action will be performed based on |trigger_mode|.
5693        #[prost(message, repeated, tag = "2")]
5694        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
5695        /// Required and must be positive if a TriggerConfig is specified. This is
5696        /// how long this TraceConfig should wait for a trigger to arrive. After this
5697        /// period of time if no trigger is seen the TracingSession will be cleaned
5698        /// up.
5699        #[prost(uint32, optional, tag = "3")]
5700        pub trigger_timeout_ms: ::core::option::Option<u32>,
5701    }
5702    /// Nested message and enum types in `TriggerConfig`.
5703    pub mod trigger_config {
5704        #[derive(Clone, PartialEq, ::prost::Message)]
5705        pub struct Trigger {
5706            /// The producer must specify this name to activate the trigger.
5707            #[prost(string, optional, tag = "1")]
5708            pub name: ::core::option::Option<::prost::alloc::string::String>,
5709            /// An std::regex that will match the producer that can activate this
5710            /// trigger. This is optional. If unset any producers can activate this
5711            /// trigger.
5712            #[prost(string, optional, tag = "2")]
5713            pub producer_name_regex: ::core::option::Option<
5714                ::prost::alloc::string::String,
5715            >,
5716            /// After a trigger is received either in START_TRACING or STOP_TRACING
5717            /// mode then the trace will end |stop_delay_ms| after triggering.
5718            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
5719            /// snapshot.
5720            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
5721            /// based on wall-clock, counting also time in suspend.
5722            #[prost(uint32, optional, tag = "3")]
5723            pub stop_delay_ms: ::core::option::Option<u32>,
5724            /// Limits the number of traces this trigger can start/stop in a rolling
5725            /// 24 hour window. If this field is unset or zero, no limit is applied and
5726            /// activiation of this trigger *always* starts/stops the trace.
5727            #[prost(uint32, optional, tag = "4")]
5728            pub max_per_24_h: ::core::option::Option<u32>,
5729            /// A value between 0 and 1 which encodes the probability of skipping a
5730            /// trigger with this name. This is useful for reducing the probability
5731            /// of high-frequency triggers from dominating trace finaization. If this
5732            /// field is unset or zero, the trigger will *never* be skipped. If this
5733            /// field is greater than or equal to 1, this trigger will *always* be
5734            /// skipped i.e. it will be as if this trigger was never included in the
5735            /// first place.
5736            /// This probability check is applied *before* any other limits. For
5737            /// example, if |max_per_24_h| is also set, first we will check if the
5738            /// probability bar is met and only then will we check the |max_per_24_h|
5739            /// limit.
5740            #[prost(double, optional, tag = "5")]
5741            pub skip_probability: ::core::option::Option<f64>,
5742        }
5743        #[derive(
5744            Clone,
5745            Copy,
5746            Debug,
5747            PartialEq,
5748            Eq,
5749            Hash,
5750            PartialOrd,
5751            Ord,
5752            ::prost::Enumeration
5753        )]
5754        #[repr(i32)]
5755        pub enum TriggerMode {
5756            Unspecified = 0,
5757            /// When this mode is chosen, data sources are not started until one of the
5758            /// |triggers| are received. This supports early initialization and fast
5759            /// starting of the tracing system. On triggering, the session will then
5760            /// record for |stop_delay_ms|. However if no trigger is seen
5761            /// after |trigger_timeout_ms| the session will be stopped and no data will
5762            /// be returned.
5763            StartTracing = 1,
5764            /// When this mode is chosen, the session will be started via the normal
5765            /// EnableTracing() & StartTracing(). If no trigger is ever seen
5766            /// the session will be stopped after |trigger_timeout_ms| and no data will
5767            /// be returned. However if triggered the trace will stop after
5768            /// |stop_delay_ms| and any data in the buffer will be returned to the
5769            /// consumer.
5770            StopTracing = 2,
5771            /// When this mode is chosen, this causes a snapshot of the current tracing
5772            /// session to be created after |stop_delay_ms| while the current tracing
5773            /// session continues undisturbed (% an extra flush). This mode can be
5774            /// used only when the tracing session is handled by the "perfetto" cmdline
5775            /// client (which is true in 90% of cases). Part of the business logic
5776            /// necessary for this behavior, and ensuing file handling, lives in
5777            /// perfetto_cmd.cc . On other consumers, this causes only a notification
5778            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
5779            /// consumer is supposed to call CloneSession() itself after the event.
5780            /// Use use_clone_snapshot_if_available=true when targeting older versions
5781            /// of perfetto.
5782            ///
5783            /// NOTE: CLONE_SNAPSHOT should be used only when we targeting Android V+
5784            /// (15+) / Perfetto v38+. A bug in older versions of the tracing service
5785            /// might cause indefinitely long tracing sessions (see b/274931668).
5786            CloneSnapshot = 4,
5787        }
5788        impl TriggerMode {
5789            /// String value of the enum field names used in the ProtoBuf definition.
5790            ///
5791            /// The values are not transformed in any way and thus are considered stable
5792            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5793            pub fn as_str_name(&self) -> &'static str {
5794                match self {
5795                    Self::Unspecified => "UNSPECIFIED",
5796                    Self::StartTracing => "START_TRACING",
5797                    Self::StopTracing => "STOP_TRACING",
5798                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
5799                }
5800            }
5801            /// Creates an enum from field names used in the ProtoBuf definition.
5802            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5803                match value {
5804                    "UNSPECIFIED" => Some(Self::Unspecified),
5805                    "START_TRACING" => Some(Self::StartTracing),
5806                    "STOP_TRACING" => Some(Self::StopTracing),
5807                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
5808                    _ => None,
5809                }
5810            }
5811        }
5812    }
5813    /// Configuration for trace contents that reference earlier trace data. For
5814    /// example, a data source might intern strings, and emit packets containing
5815    /// {interned id : string} pairs. Future packets from that data source can then
5816    /// use the interned ids instead of duplicating the raw string contents. The
5817    /// trace parser will then need to use that interning table to fully interpret
5818    /// the rest of the trace.
5819    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5820    pub struct IncrementalStateConfig {
5821        /// If nonzero, notify eligible data sources to clear their incremental state
5822        /// periodically, with the given period. The notification is sent only to
5823        /// data sources that have |handles_incremental_state_clear| set in their
5824        /// DataSourceDescriptor. The notification requests that the data source
5825        /// stops referring to past trace contents. This is particularly useful when
5826        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
5827        /// trace data.
5828        ///
5829        /// Warning: this time-based global clearing is likely to be removed in the
5830        /// future, to be replaced with a smarter way of sending the notifications
5831        /// only when necessary.
5832        #[prost(uint32, optional, tag = "1")]
5833        pub clear_period_ms: ::core::option::Option<u32>,
5834    }
5835    /// Selects and configures the compression codec, superseding
5836    /// |compression_type|. The codec is chosen by which sub-message is set; when
5837    /// several are set the service picks the highest-numbered one it supports and
5838    /// ignores codecs it doesn't know, so a single config can target old and new
5839    /// services. Falls back to |compression_type| (deflate-only), if given.
5840    ///
5841    /// Introduced in: perfetto v58.
5842    /// Supported on: Android 26Q3+.
5843    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5844    pub struct CompressionConfig {
5845        /// If a config sets more than one of these, the service picks the one with
5846        /// the highest field number (see the rule above): e.g. with deflate (1) and
5847        /// zstd (2) both set, zstd wins.
5848        #[prost(message, optional, tag = "1")]
5849        pub deflate: ::core::option::Option<compression_config::Deflate>,
5850        #[prost(message, optional, tag = "2")]
5851        pub zstd: ::core::option::Option<compression_config::Zstd>,
5852    }
5853    /// Nested message and enum types in `CompressionConfig`.
5854    pub mod compression_config {
5855        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
5856        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5857        pub struct Deflate {}
5858        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5859        pub struct Zstd {
5860            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
5861            /// default (3). Levels above the max are clamped; negatives are valid
5862            /// faster, lower-ratio modes.
5863            #[prost(int32, optional, tag = "1")]
5864            pub level: ::core::option::Option<i32>,
5865        }
5866    }
5867    /// Android-only. Not for general use. If set, saves the trace into an
5868    /// incident. This field is read by perfetto_cmd, rather than the tracing
5869    /// service. This field must be set when passing the --upload flag to
5870    /// perfetto_cmd.
5871    /// In this message, either:
5872    ///   * all of |destination_package|, |destination_class| and |privacy_level|
5873    ///     must be set.
5874    ///   * |skip_incidentd| must be explicitly set to true.
5875    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5876    pub struct IncidentReportConfig {
5877        #[prost(string, optional, tag = "1")]
5878        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
5879        #[prost(string, optional, tag = "2")]
5880        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
5881        /// Level of filtering in the requested incident. See |Destination| in
5882        /// frameworks/base/core/proto/android/privacy.proto.
5883        #[prost(int32, optional, tag = "3")]
5884        pub privacy_level: ::core::option::Option<i32>,
5885        /// If true, then skips saving the trace to incidentd.
5886        ///
5887        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5888        /// or when we explicitly don't want traces to go to incidentd even when they
5889        /// usually would (e.g. configs deployed using statsd but only used for
5890        /// inclusion in bugreports using |bugreport_score|).
5891        ///
5892        /// The motivation for having this flag, instead of just not setting
5893        /// |incident_report_config|, is prevent accidents where
5894        /// |incident_report_config| is omitted by mistake.
5895        #[prost(bool, optional, tag = "5")]
5896        pub skip_incidentd: ::core::option::Option<bool>,
5897        /// If true, do not write the trace into dropbox (i.e. incident only).
5898        /// Otherwise, write to both dropbox and incident.
5899        /// TODO(lalitm): remove this field as we no longer use Dropbox.
5900        #[deprecated]
5901        #[prost(bool, optional, tag = "4")]
5902        pub skip_dropbox: ::core::option::Option<bool>,
5903    }
5904    /// When set applies a post-filter to the trace contents using the filter
5905    /// provided. The filter is applied at ReadBuffers() time and works both in the
5906    /// case of IPC readback and write_into_file. This filter can be generated
5907    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
5908    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
5909    /// design.
5910    ///
5911    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
5912    /// Android T with a different field number. Updated in Android U with a new
5913    /// bytecode version which supports string filtering.
5914    ///
5915    /// The principles and terminology of string filtering is heavily inspired by
5916    /// iptables. A "rule" decide how strings should be filtered. Each rule
5917    /// contains a "policy" which indicates the algorithm to use for filtering.
5918    /// A "chain" is a list of rules which will be sequentially checked against
5919    /// each string.
5920    ///
5921    /// The first rule which applies to the string terminates filtering for that
5922    /// string. If no rules apply, the string is left unchanged.
5923    ///
5924    /// =========================
5925    /// Filter bytecode.
5926    /// =========================
5927    #[derive(Clone, PartialEq, ::prost::Message)]
5928    pub struct TraceFilter {
5929        /// The bytecode as implemented in Android T.
5930        #[prost(bytes = "vec", optional, tag = "1")]
5931        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5932        /// The bytecode as implemented in Android U. Adds support for string
5933        /// filtering.
5934        #[prost(bytes = "vec", optional, tag = "2")]
5935        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5936        #[prost(message, optional, tag = "3")]
5937        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
5938        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
5939        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
5940        /// versions ignore this field; new versions apply it.
5941        ///
5942        /// The motivation for this is that adding new opcodes in a backwards
5943        /// compatible way while also minimizing config size is hard. Instead, the
5944        /// overlay mechanism allows us to "patch" specific fields in the original
5945        /// bytecode_v2 with new semantics.
5946        ///
5947        /// See RFC 0011-subset-string-filter-rules.md for more info.
5948        ///
5949        /// Note:
5950        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
5951        /// markers), this overlay uses a triplet format with explicit indices:
5952        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
5953        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
5954        /// Entries must be sorted by (msg_index, field_id).
5955        ///
5956        /// The parser processes bytecode_v2 and this overlay simultaneously:
5957        ///   - any field not mentioned in the overlay is parsed as usual
5958        ///   - any field in the overlay but *not* in the bytecode_v2 is added
5959        ///     with its overlay value
5960        ///   - any field in both the overlay and bytecode_v2 takes the value in the
5961        ///     overlay, the bytecode_v2 value is ignored.
5962        ///
5963        /// Note: despite the name, this was broken in v54 (the overlay was not
5964        /// passed through to the bytecode parser). Only works in v55+.
5965        #[prost(bytes = "vec", optional, tag = "4")]
5966        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5967        /// String filter chain for Perfetto v54+. Rules in this chain either
5968        /// overwrite rules in string_filter_chain (if the name matches) or are
5969        /// appended (if the name doesn't match). This allows modifying existing
5970        /// rules (e.g., changing policy) without duplicating the entire chain.
5971        /// Rules without a name are always appended.
5972        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5973        /// Introduced in: Perfetto v54.
5974        #[prost(message, optional, tag = "5")]
5975        pub string_filter_chain_v54: ::core::option::Option<
5976            trace_filter::StringFilterChain,
5977        >,
5978    }
5979    /// Nested message and enum types in `TraceFilter`.
5980    pub mod trace_filter {
5981        /// A rule specifies how strings should be filtered.
5982        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5983        pub struct StringFilterRule {
5984            /// The policy (i.e. algorithm) dictating how strings matching this rule
5985            /// should be handled.
5986            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
5987            pub policy: ::core::option::Option<i32>,
5988            /// The regex pattern used to match against each string.
5989            #[prost(string, optional, tag = "2")]
5990            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
5991            /// The string which should appear after the tgid in atrace tracepoint
5992            /// strings.
5993            #[prost(string, optional, tag = "3")]
5994            pub atrace_payload_starts_with: ::core::option::Option<
5995                ::prost::alloc::string::String,
5996            >,
5997            /// Optional name for the rule. When merging chains (e.g. via
5998            /// string_filter_chain_v54), rules with matching names in the newer chain
5999            /// will overwrite rules in the base chain. Rules without a name (empty or
6000            /// unset) are always treated as distinct and will be appended.
6001            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
6002            /// Introduced in: Perfetto v54.
6003            #[prost(string, optional, tag = "4")]
6004            pub name: ::core::option::Option<::prost::alloc::string::String>,
6005            /// The semantic types this rule applies to.
6006            ///
6007            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
6008            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
6009            /// - If non-empty, the rule applies only to fields whose semantic type
6010            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
6011            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
6012            ///
6013            /// Examples:
6014            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
6015            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
6016            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
6017            ///
6018            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
6019            /// Introduced in: Perfetto v54.
6020            #[prost(
6021                enumeration = "super::super::SemanticType",
6022                repeated,
6023                packed = "false",
6024                tag = "5"
6025            )]
6026            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
6027        }
6028        /// A chain is a list of rules which string will be sequentially checked
6029        /// against.
6030        #[derive(Clone, PartialEq, ::prost::Message)]
6031        pub struct StringFilterChain {
6032            #[prost(message, repeated, tag = "1")]
6033            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
6034        }
6035        /// A policy specifies which algorithm should be used for filtering the
6036        /// string.
6037        #[derive(
6038            Clone,
6039            Copy,
6040            Debug,
6041            PartialEq,
6042            Eq,
6043            Hash,
6044            PartialOrd,
6045            Ord,
6046            ::prost::Enumeration
6047        )]
6048        #[repr(i32)]
6049        pub enum StringFilterPolicy {
6050            SfpUnspecified = 0,
6051            /// Tries to match the string field against |regex_pattern|. If it
6052            /// matches, all matching groups are "redacted" (i.e. replaced with a
6053            /// constant string) and filtering is terminated (i.e. no further rules are
6054            /// checked). If it doesn't match, the string is left unchanged and the
6055            /// next rule in chain is considered.
6056            SfpMatchRedactGroups = 1,
6057            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
6058            /// checking the regex. Specifically, it tries to parse the string field as
6059            /// an atrace tracepoint and checks if the post-tgid field starts with
6060            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
6061            /// this check succeeds.
6062            SfpAtraceMatchRedactGroups = 2,
6063            /// Tries to match the string field against |regex_pattern|. If it
6064            /// matches, filtering is terminated (i.e. no further rules are checked).
6065            /// If it doesn't match, the string is left unchanged and the next rule in
6066            /// chain is considered.
6067            SfpMatchBreak = 3,
6068            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
6069            /// the regex. Specifically, it tries to parse the string field as an
6070            /// atrace tracepoint and checks if the post-tgid field starts with
6071            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
6072            /// this check succeeds.
6073            SfpAtraceMatchBreak = 4,
6074            /// Tries to repeatedly search (i.e. find substrings of) the string field
6075            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
6076            /// replaced with a constant string). Once there are no further matches,
6077            /// filtering is terminated (i.e. no further rules are checked).
6078            ///
6079            /// Note that this is policy is a "search" policy not a "match" policy
6080            /// unlike the above policies:
6081            ///   * Match policies require matching the full string i.e. there is an
6082            ///     implicit leading `^` and trailing `$`.
6083            ///   * Search policies perform repeated partial matching of the string
6084            ///     e.g.
6085            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
6086            ///       - Pattern: `foo=(\d+)`
6087            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
6088            ///     where P6O is the redaction string
6089            ///
6090            /// All of this is only performed after some pre-work where we try to parse
6091            /// the string field as an atrace tracepoint and check if the post-tgid
6092            /// field starts with |atrace_post_tgid_starts_with|.
6093            ///
6094            /// If there are no partial matches, the string is left unchanged and the
6095            /// next rule in chain is considered.
6096            SfpAtraceRepeatedSearchRedactGroups = 5,
6097        }
6098        impl StringFilterPolicy {
6099            /// String value of the enum field names used in the ProtoBuf definition.
6100            ///
6101            /// The values are not transformed in any way and thus are considered stable
6102            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6103            pub fn as_str_name(&self) -> &'static str {
6104                match self {
6105                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
6106                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
6107                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
6108                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
6109                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
6110                    Self::SfpAtraceRepeatedSearchRedactGroups => {
6111                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
6112                    }
6113                }
6114            }
6115            /// Creates an enum from field names used in the ProtoBuf definition.
6116            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6117                match value {
6118                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
6119                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
6120                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
6121                        Some(Self::SfpAtraceMatchRedactGroups)
6122                    }
6123                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
6124                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
6125                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
6126                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
6127                    }
6128                    _ => None,
6129                }
6130            }
6131        }
6132    }
6133    /// Android-only. Not for general use. If set, reports the trace to the
6134    /// Android framework. This field is read by perfetto_cmd, rather than the
6135    /// tracing service. This field must be set when passing the --upload flag to
6136    /// perfetto_cmd.
6137    /// In this message, either:
6138    ///   * |reporter_service_package| and |reporter_service_class| must be set.
6139    ///   * |skip_reporting| must be explicitly set to true.
6140    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6141    pub struct AndroidReportConfig {
6142        #[prost(string, optional, tag = "1")]
6143        pub reporter_service_package: ::core::option::Option<
6144            ::prost::alloc::string::String,
6145        >,
6146        #[prost(string, optional, tag = "2")]
6147        pub reporter_service_class: ::core::option::Option<
6148            ::prost::alloc::string::String,
6149        >,
6150        /// If true, then skips reporting the trace to Android framework.
6151        ///
6152        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
6153        /// or when we explicitly don't want to report traces to the framework even
6154        /// when they usually would (e.g. configs deployed using statsd but only
6155        /// used for inclusion in bugreports using |bugreport_score|).
6156        ///
6157        /// The motivation for having this flag, instead of just not setting
6158        /// |framework_report_config|, is prevent accidents where
6159        /// |framework_report_config| is omitted by mistake.
6160        #[prost(bool, optional, tag = "3")]
6161        pub skip_report: ::core::option::Option<bool>,
6162        /// If true, will direct the Android framework to read the data in trace
6163        /// file and pass it to the reporter class over a pipe instead of passing
6164        /// the file descriptor directly.
6165        ///
6166        /// This flag is needed because the Android test framework does not
6167        /// currently support priv-app helper apps (in terms of SELinux) and we
6168        /// really don't want to add an allow rule for untrusted_app to receive
6169        /// trace fds.
6170        ///
6171        /// Because of this, we instead will direct the framework to create a new
6172        /// pipe and pass this to the reporter process instead. As the pipe is
6173        /// created by the framework, we won't have any problems with SELinux
6174        /// (system_server is already allowed to pass pipe fds, even
6175        /// to untrusted apps).
6176        ///
6177        /// As the name suggests this option *MUST* only be used for testing.
6178        /// Note that the framework will reject (and drop) files which are too
6179        /// large both for simplicity and to be minimize the amount of data we
6180        /// pass to a non-priv app (note that the framework will still check
6181        /// manifest permissions even though SELinux permissions are worked around).
6182        #[prost(bool, optional, tag = "4")]
6183        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
6184    }
6185    /// If set, delays the start of tracing by a random duration. The duration is
6186    /// chosen from a uniform distribution between the specified minimum and
6187    /// maximum.
6188    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
6189    /// not work if you communicate with traced directly over the consumer API.
6190    /// Introduced in Android T.
6191    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6192    pub struct CmdTraceStartDelay {
6193        #[prost(uint32, optional, tag = "1")]
6194        pub min_delay_ms: ::core::option::Option<u32>,
6195        #[prost(uint32, optional, tag = "2")]
6196        pub max_delay_ms: ::core::option::Option<u32>,
6197    }
6198    /// When non-empty, ensures that for a each semaphore named `name at most
6199    /// `max_other_session_count`` *other* sessions (whose value is taken of the
6200    /// minimum of all values specified by this config or any already-running
6201    /// session) can be be running.
6202    ///
6203    /// If a semaphore "acquisition" fails, EnableTracing will return an error
6204    /// and the tracing session will not be started (or elgible to start in
6205    /// the case of deferred sessions).
6206    ///
6207    /// This is easiest to explain with an example. Suppose the tracing service has
6208    /// the following active tracing sessions:
6209    ///    S1 = [{name=foo, max_other_session_count=2},
6210    ///          {name=bar, max_other_session_count=0}]
6211    ///    S2 = [{name=foo, max_other_session_count=1},
6212    ///          {name=baz, max_other_session_count=1}]
6213    ///
6214    /// Then, for a new session, the following would be the expected behaviour of
6215    /// EnableSession given the state of `session_semaphores`.
6216    ///    Q: session_semaphores = \[\]
6217    ///    A: Allowed because it does not specify any semaphores. Will be allowed
6218    ///       no matter the state of any other tracing session.
6219    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
6220    ///    A: Allowed because both S2 and this config specify
6221    ///       max_other_session_count=1 for baz.
6222    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
6223    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
6224    ///       takes that slot.
6225    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
6226    ///    A: Denied because S1 takes the the slot specified by both S1 and
6227    ///       this config.
6228    ///
6229    /// Introduced in 24Q3 (Android V).
6230    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6231    pub struct SessionSemaphore {
6232        /// The name of the semaphore. Acts as a unique identifier across all
6233        /// tracing sessions (including the one being started).
6234        #[prost(string, optional, tag = "1")]
6235        pub name: ::core::option::Option<::prost::alloc::string::String>,
6236        /// The maximum number of *other* sesssions which specify the same semaphore
6237        /// which can be active. The minimum of this value across all tracing
6238        /// sessions and the value specified by the config is used when deciding
6239        /// whether the tracing session can be started.
6240        #[prost(uint64, optional, tag = "2")]
6241        pub max_other_session_count: ::core::option::Option<u64>,
6242    }
6243    #[derive(
6244        Clone,
6245        Copy,
6246        Debug,
6247        PartialEq,
6248        Eq,
6249        Hash,
6250        PartialOrd,
6251        Ord,
6252        ::prost::Enumeration
6253    )]
6254    #[repr(i32)]
6255    pub enum LockdownModeOperation {
6256        LockdownUnchanged = 0,
6257        LockdownClear = 1,
6258        LockdownSet = 2,
6259    }
6260    impl LockdownModeOperation {
6261        /// String value of the enum field names used in the ProtoBuf definition.
6262        ///
6263        /// The values are not transformed in any way and thus are considered stable
6264        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6265        pub fn as_str_name(&self) -> &'static str {
6266            match self {
6267                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
6268                Self::LockdownClear => "LOCKDOWN_CLEAR",
6269                Self::LockdownSet => "LOCKDOWN_SET",
6270            }
6271        }
6272        /// Creates an enum from field names used in the ProtoBuf definition.
6273        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6274            match value {
6275                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
6276                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
6277                "LOCKDOWN_SET" => Some(Self::LockdownSet),
6278                _ => None,
6279            }
6280        }
6281    }
6282    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
6283    /// that only ever selects deflate. Kept for backwards compatibility with
6284    /// Perfetto <= v57, whose services predate |compression|. Best effort.
6285    #[derive(
6286        Clone,
6287        Copy,
6288        Debug,
6289        PartialEq,
6290        Eq,
6291        Hash,
6292        PartialOrd,
6293        Ord,
6294        ::prost::Enumeration
6295    )]
6296    #[repr(i32)]
6297    pub enum CompressionType {
6298        Unspecified = 0,
6299        Deflate = 1,
6300    }
6301    impl CompressionType {
6302        /// String value of the enum field names used in the ProtoBuf definition.
6303        ///
6304        /// The values are not transformed in any way and thus are considered stable
6305        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6306        pub fn as_str_name(&self) -> &'static str {
6307            match self {
6308                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
6309                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
6310            }
6311        }
6312        /// Creates an enum from field names used in the ProtoBuf definition.
6313        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6314            match value {
6315                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6316                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
6317                _ => None,
6318            }
6319        }
6320    }
6321    #[derive(
6322        Clone,
6323        Copy,
6324        Debug,
6325        PartialEq,
6326        Eq,
6327        Hash,
6328        PartialOrd,
6329        Ord,
6330        ::prost::Enumeration
6331    )]
6332    #[repr(i32)]
6333    pub enum StatsdLogging {
6334        Unspecified = 0,
6335        Enabled = 1,
6336        Disabled = 2,
6337    }
6338    impl StatsdLogging {
6339        /// String value of the enum field names used in the ProtoBuf definition.
6340        ///
6341        /// The values are not transformed in any way and thus are considered stable
6342        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6343        pub fn as_str_name(&self) -> &'static str {
6344            match self {
6345                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
6346                Self::Enabled => "STATSD_LOGGING_ENABLED",
6347                Self::Disabled => "STATSD_LOGGING_DISABLED",
6348            }
6349        }
6350        /// Creates an enum from field names used in the ProtoBuf definition.
6351        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6352            match value {
6353                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
6354                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
6355                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
6356                _ => None,
6357            }
6358        }
6359    }
6360    #[derive(
6361        Clone,
6362        Copy,
6363        Debug,
6364        PartialEq,
6365        Eq,
6366        Hash,
6367        PartialOrd,
6368        Ord,
6369        ::prost::Enumeration
6370    )]
6371    #[repr(i32)]
6372    pub enum WriteFlushMode {
6373        /// Same as WRITE_FLUSH_AUTO.
6374        WriteFlushUnspecified = 0,
6375        /// Default mode. The service automatically determines the flush frequency
6376        /// to balance performance and data freshness:
6377        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
6378        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
6379        ///     issued every 5s.
6380        /// 2) If file_write_period_ms > 5s:
6381        ///     A flush is issued before every periodic write into the file.
6382        WriteFlushAuto = 1,
6383        /// The following modes are intended for advanced usage and not recommended
6384        /// for general use.
6385        ///
6386        /// Do not flush buffers before periodic writes into the file.
6387        /// Use this mode if you want to minimize the performance impact of flushes
6388        /// and can tolerate potentially missing the most recent data in the trace
6389        /// file until the end of the session or an explicit flush.
6390        /// When this mode is selected, |flush_period_ms| is respected.
6391        WriteFlushDisabled = 2,
6392        /// Issue a flush before every periodic write into the file.
6393        /// This ensures that each write into the file contains the most up-to-date
6394        /// data from all data sources, but may have a higher performance overhead.
6395        WriteFlushEnabled = 3,
6396    }
6397    impl WriteFlushMode {
6398        /// String value of the enum field names used in the ProtoBuf definition.
6399        ///
6400        /// The values are not transformed in any way and thus are considered stable
6401        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6402        pub fn as_str_name(&self) -> &'static str {
6403            match self {
6404                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
6405                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
6406                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
6407                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
6408            }
6409        }
6410        /// Creates an enum from field names used in the ProtoBuf definition.
6411        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6412            match value {
6413                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
6414                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
6415                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
6416                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
6417                _ => None,
6418            }
6419        }
6420    }
6421    #[derive(
6422        Clone,
6423        Copy,
6424        Debug,
6425        PartialEq,
6426        Eq,
6427        Hash,
6428        PartialOrd,
6429        Ord,
6430        ::prost::Enumeration
6431    )]
6432    #[repr(i32)]
6433    pub enum FFlushMode {
6434        /// Default: same as FFLUSH_DISABLED.
6435        FflushUnspecified = 0,
6436        /// Do not explicitly sync the file to storage after each write pass.
6437        FflushDisabled = 1,
6438        /// Explicitly sync the file to storage (via fdatasync) after each periodic
6439        /// write pass. Increases data durability at the cost of higher disk I/O
6440        /// overhead.
6441        FflushEnabled = 2,
6442    }
6443    impl FFlushMode {
6444        /// String value of the enum field names used in the ProtoBuf definition.
6445        ///
6446        /// The values are not transformed in any way and thus are considered stable
6447        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6448        pub fn as_str_name(&self) -> &'static str {
6449            match self {
6450                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
6451                Self::FflushDisabled => "FFLUSH_DISABLED",
6452                Self::FflushEnabled => "FFLUSH_ENABLED",
6453            }
6454        }
6455        /// Creates an enum from field names used in the ProtoBuf definition.
6456        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6457            match value {
6458                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
6459                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
6460                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
6461                _ => None,
6462            }
6463        }
6464    }
6465}
6466#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6467pub struct Utsname {
6468    #[prost(string, optional, tag = "1")]
6469    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
6470    #[prost(string, optional, tag = "2")]
6471    pub version: ::core::option::Option<::prost::alloc::string::String>,
6472    #[prost(string, optional, tag = "3")]
6473    pub release: ::core::option::Option<::prost::alloc::string::String>,
6474    #[prost(string, optional, tag = "4")]
6475    pub machine: ::core::option::Option<::prost::alloc::string::String>,
6476}
6477/// Next id: 19
6478#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6479pub struct SystemInfo {
6480    #[prost(message, optional, tag = "1")]
6481    pub utsname: ::core::option::Option<Utsname>,
6482    #[prost(string, optional, tag = "2")]
6483    pub android_build_fingerprint: ::core::option::Option<
6484        ::prost::alloc::string::String,
6485    >,
6486    /// The manufacturer of the product/hardware.
6487    /// Source : "ro.product.manufacturer"
6488    /// Introduced after Android W in Nov 2024 and is not supported on older
6489    /// versions.
6490    #[prost(string, optional, tag = "14")]
6491    pub android_device_manufacturer: ::core::option::Option<
6492        ::prost::alloc::string::String,
6493    >,
6494    /// The SoC model from which trace is collected
6495    #[prost(string, optional, tag = "9")]
6496    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
6497    /// Device tree compatible strings for Linux devices. This field is populated
6498    /// from the firmware file /sys/firmware/devicetree/base/compatible on the
6499    /// target device. The ordering matches the ordering in the device tree.
6500    /// Introduced after 26Q3 in Sept 2026 and is not supported on older versions.
6501    #[prost(string, repeated, tag = "18")]
6502    pub device_tree_compatibles: ::prost::alloc::vec::Vec<
6503        ::prost::alloc::string::String,
6504    >,
6505    /// The guest SoC model from which trace is collected in case of VMs
6506    #[prost(string, optional, tag = "13")]
6507    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
6508    /// The hardware reversion from android device
6509    #[prost(string, optional, tag = "10")]
6510    pub android_hardware_revision: ::core::option::Option<
6511        ::prost::alloc::string::String,
6512    >,
6513    /// The storage component from android_device. This field has been introduced
6514    /// after Android W in Aug 2024 and is not supported on older versions.
6515    #[prost(string, optional, tag = "11")]
6516    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
6517    /// The RAM component information from android device. This field has been
6518    /// introduced after Android W in Aug 2024 and is not supported on older
6519    /// versions.
6520    #[prost(string, optional, tag = "12")]
6521    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
6522    /// The serial console information from android device.
6523    #[prost(string, optional, tag = "15")]
6524    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
6525    /// The version of traced (the same returned by `traced --version`).
6526    /// This is a human readable string with and its format varies depending on
6527    /// the build system and the repo (standalone vs AOSP).
6528    /// This is intended for human debugging only.
6529    #[prost(string, optional, tag = "4")]
6530    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
6531    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
6532    /// Introduced in Android T.
6533    #[prost(uint64, optional, tag = "5")]
6534    pub android_sdk_version: ::core::option::Option<u64>,
6535    /// Kernel page size - sysconf(_SC_PAGESIZE).
6536    #[prost(uint32, optional, tag = "6")]
6537    pub page_size: ::core::option::Option<u32>,
6538    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
6539    /// Might be different to the number of online cpus.
6540    /// Introduced in perfetto v44.
6541    #[prost(uint32, optional, tag = "8")]
6542    pub num_cpus: ::core::option::Option<u32>,
6543    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
6544    /// Introduced in v38 / Android V.
6545    #[prost(int32, optional, tag = "7")]
6546    pub timezone_off_mins: ::core::option::Option<i32>,
6547    /// Ticks per second - sysconf(_SC_CLK_TCK).
6548    /// Not serialised as of perfetto v44.
6549    #[prost(int64, optional, tag = "3")]
6550    pub hz: ::core::option::Option<i64>,
6551    /// The size of the system RAM in bytes.
6552    ///
6553    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
6554    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
6555    ///
6556    /// Introduced in perfetto v54 / Android 26Q1+.
6557    #[prost(uint64, optional, tag = "16")]
6558    pub system_ram_bytes: ::core::option::Option<u64>,
6559    /// Human-readable name of the machine this SystemInfo describes, used as the
6560    /// machine's label in the UI (falling back to "machine <id>" when unset).
6561    ///
6562    /// A producer attributing its data to a non-host machine can set this by
6563    /// emitting a SystemInfo packet to give that machine a name. Only meaningful
6564    /// when the packet carries a non-zero machine_id.
6565    #[prost(string, optional, tag = "17")]
6566    pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
6567}
6568/// Statistics for the internals of the tracing service.
6569///
6570/// Next id: 19.
6571#[derive(Clone, PartialEq, ::prost::Message)]
6572pub struct TraceStats {
6573    /// Stats for the TraceBuffer(s) of the current trace session.
6574    #[prost(message, repeated, tag = "1")]
6575    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
6576    /// The thresholds of each the `writer_stats` histogram buckets. This is
6577    /// emitted only once as all WriterStats share the same bucket layout.
6578    /// This field has the same cardinality of the
6579    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
6580    /// (The -1 is because the last overflow bucket is not reported in the _def).
6581    /// An array of values \[10, 100, 1000\] in the _def array means that there are
6582    /// four buckets (3 + the implicit overflow bucket):
6583    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
6584    #[prost(int64, repeated, packed = "false", tag = "17")]
6585    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
6586    #[prost(message, repeated, tag = "18")]
6587    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
6588    /// Num. producers connected (whether they are involved in the current tracing
6589    /// session or not).
6590    #[prost(uint32, optional, tag = "2")]
6591    pub producers_connected: ::core::option::Option<u32>,
6592    /// Num. producers ever seen for all trace sessions since startup (it's a good
6593    /// proxy for inferring num. producers crashed / killed).
6594    #[prost(uint64, optional, tag = "3")]
6595    pub producers_seen: ::core::option::Option<u64>,
6596    /// Num. data sources registered for all trace sessions.
6597    #[prost(uint32, optional, tag = "4")]
6598    pub data_sources_registered: ::core::option::Option<u32>,
6599    /// Num. data sources ever seen for all trace sessions since startup.
6600    #[prost(uint64, optional, tag = "5")]
6601    pub data_sources_seen: ::core::option::Option<u64>,
6602    /// Num. concurrently active tracing sessions.
6603    #[prost(uint32, optional, tag = "6")]
6604    pub tracing_sessions: ::core::option::Option<u32>,
6605    /// Num. buffers for all tracing session (not just the current one). This will
6606    /// be >= buffer_stats.size(), because the latter is only about the current
6607    /// session.
6608    #[prost(uint32, optional, tag = "7")]
6609    pub total_buffers: ::core::option::Option<u32>,
6610    /// Num. chunks that were discarded by the service before attempting to commit
6611    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
6612    #[prost(uint64, optional, tag = "8")]
6613    pub chunks_discarded: ::core::option::Option<u64>,
6614    /// Num. patches that were discarded by the service before attempting to apply
6615    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
6616    #[prost(uint64, optional, tag = "9")]
6617    pub patches_discarded: ::core::option::Option<u64>,
6618    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
6619    /// is a bug in the producer.
6620    #[prost(uint64, optional, tag = "10")]
6621    pub invalid_packets: ::core::option::Option<u64>,
6622    #[prost(message, optional, tag = "11")]
6623    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
6624    /// Count of Flush() requests (either from the Consumer, or self-induced
6625    /// periodic flushes). The final Flush() is also included in the count.
6626    #[prost(uint64, optional, tag = "12")]
6627    pub flushes_requested: ::core::option::Option<u64>,
6628    /// The count of the Flush() requests that were completed successfully.
6629    /// In a well behaving trace this should always be == `flush_requests`.
6630    #[prost(uint64, optional, tag = "13")]
6631    pub flushes_succeeded: ::core::option::Option<u64>,
6632    /// The count of the Flush() requests that failed (in most timed out).
6633    /// In a well behaving trace this should always be == 0.
6634    #[prost(uint64, optional, tag = "14")]
6635    pub flushes_failed: ::core::option::Option<u64>,
6636    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
6637    pub final_flush_outcome: ::core::option::Option<i32>,
6638}
6639/// Nested message and enum types in `TraceStats`.
6640pub mod trace_stats {
6641    /// From TraceBuffer::Stats.
6642    ///
6643    /// Next id: 25.
6644    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6645    pub struct BufferStats {
6646        /// Size of the circular buffer in bytes.
6647        #[prost(uint64, optional, tag = "12")]
6648        pub buffer_size: ::core::option::Option<u64>,
6649        /// Num. bytes written into the circular buffer, including chunk headers.
6650        #[prost(uint64, optional, tag = "1")]
6651        pub bytes_written: ::core::option::Option<u64>,
6652        /// Num. bytes overwritten before they have been read (i.e. loss of data).
6653        #[prost(uint64, optional, tag = "13")]
6654        pub bytes_overwritten: ::core::option::Option<u64>,
6655        /// Total size of chunks that were fully read from the circular buffer by the
6656        /// consumer. This may not be equal to |bytes_written| either in the middle
6657        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
6658        /// size of the chunks read from the buffer, including chunk headers, which
6659        /// will be different from the total size of packets returned to the
6660        /// consumer.
6661        ///
6662        /// The current utilization of the trace buffer (mid-tracing) can be obtained
6663        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
6664        /// adding the difference of |padding_bytes_written| and
6665        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
6666        /// Note that this represents the total size of buffered data in the buffer,
6667        /// yet this data may be spread non-contiguously through the buffer and may
6668        /// be overridden before the utilization reaches 100%.
6669        #[prost(uint64, optional, tag = "14")]
6670        pub bytes_read: ::core::option::Option<u64>,
6671        /// Num. bytes that were allocated as padding between chunks in the circular
6672        /// buffer.
6673        #[prost(uint64, optional, tag = "15")]
6674        pub padding_bytes_written: ::core::option::Option<u64>,
6675        /// Num. of padding bytes that were removed from the circular buffer when
6676        /// they were overwritten.
6677        ///
6678        /// The difference between |padding_bytes_written| and
6679        /// |padding_bytes_cleared| denotes the total size of padding currently
6680        /// present in the buffer.
6681        #[prost(uint64, optional, tag = "16")]
6682        pub padding_bytes_cleared: ::core::option::Option<u64>,
6683        /// Num. chunks (!= packets) written into the buffer.
6684        #[prost(uint64, optional, tag = "2")]
6685        pub chunks_written: ::core::option::Option<u64>,
6686        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
6687        /// the same chunk with additional packets appended to the end.
6688        #[prost(uint64, optional, tag = "10")]
6689        pub chunks_rewritten: ::core::option::Option<u64>,
6690        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
6691        /// instead of rewriting in place. We do this for scraped chunks that have
6692        /// been fully read: their old position can be so close to the write cursor
6693        /// that the packets we just recovered would be overwritten before any read.
6694        ///
6695        /// Introduced in v59 / Android 26Q3+.
6696        #[prost(uint64, optional, tag = "20")]
6697        pub chunks_relocated: ::core::option::Option<u64>,
6698        /// Num. chunks overwritten before they have been read (i.e. loss of data).
6699        #[prost(uint64, optional, tag = "3")]
6700        pub chunks_overwritten: ::core::option::Option<u64>,
6701        /// Num. chunks discarded (i.e. loss of data). For SMB chunks, this can be
6702        /// > 0 only when a buffer is configured with FillPolicy == DISCARD.
6703        /// TraceBufferV2 also counts SMB v2 batches rejected because their
6704        /// producer has a ProtoVM on this buffer.
6705        #[prost(uint64, optional, tag = "18")]
6706        pub chunks_discarded: ::core::option::Option<u64>,
6707        /// Num. chunks (!= packets) that were fully read from the circular buffer by
6708        /// the consumer. This may not be equal to |chunks_written| either in the
6709        /// middle of tracing, or if |chunks_overwritten| is non-zero.
6710        #[prost(uint64, optional, tag = "17")]
6711        pub chunks_read: ::core::option::Option<u64>,
6712        /// Num. chunks that were committed out of order.
6713        #[prost(uint64, optional, tag = "11")]
6714        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
6715        /// Num. times the ring buffer wrapped around.
6716        #[prost(uint64, optional, tag = "4")]
6717        pub write_wrap_count: ::core::option::Option<u64>,
6718        /// Number of completed TraceBufferV2 compactions.
6719        /// Includes compactions that move no chunks and excludes calls that skip
6720        /// compaction, such as calls on DISCARD or read-only buffers.
6721        ///
6722        /// Compaction moves remaining chunks to the front and clears the unused
6723        /// tail.
6724        /// It keeps the pages that a similar write cycle can reuse, and releases
6725        /// the other whole pages where supported.
6726        /// The next writes start after the remaining chunks, which can reduce how
6727        /// often |write_wrap_count| and |chunks_overwritten| increase.
6728        /// Incomplete chunks can remain until later writes overwrite them.
6729        ///
6730        /// Introduced in v59 / Android 26Q4+.
6731        #[prost(uint64, optional, tag = "23")]
6732        pub compactions: ::core::option::Option<u64>,
6733        /// Number of TraceBufferV2 compactions skipped because live chunks were
6734        /// on both sides of the write cursor.
6735        ///
6736        /// Introduced in v59 / Android 26Q4+.
6737        #[prost(uint64, optional, tag = "24")]
6738        pub compactions_skipped: ::core::option::Option<u64>,
6739        /// Num. out-of-band (OOB) patches that succeeded.
6740        #[prost(uint64, optional, tag = "5")]
6741        pub patches_succeeded: ::core::option::Option<u64>,
6742        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
6743        #[prost(uint64, optional, tag = "6")]
6744        pub patches_failed: ::core::option::Option<u64>,
6745        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
6746        /// successful packet read.
6747        #[prost(uint64, optional, tag = "7")]
6748        pub readaheads_succeeded: ::core::option::Option<u64>,
6749        /// Num. readaheads aborted because of missing chunks in the sequence stream.
6750        /// Note that a small number > 0 is totally expected: occasionally, when
6751        /// issuing a read, the very last packet in a sequence might be incomplete
6752        /// (because the producer is still writing it while we read). The read will
6753        /// stop at that point, for that sequence, increasing this counter.
6754        #[prost(uint64, optional, tag = "8")]
6755        pub readaheads_failed: ::core::option::Option<u64>,
6756        /// Num. of violations of the SharedMemoryABI or the shared ring buffer ABI
6757        /// found while writing or reading the buffer. This includes SMB v2 packets
6758        /// that TraceBufferV2 cannot rewrite because they are malformed or nest
6759        /// more than 128 groups. It also includes chunks whose writer ID already
6760        /// uses the other input format.
6761        /// This is an indication of either a bug in the producer(s) or malicious
6762        /// producer(s).
6763        #[prost(uint64, optional, tag = "9")]
6764        pub abi_violations: ::core::option::Option<u64>,
6765        /// Num. of times the service detected packet loss on a trace writer
6766        /// sequence. This is usually caused by exhaustion of available chunks in the
6767        /// writer process's SMB. Note that this relies on the client's TraceWriter
6768        /// indicating this loss to the service -- packets lost for other reasons are
6769        /// not reflected in this stat.
6770        #[prost(uint64, optional, tag = "19")]
6771        pub trace_writer_packet_loss: ::core::option::Option<u64>,
6772        /// TraceBufferV2 only. Num. SMB v2 packets dropped at read time because
6773        /// they contain a nested message larger than 256 MiB, the limit of the
6774        /// four-byte length field. The packet can be valid. Loss is reported on the
6775        /// next packet of the same sequence.
6776        #[prost(uint64, optional, tag = "22")]
6777        pub oversized_packets_dropped: ::core::option::Option<u64>,
6778    }
6779    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
6780    /// visible as a unique sequence ID in the trace.
6781    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6782    pub struct WriterStats {
6783        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
6784        /// correlate the stats with the actual packet types.
6785        #[prost(uint64, optional, tag = "1")]
6786        pub sequence_id: ::core::option::Option<u64>,
6787        /// The buffer index (0..N, as defined in the TraceConfig).
6788        #[prost(uint32, optional, tag = "4")]
6789        pub buffer: ::core::option::Option<u32>,
6790        /// These two arrays have the same cardinality and match the cardinality of
6791        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
6792        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
6793        /// for each bucket.
6794        #[prost(uint64, repeated, tag = "2")]
6795        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
6796        #[prost(int64, repeated, tag = "3")]
6797        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
6798    }
6799    /// This is set only when the TraceConfig specifies a TraceFilter.
6800    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6801    pub struct FilterStats {
6802        #[prost(uint64, optional, tag = "1")]
6803        pub input_packets: ::core::option::Option<u64>,
6804        #[prost(uint64, optional, tag = "2")]
6805        pub input_bytes: ::core::option::Option<u64>,
6806        #[prost(uint64, optional, tag = "3")]
6807        pub output_bytes: ::core::option::Option<u64>,
6808        #[prost(uint64, optional, tag = "4")]
6809        pub errors: ::core::option::Option<u64>,
6810        #[prost(uint64, optional, tag = "5")]
6811        pub time_taken_ns: ::core::option::Option<u64>,
6812        /// The number of bytes discarded by the filter (i.e. output - input).
6813        /// The array has one entry for each buffer defined in the config (unless no
6814        /// packets for that buffer were seen and hence filtered).
6815        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
6816        /// (output_bytes - input_bytes) because the filter might also discard
6817        /// server-generated synthetic packets, that have no buffer index.
6818        #[prost(uint64, repeated, packed = "false", tag = "20")]
6819        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
6820    }
6821    #[derive(
6822        Clone,
6823        Copy,
6824        Debug,
6825        PartialEq,
6826        Eq,
6827        Hash,
6828        PartialOrd,
6829        Ord,
6830        ::prost::Enumeration
6831    )]
6832    #[repr(i32)]
6833    pub enum FinalFlushOutcome {
6834        FinalFlushUnspecified = 0,
6835        FinalFlushSucceeded = 1,
6836        FinalFlushFailed = 2,
6837    }
6838    impl FinalFlushOutcome {
6839        /// String value of the enum field names used in the ProtoBuf definition.
6840        ///
6841        /// The values are not transformed in any way and thus are considered stable
6842        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6843        pub fn as_str_name(&self) -> &'static str {
6844            match self {
6845                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
6846                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
6847                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
6848            }
6849        }
6850        /// Creates an enum from field names used in the ProtoBuf definition.
6851        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6852            match value {
6853                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
6854                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
6855                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
6856                _ => None,
6857            }
6858        }
6859    }
6860}
6861/// Android aconfig flags (aflags).
6862/// This message captures a snapshot of the state of aconfig flags on the device.
6863/// Keep in sync with:
6864/// <http://ac/packages/modules/ConfigInfrastructure/aflags/proto/aflags.proto>
6865#[derive(Clone, PartialEq, ::prost::Message)]
6866pub struct AndroidAflags {
6867    /// A collection of flags.
6868    #[prost(message, repeated, tag = "1")]
6869    pub flags: ::prost::alloc::vec::Vec<android_aflags::Flag>,
6870    /// A human-readable error logged if aflags processing fails.
6871    /// This is a perfetto specific field used to help debugging.
6872    #[prost(string, optional, tag = "2")]
6873    pub error: ::core::option::Option<::prost::alloc::string::String>,
6874}
6875/// Nested message and enum types in `AndroidAflags`.
6876pub mod android_aflags {
6877    /// Representation of an aconfig flag and its metadata.
6878    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6879    pub struct Flag {
6880        #[prost(string, optional, tag = "1")]
6881        pub flag_namespace: ::core::option::Option<::prost::alloc::string::String>,
6882        #[prost(string, optional, tag = "2")]
6883        pub name: ::core::option::Option<::prost::alloc::string::String>,
6884        /// The aconfig package (e.g. "com.android.foo"). These are system-level
6885        /// identifiers and not privacy-impacting.
6886        #[prost(string, optional, tag = "3")]
6887        pub pkg: ::core::option::Option<::prost::alloc::string::String>,
6888        /// The container where the flag lives (e.g. "system", "vendor", or mainline
6889        /// module name).
6890        #[prost(string, optional, tag = "4")]
6891        pub container: ::core::option::Option<::prost::alloc::string::String>,
6892        /// The flag value as a string to support different future data types.
6893        #[prost(string, optional, tag = "5")]
6894        pub value: ::core::option::Option<::prost::alloc::string::String>,
6895        /// The value that will be applied after the next reboot, if different from
6896        /// the current value.
6897        #[prost(string, optional, tag = "6")]
6898        pub staged_value: ::core::option::Option<::prost::alloc::string::String>,
6899        #[prost(enumeration = "FlagPermission", optional, tag = "7")]
6900        pub permission: ::core::option::Option<i32>,
6901        #[prost(enumeration = "ValuePickedFrom", optional, tag = "8")]
6902        pub value_picked_from: ::core::option::Option<i32>,
6903        #[prost(enumeration = "FlagStorageBackend", optional, tag = "9")]
6904        pub storage_backend: ::core::option::Option<i32>,
6905        #[prost(enumeration = "FlagType", optional, tag = "10")]
6906        pub r#type: ::core::option::Option<i32>,
6907    }
6908    /// Whether a flag can be modified at runtime.
6909    #[derive(
6910        Clone,
6911        Copy,
6912        Debug,
6913        PartialEq,
6914        Eq,
6915        Hash,
6916        PartialOrd,
6917        Ord,
6918        ::prost::Enumeration
6919    )]
6920    #[repr(i32)]
6921    pub enum FlagPermission {
6922        Unspecified = 0,
6923        ReadOnly = 1,
6924        ReadWrite = 2,
6925    }
6926    impl FlagPermission {
6927        /// String value of the enum field names used in the ProtoBuf definition.
6928        ///
6929        /// The values are not transformed in any way and thus are considered stable
6930        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6931        pub fn as_str_name(&self) -> &'static str {
6932            match self {
6933                Self::Unspecified => "FLAG_PERMISSION_UNSPECIFIED",
6934                Self::ReadOnly => "FLAG_PERMISSION_READ_ONLY",
6935                Self::ReadWrite => "FLAG_PERMISSION_READ_WRITE",
6936            }
6937        }
6938        /// Creates an enum from field names used in the ProtoBuf definition.
6939        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6940            match value {
6941                "FLAG_PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
6942                "FLAG_PERMISSION_READ_ONLY" => Some(Self::ReadOnly),
6943                "FLAG_PERMISSION_READ_WRITE" => Some(Self::ReadWrite),
6944                _ => None,
6945            }
6946        }
6947    }
6948    /// The source of the current flag value.
6949    #[derive(
6950        Clone,
6951        Copy,
6952        Debug,
6953        PartialEq,
6954        Eq,
6955        Hash,
6956        PartialOrd,
6957        Ord,
6958        ::prost::Enumeration
6959    )]
6960    #[repr(i32)]
6961    pub enum ValuePickedFrom {
6962        Unspecified = 0,
6963        /// The value is the build-time default.
6964        Default = 1,
6965        /// The value comes from a server-side override.
6966        Server = 2,
6967        /// The value comes from a local override on the device.
6968        Local = 3,
6969    }
6970    impl ValuePickedFrom {
6971        /// String value of the enum field names used in the ProtoBuf definition.
6972        ///
6973        /// The values are not transformed in any way and thus are considered stable
6974        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6975        pub fn as_str_name(&self) -> &'static str {
6976            match self {
6977                Self::Unspecified => "VALUE_PICKED_FROM_UNSPECIFIED",
6978                Self::Default => "VALUE_PICKED_FROM_DEFAULT",
6979                Self::Server => "VALUE_PICKED_FROM_SERVER",
6980                Self::Local => "VALUE_PICKED_FROM_LOCAL",
6981            }
6982        }
6983        /// Creates an enum from field names used in the ProtoBuf definition.
6984        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6985            match value {
6986                "VALUE_PICKED_FROM_UNSPECIFIED" => Some(Self::Unspecified),
6987                "VALUE_PICKED_FROM_DEFAULT" => Some(Self::Default),
6988                "VALUE_PICKED_FROM_SERVER" => Some(Self::Server),
6989                "VALUE_PICKED_FROM_LOCAL" => Some(Self::Local),
6990                _ => None,
6991            }
6992        }
6993    }
6994    /// The underlying storage mechanism for the flag.
6995    #[derive(
6996        Clone,
6997        Copy,
6998        Debug,
6999        PartialEq,
7000        Eq,
7001        Hash,
7002        PartialOrd,
7003        Ord,
7004        ::prost::Enumeration
7005    )]
7006    #[repr(i32)]
7007    pub enum FlagStorageBackend {
7008        Unspecified = 0,
7009        None = 1,
7010        Aconfigd = 2,
7011        DeviceConfig = 3,
7012    }
7013    impl FlagStorageBackend {
7014        /// String value of the enum field names used in the ProtoBuf definition.
7015        ///
7016        /// The values are not transformed in any way and thus are considered stable
7017        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7018        pub fn as_str_name(&self) -> &'static str {
7019            match self {
7020                Self::Unspecified => "FLAG_STORAGE_BACKEND_UNSPECIFIED",
7021                Self::None => "FLAG_STORAGE_BACKEND_NONE",
7022                Self::Aconfigd => "FLAG_STORAGE_BACKEND_ACONFIGD",
7023                Self::DeviceConfig => "FLAG_STORAGE_BACKEND_DEVICE_CONFIG",
7024            }
7025        }
7026        /// Creates an enum from field names used in the ProtoBuf definition.
7027        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7028            match value {
7029                "FLAG_STORAGE_BACKEND_UNSPECIFIED" => Some(Self::Unspecified),
7030                "FLAG_STORAGE_BACKEND_NONE" => Some(Self::None),
7031                "FLAG_STORAGE_BACKEND_ACONFIGD" => Some(Self::Aconfigd),
7032                "FLAG_STORAGE_BACKEND_DEVICE_CONFIG" => Some(Self::DeviceConfig),
7033                _ => None,
7034            }
7035        }
7036    }
7037    /// The value type of the flag.
7038    #[derive(
7039        Clone,
7040        Copy,
7041        Debug,
7042        PartialEq,
7043        Eq,
7044        Hash,
7045        PartialOrd,
7046        Ord,
7047        ::prost::Enumeration
7048    )]
7049    #[repr(i32)]
7050    pub enum FlagType {
7051        /// Flag type unspecified. This flag type means the flag is an old version
7052        /// boolean flag or unknown newer type.
7053        Unspecified = 0,
7054        Boolean = 1,
7055        Integer = 2,
7056    }
7057    impl FlagType {
7058        /// String value of the enum field names used in the ProtoBuf definition.
7059        ///
7060        /// The values are not transformed in any way and thus are considered stable
7061        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7062        pub fn as_str_name(&self) -> &'static str {
7063            match self {
7064                Self::Unspecified => "FLAG_TYPE_UNSPECIFIED",
7065                Self::Boolean => "FLAG_TYPE_BOOLEAN",
7066                Self::Integer => "FLAG_TYPE_INTEGER",
7067            }
7068        }
7069        /// Creates an enum from field names used in the ProtoBuf definition.
7070        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7071            match value {
7072                "FLAG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
7073                "FLAG_TYPE_BOOLEAN" => Some(Self::Boolean),
7074                "FLAG_TYPE_INTEGER" => Some(Self::Integer),
7075                _ => None,
7076            }
7077        }
7078    }
7079}
7080#[derive(Clone, PartialEq, ::prost::Message)]
7081pub struct AndroidGameInterventionList {
7082    #[prost(message, repeated, tag = "1")]
7083    pub game_packages: ::prost::alloc::vec::Vec<
7084        android_game_intervention_list::GamePackageInfo,
7085    >,
7086    /// True when at least one error occurred when parsing
7087    /// game_mode_intervention.list
7088    #[prost(bool, optional, tag = "2")]
7089    pub parse_error: ::core::option::Option<bool>,
7090    /// Failed to open / read game_mode_intervention.list
7091    #[prost(bool, optional, tag = "3")]
7092    pub read_error: ::core::option::Option<bool>,
7093}
7094/// Nested message and enum types in `AndroidGameInterventionList`.
7095pub mod android_game_intervention_list {
7096    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7097    pub struct GameModeInfo {
7098        #[prost(uint32, optional, tag = "1")]
7099        pub mode: ::core::option::Option<u32>,
7100        #[prost(bool, optional, tag = "2")]
7101        pub use_angle: ::core::option::Option<bool>,
7102        #[prost(float, optional, tag = "3")]
7103        pub resolution_downscale: ::core::option::Option<f32>,
7104        #[prost(float, optional, tag = "4")]
7105        pub fps: ::core::option::Option<f32>,
7106    }
7107    #[derive(Clone, PartialEq, ::prost::Message)]
7108    pub struct GamePackageInfo {
7109        #[prost(string, optional, tag = "1")]
7110        pub name: ::core::option::Option<::prost::alloc::string::String>,
7111        #[prost(uint64, optional, tag = "2")]
7112        pub uid: ::core::option::Option<u64>,
7113        #[prost(uint32, optional, tag = "3")]
7114        pub current_mode: ::core::option::Option<u32>,
7115        #[prost(message, repeated, tag = "4")]
7116        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
7117    }
7118}
7119#[derive(Clone, PartialEq, ::prost::Message)]
7120pub struct AndroidLogPacket {
7121    #[prost(message, repeated, tag = "1")]
7122    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
7123    #[prost(message, optional, tag = "2")]
7124    pub stats: ::core::option::Option<android_log_packet::Stats>,
7125}
7126/// Nested message and enum types in `AndroidLogPacket`.
7127pub mod android_log_packet {
7128    #[derive(Clone, PartialEq, ::prost::Message)]
7129    pub struct LogEvent {
7130        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
7131        #[prost(enumeration = "super::AndroidLogId", optional, tag = "1")]
7132        pub log_id: ::core::option::Option<i32>,
7133        /// PID (TGID), TID and UID of the task that emitted the event.
7134        #[prost(int32, optional, tag = "2")]
7135        pub pid: ::core::option::Option<i32>,
7136        #[prost(int32, optional, tag = "3")]
7137        pub tid: ::core::option::Option<i32>,
7138        #[prost(int32, optional, tag = "4")]
7139        pub uid: ::core::option::Option<i32>,
7140        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
7141        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
7142        /// processor will take care of realigning clocks using the ClockSnapshot(s).
7143        #[prost(uint64, optional, tag = "5")]
7144        pub timestamp: ::core::option::Option<u64>,
7145        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
7146        /// the second column of /system/etc/event-log-tags. For all other events,
7147        /// |tag| is the app-specified argument passed to __android_log_write().
7148        #[prost(string, optional, tag = "6")]
7149        pub tag: ::core::option::Option<::prost::alloc::string::String>,
7150        /// Empty when log_id == LID_EVENTS.
7151        #[prost(enumeration = "super::AndroidLogPriority", optional, tag = "7")]
7152        pub prio: ::core::option::Option<i32>,
7153        /// Empty when log_id == LID_EVENTS.
7154        #[prost(string, optional, tag = "8")]
7155        pub message: ::core::option::Option<::prost::alloc::string::String>,
7156        /// Only populated when log_id == LID_EVENTS.
7157        #[prost(message, repeated, tag = "9")]
7158        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
7159    }
7160    /// Nested message and enum types in `LogEvent`.
7161    pub mod log_event {
7162        #[derive(Clone, PartialEq, ::prost::Message)]
7163        pub struct Arg {
7164            #[prost(string, optional, tag = "1")]
7165            pub name: ::core::option::Option<::prost::alloc::string::String>,
7166            #[prost(oneof = "arg::Value", tags = "2, 3, 4")]
7167            pub value: ::core::option::Option<arg::Value>,
7168        }
7169        /// Nested message and enum types in `Arg`.
7170        pub mod arg {
7171            #[derive(Clone, PartialEq, ::prost::Oneof)]
7172            pub enum Value {
7173                #[prost(int64, tag = "2")]
7174                IntValue(i64),
7175                #[prost(float, tag = "3")]
7176                FloatValue(f32),
7177                #[prost(string, tag = "4")]
7178                StringValue(::prost::alloc::string::String),
7179            }
7180        }
7181    }
7182    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
7183    /// absolute counters since the beginning of the lifetime of the tracing
7184    /// session and NOT relative to the previous Stats snapshot).
7185    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7186    pub struct Stats {
7187        /// Total number of log events seen, including errors and skipped entries
7188        /// (num of events stored in the trace = total - failed - skipped).
7189        #[prost(uint64, optional, tag = "1")]
7190        pub num_total: ::core::option::Option<u64>,
7191        /// Parser failures.
7192        #[prost(uint64, optional, tag = "2")]
7193        pub num_failed: ::core::option::Option<u64>,
7194        /// Messages skipped due to filters.
7195        #[prost(uint64, optional, tag = "3")]
7196        pub num_skipped: ::core::option::Option<u64>,
7197    }
7198}
7199#[derive(Clone, PartialEq, ::prost::Message)]
7200pub struct AndroidSystemProperty {
7201    #[prost(message, repeated, tag = "1")]
7202    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
7203}
7204/// Nested message and enum types in `AndroidSystemProperty`.
7205pub mod android_system_property {
7206    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7207    pub struct PropertyValue {
7208        #[prost(string, optional, tag = "1")]
7209        pub name: ::core::option::Option<::prost::alloc::string::String>,
7210        #[prost(string, optional, tag = "2")]
7211        pub value: ::core::option::Option<::prost::alloc::string::String>,
7212    }
7213}
7214#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7215pub struct CpuPerUidData {
7216    /// Number of clusters in the device. This will only be filled in the first
7217    /// packet in a sequence.
7218    #[prost(uint32, optional, tag = "1")]
7219    pub cluster_count: ::core::option::Option<u32>,
7220    /// The UIDs for which we have data in this packet.
7221    #[prost(uint32, repeated, tag = "2")]
7222    pub uid: ::prost::alloc::vec::Vec<u32>,
7223    /// List of times for {UID, cluster} tuples. This will be cluster_count
7224    /// times as long as the UID list.
7225    ///
7226    /// Ordered like:
7227    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
7228    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
7229    ///
7230    /// Each value is an absolute count for the first packet in a sequence, and a
7231    /// delta thereafter. UIDs for which all clusters have a zero delta are
7232    /// omitted; a single non-zero value for any cluster for a UID will cause
7233    /// values for all clusters to be recorded.
7234    #[prost(uint64, repeated, tag = "3")]
7235    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
7236}
7237/// Generated by Android's SurfaceFlinger.
7238#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7239pub struct GraphicsFrameEvent {
7240    #[prost(message, optional, tag = "1")]
7241    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
7242}
7243/// Nested message and enum types in `GraphicsFrameEvent`.
7244pub mod graphics_frame_event {
7245    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7246    pub struct BufferEvent {
7247        #[prost(uint32, optional, tag = "1")]
7248        pub frame_number: ::core::option::Option<u32>,
7249        #[prost(enumeration = "BufferEventType", optional, tag = "2")]
7250        pub r#type: ::core::option::Option<i32>,
7251        #[prost(string, optional, tag = "3")]
7252        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
7253        /// If no duration is set, the event is an instant event.
7254        #[prost(uint64, optional, tag = "4")]
7255        pub duration_ns: ::core::option::Option<u64>,
7256        /// Unique buffer identifier.
7257        #[prost(uint32, optional, tag = "5")]
7258        pub buffer_id: ::core::option::Option<u32>,
7259    }
7260    #[derive(
7261        Clone,
7262        Copy,
7263        Debug,
7264        PartialEq,
7265        Eq,
7266        Hash,
7267        PartialOrd,
7268        Ord,
7269        ::prost::Enumeration
7270    )]
7271    #[repr(i32)]
7272    pub enum BufferEventType {
7273        Unspecified = 0,
7274        Dequeue = 1,
7275        Queue = 2,
7276        Post = 3,
7277        AcquireFence = 4,
7278        Latch = 5,
7279        /// HWC will compose this buffer
7280        HwcCompositionQueued = 6,
7281        /// renderEngine composition
7282        FallbackComposition = 7,
7283        PresentFence = 8,
7284        ReleaseFence = 9,
7285        Modify = 10,
7286        Detach = 11,
7287        Attach = 12,
7288        Cancel = 13,
7289    }
7290    impl BufferEventType {
7291        /// String value of the enum field names used in the ProtoBuf definition.
7292        ///
7293        /// The values are not transformed in any way and thus are considered stable
7294        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7295        pub fn as_str_name(&self) -> &'static str {
7296            match self {
7297                Self::Unspecified => "UNSPECIFIED",
7298                Self::Dequeue => "DEQUEUE",
7299                Self::Queue => "QUEUE",
7300                Self::Post => "POST",
7301                Self::AcquireFence => "ACQUIRE_FENCE",
7302                Self::Latch => "LATCH",
7303                Self::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
7304                Self::FallbackComposition => "FALLBACK_COMPOSITION",
7305                Self::PresentFence => "PRESENT_FENCE",
7306                Self::ReleaseFence => "RELEASE_FENCE",
7307                Self::Modify => "MODIFY",
7308                Self::Detach => "DETACH",
7309                Self::Attach => "ATTACH",
7310                Self::Cancel => "CANCEL",
7311            }
7312        }
7313        /// Creates an enum from field names used in the ProtoBuf definition.
7314        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7315            match value {
7316                "UNSPECIFIED" => Some(Self::Unspecified),
7317                "DEQUEUE" => Some(Self::Dequeue),
7318                "QUEUE" => Some(Self::Queue),
7319                "POST" => Some(Self::Post),
7320                "ACQUIRE_FENCE" => Some(Self::AcquireFence),
7321                "LATCH" => Some(Self::Latch),
7322                "HWC_COMPOSITION_QUEUED" => Some(Self::HwcCompositionQueued),
7323                "FALLBACK_COMPOSITION" => Some(Self::FallbackComposition),
7324                "PRESENT_FENCE" => Some(Self::PresentFence),
7325                "RELEASE_FENCE" => Some(Self::ReleaseFence),
7326                "MODIFY" => Some(Self::Modify),
7327                "DETACH" => Some(Self::Detach),
7328                "ATTACH" => Some(Self::Attach),
7329                "CANCEL" => Some(Self::Cancel),
7330                _ => None,
7331            }
7332        }
7333    }
7334}
7335#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7336pub struct InitialDisplayState {
7337    /// Same values as android.view.Display.STATE_*
7338    #[prost(int32, optional, tag = "1")]
7339    pub display_state: ::core::option::Option<i32>,
7340    #[prost(double, optional, tag = "2")]
7341    pub brightness: ::core::option::Option<f64>,
7342}
7343#[derive(Clone, PartialEq, ::prost::Message)]
7344pub struct KernelWakelockData {
7345    /// This is only emitted when we encounter new wakelocks.
7346    #[prost(message, repeated, tag = "1")]
7347    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
7348    /// Interning id.
7349    #[prost(uint32, repeated, tag = "2")]
7350    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
7351    /// If we interned the wakelock name in this packet, this is the total time
7352    /// the wakelock has been held.
7353    /// If not, it's a delta from the last time we saw it.
7354    #[prost(uint64, repeated, tag = "3")]
7355    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
7356    #[prost(uint64, optional, tag = "4")]
7357    pub error_flags: ::core::option::Option<u64>,
7358}
7359/// Nested message and enum types in `KernelWakelockData`.
7360pub mod kernel_wakelock_data {
7361    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7362    pub struct Wakelock {
7363        /// Interning id.
7364        #[prost(uint32, optional, tag = "1")]
7365        pub wakelock_id: ::core::option::Option<u32>,
7366        /// Name of the wakelock.
7367        #[prost(string, optional, tag = "2")]
7368        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
7369        /// Type of the wakelock. We record data about both true kernel wakelocks
7370        /// and "native" wakelocks which are taken in userspace but are more
7371        /// conceptually similar to kernel wakelocks than normal userspace ones.
7372        #[prost(enumeration = "wakelock::Type", optional, tag = "3")]
7373        pub wakelock_type: ::core::option::Option<i32>,
7374    }
7375    /// Nested message and enum types in `Wakelock`.
7376    pub mod wakelock {
7377        #[derive(
7378            Clone,
7379            Copy,
7380            Debug,
7381            PartialEq,
7382            Eq,
7383            Hash,
7384            PartialOrd,
7385            Ord,
7386            ::prost::Enumeration
7387        )]
7388        #[repr(i32)]
7389        pub enum Type {
7390            WakelockTypeUnknown = 0,
7391            WakelockTypeKernel = 1,
7392            WakelockTypeNative = 2,
7393        }
7394        impl Type {
7395            /// String value of the enum field names used in the ProtoBuf definition.
7396            ///
7397            /// The values are not transformed in any way and thus are considered stable
7398            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7399            pub fn as_str_name(&self) -> &'static str {
7400                match self {
7401                    Self::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
7402                    Self::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
7403                    Self::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
7404                }
7405            }
7406            /// Creates an enum from field names used in the ProtoBuf definition.
7407            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7408                match value {
7409                    "WAKELOCK_TYPE_UNKNOWN" => Some(Self::WakelockTypeUnknown),
7410                    "WAKELOCK_TYPE_KERNEL" => Some(Self::WakelockTypeKernel),
7411                    "WAKELOCK_TYPE_NATIVE" => Some(Self::WakelockTypeNative),
7412                    _ => None,
7413                }
7414            }
7415        }
7416    }
7417}
7418#[derive(Clone, PartialEq, ::prost::Message)]
7419pub struct PackagesList {
7420    #[prost(message, repeated, tag = "1")]
7421    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
7422    /// At least one error occurred parsing the packages.list.
7423    #[prost(bool, optional, tag = "2")]
7424    pub parse_error: ::core::option::Option<bool>,
7425    /// Failed to open / read packages.list.
7426    #[prost(bool, optional, tag = "3")]
7427    pub read_error: ::core::option::Option<bool>,
7428}
7429/// Nested message and enum types in `PackagesList`.
7430pub mod packages_list {
7431    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7432    pub struct PackageInfo {
7433        #[prost(string, optional, tag = "1")]
7434        pub name: ::core::option::Option<::prost::alloc::string::String>,
7435        #[prost(uint64, optional, tag = "2")]
7436        pub uid: ::core::option::Option<u64>,
7437        #[prost(bool, optional, tag = "3")]
7438        pub debuggable: ::core::option::Option<bool>,
7439        #[prost(bool, optional, tag = "4")]
7440        pub profileable_from_shell: ::core::option::Option<bool>,
7441        #[prost(int64, optional, tag = "5")]
7442        pub version_code: ::core::option::Option<i64>,
7443        #[prost(bool, optional, tag = "6")]
7444        pub profileable: ::core::option::Option<bool>,
7445    }
7446}
7447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7448pub struct PixelModemEvents {
7449    /// Pigweed-format dehydrated events.
7450    #[prost(bytes = "vec", repeated, tag = "1")]
7451    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
7452    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
7453    /// timestamp is the absolute timestamp of the first event. Subsequent
7454    /// timestamps are deltas from the previous timestamp.
7455    /// The nth entry from `events` gets the nth entry here.
7456    #[prost(uint64, repeated, packed = "false", tag = "2")]
7457    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
7458}
7459/// NB: this is not emitted in the trace but can be prepended later.
7460#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7461pub struct PixelModemTokenDatabase {
7462    /// Pigweed-format database to allow event rehydration.
7463    #[prost(bytes = "vec", optional, tag = "1")]
7464    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7465}
7466/// Injected into TracePacket by perfetto post-reboot recovery to record
7467/// recovered trace metadata.
7468#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7469pub struct RecoveredTraceInfo {
7470    #[prost(enumeration = "recovered_trace_info::Reason", optional, tag = "1")]
7471    pub reason: ::core::option::Option<i32>,
7472    /// Raw trace file size (in bytes) on disk prior to post-reboot recovery.
7473    #[prost(uint64, optional, tag = "2")]
7474    pub original_file_size_bytes: ::core::option::Option<u64>,
7475    /// Amount of trailing corrupted/incomplete bytes truncated during recovery.
7476    #[prost(uint64, optional, tag = "3")]
7477    pub bytes_truncated: ::core::option::Option<u64>,
7478}
7479/// Nested message and enum types in `RecoveredTraceInfo`.
7480pub mod recovered_trace_info {
7481    #[derive(
7482        Clone,
7483        Copy,
7484        Debug,
7485        PartialEq,
7486        Eq,
7487        Hash,
7488        PartialOrd,
7489        Ord,
7490        ::prost::Enumeration
7491    )]
7492    #[repr(i32)]
7493    pub enum Reason {
7494        Unspecified = 0,
7495        UnexpectedReboot = 1,
7496    }
7497    impl Reason {
7498        /// String value of the enum field names used in the ProtoBuf definition.
7499        ///
7500        /// The values are not transformed in any way and thus are considered stable
7501        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7502        pub fn as_str_name(&self) -> &'static str {
7503            match self {
7504                Self::Unspecified => "REASON_UNSPECIFIED",
7505                Self::UnexpectedReboot => "REASON_UNEXPECTED_REBOOT",
7506            }
7507        }
7508        /// Creates an enum from field names used in the ProtoBuf definition.
7509        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7510            match value {
7511                "REASON_UNSPECIFIED" => Some(Self::Unspecified),
7512                "REASON_UNEXPECTED_REBOOT" => Some(Self::UnexpectedReboot),
7513                _ => None,
7514            }
7515        }
7516    }
7517}
7518#[derive(Clone, PartialEq, ::prost::Message)]
7519pub struct AndroidUserList {
7520    #[prost(message, repeated, tag = "1")]
7521    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7522    /// Error number
7523    #[prost(int32, optional, tag = "2")]
7524    pub error: ::core::option::Option<i32>,
7525}
7526/// Nested message and enum types in `AndroidUserList`.
7527pub mod android_user_list {
7528    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7529    pub struct UserInfo {
7530        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7531        #[prost(string, optional, tag = "1")]
7532        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7533        #[prost(int32, optional, tag = "2")]
7534        pub uid: ::core::option::Option<i32>,
7535    }
7536}
7537/// This message is not intended to be written by the chrome on the device.
7538/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7539/// part of the trace that's written by the telemetry tracing agent).
7540#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7541pub struct ChromeBenchmarkMetadata {
7542    /// Time when the benchmark execution started (host unixtime in microseconds).
7543    #[prost(int64, optional, tag = "1")]
7544    pub benchmark_start_time_us: ::core::option::Option<i64>,
7545    /// Time when this particular story was run (host unixtime in microseconds).
7546    #[prost(int64, optional, tag = "2")]
7547    pub story_run_time_us: ::core::option::Option<i64>,
7548    /// Name of benchmark.
7549    #[prost(string, optional, tag = "3")]
7550    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7551    /// Description of benchmark.
7552    #[prost(string, optional, tag = "4")]
7553    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7554    /// Optional label.
7555    #[prost(string, optional, tag = "5")]
7556    pub label: ::core::option::Option<::prost::alloc::string::String>,
7557    /// Name of story.
7558    #[prost(string, optional, tag = "6")]
7559    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7560    /// List of story tags.
7561    #[prost(string, repeated, tag = "7")]
7562    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7563    /// Index of the story run (>0 if the same story was run several times).
7564    #[prost(int32, optional, tag = "8")]
7565    pub story_run_index: ::core::option::Option<i32>,
7566    /// Whether this run failed.
7567    #[prost(bool, optional, tag = "9")]
7568    pub had_failures: ::core::option::Option<bool>,
7569}
7570/// Metadata for chrome traces.
7571#[derive(Clone, PartialEq, ::prost::Message)]
7572pub struct ChromeMetadataPacket {
7573    #[prost(message, optional, tag = "1")]
7574    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7575    /// Version code of Chrome used by Android's Play Store. This field is only set
7576    /// on Android.
7577    #[prost(int32, optional, tag = "2")]
7578    pub chrome_version_code: ::core::option::Option<i32>,
7579    /// Comma separated list of enabled categories for tracing. The list of
7580    /// possible category strings are listed in code
7581    /// base/trace_event/builtin_categories.h.
7582    #[prost(string, optional, tag = "3")]
7583    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7584    /// List of Finch study/groups that apply to this trace.
7585    #[prost(message, repeated, tag = "4")]
7586    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7587    /// The package name of the app which is being traced. This field is only set
7588    /// on Android.
7589    #[prost(string, optional, tag = "5")]
7590    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
7591    /// A version number string for Chrome. This matches
7592    /// SystemProfileProto::app_version.
7593    #[prost(string, optional, tag = "6")]
7594    pub app_version: ::core::option::Option<::prost::alloc::string::String>,
7595    /// This matches SystemProfileProto::channel.
7596    #[prost(uint32, optional, tag = "7")]
7597    pub channel: ::core::option::Option<u32>,
7598    /// The user's operating system. This matches SystemProfileProto::OS::name.
7599    #[prost(string, optional, tag = "8")]
7600    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
7601}
7602/// Nested message and enum types in `ChromeMetadataPacket`.
7603pub mod chrome_metadata_packet {
7604    /// Finch name and group based on the ActiveGroupId.
7605    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7606    pub struct FinchHash {
7607        #[prost(uint32, optional, tag = "1")]
7608        pub name: ::core::option::Option<u32>,
7609        #[prost(uint32, optional, tag = "2")]
7610        pub group: ::core::option::Option<u32>,
7611    }
7612}
7613/// Metadata related to background tracing scenarios, states and triggers.
7614#[derive(Clone, PartialEq, ::prost::Message)]
7615pub struct BackgroundTracingMetadata {
7616    /// Specifies the rule that caused the trace to be uploaded.
7617    #[prost(message, optional, tag = "1")]
7618    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7619    /// List of all active triggers in current session, when trace was triggered.
7620    #[prost(message, repeated, tag = "2")]
7621    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7622    /// Hash of the scenario name.
7623    #[prost(fixed32, optional, tag = "3")]
7624    pub scenario_name_hash: ::core::option::Option<u32>,
7625}
7626/// Nested message and enum types in `BackgroundTracingMetadata`.
7627pub mod background_tracing_metadata {
7628    /// Information about a trigger rule defined in the experiment config.
7629    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7630    pub struct TriggerRule {
7631        #[prost(enumeration = "trigger_rule::TriggerType", optional, tag = "1")]
7632        pub trigger_type: ::core::option::Option<i32>,
7633        #[prost(message, optional, tag = "2")]
7634        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7635        #[prost(message, optional, tag = "3")]
7636        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7637        /// Hash of the rule name.
7638        #[prost(fixed32, optional, tag = "4")]
7639        pub name_hash: ::core::option::Option<u32>,
7640    }
7641    /// Nested message and enum types in `TriggerRule`.
7642    pub mod trigger_rule {
7643        /// Configuration of histogram trigger.
7644        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7645        pub struct HistogramRule {
7646            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7647            #[prost(fixed64, optional, tag = "1")]
7648            pub histogram_name_hash: ::core::option::Option<u64>,
7649            /// Range of values of the histogram that activates trigger.
7650            #[prost(int64, optional, tag = "2")]
7651            pub histogram_min_trigger: ::core::option::Option<i64>,
7652            #[prost(int64, optional, tag = "3")]
7653            pub histogram_max_trigger: ::core::option::Option<i64>,
7654        }
7655        /// Configuration of named trigger.
7656        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7657        pub struct NamedRule {
7658            #[prost(enumeration = "named_rule::EventType", optional, tag = "1")]
7659            pub event_type: ::core::option::Option<i32>,
7660            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7661            /// content-trigger that actually fired.
7662            #[prost(fixed64, optional, tag = "2")]
7663            pub content_trigger_name_hash: ::core::option::Option<u64>,
7664        }
7665        /// Nested message and enum types in `NamedRule`.
7666        pub mod named_rule {
7667            #[derive(
7668                Clone,
7669                Copy,
7670                Debug,
7671                PartialEq,
7672                Eq,
7673                Hash,
7674                PartialOrd,
7675                Ord,
7676                ::prost::Enumeration
7677            )]
7678            #[repr(i32)]
7679            pub enum EventType {
7680                Unspecified = 0,
7681                SessionRestore = 1,
7682                Navigation = 2,
7683                Startup = 3,
7684                ReachedCode = 4,
7685                ContentTrigger = 5,
7686                TestRule = 1000,
7687            }
7688            impl EventType {
7689                /// String value of the enum field names used in the ProtoBuf definition.
7690                ///
7691                /// The values are not transformed in any way and thus are considered stable
7692                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7693                pub fn as_str_name(&self) -> &'static str {
7694                    match self {
7695                        Self::Unspecified => "UNSPECIFIED",
7696                        Self::SessionRestore => "SESSION_RESTORE",
7697                        Self::Navigation => "NAVIGATION",
7698                        Self::Startup => "STARTUP",
7699                        Self::ReachedCode => "REACHED_CODE",
7700                        Self::ContentTrigger => "CONTENT_TRIGGER",
7701                        Self::TestRule => "TEST_RULE",
7702                    }
7703                }
7704                /// Creates an enum from field names used in the ProtoBuf definition.
7705                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7706                    match value {
7707                        "UNSPECIFIED" => Some(Self::Unspecified),
7708                        "SESSION_RESTORE" => Some(Self::SessionRestore),
7709                        "NAVIGATION" => Some(Self::Navigation),
7710                        "STARTUP" => Some(Self::Startup),
7711                        "REACHED_CODE" => Some(Self::ReachedCode),
7712                        "CONTENT_TRIGGER" => Some(Self::ContentTrigger),
7713                        "TEST_RULE" => Some(Self::TestRule),
7714                        _ => None,
7715                    }
7716                }
7717            }
7718        }
7719        #[derive(
7720            Clone,
7721            Copy,
7722            Debug,
7723            PartialEq,
7724            Eq,
7725            Hash,
7726            PartialOrd,
7727            Ord,
7728            ::prost::Enumeration
7729        )]
7730        #[repr(i32)]
7731        pub enum TriggerType {
7732            TriggerUnspecified = 0,
7733            /// Traces are triggered by specific range of values of an UMA histogram.
7734            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7735            /// Traces are triggered by specific named events in chromium codebase,
7736            /// like "second-update-failure".
7737            MonitorAndDumpWhenTriggerNamed = 2,
7738        }
7739        impl TriggerType {
7740            /// String value of the enum field names used in the ProtoBuf definition.
7741            ///
7742            /// The values are not transformed in any way and thus are considered stable
7743            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7744            pub fn as_str_name(&self) -> &'static str {
7745                match self {
7746                    Self::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7747                    Self::MonitorAndDumpWhenSpecificHistogramAndValue => {
7748                        "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE"
7749                    }
7750                    Self::MonitorAndDumpWhenTriggerNamed => {
7751                        "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED"
7752                    }
7753                }
7754            }
7755            /// Creates an enum from field names used in the ProtoBuf definition.
7756            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7757                match value {
7758                    "TRIGGER_UNSPECIFIED" => Some(Self::TriggerUnspecified),
7759                    "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE" => {
7760                        Some(Self::MonitorAndDumpWhenSpecificHistogramAndValue)
7761                    }
7762                    "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED" => {
7763                        Some(Self::MonitorAndDumpWhenTriggerNamed)
7764                    }
7765                    _ => None,
7766                }
7767            }
7768        }
7769    }
7770}
7771#[derive(Clone, PartialEq, ::prost::Message)]
7772pub struct ChromeTracedValue {
7773    #[prost(enumeration = "chrome_traced_value::NestedType", optional, tag = "1")]
7774    pub nested_type: ::core::option::Option<i32>,
7775    #[prost(string, repeated, tag = "2")]
7776    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7777    #[prost(message, repeated, tag = "3")]
7778    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7779    #[prost(message, repeated, tag = "4")]
7780    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7781    #[prost(int32, optional, tag = "5")]
7782    pub int_value: ::core::option::Option<i32>,
7783    #[prost(double, optional, tag = "6")]
7784    pub double_value: ::core::option::Option<f64>,
7785    #[prost(bool, optional, tag = "7")]
7786    pub bool_value: ::core::option::Option<bool>,
7787    #[prost(string, optional, tag = "8")]
7788    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7789}
7790/// Nested message and enum types in `ChromeTracedValue`.
7791pub mod chrome_traced_value {
7792    #[derive(
7793        Clone,
7794        Copy,
7795        Debug,
7796        PartialEq,
7797        Eq,
7798        Hash,
7799        PartialOrd,
7800        Ord,
7801        ::prost::Enumeration
7802    )]
7803    #[repr(i32)]
7804    pub enum NestedType {
7805        Dict = 0,
7806        Array = 1,
7807    }
7808    impl NestedType {
7809        /// String value of the enum field names used in the ProtoBuf definition.
7810        ///
7811        /// The values are not transformed in any way and thus are considered stable
7812        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7813        pub fn as_str_name(&self) -> &'static str {
7814            match self {
7815                Self::Dict => "DICT",
7816                Self::Array => "ARRAY",
7817            }
7818        }
7819        /// Creates an enum from field names used in the ProtoBuf definition.
7820        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7821            match value {
7822                "DICT" => Some(Self::Dict),
7823                "ARRAY" => Some(Self::Array),
7824                _ => None,
7825            }
7826        }
7827    }
7828}
7829#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7830pub struct ChromeStringTableEntry {
7831    #[prost(string, optional, tag = "1")]
7832    pub value: ::core::option::Option<::prost::alloc::string::String>,
7833    #[prost(int32, optional, tag = "2")]
7834    pub index: ::core::option::Option<i32>,
7835}
7836/// Deprecated, use TrackEvent protos instead.
7837#[derive(Clone, PartialEq, ::prost::Message)]
7838pub struct ChromeTraceEvent {
7839    #[prost(string, optional, tag = "1")]
7840    pub name: ::core::option::Option<::prost::alloc::string::String>,
7841    #[prost(int64, optional, tag = "2")]
7842    pub timestamp: ::core::option::Option<i64>,
7843    #[prost(int32, optional, tag = "3")]
7844    pub phase: ::core::option::Option<i32>,
7845    #[prost(int32, optional, tag = "4")]
7846    pub thread_id: ::core::option::Option<i32>,
7847    #[prost(int64, optional, tag = "5")]
7848    pub duration: ::core::option::Option<i64>,
7849    #[prost(int64, optional, tag = "6")]
7850    pub thread_duration: ::core::option::Option<i64>,
7851    #[prost(string, optional, tag = "7")]
7852    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7853    #[prost(uint64, optional, tag = "8")]
7854    pub id: ::core::option::Option<u64>,
7855    #[prost(uint32, optional, tag = "9")]
7856    pub flags: ::core::option::Option<u32>,
7857    #[prost(string, optional, tag = "10")]
7858    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7859    #[prost(int32, optional, tag = "11")]
7860    pub process_id: ::core::option::Option<i32>,
7861    #[prost(int64, optional, tag = "12")]
7862    pub thread_timestamp: ::core::option::Option<i64>,
7863    #[prost(uint64, optional, tag = "13")]
7864    pub bind_id: ::core::option::Option<u64>,
7865    #[prost(message, repeated, tag = "14")]
7866    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7867    /// Takes precedence over respectively |name| and
7868    /// |category_group_name_index| if set,
7869    /// and are indices into |string_table|.
7870    #[prost(uint32, optional, tag = "15")]
7871    pub name_index: ::core::option::Option<u32>,
7872    #[prost(uint32, optional, tag = "16")]
7873    pub category_group_name_index: ::core::option::Option<u32>,
7874}
7875/// Nested message and enum types in `ChromeTraceEvent`.
7876pub mod chrome_trace_event {
7877    #[derive(Clone, PartialEq, ::prost::Message)]
7878    pub struct Arg {
7879        #[prost(string, optional, tag = "1")]
7880        pub name: ::core::option::Option<::prost::alloc::string::String>,
7881        /// Takes precedence over |name| if set,
7882        /// and is an index into |string_table|.
7883        #[prost(uint32, optional, tag = "9")]
7884        pub name_index: ::core::option::Option<u32>,
7885        #[prost(oneof = "arg::Value", tags = "2, 3, 4, 5, 6, 7, 8, 10")]
7886        pub value: ::core::option::Option<arg::Value>,
7887    }
7888    /// Nested message and enum types in `Arg`.
7889    pub mod arg {
7890        #[derive(Clone, PartialEq, ::prost::Oneof)]
7891        pub enum Value {
7892            #[prost(bool, tag = "2")]
7893            BoolValue(bool),
7894            #[prost(uint64, tag = "3")]
7895            UintValue(u64),
7896            #[prost(int64, tag = "4")]
7897            IntValue(i64),
7898            #[prost(double, tag = "5")]
7899            DoubleValue(f64),
7900            #[prost(string, tag = "6")]
7901            StringValue(::prost::alloc::string::String),
7902            /// Pointers are stored in a separate type as the JSON output treats them
7903            /// differently from other uint64 values.
7904            #[prost(uint64, tag = "7")]
7905            PointerValue(u64),
7906            #[prost(string, tag = "8")]
7907            JsonValue(::prost::alloc::string::String),
7908            #[prost(message, tag = "10")]
7909            TracedValue(super::super::ChromeTracedValue),
7910        }
7911    }
7912}
7913#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7914pub struct ChromeMetadata {
7915    #[prost(string, optional, tag = "1")]
7916    pub name: ::core::option::Option<::prost::alloc::string::String>,
7917    #[prost(oneof = "chrome_metadata::Value", tags = "2, 3, 4, 5")]
7918    pub value: ::core::option::Option<chrome_metadata::Value>,
7919}
7920/// Nested message and enum types in `ChromeMetadata`.
7921pub mod chrome_metadata {
7922    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7923    pub enum Value {
7924        #[prost(string, tag = "2")]
7925        StringValue(::prost::alloc::string::String),
7926        #[prost(bool, tag = "3")]
7927        BoolValue(bool),
7928        #[prost(int64, tag = "4")]
7929        IntValue(i64),
7930        #[prost(string, tag = "5")]
7931        JsonValue(::prost::alloc::string::String),
7932    }
7933}
7934/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7935/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7936/// TODO(eseckler): Update these agents to become perfetto producers.
7937#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7938pub struct ChromeLegacyJsonTrace {
7939    #[prost(enumeration = "chrome_legacy_json_trace::TraceType", optional, tag = "1")]
7940    pub r#type: ::core::option::Option<i32>,
7941    #[prost(string, optional, tag = "2")]
7942    pub data: ::core::option::Option<::prost::alloc::string::String>,
7943}
7944/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7945pub mod chrome_legacy_json_trace {
7946    #[derive(
7947        Clone,
7948        Copy,
7949        Debug,
7950        PartialEq,
7951        Eq,
7952        Hash,
7953        PartialOrd,
7954        Ord,
7955        ::prost::Enumeration
7956    )]
7957    #[repr(i32)]
7958    pub enum TraceType {
7959        UserTrace = 0,
7960        /// Deprecated.
7961        SystemTrace = 1,
7962    }
7963    impl TraceType {
7964        /// String value of the enum field names used in the ProtoBuf definition.
7965        ///
7966        /// The values are not transformed in any way and thus are considered stable
7967        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7968        pub fn as_str_name(&self) -> &'static str {
7969            match self {
7970                Self::UserTrace => "USER_TRACE",
7971                Self::SystemTrace => "SYSTEM_TRACE",
7972            }
7973        }
7974        /// Creates an enum from field names used in the ProtoBuf definition.
7975        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7976            match value {
7977                "USER_TRACE" => Some(Self::UserTrace),
7978                "SYSTEM_TRACE" => Some(Self::SystemTrace),
7979                _ => None,
7980            }
7981        }
7982    }
7983}
7984#[derive(Clone, PartialEq, ::prost::Message)]
7985pub struct ChromeEventBundle {
7986    /// Deprecated, use TrackEvent protos instead.
7987    #[deprecated]
7988    #[prost(message, repeated, tag = "1")]
7989    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7990    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7991    /// which contains typed fields.
7992    #[prost(message, repeated, tag = "2")]
7993    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7994    /// ftrace output from CrOS and Cast system tracing agents.
7995    /// TODO(eseckler): Replace system traces with native perfetto service.
7996    #[prost(string, repeated, tag = "4")]
7997    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7998    #[prost(message, repeated, tag = "5")]
7999    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
8000    /// Contents of a string table that's valid for
8001    /// the whole ChromeEventBundle entry.
8002    #[deprecated]
8003    #[prost(message, repeated, tag = "3")]
8004    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
8005}
8006/// Information about a specific trigger during a background tracing scenario
8007/// Associated packet timestamps are useful to delimitate a scenario range in a
8008/// trace. Triggers are also useful for filtering traces.
8009#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8010pub struct ChromeTrigger {
8011    /// Name of the trigger which was received.
8012    #[prost(string, optional, tag = "1")]
8013    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
8014    /// SHA1 hash of the trigger name.
8015    #[prost(fixed32, optional, tag = "2")]
8016    pub trigger_name_hash: ::core::option::Option<u32>,
8017    /// Flow id which should terminate on this trigger.
8018    #[prost(fixed64, optional, tag = "3")]
8019    pub flow_id: ::core::option::Option<u64>,
8020}
8021/// These are the protos for the V8 data source.
8022///
8023/// All events are associated to a V8 isolate instance. There can be multiple
8024/// instances associated to a given thread, although this is rare.
8025///
8026/// Generated code in V8 is allocated in the V8 heap (in a special executeable
8027/// section), this means that code can be garbage collected (when no longer used)
8028/// or can be moved around (e.g. during heap compactation). This means that a
8029/// given callsite might correspond to function `A` at one point in time and to
8030/// function `B` later on.
8031/// In addition V8 code has various levels of optimization, so a function might
8032/// have multiple associated code snippets.
8033///
8034/// V8 does not track code deletion, so we have to indirectly infer it by
8035/// detecting code overlaps, if a newer code creation event overlaps with older
8036/// code we need to asume that the old code was deleted. Code moves are logged,
8037/// and there is an event to track those.
8038///
8039/// Strings used by V8 can have different encodings, instead of coverting to a
8040/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
8041/// "raw" string and do the convestion at trace ingestion time.
8042///
8043/// ATTENTION: There is some overhead in using a message (as opossed to having
8044/// the `oneof encoded_string`` direcly embedded in the message), so use this
8045/// message in places were these extra bytes don't matter that much.
8046/// Next id: 5
8047#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8048pub struct V8String {
8049    #[prost(oneof = "v8_string::EncodedString", tags = "1, 2, 3")]
8050    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
8051}
8052/// Nested message and enum types in `V8String`.
8053pub mod v8_string {
8054    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8055    pub enum EncodedString {
8056        /// ISO/IEC 8859-1:1998 encoding aka latin1
8057        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8058        #[prost(bytes, tag = "1")]
8059        Latin1(::prost::alloc::vec::Vec<u8>),
8060        /// UTF-16 Little Endian Encoding
8061        #[prost(bytes, tag = "2")]
8062        Utf16Le(::prost::alloc::vec::Vec<u8>),
8063        /// UTF-16 Big Endian Encoding
8064        #[prost(bytes, tag = "3")]
8065        Utf16Be(::prost::alloc::vec::Vec<u8>),
8066    }
8067}
8068/// Interned version of V8String
8069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8070pub struct InternedV8String {
8071    #[prost(uint64, optional, tag = "1")]
8072    pub iid: ::core::option::Option<u64>,
8073    /// We inline the fields in V8String here to save some bytes in the serialized
8074    /// proto format. Interning is about saving bytes so this makes sense here.
8075    #[prost(oneof = "interned_v8_string::EncodedString", tags = "2, 3, 4")]
8076    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
8077}
8078/// Nested message and enum types in `InternedV8String`.
8079pub mod interned_v8_string {
8080    /// We inline the fields in V8String here to save some bytes in the serialized
8081    /// proto format. Interning is about saving bytes so this makes sense here.
8082    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8083    pub enum EncodedString {
8084        /// ISO/IEC 8859-1:1998 encoding aka latin1
8085        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8086        #[prost(bytes, tag = "2")]
8087        Latin1(::prost::alloc::vec::Vec<u8>),
8088        /// UTF-16 Little Endian Encoding
8089        #[prost(bytes, tag = "3")]
8090        Utf16Le(::prost::alloc::vec::Vec<u8>),
8091        /// UTF-16 Big Endian Encoding
8092        #[prost(bytes, tag = "4")]
8093        Utf16Be(::prost::alloc::vec::Vec<u8>),
8094    }
8095}
8096/// Represents a script that was compiled to generate code. Some V8 code is
8097/// generated out of scripts and will reference a V8Script other types of code
8098/// will not (e.g. builtins).
8099#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8100pub struct InternedV8JsScript {
8101    #[prost(uint64, optional, tag = "1")]
8102    pub iid: ::core::option::Option<u64>,
8103    /// Unique in a given isolate
8104    #[prost(int32, optional, tag = "2")]
8105    pub script_id: ::core::option::Option<i32>,
8106    #[prost(enumeration = "interned_v8_js_script::Type", optional, tag = "3")]
8107    pub r#type: ::core::option::Option<i32>,
8108    #[prost(message, optional, tag = "4")]
8109    pub name: ::core::option::Option<V8String>,
8110    /// Actual source of the script
8111    #[prost(message, optional, tag = "5")]
8112    pub source: ::core::option::Option<V8String>,
8113}
8114/// Nested message and enum types in `InternedV8JsScript`.
8115pub mod interned_v8_js_script {
8116    #[derive(
8117        Clone,
8118        Copy,
8119        Debug,
8120        PartialEq,
8121        Eq,
8122        Hash,
8123        PartialOrd,
8124        Ord,
8125        ::prost::Enumeration
8126    )]
8127    #[repr(i32)]
8128    pub enum Type {
8129        Unknown = 0,
8130        Normal = 1,
8131        Eval = 2,
8132        Module = 3,
8133        Native = 4,
8134        Extension = 5,
8135        Inspector = 6,
8136    }
8137    impl Type {
8138        /// String value of the enum field names used in the ProtoBuf definition.
8139        ///
8140        /// The values are not transformed in any way and thus are considered stable
8141        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8142        pub fn as_str_name(&self) -> &'static str {
8143            match self {
8144                Self::Unknown => "TYPE_UNKNOWN",
8145                Self::Normal => "TYPE_NORMAL",
8146                Self::Eval => "TYPE_EVAL",
8147                Self::Module => "TYPE_MODULE",
8148                Self::Native => "TYPE_NATIVE",
8149                Self::Extension => "TYPE_EXTENSION",
8150                Self::Inspector => "TYPE_INSPECTOR",
8151            }
8152        }
8153        /// Creates an enum from field names used in the ProtoBuf definition.
8154        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8155            match value {
8156                "TYPE_UNKNOWN" => Some(Self::Unknown),
8157                "TYPE_NORMAL" => Some(Self::Normal),
8158                "TYPE_EVAL" => Some(Self::Eval),
8159                "TYPE_MODULE" => Some(Self::Module),
8160                "TYPE_NATIVE" => Some(Self::Native),
8161                "TYPE_EXTENSION" => Some(Self::Extension),
8162                "TYPE_INSPECTOR" => Some(Self::Inspector),
8163                _ => None,
8164            }
8165        }
8166    }
8167}
8168#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8169pub struct InternedV8WasmScript {
8170    #[prost(uint64, optional, tag = "1")]
8171    pub iid: ::core::option::Option<u64>,
8172    /// Unique in a given isolate
8173    #[prost(int32, optional, tag = "2")]
8174    pub script_id: ::core::option::Option<i32>,
8175    #[prost(string, optional, tag = "3")]
8176    pub url: ::core::option::Option<::prost::alloc::string::String>,
8177    /// Raw transferred wasm native module wire bytes.
8178    #[prost(bytes = "vec", optional, tag = "4")]
8179    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8180}
8181#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8182pub struct InternedV8JsFunction {
8183    #[prost(uint64, optional, tag = "1")]
8184    pub iid: ::core::option::Option<u64>,
8185    #[prost(uint64, optional, tag = "2")]
8186    pub v8_js_function_name_iid: ::core::option::Option<u64>,
8187    #[prost(uint64, optional, tag = "3")]
8188    pub v8_js_script_iid: ::core::option::Option<u64>,
8189    #[prost(bool, optional, tag = "4")]
8190    pub is_toplevel: ::core::option::Option<bool>,
8191    #[prost(enumeration = "interned_v8_js_function::Kind", optional, tag = "5")]
8192    pub kind: ::core::option::Option<i32>,
8193    /// Where in the script source this function is defined. This is counted in
8194    /// bytes not characters.
8195    #[prost(uint32, optional, tag = "6")]
8196    pub byte_offset: ::core::option::Option<u32>,
8197    #[prost(uint32, optional, tag = "7")]
8198    pub line: ::core::option::Option<u32>,
8199    #[prost(uint32, optional, tag = "8")]
8200    pub column: ::core::option::Option<u32>,
8201}
8202/// Nested message and enum types in `InternedV8JsFunction`.
8203pub mod interned_v8_js_function {
8204    #[derive(
8205        Clone,
8206        Copy,
8207        Debug,
8208        PartialEq,
8209        Eq,
8210        Hash,
8211        PartialOrd,
8212        Ord,
8213        ::prost::Enumeration
8214    )]
8215    #[repr(i32)]
8216    pub enum Kind {
8217        Unknown = 0,
8218        NormalFunction = 1,
8219        Module = 2,
8220        AsyncModule = 3,
8221        BaseConstructor = 4,
8222        DefaultBaseConstructor = 5,
8223        DefaultDerivedConstructor = 6,
8224        DerivedConstructor = 7,
8225        GetterFunction = 8,
8226        StaticGetterFunction = 9,
8227        SetterFunction = 10,
8228        StaticSetterFunction = 11,
8229        ArrowFunction = 12,
8230        AsyncArrowFunction = 13,
8231        AsyncFunction = 14,
8232        AsyncConciseMethod = 15,
8233        StaticAsyncConciseMethod = 16,
8234        AsyncConciseGeneratorMethod = 17,
8235        StaticAsyncConciseGeneratorMethod = 18,
8236        AsyncGeneratorFunction = 19,
8237        GeneratorFunction = 20,
8238        ConciseGeneratorMethod = 21,
8239        StaticConciseGeneratorMethod = 22,
8240        ConciseMethod = 23,
8241        StaticConciseMethod = 24,
8242        ClassMembersInitializerFunction = 25,
8243        ClassStaticInitializerFunction = 26,
8244        Invalid = 27,
8245    }
8246    impl Kind {
8247        /// String value of the enum field names used in the ProtoBuf definition.
8248        ///
8249        /// The values are not transformed in any way and thus are considered stable
8250        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8251        pub fn as_str_name(&self) -> &'static str {
8252            match self {
8253                Self::Unknown => "KIND_UNKNOWN",
8254                Self::NormalFunction => "KIND_NORMAL_FUNCTION",
8255                Self::Module => "KIND_MODULE",
8256                Self::AsyncModule => "KIND_ASYNC_MODULE",
8257                Self::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
8258                Self::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
8259                Self::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
8260                Self::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
8261                Self::GetterFunction => "KIND_GETTER_FUNCTION",
8262                Self::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
8263                Self::SetterFunction => "KIND_SETTER_FUNCTION",
8264                Self::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
8265                Self::ArrowFunction => "KIND_ARROW_FUNCTION",
8266                Self::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
8267                Self::AsyncFunction => "KIND_ASYNC_FUNCTION",
8268                Self::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
8269                Self::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
8270                Self::AsyncConciseGeneratorMethod => {
8271                    "KIND_ASYNC_CONCISE_GENERATOR_METHOD"
8272                }
8273                Self::StaticAsyncConciseGeneratorMethod => {
8274                    "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD"
8275                }
8276                Self::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
8277                Self::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
8278                Self::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
8279                Self::StaticConciseGeneratorMethod => {
8280                    "KIND_STATIC_CONCISE_GENERATOR_METHOD"
8281                }
8282                Self::ConciseMethod => "KIND_CONCISE_METHOD",
8283                Self::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
8284                Self::ClassMembersInitializerFunction => {
8285                    "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION"
8286                }
8287                Self::ClassStaticInitializerFunction => {
8288                    "KIND_CLASS_STATIC_INITIALIZER_FUNCTION"
8289                }
8290                Self::Invalid => "KIND_INVALID",
8291            }
8292        }
8293        /// Creates an enum from field names used in the ProtoBuf definition.
8294        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8295            match value {
8296                "KIND_UNKNOWN" => Some(Self::Unknown),
8297                "KIND_NORMAL_FUNCTION" => Some(Self::NormalFunction),
8298                "KIND_MODULE" => Some(Self::Module),
8299                "KIND_ASYNC_MODULE" => Some(Self::AsyncModule),
8300                "KIND_BASE_CONSTRUCTOR" => Some(Self::BaseConstructor),
8301                "KIND_DEFAULT_BASE_CONSTRUCTOR" => Some(Self::DefaultBaseConstructor),
8302                "KIND_DEFAULT_DERIVED_CONSTRUCTOR" => {
8303                    Some(Self::DefaultDerivedConstructor)
8304                }
8305                "KIND_DERIVED_CONSTRUCTOR" => Some(Self::DerivedConstructor),
8306                "KIND_GETTER_FUNCTION" => Some(Self::GetterFunction),
8307                "KIND_STATIC_GETTER_FUNCTION" => Some(Self::StaticGetterFunction),
8308                "KIND_SETTER_FUNCTION" => Some(Self::SetterFunction),
8309                "KIND_STATIC_SETTER_FUNCTION" => Some(Self::StaticSetterFunction),
8310                "KIND_ARROW_FUNCTION" => Some(Self::ArrowFunction),
8311                "KIND_ASYNC_ARROW_FUNCTION" => Some(Self::AsyncArrowFunction),
8312                "KIND_ASYNC_FUNCTION" => Some(Self::AsyncFunction),
8313                "KIND_ASYNC_CONCISE_METHOD" => Some(Self::AsyncConciseMethod),
8314                "KIND_STATIC_ASYNC_CONCISE_METHOD" => {
8315                    Some(Self::StaticAsyncConciseMethod)
8316                }
8317                "KIND_ASYNC_CONCISE_GENERATOR_METHOD" => {
8318                    Some(Self::AsyncConciseGeneratorMethod)
8319                }
8320                "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD" => {
8321                    Some(Self::StaticAsyncConciseGeneratorMethod)
8322                }
8323                "KIND_ASYNC_GENERATOR_FUNCTION" => Some(Self::AsyncGeneratorFunction),
8324                "KIND_GENERATOR_FUNCTION" => Some(Self::GeneratorFunction),
8325                "KIND_CONCISE_GENERATOR_METHOD" => Some(Self::ConciseGeneratorMethod),
8326                "KIND_STATIC_CONCISE_GENERATOR_METHOD" => {
8327                    Some(Self::StaticConciseGeneratorMethod)
8328                }
8329                "KIND_CONCISE_METHOD" => Some(Self::ConciseMethod),
8330                "KIND_STATIC_CONCISE_METHOD" => Some(Self::StaticConciseMethod),
8331                "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION" => {
8332                    Some(Self::ClassMembersInitializerFunction)
8333                }
8334                "KIND_CLASS_STATIC_INITIALIZER_FUNCTION" => {
8335                    Some(Self::ClassStaticInitializerFunction)
8336                }
8337                "KIND_INVALID" => Some(Self::Invalid),
8338                _ => None,
8339            }
8340        }
8341    }
8342}
8343/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
8344/// engine.
8345#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8346pub struct InternedV8Isolate {
8347    #[prost(uint64, optional, tag = "1")]
8348    pub iid: ::core::option::Option<u64>,
8349    #[prost(uint32, optional, tag = "2")]
8350    pub pid: ::core::option::Option<u32>,
8351    /// Process unique isolate id.
8352    #[prost(int32, optional, tag = "3")]
8353    pub isolate_id: ::core::option::Option<i32>,
8354    #[prost(message, optional, tag = "4")]
8355    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8356    /// The embedded blob holds code for built in functions that are precompiled in
8357    /// the V8 library.
8358    #[prost(uint64, optional, tag = "5")]
8359    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8360    #[prost(uint64, optional, tag = "6")]
8361    pub embedded_blob_code_size: ::core::option::Option<u64>,
8362}
8363/// Nested message and enum types in `InternedV8Isolate`.
8364pub mod interned_v8_isolate {
8365    /// A code range is a virtual memory cage that may contain executable code.
8366    /// Depending on the Isolate settings the Isolate might have one or not.
8367    /// See:
8368    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
8369    /// If the isolate defines code range this will be tracked here.
8370    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8371    pub struct CodeRange {
8372        #[prost(uint64, optional, tag = "1")]
8373        pub base_address: ::core::option::Option<u64>,
8374        #[prost(uint64, optional, tag = "2")]
8375        pub size: ::core::option::Option<u64>,
8376        /// Used when short builtin calls are enabled, where embedded builtins are
8377        /// copied into the CodeRange so calls can be nearer.
8378        #[prost(uint64, optional, tag = "3")]
8379        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
8380        /// Whether this code range is shared with other Isolates in the same process
8381        #[prost(bool, optional, tag = "4")]
8382        pub is_process_wide: ::core::option::Option<bool>,
8383    }
8384}
8385#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8386pub struct V8JsCode {
8387    #[prost(uint64, optional, tag = "1")]
8388    pub v8_isolate_iid: ::core::option::Option<u64>,
8389    #[prost(uint32, optional, tag = "2")]
8390    pub tid: ::core::option::Option<u32>,
8391    #[prost(uint64, optional, tag = "3")]
8392    pub v8_js_function_iid: ::core::option::Option<u64>,
8393    #[prost(enumeration = "v8_js_code::Tier", optional, tag = "4")]
8394    pub tier: ::core::option::Option<i32>,
8395    #[prost(uint64, optional, tag = "5")]
8396    pub instruction_start: ::core::option::Option<u64>,
8397    #[prost(uint64, optional, tag = "6")]
8398    pub instruction_size_bytes: ::core::option::Option<u64>,
8399    #[prost(oneof = "v8_js_code::Instructions", tags = "7, 8")]
8400    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8401    #[prost(oneof = "v8_js_code::SourceMap", tags = "9, 10, 11")]
8402    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
8403}
8404/// Nested message and enum types in `V8JsCode`.
8405pub mod v8_js_code {
8406    #[derive(
8407        Clone,
8408        Copy,
8409        Debug,
8410        PartialEq,
8411        Eq,
8412        Hash,
8413        PartialOrd,
8414        Ord,
8415        ::prost::Enumeration
8416    )]
8417    #[repr(i32)]
8418    pub enum Tier {
8419        Unknown = 0,
8420        Ignition = 1,
8421        Sparkplug = 2,
8422        Maglev = 3,
8423        Turboshaft = 4,
8424        Turbofan = 5,
8425    }
8426    impl Tier {
8427        /// String value of the enum field names used in the ProtoBuf definition.
8428        ///
8429        /// The values are not transformed in any way and thus are considered stable
8430        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8431        pub fn as_str_name(&self) -> &'static str {
8432            match self {
8433                Self::Unknown => "TIER_UNKNOWN",
8434                Self::Ignition => "TIER_IGNITION",
8435                Self::Sparkplug => "TIER_SPARKPLUG",
8436                Self::Maglev => "TIER_MAGLEV",
8437                Self::Turboshaft => "TIER_TURBOSHAFT",
8438                Self::Turbofan => "TIER_TURBOFAN",
8439            }
8440        }
8441        /// Creates an enum from field names used in the ProtoBuf definition.
8442        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8443            match value {
8444                "TIER_UNKNOWN" => Some(Self::Unknown),
8445                "TIER_IGNITION" => Some(Self::Ignition),
8446                "TIER_SPARKPLUG" => Some(Self::Sparkplug),
8447                "TIER_MAGLEV" => Some(Self::Maglev),
8448                "TIER_TURBOSHAFT" => Some(Self::Turboshaft),
8449                "TIER_TURBOFAN" => Some(Self::Turbofan),
8450                _ => None,
8451            }
8452        }
8453    }
8454    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8455    pub enum Instructions {
8456        #[prost(bytes, tag = "7")]
8457        MachineCode(::prost::alloc::vec::Vec<u8>),
8458        #[prost(bytes, tag = "8")]
8459        Bytecode(::prost::alloc::vec::Vec<u8>),
8460    }
8461    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8462    pub enum SourceMap {
8463        /// For Ignition / bytecode:
8464        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
8465        ///     related js function)
8466        #[prost(bytes, tag = "9")]
8467        SourcePositions(::prost::alloc::vec::Vec<u8>),
8468        /// For Sparkplug code:
8469        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
8470        ///     ignition code object for the same js-function.
8471        #[prost(bytes, tag = "10")]
8472        BytecodePositions(::prost::alloc::vec::Vec<u8>),
8473        /// For optimized code:
8474        /// - Maps machine-code-ranges to bytecode ranges in various
8475        ///    ignition code objects (inlining might happen from multiple functions)
8476        #[prost(bytes, tag = "11")]
8477        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
8478    }
8479}
8480#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8481pub struct V8InternalCode {
8482    #[prost(uint64, optional, tag = "1")]
8483    pub v8_isolate_iid: ::core::option::Option<u64>,
8484    #[prost(uint32, optional, tag = "2")]
8485    pub tid: ::core::option::Option<u32>,
8486    #[prost(string, optional, tag = "3")]
8487    pub name: ::core::option::Option<::prost::alloc::string::String>,
8488    #[prost(enumeration = "v8_internal_code::Type", optional, tag = "4")]
8489    pub r#type: ::core::option::Option<i32>,
8490    #[prost(int32, optional, tag = "5")]
8491    pub builtin_id: ::core::option::Option<i32>,
8492    #[prost(uint64, optional, tag = "6")]
8493    pub instruction_start: ::core::option::Option<u64>,
8494    #[prost(uint64, optional, tag = "7")]
8495    pub instruction_size_bytes: ::core::option::Option<u64>,
8496    #[prost(bytes = "vec", optional, tag = "8")]
8497    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8498}
8499/// Nested message and enum types in `V8InternalCode`.
8500pub mod v8_internal_code {
8501    #[derive(
8502        Clone,
8503        Copy,
8504        Debug,
8505        PartialEq,
8506        Eq,
8507        Hash,
8508        PartialOrd,
8509        Ord,
8510        ::prost::Enumeration
8511    )]
8512    #[repr(i32)]
8513    pub enum Type {
8514        Unknown = 0,
8515        BytecodeHandler = 1,
8516        ForTesting = 2,
8517        Builtin = 3,
8518        WasmFunction = 4,
8519        WasmToCapiFunction = 5,
8520        WasmToJsFunction = 6,
8521        JsToWasmFunction = 7,
8522        JsToJsFunction = 8,
8523        CWasmEntry = 9,
8524    }
8525    impl Type {
8526        /// String value of the enum field names used in the ProtoBuf definition.
8527        ///
8528        /// The values are not transformed in any way and thus are considered stable
8529        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8530        pub fn as_str_name(&self) -> &'static str {
8531            match self {
8532                Self::Unknown => "TYPE_UNKNOWN",
8533                Self::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8534                Self::ForTesting => "TYPE_FOR_TESTING",
8535                Self::Builtin => "TYPE_BUILTIN",
8536                Self::WasmFunction => "TYPE_WASM_FUNCTION",
8537                Self::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8538                Self::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8539                Self::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8540                Self::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8541                Self::CWasmEntry => "TYPE_C_WASM_ENTRY",
8542            }
8543        }
8544        /// Creates an enum from field names used in the ProtoBuf definition.
8545        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8546            match value {
8547                "TYPE_UNKNOWN" => Some(Self::Unknown),
8548                "TYPE_BYTECODE_HANDLER" => Some(Self::BytecodeHandler),
8549                "TYPE_FOR_TESTING" => Some(Self::ForTesting),
8550                "TYPE_BUILTIN" => Some(Self::Builtin),
8551                "TYPE_WASM_FUNCTION" => Some(Self::WasmFunction),
8552                "TYPE_WASM_TO_CAPI_FUNCTION" => Some(Self::WasmToCapiFunction),
8553                "TYPE_WASM_TO_JS_FUNCTION" => Some(Self::WasmToJsFunction),
8554                "TYPE_JS_TO_WASM_FUNCTION" => Some(Self::JsToWasmFunction),
8555                "TYPE_JS_TO_JS_FUNCTION" => Some(Self::JsToJsFunction),
8556                "TYPE_C_WASM_ENTRY" => Some(Self::CWasmEntry),
8557                _ => None,
8558            }
8559        }
8560    }
8561}
8562#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8563pub struct V8WasmCode {
8564    #[prost(uint64, optional, tag = "1")]
8565    pub v8_isolate_iid: ::core::option::Option<u64>,
8566    #[prost(uint32, optional, tag = "2")]
8567    pub tid: ::core::option::Option<u32>,
8568    #[prost(uint64, optional, tag = "3")]
8569    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8570    #[prost(string, optional, tag = "4")]
8571    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8572    #[prost(enumeration = "v8_wasm_code::Tier", optional, tag = "5")]
8573    pub tier: ::core::option::Option<i32>,
8574    #[prost(int32, optional, tag = "6")]
8575    pub code_offset_in_module: ::core::option::Option<i32>,
8576    #[prost(uint64, optional, tag = "7")]
8577    pub instruction_start: ::core::option::Option<u64>,
8578    #[prost(uint64, optional, tag = "8")]
8579    pub instruction_size_bytes: ::core::option::Option<u64>,
8580    #[prost(bytes = "vec", optional, tag = "9")]
8581    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8582}
8583/// Nested message and enum types in `V8WasmCode`.
8584pub mod v8_wasm_code {
8585    #[derive(
8586        Clone,
8587        Copy,
8588        Debug,
8589        PartialEq,
8590        Eq,
8591        Hash,
8592        PartialOrd,
8593        Ord,
8594        ::prost::Enumeration
8595    )]
8596    #[repr(i32)]
8597    pub enum Tier {
8598        Unknown = 0,
8599        Liftoff = 1,
8600        Turbofan = 2,
8601    }
8602    impl Tier {
8603        /// String value of the enum field names used in the ProtoBuf definition.
8604        ///
8605        /// The values are not transformed in any way and thus are considered stable
8606        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8607        pub fn as_str_name(&self) -> &'static str {
8608            match self {
8609                Self::Unknown => "TIER_UNKNOWN",
8610                Self::Liftoff => "TIER_LIFTOFF",
8611                Self::Turbofan => "TIER_TURBOFAN",
8612            }
8613        }
8614        /// Creates an enum from field names used in the ProtoBuf definition.
8615        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8616            match value {
8617                "TIER_UNKNOWN" => Some(Self::Unknown),
8618                "TIER_LIFTOFF" => Some(Self::Liftoff),
8619                "TIER_TURBOFAN" => Some(Self::Turbofan),
8620                _ => None,
8621            }
8622        }
8623    }
8624}
8625#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8626pub struct V8RegExpCode {
8627    #[prost(uint64, optional, tag = "1")]
8628    pub v8_isolate_iid: ::core::option::Option<u64>,
8629    #[prost(uint32, optional, tag = "2")]
8630    pub tid: ::core::option::Option<u32>,
8631    #[prost(message, optional, tag = "3")]
8632    pub pattern: ::core::option::Option<V8String>,
8633    #[prost(uint64, optional, tag = "4")]
8634    pub instruction_start: ::core::option::Option<u64>,
8635    #[prost(uint64, optional, tag = "5")]
8636    pub instruction_size_bytes: ::core::option::Option<u64>,
8637    #[prost(bytes = "vec", optional, tag = "6")]
8638    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8639}
8640/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8641/// memory by V8's GC.
8642#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8643pub struct V8CodeMove {
8644    #[prost(uint64, optional, tag = "1")]
8645    pub isolate_iid: ::core::option::Option<u64>,
8646    #[prost(uint32, optional, tag = "2")]
8647    pub tid: ::core::option::Option<u32>,
8648    #[prost(uint64, optional, tag = "3")]
8649    pub from_instruction_start_address: ::core::option::Option<u64>,
8650    #[prost(uint64, optional, tag = "4")]
8651    pub to_instruction_start_address: ::core::option::Option<u64>,
8652    #[prost(uint64, optional, tag = "5")]
8653    pub instruction_size_bytes: ::core::option::Option<u64>,
8654    #[prost(oneof = "v8_code_move::ToInstructions", tags = "6, 7")]
8655    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
8656}
8657/// Nested message and enum types in `V8CodeMove`.
8658pub mod v8_code_move {
8659    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8660    pub enum ToInstructions {
8661        #[prost(bytes, tag = "6")]
8662        ToMachineCode(::prost::alloc::vec::Vec<u8>),
8663        #[prost(bytes, tag = "7")]
8664        ToBytecode(::prost::alloc::vec::Vec<u8>),
8665    }
8666}
8667#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8668pub struct V8CodeDefaults {
8669    #[prost(uint32, optional, tag = "1")]
8670    pub tid: ::core::option::Option<u32>,
8671}
8672/// A snapshot of clock readings to allow for trace alignment.
8673#[derive(Clone, PartialEq, ::prost::Message)]
8674pub struct ClockSnapshot {
8675    #[prost(message, repeated, tag = "1")]
8676    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8677    /// The authoritative clock domain for the trace. When set, this definitively
8678    /// overrides the trace time clock. If not set, the trace time clock remains
8679    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
8680    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
8681    /// snapshots). Trace processor will attempt to translate packet/event
8682    /// timestamps from various data sources (and their chosen clock domains) to
8683    /// this domain during import.
8684    #[prost(enumeration = "BuiltinClock", optional, tag = "2")]
8685    pub primary_trace_clock: ::core::option::Option<i32>,
8686}
8687/// Nested message and enum types in `ClockSnapshot`.
8688pub mod clock_snapshot {
8689    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8690    pub struct Clock {
8691        /// Clock IDs have the following semantic:
8692        /// \[1, 63\]:    Builtin types, see BuiltinClock from
8693        ///              ../common/builtin_clock.proto.
8694        /// \[64, 127\]:  User-defined clocks. These clocks are sequence-scoped. They
8695        ///              are only valid within the same |trusted_packet_sequence_id|
8696        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8697        ///              that emitted the clock snapshot).
8698        /// \[128, MAX\]: Reserved for future use. The idea is to allow global clock
8699        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8700        #[prost(uint32, optional, tag = "1")]
8701        pub clock_id: ::core::option::Option<u32>,
8702        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8703        /// unit_multiplier_ns field below.
8704        #[prost(uint64, optional, tag = "2")]
8705        pub timestamp: ::core::option::Option<u64>,
8706        /// When true each TracePacket's timestamp should be interpreted as a delta
8707        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8708        /// the same packet_sequence_id. Should only be used for user-defined
8709        /// sequence-local clocks. The first packet timestamp after each
8710        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8711        /// the ClockSnapshot.
8712        #[prost(bool, optional, tag = "3")]
8713        pub is_incremental: ::core::option::Option<bool>,
8714        /// Allows to specify a custom unit different than the default (ns) for this
8715        /// clock domain.
8716        ///
8717        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8718        ///    as 3000 ns = 3 us.
8719        /// * All snapshots for the same clock within a trace need to use the same
8720        ///    unit.
8721        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8722        #[prost(uint64, optional, tag = "4")]
8723        pub unit_multiplier_ns: ::core::option::Option<u64>,
8724    }
8725    /// Nested message and enum types in `Clock`.
8726    pub mod clock {
8727        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8728        #[derive(
8729            Clone,
8730            Copy,
8731            Debug,
8732            PartialEq,
8733            Eq,
8734            Hash,
8735            PartialOrd,
8736            Ord,
8737            ::prost::Enumeration
8738        )]
8739        #[repr(i32)]
8740        pub enum BuiltinClocks {
8741            Unknown = 0,
8742            Realtime = 1,
8743            RealtimeCoarse = 2,
8744            Monotonic = 3,
8745            MonotonicCoarse = 4,
8746            MonotonicRaw = 5,
8747            Boottime = 6,
8748            BuiltinClockMaxId = 63,
8749        }
8750        impl BuiltinClocks {
8751            /// String value of the enum field names used in the ProtoBuf definition.
8752            ///
8753            /// The values are not transformed in any way and thus are considered stable
8754            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8755            pub fn as_str_name(&self) -> &'static str {
8756                match self {
8757                    Self::Unknown => "UNKNOWN",
8758                    Self::Realtime => "REALTIME",
8759                    Self::RealtimeCoarse => "REALTIME_COARSE",
8760                    Self::Monotonic => "MONOTONIC",
8761                    Self::MonotonicCoarse => "MONOTONIC_COARSE",
8762                    Self::MonotonicRaw => "MONOTONIC_RAW",
8763                    Self::Boottime => "BOOTTIME",
8764                    Self::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8765                }
8766            }
8767            /// Creates an enum from field names used in the ProtoBuf definition.
8768            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8769                match value {
8770                    "UNKNOWN" => Some(Self::Unknown),
8771                    "REALTIME" => Some(Self::Realtime),
8772                    "REALTIME_COARSE" => Some(Self::RealtimeCoarse),
8773                    "MONOTONIC" => Some(Self::Monotonic),
8774                    "MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
8775                    "MONOTONIC_RAW" => Some(Self::MonotonicRaw),
8776                    "BOOTTIME" => Some(Self::Boottime),
8777                    "BUILTIN_CLOCK_MAX_ID" => Some(Self::BuiltinClockMaxId),
8778                    _ => None,
8779                }
8780            }
8781        }
8782    }
8783}
8784/// Proto definition based on the Thread_v2 CSwitch class definition
8785/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8786#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8787pub struct CSwitchEtwEvent {
8788    /// New thread ID after the switch.
8789    #[prost(uint32, optional, tag = "1")]
8790    pub new_thread_id: ::core::option::Option<u32>,
8791    /// Previous thread ID.
8792    #[prost(uint32, optional, tag = "2")]
8793    pub old_thread_id: ::core::option::Option<u32>,
8794    /// Thread priority of the new thread.
8795    #[prost(sint32, optional, tag = "3")]
8796    pub new_thread_priority: ::core::option::Option<i32>,
8797    /// Thread priority of the previous thread.
8798    #[prost(sint32, optional, tag = "4")]
8799    pub old_thread_priority: ::core::option::Option<i32>,
8800    /// The index of the C-state that was last used by the processor. A value of 0
8801    /// represents the lightest idle state with higher values representing deeper
8802    /// C-states.
8803    #[prost(uint32, optional, tag = "5")]
8804    pub previous_c_state: ::core::option::Option<u32>,
8805    /// Ideal wait time of the previous thread.
8806    #[prost(sint32, optional, tag = "9")]
8807    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8808    /// Wait time for the new thread.
8809    #[prost(uint32, optional, tag = "10")]
8810    pub new_thread_wait_time: ::core::option::Option<u32>,
8811    #[prost(oneof = "c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags = "6, 11")]
8812    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<
8813        c_switch_etw_event::OldThreadWaitReasonEnumOrInt,
8814    >,
8815    #[prost(oneof = "c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags = "7, 12")]
8816    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<
8817        c_switch_etw_event::OldThreadWaitModeEnumOrInt,
8818    >,
8819    #[prost(oneof = "c_switch_etw_event::OldThreadStateEnumOrInt", tags = "8, 13")]
8820    pub old_thread_state_enum_or_int: ::core::option::Option<
8821        c_switch_etw_event::OldThreadStateEnumOrInt,
8822    >,
8823}
8824/// Nested message and enum types in `CSwitchEtwEvent`.
8825pub mod c_switch_etw_event {
8826    /// Wait reason for the previous thread. The ordering is important as based on
8827    /// the OldThreadWaitReason definition from the link above. The following are
8828    /// the possible values:
8829    #[derive(
8830        Clone,
8831        Copy,
8832        Debug,
8833        PartialEq,
8834        Eq,
8835        Hash,
8836        PartialOrd,
8837        Ord,
8838        ::prost::Enumeration
8839    )]
8840    #[repr(i32)]
8841    pub enum OldThreadWaitReason {
8842        Executive = 0,
8843        FreePage = 1,
8844        PageIn = 2,
8845        PoolAllocation = 3,
8846        DelayExecution = 4,
8847        Suspend = 5,
8848        UserRequest = 6,
8849        WrExecutive = 7,
8850        WrFreePage = 8,
8851        WrPageIn = 9,
8852        WrPoolAllocation = 10,
8853        WrDelayExecution = 11,
8854        WrSuspended = 12,
8855        WrUserRequest = 13,
8856        WrEventPair = 14,
8857        WrQueue = 15,
8858        WrLpcReceiver = 16,
8859        WrLpcReply = 17,
8860        WrVirtualMemory = 18,
8861        WrPageOut = 19,
8862        WrRendezVous = 20,
8863        WrKeyedEvent = 21,
8864        WrTerminated = 22,
8865        WrProcessInSwap = 23,
8866        WrCpuRateControl = 24,
8867        WrCalloutStack = 25,
8868        WrKernel = 26,
8869        WrResource = 27,
8870        WrPushLock = 28,
8871        WrMutex = 29,
8872        WrQuantumEnd = 30,
8873        WrDispatchInt = 31,
8874        WrPreempted = 32,
8875        WrYieldExecution = 33,
8876        WrFastMutex = 34,
8877        WrGuardMutex = 35,
8878        WrRundown = 36,
8879        MaximumWaitReason = 37,
8880    }
8881    impl OldThreadWaitReason {
8882        /// String value of the enum field names used in the ProtoBuf definition.
8883        ///
8884        /// The values are not transformed in any way and thus are considered stable
8885        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8886        pub fn as_str_name(&self) -> &'static str {
8887            match self {
8888                Self::Executive => "EXECUTIVE",
8889                Self::FreePage => "FREE_PAGE",
8890                Self::PageIn => "PAGE_IN",
8891                Self::PoolAllocation => "POOL_ALLOCATION",
8892                Self::DelayExecution => "DELAY_EXECUTION",
8893                Self::Suspend => "SUSPEND",
8894                Self::UserRequest => "USER_REQUEST",
8895                Self::WrExecutive => "WR_EXECUTIVE",
8896                Self::WrFreePage => "WR_FREE_PAGE",
8897                Self::WrPageIn => "WR_PAGE_IN",
8898                Self::WrPoolAllocation => "WR_POOL_ALLOCATION",
8899                Self::WrDelayExecution => "WR_DELAY_EXECUTION",
8900                Self::WrSuspended => "WR_SUSPENDED",
8901                Self::WrUserRequest => "WR_USER_REQUEST",
8902                Self::WrEventPair => "WR_EVENT_PAIR",
8903                Self::WrQueue => "WR_QUEUE",
8904                Self::WrLpcReceiver => "WR_LPC_RECEIVER",
8905                Self::WrLpcReply => "WR_LPC_REPLY",
8906                Self::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8907                Self::WrPageOut => "WR_PAGE_OUT",
8908                Self::WrRendezVous => "WR_RENDEZ_VOUS",
8909                Self::WrKeyedEvent => "WR_KEYED_EVENT",
8910                Self::WrTerminated => "WR_TERMINATED",
8911                Self::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8912                Self::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8913                Self::WrCalloutStack => "WR_CALLOUT_STACK",
8914                Self::WrKernel => "WR_KERNEL",
8915                Self::WrResource => "WR_RESOURCE",
8916                Self::WrPushLock => "WR_PUSH_LOCK",
8917                Self::WrMutex => "WR_MUTEX",
8918                Self::WrQuantumEnd => "WR_QUANTUM_END",
8919                Self::WrDispatchInt => "WR_DISPATCH_INT",
8920                Self::WrPreempted => "WR_PREEMPTED",
8921                Self::WrYieldExecution => "WR_YIELD_EXECUTION",
8922                Self::WrFastMutex => "WR_FAST_MUTEX",
8923                Self::WrGuardMutex => "WR_GUARD_MUTEX",
8924                Self::WrRundown => "WR_RUNDOWN",
8925                Self::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8926            }
8927        }
8928        /// Creates an enum from field names used in the ProtoBuf definition.
8929        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8930            match value {
8931                "EXECUTIVE" => Some(Self::Executive),
8932                "FREE_PAGE" => Some(Self::FreePage),
8933                "PAGE_IN" => Some(Self::PageIn),
8934                "POOL_ALLOCATION" => Some(Self::PoolAllocation),
8935                "DELAY_EXECUTION" => Some(Self::DelayExecution),
8936                "SUSPEND" => Some(Self::Suspend),
8937                "USER_REQUEST" => Some(Self::UserRequest),
8938                "WR_EXECUTIVE" => Some(Self::WrExecutive),
8939                "WR_FREE_PAGE" => Some(Self::WrFreePage),
8940                "WR_PAGE_IN" => Some(Self::WrPageIn),
8941                "WR_POOL_ALLOCATION" => Some(Self::WrPoolAllocation),
8942                "WR_DELAY_EXECUTION" => Some(Self::WrDelayExecution),
8943                "WR_SUSPENDED" => Some(Self::WrSuspended),
8944                "WR_USER_REQUEST" => Some(Self::WrUserRequest),
8945                "WR_EVENT_PAIR" => Some(Self::WrEventPair),
8946                "WR_QUEUE" => Some(Self::WrQueue),
8947                "WR_LPC_RECEIVER" => Some(Self::WrLpcReceiver),
8948                "WR_LPC_REPLY" => Some(Self::WrLpcReply),
8949                "WR_VIRTUAL_MEMORY" => Some(Self::WrVirtualMemory),
8950                "WR_PAGE_OUT" => Some(Self::WrPageOut),
8951                "WR_RENDEZ_VOUS" => Some(Self::WrRendezVous),
8952                "WR_KEYED_EVENT" => Some(Self::WrKeyedEvent),
8953                "WR_TERMINATED" => Some(Self::WrTerminated),
8954                "WR_PROCESS_IN_SWAP" => Some(Self::WrProcessInSwap),
8955                "WR_CPU_RATE_CONTROL" => Some(Self::WrCpuRateControl),
8956                "WR_CALLOUT_STACK" => Some(Self::WrCalloutStack),
8957                "WR_KERNEL" => Some(Self::WrKernel),
8958                "WR_RESOURCE" => Some(Self::WrResource),
8959                "WR_PUSH_LOCK" => Some(Self::WrPushLock),
8960                "WR_MUTEX" => Some(Self::WrMutex),
8961                "WR_QUANTUM_END" => Some(Self::WrQuantumEnd),
8962                "WR_DISPATCH_INT" => Some(Self::WrDispatchInt),
8963                "WR_PREEMPTED" => Some(Self::WrPreempted),
8964                "WR_YIELD_EXECUTION" => Some(Self::WrYieldExecution),
8965                "WR_FAST_MUTEX" => Some(Self::WrFastMutex),
8966                "WR_GUARD_MUTEX" => Some(Self::WrGuardMutex),
8967                "WR_RUNDOWN" => Some(Self::WrRundown),
8968                "MAXIMUM_WAIT_REASON" => Some(Self::MaximumWaitReason),
8969                _ => None,
8970            }
8971        }
8972    }
8973    /// Wait mode for the previous thread. The ordering is important as based on
8974    /// the OldThreadWaitMode definition from the link above. The following are the
8975    /// possible values:
8976    #[derive(
8977        Clone,
8978        Copy,
8979        Debug,
8980        PartialEq,
8981        Eq,
8982        Hash,
8983        PartialOrd,
8984        Ord,
8985        ::prost::Enumeration
8986    )]
8987    #[repr(i32)]
8988    pub enum OldThreadWaitMode {
8989        KernelMode = 0,
8990        UserMode = 1,
8991    }
8992    impl OldThreadWaitMode {
8993        /// String value of the enum field names used in the ProtoBuf definition.
8994        ///
8995        /// The values are not transformed in any way and thus are considered stable
8996        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8997        pub fn as_str_name(&self) -> &'static str {
8998            match self {
8999                Self::KernelMode => "KERNEL_MODE",
9000                Self::UserMode => "USER_MODE",
9001            }
9002        }
9003        /// Creates an enum from field names used in the ProtoBuf definition.
9004        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9005            match value {
9006                "KERNEL_MODE" => Some(Self::KernelMode),
9007                "USER_MODE" => Some(Self::UserMode),
9008                _ => None,
9009            }
9010        }
9011    }
9012    /// State of the previous thread. The ordering is important as based on the
9013    /// OldThreadState definition from the link above. The following are the
9014    /// possible state values:
9015    #[derive(
9016        Clone,
9017        Copy,
9018        Debug,
9019        PartialEq,
9020        Eq,
9021        Hash,
9022        PartialOrd,
9023        Ord,
9024        ::prost::Enumeration
9025    )]
9026    #[repr(i32)]
9027    pub enum OldThreadState {
9028        Initialized = 0,
9029        Ready = 1,
9030        Running = 2,
9031        Standby = 3,
9032        Terminated = 4,
9033        Waiting = 5,
9034        Transition = 6,
9035        DeferredReady = 7,
9036    }
9037    impl OldThreadState {
9038        /// String value of the enum field names used in the ProtoBuf definition.
9039        ///
9040        /// The values are not transformed in any way and thus are considered stable
9041        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9042        pub fn as_str_name(&self) -> &'static str {
9043            match self {
9044                Self::Initialized => "INITIALIZED",
9045                Self::Ready => "READY",
9046                Self::Running => "RUNNING",
9047                Self::Standby => "STANDBY",
9048                Self::Terminated => "TERMINATED",
9049                Self::Waiting => "WAITING",
9050                Self::Transition => "TRANSITION",
9051                Self::DeferredReady => "DEFERRED_READY",
9052            }
9053        }
9054        /// Creates an enum from field names used in the ProtoBuf definition.
9055        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9056            match value {
9057                "INITIALIZED" => Some(Self::Initialized),
9058                "READY" => Some(Self::Ready),
9059                "RUNNING" => Some(Self::Running),
9060                "STANDBY" => Some(Self::Standby),
9061                "TERMINATED" => Some(Self::Terminated),
9062                "WAITING" => Some(Self::Waiting),
9063                "TRANSITION" => Some(Self::Transition),
9064                "DEFERRED_READY" => Some(Self::DeferredReady),
9065                _ => None,
9066            }
9067        }
9068    }
9069    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9070    pub enum OldThreadWaitReasonEnumOrInt {
9071        #[prost(enumeration = "OldThreadWaitReason", tag = "6")]
9072        OldThreadWaitReason(i32),
9073        #[prost(int32, tag = "11")]
9074        OldThreadWaitReasonInt(i32),
9075    }
9076    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9077    pub enum OldThreadWaitModeEnumOrInt {
9078        #[prost(enumeration = "OldThreadWaitMode", tag = "7")]
9079        OldThreadWaitMode(i32),
9080        #[prost(int32, tag = "12")]
9081        OldThreadWaitModeInt(i32),
9082    }
9083    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9084    pub enum OldThreadStateEnumOrInt {
9085        #[prost(enumeration = "OldThreadState", tag = "8")]
9086        OldThreadState(i32),
9087        #[prost(sint32, tag = "13")]
9088        OldThreadStateInt(i32),
9089    }
9090}
9091/// Proto definition based on the Thread_v2 CSwitch class definition
9092/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
9093#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9094pub struct ReadyThreadEtwEvent {
9095    /// The thread identifier of the thread being readied for execution.
9096    #[prost(uint32, optional, tag = "1")]
9097    pub t_thread_id: ::core::option::Option<u32>,
9098    ///   The value by which the priority is being adjusted.
9099    #[prost(sint32, optional, tag = "3")]
9100    pub adjust_increment: ::core::option::Option<i32>,
9101    #[prost(oneof = "ready_thread_etw_event::AdjustReasonEnumOrInt", tags = "2, 5")]
9102    pub adjust_reason_enum_or_int: ::core::option::Option<
9103        ready_thread_etw_event::AdjustReasonEnumOrInt,
9104    >,
9105    #[prost(oneof = "ready_thread_etw_event::FlagEnumOrInt", tags = "4, 6")]
9106    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
9107}
9108/// Nested message and enum types in `ReadyThreadEtwEvent`.
9109pub mod ready_thread_etw_event {
9110    /// The reason for the priority boost. The ordering is important as based on
9111    /// the AdjustReason definition from the link above.
9112    #[derive(
9113        Clone,
9114        Copy,
9115        Debug,
9116        PartialEq,
9117        Eq,
9118        Hash,
9119        PartialOrd,
9120        Ord,
9121        ::prost::Enumeration
9122    )]
9123    #[repr(i32)]
9124    pub enum AdjustReason {
9125        IgnoreTheIncrement = 0,
9126        /// Apply the increment, which will decay incrementally at the end of each
9127        /// quantum.
9128        ApplyIncrement = 1,
9129        /// Apply the increment as a boost that will decay in its entirety at quantum
9130        /// (typically for priority donation).
9131        ApplyIncrementBoost = 2,
9132    }
9133    impl AdjustReason {
9134        /// String value of the enum field names used in the ProtoBuf definition.
9135        ///
9136        /// The values are not transformed in any way and thus are considered stable
9137        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9138        pub fn as_str_name(&self) -> &'static str {
9139            match self {
9140                Self::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
9141                Self::ApplyIncrement => "APPLY_INCREMENT",
9142                Self::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
9143            }
9144        }
9145        /// Creates an enum from field names used in the ProtoBuf definition.
9146        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9147            match value {
9148                "IGNORE_THE_INCREMENT" => Some(Self::IgnoreTheIncrement),
9149                "APPLY_INCREMENT" => Some(Self::ApplyIncrement),
9150                "APPLY_INCREMENT_BOOST" => Some(Self::ApplyIncrementBoost),
9151                _ => None,
9152            }
9153        }
9154    }
9155    #[derive(
9156        Clone,
9157        Copy,
9158        Debug,
9159        PartialEq,
9160        Eq,
9161        Hash,
9162        PartialOrd,
9163        Ord,
9164        ::prost::Enumeration
9165    )]
9166    #[repr(i32)]
9167    pub enum TraceFlag {
9168        Unspecified = 0,
9169        /// The thread has been readied from DPC (deferred procedure call).
9170        ThreadReadied = 1,
9171        /// The kernel stack is currently swapped out.
9172        KernelStackSwappedOut = 2,
9173        /// The process address space is swapped out.
9174        ProcessAddressSwappedOut = 4,
9175    }
9176    impl TraceFlag {
9177        /// String value of the enum field names used in the ProtoBuf definition.
9178        ///
9179        /// The values are not transformed in any way and thus are considered stable
9180        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9181        pub fn as_str_name(&self) -> &'static str {
9182            match self {
9183                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
9184                Self::ThreadReadied => "THREAD_READIED",
9185                Self::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
9186                Self::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
9187            }
9188        }
9189        /// Creates an enum from field names used in the ProtoBuf definition.
9190        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9191            match value {
9192                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
9193                "THREAD_READIED" => Some(Self::ThreadReadied),
9194                "KERNEL_STACK_SWAPPED_OUT" => Some(Self::KernelStackSwappedOut),
9195                "PROCESS_ADDRESS_SWAPPED_OUT" => Some(Self::ProcessAddressSwappedOut),
9196                _ => None,
9197            }
9198        }
9199    }
9200    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9201    pub enum AdjustReasonEnumOrInt {
9202        #[prost(enumeration = "AdjustReason", tag = "2")]
9203        AdjustReason(i32),
9204        #[prost(int32, tag = "5")]
9205        AdjustReasonInt(i32),
9206    }
9207    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9208    pub enum FlagEnumOrInt {
9209        #[prost(enumeration = "TraceFlag", tag = "4")]
9210        Flag(i32),
9211        #[prost(int32, tag = "6")]
9212        FlagInt(i32),
9213    }
9214}
9215/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
9216/// on local traces using tracerpt:
9217/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
9218#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9219pub struct MemInfoEtwEvent {
9220    /// Number of memory priorities on the system.
9221    #[prost(uint32, optional, tag = "1")]
9222    pub priority_levels: ::core::option::Option<u32>,
9223    /// Number of pages in the zero list.
9224    #[prost(uint64, optional, tag = "2")]
9225    pub zero_page_count: ::core::option::Option<u64>,
9226    /// Number of pages in the free list.
9227    #[prost(uint64, optional, tag = "3")]
9228    pub free_page_count: ::core::option::Option<u64>,
9229    /// Number of pages in the modified list.
9230    #[prost(uint64, optional, tag = "4")]
9231    pub modified_page_count: ::core::option::Option<u64>,
9232    /// Number of modified non-paged pool pages.
9233    #[prost(uint64, optional, tag = "5")]
9234    pub modified_no_write_page_count: ::core::option::Option<u64>,
9235    /// Number of bad pages.
9236    #[prost(uint64, optional, tag = "6")]
9237    pub bad_page_count: ::core::option::Option<u64>,
9238    /// Number of standby pages by memory priority.
9239    #[prost(uint64, repeated, packed = "false", tag = "7")]
9240    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
9241    /// Number of repurposed pages by memory priority.
9242    #[prost(uint64, repeated, packed = "false", tag = "8")]
9243    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
9244    /// Modified paged pages.
9245    #[prost(uint64, optional, tag = "9")]
9246    pub modified_page_count_page_file: ::core::option::Option<u64>,
9247    /// Pool page counts.
9248    #[prost(uint64, optional, tag = "10")]
9249    pub paged_pool_page_count: ::core::option::Option<u64>,
9250    #[prost(uint64, optional, tag = "11")]
9251    pub non_paged_pool_page_count: ::core::option::Option<u64>,
9252    /// Memory Descriptor List page count.
9253    #[prost(uint64, optional, tag = "12")]
9254    pub mdl_page_count: ::core::option::Option<u64>,
9255    /// Commit weight.
9256    #[prost(uint64, optional, tag = "13")]
9257    pub commit_page_count: ::core::option::Option<u64>,
9258}
9259/// Proto definition based on the `FileIo_Create` class definition.
9260#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9261pub struct FileIoCreateEtwEvent {
9262    #[prost(uint64, optional, tag = "1")]
9263    pub irp_ptr: ::core::option::Option<u64>,
9264    #[prost(uint64, optional, tag = "2")]
9265    pub file_object: ::core::option::Option<u64>,
9266    #[prost(uint32, optional, tag = "3")]
9267    pub ttid: ::core::option::Option<u32>,
9268    #[prost(uint32, optional, tag = "4")]
9269    pub create_options: ::core::option::Option<u32>,
9270    #[prost(uint32, optional, tag = "5")]
9271    pub file_attributes: ::core::option::Option<u32>,
9272    #[prost(uint32, optional, tag = "6")]
9273    pub share_access: ::core::option::Option<u32>,
9274    #[prost(string, optional, tag = "7")]
9275    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
9276}
9277/// Proto definition based on the `FileIo_DirEnum` class definition.
9278#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9279pub struct FileIoDirEnumEtwEvent {
9280    #[prost(uint64, optional, tag = "1")]
9281    pub irp_ptr: ::core::option::Option<u64>,
9282    #[prost(uint64, optional, tag = "2")]
9283    pub file_object: ::core::option::Option<u64>,
9284    #[prost(uint64, optional, tag = "3")]
9285    pub file_key: ::core::option::Option<u64>,
9286    #[prost(uint32, optional, tag = "4")]
9287    pub ttid: ::core::option::Option<u32>,
9288    #[prost(uint32, optional, tag = "5")]
9289    pub length: ::core::option::Option<u32>,
9290    #[prost(uint32, optional, tag = "6")]
9291    pub info_class: ::core::option::Option<u32>,
9292    #[prost(uint32, optional, tag = "7")]
9293    pub file_index: ::core::option::Option<u32>,
9294    #[prost(string, optional, tag = "8")]
9295    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9296    #[prost(uint32, optional, tag = "9")]
9297    pub opcode: ::core::option::Option<u32>,
9298}
9299/// Proto definition based on the `FileIo_Info` class definition.
9300#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9301pub struct FileIoInfoEtwEvent {
9302    #[prost(uint64, optional, tag = "1")]
9303    pub irp_ptr: ::core::option::Option<u64>,
9304    #[prost(uint64, optional, tag = "2")]
9305    pub file_object: ::core::option::Option<u64>,
9306    #[prost(uint64, optional, tag = "3")]
9307    pub file_key: ::core::option::Option<u64>,
9308    #[prost(uint64, optional, tag = "4")]
9309    pub extra_info: ::core::option::Option<u64>,
9310    #[prost(uint32, optional, tag = "5")]
9311    pub ttid: ::core::option::Option<u32>,
9312    #[prost(uint32, optional, tag = "6")]
9313    pub info_class: ::core::option::Option<u32>,
9314    #[prost(uint32, optional, tag = "7")]
9315    pub opcode: ::core::option::Option<u32>,
9316}
9317/// Proto definition based on the `FileIo_ReadWrite` class definition.
9318#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9319pub struct FileIoReadWriteEtwEvent {
9320    #[prost(uint64, optional, tag = "1")]
9321    pub offset: ::core::option::Option<u64>,
9322    #[prost(uint64, optional, tag = "2")]
9323    pub irp_ptr: ::core::option::Option<u64>,
9324    #[prost(uint64, optional, tag = "3")]
9325    pub file_object: ::core::option::Option<u64>,
9326    #[prost(uint64, optional, tag = "4")]
9327    pub file_key: ::core::option::Option<u64>,
9328    #[prost(uint32, optional, tag = "5")]
9329    pub ttid: ::core::option::Option<u32>,
9330    #[prost(uint32, optional, tag = "6")]
9331    pub io_size: ::core::option::Option<u32>,
9332    #[prost(uint32, optional, tag = "7")]
9333    pub io_flags: ::core::option::Option<u32>,
9334    #[prost(uint32, optional, tag = "8")]
9335    pub opcode: ::core::option::Option<u32>,
9336}
9337/// Proto definition based on the `FileIo_SimpleOp` class definition.
9338#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9339pub struct FileIoSimpleOpEtwEvent {
9340    #[prost(uint64, optional, tag = "1")]
9341    pub irp_ptr: ::core::option::Option<u64>,
9342    #[prost(uint64, optional, tag = "2")]
9343    pub file_object: ::core::option::Option<u64>,
9344    #[prost(uint64, optional, tag = "3")]
9345    pub file_key: ::core::option::Option<u64>,
9346    #[prost(uint32, optional, tag = "4")]
9347    pub ttid: ::core::option::Option<u32>,
9348    #[prost(uint32, optional, tag = "5")]
9349    pub opcode: ::core::option::Option<u32>,
9350}
9351/// Proto definition based on the `FileIo_OpEnd` class definition.
9352#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9353pub struct FileIoOpEndEtwEvent {
9354    #[prost(uint64, optional, tag = "1")]
9355    pub irp_ptr: ::core::option::Option<u64>,
9356    #[prost(uint64, optional, tag = "2")]
9357    pub extra_info: ::core::option::Option<u64>,
9358    #[prost(uint32, optional, tag = "3")]
9359    pub nt_status: ::core::option::Option<u32>,
9360}
9361/// Proto definition based on the `FileIo_PathOperation` class definition.
9362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9363pub struct FileIoPathOperationEtwEvent {
9364    #[prost(uint64, optional, tag = "1")]
9365    pub irp_ptr: ::core::option::Option<u64>,
9366    #[prost(uint64, optional, tag = "2")]
9367    pub file_object: ::core::option::Option<u64>,
9368    #[prost(uint64, optional, tag = "3")]
9369    pub file_key: ::core::option::Option<u64>,
9370    #[prost(uint64, optional, tag = "4")]
9371    pub extra_info: ::core::option::Option<u64>,
9372    #[prost(uint32, optional, tag = "5")]
9373    pub ttid: ::core::option::Option<u32>,
9374    #[prost(uint32, optional, tag = "6")]
9375    pub info_class: ::core::option::Option<u32>,
9376    #[prost(string, optional, tag = "7")]
9377    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9378    #[prost(uint32, optional, tag = "8")]
9379    pub opcode: ::core::option::Option<u32>,
9380}
9381/// Proto definition based on the `StackWalk_Event` class definition. See
9382/// `Callstack` in `perfetto/protos/perfetto/trace/track_event/track_event.proto`
9383/// for context on what is contained in it.
9384#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9385pub struct StackWalkEtwEvent {
9386    #[prost(string, optional, tag = "1")]
9387    pub trigger: ::core::option::Option<::prost::alloc::string::String>,
9388    #[prost(uint64, optional, tag = "2")]
9389    pub callstack_iid: ::core::option::Option<u64>,
9390}
9391/// Proto definition based on the `DiskIo_TypeGroup1/2/3` class definitions.
9392#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9393pub struct DiskIoEtwEvent {
9394    #[prost(uint32, optional, tag = "1")]
9395    pub disk_number: ::core::option::Option<u32>,
9396    #[prost(uint32, optional, tag = "2")]
9397    pub irp_flags: ::core::option::Option<u32>,
9398    #[prost(uint32, optional, tag = "3")]
9399    pub transfer_size: ::core::option::Option<u32>,
9400    #[prost(int64, optional, tag = "4")]
9401    pub byte_offset: ::core::option::Option<i64>,
9402    #[prost(uint64, optional, tag = "5")]
9403    pub file_object: ::core::option::Option<u64>,
9404    #[prost(uint64, optional, tag = "6")]
9405    pub irp_ptr: ::core::option::Option<u64>,
9406    #[prost(int64, optional, tag = "7")]
9407    pub response_time: ::core::option::Option<i64>,
9408    #[prost(uint32, optional, tag = "8")]
9409    pub issuing_thread_id: ::core::option::Option<u32>,
9410    #[prost(uint32, optional, tag = "9")]
9411    pub opcode: ::core::option::Option<u32>,
9412}
9413#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9414pub struct EtwTraceEvent {
9415    #[prost(uint64, optional, tag = "1")]
9416    pub timestamp: ::core::option::Option<u64>,
9417    #[prost(uint32, optional, tag = "4")]
9418    pub cpu: ::core::option::Option<u32>,
9419    #[prost(uint32, optional, tag = "5")]
9420    pub thread_id: ::core::option::Option<u32>,
9421    #[prost(
9422        oneof = "etw_trace_event::Event",
9423        tags = "2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15"
9424    )]
9425    pub event: ::core::option::Option<etw_trace_event::Event>,
9426}
9427/// Nested message and enum types in `EtwTraceEvent`.
9428pub mod etw_trace_event {
9429    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9430    pub enum Event {
9431        #[prost(message, tag = "2")]
9432        CSwitch(super::CSwitchEtwEvent),
9433        #[prost(message, tag = "3")]
9434        ReadyThread(super::ReadyThreadEtwEvent),
9435        #[prost(message, tag = "6")]
9436        MemInfo(super::MemInfoEtwEvent),
9437        #[prost(message, tag = "7")]
9438        FileIoCreate(super::FileIoCreateEtwEvent),
9439        #[prost(message, tag = "8")]
9440        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
9441        #[prost(message, tag = "9")]
9442        FileIoInfo(super::FileIoInfoEtwEvent),
9443        #[prost(message, tag = "10")]
9444        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
9445        #[prost(message, tag = "11")]
9446        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
9447        #[prost(message, tag = "12")]
9448        FileIoOpEnd(super::FileIoOpEndEtwEvent),
9449        #[prost(message, tag = "13")]
9450        StackWalk(super::StackWalkEtwEvent),
9451        #[prost(message, tag = "14")]
9452        FileIoPathOperation(super::FileIoPathOperationEtwEvent),
9453        #[prost(message, tag = "15")]
9454        DiskIo(super::DiskIoEtwEvent),
9455    }
9456}
9457/// The result of tracing one or more etw event uses per-processor buffers where
9458/// an in-use buffer is assigned to each processor at all times. Therefore,
9459/// collecting multiple events they should already be synchronized.
9460#[derive(Clone, PartialEq, ::prost::Message)]
9461pub struct EtwTraceEventBundle {
9462    #[prost(uint32, optional, tag = "1")]
9463    pub cpu: ::core::option::Option<u32>,
9464    #[prost(message, repeated, tag = "2")]
9465    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
9466}
9467/// The protocol compiler can output a FileDescriptorSet containing the .proto
9468/// files it parses.
9469#[derive(Clone, PartialEq, ::prost::Message)]
9470pub struct FileDescriptorSet {
9471    #[prost(message, repeated, tag = "1")]
9472    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
9473}
9474/// Describes a complete .proto file.
9475#[derive(Clone, PartialEq, ::prost::Message)]
9476pub struct FileDescriptorProto {
9477    /// file name, relative to root of source tree
9478    #[prost(string, optional, tag = "1")]
9479    pub name: ::core::option::Option<::prost::alloc::string::String>,
9480    /// e.g. "foo", "foo.bar", etc.
9481    #[prost(string, optional, tag = "2")]
9482    pub package: ::core::option::Option<::prost::alloc::string::String>,
9483    /// Names of files imported by this file.
9484    #[prost(string, repeated, tag = "3")]
9485    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9486    /// Indexes of the public imported files in the dependency list above.
9487    #[prost(int32, repeated, packed = "false", tag = "10")]
9488    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
9489    /// Indexes of the weak imported files in the dependency list.
9490    /// For Google-internal migration only. Do not use.
9491    #[prost(int32, repeated, packed = "false", tag = "11")]
9492    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
9493    /// All top-level definitions in this file.
9494    #[prost(message, repeated, tag = "4")]
9495    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9496    #[prost(message, repeated, tag = "5")]
9497    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9498    #[prost(message, repeated, tag = "7")]
9499    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9500}
9501/// Describes a message type.
9502#[derive(Clone, PartialEq, ::prost::Message)]
9503pub struct DescriptorProto {
9504    #[prost(string, optional, tag = "1")]
9505    pub name: ::core::option::Option<::prost::alloc::string::String>,
9506    #[prost(message, repeated, tag = "2")]
9507    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9508    #[prost(message, repeated, tag = "6")]
9509    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9510    #[prost(message, repeated, tag = "3")]
9511    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9512    #[prost(message, repeated, tag = "4")]
9513    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9514    #[prost(message, repeated, tag = "8")]
9515    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
9516    #[prost(message, repeated, tag = "9")]
9517    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
9518    /// Reserved field names, which may not be used by fields in the same message.
9519    /// A given name may only be reserved once.
9520    #[prost(string, repeated, tag = "10")]
9521    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9522}
9523/// Nested message and enum types in `DescriptorProto`.
9524pub mod descriptor_proto {
9525    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
9526    /// fields or extension ranges in the same message. Reserved ranges may
9527    /// not overlap.
9528    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9529    pub struct ReservedRange {
9530        /// Inclusive.
9531        #[prost(int32, optional, tag = "1")]
9532        pub start: ::core::option::Option<i32>,
9533        /// Exclusive.
9534        #[prost(int32, optional, tag = "2")]
9535        pub end: ::core::option::Option<i32>,
9536    }
9537}
9538/// A message representing a option the parser does not recognize. This only
9539/// appears in options protos created by the compiler::Parser class.
9540/// DescriptorPool resolves these when building Descriptor objects. Therefore,
9541/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
9542/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
9543/// in them.
9544#[derive(Clone, PartialEq, ::prost::Message)]
9545pub struct UninterpretedOption {
9546    #[prost(message, repeated, tag = "2")]
9547    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
9548    /// The value of the uninterpreted option, in whatever type the tokenizer
9549    /// identified it as during parsing. Exactly one of these should be set.
9550    #[prost(string, optional, tag = "3")]
9551    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
9552    #[prost(uint64, optional, tag = "4")]
9553    pub positive_int_value: ::core::option::Option<u64>,
9554    #[prost(int64, optional, tag = "5")]
9555    pub negative_int_value: ::core::option::Option<i64>,
9556    #[prost(double, optional, tag = "6")]
9557    pub double_value: ::core::option::Option<f64>,
9558    #[prost(bytes = "vec", optional, tag = "7")]
9559    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9560    #[prost(string, optional, tag = "8")]
9561    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
9562}
9563/// Nested message and enum types in `UninterpretedOption`.
9564pub mod uninterpreted_option {
9565    /// The name of the uninterpreted option.  Each string represents a segment in
9566    /// a dot-separated name.  is_extension is true iff a segment represents an
9567    /// extension (denoted with parentheses in options specs in .proto files).
9568    /// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents
9569    /// "foo.(bar.baz).moo".
9570    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9571    pub struct NamePart {
9572        #[prost(string, optional, tag = "1")]
9573        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
9574        #[prost(bool, optional, tag = "2")]
9575        pub is_extension: ::core::option::Option<bool>,
9576    }
9577}
9578#[derive(Clone, PartialEq, ::prost::Message)]
9579pub struct FieldOptions {
9580    /// The packed option can be enabled for repeated primitive fields to enable
9581    /// a more efficient representation on the wire. Rather than repeatedly
9582    /// writing the tag and type for each element, the entire array is encoded as
9583    /// a single length-delimited blob. In proto3, only explicit setting it to
9584    /// false will avoid using packed encoding.
9585    #[prost(bool, optional, tag = "2")]
9586    pub packed: ::core::option::Option<bool>,
9587    /// The parser stores options it doesn't recognize here. See above.
9588    #[prost(message, repeated, tag = "999")]
9589    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
9590}
9591/// Describes a field within a message.
9592#[derive(Clone, PartialEq, ::prost::Message)]
9593pub struct FieldDescriptorProto {
9594    #[prost(string, optional, tag = "1")]
9595    pub name: ::core::option::Option<::prost::alloc::string::String>,
9596    #[prost(int32, optional, tag = "3")]
9597    pub number: ::core::option::Option<i32>,
9598    #[prost(enumeration = "field_descriptor_proto::Label", optional, tag = "4")]
9599    pub label: ::core::option::Option<i32>,
9600    /// If type_name is set, this need not be set.  If both this and type_name
9601    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9602    #[prost(enumeration = "field_descriptor_proto::Type", optional, tag = "5")]
9603    pub r#type: ::core::option::Option<i32>,
9604    /// For message and enum types, this is the name of the type.  If the name
9605    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9606    /// rules are used to find the type (i.e. first the nested types within this
9607    /// message are searched, then within the parent, on up to the root
9608    /// namespace).
9609    #[prost(string, optional, tag = "6")]
9610    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9611    /// For extensions, this is the name of the type being extended.  It is
9612    /// resolved in the same manner as type_name.
9613    #[prost(string, optional, tag = "2")]
9614    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9615    /// For numeric types, contains the original text representation of the value.
9616    /// For booleans, "true" or "false".
9617    /// For strings, contains the default text contents (not escaped in any way).
9618    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9619    /// TODO(kenton):  Base-64 encode?
9620    #[prost(string, optional, tag = "7")]
9621    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9622    #[prost(message, optional, tag = "8")]
9623    pub options: ::core::option::Option<FieldOptions>,
9624    /// If set, gives the index of a oneof in the containing type's oneof_decl
9625    /// list.  This field is a member of that oneof.
9626    #[prost(int32, optional, tag = "9")]
9627    pub oneof_index: ::core::option::Option<i32>,
9628}
9629/// Nested message and enum types in `FieldDescriptorProto`.
9630pub mod field_descriptor_proto {
9631    #[derive(
9632        Clone,
9633        Copy,
9634        Debug,
9635        PartialEq,
9636        Eq,
9637        Hash,
9638        PartialOrd,
9639        Ord,
9640        ::prost::Enumeration
9641    )]
9642    #[repr(i32)]
9643    pub enum Type {
9644        /// 0 is reserved for errors.
9645        /// Order is weird for historical reasons.
9646        Double = 1,
9647        Float = 2,
9648        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9649        /// negative values are likely.
9650        Int64 = 3,
9651        Uint64 = 4,
9652        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9653        /// negative values are likely.
9654        Int32 = 5,
9655        Fixed64 = 6,
9656        Fixed32 = 7,
9657        Bool = 8,
9658        String = 9,
9659        /// Tag-delimited aggregate.
9660        /// Group type is deprecated and not supported in proto3. However, Proto3
9661        /// implementations should still be able to parse the group wire format and
9662        /// treat group fields as unknown fields.
9663        Group = 10,
9664        /// Length-delimited aggregate.
9665        Message = 11,
9666        /// New in version 2.
9667        Bytes = 12,
9668        Uint32 = 13,
9669        Enum = 14,
9670        Sfixed32 = 15,
9671        Sfixed64 = 16,
9672        /// Uses ZigZag encoding.
9673        Sint32 = 17,
9674        /// Uses ZigZag encoding.
9675        Sint64 = 18,
9676    }
9677    impl Type {
9678        /// String value of the enum field names used in the ProtoBuf definition.
9679        ///
9680        /// The values are not transformed in any way and thus are considered stable
9681        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9682        pub fn as_str_name(&self) -> &'static str {
9683            match self {
9684                Self::Double => "TYPE_DOUBLE",
9685                Self::Float => "TYPE_FLOAT",
9686                Self::Int64 => "TYPE_INT64",
9687                Self::Uint64 => "TYPE_UINT64",
9688                Self::Int32 => "TYPE_INT32",
9689                Self::Fixed64 => "TYPE_FIXED64",
9690                Self::Fixed32 => "TYPE_FIXED32",
9691                Self::Bool => "TYPE_BOOL",
9692                Self::String => "TYPE_STRING",
9693                Self::Group => "TYPE_GROUP",
9694                Self::Message => "TYPE_MESSAGE",
9695                Self::Bytes => "TYPE_BYTES",
9696                Self::Uint32 => "TYPE_UINT32",
9697                Self::Enum => "TYPE_ENUM",
9698                Self::Sfixed32 => "TYPE_SFIXED32",
9699                Self::Sfixed64 => "TYPE_SFIXED64",
9700                Self::Sint32 => "TYPE_SINT32",
9701                Self::Sint64 => "TYPE_SINT64",
9702            }
9703        }
9704        /// Creates an enum from field names used in the ProtoBuf definition.
9705        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9706            match value {
9707                "TYPE_DOUBLE" => Some(Self::Double),
9708                "TYPE_FLOAT" => Some(Self::Float),
9709                "TYPE_INT64" => Some(Self::Int64),
9710                "TYPE_UINT64" => Some(Self::Uint64),
9711                "TYPE_INT32" => Some(Self::Int32),
9712                "TYPE_FIXED64" => Some(Self::Fixed64),
9713                "TYPE_FIXED32" => Some(Self::Fixed32),
9714                "TYPE_BOOL" => Some(Self::Bool),
9715                "TYPE_STRING" => Some(Self::String),
9716                "TYPE_GROUP" => Some(Self::Group),
9717                "TYPE_MESSAGE" => Some(Self::Message),
9718                "TYPE_BYTES" => Some(Self::Bytes),
9719                "TYPE_UINT32" => Some(Self::Uint32),
9720                "TYPE_ENUM" => Some(Self::Enum),
9721                "TYPE_SFIXED32" => Some(Self::Sfixed32),
9722                "TYPE_SFIXED64" => Some(Self::Sfixed64),
9723                "TYPE_SINT32" => Some(Self::Sint32),
9724                "TYPE_SINT64" => Some(Self::Sint64),
9725                _ => None,
9726            }
9727        }
9728    }
9729    #[derive(
9730        Clone,
9731        Copy,
9732        Debug,
9733        PartialEq,
9734        Eq,
9735        Hash,
9736        PartialOrd,
9737        Ord,
9738        ::prost::Enumeration
9739    )]
9740    #[repr(i32)]
9741    pub enum Label {
9742        /// 0 is reserved for errors
9743        Optional = 1,
9744        Required = 2,
9745        Repeated = 3,
9746    }
9747    impl Label {
9748        /// String value of the enum field names used in the ProtoBuf definition.
9749        ///
9750        /// The values are not transformed in any way and thus are considered stable
9751        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9752        pub fn as_str_name(&self) -> &'static str {
9753            match self {
9754                Self::Optional => "LABEL_OPTIONAL",
9755                Self::Required => "LABEL_REQUIRED",
9756                Self::Repeated => "LABEL_REPEATED",
9757            }
9758        }
9759        /// Creates an enum from field names used in the ProtoBuf definition.
9760        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9761            match value {
9762                "LABEL_OPTIONAL" => Some(Self::Optional),
9763                "LABEL_REQUIRED" => Some(Self::Required),
9764                "LABEL_REPEATED" => Some(Self::Repeated),
9765                _ => None,
9766            }
9767        }
9768    }
9769}
9770/// Describes a oneof.
9771#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9772pub struct OneofDescriptorProto {
9773    #[prost(string, optional, tag = "1")]
9774    pub name: ::core::option::Option<::prost::alloc::string::String>,
9775    #[prost(message, optional, tag = "2")]
9776    pub options: ::core::option::Option<OneofOptions>,
9777}
9778/// Describes an enum type.
9779#[derive(Clone, PartialEq, ::prost::Message)]
9780pub struct EnumDescriptorProto {
9781    #[prost(string, optional, tag = "1")]
9782    pub name: ::core::option::Option<::prost::alloc::string::String>,
9783    #[prost(message, repeated, tag = "2")]
9784    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
9785    /// Reserved enum value names, which may not be reused. A given name may only
9786    /// be reserved once.
9787    #[prost(string, repeated, tag = "5")]
9788    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9789}
9790/// Describes a value within an enum.
9791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9792pub struct EnumValueDescriptorProto {
9793    #[prost(string, optional, tag = "1")]
9794    pub name: ::core::option::Option<::prost::alloc::string::String>,
9795    #[prost(int32, optional, tag = "2")]
9796    pub number: ::core::option::Option<i32>,
9797}
9798#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9799pub struct OneofOptions {}
9800/// This message contains descriptors used to parse extension fields of
9801/// TrackEvent.
9802///
9803/// See docs/instrumentation/extensions.md for more details.
9804#[derive(Clone, PartialEq, ::prost::Message)]
9805pub struct ExtensionDescriptor {
9806    /// Optional, for debugging only. The file name or path of the descriptor
9807    /// source. Can be omitted without affecting functionality.
9808    #[prost(string, optional, tag = "3")]
9809    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9810    #[prost(oneof = "extension_descriptor::Descriptor", tags = "1, 2")]
9811    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
9812}
9813/// Nested message and enum types in `ExtensionDescriptor`.
9814pub mod extension_descriptor {
9815    #[derive(Clone, PartialEq, ::prost::Oneof)]
9816    pub enum Descriptor {
9817        #[prost(message, tag = "1")]
9818        ExtensionSet(super::FileDescriptorSet),
9819        /// Same as extension_set, but gzip-compressed. This is used by the tracing
9820        /// service on Android to emit pre-compressed descriptor files from
9821        /// /etc/tracing_descriptors.gz without decompressing them first.
9822        #[prost(bytes, tag = "2")]
9823        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
9824    }
9825}
9826/// Represents the mapping between inode numbers in a block device and their path
9827/// on the filesystem
9828#[derive(Clone, PartialEq, ::prost::Message)]
9829pub struct InodeFileMap {
9830    #[prost(uint64, optional, tag = "1")]
9831    pub block_device_id: ::core::option::Option<u64>,
9832    /// The mount points of the block device, e.g. \["system"\].
9833    #[prost(string, repeated, tag = "2")]
9834    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9835    /// The list of all the entries from the block device
9836    #[prost(message, repeated, tag = "3")]
9837    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
9838}
9839/// Nested message and enum types in `InodeFileMap`.
9840pub mod inode_file_map {
9841    /// Representation of Entry
9842    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9843    pub struct Entry {
9844        #[prost(uint64, optional, tag = "1")]
9845        pub inode_number: ::core::option::Option<u64>,
9846        /// The path to the file, e.g. "etc/file.xml"
9847        /// List of strings for multiple hardlinks
9848        #[prost(string, repeated, tag = "2")]
9849        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9850        #[prost(enumeration = "entry::Type", optional, tag = "3")]
9851        pub r#type: ::core::option::Option<i32>,
9852    }
9853    /// Nested message and enum types in `Entry`.
9854    pub mod entry {
9855        /// The file type
9856        #[derive(
9857            Clone,
9858            Copy,
9859            Debug,
9860            PartialEq,
9861            Eq,
9862            Hash,
9863            PartialOrd,
9864            Ord,
9865            ::prost::Enumeration
9866        )]
9867        #[repr(i32)]
9868        pub enum Type {
9869            Unknown = 0,
9870            File = 1,
9871            Directory = 2,
9872        }
9873        impl Type {
9874            /// String value of the enum field names used in the ProtoBuf definition.
9875            ///
9876            /// The values are not transformed in any way and thus are considered stable
9877            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9878            pub fn as_str_name(&self) -> &'static str {
9879                match self {
9880                    Self::Unknown => "UNKNOWN",
9881                    Self::File => "FILE",
9882                    Self::Directory => "DIRECTORY",
9883                }
9884            }
9885            /// Creates an enum from field names used in the ProtoBuf definition.
9886            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9887                match value {
9888                    "UNKNOWN" => Some(Self::Unknown),
9889                    "FILE" => Some(Self::File),
9890                    "DIRECTORY" => Some(Self::Directory),
9891                    _ => None,
9892                }
9893            }
9894        }
9895    }
9896}
9897#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9898pub struct AndroidFsDatareadEndFtraceEvent {
9899    #[prost(int32, optional, tag = "1")]
9900    pub bytes: ::core::option::Option<i32>,
9901    #[prost(uint64, optional, tag = "2")]
9902    pub ino: ::core::option::Option<u64>,
9903    #[prost(int64, optional, tag = "3")]
9904    pub offset: ::core::option::Option<i64>,
9905}
9906#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9907pub struct AndroidFsDatareadStartFtraceEvent {
9908    #[prost(int32, optional, tag = "1")]
9909    pub bytes: ::core::option::Option<i32>,
9910    #[prost(string, optional, tag = "2")]
9911    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9912    #[prost(int64, optional, tag = "3")]
9913    pub i_size: ::core::option::Option<i64>,
9914    #[prost(uint64, optional, tag = "4")]
9915    pub ino: ::core::option::Option<u64>,
9916    #[prost(int64, optional, tag = "5")]
9917    pub offset: ::core::option::Option<i64>,
9918    #[prost(string, optional, tag = "6")]
9919    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9920    #[prost(int32, optional, tag = "7")]
9921    pub pid: ::core::option::Option<i32>,
9922}
9923#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9924pub struct AndroidFsDatawriteEndFtraceEvent {
9925    #[prost(int32, optional, tag = "1")]
9926    pub bytes: ::core::option::Option<i32>,
9927    #[prost(uint64, optional, tag = "2")]
9928    pub ino: ::core::option::Option<u64>,
9929    #[prost(int64, optional, tag = "3")]
9930    pub offset: ::core::option::Option<i64>,
9931}
9932#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9933pub struct AndroidFsDatawriteStartFtraceEvent {
9934    #[prost(int32, optional, tag = "1")]
9935    pub bytes: ::core::option::Option<i32>,
9936    #[prost(string, optional, tag = "2")]
9937    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9938    #[prost(int64, optional, tag = "3")]
9939    pub i_size: ::core::option::Option<i64>,
9940    #[prost(uint64, optional, tag = "4")]
9941    pub ino: ::core::option::Option<u64>,
9942    #[prost(int64, optional, tag = "5")]
9943    pub offset: ::core::option::Option<i64>,
9944    #[prost(string, optional, tag = "6")]
9945    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9946    #[prost(int32, optional, tag = "7")]
9947    pub pid: ::core::option::Option<i32>,
9948}
9949#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9950pub struct AndroidFsFsyncEndFtraceEvent {
9951    #[prost(int32, optional, tag = "1")]
9952    pub bytes: ::core::option::Option<i32>,
9953    #[prost(uint64, optional, tag = "2")]
9954    pub ino: ::core::option::Option<u64>,
9955    #[prost(int64, optional, tag = "3")]
9956    pub offset: ::core::option::Option<i64>,
9957}
9958#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9959pub struct AndroidFsFsyncStartFtraceEvent {
9960    #[prost(string, optional, tag = "1")]
9961    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9962    #[prost(int64, optional, tag = "2")]
9963    pub i_size: ::core::option::Option<i64>,
9964    #[prost(uint64, optional, tag = "3")]
9965    pub ino: ::core::option::Option<u64>,
9966    #[prost(string, optional, tag = "4")]
9967    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9968    #[prost(int32, optional, tag = "5")]
9969    pub pid: ::core::option::Option<i32>,
9970}
9971#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9972pub struct BclIrqTriggerFtraceEvent {
9973    #[prost(int32, optional, tag = "1")]
9974    pub id: ::core::option::Option<i32>,
9975    #[prost(int32, optional, tag = "2")]
9976    pub throttle: ::core::option::Option<i32>,
9977    #[prost(int32, optional, tag = "3")]
9978    pub cpu0_limit: ::core::option::Option<i32>,
9979    #[prost(int32, optional, tag = "4")]
9980    pub cpu1_limit: ::core::option::Option<i32>,
9981    #[prost(int32, optional, tag = "5")]
9982    pub cpu2_limit: ::core::option::Option<i32>,
9983    #[prost(int32, optional, tag = "6")]
9984    pub tpu_limit: ::core::option::Option<i32>,
9985    #[prost(int32, optional, tag = "7")]
9986    pub gpu_limit: ::core::option::Option<i32>,
9987    #[prost(int32, optional, tag = "8")]
9988    pub voltage: ::core::option::Option<i32>,
9989    #[prost(int32, optional, tag = "9")]
9990    pub capacity: ::core::option::Option<i32>,
9991}
9992#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9993pub struct BinderTransactionFtraceEvent {
9994    #[prost(int32, optional, tag = "1")]
9995    pub debug_id: ::core::option::Option<i32>,
9996    #[prost(int32, optional, tag = "2")]
9997    pub target_node: ::core::option::Option<i32>,
9998    #[prost(int32, optional, tag = "3")]
9999    pub to_proc: ::core::option::Option<i32>,
10000    #[prost(int32, optional, tag = "4")]
10001    pub to_thread: ::core::option::Option<i32>,
10002    #[prost(int32, optional, tag = "5")]
10003    pub reply: ::core::option::Option<i32>,
10004    #[prost(uint32, optional, tag = "6")]
10005    pub code: ::core::option::Option<u32>,
10006    #[prost(uint32, optional, tag = "7")]
10007    pub flags: ::core::option::Option<u32>,
10008}
10009#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10010pub struct BinderTransactionReceivedFtraceEvent {
10011    #[prost(int32, optional, tag = "1")]
10012    pub debug_id: ::core::option::Option<i32>,
10013}
10014#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10015pub struct BinderSetPriorityFtraceEvent {
10016    #[prost(int32, optional, tag = "1")]
10017    pub proc: ::core::option::Option<i32>,
10018    #[prost(int32, optional, tag = "2")]
10019    pub thread: ::core::option::Option<i32>,
10020    #[prost(uint32, optional, tag = "3")]
10021    pub old_prio: ::core::option::Option<u32>,
10022    #[prost(uint32, optional, tag = "4")]
10023    pub new_prio: ::core::option::Option<u32>,
10024    #[prost(uint32, optional, tag = "5")]
10025    pub desired_prio: ::core::option::Option<u32>,
10026}
10027#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10028pub struct BinderLockFtraceEvent {
10029    #[prost(string, optional, tag = "1")]
10030    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10031}
10032#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10033pub struct BinderLockedFtraceEvent {
10034    #[prost(string, optional, tag = "1")]
10035    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10036}
10037#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10038pub struct BinderUnlockFtraceEvent {
10039    #[prost(string, optional, tag = "1")]
10040    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10041}
10042#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10043pub struct BinderTransactionAllocBufFtraceEvent {
10044    #[prost(uint64, optional, tag = "1")]
10045    pub data_size: ::core::option::Option<u64>,
10046    #[prost(int32, optional, tag = "2")]
10047    pub debug_id: ::core::option::Option<i32>,
10048    #[prost(uint64, optional, tag = "3")]
10049    pub offsets_size: ::core::option::Option<u64>,
10050    #[prost(uint64, optional, tag = "4")]
10051    pub extra_buffers_size: ::core::option::Option<u64>,
10052}
10053#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10054pub struct BinderCommandFtraceEvent {
10055    #[prost(uint32, optional, tag = "1")]
10056    pub cmd: ::core::option::Option<u32>,
10057}
10058#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10059pub struct BinderReturnFtraceEvent {
10060    #[prost(uint32, optional, tag = "1")]
10061    pub cmd: ::core::option::Option<u32>,
10062}
10063#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10064pub struct BlockRqIssueFtraceEvent {
10065    #[prost(uint64, optional, tag = "1")]
10066    pub dev: ::core::option::Option<u64>,
10067    #[prost(uint64, optional, tag = "2")]
10068    pub sector: ::core::option::Option<u64>,
10069    #[prost(uint32, optional, tag = "3")]
10070    pub nr_sector: ::core::option::Option<u32>,
10071    #[prost(uint32, optional, tag = "4")]
10072    pub bytes: ::core::option::Option<u32>,
10073    #[prost(string, optional, tag = "5")]
10074    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10075    #[prost(string, optional, tag = "6")]
10076    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10077    #[prost(string, optional, tag = "7")]
10078    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10079}
10080#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10081pub struct BlockBioBackmergeFtraceEvent {
10082    #[prost(uint64, optional, tag = "1")]
10083    pub dev: ::core::option::Option<u64>,
10084    #[prost(uint64, optional, tag = "2")]
10085    pub sector: ::core::option::Option<u64>,
10086    #[prost(uint32, optional, tag = "3")]
10087    pub nr_sector: ::core::option::Option<u32>,
10088    #[prost(string, optional, tag = "4")]
10089    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10090    #[prost(string, optional, tag = "5")]
10091    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10092}
10093#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10094pub struct BlockBioBounceFtraceEvent {
10095    #[prost(uint64, optional, tag = "1")]
10096    pub dev: ::core::option::Option<u64>,
10097    #[prost(uint64, optional, tag = "2")]
10098    pub sector: ::core::option::Option<u64>,
10099    #[prost(uint32, optional, tag = "3")]
10100    pub nr_sector: ::core::option::Option<u32>,
10101    #[prost(string, optional, tag = "4")]
10102    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10103    #[prost(string, optional, tag = "5")]
10104    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10105}
10106#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10107pub struct BlockBioCompleteFtraceEvent {
10108    #[prost(uint64, optional, tag = "1")]
10109    pub dev: ::core::option::Option<u64>,
10110    #[prost(uint64, optional, tag = "2")]
10111    pub sector: ::core::option::Option<u64>,
10112    #[prost(uint32, optional, tag = "3")]
10113    pub nr_sector: ::core::option::Option<u32>,
10114    #[prost(int32, optional, tag = "4")]
10115    pub error: ::core::option::Option<i32>,
10116    #[prost(string, optional, tag = "5")]
10117    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10118}
10119#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10120pub struct BlockBioFrontmergeFtraceEvent {
10121    #[prost(uint64, optional, tag = "1")]
10122    pub dev: ::core::option::Option<u64>,
10123    #[prost(uint64, optional, tag = "2")]
10124    pub sector: ::core::option::Option<u64>,
10125    #[prost(uint32, optional, tag = "3")]
10126    pub nr_sector: ::core::option::Option<u32>,
10127    #[prost(string, optional, tag = "4")]
10128    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10129    #[prost(string, optional, tag = "5")]
10130    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10131}
10132#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10133pub struct BlockBioQueueFtraceEvent {
10134    #[prost(uint64, optional, tag = "1")]
10135    pub dev: ::core::option::Option<u64>,
10136    #[prost(uint64, optional, tag = "2")]
10137    pub sector: ::core::option::Option<u64>,
10138    #[prost(uint32, optional, tag = "3")]
10139    pub nr_sector: ::core::option::Option<u32>,
10140    #[prost(string, optional, tag = "4")]
10141    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10142    #[prost(string, optional, tag = "5")]
10143    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10144}
10145#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10146pub struct BlockBioRemapFtraceEvent {
10147    #[prost(uint64, optional, tag = "1")]
10148    pub dev: ::core::option::Option<u64>,
10149    #[prost(uint64, optional, tag = "2")]
10150    pub sector: ::core::option::Option<u64>,
10151    #[prost(uint32, optional, tag = "3")]
10152    pub nr_sector: ::core::option::Option<u32>,
10153    #[prost(uint64, optional, tag = "4")]
10154    pub old_dev: ::core::option::Option<u64>,
10155    #[prost(uint64, optional, tag = "5")]
10156    pub old_sector: ::core::option::Option<u64>,
10157    #[prost(string, optional, tag = "6")]
10158    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10159}
10160#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10161pub struct BlockDirtyBufferFtraceEvent {
10162    #[prost(uint64, optional, tag = "1")]
10163    pub dev: ::core::option::Option<u64>,
10164    #[prost(uint64, optional, tag = "2")]
10165    pub sector: ::core::option::Option<u64>,
10166    #[prost(uint64, optional, tag = "3")]
10167    pub size: ::core::option::Option<u64>,
10168}
10169#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10170pub struct BlockGetrqFtraceEvent {
10171    #[prost(uint64, optional, tag = "1")]
10172    pub dev: ::core::option::Option<u64>,
10173    #[prost(uint64, optional, tag = "2")]
10174    pub sector: ::core::option::Option<u64>,
10175    #[prost(uint32, optional, tag = "3")]
10176    pub nr_sector: ::core::option::Option<u32>,
10177    #[prost(string, optional, tag = "4")]
10178    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10179    #[prost(string, optional, tag = "5")]
10180    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10181}
10182#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10183pub struct BlockPlugFtraceEvent {
10184    #[prost(string, optional, tag = "1")]
10185    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10186}
10187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10188pub struct BlockRqAbortFtraceEvent {
10189    #[prost(uint64, optional, tag = "1")]
10190    pub dev: ::core::option::Option<u64>,
10191    #[prost(uint64, optional, tag = "2")]
10192    pub sector: ::core::option::Option<u64>,
10193    #[prost(uint32, optional, tag = "3")]
10194    pub nr_sector: ::core::option::Option<u32>,
10195    #[prost(int32, optional, tag = "4")]
10196    pub errors: ::core::option::Option<i32>,
10197    #[prost(string, optional, tag = "5")]
10198    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10199    #[prost(string, optional, tag = "6")]
10200    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10201}
10202#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10203pub struct BlockRqCompleteFtraceEvent {
10204    #[prost(uint64, optional, tag = "1")]
10205    pub dev: ::core::option::Option<u64>,
10206    #[prost(uint64, optional, tag = "2")]
10207    pub sector: ::core::option::Option<u64>,
10208    #[prost(uint32, optional, tag = "3")]
10209    pub nr_sector: ::core::option::Option<u32>,
10210    #[prost(int32, optional, tag = "4")]
10211    pub errors: ::core::option::Option<i32>,
10212    #[prost(string, optional, tag = "5")]
10213    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10214    #[prost(string, optional, tag = "6")]
10215    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10216    #[prost(int32, optional, tag = "7")]
10217    pub error: ::core::option::Option<i32>,
10218}
10219#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10220pub struct BlockRqInsertFtraceEvent {
10221    #[prost(uint64, optional, tag = "1")]
10222    pub dev: ::core::option::Option<u64>,
10223    #[prost(uint64, optional, tag = "2")]
10224    pub sector: ::core::option::Option<u64>,
10225    #[prost(uint32, optional, tag = "3")]
10226    pub nr_sector: ::core::option::Option<u32>,
10227    #[prost(uint32, optional, tag = "4")]
10228    pub bytes: ::core::option::Option<u32>,
10229    #[prost(string, optional, tag = "5")]
10230    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10231    #[prost(string, optional, tag = "6")]
10232    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10233    #[prost(string, optional, tag = "7")]
10234    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10235}
10236#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10237pub struct BlockRqRemapFtraceEvent {
10238    #[prost(uint64, optional, tag = "1")]
10239    pub dev: ::core::option::Option<u64>,
10240    #[prost(uint64, optional, tag = "2")]
10241    pub sector: ::core::option::Option<u64>,
10242    #[prost(uint32, optional, tag = "3")]
10243    pub nr_sector: ::core::option::Option<u32>,
10244    #[prost(uint64, optional, tag = "4")]
10245    pub old_dev: ::core::option::Option<u64>,
10246    #[prost(uint64, optional, tag = "5")]
10247    pub old_sector: ::core::option::Option<u64>,
10248    #[prost(uint32, optional, tag = "6")]
10249    pub nr_bios: ::core::option::Option<u32>,
10250    #[prost(string, optional, tag = "7")]
10251    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10252}
10253#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10254pub struct BlockRqRequeueFtraceEvent {
10255    #[prost(uint64, optional, tag = "1")]
10256    pub dev: ::core::option::Option<u64>,
10257    #[prost(uint64, optional, tag = "2")]
10258    pub sector: ::core::option::Option<u64>,
10259    #[prost(uint32, optional, tag = "3")]
10260    pub nr_sector: ::core::option::Option<u32>,
10261    #[prost(int32, optional, tag = "4")]
10262    pub errors: ::core::option::Option<i32>,
10263    #[prost(string, optional, tag = "5")]
10264    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10265    #[prost(string, optional, tag = "6")]
10266    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10267}
10268#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10269pub struct BlockSleeprqFtraceEvent {
10270    #[prost(uint64, optional, tag = "1")]
10271    pub dev: ::core::option::Option<u64>,
10272    #[prost(uint64, optional, tag = "2")]
10273    pub sector: ::core::option::Option<u64>,
10274    #[prost(uint32, optional, tag = "3")]
10275    pub nr_sector: ::core::option::Option<u32>,
10276    #[prost(string, optional, tag = "4")]
10277    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10278    #[prost(string, optional, tag = "5")]
10279    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10280}
10281#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10282pub struct BlockSplitFtraceEvent {
10283    #[prost(uint64, optional, tag = "1")]
10284    pub dev: ::core::option::Option<u64>,
10285    #[prost(uint64, optional, tag = "2")]
10286    pub sector: ::core::option::Option<u64>,
10287    #[prost(uint64, optional, tag = "3")]
10288    pub new_sector: ::core::option::Option<u64>,
10289    #[prost(string, optional, tag = "4")]
10290    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10291    #[prost(string, optional, tag = "5")]
10292    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10293}
10294#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10295pub struct BlockTouchBufferFtraceEvent {
10296    #[prost(uint64, optional, tag = "1")]
10297    pub dev: ::core::option::Option<u64>,
10298    #[prost(uint64, optional, tag = "2")]
10299    pub sector: ::core::option::Option<u64>,
10300    #[prost(uint64, optional, tag = "3")]
10301    pub size: ::core::option::Option<u64>,
10302}
10303#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10304pub struct BlockUnplugFtraceEvent {
10305    #[prost(int32, optional, tag = "1")]
10306    pub nr_rq: ::core::option::Option<i32>,
10307    #[prost(string, optional, tag = "2")]
10308    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10309}
10310#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10311pub struct BlockIoStartFtraceEvent {
10312    #[prost(uint64, optional, tag = "1")]
10313    pub dev: ::core::option::Option<u64>,
10314    #[prost(uint64, optional, tag = "2")]
10315    pub sector: ::core::option::Option<u64>,
10316    #[prost(uint32, optional, tag = "3")]
10317    pub nr_sector: ::core::option::Option<u32>,
10318    #[prost(uint32, optional, tag = "4")]
10319    pub bytes: ::core::option::Option<u32>,
10320    #[prost(uint32, optional, tag = "5")]
10321    pub ioprio: ::core::option::Option<u32>,
10322    #[prost(string, optional, tag = "6")]
10323    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10324    #[prost(string, optional, tag = "7")]
10325    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10326    #[prost(string, optional, tag = "8")]
10327    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10328}
10329#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10330pub struct BlockIoDoneFtraceEvent {
10331    #[prost(uint64, optional, tag = "1")]
10332    pub dev: ::core::option::Option<u64>,
10333    #[prost(uint64, optional, tag = "2")]
10334    pub sector: ::core::option::Option<u64>,
10335    #[prost(uint32, optional, tag = "3")]
10336    pub nr_sector: ::core::option::Option<u32>,
10337    #[prost(uint32, optional, tag = "4")]
10338    pub bytes: ::core::option::Option<u32>,
10339    #[prost(uint32, optional, tag = "5")]
10340    pub ioprio: ::core::option::Option<u32>,
10341    #[prost(string, optional, tag = "6")]
10342    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10343    #[prost(string, optional, tag = "7")]
10344    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10345    #[prost(string, optional, tag = "8")]
10346    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10347}
10348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10349pub struct CgroupAttachTaskFtraceEvent {
10350    #[prost(int32, optional, tag = "1")]
10351    pub dst_root: ::core::option::Option<i32>,
10352    #[prost(int32, optional, tag = "2")]
10353    pub dst_id: ::core::option::Option<i32>,
10354    #[prost(int32, optional, tag = "3")]
10355    pub pid: ::core::option::Option<i32>,
10356    #[prost(string, optional, tag = "4")]
10357    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10358    #[prost(string, optional, tag = "5")]
10359    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10360    #[prost(int32, optional, tag = "6")]
10361    pub dst_level: ::core::option::Option<i32>,
10362    #[prost(string, optional, tag = "7")]
10363    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10364}
10365#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10366pub struct CgroupMkdirFtraceEvent {
10367    #[prost(int32, optional, tag = "1")]
10368    pub root: ::core::option::Option<i32>,
10369    #[prost(int32, optional, tag = "2")]
10370    pub id: ::core::option::Option<i32>,
10371    #[prost(string, optional, tag = "3")]
10372    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10373    #[prost(int32, optional, tag = "4")]
10374    pub level: ::core::option::Option<i32>,
10375    #[prost(string, optional, tag = "5")]
10376    pub path: ::core::option::Option<::prost::alloc::string::String>,
10377}
10378#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10379pub struct CgroupRemountFtraceEvent {
10380    #[prost(int32, optional, tag = "1")]
10381    pub root: ::core::option::Option<i32>,
10382    #[prost(uint32, optional, tag = "2")]
10383    pub ss_mask: ::core::option::Option<u32>,
10384    #[prost(string, optional, tag = "3")]
10385    pub name: ::core::option::Option<::prost::alloc::string::String>,
10386}
10387#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10388pub struct CgroupRmdirFtraceEvent {
10389    #[prost(int32, optional, tag = "1")]
10390    pub root: ::core::option::Option<i32>,
10391    #[prost(int32, optional, tag = "2")]
10392    pub id: ::core::option::Option<i32>,
10393    #[prost(string, optional, tag = "3")]
10394    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10395    #[prost(int32, optional, tag = "4")]
10396    pub level: ::core::option::Option<i32>,
10397    #[prost(string, optional, tag = "5")]
10398    pub path: ::core::option::Option<::prost::alloc::string::String>,
10399}
10400#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10401pub struct CgroupTransferTasksFtraceEvent {
10402    #[prost(int32, optional, tag = "1")]
10403    pub dst_root: ::core::option::Option<i32>,
10404    #[prost(int32, optional, tag = "2")]
10405    pub dst_id: ::core::option::Option<i32>,
10406    #[prost(int32, optional, tag = "3")]
10407    pub pid: ::core::option::Option<i32>,
10408    #[prost(string, optional, tag = "4")]
10409    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10410    #[prost(string, optional, tag = "5")]
10411    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10412    #[prost(int32, optional, tag = "6")]
10413    pub dst_level: ::core::option::Option<i32>,
10414    #[prost(string, optional, tag = "7")]
10415    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10416}
10417#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10418pub struct CgroupDestroyRootFtraceEvent {
10419    #[prost(int32, optional, tag = "1")]
10420    pub root: ::core::option::Option<i32>,
10421    #[prost(uint32, optional, tag = "2")]
10422    pub ss_mask: ::core::option::Option<u32>,
10423    #[prost(string, optional, tag = "3")]
10424    pub name: ::core::option::Option<::prost::alloc::string::String>,
10425}
10426#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10427pub struct CgroupReleaseFtraceEvent {
10428    #[prost(int32, optional, tag = "1")]
10429    pub root: ::core::option::Option<i32>,
10430    #[prost(int32, optional, tag = "2")]
10431    pub id: ::core::option::Option<i32>,
10432    #[prost(string, optional, tag = "3")]
10433    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10434    #[prost(int32, optional, tag = "4")]
10435    pub level: ::core::option::Option<i32>,
10436    #[prost(string, optional, tag = "5")]
10437    pub path: ::core::option::Option<::prost::alloc::string::String>,
10438}
10439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10440pub struct CgroupRenameFtraceEvent {
10441    #[prost(int32, optional, tag = "1")]
10442    pub root: ::core::option::Option<i32>,
10443    #[prost(int32, optional, tag = "2")]
10444    pub id: ::core::option::Option<i32>,
10445    #[prost(string, optional, tag = "3")]
10446    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10447    #[prost(int32, optional, tag = "4")]
10448    pub level: ::core::option::Option<i32>,
10449    #[prost(string, optional, tag = "5")]
10450    pub path: ::core::option::Option<::prost::alloc::string::String>,
10451}
10452#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10453pub struct CgroupSetupRootFtraceEvent {
10454    #[prost(int32, optional, tag = "1")]
10455    pub root: ::core::option::Option<i32>,
10456    #[prost(uint32, optional, tag = "2")]
10457    pub ss_mask: ::core::option::Option<u32>,
10458    #[prost(string, optional, tag = "3")]
10459    pub name: ::core::option::Option<::prost::alloc::string::String>,
10460}
10461#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10462pub struct ClkEnableFtraceEvent {
10463    #[prost(string, optional, tag = "1")]
10464    pub name: ::core::option::Option<::prost::alloc::string::String>,
10465}
10466#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10467pub struct ClkDisableFtraceEvent {
10468    #[prost(string, optional, tag = "1")]
10469    pub name: ::core::option::Option<::prost::alloc::string::String>,
10470}
10471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10472pub struct ClkSetRateFtraceEvent {
10473    #[prost(string, optional, tag = "1")]
10474    pub name: ::core::option::Option<::prost::alloc::string::String>,
10475    #[prost(uint64, optional, tag = "2")]
10476    pub rate: ::core::option::Option<u64>,
10477}
10478#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10479pub struct CmaAllocStartFtraceEvent {
10480    #[prost(uint32, optional, tag = "1")]
10481    pub align: ::core::option::Option<u32>,
10482    #[prost(uint32, optional, tag = "2")]
10483    pub count: ::core::option::Option<u32>,
10484    #[prost(string, optional, tag = "3")]
10485    pub name: ::core::option::Option<::prost::alloc::string::String>,
10486}
10487#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10488pub struct CmaAllocInfoFtraceEvent {
10489    #[prost(uint32, optional, tag = "1")]
10490    pub align: ::core::option::Option<u32>,
10491    #[prost(uint32, optional, tag = "2")]
10492    pub count: ::core::option::Option<u32>,
10493    #[prost(uint32, optional, tag = "3")]
10494    pub err_iso: ::core::option::Option<u32>,
10495    #[prost(uint32, optional, tag = "4")]
10496    pub err_mig: ::core::option::Option<u32>,
10497    #[prost(uint32, optional, tag = "5")]
10498    pub err_test: ::core::option::Option<u32>,
10499    #[prost(string, optional, tag = "6")]
10500    pub name: ::core::option::Option<::prost::alloc::string::String>,
10501    #[prost(uint64, optional, tag = "7")]
10502    pub nr_mapped: ::core::option::Option<u64>,
10503    #[prost(uint64, optional, tag = "8")]
10504    pub nr_migrated: ::core::option::Option<u64>,
10505    #[prost(uint64, optional, tag = "9")]
10506    pub nr_reclaimed: ::core::option::Option<u64>,
10507    #[prost(uint64, optional, tag = "10")]
10508    pub pfn: ::core::option::Option<u64>,
10509}
10510#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10511pub struct CmaAllocFinishFtraceEvent {
10512    #[prost(string, optional, tag = "1")]
10513    pub name: ::core::option::Option<::prost::alloc::string::String>,
10514    #[prost(uint64, optional, tag = "2")]
10515    pub pfn: ::core::option::Option<u64>,
10516    #[prost(uint64, optional, tag = "3")]
10517    pub page: ::core::option::Option<u64>,
10518    #[prost(uint64, optional, tag = "4")]
10519    pub count: ::core::option::Option<u64>,
10520    #[prost(uint32, optional, tag = "5")]
10521    pub align: ::core::option::Option<u32>,
10522    #[prost(int32, optional, tag = "6")]
10523    pub errorno: ::core::option::Option<i32>,
10524}
10525#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10526pub struct MmCompactionBeginFtraceEvent {
10527    #[prost(uint64, optional, tag = "1")]
10528    pub zone_start: ::core::option::Option<u64>,
10529    #[prost(uint64, optional, tag = "2")]
10530    pub migrate_pfn: ::core::option::Option<u64>,
10531    #[prost(uint64, optional, tag = "3")]
10532    pub free_pfn: ::core::option::Option<u64>,
10533    #[prost(uint64, optional, tag = "4")]
10534    pub zone_end: ::core::option::Option<u64>,
10535    #[prost(uint32, optional, tag = "5")]
10536    pub sync: ::core::option::Option<u32>,
10537}
10538#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10539pub struct MmCompactionDeferCompactionFtraceEvent {
10540    #[prost(int32, optional, tag = "1")]
10541    pub nid: ::core::option::Option<i32>,
10542    #[prost(uint32, optional, tag = "2")]
10543    pub idx: ::core::option::Option<u32>,
10544    #[prost(int32, optional, tag = "3")]
10545    pub order: ::core::option::Option<i32>,
10546    #[prost(uint32, optional, tag = "4")]
10547    pub considered: ::core::option::Option<u32>,
10548    #[prost(uint32, optional, tag = "5")]
10549    pub defer_shift: ::core::option::Option<u32>,
10550    #[prost(int32, optional, tag = "6")]
10551    pub order_failed: ::core::option::Option<i32>,
10552}
10553#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10554pub struct MmCompactionDeferredFtraceEvent {
10555    #[prost(int32, optional, tag = "1")]
10556    pub nid: ::core::option::Option<i32>,
10557    #[prost(uint32, optional, tag = "2")]
10558    pub idx: ::core::option::Option<u32>,
10559    #[prost(int32, optional, tag = "3")]
10560    pub order: ::core::option::Option<i32>,
10561    #[prost(uint32, optional, tag = "4")]
10562    pub considered: ::core::option::Option<u32>,
10563    #[prost(uint32, optional, tag = "5")]
10564    pub defer_shift: ::core::option::Option<u32>,
10565    #[prost(int32, optional, tag = "6")]
10566    pub order_failed: ::core::option::Option<i32>,
10567}
10568#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10569pub struct MmCompactionDeferResetFtraceEvent {
10570    #[prost(int32, optional, tag = "1")]
10571    pub nid: ::core::option::Option<i32>,
10572    #[prost(uint32, optional, tag = "2")]
10573    pub idx: ::core::option::Option<u32>,
10574    #[prost(int32, optional, tag = "3")]
10575    pub order: ::core::option::Option<i32>,
10576    #[prost(uint32, optional, tag = "4")]
10577    pub considered: ::core::option::Option<u32>,
10578    #[prost(uint32, optional, tag = "5")]
10579    pub defer_shift: ::core::option::Option<u32>,
10580    #[prost(int32, optional, tag = "6")]
10581    pub order_failed: ::core::option::Option<i32>,
10582}
10583#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10584pub struct MmCompactionEndFtraceEvent {
10585    #[prost(uint64, optional, tag = "1")]
10586    pub zone_start: ::core::option::Option<u64>,
10587    #[prost(uint64, optional, tag = "2")]
10588    pub migrate_pfn: ::core::option::Option<u64>,
10589    #[prost(uint64, optional, tag = "3")]
10590    pub free_pfn: ::core::option::Option<u64>,
10591    #[prost(uint64, optional, tag = "4")]
10592    pub zone_end: ::core::option::Option<u64>,
10593    #[prost(uint32, optional, tag = "5")]
10594    pub sync: ::core::option::Option<u32>,
10595    #[prost(int32, optional, tag = "6")]
10596    pub status: ::core::option::Option<i32>,
10597}
10598#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10599pub struct MmCompactionFinishedFtraceEvent {
10600    #[prost(int32, optional, tag = "1")]
10601    pub nid: ::core::option::Option<i32>,
10602    #[prost(uint32, optional, tag = "2")]
10603    pub idx: ::core::option::Option<u32>,
10604    #[prost(int32, optional, tag = "3")]
10605    pub order: ::core::option::Option<i32>,
10606    #[prost(int32, optional, tag = "4")]
10607    pub ret: ::core::option::Option<i32>,
10608}
10609#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10610pub struct MmCompactionIsolateFreepagesFtraceEvent {
10611    #[prost(uint64, optional, tag = "1")]
10612    pub start_pfn: ::core::option::Option<u64>,
10613    #[prost(uint64, optional, tag = "2")]
10614    pub end_pfn: ::core::option::Option<u64>,
10615    #[prost(uint64, optional, tag = "3")]
10616    pub nr_scanned: ::core::option::Option<u64>,
10617    #[prost(uint64, optional, tag = "4")]
10618    pub nr_taken: ::core::option::Option<u64>,
10619}
10620#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10621pub struct MmCompactionIsolateMigratepagesFtraceEvent {
10622    #[prost(uint64, optional, tag = "1")]
10623    pub start_pfn: ::core::option::Option<u64>,
10624    #[prost(uint64, optional, tag = "2")]
10625    pub end_pfn: ::core::option::Option<u64>,
10626    #[prost(uint64, optional, tag = "3")]
10627    pub nr_scanned: ::core::option::Option<u64>,
10628    #[prost(uint64, optional, tag = "4")]
10629    pub nr_taken: ::core::option::Option<u64>,
10630}
10631#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10632pub struct MmCompactionKcompactdSleepFtraceEvent {
10633    #[prost(int32, optional, tag = "1")]
10634    pub nid: ::core::option::Option<i32>,
10635}
10636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10637pub struct MmCompactionKcompactdWakeFtraceEvent {
10638    #[prost(int32, optional, tag = "1")]
10639    pub nid: ::core::option::Option<i32>,
10640    #[prost(int32, optional, tag = "2")]
10641    pub order: ::core::option::Option<i32>,
10642    #[prost(uint32, optional, tag = "3")]
10643    pub classzone_idx: ::core::option::Option<u32>,
10644    #[prost(uint32, optional, tag = "4")]
10645    pub highest_zoneidx: ::core::option::Option<u32>,
10646}
10647#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10648pub struct MmCompactionMigratepagesFtraceEvent {
10649    #[prost(uint64, optional, tag = "1")]
10650    pub nr_migrated: ::core::option::Option<u64>,
10651    #[prost(uint64, optional, tag = "2")]
10652    pub nr_failed: ::core::option::Option<u64>,
10653}
10654#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10655pub struct MmCompactionSuitableFtraceEvent {
10656    #[prost(int32, optional, tag = "1")]
10657    pub nid: ::core::option::Option<i32>,
10658    #[prost(uint32, optional, tag = "2")]
10659    pub idx: ::core::option::Option<u32>,
10660    #[prost(int32, optional, tag = "3")]
10661    pub order: ::core::option::Option<i32>,
10662    #[prost(int32, optional, tag = "4")]
10663    pub ret: ::core::option::Option<i32>,
10664}
10665#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10666pub struct MmCompactionTryToCompactPagesFtraceEvent {
10667    #[prost(int32, optional, tag = "1")]
10668    pub order: ::core::option::Option<i32>,
10669    #[prost(uint32, optional, tag = "2")]
10670    pub gfp_mask: ::core::option::Option<u32>,
10671    #[prost(uint32, optional, tag = "3")]
10672    pub mode: ::core::option::Option<u32>,
10673    #[prost(int32, optional, tag = "4")]
10674    pub prio: ::core::option::Option<i32>,
10675}
10676#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10677pub struct MmCompactionWakeupKcompactdFtraceEvent {
10678    #[prost(int32, optional, tag = "1")]
10679    pub nid: ::core::option::Option<i32>,
10680    #[prost(int32, optional, tag = "2")]
10681    pub order: ::core::option::Option<i32>,
10682    #[prost(uint32, optional, tag = "3")]
10683    pub classzone_idx: ::core::option::Option<u32>,
10684    #[prost(uint32, optional, tag = "4")]
10685    pub highest_zoneidx: ::core::option::Option<u32>,
10686}
10687#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10688pub struct ParamSetValueCpmFtraceEvent {
10689    #[prost(string, optional, tag = "1")]
10690    pub body: ::core::option::Option<::prost::alloc::string::String>,
10691    #[prost(uint32, optional, tag = "2")]
10692    pub value: ::core::option::Option<u32>,
10693    #[prost(int64, optional, tag = "3")]
10694    pub timestamp: ::core::option::Option<i64>,
10695}
10696#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10697pub struct CpuhpExitFtraceEvent {
10698    #[prost(uint32, optional, tag = "1")]
10699    pub cpu: ::core::option::Option<u32>,
10700    #[prost(int32, optional, tag = "2")]
10701    pub idx: ::core::option::Option<i32>,
10702    #[prost(int32, optional, tag = "3")]
10703    pub ret: ::core::option::Option<i32>,
10704    #[prost(int32, optional, tag = "4")]
10705    pub state: ::core::option::Option<i32>,
10706}
10707#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10708pub struct CpuhpMultiEnterFtraceEvent {
10709    #[prost(uint32, optional, tag = "1")]
10710    pub cpu: ::core::option::Option<u32>,
10711    #[prost(uint64, optional, tag = "2")]
10712    pub fun: ::core::option::Option<u64>,
10713    #[prost(int32, optional, tag = "3")]
10714    pub idx: ::core::option::Option<i32>,
10715    #[prost(int32, optional, tag = "4")]
10716    pub target: ::core::option::Option<i32>,
10717}
10718#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10719pub struct CpuhpEnterFtraceEvent {
10720    #[prost(uint32, optional, tag = "1")]
10721    pub cpu: ::core::option::Option<u32>,
10722    #[prost(uint64, optional, tag = "2")]
10723    pub fun: ::core::option::Option<u64>,
10724    #[prost(int32, optional, tag = "3")]
10725    pub idx: ::core::option::Option<i32>,
10726    #[prost(int32, optional, tag = "4")]
10727    pub target: ::core::option::Option<i32>,
10728}
10729#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10730pub struct CpuhpLatencyFtraceEvent {
10731    #[prost(uint32, optional, tag = "1")]
10732    pub cpu: ::core::option::Option<u32>,
10733    #[prost(int32, optional, tag = "2")]
10734    pub ret: ::core::option::Option<i32>,
10735    #[prost(uint32, optional, tag = "3")]
10736    pub state: ::core::option::Option<u32>,
10737    #[prost(uint64, optional, tag = "4")]
10738    pub time: ::core::option::Option<u64>,
10739}
10740#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10741pub struct CpuhpPauseFtraceEvent {
10742    #[prost(uint32, optional, tag = "1")]
10743    pub active_cpus: ::core::option::Option<u32>,
10744    #[prost(uint32, optional, tag = "2")]
10745    pub cpus: ::core::option::Option<u32>,
10746    #[prost(uint32, optional, tag = "3")]
10747    pub pause: ::core::option::Option<u32>,
10748    #[prost(uint32, optional, tag = "4")]
10749    pub time: ::core::option::Option<u32>,
10750}
10751#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10752pub struct CrosEcSensorhubDataFtraceEvent {
10753    #[prost(int64, optional, tag = "1")]
10754    pub current_time: ::core::option::Option<i64>,
10755    #[prost(int64, optional, tag = "2")]
10756    pub current_timestamp: ::core::option::Option<i64>,
10757    #[prost(int64, optional, tag = "3")]
10758    pub delta: ::core::option::Option<i64>,
10759    #[prost(uint32, optional, tag = "4")]
10760    pub ec_fifo_timestamp: ::core::option::Option<u32>,
10761    #[prost(uint32, optional, tag = "5")]
10762    pub ec_sensor_num: ::core::option::Option<u32>,
10763    #[prost(int64, optional, tag = "6")]
10764    pub fifo_timestamp: ::core::option::Option<i64>,
10765}
10766#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10767pub struct DcvshFreqFtraceEvent {
10768    #[prost(uint64, optional, tag = "1")]
10769    pub cpu: ::core::option::Option<u64>,
10770    #[prost(uint64, optional, tag = "2")]
10771    pub freq: ::core::option::Option<u64>,
10772}
10773#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10774pub struct DevfreqFrequencyFtraceEvent {
10775    #[prost(string, optional, tag = "1")]
10776    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
10777    #[prost(uint64, optional, tag = "2")]
10778    pub freq: ::core::option::Option<u64>,
10779    #[prost(uint64, optional, tag = "3")]
10780    pub prev_freq: ::core::option::Option<u64>,
10781    #[prost(uint64, optional, tag = "4")]
10782    pub busy_time: ::core::option::Option<u64>,
10783    #[prost(uint64, optional, tag = "5")]
10784    pub total_time: ::core::option::Option<u64>,
10785}
10786#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10787pub struct DmaFenceInitFtraceEvent {
10788    #[prost(uint32, optional, tag = "1")]
10789    pub context: ::core::option::Option<u32>,
10790    #[prost(string, optional, tag = "2")]
10791    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10792    #[prost(uint32, optional, tag = "3")]
10793    pub seqno: ::core::option::Option<u32>,
10794    #[prost(string, optional, tag = "4")]
10795    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10796}
10797#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10798pub struct DmaFenceEmitFtraceEvent {
10799    #[prost(uint32, optional, tag = "1")]
10800    pub context: ::core::option::Option<u32>,
10801    #[prost(string, optional, tag = "2")]
10802    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10803    #[prost(uint32, optional, tag = "3")]
10804    pub seqno: ::core::option::Option<u32>,
10805    #[prost(string, optional, tag = "4")]
10806    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10807}
10808#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10809pub struct DmaFenceSignaledFtraceEvent {
10810    #[prost(uint32, optional, tag = "1")]
10811    pub context: ::core::option::Option<u32>,
10812    #[prost(string, optional, tag = "2")]
10813    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10814    #[prost(uint32, optional, tag = "3")]
10815    pub seqno: ::core::option::Option<u32>,
10816    #[prost(string, optional, tag = "4")]
10817    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10818}
10819#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10820pub struct DmaFenceWaitStartFtraceEvent {
10821    #[prost(uint32, optional, tag = "1")]
10822    pub context: ::core::option::Option<u32>,
10823    #[prost(string, optional, tag = "2")]
10824    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10825    #[prost(uint32, optional, tag = "3")]
10826    pub seqno: ::core::option::Option<u32>,
10827    #[prost(string, optional, tag = "4")]
10828    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10829}
10830#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10831pub struct DmaFenceWaitEndFtraceEvent {
10832    #[prost(uint32, optional, tag = "1")]
10833    pub context: ::core::option::Option<u32>,
10834    #[prost(string, optional, tag = "2")]
10835    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10836    #[prost(uint32, optional, tag = "3")]
10837    pub seqno: ::core::option::Option<u32>,
10838    #[prost(string, optional, tag = "4")]
10839    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10840}
10841#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10842pub struct DmaHeapStatFtraceEvent {
10843    #[prost(uint64, optional, tag = "1")]
10844    pub inode: ::core::option::Option<u64>,
10845    #[prost(int64, optional, tag = "2")]
10846    pub len: ::core::option::Option<i64>,
10847    #[prost(uint64, optional, tag = "3")]
10848    pub total_allocated: ::core::option::Option<u64>,
10849}
10850#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10851pub struct DpuTracingMarkWriteFtraceEvent {
10852    #[prost(int32, optional, tag = "1")]
10853    pub pid: ::core::option::Option<i32>,
10854    #[prost(string, optional, tag = "2")]
10855    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10856    #[prost(uint32, optional, tag = "3")]
10857    pub trace_begin: ::core::option::Option<u32>,
10858    #[prost(string, optional, tag = "4")]
10859    pub name: ::core::option::Option<::prost::alloc::string::String>,
10860    #[prost(uint32, optional, tag = "5")]
10861    pub r#type: ::core::option::Option<u32>,
10862    #[prost(int32, optional, tag = "6")]
10863    pub value: ::core::option::Option<i32>,
10864}
10865#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10866pub struct DpuDsiCmdFifoStatusFtraceEvent {
10867    #[prost(uint32, optional, tag = "1")]
10868    pub header: ::core::option::Option<u32>,
10869    #[prost(uint32, optional, tag = "2")]
10870    pub payload: ::core::option::Option<u32>,
10871}
10872#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10873pub struct DpuDsiRxFtraceEvent {
10874    #[prost(uint32, optional, tag = "1")]
10875    pub cmd: ::core::option::Option<u32>,
10876    #[prost(bytes = "vec", optional, tag = "3")]
10877    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10878}
10879#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10880pub struct DpuDsiTxFtraceEvent {
10881    #[prost(uint32, optional, tag = "1")]
10882    pub r#type: ::core::option::Option<u32>,
10883    #[prost(uint32, optional, tag = "3")]
10884    pub last: ::core::option::Option<u32>,
10885    #[prost(uint32, optional, tag = "4")]
10886    pub delay_ms: ::core::option::Option<u32>,
10887    #[prost(bytes = "vec", optional, tag = "5")]
10888    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10889}
10890#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10891pub struct DpuDispDpuUnderrunFtraceEvent {
10892    #[prost(int32, optional, tag = "1")]
10893    pub id: ::core::option::Option<i32>,
10894    #[prost(int32, optional, tag = "2")]
10895    pub frames_pending: ::core::option::Option<i32>,
10896    #[prost(int32, optional, tag = "3")]
10897    pub vsync_count: ::core::option::Option<i32>,
10898}
10899#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10900pub struct DpuDispVblankIrqEnableFtraceEvent {
10901    #[prost(int32, optional, tag = "1")]
10902    pub id: ::core::option::Option<i32>,
10903    #[prost(int32, optional, tag = "2")]
10904    pub output_id: ::core::option::Option<i32>,
10905    #[prost(int32, optional, tag = "3")]
10906    pub enable: ::core::option::Option<i32>,
10907}
10908#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10909pub struct DpuDispFrameDoneTimeoutFtraceEvent {
10910    #[prost(int32, optional, tag = "1")]
10911    pub display_id: ::core::option::Option<i32>,
10912    #[prost(uint32, optional, tag = "2")]
10913    pub output_id: ::core::option::Option<u32>,
10914    #[prost(int32, optional, tag = "3")]
10915    pub frames_pending: ::core::option::Option<i32>,
10916    #[prost(int32, optional, tag = "4")]
10917    pub te_count: ::core::option::Option<i32>,
10918    #[prost(uint32, optional, tag = "5")]
10919    pub during_disable: ::core::option::Option<u32>,
10920}
10921#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10922pub struct DpuDispFrameStartTimeoutFtraceEvent {
10923    #[prost(int32, optional, tag = "1")]
10924    pub display_id: ::core::option::Option<i32>,
10925    #[prost(uint32, optional, tag = "2")]
10926    pub output_id: ::core::option::Option<u32>,
10927    #[prost(int32, optional, tag = "3")]
10928    pub frames_pending: ::core::option::Option<i32>,
10929    #[prost(int32, optional, tag = "4")]
10930    pub te_count: ::core::option::Option<i32>,
10931}
10932#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10933pub struct DpuDispFrameDoneMissingFtraceEvent {
10934    #[prost(int32, optional, tag = "1")]
10935    pub display_id: ::core::option::Option<i32>,
10936    #[prost(uint32, optional, tag = "2")]
10937    pub output_id: ::core::option::Option<u32>,
10938    #[prost(int32, optional, tag = "3")]
10939    pub frames_pending: ::core::option::Option<i32>,
10940    #[prost(int32, optional, tag = "4")]
10941    pub te_count: ::core::option::Option<i32>,
10942}
10943#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10944pub struct DpuDispFrameStartMissingFtraceEvent {
10945    #[prost(int32, optional, tag = "1")]
10946    pub display_id: ::core::option::Option<i32>,
10947    #[prost(uint32, optional, tag = "2")]
10948    pub output_id: ::core::option::Option<u32>,
10949    #[prost(int32, optional, tag = "3")]
10950    pub frames_pending: ::core::option::Option<i32>,
10951    #[prost(int32, optional, tag = "4")]
10952    pub te_count: ::core::option::Option<i32>,
10953}
10954#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10955pub struct DpuDispDpuLineUnderrunFtraceEvent {
10956    #[prost(int32, optional, tag = "1")]
10957    pub id: ::core::option::Option<i32>,
10958    #[prost(int32, optional, tag = "2")]
10959    pub frames_pending: ::core::option::Option<i32>,
10960    #[prost(int32, optional, tag = "3")]
10961    pub vsync_count: ::core::option::Option<i32>,
10962}
10963#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10964pub struct DrmVblankEventFtraceEvent {
10965    #[prost(int32, optional, tag = "1")]
10966    pub crtc: ::core::option::Option<i32>,
10967    #[prost(uint32, optional, tag = "2")]
10968    pub high_prec: ::core::option::Option<u32>,
10969    #[prost(uint32, optional, tag = "3")]
10970    pub seq: ::core::option::Option<u32>,
10971    #[prost(int64, optional, tag = "4")]
10972    pub time: ::core::option::Option<i64>,
10973}
10974#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10975pub struct DrmVblankEventDeliveredFtraceEvent {
10976    #[prost(int32, optional, tag = "1")]
10977    pub crtc: ::core::option::Option<i32>,
10978    #[prost(uint64, optional, tag = "2")]
10979    pub file: ::core::option::Option<u64>,
10980    #[prost(uint32, optional, tag = "3")]
10981    pub seq: ::core::option::Option<u32>,
10982}
10983#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10984pub struct Dwc3AllocRequestFtraceEvent {
10985    #[prost(string, optional, tag = "1")]
10986    pub name: ::core::option::Option<::prost::alloc::string::String>,
10987    #[prost(uint64, optional, tag = "2")]
10988    pub req: ::core::option::Option<u64>,
10989    #[prost(uint32, optional, tag = "3")]
10990    pub actual: ::core::option::Option<u32>,
10991    #[prost(uint32, optional, tag = "4")]
10992    pub length: ::core::option::Option<u32>,
10993    #[prost(int32, optional, tag = "5")]
10994    pub status: ::core::option::Option<i32>,
10995    #[prost(int32, optional, tag = "6")]
10996    pub zero: ::core::option::Option<i32>,
10997    #[prost(int32, optional, tag = "7")]
10998    pub short_not_ok: ::core::option::Option<i32>,
10999    #[prost(int32, optional, tag = "8")]
11000    pub no_interrupt: ::core::option::Option<i32>,
11001}
11002#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11003pub struct Dwc3CompleteTrbFtraceEvent {
11004    #[prost(string, optional, tag = "1")]
11005    pub name: ::core::option::Option<::prost::alloc::string::String>,
11006    #[prost(uint64, optional, tag = "2")]
11007    pub trb: ::core::option::Option<u64>,
11008    #[prost(uint32, optional, tag = "3")]
11009    pub allocated: ::core::option::Option<u32>,
11010    #[prost(uint32, optional, tag = "4")]
11011    pub queued: ::core::option::Option<u32>,
11012    #[prost(uint32, optional, tag = "5")]
11013    pub bpl: ::core::option::Option<u32>,
11014    #[prost(uint32, optional, tag = "6")]
11015    pub bph: ::core::option::Option<u32>,
11016    #[prost(uint32, optional, tag = "7")]
11017    pub size: ::core::option::Option<u32>,
11018    #[prost(uint32, optional, tag = "8")]
11019    pub ctrl: ::core::option::Option<u32>,
11020    #[prost(uint32, optional, tag = "9")]
11021    pub r#type: ::core::option::Option<u32>,
11022    #[prost(uint32, optional, tag = "10")]
11023    pub enqueue: ::core::option::Option<u32>,
11024    #[prost(uint32, optional, tag = "11")]
11025    pub dequeue: ::core::option::Option<u32>,
11026}
11027#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11028pub struct Dwc3CtrlReqFtraceEvent {
11029    #[prost(uint32, optional, tag = "1")]
11030    pub b_request_type: ::core::option::Option<u32>,
11031    #[prost(uint32, optional, tag = "2")]
11032    pub b_request: ::core::option::Option<u32>,
11033    #[prost(uint32, optional, tag = "3")]
11034    pub w_value: ::core::option::Option<u32>,
11035    #[prost(uint32, optional, tag = "4")]
11036    pub w_index: ::core::option::Option<u32>,
11037    #[prost(uint32, optional, tag = "5")]
11038    pub w_length: ::core::option::Option<u32>,
11039    #[prost(string, optional, tag = "6")]
11040    pub str: ::core::option::Option<::prost::alloc::string::String>,
11041}
11042#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11043pub struct Dwc3EpDequeueFtraceEvent {
11044    #[prost(string, optional, tag = "1")]
11045    pub name: ::core::option::Option<::prost::alloc::string::String>,
11046    #[prost(uint64, optional, tag = "2")]
11047    pub req: ::core::option::Option<u64>,
11048    #[prost(uint32, optional, tag = "3")]
11049    pub actual: ::core::option::Option<u32>,
11050    #[prost(uint32, optional, tag = "4")]
11051    pub length: ::core::option::Option<u32>,
11052    #[prost(int32, optional, tag = "5")]
11053    pub status: ::core::option::Option<i32>,
11054    #[prost(int32, optional, tag = "6")]
11055    pub zero: ::core::option::Option<i32>,
11056    #[prost(int32, optional, tag = "7")]
11057    pub short_not_ok: ::core::option::Option<i32>,
11058    #[prost(int32, optional, tag = "8")]
11059    pub no_interrupt: ::core::option::Option<i32>,
11060}
11061#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11062pub struct Dwc3EpQueueFtraceEvent {
11063    #[prost(string, optional, tag = "1")]
11064    pub name: ::core::option::Option<::prost::alloc::string::String>,
11065    #[prost(uint64, optional, tag = "2")]
11066    pub req: ::core::option::Option<u64>,
11067    #[prost(uint32, optional, tag = "3")]
11068    pub actual: ::core::option::Option<u32>,
11069    #[prost(uint32, optional, tag = "4")]
11070    pub length: ::core::option::Option<u32>,
11071    #[prost(int32, optional, tag = "5")]
11072    pub status: ::core::option::Option<i32>,
11073    #[prost(int32, optional, tag = "6")]
11074    pub zero: ::core::option::Option<i32>,
11075    #[prost(int32, optional, tag = "7")]
11076    pub short_not_ok: ::core::option::Option<i32>,
11077    #[prost(int32, optional, tag = "8")]
11078    pub no_interrupt: ::core::option::Option<i32>,
11079}
11080#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11081pub struct Dwc3EventFtraceEvent {
11082    #[prost(uint32, optional, tag = "1")]
11083    pub event: ::core::option::Option<u32>,
11084    #[prost(uint32, optional, tag = "2")]
11085    pub ep0state: ::core::option::Option<u32>,
11086    #[prost(string, optional, tag = "3")]
11087    pub str: ::core::option::Option<::prost::alloc::string::String>,
11088}
11089#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11090pub struct Dwc3FreeRequestFtraceEvent {
11091    #[prost(string, optional, tag = "1")]
11092    pub name: ::core::option::Option<::prost::alloc::string::String>,
11093    #[prost(uint64, optional, tag = "2")]
11094    pub req: ::core::option::Option<u64>,
11095    #[prost(uint32, optional, tag = "3")]
11096    pub actual: ::core::option::Option<u32>,
11097    #[prost(uint32, optional, tag = "4")]
11098    pub length: ::core::option::Option<u32>,
11099    #[prost(int32, optional, tag = "5")]
11100    pub status: ::core::option::Option<i32>,
11101    #[prost(int32, optional, tag = "6")]
11102    pub zero: ::core::option::Option<i32>,
11103    #[prost(int32, optional, tag = "7")]
11104    pub short_not_ok: ::core::option::Option<i32>,
11105    #[prost(int32, optional, tag = "8")]
11106    pub no_interrupt: ::core::option::Option<i32>,
11107}
11108#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11109pub struct Dwc3GadgetEpCmdFtraceEvent {
11110    #[prost(string, optional, tag = "1")]
11111    pub name: ::core::option::Option<::prost::alloc::string::String>,
11112    #[prost(uint32, optional, tag = "2")]
11113    pub cmd: ::core::option::Option<u32>,
11114    #[prost(uint32, optional, tag = "3")]
11115    pub param0: ::core::option::Option<u32>,
11116    #[prost(uint32, optional, tag = "4")]
11117    pub param1: ::core::option::Option<u32>,
11118    #[prost(uint32, optional, tag = "5")]
11119    pub param2: ::core::option::Option<u32>,
11120    #[prost(int32, optional, tag = "6")]
11121    pub cmd_status: ::core::option::Option<i32>,
11122}
11123#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11124pub struct Dwc3GadgetEpDisableFtraceEvent {
11125    #[prost(string, optional, tag = "1")]
11126    pub name: ::core::option::Option<::prost::alloc::string::String>,
11127    #[prost(uint32, optional, tag = "2")]
11128    pub maxpacket: ::core::option::Option<u32>,
11129    #[prost(uint32, optional, tag = "3")]
11130    pub maxpacket_limit: ::core::option::Option<u32>,
11131    #[prost(uint32, optional, tag = "4")]
11132    pub max_streams: ::core::option::Option<u32>,
11133    #[prost(uint32, optional, tag = "5")]
11134    pub maxburst: ::core::option::Option<u32>,
11135    #[prost(uint32, optional, tag = "6")]
11136    pub flags: ::core::option::Option<u32>,
11137    #[prost(uint32, optional, tag = "7")]
11138    pub direction: ::core::option::Option<u32>,
11139    #[prost(uint32, optional, tag = "8")]
11140    pub trb_enqueue: ::core::option::Option<u32>,
11141    #[prost(uint32, optional, tag = "9")]
11142    pub trb_dequeue: ::core::option::Option<u32>,
11143}
11144#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11145pub struct Dwc3GadgetEpEnableFtraceEvent {
11146    #[prost(string, optional, tag = "1")]
11147    pub name: ::core::option::Option<::prost::alloc::string::String>,
11148    #[prost(uint32, optional, tag = "2")]
11149    pub maxpacket: ::core::option::Option<u32>,
11150    #[prost(uint32, optional, tag = "3")]
11151    pub maxpacket_limit: ::core::option::Option<u32>,
11152    #[prost(uint32, optional, tag = "4")]
11153    pub max_streams: ::core::option::Option<u32>,
11154    #[prost(uint32, optional, tag = "5")]
11155    pub maxburst: ::core::option::Option<u32>,
11156    #[prost(uint32, optional, tag = "6")]
11157    pub flags: ::core::option::Option<u32>,
11158    #[prost(uint32, optional, tag = "7")]
11159    pub direction: ::core::option::Option<u32>,
11160    #[prost(uint32, optional, tag = "8")]
11161    pub trb_enqueue: ::core::option::Option<u32>,
11162    #[prost(uint32, optional, tag = "9")]
11163    pub trb_dequeue: ::core::option::Option<u32>,
11164}
11165#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11166pub struct Dwc3GadgetGenericCmdFtraceEvent {
11167    #[prost(uint32, optional, tag = "1")]
11168    pub cmd: ::core::option::Option<u32>,
11169    #[prost(uint32, optional, tag = "2")]
11170    pub param: ::core::option::Option<u32>,
11171    #[prost(int32, optional, tag = "3")]
11172    pub status: ::core::option::Option<i32>,
11173}
11174#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11175pub struct Dwc3GadgetGivebackFtraceEvent {
11176    #[prost(string, optional, tag = "1")]
11177    pub name: ::core::option::Option<::prost::alloc::string::String>,
11178    #[prost(uint64, optional, tag = "2")]
11179    pub req: ::core::option::Option<u64>,
11180    #[prost(uint32, optional, tag = "3")]
11181    pub actual: ::core::option::Option<u32>,
11182    #[prost(uint32, optional, tag = "4")]
11183    pub length: ::core::option::Option<u32>,
11184    #[prost(int32, optional, tag = "5")]
11185    pub status: ::core::option::Option<i32>,
11186    #[prost(int32, optional, tag = "6")]
11187    pub zero: ::core::option::Option<i32>,
11188    #[prost(int32, optional, tag = "7")]
11189    pub short_not_ok: ::core::option::Option<i32>,
11190    #[prost(int32, optional, tag = "8")]
11191    pub no_interrupt: ::core::option::Option<i32>,
11192}
11193#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11194pub struct Dwc3PrepareTrbFtraceEvent {
11195    #[prost(string, optional, tag = "1")]
11196    pub name: ::core::option::Option<::prost::alloc::string::String>,
11197    #[prost(uint64, optional, tag = "2")]
11198    pub trb: ::core::option::Option<u64>,
11199    #[prost(uint32, optional, tag = "3")]
11200    pub allocated: ::core::option::Option<u32>,
11201    #[prost(uint32, optional, tag = "4")]
11202    pub queued: ::core::option::Option<u32>,
11203    #[prost(uint32, optional, tag = "5")]
11204    pub bpl: ::core::option::Option<u32>,
11205    #[prost(uint32, optional, tag = "6")]
11206    pub bph: ::core::option::Option<u32>,
11207    #[prost(uint32, optional, tag = "7")]
11208    pub size: ::core::option::Option<u32>,
11209    #[prost(uint32, optional, tag = "8")]
11210    pub ctrl: ::core::option::Option<u32>,
11211    #[prost(uint32, optional, tag = "9")]
11212    pub r#type: ::core::option::Option<u32>,
11213    #[prost(uint32, optional, tag = "10")]
11214    pub enqueue: ::core::option::Option<u32>,
11215    #[prost(uint32, optional, tag = "11")]
11216    pub dequeue: ::core::option::Option<u32>,
11217}
11218#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11219pub struct Dwc3ReadlFtraceEvent {
11220    #[prost(uint64, optional, tag = "1")]
11221    pub base: ::core::option::Option<u64>,
11222    #[prost(uint32, optional, tag = "2")]
11223    pub offset: ::core::option::Option<u32>,
11224    #[prost(uint32, optional, tag = "3")]
11225    pub value: ::core::option::Option<u32>,
11226    #[prost(string, optional, tag = "4")]
11227    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11228}
11229#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11230pub struct Dwc3WritelFtraceEvent {
11231    #[prost(uint64, optional, tag = "1")]
11232    pub base: ::core::option::Option<u64>,
11233    #[prost(uint32, optional, tag = "2")]
11234    pub offset: ::core::option::Option<u32>,
11235    #[prost(uint32, optional, tag = "3")]
11236    pub value: ::core::option::Option<u32>,
11237    #[prost(string, optional, tag = "4")]
11238    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11239}
11240#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11241pub struct Ext4DaWriteBeginFtraceEvent {
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(int64, optional, tag = "3")]
11247    pub pos: ::core::option::Option<i64>,
11248    #[prost(uint32, optional, tag = "4")]
11249    pub len: ::core::option::Option<u32>,
11250    #[prost(uint32, optional, tag = "5")]
11251    pub flags: ::core::option::Option<u32>,
11252}
11253#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11254pub struct Ext4DaWriteEndFtraceEvent {
11255    #[prost(uint64, optional, tag = "1")]
11256    pub dev: ::core::option::Option<u64>,
11257    #[prost(uint64, optional, tag = "2")]
11258    pub ino: ::core::option::Option<u64>,
11259    #[prost(int64, optional, tag = "3")]
11260    pub pos: ::core::option::Option<i64>,
11261    #[prost(uint32, optional, tag = "4")]
11262    pub len: ::core::option::Option<u32>,
11263    #[prost(uint32, optional, tag = "5")]
11264    pub copied: ::core::option::Option<u32>,
11265}
11266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11267pub struct Ext4SyncFileEnterFtraceEvent {
11268    #[prost(uint64, optional, tag = "1")]
11269    pub dev: ::core::option::Option<u64>,
11270    #[prost(uint64, optional, tag = "2")]
11271    pub ino: ::core::option::Option<u64>,
11272    #[prost(uint64, optional, tag = "3")]
11273    pub parent: ::core::option::Option<u64>,
11274    #[prost(int32, optional, tag = "4")]
11275    pub datasync: ::core::option::Option<i32>,
11276}
11277#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11278pub struct Ext4SyncFileExitFtraceEvent {
11279    #[prost(uint64, optional, tag = "1")]
11280    pub dev: ::core::option::Option<u64>,
11281    #[prost(uint64, optional, tag = "2")]
11282    pub ino: ::core::option::Option<u64>,
11283    #[prost(int32, optional, tag = "3")]
11284    pub ret: ::core::option::Option<i32>,
11285}
11286#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11287pub struct Ext4AllocDaBlocksFtraceEvent {
11288    #[prost(uint64, optional, tag = "1")]
11289    pub dev: ::core::option::Option<u64>,
11290    #[prost(uint64, optional, tag = "2")]
11291    pub ino: ::core::option::Option<u64>,
11292    #[prost(uint32, optional, tag = "3")]
11293    pub data_blocks: ::core::option::Option<u32>,
11294    #[prost(uint32, optional, tag = "4")]
11295    pub meta_blocks: ::core::option::Option<u32>,
11296}
11297#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11298pub struct Ext4AllocateBlocksFtraceEvent {
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(uint64, optional, tag = "3")]
11304    pub block: ::core::option::Option<u64>,
11305    #[prost(uint32, optional, tag = "4")]
11306    pub len: ::core::option::Option<u32>,
11307    #[prost(uint32, optional, tag = "5")]
11308    pub logical: ::core::option::Option<u32>,
11309    #[prost(uint32, optional, tag = "6")]
11310    pub lleft: ::core::option::Option<u32>,
11311    #[prost(uint32, optional, tag = "7")]
11312    pub lright: ::core::option::Option<u32>,
11313    #[prost(uint64, optional, tag = "8")]
11314    pub goal: ::core::option::Option<u64>,
11315    #[prost(uint64, optional, tag = "9")]
11316    pub pleft: ::core::option::Option<u64>,
11317    #[prost(uint64, optional, tag = "10")]
11318    pub pright: ::core::option::Option<u64>,
11319    #[prost(uint32, optional, tag = "11")]
11320    pub flags: ::core::option::Option<u32>,
11321}
11322#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11323pub struct Ext4AllocateInodeFtraceEvent {
11324    #[prost(uint64, optional, tag = "1")]
11325    pub dev: ::core::option::Option<u64>,
11326    #[prost(uint64, optional, tag = "2")]
11327    pub ino: ::core::option::Option<u64>,
11328    #[prost(uint64, optional, tag = "3")]
11329    pub dir: ::core::option::Option<u64>,
11330    #[prost(uint32, optional, tag = "4")]
11331    pub mode: ::core::option::Option<u32>,
11332}
11333#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11334pub struct Ext4BeginOrderedTruncateFtraceEvent {
11335    #[prost(uint64, optional, tag = "1")]
11336    pub dev: ::core::option::Option<u64>,
11337    #[prost(uint64, optional, tag = "2")]
11338    pub ino: ::core::option::Option<u64>,
11339    #[prost(int64, optional, tag = "3")]
11340    pub new_size: ::core::option::Option<i64>,
11341}
11342#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11343pub struct Ext4CollapseRangeFtraceEvent {
11344    #[prost(uint64, optional, tag = "1")]
11345    pub dev: ::core::option::Option<u64>,
11346    #[prost(uint64, optional, tag = "2")]
11347    pub ino: ::core::option::Option<u64>,
11348    #[prost(int64, optional, tag = "3")]
11349    pub offset: ::core::option::Option<i64>,
11350    #[prost(int64, optional, tag = "4")]
11351    pub len: ::core::option::Option<i64>,
11352}
11353#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11354pub struct Ext4DaReleaseSpaceFtraceEvent {
11355    #[prost(uint64, optional, tag = "1")]
11356    pub dev: ::core::option::Option<u64>,
11357    #[prost(uint64, optional, tag = "2")]
11358    pub ino: ::core::option::Option<u64>,
11359    #[prost(uint64, optional, tag = "3")]
11360    pub i_blocks: ::core::option::Option<u64>,
11361    #[prost(int32, optional, tag = "4")]
11362    pub freed_blocks: ::core::option::Option<i32>,
11363    #[prost(int32, optional, tag = "5")]
11364    pub reserved_data_blocks: ::core::option::Option<i32>,
11365    #[prost(int32, optional, tag = "6")]
11366    pub reserved_meta_blocks: ::core::option::Option<i32>,
11367    #[prost(int32, optional, tag = "7")]
11368    pub allocated_meta_blocks: ::core::option::Option<i32>,
11369    #[prost(uint32, optional, tag = "8")]
11370    pub mode: ::core::option::Option<u32>,
11371}
11372#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11373pub struct Ext4DaReserveSpaceFtraceEvent {
11374    #[prost(uint64, optional, tag = "1")]
11375    pub dev: ::core::option::Option<u64>,
11376    #[prost(uint64, optional, tag = "2")]
11377    pub ino: ::core::option::Option<u64>,
11378    #[prost(uint64, optional, tag = "3")]
11379    pub i_blocks: ::core::option::Option<u64>,
11380    #[prost(int32, optional, tag = "4")]
11381    pub reserved_data_blocks: ::core::option::Option<i32>,
11382    #[prost(int32, optional, tag = "5")]
11383    pub reserved_meta_blocks: ::core::option::Option<i32>,
11384    #[prost(uint32, optional, tag = "6")]
11385    pub mode: ::core::option::Option<u32>,
11386    #[prost(int32, optional, tag = "7")]
11387    pub md_needed: ::core::option::Option<i32>,
11388}
11389#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11390pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
11391    #[prost(uint64, optional, tag = "1")]
11392    pub dev: ::core::option::Option<u64>,
11393    #[prost(uint64, optional, tag = "2")]
11394    pub ino: ::core::option::Option<u64>,
11395    #[prost(uint64, optional, tag = "3")]
11396    pub i_blocks: ::core::option::Option<u64>,
11397    #[prost(int32, optional, tag = "4")]
11398    pub used_blocks: ::core::option::Option<i32>,
11399    #[prost(int32, optional, tag = "5")]
11400    pub reserved_data_blocks: ::core::option::Option<i32>,
11401    #[prost(int32, optional, tag = "6")]
11402    pub reserved_meta_blocks: ::core::option::Option<i32>,
11403    #[prost(int32, optional, tag = "7")]
11404    pub allocated_meta_blocks: ::core::option::Option<i32>,
11405    #[prost(int32, optional, tag = "8")]
11406    pub quota_claim: ::core::option::Option<i32>,
11407    #[prost(uint32, optional, tag = "9")]
11408    pub mode: ::core::option::Option<u32>,
11409}
11410#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11411pub struct Ext4DaWritePagesFtraceEvent {
11412    #[prost(uint64, optional, tag = "1")]
11413    pub dev: ::core::option::Option<u64>,
11414    #[prost(uint64, optional, tag = "2")]
11415    pub ino: ::core::option::Option<u64>,
11416    #[prost(uint64, optional, tag = "3")]
11417    pub first_page: ::core::option::Option<u64>,
11418    #[prost(int64, optional, tag = "4")]
11419    pub nr_to_write: ::core::option::Option<i64>,
11420    #[prost(int32, optional, tag = "5")]
11421    pub sync_mode: ::core::option::Option<i32>,
11422    #[prost(uint64, optional, tag = "6")]
11423    pub b_blocknr: ::core::option::Option<u64>,
11424    #[prost(uint32, optional, tag = "7")]
11425    pub b_size: ::core::option::Option<u32>,
11426    #[prost(uint32, optional, tag = "8")]
11427    pub b_state: ::core::option::Option<u32>,
11428    #[prost(int32, optional, tag = "9")]
11429    pub io_done: ::core::option::Option<i32>,
11430    #[prost(int32, optional, tag = "10")]
11431    pub pages_written: ::core::option::Option<i32>,
11432}
11433#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11434pub struct Ext4DaWritePagesExtentFtraceEvent {
11435    #[prost(uint64, optional, tag = "1")]
11436    pub dev: ::core::option::Option<u64>,
11437    #[prost(uint64, optional, tag = "2")]
11438    pub ino: ::core::option::Option<u64>,
11439    #[prost(uint64, optional, tag = "3")]
11440    pub lblk: ::core::option::Option<u64>,
11441    #[prost(uint32, optional, tag = "4")]
11442    pub len: ::core::option::Option<u32>,
11443    #[prost(uint32, optional, tag = "5")]
11444    pub flags: ::core::option::Option<u32>,
11445}
11446#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11447pub struct Ext4DirectIoEnterFtraceEvent {
11448    #[prost(uint64, optional, tag = "1")]
11449    pub dev: ::core::option::Option<u64>,
11450    #[prost(uint64, optional, tag = "2")]
11451    pub ino: ::core::option::Option<u64>,
11452    #[prost(int64, optional, tag = "3")]
11453    pub pos: ::core::option::Option<i64>,
11454    #[prost(uint64, optional, tag = "4")]
11455    pub len: ::core::option::Option<u64>,
11456    #[prost(int32, optional, tag = "5")]
11457    pub rw: ::core::option::Option<i32>,
11458}
11459#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11460pub struct Ext4DirectIoExitFtraceEvent {
11461    #[prost(uint64, optional, tag = "1")]
11462    pub dev: ::core::option::Option<u64>,
11463    #[prost(uint64, optional, tag = "2")]
11464    pub ino: ::core::option::Option<u64>,
11465    #[prost(int64, optional, tag = "3")]
11466    pub pos: ::core::option::Option<i64>,
11467    #[prost(uint64, optional, tag = "4")]
11468    pub len: ::core::option::Option<u64>,
11469    #[prost(int32, optional, tag = "5")]
11470    pub rw: ::core::option::Option<i32>,
11471    #[prost(int32, optional, tag = "6")]
11472    pub ret: ::core::option::Option<i32>,
11473}
11474#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11475pub struct Ext4DiscardBlocksFtraceEvent {
11476    #[prost(uint64, optional, tag = "1")]
11477    pub dev: ::core::option::Option<u64>,
11478    #[prost(uint64, optional, tag = "2")]
11479    pub blk: ::core::option::Option<u64>,
11480    #[prost(uint64, optional, tag = "3")]
11481    pub count: ::core::option::Option<u64>,
11482}
11483#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11484pub struct Ext4DiscardPreallocationsFtraceEvent {
11485    #[prost(uint64, optional, tag = "1")]
11486    pub dev: ::core::option::Option<u64>,
11487    #[prost(uint64, optional, tag = "2")]
11488    pub ino: ::core::option::Option<u64>,
11489    #[prost(uint32, optional, tag = "3")]
11490    pub len: ::core::option::Option<u32>,
11491    #[prost(uint32, optional, tag = "4")]
11492    pub needed: ::core::option::Option<u32>,
11493}
11494#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11495pub struct Ext4DropInodeFtraceEvent {
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(int32, optional, tag = "3")]
11501    pub drop: ::core::option::Option<i32>,
11502}
11503#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11504pub struct Ext4EsCacheExtentFtraceEvent {
11505    #[prost(uint64, optional, tag = "1")]
11506    pub dev: ::core::option::Option<u64>,
11507    #[prost(uint64, optional, tag = "2")]
11508    pub ino: ::core::option::Option<u64>,
11509    #[prost(uint32, optional, tag = "3")]
11510    pub lblk: ::core::option::Option<u32>,
11511    #[prost(uint32, optional, tag = "4")]
11512    pub len: ::core::option::Option<u32>,
11513    #[prost(uint64, optional, tag = "5")]
11514    pub pblk: ::core::option::Option<u64>,
11515    #[prost(uint32, optional, tag = "6")]
11516    pub status: ::core::option::Option<u32>,
11517}
11518#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11519pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
11520    #[prost(uint64, optional, tag = "1")]
11521    pub dev: ::core::option::Option<u64>,
11522    #[prost(uint64, optional, tag = "2")]
11523    pub ino: ::core::option::Option<u64>,
11524    #[prost(uint32, optional, tag = "3")]
11525    pub lblk: ::core::option::Option<u32>,
11526}
11527#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11528pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
11529    #[prost(uint64, optional, tag = "1")]
11530    pub dev: ::core::option::Option<u64>,
11531    #[prost(uint64, optional, tag = "2")]
11532    pub ino: ::core::option::Option<u64>,
11533    #[prost(uint32, optional, tag = "3")]
11534    pub lblk: ::core::option::Option<u32>,
11535    #[prost(uint32, optional, tag = "4")]
11536    pub len: ::core::option::Option<u32>,
11537    #[prost(uint64, optional, tag = "5")]
11538    pub pblk: ::core::option::Option<u64>,
11539    #[prost(uint64, optional, tag = "6")]
11540    pub status: ::core::option::Option<u64>,
11541}
11542#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11543pub struct Ext4EsInsertExtentFtraceEvent {
11544    #[prost(uint64, optional, tag = "1")]
11545    pub dev: ::core::option::Option<u64>,
11546    #[prost(uint64, optional, tag = "2")]
11547    pub ino: ::core::option::Option<u64>,
11548    #[prost(uint32, optional, tag = "3")]
11549    pub lblk: ::core::option::Option<u32>,
11550    #[prost(uint32, optional, tag = "4")]
11551    pub len: ::core::option::Option<u32>,
11552    #[prost(uint64, optional, tag = "5")]
11553    pub pblk: ::core::option::Option<u64>,
11554    #[prost(uint64, optional, tag = "6")]
11555    pub status: ::core::option::Option<u64>,
11556}
11557#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11558pub struct Ext4EsLookupExtentEnterFtraceEvent {
11559    #[prost(uint64, optional, tag = "1")]
11560    pub dev: ::core::option::Option<u64>,
11561    #[prost(uint64, optional, tag = "2")]
11562    pub ino: ::core::option::Option<u64>,
11563    #[prost(uint32, optional, tag = "3")]
11564    pub lblk: ::core::option::Option<u32>,
11565}
11566#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11567pub struct Ext4EsLookupExtentExitFtraceEvent {
11568    #[prost(uint64, optional, tag = "1")]
11569    pub dev: ::core::option::Option<u64>,
11570    #[prost(uint64, optional, tag = "2")]
11571    pub ino: ::core::option::Option<u64>,
11572    #[prost(uint32, optional, tag = "3")]
11573    pub lblk: ::core::option::Option<u32>,
11574    #[prost(uint32, optional, tag = "4")]
11575    pub len: ::core::option::Option<u32>,
11576    #[prost(uint64, optional, tag = "5")]
11577    pub pblk: ::core::option::Option<u64>,
11578    #[prost(uint64, optional, tag = "6")]
11579    pub status: ::core::option::Option<u64>,
11580    #[prost(int32, optional, tag = "7")]
11581    pub found: ::core::option::Option<i32>,
11582}
11583#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11584pub struct Ext4EsRemoveExtentFtraceEvent {
11585    #[prost(uint64, optional, tag = "1")]
11586    pub dev: ::core::option::Option<u64>,
11587    #[prost(uint64, optional, tag = "2")]
11588    pub ino: ::core::option::Option<u64>,
11589    #[prost(int64, optional, tag = "3")]
11590    pub lblk: ::core::option::Option<i64>,
11591    #[prost(int64, optional, tag = "4")]
11592    pub len: ::core::option::Option<i64>,
11593}
11594#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11595pub struct Ext4EsShrinkFtraceEvent {
11596    #[prost(uint64, optional, tag = "1")]
11597    pub dev: ::core::option::Option<u64>,
11598    #[prost(int32, optional, tag = "2")]
11599    pub nr_shrunk: ::core::option::Option<i32>,
11600    #[prost(uint64, optional, tag = "3")]
11601    pub scan_time: ::core::option::Option<u64>,
11602    #[prost(int32, optional, tag = "4")]
11603    pub nr_skipped: ::core::option::Option<i32>,
11604    #[prost(int32, optional, tag = "5")]
11605    pub retried: ::core::option::Option<i32>,
11606}
11607#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11608pub struct Ext4EsShrinkCountFtraceEvent {
11609    #[prost(uint64, optional, tag = "1")]
11610    pub dev: ::core::option::Option<u64>,
11611    #[prost(int32, optional, tag = "2")]
11612    pub nr_to_scan: ::core::option::Option<i32>,
11613    #[prost(int32, optional, tag = "3")]
11614    pub cache_cnt: ::core::option::Option<i32>,
11615}
11616#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11617pub struct Ext4EsShrinkScanEnterFtraceEvent {
11618    #[prost(uint64, optional, tag = "1")]
11619    pub dev: ::core::option::Option<u64>,
11620    #[prost(int32, optional, tag = "2")]
11621    pub nr_to_scan: ::core::option::Option<i32>,
11622    #[prost(int32, optional, tag = "3")]
11623    pub cache_cnt: ::core::option::Option<i32>,
11624}
11625#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11626pub struct Ext4EsShrinkScanExitFtraceEvent {
11627    #[prost(uint64, optional, tag = "1")]
11628    pub dev: ::core::option::Option<u64>,
11629    #[prost(int32, optional, tag = "2")]
11630    pub nr_shrunk: ::core::option::Option<i32>,
11631    #[prost(int32, optional, tag = "3")]
11632    pub cache_cnt: ::core::option::Option<i32>,
11633}
11634#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11635pub struct Ext4EvictInodeFtraceEvent {
11636    #[prost(uint64, optional, tag = "1")]
11637    pub dev: ::core::option::Option<u64>,
11638    #[prost(uint64, optional, tag = "2")]
11639    pub ino: ::core::option::Option<u64>,
11640    #[prost(int32, optional, tag = "3")]
11641    pub nlink: ::core::option::Option<i32>,
11642}
11643#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11644pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
11645    #[prost(uint64, optional, tag = "1")]
11646    pub dev: ::core::option::Option<u64>,
11647    #[prost(uint64, optional, tag = "2")]
11648    pub ino: ::core::option::Option<u64>,
11649    #[prost(uint32, optional, tag = "3")]
11650    pub m_lblk: ::core::option::Option<u32>,
11651    #[prost(uint32, optional, tag = "4")]
11652    pub m_len: ::core::option::Option<u32>,
11653    #[prost(uint32, optional, tag = "5")]
11654    pub u_lblk: ::core::option::Option<u32>,
11655    #[prost(uint32, optional, tag = "6")]
11656    pub u_len: ::core::option::Option<u32>,
11657    #[prost(uint64, optional, tag = "7")]
11658    pub u_pblk: ::core::option::Option<u64>,
11659}
11660#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11661pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
11662    #[prost(uint64, optional, tag = "1")]
11663    pub dev: ::core::option::Option<u64>,
11664    #[prost(uint64, optional, tag = "2")]
11665    pub ino: ::core::option::Option<u64>,
11666    #[prost(uint32, optional, tag = "3")]
11667    pub m_lblk: ::core::option::Option<u32>,
11668    #[prost(uint32, optional, tag = "4")]
11669    pub m_len: ::core::option::Option<u32>,
11670    #[prost(uint32, optional, tag = "5")]
11671    pub u_lblk: ::core::option::Option<u32>,
11672    #[prost(uint32, optional, tag = "6")]
11673    pub u_len: ::core::option::Option<u32>,
11674    #[prost(uint64, optional, tag = "7")]
11675    pub u_pblk: ::core::option::Option<u64>,
11676    #[prost(uint32, optional, tag = "8")]
11677    pub i_lblk: ::core::option::Option<u32>,
11678    #[prost(uint32, optional, tag = "9")]
11679    pub i_len: ::core::option::Option<u32>,
11680    #[prost(uint64, optional, tag = "10")]
11681    pub i_pblk: ::core::option::Option<u64>,
11682}
11683#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11684pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
11685    #[prost(uint64, optional, tag = "1")]
11686    pub dev: ::core::option::Option<u64>,
11687    #[prost(uint64, optional, tag = "2")]
11688    pub ino: ::core::option::Option<u64>,
11689    #[prost(int32, optional, tag = "3")]
11690    pub flags: ::core::option::Option<i32>,
11691    #[prost(uint32, optional, tag = "4")]
11692    pub lblk: ::core::option::Option<u32>,
11693    #[prost(uint64, optional, tag = "5")]
11694    pub pblk: ::core::option::Option<u64>,
11695    #[prost(uint32, optional, tag = "6")]
11696    pub len: ::core::option::Option<u32>,
11697    #[prost(uint32, optional, tag = "7")]
11698    pub allocated: ::core::option::Option<u32>,
11699    #[prost(uint64, optional, tag = "8")]
11700    pub newblk: ::core::option::Option<u64>,
11701}
11702#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11703pub struct Ext4ExtInCacheFtraceEvent {
11704    #[prost(uint64, optional, tag = "1")]
11705    pub dev: ::core::option::Option<u64>,
11706    #[prost(uint64, optional, tag = "2")]
11707    pub ino: ::core::option::Option<u64>,
11708    #[prost(uint32, optional, tag = "3")]
11709    pub lblk: ::core::option::Option<u32>,
11710    #[prost(int32, optional, tag = "4")]
11711    pub ret: ::core::option::Option<i32>,
11712}
11713#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11714pub struct Ext4ExtLoadExtentFtraceEvent {
11715    #[prost(uint64, optional, tag = "1")]
11716    pub dev: ::core::option::Option<u64>,
11717    #[prost(uint64, optional, tag = "2")]
11718    pub ino: ::core::option::Option<u64>,
11719    #[prost(uint64, optional, tag = "3")]
11720    pub pblk: ::core::option::Option<u64>,
11721    #[prost(uint32, optional, tag = "4")]
11722    pub lblk: ::core::option::Option<u32>,
11723}
11724#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11725pub struct Ext4ExtMapBlocksEnterFtraceEvent {
11726    #[prost(uint64, optional, tag = "1")]
11727    pub dev: ::core::option::Option<u64>,
11728    #[prost(uint64, optional, tag = "2")]
11729    pub ino: ::core::option::Option<u64>,
11730    #[prost(uint32, optional, tag = "3")]
11731    pub lblk: ::core::option::Option<u32>,
11732    #[prost(uint32, optional, tag = "4")]
11733    pub len: ::core::option::Option<u32>,
11734    #[prost(uint32, optional, tag = "5")]
11735    pub flags: ::core::option::Option<u32>,
11736}
11737#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11738pub struct Ext4ExtMapBlocksExitFtraceEvent {
11739    #[prost(uint64, optional, tag = "1")]
11740    pub dev: ::core::option::Option<u64>,
11741    #[prost(uint64, optional, tag = "2")]
11742    pub ino: ::core::option::Option<u64>,
11743    #[prost(uint32, optional, tag = "3")]
11744    pub flags: ::core::option::Option<u32>,
11745    #[prost(uint64, optional, tag = "4")]
11746    pub pblk: ::core::option::Option<u64>,
11747    #[prost(uint32, optional, tag = "5")]
11748    pub lblk: ::core::option::Option<u32>,
11749    #[prost(uint32, optional, tag = "6")]
11750    pub len: ::core::option::Option<u32>,
11751    #[prost(uint32, optional, tag = "7")]
11752    pub mflags: ::core::option::Option<u32>,
11753    #[prost(int32, optional, tag = "8")]
11754    pub ret: ::core::option::Option<i32>,
11755}
11756#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11757pub struct Ext4ExtPutInCacheFtraceEvent {
11758    #[prost(uint64, optional, tag = "1")]
11759    pub dev: ::core::option::Option<u64>,
11760    #[prost(uint64, optional, tag = "2")]
11761    pub ino: ::core::option::Option<u64>,
11762    #[prost(uint32, optional, tag = "3")]
11763    pub lblk: ::core::option::Option<u32>,
11764    #[prost(uint32, optional, tag = "4")]
11765    pub len: ::core::option::Option<u32>,
11766    #[prost(uint64, optional, tag = "5")]
11767    pub start: ::core::option::Option<u64>,
11768}
11769#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11770pub struct Ext4ExtRemoveSpaceFtraceEvent {
11771    #[prost(uint64, optional, tag = "1")]
11772    pub dev: ::core::option::Option<u64>,
11773    #[prost(uint64, optional, tag = "2")]
11774    pub ino: ::core::option::Option<u64>,
11775    #[prost(uint32, optional, tag = "3")]
11776    pub start: ::core::option::Option<u32>,
11777    #[prost(uint32, optional, tag = "4")]
11778    pub end: ::core::option::Option<u32>,
11779    #[prost(int32, optional, tag = "5")]
11780    pub depth: ::core::option::Option<i32>,
11781}
11782#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11783pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
11784    #[prost(uint64, optional, tag = "1")]
11785    pub dev: ::core::option::Option<u64>,
11786    #[prost(uint64, optional, tag = "2")]
11787    pub ino: ::core::option::Option<u64>,
11788    #[prost(uint32, optional, tag = "3")]
11789    pub start: ::core::option::Option<u32>,
11790    #[prost(uint32, optional, tag = "4")]
11791    pub end: ::core::option::Option<u32>,
11792    #[prost(int32, optional, tag = "5")]
11793    pub depth: ::core::option::Option<i32>,
11794    #[prost(int64, optional, tag = "6")]
11795    pub partial: ::core::option::Option<i64>,
11796    #[prost(uint32, optional, tag = "7")]
11797    pub eh_entries: ::core::option::Option<u32>,
11798    #[prost(uint32, optional, tag = "8")]
11799    pub pc_lblk: ::core::option::Option<u32>,
11800    #[prost(uint64, optional, tag = "9")]
11801    pub pc_pclu: ::core::option::Option<u64>,
11802    #[prost(int32, optional, tag = "10")]
11803    pub pc_state: ::core::option::Option<i32>,
11804}
11805#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11806pub struct Ext4ExtRmIdxFtraceEvent {
11807    #[prost(uint64, optional, tag = "1")]
11808    pub dev: ::core::option::Option<u64>,
11809    #[prost(uint64, optional, tag = "2")]
11810    pub ino: ::core::option::Option<u64>,
11811    #[prost(uint64, optional, tag = "3")]
11812    pub pblk: ::core::option::Option<u64>,
11813}
11814#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11815pub struct Ext4ExtRmLeafFtraceEvent {
11816    #[prost(uint64, optional, tag = "1")]
11817    pub dev: ::core::option::Option<u64>,
11818    #[prost(uint64, optional, tag = "2")]
11819    pub ino: ::core::option::Option<u64>,
11820    #[prost(int64, optional, tag = "3")]
11821    pub partial: ::core::option::Option<i64>,
11822    #[prost(uint32, optional, tag = "4")]
11823    pub start: ::core::option::Option<u32>,
11824    #[prost(uint32, optional, tag = "5")]
11825    pub ee_lblk: ::core::option::Option<u32>,
11826    #[prost(uint64, optional, tag = "6")]
11827    pub ee_pblk: ::core::option::Option<u64>,
11828    #[prost(int32, optional, tag = "7")]
11829    pub ee_len: ::core::option::Option<i32>,
11830    #[prost(uint32, optional, tag = "8")]
11831    pub pc_lblk: ::core::option::Option<u32>,
11832    #[prost(uint64, optional, tag = "9")]
11833    pub pc_pclu: ::core::option::Option<u64>,
11834    #[prost(int32, optional, tag = "10")]
11835    pub pc_state: ::core::option::Option<i32>,
11836}
11837#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11838pub struct Ext4ExtShowExtentFtraceEvent {
11839    #[prost(uint64, optional, tag = "1")]
11840    pub dev: ::core::option::Option<u64>,
11841    #[prost(uint64, optional, tag = "2")]
11842    pub ino: ::core::option::Option<u64>,
11843    #[prost(uint64, optional, tag = "3")]
11844    pub pblk: ::core::option::Option<u64>,
11845    #[prost(uint32, optional, tag = "4")]
11846    pub lblk: ::core::option::Option<u32>,
11847    #[prost(uint32, optional, tag = "5")]
11848    pub len: ::core::option::Option<u32>,
11849}
11850#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11851pub struct Ext4FallocateEnterFtraceEvent {
11852    #[prost(uint64, optional, tag = "1")]
11853    pub dev: ::core::option::Option<u64>,
11854    #[prost(uint64, optional, tag = "2")]
11855    pub ino: ::core::option::Option<u64>,
11856    #[prost(int64, optional, tag = "3")]
11857    pub offset: ::core::option::Option<i64>,
11858    #[prost(int64, optional, tag = "4")]
11859    pub len: ::core::option::Option<i64>,
11860    #[prost(int32, optional, tag = "5")]
11861    pub mode: ::core::option::Option<i32>,
11862    #[prost(int64, optional, tag = "6")]
11863    pub pos: ::core::option::Option<i64>,
11864}
11865#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11866pub struct Ext4FallocateExitFtraceEvent {
11867    #[prost(uint64, optional, tag = "1")]
11868    pub dev: ::core::option::Option<u64>,
11869    #[prost(uint64, optional, tag = "2")]
11870    pub ino: ::core::option::Option<u64>,
11871    #[prost(int64, optional, tag = "3")]
11872    pub pos: ::core::option::Option<i64>,
11873    #[prost(uint32, optional, tag = "4")]
11874    pub blocks: ::core::option::Option<u32>,
11875    #[prost(int32, optional, tag = "5")]
11876    pub ret: ::core::option::Option<i32>,
11877}
11878#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11879pub struct Ext4FindDelallocRangeFtraceEvent {
11880    #[prost(uint64, optional, tag = "1")]
11881    pub dev: ::core::option::Option<u64>,
11882    #[prost(uint64, optional, tag = "2")]
11883    pub ino: ::core::option::Option<u64>,
11884    #[prost(uint32, optional, tag = "3")]
11885    pub from: ::core::option::Option<u32>,
11886    #[prost(uint32, optional, tag = "4")]
11887    pub to: ::core::option::Option<u32>,
11888    #[prost(int32, optional, tag = "5")]
11889    pub reverse: ::core::option::Option<i32>,
11890    #[prost(int32, optional, tag = "6")]
11891    pub found: ::core::option::Option<i32>,
11892    #[prost(uint32, optional, tag = "7")]
11893    pub found_blk: ::core::option::Option<u32>,
11894}
11895#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11896pub struct Ext4ForgetFtraceEvent {
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 block: ::core::option::Option<u64>,
11903    #[prost(int32, optional, tag = "4")]
11904    pub is_metadata: ::core::option::Option<i32>,
11905    #[prost(uint32, optional, tag = "5")]
11906    pub mode: ::core::option::Option<u32>,
11907}
11908#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11909pub struct Ext4FreeBlocksFtraceEvent {
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(uint64, optional, tag = "3")]
11915    pub block: ::core::option::Option<u64>,
11916    #[prost(uint64, optional, tag = "4")]
11917    pub count: ::core::option::Option<u64>,
11918    #[prost(int32, optional, tag = "5")]
11919    pub flags: ::core::option::Option<i32>,
11920    #[prost(uint32, optional, tag = "6")]
11921    pub mode: ::core::option::Option<u32>,
11922}
11923#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11924pub struct Ext4FreeInodeFtraceEvent {
11925    #[prost(uint64, optional, tag = "1")]
11926    pub dev: ::core::option::Option<u64>,
11927    #[prost(uint64, optional, tag = "2")]
11928    pub ino: ::core::option::Option<u64>,
11929    #[prost(uint32, optional, tag = "3")]
11930    pub uid: ::core::option::Option<u32>,
11931    #[prost(uint32, optional, tag = "4")]
11932    pub gid: ::core::option::Option<u32>,
11933    #[prost(uint64, optional, tag = "5")]
11934    pub blocks: ::core::option::Option<u64>,
11935    #[prost(uint32, optional, tag = "6")]
11936    pub mode: ::core::option::Option<u32>,
11937}
11938#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11939pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11940    #[prost(uint64, optional, tag = "1")]
11941    pub dev: ::core::option::Option<u64>,
11942    #[prost(uint32, optional, tag = "2")]
11943    pub flags: ::core::option::Option<u32>,
11944    #[prost(uint32, optional, tag = "3")]
11945    pub lblk: ::core::option::Option<u32>,
11946    #[prost(uint64, optional, tag = "4")]
11947    pub pblk: ::core::option::Option<u64>,
11948    #[prost(uint32, optional, tag = "5")]
11949    pub len: ::core::option::Option<u32>,
11950    #[prost(int32, optional, tag = "6")]
11951    pub ret: ::core::option::Option<i32>,
11952}
11953#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11954pub struct Ext4GetReservedClusterAllocFtraceEvent {
11955    #[prost(uint64, optional, tag = "1")]
11956    pub dev: ::core::option::Option<u64>,
11957    #[prost(uint64, optional, tag = "2")]
11958    pub ino: ::core::option::Option<u64>,
11959    #[prost(uint32, optional, tag = "3")]
11960    pub lblk: ::core::option::Option<u32>,
11961    #[prost(uint32, optional, tag = "4")]
11962    pub len: ::core::option::Option<u32>,
11963}
11964#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11965pub struct Ext4IndMapBlocksEnterFtraceEvent {
11966    #[prost(uint64, optional, tag = "1")]
11967    pub dev: ::core::option::Option<u64>,
11968    #[prost(uint64, optional, tag = "2")]
11969    pub ino: ::core::option::Option<u64>,
11970    #[prost(uint32, optional, tag = "3")]
11971    pub lblk: ::core::option::Option<u32>,
11972    #[prost(uint32, optional, tag = "4")]
11973    pub len: ::core::option::Option<u32>,
11974    #[prost(uint32, optional, tag = "5")]
11975    pub flags: ::core::option::Option<u32>,
11976}
11977#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11978pub struct Ext4IndMapBlocksExitFtraceEvent {
11979    #[prost(uint64, optional, tag = "1")]
11980    pub dev: ::core::option::Option<u64>,
11981    #[prost(uint64, optional, tag = "2")]
11982    pub ino: ::core::option::Option<u64>,
11983    #[prost(uint32, optional, tag = "3")]
11984    pub flags: ::core::option::Option<u32>,
11985    #[prost(uint64, optional, tag = "4")]
11986    pub pblk: ::core::option::Option<u64>,
11987    #[prost(uint32, optional, tag = "5")]
11988    pub lblk: ::core::option::Option<u32>,
11989    #[prost(uint32, optional, tag = "6")]
11990    pub len: ::core::option::Option<u32>,
11991    #[prost(uint32, optional, tag = "7")]
11992    pub mflags: ::core::option::Option<u32>,
11993    #[prost(int32, optional, tag = "8")]
11994    pub ret: ::core::option::Option<i32>,
11995}
11996#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11997pub struct Ext4InsertRangeFtraceEvent {
11998    #[prost(uint64, optional, tag = "1")]
11999    pub dev: ::core::option::Option<u64>,
12000    #[prost(uint64, optional, tag = "2")]
12001    pub ino: ::core::option::Option<u64>,
12002    #[prost(int64, optional, tag = "3")]
12003    pub offset: ::core::option::Option<i64>,
12004    #[prost(int64, optional, tag = "4")]
12005    pub len: ::core::option::Option<i64>,
12006}
12007#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12008pub struct Ext4InvalidatepageFtraceEvent {
12009    #[prost(uint64, optional, tag = "1")]
12010    pub dev: ::core::option::Option<u64>,
12011    #[prost(uint64, optional, tag = "2")]
12012    pub ino: ::core::option::Option<u64>,
12013    #[prost(uint64, optional, tag = "3")]
12014    pub index: ::core::option::Option<u64>,
12015    #[prost(uint64, optional, tag = "4")]
12016    pub offset: ::core::option::Option<u64>,
12017    #[prost(uint32, optional, tag = "5")]
12018    pub length: ::core::option::Option<u32>,
12019}
12020#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12021pub struct Ext4JournalStartFtraceEvent {
12022    #[prost(uint64, optional, tag = "1")]
12023    pub dev: ::core::option::Option<u64>,
12024    #[prost(uint64, optional, tag = "2")]
12025    pub ip: ::core::option::Option<u64>,
12026    #[prost(int32, optional, tag = "3")]
12027    pub blocks: ::core::option::Option<i32>,
12028    #[prost(int32, optional, tag = "4")]
12029    pub rsv_blocks: ::core::option::Option<i32>,
12030    #[prost(int32, optional, tag = "5")]
12031    pub nblocks: ::core::option::Option<i32>,
12032    #[prost(int32, optional, tag = "6")]
12033    pub revoke_creds: ::core::option::Option<i32>,
12034}
12035#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12036pub struct Ext4JournalStartReservedFtraceEvent {
12037    #[prost(uint64, optional, tag = "1")]
12038    pub dev: ::core::option::Option<u64>,
12039    #[prost(uint64, optional, tag = "2")]
12040    pub ip: ::core::option::Option<u64>,
12041    #[prost(int32, optional, tag = "3")]
12042    pub blocks: ::core::option::Option<i32>,
12043}
12044#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12045pub struct Ext4JournalledInvalidatepageFtraceEvent {
12046    #[prost(uint64, optional, tag = "1")]
12047    pub dev: ::core::option::Option<u64>,
12048    #[prost(uint64, optional, tag = "2")]
12049    pub ino: ::core::option::Option<u64>,
12050    #[prost(uint64, optional, tag = "3")]
12051    pub index: ::core::option::Option<u64>,
12052    #[prost(uint64, optional, tag = "4")]
12053    pub offset: ::core::option::Option<u64>,
12054    #[prost(uint32, optional, tag = "5")]
12055    pub length: ::core::option::Option<u32>,
12056}
12057#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12058pub struct Ext4JournalledWriteEndFtraceEvent {
12059    #[prost(uint64, optional, tag = "1")]
12060    pub dev: ::core::option::Option<u64>,
12061    #[prost(uint64, optional, tag = "2")]
12062    pub ino: ::core::option::Option<u64>,
12063    #[prost(int64, optional, tag = "3")]
12064    pub pos: ::core::option::Option<i64>,
12065    #[prost(uint32, optional, tag = "4")]
12066    pub len: ::core::option::Option<u32>,
12067    #[prost(uint32, optional, tag = "5")]
12068    pub copied: ::core::option::Option<u32>,
12069}
12070#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12071pub struct Ext4LoadInodeFtraceEvent {
12072    #[prost(uint64, optional, tag = "1")]
12073    pub dev: ::core::option::Option<u64>,
12074    #[prost(uint64, optional, tag = "2")]
12075    pub ino: ::core::option::Option<u64>,
12076}
12077#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12078pub struct Ext4LoadInodeBitmapFtraceEvent {
12079    #[prost(uint64, optional, tag = "1")]
12080    pub dev: ::core::option::Option<u64>,
12081    #[prost(uint32, optional, tag = "2")]
12082    pub group: ::core::option::Option<u32>,
12083}
12084#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12085pub struct Ext4MarkInodeDirtyFtraceEvent {
12086    #[prost(uint64, optional, tag = "1")]
12087    pub dev: ::core::option::Option<u64>,
12088    #[prost(uint64, optional, tag = "2")]
12089    pub ino: ::core::option::Option<u64>,
12090    #[prost(uint64, optional, tag = "3")]
12091    pub ip: ::core::option::Option<u64>,
12092}
12093#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12094pub struct Ext4MbBitmapLoadFtraceEvent {
12095    #[prost(uint64, optional, tag = "1")]
12096    pub dev: ::core::option::Option<u64>,
12097    #[prost(uint32, optional, tag = "2")]
12098    pub group: ::core::option::Option<u32>,
12099}
12100#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12101pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
12102    #[prost(uint64, optional, tag = "1")]
12103    pub dev: ::core::option::Option<u64>,
12104    #[prost(uint32, optional, tag = "2")]
12105    pub group: ::core::option::Option<u32>,
12106}
12107#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12108pub struct Ext4MbDiscardPreallocationsFtraceEvent {
12109    #[prost(uint64, optional, tag = "1")]
12110    pub dev: ::core::option::Option<u64>,
12111    #[prost(int32, optional, tag = "2")]
12112    pub needed: ::core::option::Option<i32>,
12113}
12114#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12115pub struct Ext4MbNewGroupPaFtraceEvent {
12116    #[prost(uint64, optional, tag = "1")]
12117    pub dev: ::core::option::Option<u64>,
12118    #[prost(uint64, optional, tag = "2")]
12119    pub ino: ::core::option::Option<u64>,
12120    #[prost(uint64, optional, tag = "3")]
12121    pub pa_pstart: ::core::option::Option<u64>,
12122    #[prost(uint64, optional, tag = "4")]
12123    pub pa_lstart: ::core::option::Option<u64>,
12124    #[prost(uint32, optional, tag = "5")]
12125    pub pa_len: ::core::option::Option<u32>,
12126}
12127#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12128pub struct Ext4MbNewInodePaFtraceEvent {
12129    #[prost(uint64, optional, tag = "1")]
12130    pub dev: ::core::option::Option<u64>,
12131    #[prost(uint64, optional, tag = "2")]
12132    pub ino: ::core::option::Option<u64>,
12133    #[prost(uint64, optional, tag = "3")]
12134    pub pa_pstart: ::core::option::Option<u64>,
12135    #[prost(uint64, optional, tag = "4")]
12136    pub pa_lstart: ::core::option::Option<u64>,
12137    #[prost(uint32, optional, tag = "5")]
12138    pub pa_len: ::core::option::Option<u32>,
12139}
12140#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12141pub struct Ext4MbReleaseGroupPaFtraceEvent {
12142    #[prost(uint64, optional, tag = "1")]
12143    pub dev: ::core::option::Option<u64>,
12144    #[prost(uint64, optional, tag = "2")]
12145    pub pa_pstart: ::core::option::Option<u64>,
12146    #[prost(uint32, optional, tag = "3")]
12147    pub pa_len: ::core::option::Option<u32>,
12148}
12149#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12150pub struct Ext4MbReleaseInodePaFtraceEvent {
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 block: ::core::option::Option<u64>,
12157    #[prost(uint32, optional, tag = "4")]
12158    pub count: ::core::option::Option<u32>,
12159}
12160#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12161pub struct Ext4MballocAllocFtraceEvent {
12162    #[prost(uint64, optional, tag = "1")]
12163    pub dev: ::core::option::Option<u64>,
12164    #[prost(uint64, optional, tag = "2")]
12165    pub ino: ::core::option::Option<u64>,
12166    #[prost(uint32, optional, tag = "3")]
12167    pub orig_logical: ::core::option::Option<u32>,
12168    #[prost(int32, optional, tag = "4")]
12169    pub orig_start: ::core::option::Option<i32>,
12170    #[prost(uint32, optional, tag = "5")]
12171    pub orig_group: ::core::option::Option<u32>,
12172    #[prost(int32, optional, tag = "6")]
12173    pub orig_len: ::core::option::Option<i32>,
12174    #[prost(uint32, optional, tag = "7")]
12175    pub goal_logical: ::core::option::Option<u32>,
12176    #[prost(int32, optional, tag = "8")]
12177    pub goal_start: ::core::option::Option<i32>,
12178    #[prost(uint32, optional, tag = "9")]
12179    pub goal_group: ::core::option::Option<u32>,
12180    #[prost(int32, optional, tag = "10")]
12181    pub goal_len: ::core::option::Option<i32>,
12182    #[prost(uint32, optional, tag = "11")]
12183    pub result_logical: ::core::option::Option<u32>,
12184    #[prost(int32, optional, tag = "12")]
12185    pub result_start: ::core::option::Option<i32>,
12186    #[prost(uint32, optional, tag = "13")]
12187    pub result_group: ::core::option::Option<u32>,
12188    #[prost(int32, optional, tag = "14")]
12189    pub result_len: ::core::option::Option<i32>,
12190    #[prost(uint32, optional, tag = "15")]
12191    pub found: ::core::option::Option<u32>,
12192    #[prost(uint32, optional, tag = "16")]
12193    pub groups: ::core::option::Option<u32>,
12194    #[prost(uint32, optional, tag = "17")]
12195    pub buddy: ::core::option::Option<u32>,
12196    #[prost(uint32, optional, tag = "18")]
12197    pub flags: ::core::option::Option<u32>,
12198    #[prost(uint32, optional, tag = "19")]
12199    pub tail: ::core::option::Option<u32>,
12200    #[prost(uint32, optional, tag = "20")]
12201    pub cr: ::core::option::Option<u32>,
12202}
12203#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12204pub struct Ext4MballocDiscardFtraceEvent {
12205    #[prost(uint64, optional, tag = "1")]
12206    pub dev: ::core::option::Option<u64>,
12207    #[prost(uint64, optional, tag = "2")]
12208    pub ino: ::core::option::Option<u64>,
12209    #[prost(int32, optional, tag = "3")]
12210    pub result_start: ::core::option::Option<i32>,
12211    #[prost(uint32, optional, tag = "4")]
12212    pub result_group: ::core::option::Option<u32>,
12213    #[prost(int32, optional, tag = "5")]
12214    pub result_len: ::core::option::Option<i32>,
12215}
12216#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12217pub struct Ext4MballocFreeFtraceEvent {
12218    #[prost(uint64, optional, tag = "1")]
12219    pub dev: ::core::option::Option<u64>,
12220    #[prost(uint64, optional, tag = "2")]
12221    pub ino: ::core::option::Option<u64>,
12222    #[prost(int32, optional, tag = "3")]
12223    pub result_start: ::core::option::Option<i32>,
12224    #[prost(uint32, optional, tag = "4")]
12225    pub result_group: ::core::option::Option<u32>,
12226    #[prost(int32, optional, tag = "5")]
12227    pub result_len: ::core::option::Option<i32>,
12228}
12229#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12230pub struct Ext4MballocPreallocFtraceEvent {
12231    #[prost(uint64, optional, tag = "1")]
12232    pub dev: ::core::option::Option<u64>,
12233    #[prost(uint64, optional, tag = "2")]
12234    pub ino: ::core::option::Option<u64>,
12235    #[prost(uint32, optional, tag = "3")]
12236    pub orig_logical: ::core::option::Option<u32>,
12237    #[prost(int32, optional, tag = "4")]
12238    pub orig_start: ::core::option::Option<i32>,
12239    #[prost(uint32, optional, tag = "5")]
12240    pub orig_group: ::core::option::Option<u32>,
12241    #[prost(int32, optional, tag = "6")]
12242    pub orig_len: ::core::option::Option<i32>,
12243    #[prost(uint32, optional, tag = "7")]
12244    pub result_logical: ::core::option::Option<u32>,
12245    #[prost(int32, optional, tag = "8")]
12246    pub result_start: ::core::option::Option<i32>,
12247    #[prost(uint32, optional, tag = "9")]
12248    pub result_group: ::core::option::Option<u32>,
12249    #[prost(int32, optional, tag = "10")]
12250    pub result_len: ::core::option::Option<i32>,
12251}
12252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12253pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
12254    #[prost(uint64, optional, tag = "1")]
12255    pub dev: ::core::option::Option<u64>,
12256    #[prost(uint64, optional, tag = "2")]
12257    pub ino: ::core::option::Option<u64>,
12258    #[prost(uint64, optional, tag = "3")]
12259    pub orig_ino: ::core::option::Option<u64>,
12260    #[prost(uint32, optional, tag = "4")]
12261    pub uid: ::core::option::Option<u32>,
12262    #[prost(uint32, optional, tag = "5")]
12263    pub gid: ::core::option::Option<u32>,
12264    #[prost(uint32, optional, tag = "6")]
12265    pub mode: ::core::option::Option<u32>,
12266}
12267#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12268pub struct Ext4PunchHoleFtraceEvent {
12269    #[prost(uint64, optional, tag = "1")]
12270    pub dev: ::core::option::Option<u64>,
12271    #[prost(uint64, optional, tag = "2")]
12272    pub ino: ::core::option::Option<u64>,
12273    #[prost(int64, optional, tag = "3")]
12274    pub offset: ::core::option::Option<i64>,
12275    #[prost(int64, optional, tag = "4")]
12276    pub len: ::core::option::Option<i64>,
12277    #[prost(int32, optional, tag = "5")]
12278    pub mode: ::core::option::Option<i32>,
12279}
12280#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12281pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
12282    #[prost(uint64, optional, tag = "1")]
12283    pub dev: ::core::option::Option<u64>,
12284    #[prost(uint32, optional, tag = "2")]
12285    pub group: ::core::option::Option<u32>,
12286    #[prost(uint32, optional, tag = "3")]
12287    pub prefetch: ::core::option::Option<u32>,
12288}
12289#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12290pub struct Ext4ReadpageFtraceEvent {
12291    #[prost(uint64, optional, tag = "1")]
12292    pub dev: ::core::option::Option<u64>,
12293    #[prost(uint64, optional, tag = "2")]
12294    pub ino: ::core::option::Option<u64>,
12295    #[prost(uint64, optional, tag = "3")]
12296    pub index: ::core::option::Option<u64>,
12297}
12298#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12299pub struct Ext4ReleasepageFtraceEvent {
12300    #[prost(uint64, optional, tag = "1")]
12301    pub dev: ::core::option::Option<u64>,
12302    #[prost(uint64, optional, tag = "2")]
12303    pub ino: ::core::option::Option<u64>,
12304    #[prost(uint64, optional, tag = "3")]
12305    pub index: ::core::option::Option<u64>,
12306}
12307#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12308pub struct Ext4RemoveBlocksFtraceEvent {
12309    #[prost(uint64, optional, tag = "1")]
12310    pub dev: ::core::option::Option<u64>,
12311    #[prost(uint64, optional, tag = "2")]
12312    pub ino: ::core::option::Option<u64>,
12313    #[prost(uint32, optional, tag = "3")]
12314    pub from: ::core::option::Option<u32>,
12315    #[prost(uint32, optional, tag = "4")]
12316    pub to: ::core::option::Option<u32>,
12317    #[prost(int64, optional, tag = "5")]
12318    pub partial: ::core::option::Option<i64>,
12319    #[prost(uint64, optional, tag = "6")]
12320    pub ee_pblk: ::core::option::Option<u64>,
12321    #[prost(uint32, optional, tag = "7")]
12322    pub ee_lblk: ::core::option::Option<u32>,
12323    #[prost(uint32, optional, tag = "8")]
12324    pub ee_len: ::core::option::Option<u32>,
12325    #[prost(uint32, optional, tag = "9")]
12326    pub pc_lblk: ::core::option::Option<u32>,
12327    #[prost(uint64, optional, tag = "10")]
12328    pub pc_pclu: ::core::option::Option<u64>,
12329    #[prost(int32, optional, tag = "11")]
12330    pub pc_state: ::core::option::Option<i32>,
12331}
12332#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12333pub struct Ext4RequestBlocksFtraceEvent {
12334    #[prost(uint64, optional, tag = "1")]
12335    pub dev: ::core::option::Option<u64>,
12336    #[prost(uint64, optional, tag = "2")]
12337    pub ino: ::core::option::Option<u64>,
12338    #[prost(uint32, optional, tag = "3")]
12339    pub len: ::core::option::Option<u32>,
12340    #[prost(uint32, optional, tag = "4")]
12341    pub logical: ::core::option::Option<u32>,
12342    #[prost(uint32, optional, tag = "5")]
12343    pub lleft: ::core::option::Option<u32>,
12344    #[prost(uint32, optional, tag = "6")]
12345    pub lright: ::core::option::Option<u32>,
12346    #[prost(uint64, optional, tag = "7")]
12347    pub goal: ::core::option::Option<u64>,
12348    #[prost(uint64, optional, tag = "8")]
12349    pub pleft: ::core::option::Option<u64>,
12350    #[prost(uint64, optional, tag = "9")]
12351    pub pright: ::core::option::Option<u64>,
12352    #[prost(uint32, optional, tag = "10")]
12353    pub flags: ::core::option::Option<u32>,
12354}
12355#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12356pub struct Ext4RequestInodeFtraceEvent {
12357    #[prost(uint64, optional, tag = "1")]
12358    pub dev: ::core::option::Option<u64>,
12359    #[prost(uint64, optional, tag = "2")]
12360    pub dir: ::core::option::Option<u64>,
12361    #[prost(uint32, optional, tag = "3")]
12362    pub mode: ::core::option::Option<u32>,
12363}
12364#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12365pub struct Ext4SyncFsFtraceEvent {
12366    #[prost(uint64, optional, tag = "1")]
12367    pub dev: ::core::option::Option<u64>,
12368    #[prost(int32, optional, tag = "2")]
12369    pub wait: ::core::option::Option<i32>,
12370}
12371#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12372pub struct Ext4TrimAllFreeFtraceEvent {
12373    #[prost(int32, optional, tag = "1")]
12374    pub dev_major: ::core::option::Option<i32>,
12375    #[prost(int32, optional, tag = "2")]
12376    pub dev_minor: ::core::option::Option<i32>,
12377    #[prost(uint32, optional, tag = "3")]
12378    pub group: ::core::option::Option<u32>,
12379    #[prost(int32, optional, tag = "4")]
12380    pub start: ::core::option::Option<i32>,
12381    #[prost(int32, optional, tag = "5")]
12382    pub len: ::core::option::Option<i32>,
12383}
12384#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12385pub struct Ext4TrimExtentFtraceEvent {
12386    #[prost(int32, optional, tag = "1")]
12387    pub dev_major: ::core::option::Option<i32>,
12388    #[prost(int32, optional, tag = "2")]
12389    pub dev_minor: ::core::option::Option<i32>,
12390    #[prost(uint32, optional, tag = "3")]
12391    pub group: ::core::option::Option<u32>,
12392    #[prost(int32, optional, tag = "4")]
12393    pub start: ::core::option::Option<i32>,
12394    #[prost(int32, optional, tag = "5")]
12395    pub len: ::core::option::Option<i32>,
12396}
12397#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12398pub struct Ext4TruncateEnterFtraceEvent {
12399    #[prost(uint64, optional, tag = "1")]
12400    pub dev: ::core::option::Option<u64>,
12401    #[prost(uint64, optional, tag = "2")]
12402    pub ino: ::core::option::Option<u64>,
12403    #[prost(uint64, optional, tag = "3")]
12404    pub blocks: ::core::option::Option<u64>,
12405}
12406#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12407pub struct Ext4TruncateExitFtraceEvent {
12408    #[prost(uint64, optional, tag = "1")]
12409    pub dev: ::core::option::Option<u64>,
12410    #[prost(uint64, optional, tag = "2")]
12411    pub ino: ::core::option::Option<u64>,
12412    #[prost(uint64, optional, tag = "3")]
12413    pub blocks: ::core::option::Option<u64>,
12414}
12415#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12416pub struct Ext4UnlinkEnterFtraceEvent {
12417    #[prost(uint64, optional, tag = "1")]
12418    pub dev: ::core::option::Option<u64>,
12419    #[prost(uint64, optional, tag = "2")]
12420    pub ino: ::core::option::Option<u64>,
12421    #[prost(uint64, optional, tag = "3")]
12422    pub parent: ::core::option::Option<u64>,
12423    #[prost(int64, optional, tag = "4")]
12424    pub size: ::core::option::Option<i64>,
12425}
12426#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12427pub struct Ext4UnlinkExitFtraceEvent {
12428    #[prost(uint64, optional, tag = "1")]
12429    pub dev: ::core::option::Option<u64>,
12430    #[prost(uint64, optional, tag = "2")]
12431    pub ino: ::core::option::Option<u64>,
12432    #[prost(int32, optional, tag = "3")]
12433    pub ret: ::core::option::Option<i32>,
12434}
12435#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12436pub struct Ext4WriteBeginFtraceEvent {
12437    #[prost(uint64, optional, tag = "1")]
12438    pub dev: ::core::option::Option<u64>,
12439    #[prost(uint64, optional, tag = "2")]
12440    pub ino: ::core::option::Option<u64>,
12441    #[prost(int64, optional, tag = "3")]
12442    pub pos: ::core::option::Option<i64>,
12443    #[prost(uint32, optional, tag = "4")]
12444    pub len: ::core::option::Option<u32>,
12445    #[prost(uint32, optional, tag = "5")]
12446    pub flags: ::core::option::Option<u32>,
12447}
12448#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12449pub struct Ext4WriteEndFtraceEvent {
12450    #[prost(uint64, optional, tag = "1")]
12451    pub dev: ::core::option::Option<u64>,
12452    #[prost(uint64, optional, tag = "2")]
12453    pub ino: ::core::option::Option<u64>,
12454    #[prost(int64, optional, tag = "3")]
12455    pub pos: ::core::option::Option<i64>,
12456    #[prost(uint32, optional, tag = "4")]
12457    pub len: ::core::option::Option<u32>,
12458    #[prost(uint32, optional, tag = "5")]
12459    pub copied: ::core::option::Option<u32>,
12460}
12461#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12462pub struct Ext4WritepageFtraceEvent {
12463    #[prost(uint64, optional, tag = "1")]
12464    pub dev: ::core::option::Option<u64>,
12465    #[prost(uint64, optional, tag = "2")]
12466    pub ino: ::core::option::Option<u64>,
12467    #[prost(uint64, optional, tag = "3")]
12468    pub index: ::core::option::Option<u64>,
12469}
12470#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12471pub struct Ext4WritepagesFtraceEvent {
12472    #[prost(uint64, optional, tag = "1")]
12473    pub dev: ::core::option::Option<u64>,
12474    #[prost(uint64, optional, tag = "2")]
12475    pub ino: ::core::option::Option<u64>,
12476    #[prost(int64, optional, tag = "3")]
12477    pub nr_to_write: ::core::option::Option<i64>,
12478    #[prost(int64, optional, tag = "4")]
12479    pub pages_skipped: ::core::option::Option<i64>,
12480    #[prost(int64, optional, tag = "5")]
12481    pub range_start: ::core::option::Option<i64>,
12482    #[prost(int64, optional, tag = "6")]
12483    pub range_end: ::core::option::Option<i64>,
12484    #[prost(uint64, optional, tag = "7")]
12485    pub writeback_index: ::core::option::Option<u64>,
12486    #[prost(int32, optional, tag = "8")]
12487    pub sync_mode: ::core::option::Option<i32>,
12488    #[prost(uint32, optional, tag = "9")]
12489    pub for_kupdate: ::core::option::Option<u32>,
12490    #[prost(uint32, optional, tag = "10")]
12491    pub range_cyclic: ::core::option::Option<u32>,
12492}
12493#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12494pub struct Ext4WritepagesResultFtraceEvent {
12495    #[prost(uint64, optional, tag = "1")]
12496    pub dev: ::core::option::Option<u64>,
12497    #[prost(uint64, optional, tag = "2")]
12498    pub ino: ::core::option::Option<u64>,
12499    #[prost(int32, optional, tag = "3")]
12500    pub ret: ::core::option::Option<i32>,
12501    #[prost(int32, optional, tag = "4")]
12502    pub pages_written: ::core::option::Option<i32>,
12503    #[prost(int64, optional, tag = "5")]
12504    pub pages_skipped: ::core::option::Option<i64>,
12505    #[prost(uint64, optional, tag = "6")]
12506    pub writeback_index: ::core::option::Option<u64>,
12507    #[prost(int32, optional, tag = "7")]
12508    pub sync_mode: ::core::option::Option<i32>,
12509}
12510#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12511pub struct Ext4ZeroRangeFtraceEvent {
12512    #[prost(uint64, optional, tag = "1")]
12513    pub dev: ::core::option::Option<u64>,
12514    #[prost(uint64, optional, tag = "2")]
12515    pub ino: ::core::option::Option<u64>,
12516    #[prost(int64, optional, tag = "3")]
12517    pub offset: ::core::option::Option<i64>,
12518    #[prost(int64, optional, tag = "4")]
12519    pub len: ::core::option::Option<i64>,
12520    #[prost(int32, optional, tag = "5")]
12521    pub mode: ::core::option::Option<i32>,
12522}
12523#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12524pub struct F2fsDoSubmitBioFtraceEvent {
12525    #[prost(uint64, optional, tag = "1")]
12526    pub dev: ::core::option::Option<u64>,
12527    #[prost(int32, optional, tag = "2")]
12528    pub btype: ::core::option::Option<i32>,
12529    #[prost(uint32, optional, tag = "3")]
12530    pub sync: ::core::option::Option<u32>,
12531    #[prost(uint64, optional, tag = "4")]
12532    pub sector: ::core::option::Option<u64>,
12533    #[prost(uint32, optional, tag = "5")]
12534    pub size: ::core::option::Option<u32>,
12535}
12536#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12537pub struct F2fsEvictInodeFtraceEvent {
12538    #[prost(uint64, optional, tag = "1")]
12539    pub dev: ::core::option::Option<u64>,
12540    #[prost(uint64, optional, tag = "2")]
12541    pub ino: ::core::option::Option<u64>,
12542    #[prost(uint64, optional, tag = "3")]
12543    pub pino: ::core::option::Option<u64>,
12544    #[prost(uint32, optional, tag = "4")]
12545    pub mode: ::core::option::Option<u32>,
12546    #[prost(int64, optional, tag = "5")]
12547    pub size: ::core::option::Option<i64>,
12548    #[prost(uint32, optional, tag = "6")]
12549    pub nlink: ::core::option::Option<u32>,
12550    #[prost(uint64, optional, tag = "7")]
12551    pub blocks: ::core::option::Option<u64>,
12552    #[prost(uint32, optional, tag = "8")]
12553    pub advise: ::core::option::Option<u32>,
12554}
12555#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12556pub struct F2fsFallocateFtraceEvent {
12557    #[prost(uint64, optional, tag = "1")]
12558    pub dev: ::core::option::Option<u64>,
12559    #[prost(uint64, optional, tag = "2")]
12560    pub ino: ::core::option::Option<u64>,
12561    #[prost(int32, optional, tag = "3")]
12562    pub mode: ::core::option::Option<i32>,
12563    #[prost(int64, optional, tag = "4")]
12564    pub offset: ::core::option::Option<i64>,
12565    #[prost(int64, optional, tag = "5")]
12566    pub len: ::core::option::Option<i64>,
12567    #[prost(int64, optional, tag = "6")]
12568    pub size: ::core::option::Option<i64>,
12569    #[prost(uint64, optional, tag = "7")]
12570    pub blocks: ::core::option::Option<u64>,
12571    #[prost(int32, optional, tag = "8")]
12572    pub ret: ::core::option::Option<i32>,
12573}
12574#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12575pub struct F2fsGetDataBlockFtraceEvent {
12576    #[prost(uint64, optional, tag = "1")]
12577    pub dev: ::core::option::Option<u64>,
12578    #[prost(uint64, optional, tag = "2")]
12579    pub ino: ::core::option::Option<u64>,
12580    #[prost(uint64, optional, tag = "3")]
12581    pub iblock: ::core::option::Option<u64>,
12582    #[prost(uint64, optional, tag = "4")]
12583    pub bh_start: ::core::option::Option<u64>,
12584    #[prost(uint64, optional, tag = "5")]
12585    pub bh_size: ::core::option::Option<u64>,
12586    #[prost(int32, optional, tag = "6")]
12587    pub ret: ::core::option::Option<i32>,
12588}
12589#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12590pub struct F2fsGetVictimFtraceEvent {
12591    #[prost(uint64, optional, tag = "1")]
12592    pub dev: ::core::option::Option<u64>,
12593    #[prost(int32, optional, tag = "2")]
12594    pub r#type: ::core::option::Option<i32>,
12595    #[prost(int32, optional, tag = "3")]
12596    pub gc_type: ::core::option::Option<i32>,
12597    #[prost(int32, optional, tag = "4")]
12598    pub alloc_mode: ::core::option::Option<i32>,
12599    #[prost(int32, optional, tag = "5")]
12600    pub gc_mode: ::core::option::Option<i32>,
12601    #[prost(uint32, optional, tag = "6")]
12602    pub victim: ::core::option::Option<u32>,
12603    #[prost(uint32, optional, tag = "7")]
12604    pub ofs_unit: ::core::option::Option<u32>,
12605    #[prost(uint32, optional, tag = "8")]
12606    pub pre_victim: ::core::option::Option<u32>,
12607    #[prost(uint32, optional, tag = "9")]
12608    pub prefree: ::core::option::Option<u32>,
12609    #[prost(uint32, optional, tag = "10")]
12610    pub free: ::core::option::Option<u32>,
12611    #[prost(uint32, optional, tag = "11")]
12612    pub cost: ::core::option::Option<u32>,
12613}
12614#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12615pub struct F2fsIgetFtraceEvent {
12616    #[prost(uint64, optional, tag = "1")]
12617    pub dev: ::core::option::Option<u64>,
12618    #[prost(uint64, optional, tag = "2")]
12619    pub ino: ::core::option::Option<u64>,
12620    #[prost(uint64, optional, tag = "3")]
12621    pub pino: ::core::option::Option<u64>,
12622    #[prost(uint32, optional, tag = "4")]
12623    pub mode: ::core::option::Option<u32>,
12624    #[prost(int64, optional, tag = "5")]
12625    pub size: ::core::option::Option<i64>,
12626    #[prost(uint32, optional, tag = "6")]
12627    pub nlink: ::core::option::Option<u32>,
12628    #[prost(uint64, optional, tag = "7")]
12629    pub blocks: ::core::option::Option<u64>,
12630    #[prost(uint32, optional, tag = "8")]
12631    pub advise: ::core::option::Option<u32>,
12632}
12633#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12634pub struct F2fsIgetExitFtraceEvent {
12635    #[prost(uint64, optional, tag = "1")]
12636    pub dev: ::core::option::Option<u64>,
12637    #[prost(uint64, optional, tag = "2")]
12638    pub ino: ::core::option::Option<u64>,
12639    #[prost(int32, optional, tag = "3")]
12640    pub ret: ::core::option::Option<i32>,
12641}
12642#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12643pub struct F2fsNewInodeFtraceEvent {
12644    #[prost(uint64, optional, tag = "1")]
12645    pub dev: ::core::option::Option<u64>,
12646    #[prost(uint64, optional, tag = "2")]
12647    pub ino: ::core::option::Option<u64>,
12648    #[prost(int32, optional, tag = "3")]
12649    pub ret: ::core::option::Option<i32>,
12650}
12651#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12652pub struct F2fsReadpageFtraceEvent {
12653    #[prost(uint64, optional, tag = "1")]
12654    pub dev: ::core::option::Option<u64>,
12655    #[prost(uint64, optional, tag = "2")]
12656    pub ino: ::core::option::Option<u64>,
12657    #[prost(uint64, optional, tag = "3")]
12658    pub index: ::core::option::Option<u64>,
12659    #[prost(uint64, optional, tag = "4")]
12660    pub blkaddr: ::core::option::Option<u64>,
12661    #[prost(int32, optional, tag = "5")]
12662    pub r#type: ::core::option::Option<i32>,
12663    #[prost(int32, optional, tag = "6")]
12664    pub dir: ::core::option::Option<i32>,
12665    #[prost(int32, optional, tag = "7")]
12666    pub dirty: ::core::option::Option<i32>,
12667    #[prost(int32, optional, tag = "8")]
12668    pub uptodate: ::core::option::Option<i32>,
12669}
12670#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12671pub struct F2fsReserveNewBlockFtraceEvent {
12672    #[prost(uint64, optional, tag = "1")]
12673    pub dev: ::core::option::Option<u64>,
12674    #[prost(uint32, optional, tag = "2")]
12675    pub nid: ::core::option::Option<u32>,
12676    #[prost(uint32, optional, tag = "3")]
12677    pub ofs_in_node: ::core::option::Option<u32>,
12678}
12679#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12680pub struct F2fsSetPageDirtyFtraceEvent {
12681    #[prost(uint64, optional, tag = "1")]
12682    pub dev: ::core::option::Option<u64>,
12683    #[prost(uint64, optional, tag = "2")]
12684    pub ino: ::core::option::Option<u64>,
12685    #[prost(int32, optional, tag = "3")]
12686    pub r#type: ::core::option::Option<i32>,
12687    #[prost(int32, optional, tag = "4")]
12688    pub dir: ::core::option::Option<i32>,
12689    #[prost(uint64, optional, tag = "5")]
12690    pub index: ::core::option::Option<u64>,
12691    #[prost(int32, optional, tag = "6")]
12692    pub dirty: ::core::option::Option<i32>,
12693    #[prost(int32, optional, tag = "7")]
12694    pub uptodate: ::core::option::Option<i32>,
12695}
12696#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12697pub struct F2fsSubmitWritePageFtraceEvent {
12698    #[prost(uint64, optional, tag = "1")]
12699    pub dev: ::core::option::Option<u64>,
12700    #[prost(uint64, optional, tag = "2")]
12701    pub ino: ::core::option::Option<u64>,
12702    #[prost(int32, optional, tag = "3")]
12703    pub r#type: ::core::option::Option<i32>,
12704    #[prost(uint64, optional, tag = "4")]
12705    pub index: ::core::option::Option<u64>,
12706    #[prost(uint32, optional, tag = "5")]
12707    pub block: ::core::option::Option<u32>,
12708}
12709#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12710pub struct F2fsSyncFileEnterFtraceEvent {
12711    #[prost(uint64, optional, tag = "1")]
12712    pub dev: ::core::option::Option<u64>,
12713    #[prost(uint64, optional, tag = "2")]
12714    pub ino: ::core::option::Option<u64>,
12715    #[prost(uint64, optional, tag = "3")]
12716    pub pino: ::core::option::Option<u64>,
12717    #[prost(uint32, optional, tag = "4")]
12718    pub mode: ::core::option::Option<u32>,
12719    #[prost(int64, optional, tag = "5")]
12720    pub size: ::core::option::Option<i64>,
12721    #[prost(uint32, optional, tag = "6")]
12722    pub nlink: ::core::option::Option<u32>,
12723    #[prost(uint64, optional, tag = "7")]
12724    pub blocks: ::core::option::Option<u64>,
12725    #[prost(uint32, optional, tag = "8")]
12726    pub advise: ::core::option::Option<u32>,
12727}
12728#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12729pub struct F2fsSyncFileExitFtraceEvent {
12730    #[prost(uint64, optional, tag = "1")]
12731    pub dev: ::core::option::Option<u64>,
12732    #[prost(uint64, optional, tag = "2")]
12733    pub ino: ::core::option::Option<u64>,
12734    #[prost(uint32, optional, tag = "3")]
12735    pub need_cp: ::core::option::Option<u32>,
12736    #[prost(int32, optional, tag = "4")]
12737    pub datasync: ::core::option::Option<i32>,
12738    #[prost(int32, optional, tag = "5")]
12739    pub ret: ::core::option::Option<i32>,
12740    #[prost(int32, optional, tag = "6")]
12741    pub cp_reason: ::core::option::Option<i32>,
12742}
12743#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12744pub struct F2fsSyncFsFtraceEvent {
12745    #[prost(uint64, optional, tag = "1")]
12746    pub dev: ::core::option::Option<u64>,
12747    #[prost(int32, optional, tag = "2")]
12748    pub dirty: ::core::option::Option<i32>,
12749    #[prost(int32, optional, tag = "3")]
12750    pub wait: ::core::option::Option<i32>,
12751}
12752#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12753pub struct F2fsTruncateFtraceEvent {
12754    #[prost(uint64, optional, tag = "1")]
12755    pub dev: ::core::option::Option<u64>,
12756    #[prost(uint64, optional, tag = "2")]
12757    pub ino: ::core::option::Option<u64>,
12758    #[prost(uint64, optional, tag = "3")]
12759    pub pino: ::core::option::Option<u64>,
12760    #[prost(uint32, optional, tag = "4")]
12761    pub mode: ::core::option::Option<u32>,
12762    #[prost(int64, optional, tag = "5")]
12763    pub size: ::core::option::Option<i64>,
12764    #[prost(uint32, optional, tag = "6")]
12765    pub nlink: ::core::option::Option<u32>,
12766    #[prost(uint64, optional, tag = "7")]
12767    pub blocks: ::core::option::Option<u64>,
12768    #[prost(uint32, optional, tag = "8")]
12769    pub advise: ::core::option::Option<u32>,
12770}
12771#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12772pub struct F2fsTruncateBlocksEnterFtraceEvent {
12773    #[prost(uint64, optional, tag = "1")]
12774    pub dev: ::core::option::Option<u64>,
12775    #[prost(uint64, optional, tag = "2")]
12776    pub ino: ::core::option::Option<u64>,
12777    #[prost(int64, optional, tag = "3")]
12778    pub size: ::core::option::Option<i64>,
12779    #[prost(uint64, optional, tag = "4")]
12780    pub blocks: ::core::option::Option<u64>,
12781    #[prost(uint64, optional, tag = "5")]
12782    pub from: ::core::option::Option<u64>,
12783}
12784#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12785pub struct F2fsTruncateBlocksExitFtraceEvent {
12786    #[prost(uint64, optional, tag = "1")]
12787    pub dev: ::core::option::Option<u64>,
12788    #[prost(uint64, optional, tag = "2")]
12789    pub ino: ::core::option::Option<u64>,
12790    #[prost(int32, optional, tag = "3")]
12791    pub ret: ::core::option::Option<i32>,
12792}
12793#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12794pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
12795    #[prost(uint64, optional, tag = "1")]
12796    pub dev: ::core::option::Option<u64>,
12797    #[prost(uint64, optional, tag = "2")]
12798    pub ino: ::core::option::Option<u64>,
12799    #[prost(uint32, optional, tag = "3")]
12800    pub nid: ::core::option::Option<u32>,
12801    #[prost(uint32, optional, tag = "4")]
12802    pub ofs: ::core::option::Option<u32>,
12803    #[prost(int32, optional, tag = "5")]
12804    pub free: ::core::option::Option<i32>,
12805}
12806#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12807pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
12808    #[prost(uint64, optional, tag = "1")]
12809    pub dev: ::core::option::Option<u64>,
12810    #[prost(uint64, optional, tag = "2")]
12811    pub ino: ::core::option::Option<u64>,
12812    #[prost(int64, optional, tag = "3")]
12813    pub size: ::core::option::Option<i64>,
12814    #[prost(uint64, optional, tag = "4")]
12815    pub blocks: ::core::option::Option<u64>,
12816    #[prost(uint64, optional, tag = "5")]
12817    pub from: ::core::option::Option<u64>,
12818}
12819#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12820pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
12821    #[prost(uint64, optional, tag = "1")]
12822    pub dev: ::core::option::Option<u64>,
12823    #[prost(uint64, optional, tag = "2")]
12824    pub ino: ::core::option::Option<u64>,
12825    #[prost(int32, optional, tag = "3")]
12826    pub ret: ::core::option::Option<i32>,
12827}
12828#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12829pub struct F2fsTruncateNodeFtraceEvent {
12830    #[prost(uint64, optional, tag = "1")]
12831    pub dev: ::core::option::Option<u64>,
12832    #[prost(uint64, optional, tag = "2")]
12833    pub ino: ::core::option::Option<u64>,
12834    #[prost(uint32, optional, tag = "3")]
12835    pub nid: ::core::option::Option<u32>,
12836    #[prost(uint32, optional, tag = "4")]
12837    pub blk_addr: ::core::option::Option<u32>,
12838}
12839#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12840pub struct F2fsTruncateNodesEnterFtraceEvent {
12841    #[prost(uint64, optional, tag = "1")]
12842    pub dev: ::core::option::Option<u64>,
12843    #[prost(uint64, optional, tag = "2")]
12844    pub ino: ::core::option::Option<u64>,
12845    #[prost(uint32, optional, tag = "3")]
12846    pub nid: ::core::option::Option<u32>,
12847    #[prost(uint32, optional, tag = "4")]
12848    pub blk_addr: ::core::option::Option<u32>,
12849}
12850#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12851pub struct F2fsTruncateNodesExitFtraceEvent {
12852    #[prost(uint64, optional, tag = "1")]
12853    pub dev: ::core::option::Option<u64>,
12854    #[prost(uint64, optional, tag = "2")]
12855    pub ino: ::core::option::Option<u64>,
12856    #[prost(int32, optional, tag = "3")]
12857    pub ret: ::core::option::Option<i32>,
12858}
12859#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12860pub struct F2fsTruncatePartialNodesFtraceEvent {
12861    #[prost(uint64, optional, tag = "1")]
12862    pub dev: ::core::option::Option<u64>,
12863    #[prost(uint64, optional, tag = "2")]
12864    pub ino: ::core::option::Option<u64>,
12865    #[prost(uint32, optional, tag = "3")]
12866    pub nid: ::core::option::Option<u32>,
12867    #[prost(int32, optional, tag = "4")]
12868    pub depth: ::core::option::Option<i32>,
12869    #[prost(int32, optional, tag = "5")]
12870    pub err: ::core::option::Option<i32>,
12871}
12872#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12873pub struct F2fsUnlinkEnterFtraceEvent {
12874    #[prost(uint64, optional, tag = "1")]
12875    pub dev: ::core::option::Option<u64>,
12876    #[prost(uint64, optional, tag = "2")]
12877    pub ino: ::core::option::Option<u64>,
12878    #[prost(int64, optional, tag = "3")]
12879    pub size: ::core::option::Option<i64>,
12880    #[prost(uint64, optional, tag = "4")]
12881    pub blocks: ::core::option::Option<u64>,
12882    #[prost(string, optional, tag = "5")]
12883    pub name: ::core::option::Option<::prost::alloc::string::String>,
12884}
12885#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12886pub struct F2fsUnlinkExitFtraceEvent {
12887    #[prost(uint64, optional, tag = "1")]
12888    pub dev: ::core::option::Option<u64>,
12889    #[prost(uint64, optional, tag = "2")]
12890    pub ino: ::core::option::Option<u64>,
12891    #[prost(int32, optional, tag = "3")]
12892    pub ret: ::core::option::Option<i32>,
12893}
12894#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12895pub struct F2fsVmPageMkwriteFtraceEvent {
12896    #[prost(uint64, optional, tag = "1")]
12897    pub dev: ::core::option::Option<u64>,
12898    #[prost(uint64, optional, tag = "2")]
12899    pub ino: ::core::option::Option<u64>,
12900    #[prost(int32, optional, tag = "3")]
12901    pub r#type: ::core::option::Option<i32>,
12902    #[prost(int32, optional, tag = "4")]
12903    pub dir: ::core::option::Option<i32>,
12904    #[prost(uint64, optional, tag = "5")]
12905    pub index: ::core::option::Option<u64>,
12906    #[prost(int32, optional, tag = "6")]
12907    pub dirty: ::core::option::Option<i32>,
12908    #[prost(int32, optional, tag = "7")]
12909    pub uptodate: ::core::option::Option<i32>,
12910}
12911#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12912pub struct F2fsWriteBeginFtraceEvent {
12913    #[prost(uint64, optional, tag = "1")]
12914    pub dev: ::core::option::Option<u64>,
12915    #[prost(uint64, optional, tag = "2")]
12916    pub ino: ::core::option::Option<u64>,
12917    #[prost(int64, optional, tag = "3")]
12918    pub pos: ::core::option::Option<i64>,
12919    #[prost(uint32, optional, tag = "4")]
12920    pub len: ::core::option::Option<u32>,
12921    #[prost(uint32, optional, tag = "5")]
12922    pub flags: ::core::option::Option<u32>,
12923}
12924#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12925pub struct F2fsWriteCheckpointFtraceEvent {
12926    #[prost(uint64, optional, tag = "1")]
12927    pub dev: ::core::option::Option<u64>,
12928    #[prost(uint32, optional, tag = "2")]
12929    pub is_umount: ::core::option::Option<u32>,
12930    #[prost(string, optional, tag = "3")]
12931    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12932    #[prost(int32, optional, tag = "4")]
12933    pub reason: ::core::option::Option<i32>,
12934    #[prost(uint32, optional, tag = "5")]
12935    pub phase: ::core::option::Option<u32>,
12936}
12937#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12938pub struct F2fsWriteEndFtraceEvent {
12939    #[prost(uint64, optional, tag = "1")]
12940    pub dev: ::core::option::Option<u64>,
12941    #[prost(uint64, optional, tag = "2")]
12942    pub ino: ::core::option::Option<u64>,
12943    #[prost(int64, optional, tag = "3")]
12944    pub pos: ::core::option::Option<i64>,
12945    #[prost(uint32, optional, tag = "4")]
12946    pub len: ::core::option::Option<u32>,
12947    #[prost(uint32, optional, tag = "5")]
12948    pub copied: ::core::option::Option<u32>,
12949}
12950#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12951pub struct F2fsIostatFtraceEvent {
12952    #[prost(uint64, optional, tag = "1")]
12953    pub app_bio: ::core::option::Option<u64>,
12954    #[prost(uint64, optional, tag = "2")]
12955    pub app_brio: ::core::option::Option<u64>,
12956    #[prost(uint64, optional, tag = "3")]
12957    pub app_dio: ::core::option::Option<u64>,
12958    #[prost(uint64, optional, tag = "4")]
12959    pub app_drio: ::core::option::Option<u64>,
12960    #[prost(uint64, optional, tag = "5")]
12961    pub app_mio: ::core::option::Option<u64>,
12962    #[prost(uint64, optional, tag = "6")]
12963    pub app_mrio: ::core::option::Option<u64>,
12964    #[prost(uint64, optional, tag = "7")]
12965    pub app_rio: ::core::option::Option<u64>,
12966    #[prost(uint64, optional, tag = "8")]
12967    pub app_wio: ::core::option::Option<u64>,
12968    #[prost(uint64, optional, tag = "9")]
12969    pub dev: ::core::option::Option<u64>,
12970    #[prost(uint64, optional, tag = "10")]
12971    pub fs_cdrio: ::core::option::Option<u64>,
12972    #[prost(uint64, optional, tag = "11")]
12973    pub fs_cp_dio: ::core::option::Option<u64>,
12974    #[prost(uint64, optional, tag = "12")]
12975    pub fs_cp_mio: ::core::option::Option<u64>,
12976    #[prost(uint64, optional, tag = "13")]
12977    pub fs_cp_nio: ::core::option::Option<u64>,
12978    #[prost(uint64, optional, tag = "14")]
12979    pub fs_dio: ::core::option::Option<u64>,
12980    #[prost(uint64, optional, tag = "15")]
12981    pub fs_discard: ::core::option::Option<u64>,
12982    #[prost(uint64, optional, tag = "16")]
12983    pub fs_drio: ::core::option::Option<u64>,
12984    #[prost(uint64, optional, tag = "17")]
12985    pub fs_gc_dio: ::core::option::Option<u64>,
12986    #[prost(uint64, optional, tag = "18")]
12987    pub fs_gc_nio: ::core::option::Option<u64>,
12988    #[prost(uint64, optional, tag = "19")]
12989    pub fs_gdrio: ::core::option::Option<u64>,
12990    #[prost(uint64, optional, tag = "20")]
12991    pub fs_mio: ::core::option::Option<u64>,
12992    #[prost(uint64, optional, tag = "21")]
12993    pub fs_mrio: ::core::option::Option<u64>,
12994    #[prost(uint64, optional, tag = "22")]
12995    pub fs_nio: ::core::option::Option<u64>,
12996    #[prost(uint64, optional, tag = "23")]
12997    pub fs_nrio: ::core::option::Option<u64>,
12998}
12999#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13000pub struct F2fsIostatLatencyFtraceEvent {
13001    #[prost(uint32, optional, tag = "1")]
13002    pub d_rd_avg: ::core::option::Option<u32>,
13003    #[prost(uint32, optional, tag = "2")]
13004    pub d_rd_cnt: ::core::option::Option<u32>,
13005    #[prost(uint32, optional, tag = "3")]
13006    pub d_rd_peak: ::core::option::Option<u32>,
13007    #[prost(uint32, optional, tag = "4")]
13008    pub d_wr_as_avg: ::core::option::Option<u32>,
13009    #[prost(uint32, optional, tag = "5")]
13010    pub d_wr_as_cnt: ::core::option::Option<u32>,
13011    #[prost(uint32, optional, tag = "6")]
13012    pub d_wr_as_peak: ::core::option::Option<u32>,
13013    #[prost(uint32, optional, tag = "7")]
13014    pub d_wr_s_avg: ::core::option::Option<u32>,
13015    #[prost(uint32, optional, tag = "8")]
13016    pub d_wr_s_cnt: ::core::option::Option<u32>,
13017    #[prost(uint32, optional, tag = "9")]
13018    pub d_wr_s_peak: ::core::option::Option<u32>,
13019    #[prost(uint64, optional, tag = "10")]
13020    pub dev: ::core::option::Option<u64>,
13021    #[prost(uint32, optional, tag = "11")]
13022    pub m_rd_avg: ::core::option::Option<u32>,
13023    #[prost(uint32, optional, tag = "12")]
13024    pub m_rd_cnt: ::core::option::Option<u32>,
13025    #[prost(uint32, optional, tag = "13")]
13026    pub m_rd_peak: ::core::option::Option<u32>,
13027    #[prost(uint32, optional, tag = "14")]
13028    pub m_wr_as_avg: ::core::option::Option<u32>,
13029    #[prost(uint32, optional, tag = "15")]
13030    pub m_wr_as_cnt: ::core::option::Option<u32>,
13031    #[prost(uint32, optional, tag = "16")]
13032    pub m_wr_as_peak: ::core::option::Option<u32>,
13033    #[prost(uint32, optional, tag = "17")]
13034    pub m_wr_s_avg: ::core::option::Option<u32>,
13035    #[prost(uint32, optional, tag = "18")]
13036    pub m_wr_s_cnt: ::core::option::Option<u32>,
13037    #[prost(uint32, optional, tag = "19")]
13038    pub m_wr_s_peak: ::core::option::Option<u32>,
13039    #[prost(uint32, optional, tag = "20")]
13040    pub n_rd_avg: ::core::option::Option<u32>,
13041    #[prost(uint32, optional, tag = "21")]
13042    pub n_rd_cnt: ::core::option::Option<u32>,
13043    #[prost(uint32, optional, tag = "22")]
13044    pub n_rd_peak: ::core::option::Option<u32>,
13045    #[prost(uint32, optional, tag = "23")]
13046    pub n_wr_as_avg: ::core::option::Option<u32>,
13047    #[prost(uint32, optional, tag = "24")]
13048    pub n_wr_as_cnt: ::core::option::Option<u32>,
13049    #[prost(uint32, optional, tag = "25")]
13050    pub n_wr_as_peak: ::core::option::Option<u32>,
13051    #[prost(uint32, optional, tag = "26")]
13052    pub n_wr_s_avg: ::core::option::Option<u32>,
13053    #[prost(uint32, optional, tag = "27")]
13054    pub n_wr_s_cnt: ::core::option::Option<u32>,
13055    #[prost(uint32, optional, tag = "28")]
13056    pub n_wr_s_peak: ::core::option::Option<u32>,
13057}
13058#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13059pub struct F2fsBackgroundGcFtraceEvent {
13060    #[prost(uint64, optional, tag = "1")]
13061    pub dev: ::core::option::Option<u64>,
13062    #[prost(uint32, optional, tag = "2")]
13063    pub wait_ms: ::core::option::Option<u32>,
13064    #[prost(uint32, optional, tag = "3")]
13065    pub prefree: ::core::option::Option<u32>,
13066    #[prost(uint32, optional, tag = "4")]
13067    pub free: ::core::option::Option<u32>,
13068}
13069#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13070pub struct F2fsGcBeginFtraceEvent {
13071    #[prost(uint64, optional, tag = "1")]
13072    pub dev: ::core::option::Option<u64>,
13073    #[prost(uint32, optional, tag = "2")]
13074    pub sync: ::core::option::Option<u32>,
13075    #[prost(uint32, optional, tag = "3")]
13076    pub background: ::core::option::Option<u32>,
13077    #[prost(int64, optional, tag = "4")]
13078    pub dirty_nodes: ::core::option::Option<i64>,
13079    #[prost(int64, optional, tag = "5")]
13080    pub dirty_dents: ::core::option::Option<i64>,
13081    #[prost(int64, optional, tag = "6")]
13082    pub dirty_imeta: ::core::option::Option<i64>,
13083    #[prost(uint32, optional, tag = "7")]
13084    pub free_sec: ::core::option::Option<u32>,
13085    #[prost(uint32, optional, tag = "8")]
13086    pub free_seg: ::core::option::Option<u32>,
13087    #[prost(int32, optional, tag = "9")]
13088    pub reserved_seg: ::core::option::Option<i32>,
13089    #[prost(uint32, optional, tag = "10")]
13090    pub prefree_seg: ::core::option::Option<u32>,
13091    #[prost(int32, optional, tag = "11")]
13092    pub gc_type: ::core::option::Option<i32>,
13093    #[prost(uint32, optional, tag = "12")]
13094    pub no_bg_gc: ::core::option::Option<u32>,
13095    #[prost(uint32, optional, tag = "13")]
13096    pub nr_free_secs: ::core::option::Option<u32>,
13097}
13098#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13099pub struct F2fsGcEndFtraceEvent {
13100    #[prost(uint64, optional, tag = "1")]
13101    pub dev: ::core::option::Option<u64>,
13102    #[prost(int32, optional, tag = "2")]
13103    pub ret: ::core::option::Option<i32>,
13104    #[prost(int32, optional, tag = "3")]
13105    pub seg_freed: ::core::option::Option<i32>,
13106    #[prost(int32, optional, tag = "4")]
13107    pub sec_freed: ::core::option::Option<i32>,
13108    #[prost(int64, optional, tag = "5")]
13109    pub dirty_nodes: ::core::option::Option<i64>,
13110    #[prost(int64, optional, tag = "6")]
13111    pub dirty_dents: ::core::option::Option<i64>,
13112    #[prost(int64, optional, tag = "7")]
13113    pub dirty_imeta: ::core::option::Option<i64>,
13114    #[prost(uint32, optional, tag = "8")]
13115    pub free_sec: ::core::option::Option<u32>,
13116    #[prost(uint32, optional, tag = "9")]
13117    pub free_seg: ::core::option::Option<u32>,
13118    #[prost(int32, optional, tag = "10")]
13119    pub reserved_seg: ::core::option::Option<i32>,
13120    #[prost(uint32, optional, tag = "11")]
13121    pub prefree_seg: ::core::option::Option<u32>,
13122}
13123#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13124pub struct F2fsLockElapsedTimeFtraceEvent {
13125    #[prost(uint64, optional, tag = "1")]
13126    pub dev: ::core::option::Option<u64>,
13127    #[prost(string, optional, tag = "2")]
13128    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13129    #[prost(int32, optional, tag = "3")]
13130    pub pid: ::core::option::Option<i32>,
13131    #[prost(int32, optional, tag = "4")]
13132    pub prio: ::core::option::Option<i32>,
13133    #[prost(int32, optional, tag = "5")]
13134    pub ioprio_class: ::core::option::Option<i32>,
13135    #[prost(int32, optional, tag = "6")]
13136    pub ioprio_data: ::core::option::Option<i32>,
13137    #[prost(uint32, optional, tag = "7")]
13138    pub lock_name: ::core::option::Option<u32>,
13139    #[prost(uint32, optional, tag = "8")]
13140    pub is_write: ::core::option::Option<u32>,
13141    #[prost(uint64, optional, tag = "9")]
13142    pub total_time: ::core::option::Option<u64>,
13143    #[prost(uint64, optional, tag = "10")]
13144    pub running_time: ::core::option::Option<u64>,
13145    #[prost(uint64, optional, tag = "11")]
13146    pub runnable_time: ::core::option::Option<u64>,
13147    #[prost(uint64, optional, tag = "12")]
13148    pub io_sleep_time: ::core::option::Option<u64>,
13149    #[prost(uint64, optional, tag = "13")]
13150    pub other_time: ::core::option::Option<u64>,
13151}
13152#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13153pub struct FastrpcDmaStatFtraceEvent {
13154    #[prost(int32, optional, tag = "1")]
13155    pub cid: ::core::option::Option<i32>,
13156    #[prost(int64, optional, tag = "2")]
13157    pub len: ::core::option::Option<i64>,
13158    #[prost(uint64, optional, tag = "3")]
13159    pub total_allocated: ::core::option::Option<u64>,
13160}
13161#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13162pub struct FastrpcDmaFreeFtraceEvent {
13163    #[prost(int32, optional, tag = "1")]
13164    pub cid: ::core::option::Option<i32>,
13165    #[prost(uint64, optional, tag = "2")]
13166    pub phys: ::core::option::Option<u64>,
13167    #[prost(uint64, optional, tag = "3")]
13168    pub size: ::core::option::Option<u64>,
13169}
13170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13171pub struct FastrpcDmaAllocFtraceEvent {
13172    #[prost(int32, optional, tag = "1")]
13173    pub cid: ::core::option::Option<i32>,
13174    #[prost(uint64, optional, tag = "2")]
13175    pub phys: ::core::option::Option<u64>,
13176    #[prost(uint64, optional, tag = "3")]
13177    pub size: ::core::option::Option<u64>,
13178    #[prost(uint64, optional, tag = "4")]
13179    pub attr: ::core::option::Option<u64>,
13180    #[prost(int32, optional, tag = "5")]
13181    pub mflags: ::core::option::Option<i32>,
13182}
13183#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13184pub struct FastrpcDmaUnmapFtraceEvent {
13185    #[prost(int32, optional, tag = "1")]
13186    pub cid: ::core::option::Option<i32>,
13187    #[prost(uint64, optional, tag = "2")]
13188    pub phys: ::core::option::Option<u64>,
13189    #[prost(uint64, optional, tag = "3")]
13190    pub size: ::core::option::Option<u64>,
13191}
13192#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13193pub struct FastrpcDmaMapFtraceEvent {
13194    #[prost(int32, optional, tag = "1")]
13195    pub cid: ::core::option::Option<i32>,
13196    #[prost(int32, optional, tag = "2")]
13197    pub fd: ::core::option::Option<i32>,
13198    #[prost(uint64, optional, tag = "3")]
13199    pub phys: ::core::option::Option<u64>,
13200    #[prost(uint64, optional, tag = "4")]
13201    pub size: ::core::option::Option<u64>,
13202    #[prost(uint64, optional, tag = "5")]
13203    pub len: ::core::option::Option<u64>,
13204    #[prost(uint32, optional, tag = "6")]
13205    pub attr: ::core::option::Option<u32>,
13206    #[prost(int32, optional, tag = "7")]
13207    pub mflags: ::core::option::Option<i32>,
13208}
13209#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13210pub struct FenceInitFtraceEvent {
13211    #[prost(uint32, optional, tag = "1")]
13212    pub context: ::core::option::Option<u32>,
13213    #[prost(string, optional, tag = "2")]
13214    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13215    #[prost(uint32, optional, tag = "3")]
13216    pub seqno: ::core::option::Option<u32>,
13217    #[prost(string, optional, tag = "4")]
13218    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13219}
13220#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13221pub struct FenceDestroyFtraceEvent {
13222    #[prost(uint32, optional, tag = "1")]
13223    pub context: ::core::option::Option<u32>,
13224    #[prost(string, optional, tag = "2")]
13225    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13226    #[prost(uint32, optional, tag = "3")]
13227    pub seqno: ::core::option::Option<u32>,
13228    #[prost(string, optional, tag = "4")]
13229    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13230}
13231#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13232pub struct FenceEnableSignalFtraceEvent {
13233    #[prost(uint32, optional, tag = "1")]
13234    pub context: ::core::option::Option<u32>,
13235    #[prost(string, optional, tag = "2")]
13236    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13237    #[prost(uint32, optional, tag = "3")]
13238    pub seqno: ::core::option::Option<u32>,
13239    #[prost(string, optional, tag = "4")]
13240    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13241}
13242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13243pub struct FenceSignaledFtraceEvent {
13244    #[prost(uint32, optional, tag = "1")]
13245    pub context: ::core::option::Option<u32>,
13246    #[prost(string, optional, tag = "2")]
13247    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13248    #[prost(uint32, optional, tag = "3")]
13249    pub seqno: ::core::option::Option<u32>,
13250    #[prost(string, optional, tag = "4")]
13251    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13252}
13253#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13254pub struct MmFilemapAddToPageCacheFtraceEvent {
13255    #[prost(uint64, optional, tag = "1")]
13256    pub pfn: ::core::option::Option<u64>,
13257    #[prost(uint64, optional, tag = "2")]
13258    pub i_ino: ::core::option::Option<u64>,
13259    #[prost(uint64, optional, tag = "3")]
13260    pub index: ::core::option::Option<u64>,
13261    #[prost(uint64, optional, tag = "4")]
13262    pub s_dev: ::core::option::Option<u64>,
13263    #[prost(uint64, optional, tag = "5")]
13264    pub page: ::core::option::Option<u64>,
13265}
13266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13267pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
13268    #[prost(uint64, optional, tag = "1")]
13269    pub pfn: ::core::option::Option<u64>,
13270    #[prost(uint64, optional, tag = "2")]
13271    pub i_ino: ::core::option::Option<u64>,
13272    #[prost(uint64, optional, tag = "3")]
13273    pub index: ::core::option::Option<u64>,
13274    #[prost(uint64, optional, tag = "4")]
13275    pub s_dev: ::core::option::Option<u64>,
13276    #[prost(uint64, optional, tag = "5")]
13277    pub page: ::core::option::Option<u64>,
13278}
13279#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13280pub struct DoSysOpenFtraceEvent {
13281    #[prost(string, optional, tag = "1")]
13282    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13283    #[prost(int32, optional, tag = "2")]
13284    pub flags: ::core::option::Option<i32>,
13285    #[prost(int32, optional, tag = "3")]
13286    pub mode: ::core::option::Option<i32>,
13287}
13288#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13289pub struct OpenExecFtraceEvent {
13290    #[prost(string, optional, tag = "1")]
13291    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13292}
13293#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13294pub struct PrintFtraceEvent {
13295    #[prost(uint64, optional, tag = "1")]
13296    pub ip: ::core::option::Option<u64>,
13297    #[prost(string, optional, tag = "2")]
13298    pub buf: ::core::option::Option<::prost::alloc::string::String>,
13299}
13300#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13301pub struct FuncgraphEntryFtraceEvent {
13302    #[prost(int32, optional, tag = "1")]
13303    pub depth: ::core::option::Option<i32>,
13304    #[prost(uint64, optional, tag = "2")]
13305    pub func: ::core::option::Option<u64>,
13306}
13307#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13308pub struct FuncgraphExitFtraceEvent {
13309    #[prost(uint64, optional, tag = "1")]
13310    pub calltime: ::core::option::Option<u64>,
13311    #[prost(int32, optional, tag = "2")]
13312    pub depth: ::core::option::Option<i32>,
13313    #[prost(uint64, optional, tag = "3")]
13314    pub func: ::core::option::Option<u64>,
13315    #[prost(uint64, optional, tag = "4")]
13316    pub overrun: ::core::option::Option<u64>,
13317    #[prost(uint64, optional, tag = "5")]
13318    pub rettime: ::core::option::Option<u64>,
13319}
13320#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13321pub struct FwtpPerfettoCounterFtraceEvent {
13322    #[prost(uint64, optional, tag = "1")]
13323    pub timestamp: ::core::option::Option<u64>,
13324    #[prost(uint32, optional, tag = "2")]
13325    pub track_id: ::core::option::Option<u32>,
13326    #[prost(string, optional, tag = "3")]
13327    pub category: ::core::option::Option<::prost::alloc::string::String>,
13328    #[prost(string, optional, tag = "4")]
13329    pub name: ::core::option::Option<::prost::alloc::string::String>,
13330    #[prost(uint32, optional, tag = "5")]
13331    pub value: ::core::option::Option<u32>,
13332}
13333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13334pub struct FwtpPerfettoSliceFtraceEvent {
13335    #[prost(uint64, optional, tag = "1")]
13336    pub timestamp: ::core::option::Option<u64>,
13337    #[prost(uint32, optional, tag = "2")]
13338    pub track_id: ::core::option::Option<u32>,
13339    #[prost(string, optional, tag = "3")]
13340    pub category: ::core::option::Option<::prost::alloc::string::String>,
13341    #[prost(string, optional, tag = "4")]
13342    pub name: ::core::option::Option<::prost::alloc::string::String>,
13343    #[prost(uint32, optional, tag = "5")]
13344    pub begin: ::core::option::Option<u32>,
13345}
13346#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13347pub struct G2dTracingMarkWriteFtraceEvent {
13348    #[prost(int32, optional, tag = "1")]
13349    pub pid: ::core::option::Option<i32>,
13350    #[prost(string, optional, tag = "4")]
13351    pub name: ::core::option::Option<::prost::alloc::string::String>,
13352    #[prost(uint32, optional, tag = "5")]
13353    pub r#type: ::core::option::Option<u32>,
13354    #[prost(int32, optional, tag = "6")]
13355    pub value: ::core::option::Option<i32>,
13356}
13357/// This generic proto is used to output events in the trace
13358/// when a specific proto for that event does not exist.
13359#[derive(Clone, PartialEq, ::prost::Message)]
13360pub struct GenericFtraceEvent {
13361    #[prost(string, optional, tag = "1")]
13362    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
13363    #[prost(message, repeated, tag = "2")]
13364    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
13365}
13366/// Nested message and enum types in `GenericFtraceEvent`.
13367pub mod generic_ftrace_event {
13368    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13369    pub struct Field {
13370        #[prost(string, optional, tag = "1")]
13371        pub name: ::core::option::Option<::prost::alloc::string::String>,
13372        #[prost(oneof = "field::Value", tags = "3, 4, 5")]
13373        pub value: ::core::option::Option<field::Value>,
13374    }
13375    /// Nested message and enum types in `Field`.
13376    pub mod field {
13377        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
13378        pub enum Value {
13379            #[prost(string, tag = "3")]
13380            StrValue(::prost::alloc::string::String),
13381            #[prost(int64, tag = "4")]
13382            IntValue(i64),
13383            #[prost(uint64, tag = "5")]
13384            UintValue(u64),
13385        }
13386    }
13387}
13388#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13389pub struct KprobeEvent {
13390    #[prost(string, optional, tag = "1")]
13391    pub name: ::core::option::Option<::prost::alloc::string::String>,
13392    #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
13393    pub r#type: ::core::option::Option<i32>,
13394}
13395/// Nested message and enum types in `KprobeEvent`.
13396pub mod kprobe_event {
13397    #[derive(
13398        Clone,
13399        Copy,
13400        Debug,
13401        PartialEq,
13402        Eq,
13403        Hash,
13404        PartialOrd,
13405        Ord,
13406        ::prost::Enumeration
13407    )]
13408    #[repr(i32)]
13409    pub enum KprobeType {
13410        Unknown = 0,
13411        Begin = 1,
13412        End = 2,
13413        Instant = 3,
13414    }
13415    impl KprobeType {
13416        /// String value of the enum field names used in the ProtoBuf definition.
13417        ///
13418        /// The values are not transformed in any way and thus are considered stable
13419        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13420        pub fn as_str_name(&self) -> &'static str {
13421            match self {
13422                Self::Unknown => "KPROBE_TYPE_UNKNOWN",
13423                Self::Begin => "KPROBE_TYPE_BEGIN",
13424                Self::End => "KPROBE_TYPE_END",
13425                Self::Instant => "KPROBE_TYPE_INSTANT",
13426            }
13427        }
13428        /// Creates an enum from field names used in the ProtoBuf definition.
13429        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13430            match value {
13431                "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
13432                "KPROBE_TYPE_BEGIN" => Some(Self::Begin),
13433                "KPROBE_TYPE_END" => Some(Self::End),
13434                "KPROBE_TYPE_INSTANT" => Some(Self::Instant),
13435                _ => None,
13436            }
13437        }
13438    }
13439}
13440#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13441pub struct GoogleIccEventFtraceEvent {
13442    #[prost(string, optional, tag = "1")]
13443    pub event: ::core::option::Option<::prost::alloc::string::String>,
13444    #[prost(uint64, optional, tag = "2")]
13445    pub timestamp: ::core::option::Option<u64>,
13446}
13447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13448pub struct GoogleIrmEventFtraceEvent {
13449    #[prost(string, optional, tag = "1")]
13450    pub event: ::core::option::Option<::prost::alloc::string::String>,
13451    #[prost(uint64, optional, tag = "2")]
13452    pub timestamp: ::core::option::Option<u64>,
13453}
13454#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13455pub struct GpuMemTotalFtraceEvent {
13456    #[prost(uint32, optional, tag = "1")]
13457    pub gpu_id: ::core::option::Option<u32>,
13458    #[prost(uint32, optional, tag = "2")]
13459    pub pid: ::core::option::Option<u32>,
13460    #[prost(uint64, optional, tag = "3")]
13461    pub size: ::core::option::Option<u64>,
13462}
13463#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13464pub struct DrmSchedJobFtraceEvent {
13465    #[prost(uint64, optional, tag = "1")]
13466    pub entity: ::core::option::Option<u64>,
13467    #[prost(uint64, optional, tag = "2")]
13468    pub fence: ::core::option::Option<u64>,
13469    #[prost(int32, optional, tag = "3")]
13470    pub hw_job_count: ::core::option::Option<i32>,
13471    #[prost(uint64, optional, tag = "4")]
13472    pub id: ::core::option::Option<u64>,
13473    #[prost(uint32, optional, tag = "5")]
13474    pub job_count: ::core::option::Option<u32>,
13475    #[prost(string, optional, tag = "6")]
13476    pub name: ::core::option::Option<::prost::alloc::string::String>,
13477}
13478#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13479pub struct DrmRunJobFtraceEvent {
13480    #[prost(uint64, optional, tag = "1")]
13481    pub entity: ::core::option::Option<u64>,
13482    #[prost(uint64, optional, tag = "2")]
13483    pub fence: ::core::option::Option<u64>,
13484    #[prost(int32, optional, tag = "3")]
13485    pub hw_job_count: ::core::option::Option<i32>,
13486    #[prost(uint64, optional, tag = "4")]
13487    pub id: ::core::option::Option<u64>,
13488    #[prost(uint32, optional, tag = "5")]
13489    pub job_count: ::core::option::Option<u32>,
13490    #[prost(string, optional, tag = "6")]
13491    pub name: ::core::option::Option<::prost::alloc::string::String>,
13492}
13493#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13494pub struct DrmSchedProcessJobFtraceEvent {
13495    #[prost(uint64, optional, tag = "1")]
13496    pub fence: ::core::option::Option<u64>,
13497}
13498#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13499pub struct DrmSchedJobAddDepFtraceEvent {
13500    #[prost(uint64, optional, tag = "1")]
13501    pub fence_context: ::core::option::Option<u64>,
13502    #[prost(uint64, optional, tag = "2")]
13503    pub fence_seqno: ::core::option::Option<u64>,
13504    #[prost(uint64, optional, tag = "3")]
13505    pub ctx: ::core::option::Option<u64>,
13506    #[prost(uint64, optional, tag = "4")]
13507    pub seqno: ::core::option::Option<u64>,
13508}
13509#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13510pub struct DrmSchedJobDoneFtraceEvent {
13511    #[prost(uint64, optional, tag = "1")]
13512    pub fence_context: ::core::option::Option<u64>,
13513    #[prost(uint64, optional, tag = "2")]
13514    pub fence_seqno: ::core::option::Option<u64>,
13515}
13516#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13517pub struct DrmSchedJobQueueFtraceEvent {
13518    #[prost(string, optional, tag = "1")]
13519    pub name: ::core::option::Option<::prost::alloc::string::String>,
13520    #[prost(uint32, optional, tag = "2")]
13521    pub job_count: ::core::option::Option<u32>,
13522    #[prost(int32, optional, tag = "3")]
13523    pub hw_job_count: ::core::option::Option<i32>,
13524    #[prost(string, optional, tag = "4")]
13525    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13526    #[prost(uint64, optional, tag = "5")]
13527    pub fence_context: ::core::option::Option<u64>,
13528    #[prost(uint64, optional, tag = "6")]
13529    pub fence_seqno: ::core::option::Option<u64>,
13530    #[prost(uint64, optional, tag = "7")]
13531    pub client_id: ::core::option::Option<u64>,
13532}
13533#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13534pub struct DrmSchedJobRunFtraceEvent {
13535    #[prost(string, optional, tag = "1")]
13536    pub name: ::core::option::Option<::prost::alloc::string::String>,
13537    #[prost(uint32, optional, tag = "2")]
13538    pub job_count: ::core::option::Option<u32>,
13539    #[prost(int32, optional, tag = "3")]
13540    pub hw_job_count: ::core::option::Option<i32>,
13541    #[prost(string, optional, tag = "4")]
13542    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13543    #[prost(uint64, optional, tag = "5")]
13544    pub fence_context: ::core::option::Option<u64>,
13545    #[prost(uint64, optional, tag = "6")]
13546    pub fence_seqno: ::core::option::Option<u64>,
13547    #[prost(uint64, optional, tag = "7")]
13548    pub client_id: ::core::option::Option<u64>,
13549}
13550#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13551pub struct DrmSchedJobUnschedulableFtraceEvent {
13552    #[prost(uint64, optional, tag = "1")]
13553    pub fence_context: ::core::option::Option<u64>,
13554    #[prost(uint64, optional, tag = "2")]
13555    pub fence_seqno: ::core::option::Option<u64>,
13556    #[prost(uint64, optional, tag = "3")]
13557    pub ctx: ::core::option::Option<u64>,
13558    #[prost(uint64, optional, tag = "4")]
13559    pub seqno: ::core::option::Option<u64>,
13560}
13561#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13562pub struct HypEnterFtraceEvent {}
13563#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13564pub struct HypExitFtraceEvent {}
13565#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13566pub struct HostHcallFtraceEvent {
13567    #[prost(uint32, optional, tag = "1")]
13568    pub id: ::core::option::Option<u32>,
13569    #[prost(uint32, optional, tag = "2")]
13570    pub invalid: ::core::option::Option<u32>,
13571}
13572#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13573pub struct HostSmcFtraceEvent {
13574    #[prost(uint64, optional, tag = "1")]
13575    pub id: ::core::option::Option<u64>,
13576    #[prost(uint32, optional, tag = "2")]
13577    pub forwarded: ::core::option::Option<u32>,
13578}
13579#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13580pub struct HostMemAbortFtraceEvent {
13581    #[prost(uint64, optional, tag = "1")]
13582    pub esr: ::core::option::Option<u64>,
13583    #[prost(uint64, optional, tag = "2")]
13584    pub addr: ::core::option::Option<u64>,
13585}
13586#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13587pub struct HostFfaCallFtraceEvent {
13588    #[prost(uint64, optional, tag = "1")]
13589    pub func_id: ::core::option::Option<u64>,
13590    #[prost(uint64, optional, tag = "2")]
13591    pub res_a1: ::core::option::Option<u64>,
13592    #[prost(uint64, optional, tag = "3")]
13593    pub res_a2: ::core::option::Option<u64>,
13594    #[prost(uint64, optional, tag = "4")]
13595    pub res_a3: ::core::option::Option<u64>,
13596    #[prost(uint64, optional, tag = "5")]
13597    pub res_a4: ::core::option::Option<u64>,
13598    #[prost(int32, optional, tag = "6")]
13599    pub handled: ::core::option::Option<i32>,
13600    #[prost(int32, optional, tag = "7")]
13601    pub err: ::core::option::Option<i32>,
13602}
13603#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13604pub struct IommuIdmapFtraceEvent {
13605    #[prost(uint64, optional, tag = "1")]
13606    pub from: ::core::option::Option<u64>,
13607    #[prost(uint64, optional, tag = "2")]
13608    pub to: ::core::option::Option<u64>,
13609    #[prost(int32, optional, tag = "3")]
13610    pub prot: ::core::option::Option<i32>,
13611}
13612#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13613pub struct PsciMemProtectFtraceEvent {
13614    #[prost(uint64, optional, tag = "1")]
13615    pub count: ::core::option::Option<u64>,
13616    #[prost(uint64, optional, tag = "2")]
13617    pub was: ::core::option::Option<u64>,
13618}
13619#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13620pub struct HypervisorHostHcallFtraceEvent {
13621    #[prost(uint32, optional, tag = "1")]
13622    pub id: ::core::option::Option<u32>,
13623    #[prost(uint32, optional, tag = "2")]
13624    pub invalid: ::core::option::Option<u32>,
13625}
13626#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13627pub struct HypervisorHostSmcFtraceEvent {
13628    #[prost(uint64, optional, tag = "1")]
13629    pub id: ::core::option::Option<u64>,
13630    #[prost(uint32, optional, tag = "2")]
13631    pub forwarded: ::core::option::Option<u32>,
13632}
13633#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13634pub struct HypervisorHypExitFtraceEvent {}
13635#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13636pub struct HypervisorIommuIdmapFtraceEvent {
13637    #[prost(uint64, optional, tag = "1")]
13638    pub from: ::core::option::Option<u64>,
13639    #[prost(uint64, optional, tag = "2")]
13640    pub to: ::core::option::Option<u64>,
13641    #[prost(int32, optional, tag = "3")]
13642    pub prot: ::core::option::Option<i32>,
13643}
13644#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13645pub struct HypervisorPsciMemProtectFtraceEvent {
13646    #[prost(uint64, optional, tag = "1")]
13647    pub count: ::core::option::Option<u64>,
13648    #[prost(uint64, optional, tag = "2")]
13649    pub was: ::core::option::Option<u64>,
13650}
13651#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13652pub struct HypervisorHostMemAbortFtraceEvent {
13653    #[prost(uint64, optional, tag = "1")]
13654    pub esr: ::core::option::Option<u64>,
13655    #[prost(uint64, optional, tag = "2")]
13656    pub addr: ::core::option::Option<u64>,
13657}
13658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13659pub struct HypervisorHypEnterFtraceEvent {}
13660#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13661pub struct HypervisorIommuIdmapCompleteFtraceEvent {
13662    #[prost(uint32, optional, tag = "1")]
13663    pub map: ::core::option::Option<u32>,
13664}
13665#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13666pub struct HypervisorVcpuIllegalTrapFtraceEvent {
13667    #[prost(uint64, optional, tag = "1")]
13668    pub esr: ::core::option::Option<u64>,
13669}
13670#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13671pub struct I2cReadFtraceEvent {
13672    #[prost(int32, optional, tag = "1")]
13673    pub adapter_nr: ::core::option::Option<i32>,
13674    #[prost(uint32, optional, tag = "2")]
13675    pub msg_nr: ::core::option::Option<u32>,
13676    #[prost(uint32, optional, tag = "3")]
13677    pub addr: ::core::option::Option<u32>,
13678    #[prost(uint32, optional, tag = "4")]
13679    pub flags: ::core::option::Option<u32>,
13680    #[prost(uint32, optional, tag = "5")]
13681    pub len: ::core::option::Option<u32>,
13682}
13683#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13684pub struct I2cWriteFtraceEvent {
13685    #[prost(int32, optional, tag = "1")]
13686    pub adapter_nr: ::core::option::Option<i32>,
13687    #[prost(uint32, optional, tag = "2")]
13688    pub msg_nr: ::core::option::Option<u32>,
13689    #[prost(uint32, optional, tag = "3")]
13690    pub addr: ::core::option::Option<u32>,
13691    #[prost(uint32, optional, tag = "4")]
13692    pub flags: ::core::option::Option<u32>,
13693    #[prost(uint32, optional, tag = "5")]
13694    pub len: ::core::option::Option<u32>,
13695    #[prost(bytes = "vec", optional, tag = "7")]
13696    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13697}
13698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13699pub struct I2cResultFtraceEvent {
13700    #[prost(int32, optional, tag = "1")]
13701    pub adapter_nr: ::core::option::Option<i32>,
13702    #[prost(uint32, optional, tag = "2")]
13703    pub nr_msgs: ::core::option::Option<u32>,
13704    #[prost(int32, optional, tag = "3")]
13705    pub ret: ::core::option::Option<i32>,
13706}
13707#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13708pub struct I2cReplyFtraceEvent {
13709    #[prost(int32, optional, tag = "1")]
13710    pub adapter_nr: ::core::option::Option<i32>,
13711    #[prost(uint32, optional, tag = "2")]
13712    pub msg_nr: ::core::option::Option<u32>,
13713    #[prost(uint32, optional, tag = "3")]
13714    pub addr: ::core::option::Option<u32>,
13715    #[prost(uint32, optional, tag = "4")]
13716    pub flags: ::core::option::Option<u32>,
13717    #[prost(uint32, optional, tag = "5")]
13718    pub len: ::core::option::Option<u32>,
13719    #[prost(bytes = "vec", optional, tag = "7")]
13720    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13721}
13722#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13723pub struct SmbusReadFtraceEvent {
13724    #[prost(int32, optional, tag = "1")]
13725    pub adapter_nr: ::core::option::Option<i32>,
13726    #[prost(uint32, optional, tag = "2")]
13727    pub flags: ::core::option::Option<u32>,
13728    #[prost(uint32, optional, tag = "3")]
13729    pub addr: ::core::option::Option<u32>,
13730    #[prost(uint32, optional, tag = "4")]
13731    pub command: ::core::option::Option<u32>,
13732    #[prost(uint32, optional, tag = "5")]
13733    pub protocol: ::core::option::Option<u32>,
13734}
13735#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13736pub struct SmbusWriteFtraceEvent {
13737    #[prost(int32, optional, tag = "1")]
13738    pub adapter_nr: ::core::option::Option<i32>,
13739    #[prost(uint32, optional, tag = "2")]
13740    pub addr: ::core::option::Option<u32>,
13741    #[prost(uint32, optional, tag = "3")]
13742    pub flags: ::core::option::Option<u32>,
13743    #[prost(uint32, optional, tag = "4")]
13744    pub command: ::core::option::Option<u32>,
13745    #[prost(uint32, optional, tag = "5")]
13746    pub len: ::core::option::Option<u32>,
13747    #[prost(uint32, optional, tag = "6")]
13748    pub protocol: ::core::option::Option<u32>,
13749}
13750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13751pub struct SmbusResultFtraceEvent {
13752    #[prost(int32, optional, tag = "1")]
13753    pub adapter_nr: ::core::option::Option<i32>,
13754    #[prost(uint32, optional, tag = "2")]
13755    pub addr: ::core::option::Option<u32>,
13756    #[prost(uint32, optional, tag = "3")]
13757    pub flags: ::core::option::Option<u32>,
13758    #[prost(uint32, optional, tag = "4")]
13759    pub read_write: ::core::option::Option<u32>,
13760    #[prost(uint32, optional, tag = "5")]
13761    pub command: ::core::option::Option<u32>,
13762    #[prost(int32, optional, tag = "6")]
13763    pub res: ::core::option::Option<i32>,
13764    #[prost(uint32, optional, tag = "7")]
13765    pub protocol: ::core::option::Option<u32>,
13766}
13767#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13768pub struct SmbusReplyFtraceEvent {
13769    #[prost(int32, optional, tag = "1")]
13770    pub adapter_nr: ::core::option::Option<i32>,
13771    #[prost(uint32, optional, tag = "2")]
13772    pub addr: ::core::option::Option<u32>,
13773    #[prost(uint32, optional, tag = "3")]
13774    pub flags: ::core::option::Option<u32>,
13775    #[prost(uint32, optional, tag = "4")]
13776    pub command: ::core::option::Option<u32>,
13777    #[prost(uint32, optional, tag = "5")]
13778    pub len: ::core::option::Option<u32>,
13779    #[prost(uint32, optional, tag = "6")]
13780    pub protocol: ::core::option::Option<u32>,
13781}
13782#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13783pub struct IonStatFtraceEvent {
13784    #[prost(uint32, optional, tag = "1")]
13785    pub buffer_id: ::core::option::Option<u32>,
13786    #[prost(int64, optional, tag = "2")]
13787    pub len: ::core::option::Option<i64>,
13788    #[prost(uint64, optional, tag = "3")]
13789    pub total_allocated: ::core::option::Option<u64>,
13790}
13791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13792pub struct IpiEntryFtraceEvent {
13793    #[prost(string, optional, tag = "1")]
13794    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13795}
13796#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13797pub struct IpiExitFtraceEvent {
13798    #[prost(string, optional, tag = "1")]
13799    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13800}
13801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13802pub struct IpiRaiseFtraceEvent {
13803    #[prost(uint32, optional, tag = "1")]
13804    pub target_cpus: ::core::option::Option<u32>,
13805    #[prost(string, optional, tag = "2")]
13806    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13807}
13808#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13809pub struct SoftirqEntryFtraceEvent {
13810    #[prost(uint32, optional, tag = "1")]
13811    pub vec: ::core::option::Option<u32>,
13812}
13813#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13814pub struct SoftirqExitFtraceEvent {
13815    #[prost(uint32, optional, tag = "1")]
13816    pub vec: ::core::option::Option<u32>,
13817}
13818#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13819pub struct SoftirqRaiseFtraceEvent {
13820    #[prost(uint32, optional, tag = "1")]
13821    pub vec: ::core::option::Option<u32>,
13822}
13823#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13824pub struct IrqHandlerEntryFtraceEvent {
13825    #[prost(int32, optional, tag = "1")]
13826    pub irq: ::core::option::Option<i32>,
13827    #[prost(string, optional, tag = "2")]
13828    pub name: ::core::option::Option<::prost::alloc::string::String>,
13829    #[prost(uint32, optional, tag = "3")]
13830    pub handler: ::core::option::Option<u32>,
13831}
13832#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13833pub struct IrqHandlerExitFtraceEvent {
13834    #[prost(int32, optional, tag = "1")]
13835    pub irq: ::core::option::Option<i32>,
13836    #[prost(int32, optional, tag = "2")]
13837    pub ret: ::core::option::Option<i32>,
13838}
13839#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13840pub struct LocalTimerEntryFtraceEvent {
13841    #[prost(int32, optional, tag = "1")]
13842    pub vector: ::core::option::Option<i32>,
13843}
13844#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13845pub struct LocalTimerExitFtraceEvent {
13846    #[prost(int32, optional, tag = "1")]
13847    pub vector: ::core::option::Option<i32>,
13848}
13849#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13850pub struct KgslGpuFrequencyFtraceEvent {
13851    #[prost(uint32, optional, tag = "1")]
13852    pub gpu_freq: ::core::option::Option<u32>,
13853    #[prost(uint32, optional, tag = "2")]
13854    pub gpu_id: ::core::option::Option<u32>,
13855}
13856#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13857pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
13858    #[prost(uint32, optional, tag = "1")]
13859    pub id: ::core::option::Option<u32>,
13860    #[prost(uint32, optional, tag = "2")]
13861    pub timestamp: ::core::option::Option<u32>,
13862    #[prost(uint32, optional, tag = "3")]
13863    pub queued: ::core::option::Option<u32>,
13864    #[prost(uint32, optional, tag = "4")]
13865    pub flags: ::core::option::Option<u32>,
13866    #[prost(uint32, optional, tag = "5")]
13867    pub prio: ::core::option::Option<u32>,
13868}
13869#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13870pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13871    #[prost(uint32, optional, tag = "1")]
13872    pub id: ::core::option::Option<u32>,
13873    #[prost(uint32, optional, tag = "2")]
13874    pub timestamp: ::core::option::Option<u32>,
13875    #[prost(int64, optional, tag = "3")]
13876    pub inflight: ::core::option::Option<i64>,
13877    #[prost(uint32, optional, tag = "4")]
13878    pub flags: ::core::option::Option<u32>,
13879    #[prost(uint64, optional, tag = "5")]
13880    pub ticks: ::core::option::Option<u64>,
13881    #[prost(uint64, optional, tag = "6")]
13882    pub secs: ::core::option::Option<u64>,
13883    #[prost(uint64, optional, tag = "7")]
13884    pub usecs: ::core::option::Option<u64>,
13885    #[prost(int32, optional, tag = "8")]
13886    pub prio: ::core::option::Option<i32>,
13887    #[prost(int32, optional, tag = "9")]
13888    pub rb_id: ::core::option::Option<i32>,
13889    #[prost(uint32, optional, tag = "10")]
13890    pub rptr: ::core::option::Option<u32>,
13891    #[prost(uint32, optional, tag = "11")]
13892    pub wptr: ::core::option::Option<u32>,
13893    #[prost(int32, optional, tag = "12")]
13894    pub q_inflight: ::core::option::Option<i32>,
13895    #[prost(int32, optional, tag = "13")]
13896    pub dispatch_queue: ::core::option::Option<i32>,
13897}
13898#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13899pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13900    #[prost(uint32, optional, tag = "1")]
13901    pub id: ::core::option::Option<u32>,
13902    #[prost(uint32, optional, tag = "2")]
13903    pub timestamp: ::core::option::Option<u32>,
13904    #[prost(uint64, optional, tag = "3")]
13905    pub ticks: ::core::option::Option<u64>,
13906    #[prost(int32, optional, tag = "4")]
13907    pub prio: ::core::option::Option<i32>,
13908}
13909#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13910pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13911    #[prost(uint32, optional, tag = "1")]
13912    pub id: ::core::option::Option<u32>,
13913    #[prost(uint32, optional, tag = "2")]
13914    pub timestamp: ::core::option::Option<u32>,
13915    #[prost(int64, optional, tag = "3")]
13916    pub inflight: ::core::option::Option<i64>,
13917    #[prost(uint32, optional, tag = "4")]
13918    pub recovery: ::core::option::Option<u32>,
13919    #[prost(uint32, optional, tag = "5")]
13920    pub flags: ::core::option::Option<u32>,
13921    #[prost(uint64, optional, tag = "6")]
13922    pub start: ::core::option::Option<u64>,
13923    #[prost(uint64, optional, tag = "7")]
13924    pub retire: ::core::option::Option<u64>,
13925    #[prost(int32, optional, tag = "8")]
13926    pub prio: ::core::option::Option<i32>,
13927    #[prost(int32, optional, tag = "9")]
13928    pub rb_id: ::core::option::Option<i32>,
13929    #[prost(uint32, optional, tag = "10")]
13930    pub rptr: ::core::option::Option<u32>,
13931    #[prost(uint32, optional, tag = "11")]
13932    pub wptr: ::core::option::Option<u32>,
13933    #[prost(int32, optional, tag = "12")]
13934    pub q_inflight: ::core::option::Option<i32>,
13935    #[prost(uint64, optional, tag = "13")]
13936    pub fault_recovery: ::core::option::Option<u64>,
13937    #[prost(uint32, optional, tag = "14")]
13938    pub dispatch_queue: ::core::option::Option<u32>,
13939    #[prost(uint64, optional, tag = "15")]
13940    pub submitted_to_rb: ::core::option::Option<u64>,
13941    #[prost(uint64, optional, tag = "16")]
13942    pub retired_on_gmu: ::core::option::Option<u64>,
13943    #[prost(uint64, optional, tag = "17")]
13944    pub active: ::core::option::Option<u64>,
13945}
13946#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13947pub struct AllocPagesIommuEndFtraceEvent {
13948    #[prost(uint32, optional, tag = "1")]
13949    pub gfp_flags: ::core::option::Option<u32>,
13950    #[prost(uint32, optional, tag = "2")]
13951    pub order: ::core::option::Option<u32>,
13952}
13953#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13954pub struct AllocPagesIommuFailFtraceEvent {
13955    #[prost(uint32, optional, tag = "1")]
13956    pub gfp_flags: ::core::option::Option<u32>,
13957    #[prost(uint32, optional, tag = "2")]
13958    pub order: ::core::option::Option<u32>,
13959}
13960#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13961pub struct AllocPagesIommuStartFtraceEvent {
13962    #[prost(uint32, optional, tag = "1")]
13963    pub gfp_flags: ::core::option::Option<u32>,
13964    #[prost(uint32, optional, tag = "2")]
13965    pub order: ::core::option::Option<u32>,
13966}
13967#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13968pub struct AllocPagesSysEndFtraceEvent {
13969    #[prost(uint32, optional, tag = "1")]
13970    pub gfp_flags: ::core::option::Option<u32>,
13971    #[prost(uint32, optional, tag = "2")]
13972    pub order: ::core::option::Option<u32>,
13973}
13974#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13975pub struct AllocPagesSysFailFtraceEvent {
13976    #[prost(uint32, optional, tag = "1")]
13977    pub gfp_flags: ::core::option::Option<u32>,
13978    #[prost(uint32, optional, tag = "2")]
13979    pub order: ::core::option::Option<u32>,
13980}
13981#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13982pub struct AllocPagesSysStartFtraceEvent {
13983    #[prost(uint32, optional, tag = "1")]
13984    pub gfp_flags: ::core::option::Option<u32>,
13985    #[prost(uint32, optional, tag = "2")]
13986    pub order: ::core::option::Option<u32>,
13987}
13988#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13989pub struct DmaAllocContiguousRetryFtraceEvent {
13990    #[prost(int32, optional, tag = "1")]
13991    pub tries: ::core::option::Option<i32>,
13992}
13993#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13994pub struct IommuMapRangeFtraceEvent {
13995    #[prost(uint64, optional, tag = "1")]
13996    pub chunk_size: ::core::option::Option<u64>,
13997    #[prost(uint64, optional, tag = "2")]
13998    pub len: ::core::option::Option<u64>,
13999    #[prost(uint64, optional, tag = "3")]
14000    pub pa: ::core::option::Option<u64>,
14001    #[prost(uint64, optional, tag = "4")]
14002    pub va: ::core::option::Option<u64>,
14003}
14004#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14005pub struct IommuSecPtblMapRangeEndFtraceEvent {
14006    #[prost(uint64, optional, tag = "1")]
14007    pub len: ::core::option::Option<u64>,
14008    #[prost(int32, optional, tag = "2")]
14009    pub num: ::core::option::Option<i32>,
14010    #[prost(uint32, optional, tag = "3")]
14011    pub pa: ::core::option::Option<u32>,
14012    #[prost(int32, optional, tag = "4")]
14013    pub sec_id: ::core::option::Option<i32>,
14014    #[prost(uint64, optional, tag = "5")]
14015    pub va: ::core::option::Option<u64>,
14016}
14017#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14018pub struct IommuSecPtblMapRangeStartFtraceEvent {
14019    #[prost(uint64, optional, tag = "1")]
14020    pub len: ::core::option::Option<u64>,
14021    #[prost(int32, optional, tag = "2")]
14022    pub num: ::core::option::Option<i32>,
14023    #[prost(uint32, optional, tag = "3")]
14024    pub pa: ::core::option::Option<u32>,
14025    #[prost(int32, optional, tag = "4")]
14026    pub sec_id: ::core::option::Option<i32>,
14027    #[prost(uint64, optional, tag = "5")]
14028    pub va: ::core::option::Option<u64>,
14029}
14030#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14031pub struct IonAllocBufferEndFtraceEvent {
14032    #[prost(string, optional, tag = "1")]
14033    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14034    #[prost(uint32, optional, tag = "2")]
14035    pub flags: ::core::option::Option<u32>,
14036    #[prost(string, optional, tag = "3")]
14037    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14038    #[prost(uint64, optional, tag = "4")]
14039    pub len: ::core::option::Option<u64>,
14040    #[prost(uint32, optional, tag = "5")]
14041    pub mask: ::core::option::Option<u32>,
14042}
14043#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14044pub struct IonAllocBufferFailFtraceEvent {
14045    #[prost(string, optional, tag = "1")]
14046    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14047    #[prost(int64, optional, tag = "2")]
14048    pub error: ::core::option::Option<i64>,
14049    #[prost(uint32, optional, tag = "3")]
14050    pub flags: ::core::option::Option<u32>,
14051    #[prost(string, optional, tag = "4")]
14052    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14053    #[prost(uint64, optional, tag = "5")]
14054    pub len: ::core::option::Option<u64>,
14055    #[prost(uint32, optional, tag = "6")]
14056    pub mask: ::core::option::Option<u32>,
14057}
14058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14059pub struct IonAllocBufferFallbackFtraceEvent {
14060    #[prost(string, optional, tag = "1")]
14061    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14062    #[prost(int64, optional, tag = "2")]
14063    pub error: ::core::option::Option<i64>,
14064    #[prost(uint32, optional, tag = "3")]
14065    pub flags: ::core::option::Option<u32>,
14066    #[prost(string, optional, tag = "4")]
14067    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14068    #[prost(uint64, optional, tag = "5")]
14069    pub len: ::core::option::Option<u64>,
14070    #[prost(uint32, optional, tag = "6")]
14071    pub mask: ::core::option::Option<u32>,
14072}
14073#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14074pub struct IonAllocBufferStartFtraceEvent {
14075    #[prost(string, optional, tag = "1")]
14076    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14077    #[prost(uint32, optional, tag = "2")]
14078    pub flags: ::core::option::Option<u32>,
14079    #[prost(string, optional, tag = "3")]
14080    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14081    #[prost(uint64, optional, tag = "4")]
14082    pub len: ::core::option::Option<u64>,
14083    #[prost(uint32, optional, tag = "5")]
14084    pub mask: ::core::option::Option<u32>,
14085}
14086#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14087pub struct IonCpAllocRetryFtraceEvent {
14088    #[prost(int32, optional, tag = "1")]
14089    pub tries: ::core::option::Option<i32>,
14090}
14091#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14092pub struct IonCpSecureBufferEndFtraceEvent {
14093    #[prost(uint64, optional, tag = "1")]
14094    pub align: ::core::option::Option<u64>,
14095    #[prost(uint64, optional, tag = "2")]
14096    pub flags: ::core::option::Option<u64>,
14097    #[prost(string, optional, tag = "3")]
14098    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14099    #[prost(uint64, optional, tag = "4")]
14100    pub len: ::core::option::Option<u64>,
14101}
14102#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14103pub struct IonCpSecureBufferStartFtraceEvent {
14104    #[prost(uint64, optional, tag = "1")]
14105    pub align: ::core::option::Option<u64>,
14106    #[prost(uint64, optional, tag = "2")]
14107    pub flags: ::core::option::Option<u64>,
14108    #[prost(string, optional, tag = "3")]
14109    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14110    #[prost(uint64, optional, tag = "4")]
14111    pub len: ::core::option::Option<u64>,
14112}
14113#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14114pub struct IonPrefetchingFtraceEvent {
14115    #[prost(uint64, optional, tag = "1")]
14116    pub len: ::core::option::Option<u64>,
14117}
14118#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14119pub struct IonSecureCmaAddToPoolEndFtraceEvent {
14120    #[prost(uint32, optional, tag = "1")]
14121    pub is_prefetch: ::core::option::Option<u32>,
14122    #[prost(uint64, optional, tag = "2")]
14123    pub len: ::core::option::Option<u64>,
14124    #[prost(int32, optional, tag = "3")]
14125    pub pool_total: ::core::option::Option<i32>,
14126}
14127#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14128pub struct IonSecureCmaAddToPoolStartFtraceEvent {
14129    #[prost(uint32, optional, tag = "1")]
14130    pub is_prefetch: ::core::option::Option<u32>,
14131    #[prost(uint64, optional, tag = "2")]
14132    pub len: ::core::option::Option<u64>,
14133    #[prost(int32, optional, tag = "3")]
14134    pub pool_total: ::core::option::Option<i32>,
14135}
14136#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14137pub struct IonSecureCmaAllocateEndFtraceEvent {
14138    #[prost(uint64, optional, tag = "1")]
14139    pub align: ::core::option::Option<u64>,
14140    #[prost(uint64, optional, tag = "2")]
14141    pub flags: ::core::option::Option<u64>,
14142    #[prost(string, optional, tag = "3")]
14143    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14144    #[prost(uint64, optional, tag = "4")]
14145    pub len: ::core::option::Option<u64>,
14146}
14147#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14148pub struct IonSecureCmaAllocateStartFtraceEvent {
14149    #[prost(uint64, optional, tag = "1")]
14150    pub align: ::core::option::Option<u64>,
14151    #[prost(uint64, optional, tag = "2")]
14152    pub flags: ::core::option::Option<u64>,
14153    #[prost(string, optional, tag = "3")]
14154    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14155    #[prost(uint64, optional, tag = "4")]
14156    pub len: ::core::option::Option<u64>,
14157}
14158#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14159pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
14160    #[prost(uint64, optional, tag = "1")]
14161    pub drained_size: ::core::option::Option<u64>,
14162    #[prost(uint64, optional, tag = "2")]
14163    pub skipped_size: ::core::option::Option<u64>,
14164}
14165#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14166pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
14167    #[prost(uint64, optional, tag = "1")]
14168    pub drained_size: ::core::option::Option<u64>,
14169    #[prost(uint64, optional, tag = "2")]
14170    pub skipped_size: ::core::option::Option<u64>,
14171}
14172#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14173pub struct KfreeFtraceEvent {
14174    #[prost(uint64, optional, tag = "1")]
14175    pub call_site: ::core::option::Option<u64>,
14176    #[prost(uint64, optional, tag = "2")]
14177    pub ptr: ::core::option::Option<u64>,
14178}
14179#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14180pub struct KmallocFtraceEvent {
14181    #[prost(uint64, optional, tag = "1")]
14182    pub bytes_alloc: ::core::option::Option<u64>,
14183    #[prost(uint64, optional, tag = "2")]
14184    pub bytes_req: ::core::option::Option<u64>,
14185    #[prost(uint64, optional, tag = "3")]
14186    pub call_site: ::core::option::Option<u64>,
14187    #[prost(uint32, optional, tag = "4")]
14188    pub gfp_flags: ::core::option::Option<u32>,
14189    #[prost(uint64, optional, tag = "5")]
14190    pub ptr: ::core::option::Option<u64>,
14191}
14192#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14193pub struct KmallocNodeFtraceEvent {
14194    #[prost(uint64, optional, tag = "1")]
14195    pub bytes_alloc: ::core::option::Option<u64>,
14196    #[prost(uint64, optional, tag = "2")]
14197    pub bytes_req: ::core::option::Option<u64>,
14198    #[prost(uint64, optional, tag = "3")]
14199    pub call_site: ::core::option::Option<u64>,
14200    #[prost(uint32, optional, tag = "4")]
14201    pub gfp_flags: ::core::option::Option<u32>,
14202    #[prost(int32, optional, tag = "5")]
14203    pub node: ::core::option::Option<i32>,
14204    #[prost(uint64, optional, tag = "6")]
14205    pub ptr: ::core::option::Option<u64>,
14206}
14207#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14208pub struct KmemCacheAllocFtraceEvent {
14209    #[prost(uint64, optional, tag = "1")]
14210    pub bytes_alloc: ::core::option::Option<u64>,
14211    #[prost(uint64, optional, tag = "2")]
14212    pub bytes_req: ::core::option::Option<u64>,
14213    #[prost(uint64, optional, tag = "3")]
14214    pub call_site: ::core::option::Option<u64>,
14215    #[prost(uint32, optional, tag = "4")]
14216    pub gfp_flags: ::core::option::Option<u32>,
14217    #[prost(uint64, optional, tag = "5")]
14218    pub ptr: ::core::option::Option<u64>,
14219}
14220#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14221pub struct KmemCacheAllocNodeFtraceEvent {
14222    #[prost(uint64, optional, tag = "1")]
14223    pub bytes_alloc: ::core::option::Option<u64>,
14224    #[prost(uint64, optional, tag = "2")]
14225    pub bytes_req: ::core::option::Option<u64>,
14226    #[prost(uint64, optional, tag = "3")]
14227    pub call_site: ::core::option::Option<u64>,
14228    #[prost(uint32, optional, tag = "4")]
14229    pub gfp_flags: ::core::option::Option<u32>,
14230    #[prost(int32, optional, tag = "5")]
14231    pub node: ::core::option::Option<i32>,
14232    #[prost(uint64, optional, tag = "6")]
14233    pub ptr: ::core::option::Option<u64>,
14234}
14235#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14236pub struct KmemCacheFreeFtraceEvent {
14237    #[prost(uint64, optional, tag = "1")]
14238    pub call_site: ::core::option::Option<u64>,
14239    #[prost(uint64, optional, tag = "2")]
14240    pub ptr: ::core::option::Option<u64>,
14241}
14242#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14243pub struct MigratePagesEndFtraceEvent {
14244    #[prost(int32, optional, tag = "1")]
14245    pub mode: ::core::option::Option<i32>,
14246}
14247#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14248pub struct MigratePagesStartFtraceEvent {
14249    #[prost(int32, optional, tag = "1")]
14250    pub mode: ::core::option::Option<i32>,
14251}
14252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14253pub struct MigrateRetryFtraceEvent {
14254    #[prost(int32, optional, tag = "1")]
14255    pub tries: ::core::option::Option<i32>,
14256}
14257#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14258pub struct MmPageAllocFtraceEvent {
14259    #[prost(uint32, optional, tag = "1")]
14260    pub gfp_flags: ::core::option::Option<u32>,
14261    #[prost(int32, optional, tag = "2")]
14262    pub migratetype: ::core::option::Option<i32>,
14263    #[prost(uint32, optional, tag = "3")]
14264    pub order: ::core::option::Option<u32>,
14265    #[prost(uint64, optional, tag = "4")]
14266    pub page: ::core::option::Option<u64>,
14267    #[prost(uint64, optional, tag = "5")]
14268    pub pfn: ::core::option::Option<u64>,
14269}
14270#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14271pub struct MmPageAllocExtfragFtraceEvent {
14272    #[prost(int32, optional, tag = "1")]
14273    pub alloc_migratetype: ::core::option::Option<i32>,
14274    #[prost(int32, optional, tag = "2")]
14275    pub alloc_order: ::core::option::Option<i32>,
14276    #[prost(int32, optional, tag = "3")]
14277    pub fallback_migratetype: ::core::option::Option<i32>,
14278    #[prost(int32, optional, tag = "4")]
14279    pub fallback_order: ::core::option::Option<i32>,
14280    #[prost(uint64, optional, tag = "5")]
14281    pub page: ::core::option::Option<u64>,
14282    #[prost(int32, optional, tag = "6")]
14283    pub change_ownership: ::core::option::Option<i32>,
14284    #[prost(uint64, optional, tag = "7")]
14285    pub pfn: ::core::option::Option<u64>,
14286}
14287#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14288pub struct MmPageAllocZoneLockedFtraceEvent {
14289    #[prost(int32, optional, tag = "1")]
14290    pub migratetype: ::core::option::Option<i32>,
14291    #[prost(uint32, optional, tag = "2")]
14292    pub order: ::core::option::Option<u32>,
14293    #[prost(uint64, optional, tag = "3")]
14294    pub page: ::core::option::Option<u64>,
14295    #[prost(uint64, optional, tag = "4")]
14296    pub pfn: ::core::option::Option<u64>,
14297}
14298#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14299pub struct MmPageFreeFtraceEvent {
14300    #[prost(uint32, optional, tag = "1")]
14301    pub order: ::core::option::Option<u32>,
14302    #[prost(uint64, optional, tag = "2")]
14303    pub page: ::core::option::Option<u64>,
14304    #[prost(uint64, optional, tag = "3")]
14305    pub pfn: ::core::option::Option<u64>,
14306}
14307#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14308pub struct MmPageFreeBatchedFtraceEvent {
14309    #[prost(int32, optional, tag = "1")]
14310    pub cold: ::core::option::Option<i32>,
14311    #[prost(uint64, optional, tag = "2")]
14312    pub page: ::core::option::Option<u64>,
14313    #[prost(uint64, optional, tag = "3")]
14314    pub pfn: ::core::option::Option<u64>,
14315}
14316#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14317pub struct MmPagePcpuDrainFtraceEvent {
14318    #[prost(int32, optional, tag = "1")]
14319    pub migratetype: ::core::option::Option<i32>,
14320    #[prost(uint32, optional, tag = "2")]
14321    pub order: ::core::option::Option<u32>,
14322    #[prost(uint64, optional, tag = "3")]
14323    pub page: ::core::option::Option<u64>,
14324    #[prost(uint64, optional, tag = "4")]
14325    pub pfn: ::core::option::Option<u64>,
14326}
14327#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14328pub struct RssStatFtraceEvent {
14329    #[prost(int32, optional, tag = "1")]
14330    pub member: ::core::option::Option<i32>,
14331    #[prost(int64, optional, tag = "2")]
14332    pub size: ::core::option::Option<i64>,
14333    #[prost(uint32, optional, tag = "3")]
14334    pub curr: ::core::option::Option<u32>,
14335    #[prost(uint32, optional, tag = "4")]
14336    pub mm_id: ::core::option::Option<u32>,
14337}
14338#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14339pub struct IonHeapShrinkFtraceEvent {
14340    #[prost(string, optional, tag = "1")]
14341    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14342    #[prost(uint64, optional, tag = "2")]
14343    pub len: ::core::option::Option<u64>,
14344    #[prost(int64, optional, tag = "3")]
14345    pub total_allocated: ::core::option::Option<i64>,
14346}
14347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14348pub struct IonHeapGrowFtraceEvent {
14349    #[prost(string, optional, tag = "1")]
14350    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14351    #[prost(uint64, optional, tag = "2")]
14352    pub len: ::core::option::Option<u64>,
14353    #[prost(int64, optional, tag = "3")]
14354    pub total_allocated: ::core::option::Option<i64>,
14355}
14356#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14357pub struct IonBufferCreateFtraceEvent {
14358    #[prost(uint64, optional, tag = "1")]
14359    pub addr: ::core::option::Option<u64>,
14360    #[prost(uint64, optional, tag = "2")]
14361    pub len: ::core::option::Option<u64>,
14362}
14363#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14364pub struct IonBufferDestroyFtraceEvent {
14365    #[prost(uint64, optional, tag = "1")]
14366    pub addr: ::core::option::Option<u64>,
14367    #[prost(uint64, optional, tag = "2")]
14368    pub len: ::core::option::Option<u64>,
14369}
14370#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14371pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
14372    #[prost(uint64, optional, tag = "1")]
14373    pub start: ::core::option::Option<u64>,
14374    #[prost(uint64, optional, tag = "2")]
14375    pub end: ::core::option::Option<u64>,
14376    #[prost(uint64, optional, tag = "3")]
14377    pub nr_migrated: ::core::option::Option<u64>,
14378    #[prost(uint64, optional, tag = "4")]
14379    pub nr_reclaimed: ::core::option::Option<u64>,
14380    #[prost(uint64, optional, tag = "5")]
14381    pub nr_mapped: ::core::option::Option<u64>,
14382    #[prost(int32, optional, tag = "6")]
14383    pub migratetype: ::core::option::Option<i32>,
14384}
14385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14386pub struct DmabufRssStatFtraceEvent {
14387    #[prost(uint64, optional, tag = "1")]
14388    pub rss: ::core::option::Option<u64>,
14389    #[prost(int64, optional, tag = "2")]
14390    pub rss_delta: ::core::option::Option<i64>,
14391    #[prost(uint64, optional, tag = "3")]
14392    pub i_ino: ::core::option::Option<u64>,
14393}
14394#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14395pub struct KvmAccessFaultFtraceEvent {
14396    #[prost(uint64, optional, tag = "1")]
14397    pub ipa: ::core::option::Option<u64>,
14398}
14399#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14400pub struct KvmAckIrqFtraceEvent {
14401    #[prost(uint32, optional, tag = "1")]
14402    pub irqchip: ::core::option::Option<u32>,
14403    #[prost(uint32, optional, tag = "2")]
14404    pub pin: ::core::option::Option<u32>,
14405}
14406#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14407pub struct KvmAgeHvaFtraceEvent {
14408    #[prost(uint64, optional, tag = "1")]
14409    pub end: ::core::option::Option<u64>,
14410    #[prost(uint64, optional, tag = "2")]
14411    pub start: ::core::option::Option<u64>,
14412}
14413#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14414pub struct KvmAgePageFtraceEvent {
14415    #[prost(uint64, optional, tag = "1")]
14416    pub gfn: ::core::option::Option<u64>,
14417    #[prost(uint64, optional, tag = "2")]
14418    pub hva: ::core::option::Option<u64>,
14419    #[prost(uint32, optional, tag = "3")]
14420    pub level: ::core::option::Option<u32>,
14421    #[prost(uint32, optional, tag = "4")]
14422    pub referenced: ::core::option::Option<u32>,
14423}
14424#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14425pub struct KvmArmClearDebugFtraceEvent {
14426    #[prost(uint32, optional, tag = "1")]
14427    pub guest_debug: ::core::option::Option<u32>,
14428}
14429#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14430pub struct KvmArmSetDreg32FtraceEvent {
14431    #[prost(string, optional, tag = "1")]
14432    pub name: ::core::option::Option<::prost::alloc::string::String>,
14433    #[prost(uint32, optional, tag = "2")]
14434    pub value: ::core::option::Option<u32>,
14435}
14436#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14437pub struct KvmArmSetRegsetFtraceEvent {
14438    #[prost(int32, optional, tag = "1")]
14439    pub len: ::core::option::Option<i32>,
14440    #[prost(string, optional, tag = "2")]
14441    pub name: ::core::option::Option<::prost::alloc::string::String>,
14442}
14443#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14444pub struct KvmArmSetupDebugFtraceEvent {
14445    #[prost(uint32, optional, tag = "1")]
14446    pub guest_debug: ::core::option::Option<u32>,
14447    #[prost(uint64, optional, tag = "2")]
14448    pub vcpu: ::core::option::Option<u64>,
14449}
14450#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14451pub struct KvmEntryFtraceEvent {
14452    #[prost(uint64, optional, tag = "1")]
14453    pub vcpu_pc: ::core::option::Option<u64>,
14454}
14455#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14456pub struct KvmExitFtraceEvent {
14457    #[prost(uint32, optional, tag = "1")]
14458    pub esr_ec: ::core::option::Option<u32>,
14459    #[prost(int32, optional, tag = "2")]
14460    pub ret: ::core::option::Option<i32>,
14461    #[prost(uint64, optional, tag = "3")]
14462    pub vcpu_pc: ::core::option::Option<u64>,
14463}
14464#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14465pub struct KvmFpuFtraceEvent {
14466    #[prost(uint32, optional, tag = "1")]
14467    pub load: ::core::option::Option<u32>,
14468}
14469#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14470pub struct KvmGetTimerMapFtraceEvent {
14471    #[prost(int32, optional, tag = "1")]
14472    pub direct_ptimer: ::core::option::Option<i32>,
14473    #[prost(int32, optional, tag = "2")]
14474    pub direct_vtimer: ::core::option::Option<i32>,
14475    #[prost(int32, optional, tag = "3")]
14476    pub emul_ptimer: ::core::option::Option<i32>,
14477    #[prost(uint64, optional, tag = "4")]
14478    pub vcpu_id: ::core::option::Option<u64>,
14479}
14480#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14481pub struct KvmGuestFaultFtraceEvent {
14482    #[prost(uint64, optional, tag = "1")]
14483    pub hsr: ::core::option::Option<u64>,
14484    #[prost(uint64, optional, tag = "2")]
14485    pub hxfar: ::core::option::Option<u64>,
14486    #[prost(uint64, optional, tag = "3")]
14487    pub ipa: ::core::option::Option<u64>,
14488    #[prost(uint64, optional, tag = "4")]
14489    pub vcpu_pc: ::core::option::Option<u64>,
14490}
14491#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14492pub struct KvmHandleSysRegFtraceEvent {
14493    #[prost(uint64, optional, tag = "1")]
14494    pub hsr: ::core::option::Option<u64>,
14495}
14496#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14497pub struct KvmHvcArm64FtraceEvent {
14498    #[prost(uint64, optional, tag = "1")]
14499    pub imm: ::core::option::Option<u64>,
14500    #[prost(uint64, optional, tag = "2")]
14501    pub r0: ::core::option::Option<u64>,
14502    #[prost(uint64, optional, tag = "3")]
14503    pub vcpu_pc: ::core::option::Option<u64>,
14504}
14505#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14506pub struct KvmIrqLineFtraceEvent {
14507    #[prost(int32, optional, tag = "1")]
14508    pub irq_num: ::core::option::Option<i32>,
14509    #[prost(int32, optional, tag = "2")]
14510    pub level: ::core::option::Option<i32>,
14511    #[prost(uint32, optional, tag = "3")]
14512    pub r#type: ::core::option::Option<u32>,
14513    #[prost(int32, optional, tag = "4")]
14514    pub vcpu_idx: ::core::option::Option<i32>,
14515}
14516#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14517pub struct KvmMmioFtraceEvent {
14518    #[prost(uint64, optional, tag = "1")]
14519    pub gpa: ::core::option::Option<u64>,
14520    #[prost(uint32, optional, tag = "2")]
14521    pub len: ::core::option::Option<u32>,
14522    #[prost(uint32, optional, tag = "3")]
14523    pub r#type: ::core::option::Option<u32>,
14524    #[prost(uint64, optional, tag = "4")]
14525    pub val: ::core::option::Option<u64>,
14526}
14527#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14528pub struct KvmMmioEmulateFtraceEvent {
14529    #[prost(uint64, optional, tag = "1")]
14530    pub cpsr: ::core::option::Option<u64>,
14531    #[prost(uint64, optional, tag = "2")]
14532    pub instr: ::core::option::Option<u64>,
14533    #[prost(uint64, optional, tag = "3")]
14534    pub vcpu_pc: ::core::option::Option<u64>,
14535}
14536#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14537pub struct KvmSetGuestDebugFtraceEvent {
14538    #[prost(uint32, optional, tag = "1")]
14539    pub guest_debug: ::core::option::Option<u32>,
14540    #[prost(uint64, optional, tag = "2")]
14541    pub vcpu: ::core::option::Option<u64>,
14542}
14543#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14544pub struct KvmSetIrqFtraceEvent {
14545    #[prost(uint32, optional, tag = "1")]
14546    pub gsi: ::core::option::Option<u32>,
14547    #[prost(int32, optional, tag = "2")]
14548    pub irq_source_id: ::core::option::Option<i32>,
14549    #[prost(int32, optional, tag = "3")]
14550    pub level: ::core::option::Option<i32>,
14551}
14552#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14553pub struct KvmSetSpteHvaFtraceEvent {
14554    #[prost(uint64, optional, tag = "1")]
14555    pub hva: ::core::option::Option<u64>,
14556}
14557#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14558pub struct KvmSetWayFlushFtraceEvent {
14559    #[prost(uint32, optional, tag = "1")]
14560    pub cache: ::core::option::Option<u32>,
14561    #[prost(uint64, optional, tag = "2")]
14562    pub vcpu_pc: ::core::option::Option<u64>,
14563}
14564#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14565pub struct KvmSysAccessFtraceEvent {
14566    #[prost(uint32, optional, tag = "1")]
14567    pub c_rm: ::core::option::Option<u32>,
14568    #[prost(uint32, optional, tag = "2")]
14569    pub c_rn: ::core::option::Option<u32>,
14570    #[prost(uint32, optional, tag = "3")]
14571    pub op0: ::core::option::Option<u32>,
14572    #[prost(uint32, optional, tag = "4")]
14573    pub op1: ::core::option::Option<u32>,
14574    #[prost(uint32, optional, tag = "5")]
14575    pub op2: ::core::option::Option<u32>,
14576    #[prost(uint32, optional, tag = "6")]
14577    pub is_write: ::core::option::Option<u32>,
14578    #[prost(string, optional, tag = "7")]
14579    pub name: ::core::option::Option<::prost::alloc::string::String>,
14580    #[prost(uint64, optional, tag = "8")]
14581    pub vcpu_pc: ::core::option::Option<u64>,
14582}
14583#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14584pub struct KvmTestAgeHvaFtraceEvent {
14585    #[prost(uint64, optional, tag = "1")]
14586    pub hva: ::core::option::Option<u64>,
14587}
14588#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14589pub struct KvmTimerEmulateFtraceEvent {
14590    #[prost(uint32, optional, tag = "1")]
14591    pub should_fire: ::core::option::Option<u32>,
14592    #[prost(int32, optional, tag = "2")]
14593    pub timer_idx: ::core::option::Option<i32>,
14594}
14595#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14596pub struct KvmTimerHrtimerExpireFtraceEvent {
14597    #[prost(int32, optional, tag = "1")]
14598    pub timer_idx: ::core::option::Option<i32>,
14599}
14600#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14601pub struct KvmTimerRestoreStateFtraceEvent {
14602    #[prost(uint64, optional, tag = "1")]
14603    pub ctl: ::core::option::Option<u64>,
14604    #[prost(uint64, optional, tag = "2")]
14605    pub cval: ::core::option::Option<u64>,
14606    #[prost(int32, optional, tag = "3")]
14607    pub timer_idx: ::core::option::Option<i32>,
14608}
14609#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14610pub struct KvmTimerSaveStateFtraceEvent {
14611    #[prost(uint64, optional, tag = "1")]
14612    pub ctl: ::core::option::Option<u64>,
14613    #[prost(uint64, optional, tag = "2")]
14614    pub cval: ::core::option::Option<u64>,
14615    #[prost(int32, optional, tag = "3")]
14616    pub timer_idx: ::core::option::Option<i32>,
14617}
14618#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14619pub struct KvmTimerUpdateIrqFtraceEvent {
14620    #[prost(uint32, optional, tag = "1")]
14621    pub irq: ::core::option::Option<u32>,
14622    #[prost(int32, optional, tag = "2")]
14623    pub level: ::core::option::Option<i32>,
14624    #[prost(uint64, optional, tag = "3")]
14625    pub vcpu_id: ::core::option::Option<u64>,
14626}
14627#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14628pub struct KvmToggleCacheFtraceEvent {
14629    #[prost(uint32, optional, tag = "1")]
14630    pub now: ::core::option::Option<u32>,
14631    #[prost(uint64, optional, tag = "2")]
14632    pub vcpu_pc: ::core::option::Option<u64>,
14633    #[prost(uint32, optional, tag = "3")]
14634    pub was: ::core::option::Option<u32>,
14635}
14636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14637pub struct KvmUnmapHvaRangeFtraceEvent {
14638    #[prost(uint64, optional, tag = "1")]
14639    pub end: ::core::option::Option<u64>,
14640    #[prost(uint64, optional, tag = "2")]
14641    pub start: ::core::option::Option<u64>,
14642}
14643#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14644pub struct KvmUserspaceExitFtraceEvent {
14645    #[prost(uint32, optional, tag = "1")]
14646    pub reason: ::core::option::Option<u32>,
14647}
14648#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14649pub struct KvmVcpuWakeupFtraceEvent {
14650    #[prost(uint64, optional, tag = "1")]
14651    pub ns: ::core::option::Option<u64>,
14652    #[prost(uint32, optional, tag = "2")]
14653    pub valid: ::core::option::Option<u32>,
14654    #[prost(uint32, optional, tag = "3")]
14655    pub waited: ::core::option::Option<u32>,
14656}
14657#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14658pub struct KvmWfxArm64FtraceEvent {
14659    #[prost(uint32, optional, tag = "1")]
14660    pub is_wfe: ::core::option::Option<u32>,
14661    #[prost(uint64, optional, tag = "2")]
14662    pub vcpu_pc: ::core::option::Option<u64>,
14663}
14664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14665pub struct TrapRegFtraceEvent {
14666    #[prost(string, optional, tag = "1")]
14667    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
14668    #[prost(uint32, optional, tag = "2")]
14669    pub is_write: ::core::option::Option<u32>,
14670    #[prost(int32, optional, tag = "3")]
14671    pub reg: ::core::option::Option<i32>,
14672    #[prost(uint64, optional, tag = "4")]
14673    pub write_value: ::core::option::Option<u64>,
14674}
14675#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14676pub struct VgicUpdateIrqPendingFtraceEvent {
14677    #[prost(uint32, optional, tag = "1")]
14678    pub irq: ::core::option::Option<u32>,
14679    #[prost(uint32, optional, tag = "2")]
14680    pub level: ::core::option::Option<u32>,
14681    #[prost(uint64, optional, tag = "3")]
14682    pub vcpu_id: ::core::option::Option<u64>,
14683}
14684#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14685pub struct LowmemoryKillFtraceEvent {
14686    #[prost(string, optional, tag = "1")]
14687    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14688    #[prost(int32, optional, tag = "2")]
14689    pub pid: ::core::option::Option<i32>,
14690    #[prost(int64, optional, tag = "3")]
14691    pub pagecache_size: ::core::option::Option<i64>,
14692    #[prost(int64, optional, tag = "4")]
14693    pub pagecache_limit: ::core::option::Option<i64>,
14694    #[prost(int64, optional, tag = "5")]
14695    pub free: ::core::option::Option<i64>,
14696}
14697#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14698pub struct LwisTracingMarkWriteFtraceEvent {
14699    #[prost(string, optional, tag = "1")]
14700    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
14701    #[prost(uint32, optional, tag = "2")]
14702    pub r#type: ::core::option::Option<u32>,
14703    #[prost(int32, optional, tag = "3")]
14704    pub pid: ::core::option::Option<i32>,
14705    #[prost(string, optional, tag = "4")]
14706    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
14707    #[prost(int64, optional, tag = "5")]
14708    pub value: ::core::option::Option<i64>,
14709}
14710#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14711pub struct MaliTracingMarkWriteFtraceEvent {
14712    #[prost(string, optional, tag = "1")]
14713    pub name: ::core::option::Option<::prost::alloc::string::String>,
14714    #[prost(int32, optional, tag = "2")]
14715    pub pid: ::core::option::Option<i32>,
14716    #[prost(uint32, optional, tag = "3")]
14717    pub r#type: ::core::option::Option<u32>,
14718    #[prost(int32, optional, tag = "4")]
14719    pub value: ::core::option::Option<i32>,
14720}
14721#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14722pub struct MaliMaliKcpucqssetFtraceEvent {
14723    #[prost(uint32, optional, tag = "1")]
14724    pub id: ::core::option::Option<u32>,
14725    #[prost(uint64, optional, tag = "2")]
14726    pub info_val1: ::core::option::Option<u64>,
14727    #[prost(uint64, optional, tag = "3")]
14728    pub info_val2: ::core::option::Option<u64>,
14729    #[prost(uint32, optional, tag = "4")]
14730    pub kctx_id: ::core::option::Option<u32>,
14731    #[prost(int32, optional, tag = "5")]
14732    pub kctx_tgid: ::core::option::Option<i32>,
14733}
14734#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14735pub struct MaliMaliKcpucqswaitstartFtraceEvent {
14736    #[prost(uint32, optional, tag = "1")]
14737    pub id: ::core::option::Option<u32>,
14738    #[prost(uint64, optional, tag = "2")]
14739    pub info_val1: ::core::option::Option<u64>,
14740    #[prost(uint64, optional, tag = "3")]
14741    pub info_val2: ::core::option::Option<u64>,
14742    #[prost(uint32, optional, tag = "4")]
14743    pub kctx_id: ::core::option::Option<u32>,
14744    #[prost(int32, optional, tag = "5")]
14745    pub kctx_tgid: ::core::option::Option<i32>,
14746}
14747#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14748pub struct MaliMaliKcpucqswaitendFtraceEvent {
14749    #[prost(uint32, optional, tag = "1")]
14750    pub id: ::core::option::Option<u32>,
14751    #[prost(uint64, optional, tag = "2")]
14752    pub info_val1: ::core::option::Option<u64>,
14753    #[prost(uint64, optional, tag = "3")]
14754    pub info_val2: ::core::option::Option<u64>,
14755    #[prost(uint32, optional, tag = "4")]
14756    pub kctx_id: ::core::option::Option<u32>,
14757    #[prost(int32, optional, tag = "5")]
14758    pub kctx_tgid: ::core::option::Option<i32>,
14759}
14760#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14761pub struct MaliMaliKcpufencesignalFtraceEvent {
14762    #[prost(uint64, optional, tag = "1")]
14763    pub info_val1: ::core::option::Option<u64>,
14764    #[prost(uint64, optional, tag = "2")]
14765    pub info_val2: ::core::option::Option<u64>,
14766    #[prost(int32, optional, tag = "3")]
14767    pub kctx_tgid: ::core::option::Option<i32>,
14768    #[prost(uint32, optional, tag = "4")]
14769    pub kctx_id: ::core::option::Option<u32>,
14770    #[prost(uint32, optional, tag = "5")]
14771    pub id: ::core::option::Option<u32>,
14772}
14773#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14774pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14775    #[prost(uint64, optional, tag = "1")]
14776    pub info_val1: ::core::option::Option<u64>,
14777    #[prost(uint64, optional, tag = "2")]
14778    pub info_val2: ::core::option::Option<u64>,
14779    #[prost(int32, optional, tag = "3")]
14780    pub kctx_tgid: ::core::option::Option<i32>,
14781    #[prost(uint32, optional, tag = "4")]
14782    pub kctx_id: ::core::option::Option<u32>,
14783    #[prost(uint32, optional, tag = "5")]
14784    pub id: ::core::option::Option<u32>,
14785}
14786#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14787pub struct MaliMaliKcpufencewaitendFtraceEvent {
14788    #[prost(uint64, optional, tag = "1")]
14789    pub info_val1: ::core::option::Option<u64>,
14790    #[prost(uint64, optional, tag = "2")]
14791    pub info_val2: ::core::option::Option<u64>,
14792    #[prost(int32, optional, tag = "3")]
14793    pub kctx_tgid: ::core::option::Option<i32>,
14794    #[prost(uint32, optional, tag = "4")]
14795    pub kctx_id: ::core::option::Option<u32>,
14796    #[prost(uint32, optional, tag = "5")]
14797    pub id: ::core::option::Option<u32>,
14798}
14799#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14800pub struct MaliMaliCsfinterruptstartFtraceEvent {
14801    #[prost(int32, optional, tag = "1")]
14802    pub kctx_tgid: ::core::option::Option<i32>,
14803    #[prost(uint32, optional, tag = "2")]
14804    pub kctx_id: ::core::option::Option<u32>,
14805    #[prost(uint64, optional, tag = "3")]
14806    pub info_val: ::core::option::Option<u64>,
14807}
14808#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14809pub struct MaliMaliCsfinterruptendFtraceEvent {
14810    #[prost(int32, optional, tag = "1")]
14811    pub kctx_tgid: ::core::option::Option<i32>,
14812    #[prost(uint32, optional, tag = "2")]
14813    pub kctx_id: ::core::option::Option<u32>,
14814    #[prost(uint64, optional, tag = "3")]
14815    pub info_val: ::core::option::Option<u64>,
14816}
14817#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14818pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
14819    #[prost(int32, optional, tag = "1")]
14820    pub kctx_tgid: ::core::option::Option<i32>,
14821    #[prost(uint32, optional, tag = "2")]
14822    pub kctx_id: ::core::option::Option<u32>,
14823    #[prost(uint64, optional, tag = "3")]
14824    pub info_val: ::core::option::Option<u64>,
14825}
14826#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14827pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
14828    #[prost(int32, optional, tag = "1")]
14829    pub kctx_tgid: ::core::option::Option<i32>,
14830    #[prost(uint32, optional, tag = "2")]
14831    pub kctx_id: ::core::option::Option<u32>,
14832    #[prost(uint64, optional, tag = "3")]
14833    pub info_val: ::core::option::Option<u64>,
14834}
14835#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14836pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
14837    #[prost(int32, optional, tag = "1")]
14838    pub kctx_tgid: ::core::option::Option<i32>,
14839    #[prost(uint32, optional, tag = "2")]
14840    pub kctx_id: ::core::option::Option<u32>,
14841    #[prost(uint64, optional, tag = "3")]
14842    pub info_val: ::core::option::Option<u64>,
14843}
14844#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14845pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14846    #[prost(int32, optional, tag = "1")]
14847    pub kctx_tgid: ::core::option::Option<i32>,
14848    #[prost(uint32, optional, tag = "2")]
14849    pub kctx_id: ::core::option::Option<u32>,
14850    #[prost(uint64, optional, tag = "3")]
14851    pub info_val: ::core::option::Option<u64>,
14852}
14853#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14854pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14855    #[prost(int32, optional, tag = "1")]
14856    pub kctx_tgid: ::core::option::Option<i32>,
14857    #[prost(uint32, optional, tag = "2")]
14858    pub kctx_id: ::core::option::Option<u32>,
14859    #[prost(uint64, optional, tag = "3")]
14860    pub info_val: ::core::option::Option<u64>,
14861}
14862#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14863pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14864    #[prost(int32, optional, tag = "1")]
14865    pub kctx_tgid: ::core::option::Option<i32>,
14866    #[prost(uint32, optional, tag = "2")]
14867    pub kctx_id: ::core::option::Option<u32>,
14868    #[prost(uint64, optional, tag = "3")]
14869    pub info_val: ::core::option::Option<u64>,
14870}
14871#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14872pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14873    #[prost(int32, optional, tag = "1")]
14874    pub kctx_tgid: ::core::option::Option<i32>,
14875    #[prost(uint32, optional, tag = "2")]
14876    pub kctx_id: ::core::option::Option<u32>,
14877    #[prost(uint64, optional, tag = "3")]
14878    pub info_val: ::core::option::Option<u64>,
14879}
14880#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14881pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14882    #[prost(int32, optional, tag = "1")]
14883    pub kctx_tgid: ::core::option::Option<i32>,
14884    #[prost(uint32, optional, tag = "2")]
14885    pub kctx_id: ::core::option::Option<u32>,
14886    #[prost(uint64, optional, tag = "3")]
14887    pub info_val: ::core::option::Option<u64>,
14888}
14889#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14890pub struct MaliMaliPmmcuinsleepFtraceEvent {
14891    #[prost(int32, optional, tag = "1")]
14892    pub kctx_tgid: ::core::option::Option<i32>,
14893    #[prost(uint32, optional, tag = "2")]
14894    pub kctx_id: ::core::option::Option<u32>,
14895    #[prost(uint64, optional, tag = "3")]
14896    pub info_val: ::core::option::Option<u64>,
14897}
14898#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14899pub struct MaliMaliPmmcuoffFtraceEvent {
14900    #[prost(int32, optional, tag = "1")]
14901    pub kctx_tgid: ::core::option::Option<i32>,
14902    #[prost(uint32, optional, tag = "2")]
14903    pub kctx_id: ::core::option::Option<u32>,
14904    #[prost(uint64, optional, tag = "3")]
14905    pub info_val: ::core::option::Option<u64>,
14906}
14907#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14908pub struct MaliMaliPmmcuonFtraceEvent {
14909    #[prost(int32, optional, tag = "1")]
14910    pub kctx_tgid: ::core::option::Option<i32>,
14911    #[prost(uint32, optional, tag = "2")]
14912    pub kctx_id: ::core::option::Option<u32>,
14913    #[prost(uint64, optional, tag = "3")]
14914    pub info_val: ::core::option::Option<u64>,
14915}
14916#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14917pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14918    #[prost(int32, optional, tag = "1")]
14919    pub kctx_tgid: ::core::option::Option<i32>,
14920    #[prost(uint32, optional, tag = "2")]
14921    pub kctx_id: ::core::option::Option<u32>,
14922    #[prost(uint64, optional, tag = "3")]
14923    pub info_val: ::core::option::Option<u64>,
14924}
14925#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14926pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14927    #[prost(int32, optional, tag = "1")]
14928    pub kctx_tgid: ::core::option::Option<i32>,
14929    #[prost(uint32, optional, tag = "2")]
14930    pub kctx_id: ::core::option::Option<u32>,
14931    #[prost(uint64, optional, tag = "3")]
14932    pub info_val: ::core::option::Option<u64>,
14933}
14934#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14935pub struct MaliMaliPmmcuonhaltFtraceEvent {
14936    #[prost(int32, optional, tag = "1")]
14937    pub kctx_tgid: ::core::option::Option<i32>,
14938    #[prost(uint32, optional, tag = "2")]
14939    pub kctx_id: ::core::option::Option<u32>,
14940    #[prost(uint64, optional, tag = "3")]
14941    pub info_val: ::core::option::Option<u64>,
14942}
14943#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14944pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14945    #[prost(int32, optional, tag = "1")]
14946    pub kctx_tgid: ::core::option::Option<i32>,
14947    #[prost(uint32, optional, tag = "2")]
14948    pub kctx_id: ::core::option::Option<u32>,
14949    #[prost(uint64, optional, tag = "3")]
14950    pub info_val: ::core::option::Option<u64>,
14951}
14952#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14953pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14954    #[prost(int32, optional, tag = "1")]
14955    pub kctx_tgid: ::core::option::Option<i32>,
14956    #[prost(uint32, optional, tag = "2")]
14957    pub kctx_id: ::core::option::Option<u32>,
14958    #[prost(uint64, optional, tag = "3")]
14959    pub info_val: ::core::option::Option<u64>,
14960}
14961#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14962pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14963    #[prost(int32, optional, tag = "1")]
14964    pub kctx_tgid: ::core::option::Option<i32>,
14965    #[prost(uint32, optional, tag = "2")]
14966    pub kctx_id: ::core::option::Option<u32>,
14967    #[prost(uint64, optional, tag = "3")]
14968    pub info_val: ::core::option::Option<u64>,
14969}
14970#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14971pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14972    #[prost(int32, optional, tag = "1")]
14973    pub kctx_tgid: ::core::option::Option<i32>,
14974    #[prost(uint32, optional, tag = "2")]
14975    pub kctx_id: ::core::option::Option<u32>,
14976    #[prost(uint64, optional, tag = "3")]
14977    pub info_val: ::core::option::Option<u64>,
14978}
14979#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14980pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14981    #[prost(int32, optional, tag = "1")]
14982    pub kctx_tgid: ::core::option::Option<i32>,
14983    #[prost(uint32, optional, tag = "2")]
14984    pub kctx_id: ::core::option::Option<u32>,
14985    #[prost(uint64, optional, tag = "3")]
14986    pub info_val: ::core::option::Option<u64>,
14987}
14988#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14989pub struct MaliMaliPmmcupendoffFtraceEvent {
14990    #[prost(int32, optional, tag = "1")]
14991    pub kctx_tgid: ::core::option::Option<i32>,
14992    #[prost(uint32, optional, tag = "2")]
14993    pub kctx_id: ::core::option::Option<u32>,
14994    #[prost(uint64, optional, tag = "3")]
14995    pub info_val: ::core::option::Option<u64>,
14996}
14997#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14998pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14999    #[prost(int32, optional, tag = "1")]
15000    pub kctx_tgid: ::core::option::Option<i32>,
15001    #[prost(uint32, optional, tag = "2")]
15002    pub kctx_id: ::core::option::Option<u32>,
15003    #[prost(uint64, optional, tag = "3")]
15004    pub info_val: ::core::option::Option<u64>,
15005}
15006#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15007pub struct MaliMaliPmmcupowerdownFtraceEvent {
15008    #[prost(int32, optional, tag = "1")]
15009    pub kctx_tgid: ::core::option::Option<i32>,
15010    #[prost(uint32, optional, tag = "2")]
15011    pub kctx_id: ::core::option::Option<u32>,
15012    #[prost(uint64, optional, tag = "3")]
15013    pub info_val: ::core::option::Option<u64>,
15014}
15015#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15016pub struct MaliMaliPmmcuresetwaitFtraceEvent {
15017    #[prost(int32, optional, tag = "1")]
15018    pub kctx_tgid: ::core::option::Option<i32>,
15019    #[prost(uint32, optional, tag = "2")]
15020    pub kctx_id: ::core::option::Option<u32>,
15021    #[prost(uint64, optional, tag = "3")]
15022    pub info_val: ::core::option::Option<u64>,
15023}
15024#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15025pub struct MaliGpuPowerStateFtraceEvent {
15026    #[prost(uint64, optional, tag = "1")]
15027    pub change_ns: ::core::option::Option<u64>,
15028    #[prost(int32, optional, tag = "2")]
15029    pub from_state: ::core::option::Option<i32>,
15030    #[prost(int32, optional, tag = "3")]
15031    pub to_state: ::core::option::Option<i32>,
15032}
15033#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15034pub struct MdpCmdKickoffFtraceEvent {
15035    #[prost(uint32, optional, tag = "1")]
15036    pub ctl_num: ::core::option::Option<u32>,
15037    #[prost(int32, optional, tag = "2")]
15038    pub kickoff_cnt: ::core::option::Option<i32>,
15039}
15040#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15041pub struct MdpCommitFtraceEvent {
15042    #[prost(uint32, optional, tag = "1")]
15043    pub num: ::core::option::Option<u32>,
15044    #[prost(uint32, optional, tag = "2")]
15045    pub play_cnt: ::core::option::Option<u32>,
15046    #[prost(uint32, optional, tag = "3")]
15047    pub clk_rate: ::core::option::Option<u32>,
15048    #[prost(uint64, optional, tag = "4")]
15049    pub bandwidth: ::core::option::Option<u64>,
15050}
15051#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15052pub struct MdpPerfSetOtFtraceEvent {
15053    #[prost(uint32, optional, tag = "1")]
15054    pub pnum: ::core::option::Option<u32>,
15055    #[prost(uint32, optional, tag = "2")]
15056    pub xin_id: ::core::option::Option<u32>,
15057    #[prost(uint32, optional, tag = "3")]
15058    pub rd_lim: ::core::option::Option<u32>,
15059    #[prost(uint32, optional, tag = "4")]
15060    pub is_vbif_rt: ::core::option::Option<u32>,
15061}
15062#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15063pub struct MdpSsppChangeFtraceEvent {
15064    #[prost(uint32, optional, tag = "1")]
15065    pub num: ::core::option::Option<u32>,
15066    #[prost(uint32, optional, tag = "2")]
15067    pub play_cnt: ::core::option::Option<u32>,
15068    #[prost(uint32, optional, tag = "3")]
15069    pub mixer: ::core::option::Option<u32>,
15070    #[prost(uint32, optional, tag = "4")]
15071    pub stage: ::core::option::Option<u32>,
15072    #[prost(uint32, optional, tag = "5")]
15073    pub flags: ::core::option::Option<u32>,
15074    #[prost(uint32, optional, tag = "6")]
15075    pub format: ::core::option::Option<u32>,
15076    #[prost(uint32, optional, tag = "7")]
15077    pub img_w: ::core::option::Option<u32>,
15078    #[prost(uint32, optional, tag = "8")]
15079    pub img_h: ::core::option::Option<u32>,
15080    #[prost(uint32, optional, tag = "9")]
15081    pub src_x: ::core::option::Option<u32>,
15082    #[prost(uint32, optional, tag = "10")]
15083    pub src_y: ::core::option::Option<u32>,
15084    #[prost(uint32, optional, tag = "11")]
15085    pub src_w: ::core::option::Option<u32>,
15086    #[prost(uint32, optional, tag = "12")]
15087    pub src_h: ::core::option::Option<u32>,
15088    #[prost(uint32, optional, tag = "13")]
15089    pub dst_x: ::core::option::Option<u32>,
15090    #[prost(uint32, optional, tag = "14")]
15091    pub dst_y: ::core::option::Option<u32>,
15092    #[prost(uint32, optional, tag = "15")]
15093    pub dst_w: ::core::option::Option<u32>,
15094    #[prost(uint32, optional, tag = "16")]
15095    pub dst_h: ::core::option::Option<u32>,
15096}
15097#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15098pub struct TracingMarkWriteFtraceEvent {
15099    #[prost(int32, optional, tag = "1")]
15100    pub pid: ::core::option::Option<i32>,
15101    #[prost(string, optional, tag = "2")]
15102    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15103    #[prost(uint32, optional, tag = "3")]
15104    pub trace_begin: ::core::option::Option<u32>,
15105}
15106#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15107pub struct MdpCmdPingpongDoneFtraceEvent {
15108    #[prost(uint32, optional, tag = "1")]
15109    pub ctl_num: ::core::option::Option<u32>,
15110    #[prost(uint32, optional, tag = "2")]
15111    pub intf_num: ::core::option::Option<u32>,
15112    #[prost(uint32, optional, tag = "3")]
15113    pub pp_num: ::core::option::Option<u32>,
15114    #[prost(int32, optional, tag = "4")]
15115    pub koff_cnt: ::core::option::Option<i32>,
15116}
15117#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15118pub struct MdpCompareBwFtraceEvent {
15119    #[prost(uint64, optional, tag = "1")]
15120    pub new_ab: ::core::option::Option<u64>,
15121    #[prost(uint64, optional, tag = "2")]
15122    pub new_ib: ::core::option::Option<u64>,
15123    #[prost(uint64, optional, tag = "3")]
15124    pub new_wb: ::core::option::Option<u64>,
15125    #[prost(uint64, optional, tag = "4")]
15126    pub old_ab: ::core::option::Option<u64>,
15127    #[prost(uint64, optional, tag = "5")]
15128    pub old_ib: ::core::option::Option<u64>,
15129    #[prost(uint64, optional, tag = "6")]
15130    pub old_wb: ::core::option::Option<u64>,
15131    #[prost(uint32, optional, tag = "7")]
15132    pub params_changed: ::core::option::Option<u32>,
15133    #[prost(uint32, optional, tag = "8")]
15134    pub update_bw: ::core::option::Option<u32>,
15135}
15136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15137pub struct MdpPerfSetPanicLutsFtraceEvent {
15138    #[prost(uint32, optional, tag = "1")]
15139    pub pnum: ::core::option::Option<u32>,
15140    #[prost(uint32, optional, tag = "2")]
15141    pub fmt: ::core::option::Option<u32>,
15142    #[prost(uint32, optional, tag = "3")]
15143    pub mode: ::core::option::Option<u32>,
15144    #[prost(uint32, optional, tag = "4")]
15145    pub panic_lut: ::core::option::Option<u32>,
15146    #[prost(uint32, optional, tag = "5")]
15147    pub robust_lut: ::core::option::Option<u32>,
15148}
15149#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15150pub struct MdpSsppSetFtraceEvent {
15151    #[prost(uint32, optional, tag = "1")]
15152    pub num: ::core::option::Option<u32>,
15153    #[prost(uint32, optional, tag = "2")]
15154    pub play_cnt: ::core::option::Option<u32>,
15155    #[prost(uint32, optional, tag = "3")]
15156    pub mixer: ::core::option::Option<u32>,
15157    #[prost(uint32, optional, tag = "4")]
15158    pub stage: ::core::option::Option<u32>,
15159    #[prost(uint32, optional, tag = "5")]
15160    pub flags: ::core::option::Option<u32>,
15161    #[prost(uint32, optional, tag = "6")]
15162    pub format: ::core::option::Option<u32>,
15163    #[prost(uint32, optional, tag = "7")]
15164    pub img_w: ::core::option::Option<u32>,
15165    #[prost(uint32, optional, tag = "8")]
15166    pub img_h: ::core::option::Option<u32>,
15167    #[prost(uint32, optional, tag = "9")]
15168    pub src_x: ::core::option::Option<u32>,
15169    #[prost(uint32, optional, tag = "10")]
15170    pub src_y: ::core::option::Option<u32>,
15171    #[prost(uint32, optional, tag = "11")]
15172    pub src_w: ::core::option::Option<u32>,
15173    #[prost(uint32, optional, tag = "12")]
15174    pub src_h: ::core::option::Option<u32>,
15175    #[prost(uint32, optional, tag = "13")]
15176    pub dst_x: ::core::option::Option<u32>,
15177    #[prost(uint32, optional, tag = "14")]
15178    pub dst_y: ::core::option::Option<u32>,
15179    #[prost(uint32, optional, tag = "15")]
15180    pub dst_w: ::core::option::Option<u32>,
15181    #[prost(uint32, optional, tag = "16")]
15182    pub dst_h: ::core::option::Option<u32>,
15183}
15184#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15185pub struct MdpCmdReadptrDoneFtraceEvent {
15186    #[prost(uint32, optional, tag = "1")]
15187    pub ctl_num: ::core::option::Option<u32>,
15188    #[prost(int32, optional, tag = "2")]
15189    pub koff_cnt: ::core::option::Option<i32>,
15190}
15191#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15192pub struct MdpMisrCrcFtraceEvent {
15193    #[prost(uint32, optional, tag = "1")]
15194    pub block_id: ::core::option::Option<u32>,
15195    #[prost(uint32, optional, tag = "2")]
15196    pub vsync_cnt: ::core::option::Option<u32>,
15197    #[prost(uint32, optional, tag = "3")]
15198    pub crc: ::core::option::Option<u32>,
15199}
15200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15201pub struct MdpPerfSetQosLutsFtraceEvent {
15202    #[prost(uint32, optional, tag = "1")]
15203    pub pnum: ::core::option::Option<u32>,
15204    #[prost(uint32, optional, tag = "2")]
15205    pub fmt: ::core::option::Option<u32>,
15206    #[prost(uint32, optional, tag = "3")]
15207    pub intf: ::core::option::Option<u32>,
15208    #[prost(uint32, optional, tag = "4")]
15209    pub rot: ::core::option::Option<u32>,
15210    #[prost(uint32, optional, tag = "5")]
15211    pub fl: ::core::option::Option<u32>,
15212    #[prost(uint32, optional, tag = "6")]
15213    pub lut: ::core::option::Option<u32>,
15214    #[prost(uint32, optional, tag = "7")]
15215    pub linear: ::core::option::Option<u32>,
15216}
15217#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15218pub struct MdpTraceCounterFtraceEvent {
15219    #[prost(int32, optional, tag = "1")]
15220    pub pid: ::core::option::Option<i32>,
15221    #[prost(string, optional, tag = "2")]
15222    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
15223    #[prost(int32, optional, tag = "3")]
15224    pub value: ::core::option::Option<i32>,
15225}
15226#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15227pub struct MdpCmdReleaseBwFtraceEvent {
15228    #[prost(uint32, optional, tag = "1")]
15229    pub ctl_num: ::core::option::Option<u32>,
15230}
15231#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15232pub struct MdpMixerUpdateFtraceEvent {
15233    #[prost(uint32, optional, tag = "1")]
15234    pub mixer_num: ::core::option::Option<u32>,
15235}
15236#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15237pub struct MdpPerfSetWmLevelsFtraceEvent {
15238    #[prost(uint32, optional, tag = "1")]
15239    pub pnum: ::core::option::Option<u32>,
15240    #[prost(uint32, optional, tag = "2")]
15241    pub use_space: ::core::option::Option<u32>,
15242    #[prost(uint32, optional, tag = "3")]
15243    pub priority_bytes: ::core::option::Option<u32>,
15244    #[prost(uint32, optional, tag = "4")]
15245    pub wm0: ::core::option::Option<u32>,
15246    #[prost(uint32, optional, tag = "5")]
15247    pub wm1: ::core::option::Option<u32>,
15248    #[prost(uint32, optional, tag = "6")]
15249    pub wm2: ::core::option::Option<u32>,
15250    #[prost(uint32, optional, tag = "7")]
15251    pub mb_cnt: ::core::option::Option<u32>,
15252    #[prost(uint32, optional, tag = "8")]
15253    pub mb_size: ::core::option::Option<u32>,
15254}
15255#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15256pub struct MdpVideoUnderrunDoneFtraceEvent {
15257    #[prost(uint32, optional, tag = "1")]
15258    pub ctl_num: ::core::option::Option<u32>,
15259    #[prost(uint32, optional, tag = "2")]
15260    pub underrun_cnt: ::core::option::Option<u32>,
15261}
15262#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15263pub struct MdpCmdWaitPingpongFtraceEvent {
15264    #[prost(uint32, optional, tag = "1")]
15265    pub ctl_num: ::core::option::Option<u32>,
15266    #[prost(int32, optional, tag = "2")]
15267    pub kickoff_cnt: ::core::option::Option<i32>,
15268}
15269#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15270pub struct MdpPerfPrefillCalcFtraceEvent {
15271    #[prost(uint32, optional, tag = "1")]
15272    pub pnum: ::core::option::Option<u32>,
15273    #[prost(uint32, optional, tag = "2")]
15274    pub latency_buf: ::core::option::Option<u32>,
15275    #[prost(uint32, optional, tag = "3")]
15276    pub ot: ::core::option::Option<u32>,
15277    #[prost(uint32, optional, tag = "4")]
15278    pub y_buf: ::core::option::Option<u32>,
15279    #[prost(uint32, optional, tag = "5")]
15280    pub y_scaler: ::core::option::Option<u32>,
15281    #[prost(uint32, optional, tag = "6")]
15282    pub pp_lines: ::core::option::Option<u32>,
15283    #[prost(uint32, optional, tag = "7")]
15284    pub pp_bytes: ::core::option::Option<u32>,
15285    #[prost(uint32, optional, tag = "8")]
15286    pub post_sc: ::core::option::Option<u32>,
15287    #[prost(uint32, optional, tag = "9")]
15288    pub fbc_bytes: ::core::option::Option<u32>,
15289    #[prost(uint32, optional, tag = "10")]
15290    pub prefill_bytes: ::core::option::Option<u32>,
15291}
15292#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15293pub struct MdpPerfUpdateBusFtraceEvent {
15294    #[prost(int32, optional, tag = "1")]
15295    pub client: ::core::option::Option<i32>,
15296    #[prost(uint64, optional, tag = "2")]
15297    pub ab_quota: ::core::option::Option<u64>,
15298    #[prost(uint64, optional, tag = "3")]
15299    pub ib_quota: ::core::option::Option<u64>,
15300}
15301#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15302pub struct RotatorBwAoAsContextFtraceEvent {
15303    #[prost(uint32, optional, tag = "1")]
15304    pub state: ::core::option::Option<u32>,
15305}
15306#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15307pub struct MmEventRecordFtraceEvent {
15308    #[prost(uint32, optional, tag = "1")]
15309    pub avg_lat: ::core::option::Option<u32>,
15310    #[prost(uint32, optional, tag = "2")]
15311    pub count: ::core::option::Option<u32>,
15312    #[prost(uint32, optional, tag = "3")]
15313    pub max_lat: ::core::option::Option<u32>,
15314    #[prost(uint32, optional, tag = "4")]
15315    pub r#type: ::core::option::Option<u32>,
15316}
15317#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15318pub struct NetifReceiveSkbFtraceEvent {
15319    #[prost(uint32, optional, tag = "1")]
15320    pub len: ::core::option::Option<u32>,
15321    #[prost(string, optional, tag = "2")]
15322    pub name: ::core::option::Option<::prost::alloc::string::String>,
15323    #[prost(uint64, optional, tag = "3")]
15324    pub skbaddr: ::core::option::Option<u64>,
15325}
15326#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15327pub struct NetDevXmitFtraceEvent {
15328    #[prost(uint32, optional, tag = "1")]
15329    pub len: ::core::option::Option<u32>,
15330    #[prost(string, optional, tag = "2")]
15331    pub name: ::core::option::Option<::prost::alloc::string::String>,
15332    #[prost(int32, optional, tag = "3")]
15333    pub rc: ::core::option::Option<i32>,
15334    #[prost(uint64, optional, tag = "4")]
15335    pub skbaddr: ::core::option::Option<u64>,
15336}
15337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15338pub struct NapiGroReceiveEntryFtraceEvent {
15339    #[prost(uint32, optional, tag = "1")]
15340    pub data_len: ::core::option::Option<u32>,
15341    #[prost(uint32, optional, tag = "2")]
15342    pub gso_size: ::core::option::Option<u32>,
15343    #[prost(uint32, optional, tag = "3")]
15344    pub gso_type: ::core::option::Option<u32>,
15345    #[prost(uint32, optional, tag = "4")]
15346    pub hash: ::core::option::Option<u32>,
15347    #[prost(uint32, optional, tag = "5")]
15348    pub ip_summed: ::core::option::Option<u32>,
15349    #[prost(uint32, optional, tag = "6")]
15350    pub l4_hash: ::core::option::Option<u32>,
15351    #[prost(uint32, optional, tag = "7")]
15352    pub len: ::core::option::Option<u32>,
15353    #[prost(int32, optional, tag = "8")]
15354    pub mac_header: ::core::option::Option<i32>,
15355    #[prost(uint32, optional, tag = "9")]
15356    pub mac_header_valid: ::core::option::Option<u32>,
15357    #[prost(string, optional, tag = "10")]
15358    pub name: ::core::option::Option<::prost::alloc::string::String>,
15359    #[prost(uint32, optional, tag = "11")]
15360    pub napi_id: ::core::option::Option<u32>,
15361    #[prost(uint32, optional, tag = "12")]
15362    pub nr_frags: ::core::option::Option<u32>,
15363    #[prost(uint32, optional, tag = "13")]
15364    pub protocol: ::core::option::Option<u32>,
15365    #[prost(uint32, optional, tag = "14")]
15366    pub queue_mapping: ::core::option::Option<u32>,
15367    #[prost(uint64, optional, tag = "15")]
15368    pub skbaddr: ::core::option::Option<u64>,
15369    #[prost(uint32, optional, tag = "16")]
15370    pub truesize: ::core::option::Option<u32>,
15371    #[prost(uint32, optional, tag = "17")]
15372    pub vlan_proto: ::core::option::Option<u32>,
15373    #[prost(uint32, optional, tag = "18")]
15374    pub vlan_tagged: ::core::option::Option<u32>,
15375    #[prost(uint32, optional, tag = "19")]
15376    pub vlan_tci: ::core::option::Option<u32>,
15377}
15378#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15379pub struct NapiGroReceiveExitFtraceEvent {
15380    #[prost(int32, optional, tag = "1")]
15381    pub ret: ::core::option::Option<i32>,
15382}
15383#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15384pub struct OomScoreAdjUpdateFtraceEvent {
15385    #[prost(string, optional, tag = "1")]
15386    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15387    #[prost(int32, optional, tag = "2")]
15388    pub oom_score_adj: ::core::option::Option<i32>,
15389    #[prost(int32, optional, tag = "3")]
15390    pub pid: ::core::option::Option<i32>,
15391}
15392#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15393pub struct MarkVictimFtraceEvent {
15394    #[prost(int32, optional, tag = "1")]
15395    pub pid: ::core::option::Option<i32>,
15396}
15397#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15398pub struct DsiCmdFifoStatusFtraceEvent {
15399    #[prost(uint32, optional, tag = "1")]
15400    pub header: ::core::option::Option<u32>,
15401    #[prost(uint32, optional, tag = "2")]
15402    pub payload: ::core::option::Option<u32>,
15403}
15404#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15405pub struct DsiRxFtraceEvent {
15406    #[prost(uint32, optional, tag = "1")]
15407    pub cmd: ::core::option::Option<u32>,
15408    #[prost(bytes = "vec", optional, tag = "3")]
15409    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15410}
15411#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15412pub struct DsiTxFtraceEvent {
15413    #[prost(uint32, optional, tag = "1")]
15414    pub last: ::core::option::Option<u32>,
15415    #[prost(uint32, optional, tag = "3")]
15416    pub r#type: ::core::option::Option<u32>,
15417    #[prost(bytes = "vec", optional, tag = "4")]
15418    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15419}
15420#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15421pub struct PanelWriteGenericFtraceEvent {
15422    #[prost(int32, optional, tag = "1")]
15423    pub pid: ::core::option::Option<i32>,
15424    #[prost(string, optional, tag = "2")]
15425    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15426    #[prost(uint32, optional, tag = "3")]
15427    pub trace_begin: ::core::option::Option<u32>,
15428    #[prost(string, optional, tag = "4")]
15429    pub name: ::core::option::Option<::prost::alloc::string::String>,
15430    #[prost(uint32, optional, tag = "5")]
15431    pub r#type: ::core::option::Option<u32>,
15432    #[prost(int32, optional, tag = "6")]
15433    pub value: ::core::option::Option<i32>,
15434}
15435#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15436pub struct GramCollisionFtraceEvent {
15437    #[prost(int32, optional, tag = "1")]
15438    pub panel_index: ::core::option::Option<i32>,
15439    #[prost(uint32, optional, tag = "2")]
15440    pub collision_cnt: ::core::option::Option<u32>,
15441}
15442#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15443pub struct PanelSettingsFullFtraceEvent {
15444    #[prost(int32, optional, tag = "1")]
15445    pub panel_index: ::core::option::Option<i32>,
15446    #[prost(uint32, optional, tag = "2")]
15447    pub hbm: ::core::option::Option<u32>,
15448    #[prost(uint32, optional, tag = "3")]
15449    pub irc: ::core::option::Option<u32>,
15450    #[prost(uint32, optional, tag = "4")]
15451    pub h_pwm: ::core::option::Option<u32>,
15452    #[prost(uint32, optional, tag = "5")]
15453    pub fi_auto: ::core::option::Option<u32>,
15454    #[prost(uint32, optional, tag = "6")]
15455    pub fi_manual: ::core::option::Option<u32>,
15456    #[prost(uint32, optional, tag = "7")]
15457    pub early_exit: ::core::option::Option<u32>,
15458    #[prost(uint32, optional, tag = "8")]
15459    pub min_rr: ::core::option::Option<u32>,
15460    #[prost(uint32, optional, tag = "9")]
15461    pub max_rr: ::core::option::Option<u32>,
15462    #[prost(uint32, optional, tag = "10")]
15463    pub te_freq: ::core::option::Option<u32>,
15464}
15465#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15466pub struct PanelSettingsLiteFtraceEvent {
15467    #[prost(int32, optional, tag = "1")]
15468    pub panel_index: ::core::option::Option<i32>,
15469    #[prost(uint32, optional, tag = "2")]
15470    pub vrr: ::core::option::Option<u32>,
15471    #[prost(uint32, optional, tag = "3")]
15472    pub min_rr: ::core::option::Option<u32>,
15473    #[prost(uint32, optional, tag = "4")]
15474    pub max_rr: ::core::option::Option<u32>,
15475    #[prost(uint32, optional, tag = "5")]
15476    pub te_freq: ::core::option::Option<u32>,
15477}
15478#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15479pub struct SchedSwitchWithCtrsFtraceEvent {
15480    #[prost(int32, optional, tag = "1")]
15481    pub old_pid: ::core::option::Option<i32>,
15482    #[prost(int32, optional, tag = "2")]
15483    pub new_pid: ::core::option::Option<i32>,
15484    #[prost(uint64, optional, tag = "3")]
15485    pub cctr: ::core::option::Option<u64>,
15486    #[prost(uint64, optional, tag = "4")]
15487    pub ctr0: ::core::option::Option<u64>,
15488    #[prost(uint64, optional, tag = "5")]
15489    pub ctr1: ::core::option::Option<u64>,
15490    #[prost(uint64, optional, tag = "6")]
15491    pub ctr2: ::core::option::Option<u64>,
15492    #[prost(uint64, optional, tag = "7")]
15493    pub ctr3: ::core::option::Option<u64>,
15494    #[prost(uint32, optional, tag = "8")]
15495    pub lctr0: ::core::option::Option<u32>,
15496    #[prost(uint32, optional, tag = "9")]
15497    pub lctr1: ::core::option::Option<u32>,
15498    #[prost(uint64, optional, tag = "10")]
15499    pub ctr4: ::core::option::Option<u64>,
15500    #[prost(uint64, optional, tag = "11")]
15501    pub ctr5: ::core::option::Option<u64>,
15502    #[prost(string, optional, tag = "12")]
15503    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15504    #[prost(int32, optional, tag = "13")]
15505    pub prev_pid: ::core::option::Option<i32>,
15506    #[prost(uint32, optional, tag = "14")]
15507    pub cyc: ::core::option::Option<u32>,
15508    #[prost(uint32, optional, tag = "15")]
15509    pub inst: ::core::option::Option<u32>,
15510    #[prost(uint32, optional, tag = "16")]
15511    pub stallbm: ::core::option::Option<u32>,
15512    #[prost(uint32, optional, tag = "17")]
15513    pub l3dm: ::core::option::Option<u32>,
15514    #[prost(int32, optional, tag = "18")]
15515    pub next_pid: ::core::option::Option<i32>,
15516    #[prost(string, optional, tag = "19")]
15517    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15518    #[prost(int64, optional, tag = "20")]
15519    pub prev_state: ::core::option::Option<i64>,
15520    #[prost(uint64, optional, tag = "21")]
15521    pub amu0: ::core::option::Option<u64>,
15522    #[prost(uint64, optional, tag = "22")]
15523    pub amu1: ::core::option::Option<u64>,
15524    #[prost(uint64, optional, tag = "23")]
15525    pub amu2: ::core::option::Option<u64>,
15526}
15527#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15528pub struct LongIrqFtraceEvent {
15529    #[prost(int32, optional, tag = "1")]
15530    pub irq: ::core::option::Option<i32>,
15531    #[prost(uint32, optional, tag = "2")]
15532    pub latency: ::core::option::Option<u32>,
15533    #[prost(uint32, optional, tag = "3")]
15534    pub count: ::core::option::Option<u32>,
15535}
15536#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15537pub struct LongSoftirqFtraceEvent {
15538    #[prost(int32, optional, tag = "1")]
15539    pub vec_nr: ::core::option::Option<i32>,
15540    #[prost(uint32, optional, tag = "2")]
15541    pub latency: ::core::option::Option<u32>,
15542    #[prost(uint32, optional, tag = "3")]
15543    pub count: ::core::option::Option<u32>,
15544}
15545#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15546pub struct PixelMmKswapdWakeFtraceEvent {
15547    #[prost(int32, optional, tag = "1")]
15548    pub whatever: ::core::option::Option<i32>,
15549}
15550#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15551pub struct PixelMmKswapdDoneFtraceEvent {
15552    #[prost(uint64, optional, tag = "1")]
15553    pub delta_nr_scanned: ::core::option::Option<u64>,
15554    #[prost(uint64, optional, tag = "2")]
15555    pub delta_nr_reclaimed: ::core::option::Option<u64>,
15556    #[prost(uint64, optional, tag = "3")]
15557    pub delta_nr_allocated: ::core::option::Option<u64>,
15558    #[prost(uint64, optional, tag = "4")]
15559    pub duration_ns: ::core::option::Option<u64>,
15560}
15561#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15562pub struct CpuFrequencyFtraceEvent {
15563    #[prost(uint32, optional, tag = "1")]
15564    pub state: ::core::option::Option<u32>,
15565    #[prost(uint32, optional, tag = "2")]
15566    pub cpu_id: ::core::option::Option<u32>,
15567}
15568#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15569pub struct CpuFrequencyLimitsFtraceEvent {
15570    #[prost(uint32, optional, tag = "1")]
15571    pub min_freq: ::core::option::Option<u32>,
15572    #[prost(uint32, optional, tag = "2")]
15573    pub max_freq: ::core::option::Option<u32>,
15574    #[prost(uint32, optional, tag = "3")]
15575    pub cpu_id: ::core::option::Option<u32>,
15576}
15577#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15578pub struct CpuIdleFtraceEvent {
15579    #[prost(uint32, optional, tag = "1")]
15580    pub state: ::core::option::Option<u32>,
15581    #[prost(uint32, optional, tag = "2")]
15582    pub cpu_id: ::core::option::Option<u32>,
15583}
15584#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15585pub struct ClockEnableFtraceEvent {
15586    #[prost(string, optional, tag = "1")]
15587    pub name: ::core::option::Option<::prost::alloc::string::String>,
15588    #[prost(uint64, optional, tag = "2")]
15589    pub state: ::core::option::Option<u64>,
15590    #[prost(uint64, optional, tag = "3")]
15591    pub cpu_id: ::core::option::Option<u64>,
15592}
15593#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15594pub struct ClockDisableFtraceEvent {
15595    #[prost(string, optional, tag = "1")]
15596    pub name: ::core::option::Option<::prost::alloc::string::String>,
15597    #[prost(uint64, optional, tag = "2")]
15598    pub state: ::core::option::Option<u64>,
15599    #[prost(uint64, optional, tag = "3")]
15600    pub cpu_id: ::core::option::Option<u64>,
15601}
15602#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15603pub struct ClockSetRateFtraceEvent {
15604    #[prost(string, optional, tag = "1")]
15605    pub name: ::core::option::Option<::prost::alloc::string::String>,
15606    #[prost(uint64, optional, tag = "2")]
15607    pub state: ::core::option::Option<u64>,
15608    #[prost(uint64, optional, tag = "3")]
15609    pub cpu_id: ::core::option::Option<u64>,
15610}
15611#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15612pub struct SuspendResumeFtraceEvent {
15613    #[prost(string, optional, tag = "1")]
15614    pub action: ::core::option::Option<::prost::alloc::string::String>,
15615    #[prost(int32, optional, tag = "2")]
15616    pub val: ::core::option::Option<i32>,
15617    #[prost(uint32, optional, tag = "3")]
15618    pub start: ::core::option::Option<u32>,
15619}
15620#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15621pub struct GpuFrequencyFtraceEvent {
15622    #[prost(uint32, optional, tag = "1")]
15623    pub gpu_id: ::core::option::Option<u32>,
15624    #[prost(uint32, optional, tag = "2")]
15625    pub state: ::core::option::Option<u32>,
15626}
15627#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15628pub struct WakeupSourceActivateFtraceEvent {
15629    #[prost(string, optional, tag = "1")]
15630    pub name: ::core::option::Option<::prost::alloc::string::String>,
15631    #[prost(uint64, optional, tag = "2")]
15632    pub state: ::core::option::Option<u64>,
15633}
15634#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15635pub struct WakeupSourceDeactivateFtraceEvent {
15636    #[prost(string, optional, tag = "1")]
15637    pub name: ::core::option::Option<::prost::alloc::string::String>,
15638    #[prost(uint64, optional, tag = "2")]
15639    pub state: ::core::option::Option<u64>,
15640}
15641#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15642pub struct GpuWorkPeriodFtraceEvent {
15643    #[prost(uint32, optional, tag = "1")]
15644    pub gpu_id: ::core::option::Option<u32>,
15645    #[prost(uint32, optional, tag = "2")]
15646    pub uid: ::core::option::Option<u32>,
15647    #[prost(uint64, optional, tag = "3")]
15648    pub start_time_ns: ::core::option::Option<u64>,
15649    #[prost(uint64, optional, tag = "4")]
15650    pub end_time_ns: ::core::option::Option<u64>,
15651    #[prost(uint64, optional, tag = "5")]
15652    pub total_active_duration_ns: ::core::option::Option<u64>,
15653}
15654#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15655pub struct DevicePmCallbackStartFtraceEvent {
15656    #[prost(string, optional, tag = "1")]
15657    pub device: ::core::option::Option<::prost::alloc::string::String>,
15658    #[prost(string, optional, tag = "2")]
15659    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15660    #[prost(string, optional, tag = "3")]
15661    pub parent: ::core::option::Option<::prost::alloc::string::String>,
15662    #[prost(string, optional, tag = "4")]
15663    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
15664    #[prost(int32, optional, tag = "5")]
15665    pub event: ::core::option::Option<i32>,
15666}
15667#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15668pub struct DevicePmCallbackEndFtraceEvent {
15669    #[prost(string, optional, tag = "1")]
15670    pub device: ::core::option::Option<::prost::alloc::string::String>,
15671    #[prost(string, optional, tag = "2")]
15672    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15673    #[prost(int32, optional, tag = "3")]
15674    pub error: ::core::option::Option<i32>,
15675}
15676#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15677pub struct GpuPowerStateFtraceEvent {
15678    #[prost(int32, optional, tag = "1")]
15679    pub old_state: ::core::option::Option<i32>,
15680    #[prost(int32, optional, tag = "2")]
15681    pub new_state: ::core::option::Option<i32>,
15682}
15683#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15684pub struct PsciDomainIdleExitFtraceEvent {
15685    #[prost(uint32, optional, tag = "1")]
15686    pub cpu_id: ::core::option::Option<u32>,
15687    #[prost(uint32, optional, tag = "2")]
15688    pub state: ::core::option::Option<u32>,
15689    #[prost(uint32, optional, tag = "3")]
15690    pub s2idle: ::core::option::Option<u32>,
15691}
15692#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15693pub struct PsciDomainIdleEnterFtraceEvent {
15694    #[prost(uint32, optional, tag = "1")]
15695    pub cpu_id: ::core::option::Option<u32>,
15696    #[prost(uint32, optional, tag = "2")]
15697    pub state: ::core::option::Option<u32>,
15698    #[prost(uint32, optional, tag = "3")]
15699    pub s2idle: ::core::option::Option<u32>,
15700}
15701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15702pub struct ConsoleFtraceEvent {
15703    #[prost(string, optional, tag = "1")]
15704    pub msg: ::core::option::Option<::prost::alloc::string::String>,
15705}
15706#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15707pub struct SysEnterFtraceEvent {
15708    #[prost(int64, optional, tag = "1")]
15709    pub id: ::core::option::Option<i64>,
15710    #[prost(uint64, repeated, packed = "false", tag = "2")]
15711    pub args: ::prost::alloc::vec::Vec<u64>,
15712}
15713#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15714pub struct SysExitFtraceEvent {
15715    #[prost(int64, optional, tag = "1")]
15716    pub id: ::core::option::Option<i64>,
15717    #[prost(int64, optional, tag = "2")]
15718    pub ret: ::core::option::Option<i64>,
15719}
15720#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15721pub struct RegulatorDisableFtraceEvent {
15722    #[prost(string, optional, tag = "1")]
15723    pub name: ::core::option::Option<::prost::alloc::string::String>,
15724}
15725#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15726pub struct RegulatorDisableCompleteFtraceEvent {
15727    #[prost(string, optional, tag = "1")]
15728    pub name: ::core::option::Option<::prost::alloc::string::String>,
15729}
15730#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15731pub struct RegulatorEnableFtraceEvent {
15732    #[prost(string, optional, tag = "1")]
15733    pub name: ::core::option::Option<::prost::alloc::string::String>,
15734}
15735#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15736pub struct RegulatorEnableCompleteFtraceEvent {
15737    #[prost(string, optional, tag = "1")]
15738    pub name: ::core::option::Option<::prost::alloc::string::String>,
15739}
15740#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15741pub struct RegulatorEnableDelayFtraceEvent {
15742    #[prost(string, optional, tag = "1")]
15743    pub name: ::core::option::Option<::prost::alloc::string::String>,
15744}
15745#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15746pub struct RegulatorSetVoltageFtraceEvent {
15747    #[prost(string, optional, tag = "1")]
15748    pub name: ::core::option::Option<::prost::alloc::string::String>,
15749    #[prost(int32, optional, tag = "2")]
15750    pub min: ::core::option::Option<i32>,
15751    #[prost(int32, optional, tag = "3")]
15752    pub max: ::core::option::Option<i32>,
15753}
15754#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15755pub struct RegulatorSetVoltageCompleteFtraceEvent {
15756    #[prost(string, optional, tag = "1")]
15757    pub name: ::core::option::Option<::prost::alloc::string::String>,
15758    #[prost(uint32, optional, tag = "2")]
15759    pub val: ::core::option::Option<u32>,
15760}
15761#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15762pub struct RpmStatusFtraceEvent {
15763    #[prost(string, optional, tag = "1")]
15764    pub name: ::core::option::Option<::prost::alloc::string::String>,
15765    #[prost(int32, optional, tag = "2")]
15766    pub status: ::core::option::Option<i32>,
15767}
15768#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15769pub struct SamsungTracingMarkWriteFtraceEvent {
15770    #[prost(int32, optional, tag = "1")]
15771    pub pid: ::core::option::Option<i32>,
15772    #[prost(string, optional, tag = "2")]
15773    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15774    #[prost(uint32, optional, tag = "3")]
15775    pub trace_begin: ::core::option::Option<u32>,
15776    #[prost(uint32, optional, tag = "4")]
15777    pub trace_type: ::core::option::Option<u32>,
15778    #[prost(int32, optional, tag = "5")]
15779    pub value: ::core::option::Option<i32>,
15780}
15781#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15782pub struct SchedSwitchFtraceEvent {
15783    #[prost(string, optional, tag = "1")]
15784    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15785    #[prost(int32, optional, tag = "2")]
15786    pub prev_pid: ::core::option::Option<i32>,
15787    #[prost(int32, optional, tag = "3")]
15788    pub prev_prio: ::core::option::Option<i32>,
15789    #[prost(int64, optional, tag = "4")]
15790    pub prev_state: ::core::option::Option<i64>,
15791    #[prost(string, optional, tag = "5")]
15792    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15793    #[prost(int32, optional, tag = "6")]
15794    pub next_pid: ::core::option::Option<i32>,
15795    #[prost(int32, optional, tag = "7")]
15796    pub next_prio: ::core::option::Option<i32>,
15797}
15798#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15799pub struct SchedWakeupFtraceEvent {
15800    #[prost(string, optional, tag = "1")]
15801    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15802    #[prost(int32, optional, tag = "2")]
15803    pub pid: ::core::option::Option<i32>,
15804    #[prost(int32, optional, tag = "3")]
15805    pub prio: ::core::option::Option<i32>,
15806    #[prost(int32, optional, tag = "4")]
15807    pub success: ::core::option::Option<i32>,
15808    #[prost(int32, optional, tag = "5")]
15809    pub target_cpu: ::core::option::Option<i32>,
15810}
15811#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15812pub struct SchedBlockedReasonFtraceEvent {
15813    #[prost(int32, optional, tag = "1")]
15814    pub pid: ::core::option::Option<i32>,
15815    #[prost(uint64, optional, tag = "2")]
15816    pub caller: ::core::option::Option<u64>,
15817    #[prost(uint32, optional, tag = "3")]
15818    pub io_wait: ::core::option::Option<u32>,
15819}
15820#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15821pub struct SchedCpuHotplugFtraceEvent {
15822    #[prost(int32, optional, tag = "1")]
15823    pub affected_cpu: ::core::option::Option<i32>,
15824    #[prost(int32, optional, tag = "2")]
15825    pub error: ::core::option::Option<i32>,
15826    #[prost(int32, optional, tag = "3")]
15827    pub status: ::core::option::Option<i32>,
15828}
15829#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15830pub struct SchedWakingFtraceEvent {
15831    #[prost(string, optional, tag = "1")]
15832    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15833    #[prost(int32, optional, tag = "2")]
15834    pub pid: ::core::option::Option<i32>,
15835    #[prost(int32, optional, tag = "3")]
15836    pub prio: ::core::option::Option<i32>,
15837    #[prost(int32, optional, tag = "4")]
15838    pub success: ::core::option::Option<i32>,
15839    #[prost(int32, optional, tag = "5")]
15840    pub target_cpu: ::core::option::Option<i32>,
15841}
15842#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15843pub struct SchedWakeupNewFtraceEvent {
15844    #[prost(string, optional, tag = "1")]
15845    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15846    #[prost(int32, optional, tag = "2")]
15847    pub pid: ::core::option::Option<i32>,
15848    #[prost(int32, optional, tag = "3")]
15849    pub prio: ::core::option::Option<i32>,
15850    #[prost(int32, optional, tag = "4")]
15851    pub success: ::core::option::Option<i32>,
15852    #[prost(int32, optional, tag = "5")]
15853    pub target_cpu: ::core::option::Option<i32>,
15854}
15855#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15856pub struct SchedProcessExecFtraceEvent {
15857    #[prost(string, optional, tag = "1")]
15858    pub filename: ::core::option::Option<::prost::alloc::string::String>,
15859    #[prost(int32, optional, tag = "2")]
15860    pub pid: ::core::option::Option<i32>,
15861    #[prost(int32, optional, tag = "3")]
15862    pub old_pid: ::core::option::Option<i32>,
15863}
15864#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15865pub struct SchedProcessExitFtraceEvent {
15866    #[prost(string, optional, tag = "1")]
15867    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15868    #[prost(int32, optional, tag = "2")]
15869    pub pid: ::core::option::Option<i32>,
15870    #[prost(int32, optional, tag = "3")]
15871    pub tgid: ::core::option::Option<i32>,
15872    #[prost(int32, optional, tag = "4")]
15873    pub prio: ::core::option::Option<i32>,
15874}
15875#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15876pub struct SchedProcessForkFtraceEvent {
15877    #[prost(string, optional, tag = "1")]
15878    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15879    #[prost(int32, optional, tag = "2")]
15880    pub parent_pid: ::core::option::Option<i32>,
15881    #[prost(string, optional, tag = "3")]
15882    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15883    #[prost(int32, optional, tag = "4")]
15884    pub child_pid: ::core::option::Option<i32>,
15885}
15886#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15887pub struct SchedProcessFreeFtraceEvent {
15888    #[prost(string, optional, tag = "1")]
15889    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15890    #[prost(int32, optional, tag = "2")]
15891    pub pid: ::core::option::Option<i32>,
15892    #[prost(int32, optional, tag = "3")]
15893    pub prio: ::core::option::Option<i32>,
15894}
15895#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15896pub struct SchedProcessHangFtraceEvent {
15897    #[prost(string, optional, tag = "1")]
15898    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15899    #[prost(int32, optional, tag = "2")]
15900    pub pid: ::core::option::Option<i32>,
15901}
15902#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15903pub struct SchedProcessWaitFtraceEvent {
15904    #[prost(string, optional, tag = "1")]
15905    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15906    #[prost(int32, optional, tag = "2")]
15907    pub pid: ::core::option::Option<i32>,
15908    #[prost(int32, optional, tag = "3")]
15909    pub prio: ::core::option::Option<i32>,
15910}
15911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15912pub struct SchedPiSetprioFtraceEvent {
15913    #[prost(string, optional, tag = "1")]
15914    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15915    #[prost(int32, optional, tag = "2")]
15916    pub newprio: ::core::option::Option<i32>,
15917    #[prost(int32, optional, tag = "3")]
15918    pub oldprio: ::core::option::Option<i32>,
15919    #[prost(int32, optional, tag = "4")]
15920    pub pid: ::core::option::Option<i32>,
15921}
15922#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15923pub struct SchedCpuUtilCfsFtraceEvent {
15924    #[prost(int32, optional, tag = "1")]
15925    pub active: ::core::option::Option<i32>,
15926    #[prost(uint64, optional, tag = "2")]
15927    pub capacity: ::core::option::Option<u64>,
15928    #[prost(uint64, optional, tag = "3")]
15929    pub capacity_orig: ::core::option::Option<u64>,
15930    #[prost(uint32, optional, tag = "4")]
15931    pub cpu: ::core::option::Option<u32>,
15932    #[prost(uint64, optional, tag = "5")]
15933    pub cpu_importance: ::core::option::Option<u64>,
15934    #[prost(uint64, optional, tag = "6")]
15935    pub cpu_util: ::core::option::Option<u64>,
15936    #[prost(uint32, optional, tag = "7")]
15937    pub exit_lat: ::core::option::Option<u32>,
15938    #[prost(uint64, optional, tag = "8")]
15939    pub group_capacity: ::core::option::Option<u64>,
15940    #[prost(uint32, optional, tag = "9")]
15941    pub grp_overutilized: ::core::option::Option<u32>,
15942    #[prost(uint32, optional, tag = "10")]
15943    pub idle_cpu: ::core::option::Option<u32>,
15944    #[prost(uint32, optional, tag = "11")]
15945    pub nr_running: ::core::option::Option<u32>,
15946    #[prost(int64, optional, tag = "12")]
15947    pub spare_cap: ::core::option::Option<i64>,
15948    #[prost(uint32, optional, tag = "13")]
15949    pub task_fits: ::core::option::Option<u32>,
15950    #[prost(uint64, optional, tag = "14")]
15951    pub wake_group_util: ::core::option::Option<u64>,
15952    #[prost(uint64, optional, tag = "15")]
15953    pub wake_util: ::core::option::Option<u64>,
15954}
15955#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15956pub struct SchedMigrateTaskFtraceEvent {
15957    #[prost(string, optional, tag = "1")]
15958    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15959    #[prost(int32, optional, tag = "2")]
15960    pub pid: ::core::option::Option<i32>,
15961    #[prost(int32, optional, tag = "3")]
15962    pub prio: ::core::option::Option<i32>,
15963    #[prost(int32, optional, tag = "4")]
15964    pub orig_cpu: ::core::option::Option<i32>,
15965    #[prost(int32, optional, tag = "5")]
15966    pub dest_cpu: ::core::option::Option<i32>,
15967    #[prost(int32, optional, tag = "6")]
15968    pub running: ::core::option::Option<i32>,
15969    #[prost(uint32, optional, tag = "7")]
15970    pub load: ::core::option::Option<u32>,
15971}
15972#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15973pub struct SchedWakeupTaskAttrFtraceEvent {
15974    #[prost(int32, optional, tag = "1")]
15975    pub pid: ::core::option::Option<i32>,
15976    #[prost(uint64, optional, tag = "2")]
15977    pub cpu_affinity: ::core::option::Option<u64>,
15978    #[prost(uint64, optional, tag = "3")]
15979    pub task_util: ::core::option::Option<u64>,
15980    #[prost(uint64, optional, tag = "4")]
15981    pub uclamp_min: ::core::option::Option<u64>,
15982    #[prost(uint64, optional, tag = "5")]
15983    pub vruntime: ::core::option::Option<u64>,
15984    #[prost(uint64, optional, tag = "6")]
15985    pub sched_qos_user_defined_flag: ::core::option::Option<u64>,
15986    #[prost(uint32, optional, tag = "7")]
15987    pub rampup_multiplier: ::core::option::Option<u32>,
15988    #[prost(uint32, optional, tag = "8")]
15989    pub effect_rampup_multiplier: ::core::option::Option<u32>,
15990    #[prost(int32, optional, tag = "9")]
15991    pub tag_nice: ::core::option::Option<i32>,
15992}
15993#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15994pub struct SchedGroupTrackerFtraceEvent {
15995    #[prost(string, optional, tag = "1")]
15996    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15997    #[prost(int32, optional, tag = "2")]
15998    pub pid: ::core::option::Option<i32>,
15999    #[prost(string, optional, tag = "3")]
16000    pub group: ::core::option::Option<::prost::alloc::string::String>,
16001    #[prost(int32, optional, tag = "4")]
16002    pub group_num: ::core::option::Option<i32>,
16003}
16004#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16005pub struct ScmCallStartFtraceEvent {
16006    #[prost(uint32, optional, tag = "1")]
16007    pub arginfo: ::core::option::Option<u32>,
16008    #[prost(uint64, optional, tag = "2")]
16009    pub x0: ::core::option::Option<u64>,
16010    #[prost(uint64, optional, tag = "3")]
16011    pub x5: ::core::option::Option<u64>,
16012}
16013#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16014pub struct ScmCallEndFtraceEvent {}
16015#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16016pub struct ScsiDispatchCmdErrorFtraceEvent {
16017    #[prost(uint32, optional, tag = "1")]
16018    pub host_no: ::core::option::Option<u32>,
16019    #[prost(uint32, optional, tag = "2")]
16020    pub channel: ::core::option::Option<u32>,
16021    #[prost(uint32, optional, tag = "3")]
16022    pub id: ::core::option::Option<u32>,
16023    #[prost(uint32, optional, tag = "4")]
16024    pub lun: ::core::option::Option<u32>,
16025    #[prost(int32, optional, tag = "5")]
16026    pub rtn: ::core::option::Option<i32>,
16027    #[prost(uint32, optional, tag = "6")]
16028    pub opcode: ::core::option::Option<u32>,
16029    #[prost(uint32, optional, tag = "7")]
16030    pub cmd_len: ::core::option::Option<u32>,
16031    #[prost(uint32, optional, tag = "8")]
16032    pub data_sglen: ::core::option::Option<u32>,
16033    #[prost(uint32, optional, tag = "9")]
16034    pub prot_sglen: ::core::option::Option<u32>,
16035    #[prost(uint32, optional, tag = "10")]
16036    pub prot_op: ::core::option::Option<u32>,
16037    #[prost(int32, optional, tag = "12")]
16038    pub driver_tag: ::core::option::Option<i32>,
16039    #[prost(int32, optional, tag = "13")]
16040    pub scheduler_tag: ::core::option::Option<i32>,
16041    #[prost(bytes = "vec", optional, tag = "14")]
16042    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16043}
16044#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16045pub struct ScsiDispatchCmdTimeoutFtraceEvent {
16046    #[prost(uint32, optional, tag = "1")]
16047    pub host_no: ::core::option::Option<u32>,
16048    #[prost(uint32, optional, tag = "2")]
16049    pub channel: ::core::option::Option<u32>,
16050    #[prost(uint32, optional, tag = "3")]
16051    pub id: ::core::option::Option<u32>,
16052    #[prost(uint32, optional, tag = "4")]
16053    pub lun: ::core::option::Option<u32>,
16054    #[prost(int32, optional, tag = "5")]
16055    pub result: ::core::option::Option<i32>,
16056    #[prost(uint32, optional, tag = "6")]
16057    pub opcode: ::core::option::Option<u32>,
16058    #[prost(uint32, optional, tag = "7")]
16059    pub cmd_len: ::core::option::Option<u32>,
16060    #[prost(uint32, optional, tag = "8")]
16061    pub data_sglen: ::core::option::Option<u32>,
16062    #[prost(uint32, optional, tag = "9")]
16063    pub prot_sglen: ::core::option::Option<u32>,
16064    #[prost(uint32, optional, tag = "10")]
16065    pub prot_op: ::core::option::Option<u32>,
16066    #[prost(int32, optional, tag = "12")]
16067    pub driver_tag: ::core::option::Option<i32>,
16068    #[prost(int32, optional, tag = "13")]
16069    pub scheduler_tag: ::core::option::Option<i32>,
16070    #[prost(uint32, optional, tag = "14")]
16071    pub sense_key: ::core::option::Option<u32>,
16072    #[prost(uint32, optional, tag = "15")]
16073    pub asc: ::core::option::Option<u32>,
16074    #[prost(uint32, optional, tag = "16")]
16075    pub ascq: ::core::option::Option<u32>,
16076    #[prost(bytes = "vec", optional, tag = "17")]
16077    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16078}
16079#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16080pub struct ScsiEhWakeupFtraceEvent {
16081    #[prost(uint32, optional, tag = "1")]
16082    pub host_no: ::core::option::Option<u32>,
16083}
16084#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16085pub struct SdeTracingMarkWriteFtraceEvent {
16086    #[prost(int32, optional, tag = "1")]
16087    pub pid: ::core::option::Option<i32>,
16088    #[prost(string, optional, tag = "2")]
16089    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16090    #[prost(uint32, optional, tag = "3")]
16091    pub trace_type: ::core::option::Option<u32>,
16092    #[prost(int32, optional, tag = "4")]
16093    pub value: ::core::option::Option<i32>,
16094    #[prost(uint32, optional, tag = "5")]
16095    pub trace_begin: ::core::option::Option<u32>,
16096}
16097#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16098pub struct SdeSdeEvtlogFtraceEvent {
16099    #[prost(string, optional, tag = "1")]
16100    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
16101    #[prost(int32, optional, tag = "2")]
16102    pub pid: ::core::option::Option<i32>,
16103    #[prost(uint32, optional, tag = "3")]
16104    pub tag_id: ::core::option::Option<u32>,
16105    #[prost(uint32, optional, tag = "4")]
16106    pub d00: ::core::option::Option<u32>,
16107    #[prost(uint32, optional, tag = "5")]
16108    pub d01: ::core::option::Option<u32>,
16109    #[prost(uint32, optional, tag = "6")]
16110    pub d02: ::core::option::Option<u32>,
16111    #[prost(uint32, optional, tag = "7")]
16112    pub d03: ::core::option::Option<u32>,
16113    #[prost(uint32, optional, tag = "8")]
16114    pub d04: ::core::option::Option<u32>,
16115    #[prost(uint32, optional, tag = "9")]
16116    pub d05: ::core::option::Option<u32>,
16117    #[prost(uint32, optional, tag = "10")]
16118    pub d06: ::core::option::Option<u32>,
16119    #[prost(uint32, optional, tag = "11")]
16120    pub d07: ::core::option::Option<u32>,
16121    #[prost(uint32, optional, tag = "12")]
16122    pub d08: ::core::option::Option<u32>,
16123    #[prost(uint32, optional, tag = "13")]
16124    pub d09: ::core::option::Option<u32>,
16125    #[prost(uint32, optional, tag = "14")]
16126    pub d10: ::core::option::Option<u32>,
16127    #[prost(uint32, optional, tag = "15")]
16128    pub d11: ::core::option::Option<u32>,
16129    #[prost(uint32, optional, tag = "16")]
16130    pub d12: ::core::option::Option<u32>,
16131    #[prost(uint32, optional, tag = "17")]
16132    pub d13: ::core::option::Option<u32>,
16133    #[prost(uint32, optional, tag = "18")]
16134    pub d14: ::core::option::Option<u32>,
16135}
16136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16137pub struct SdeSdePerfCalcCrtcFtraceEvent {
16138    #[prost(uint64, optional, tag = "1")]
16139    pub bw_ctl_ebi: ::core::option::Option<u64>,
16140    #[prost(uint64, optional, tag = "2")]
16141    pub bw_ctl_llcc: ::core::option::Option<u64>,
16142    #[prost(uint64, optional, tag = "3")]
16143    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16144    #[prost(uint32, optional, tag = "4")]
16145    pub core_clk_rate: ::core::option::Option<u32>,
16146    #[prost(uint32, optional, tag = "5")]
16147    pub crtc: ::core::option::Option<u32>,
16148    #[prost(uint64, optional, tag = "6")]
16149    pub ib_ebi: ::core::option::Option<u64>,
16150    #[prost(uint64, optional, tag = "7")]
16151    pub ib_llcc: ::core::option::Option<u64>,
16152    #[prost(uint64, optional, tag = "8")]
16153    pub ib_mnoc: ::core::option::Option<u64>,
16154}
16155#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16156pub struct SdeSdePerfCrtcUpdateFtraceEvent {
16157    #[prost(uint64, optional, tag = "1")]
16158    pub bw_ctl_ebi: ::core::option::Option<u64>,
16159    #[prost(uint64, optional, tag = "2")]
16160    pub bw_ctl_llcc: ::core::option::Option<u64>,
16161    #[prost(uint64, optional, tag = "3")]
16162    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16163    #[prost(uint32, optional, tag = "4")]
16164    pub core_clk_rate: ::core::option::Option<u32>,
16165    #[prost(uint32, optional, tag = "5")]
16166    pub crtc: ::core::option::Option<u32>,
16167    #[prost(int32, optional, tag = "6")]
16168    pub params: ::core::option::Option<i32>,
16169    #[prost(uint64, optional, tag = "7")]
16170    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
16171    #[prost(uint64, optional, tag = "8")]
16172    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
16173    #[prost(uint64, optional, tag = "9")]
16174    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
16175    #[prost(uint32, optional, tag = "10")]
16176    pub stop_req: ::core::option::Option<u32>,
16177    #[prost(uint32, optional, tag = "11")]
16178    pub update_bus: ::core::option::Option<u32>,
16179    #[prost(uint32, optional, tag = "12")]
16180    pub update_clk: ::core::option::Option<u32>,
16181}
16182#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16183pub struct SdeSdePerfSetQosLutsFtraceEvent {
16184    #[prost(uint32, optional, tag = "1")]
16185    pub fl: ::core::option::Option<u32>,
16186    #[prost(uint32, optional, tag = "2")]
16187    pub fmt: ::core::option::Option<u32>,
16188    #[prost(uint64, optional, tag = "3")]
16189    pub lut: ::core::option::Option<u64>,
16190    #[prost(uint32, optional, tag = "4")]
16191    pub lut_usage: ::core::option::Option<u32>,
16192    #[prost(uint32, optional, tag = "5")]
16193    pub pnum: ::core::option::Option<u32>,
16194    #[prost(uint32, optional, tag = "6")]
16195    pub rt: ::core::option::Option<u32>,
16196}
16197#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16198pub struct SdeSdePerfUpdateBusFtraceEvent {
16199    #[prost(uint64, optional, tag = "1")]
16200    pub ab_quota: ::core::option::Option<u64>,
16201    #[prost(uint32, optional, tag = "2")]
16202    pub bus_id: ::core::option::Option<u32>,
16203    #[prost(int32, optional, tag = "3")]
16204    pub client: ::core::option::Option<i32>,
16205    #[prost(uint64, optional, tag = "4")]
16206    pub ib_quota: ::core::option::Option<u64>,
16207}
16208#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16209pub struct SignalDeliverFtraceEvent {
16210    #[prost(int32, optional, tag = "1")]
16211    pub code: ::core::option::Option<i32>,
16212    #[prost(uint64, optional, tag = "2")]
16213    pub sa_flags: ::core::option::Option<u64>,
16214    #[prost(int32, optional, tag = "3")]
16215    pub sig: ::core::option::Option<i32>,
16216}
16217#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16218pub struct SignalGenerateFtraceEvent {
16219    #[prost(int32, optional, tag = "1")]
16220    pub code: ::core::option::Option<i32>,
16221    #[prost(string, optional, tag = "2")]
16222    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16223    #[prost(int32, optional, tag = "3")]
16224    pub group: ::core::option::Option<i32>,
16225    #[prost(int32, optional, tag = "4")]
16226    pub pid: ::core::option::Option<i32>,
16227    #[prost(int32, optional, tag = "5")]
16228    pub result: ::core::option::Option<i32>,
16229    #[prost(int32, optional, tag = "6")]
16230    pub sig: ::core::option::Option<i32>,
16231}
16232#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16233pub struct KfreeSkbFtraceEvent {
16234    #[prost(uint64, optional, tag = "1")]
16235    pub location: ::core::option::Option<u64>,
16236    #[prost(uint32, optional, tag = "2")]
16237    pub protocol: ::core::option::Option<u32>,
16238    #[prost(uint64, optional, tag = "3")]
16239    pub skbaddr: ::core::option::Option<u64>,
16240}
16241#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16242pub struct InetSockSetStateFtraceEvent {
16243    #[prost(uint32, optional, tag = "1")]
16244    pub daddr: ::core::option::Option<u32>,
16245    #[prost(uint32, optional, tag = "2")]
16246    pub dport: ::core::option::Option<u32>,
16247    #[prost(uint32, optional, tag = "3")]
16248    pub family: ::core::option::Option<u32>,
16249    #[prost(int32, optional, tag = "4")]
16250    pub newstate: ::core::option::Option<i32>,
16251    #[prost(int32, optional, tag = "5")]
16252    pub oldstate: ::core::option::Option<i32>,
16253    #[prost(uint32, optional, tag = "6")]
16254    pub protocol: ::core::option::Option<u32>,
16255    #[prost(uint32, optional, tag = "7")]
16256    pub saddr: ::core::option::Option<u32>,
16257    #[prost(uint64, optional, tag = "8")]
16258    pub skaddr: ::core::option::Option<u64>,
16259    #[prost(uint32, optional, tag = "9")]
16260    pub sport: ::core::option::Option<u32>,
16261}
16262#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16263pub struct SyncPtFtraceEvent {
16264    #[prost(string, optional, tag = "1")]
16265    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
16266    #[prost(string, optional, tag = "2")]
16267    pub value: ::core::option::Option<::prost::alloc::string::String>,
16268}
16269#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16270pub struct SyncTimelineFtraceEvent {
16271    #[prost(string, optional, tag = "1")]
16272    pub name: ::core::option::Option<::prost::alloc::string::String>,
16273    #[prost(string, optional, tag = "2")]
16274    pub value: ::core::option::Option<::prost::alloc::string::String>,
16275}
16276#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16277pub struct SyncWaitFtraceEvent {
16278    #[prost(string, optional, tag = "1")]
16279    pub name: ::core::option::Option<::prost::alloc::string::String>,
16280    #[prost(int32, optional, tag = "2")]
16281    pub status: ::core::option::Option<i32>,
16282    #[prost(uint32, optional, tag = "3")]
16283    pub begin: ::core::option::Option<u32>,
16284}
16285#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16286pub struct RssStatThrottledFtraceEvent {
16287    #[prost(uint32, optional, tag = "1")]
16288    pub curr: ::core::option::Option<u32>,
16289    #[prost(int32, optional, tag = "2")]
16290    pub member: ::core::option::Option<i32>,
16291    #[prost(uint32, optional, tag = "3")]
16292    pub mm_id: ::core::option::Option<u32>,
16293    #[prost(int64, optional, tag = "4")]
16294    pub size: ::core::option::Option<i64>,
16295}
16296#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16297pub struct SuspendResumeMinimalFtraceEvent {
16298    #[prost(uint32, optional, tag = "1")]
16299    pub start: ::core::option::Option<u32>,
16300}
16301#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16302pub struct ZeroFtraceEvent {
16303    #[prost(int32, optional, tag = "1")]
16304    pub flag: ::core::option::Option<i32>,
16305    #[prost(string, optional, tag = "2")]
16306    pub name: ::core::option::Option<::prost::alloc::string::String>,
16307    #[prost(int32, optional, tag = "3")]
16308    pub pid: ::core::option::Option<i32>,
16309    #[prost(int64, optional, tag = "4")]
16310    pub value: ::core::option::Option<i64>,
16311}
16312#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16313pub struct TaskNewtaskFtraceEvent {
16314    #[prost(int32, optional, tag = "1")]
16315    pub pid: ::core::option::Option<i32>,
16316    #[prost(string, optional, tag = "2")]
16317    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16318    #[prost(uint64, optional, tag = "3")]
16319    pub clone_flags: ::core::option::Option<u64>,
16320    #[prost(int32, optional, tag = "4")]
16321    pub oom_score_adj: ::core::option::Option<i32>,
16322}
16323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16324pub struct TaskRenameFtraceEvent {
16325    #[prost(int32, optional, tag = "1")]
16326    pub pid: ::core::option::Option<i32>,
16327    #[prost(string, optional, tag = "2")]
16328    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
16329    #[prost(string, optional, tag = "3")]
16330    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
16331    #[prost(int32, optional, tag = "4")]
16332    pub oom_score_adj: ::core::option::Option<i32>,
16333}
16334#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16335pub struct TcpRetransmitSkbFtraceEvent {
16336    #[prost(uint32, optional, tag = "1")]
16337    pub daddr: ::core::option::Option<u32>,
16338    #[prost(uint32, optional, tag = "2")]
16339    pub dport: ::core::option::Option<u32>,
16340    #[prost(uint32, optional, tag = "3")]
16341    pub saddr: ::core::option::Option<u32>,
16342    #[prost(uint64, optional, tag = "4")]
16343    pub skaddr: ::core::option::Option<u64>,
16344    #[prost(uint64, optional, tag = "5")]
16345    pub skbaddr: ::core::option::Option<u64>,
16346    #[prost(uint32, optional, tag = "6")]
16347    pub sport: ::core::option::Option<u32>,
16348    #[prost(int32, optional, tag = "7")]
16349    pub state: ::core::option::Option<i32>,
16350}
16351#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16352pub struct ThermalTemperatureFtraceEvent {
16353    #[prost(int32, optional, tag = "1")]
16354    pub id: ::core::option::Option<i32>,
16355    #[prost(int32, optional, tag = "2")]
16356    pub temp: ::core::option::Option<i32>,
16357    #[prost(int32, optional, tag = "3")]
16358    pub temp_prev: ::core::option::Option<i32>,
16359    #[prost(string, optional, tag = "4")]
16360    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
16361}
16362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16363pub struct CdevUpdateFtraceEvent {
16364    #[prost(uint64, optional, tag = "1")]
16365    pub target: ::core::option::Option<u64>,
16366    #[prost(string, optional, tag = "2")]
16367    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
16368}
16369#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16370pub struct ThermalExynosAcpmBulkFtraceEvent {
16371    #[prost(uint32, optional, tag = "1")]
16372    pub tz_id: ::core::option::Option<u32>,
16373    #[prost(uint32, optional, tag = "2")]
16374    pub current_temp: ::core::option::Option<u32>,
16375    #[prost(uint32, optional, tag = "3")]
16376    pub ctrl_temp: ::core::option::Option<u32>,
16377    #[prost(uint32, optional, tag = "4")]
16378    pub cdev_state: ::core::option::Option<u32>,
16379    #[prost(int32, optional, tag = "5")]
16380    pub pid_et_p: ::core::option::Option<i32>,
16381    #[prost(int32, optional, tag = "6")]
16382    pub pid_power_range: ::core::option::Option<i32>,
16383    #[prost(int32, optional, tag = "7")]
16384    pub pid_p: ::core::option::Option<i32>,
16385    #[prost(int32, optional, tag = "8")]
16386    pub pid_i: ::core::option::Option<i32>,
16387    #[prost(int32, optional, tag = "9")]
16388    pub k_p: ::core::option::Option<i32>,
16389    #[prost(int32, optional, tag = "10")]
16390    pub k_i: ::core::option::Option<i32>,
16391    #[prost(uint64, optional, tag = "11")]
16392    pub timestamp: ::core::option::Option<u64>,
16393}
16394#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16395pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
16396    #[prost(int32, optional, tag = "1")]
16397    pub tz_id: ::core::option::Option<i32>,
16398    #[prost(uint32, optional, tag = "2")]
16399    pub current_temp: ::core::option::Option<u32>,
16400    #[prost(uint32, optional, tag = "3")]
16401    pub ctrl_temp: ::core::option::Option<u32>,
16402    #[prost(uint32, optional, tag = "4")]
16403    pub cdev_state: ::core::option::Option<u32>,
16404    #[prost(int32, optional, tag = "5")]
16405    pub pid_et_p: ::core::option::Option<i32>,
16406    #[prost(int32, optional, tag = "6")]
16407    pub k_p: ::core::option::Option<i32>,
16408    #[prost(int32, optional, tag = "7")]
16409    pub k_i: ::core::option::Option<i32>,
16410}
16411#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16412pub struct HrtimerStartFtraceEvent {
16413    #[prost(uint64, optional, tag = "1")]
16414    pub hrtimer: ::core::option::Option<u64>,
16415    #[prost(uint64, optional, tag = "2")]
16416    pub function: ::core::option::Option<u64>,
16417    #[prost(int64, optional, tag = "3")]
16418    pub expires: ::core::option::Option<i64>,
16419    #[prost(int64, optional, tag = "4")]
16420    pub softexpires: ::core::option::Option<i64>,
16421    #[prost(uint32, optional, tag = "5")]
16422    pub mode: ::core::option::Option<u32>,
16423}
16424#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16425pub struct HrtimerCancelFtraceEvent {
16426    #[prost(uint64, optional, tag = "1")]
16427    pub hrtimer: ::core::option::Option<u64>,
16428}
16429#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16430pub struct HrtimerExpireEntryFtraceEvent {
16431    #[prost(uint64, optional, tag = "1")]
16432    pub hrtimer: ::core::option::Option<u64>,
16433    #[prost(int64, optional, tag = "2")]
16434    pub now: ::core::option::Option<i64>,
16435    #[prost(uint64, optional, tag = "3")]
16436    pub function: ::core::option::Option<u64>,
16437}
16438#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16439pub struct HrtimerExpireExitFtraceEvent {
16440    #[prost(uint64, optional, tag = "1")]
16441    pub hrtimer: ::core::option::Option<u64>,
16442}
16443#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16444pub struct TimerStartFtraceEvent {
16445    #[prost(uint64, optional, tag = "1")]
16446    pub timer: ::core::option::Option<u64>,
16447    #[prost(uint64, optional, tag = "2")]
16448    pub function: ::core::option::Option<u64>,
16449    #[prost(uint64, optional, tag = "3")]
16450    pub expires: ::core::option::Option<u64>,
16451    #[prost(uint64, optional, tag = "4")]
16452    pub now: ::core::option::Option<u64>,
16453    #[prost(uint32, optional, tag = "5")]
16454    pub deferrable: ::core::option::Option<u32>,
16455    #[prost(uint32, optional, tag = "6")]
16456    pub flags: ::core::option::Option<u32>,
16457    #[prost(uint64, optional, tag = "7")]
16458    pub bucket_expiry: ::core::option::Option<u64>,
16459}
16460#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16461pub struct TimerCancelFtraceEvent {
16462    #[prost(uint64, optional, tag = "1")]
16463    pub timer: ::core::option::Option<u64>,
16464}
16465#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16466pub struct TimerExpireEntryFtraceEvent {
16467    #[prost(uint64, optional, tag = "1")]
16468    pub timer: ::core::option::Option<u64>,
16469    #[prost(uint64, optional, tag = "2")]
16470    pub now: ::core::option::Option<u64>,
16471    #[prost(uint64, optional, tag = "3")]
16472    pub function: ::core::option::Option<u64>,
16473    #[prost(uint64, optional, tag = "4")]
16474    pub baseclk: ::core::option::Option<u64>,
16475}
16476#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16477pub struct TimerExpireExitFtraceEvent {
16478    #[prost(uint64, optional, tag = "1")]
16479    pub timer: ::core::option::Option<u64>,
16480}
16481#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16482pub struct TrustySmcFtraceEvent {
16483    #[prost(uint64, optional, tag = "1")]
16484    pub r0: ::core::option::Option<u64>,
16485    #[prost(uint64, optional, tag = "2")]
16486    pub r1: ::core::option::Option<u64>,
16487    #[prost(uint64, optional, tag = "3")]
16488    pub r2: ::core::option::Option<u64>,
16489    #[prost(uint64, optional, tag = "4")]
16490    pub r3: ::core::option::Option<u64>,
16491}
16492#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16493pub struct TrustySmcDoneFtraceEvent {
16494    #[prost(uint64, optional, tag = "1")]
16495    pub ret: ::core::option::Option<u64>,
16496}
16497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16498pub struct TrustyStdCall32FtraceEvent {
16499    #[prost(uint64, optional, tag = "1")]
16500    pub r0: ::core::option::Option<u64>,
16501    #[prost(uint64, optional, tag = "2")]
16502    pub r1: ::core::option::Option<u64>,
16503    #[prost(uint64, optional, tag = "3")]
16504    pub r2: ::core::option::Option<u64>,
16505    #[prost(uint64, optional, tag = "4")]
16506    pub r3: ::core::option::Option<u64>,
16507}
16508#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16509pub struct TrustyStdCall32DoneFtraceEvent {
16510    #[prost(int64, optional, tag = "1")]
16511    pub ret: ::core::option::Option<i64>,
16512}
16513#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16514pub struct TrustyShareMemoryFtraceEvent {
16515    #[prost(uint64, optional, tag = "1")]
16516    pub len: ::core::option::Option<u64>,
16517    #[prost(uint32, optional, tag = "2")]
16518    pub lend: ::core::option::Option<u32>,
16519    #[prost(uint32, optional, tag = "3")]
16520    pub nents: ::core::option::Option<u32>,
16521}
16522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16523pub struct TrustyShareMemoryDoneFtraceEvent {
16524    #[prost(uint64, optional, tag = "1")]
16525    pub handle: ::core::option::Option<u64>,
16526    #[prost(uint64, optional, tag = "2")]
16527    pub len: ::core::option::Option<u64>,
16528    #[prost(uint32, optional, tag = "3")]
16529    pub lend: ::core::option::Option<u32>,
16530    #[prost(uint32, optional, tag = "4")]
16531    pub nents: ::core::option::Option<u32>,
16532    #[prost(int32, optional, tag = "5")]
16533    pub ret: ::core::option::Option<i32>,
16534}
16535#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16536pub struct TrustyReclaimMemoryFtraceEvent {
16537    #[prost(uint64, optional, tag = "1")]
16538    pub id: ::core::option::Option<u64>,
16539}
16540#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16541pub struct TrustyReclaimMemoryDoneFtraceEvent {
16542    #[prost(uint64, optional, tag = "1")]
16543    pub id: ::core::option::Option<u64>,
16544    #[prost(int32, optional, tag = "2")]
16545    pub ret: ::core::option::Option<i32>,
16546}
16547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16548pub struct TrustyIrqFtraceEvent {
16549    #[prost(int32, optional, tag = "1")]
16550    pub irq: ::core::option::Option<i32>,
16551}
16552#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16553pub struct TrustyIpcHandleEventFtraceEvent {
16554    #[prost(uint32, optional, tag = "1")]
16555    pub chan: ::core::option::Option<u32>,
16556    #[prost(uint32, optional, tag = "2")]
16557    pub event_id: ::core::option::Option<u32>,
16558    #[prost(string, optional, tag = "3")]
16559    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16560}
16561#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16562pub struct TrustyIpcConnectFtraceEvent {
16563    #[prost(uint32, optional, tag = "1")]
16564    pub chan: ::core::option::Option<u32>,
16565    #[prost(string, optional, tag = "2")]
16566    pub port: ::core::option::Option<::prost::alloc::string::String>,
16567    #[prost(int32, optional, tag = "3")]
16568    pub state: ::core::option::Option<i32>,
16569}
16570#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16571pub struct TrustyIpcConnectEndFtraceEvent {
16572    #[prost(uint32, optional, tag = "1")]
16573    pub chan: ::core::option::Option<u32>,
16574    #[prost(int32, optional, tag = "2")]
16575    pub err: ::core::option::Option<i32>,
16576    #[prost(int32, optional, tag = "3")]
16577    pub state: ::core::option::Option<i32>,
16578}
16579#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16580pub struct TrustyIpcWriteFtraceEvent {
16581    #[prost(uint64, optional, tag = "1")]
16582    pub buf_id: ::core::option::Option<u64>,
16583    #[prost(uint32, optional, tag = "2")]
16584    pub chan: ::core::option::Option<u32>,
16585    #[prost(int32, optional, tag = "3")]
16586    pub kind_shm: ::core::option::Option<i32>,
16587    #[prost(int32, optional, tag = "4")]
16588    pub len_or_err: ::core::option::Option<i32>,
16589    #[prost(uint64, optional, tag = "5")]
16590    pub shm_cnt: ::core::option::Option<u64>,
16591    #[prost(string, optional, tag = "6")]
16592    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16593}
16594#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16595pub struct TrustyIpcPollFtraceEvent {
16596    #[prost(uint32, optional, tag = "1")]
16597    pub chan: ::core::option::Option<u32>,
16598    #[prost(uint32, optional, tag = "2")]
16599    pub poll_mask: ::core::option::Option<u32>,
16600    #[prost(string, optional, tag = "3")]
16601    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16602}
16603#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16604pub struct TrustyIpcReadFtraceEvent {
16605    #[prost(uint32, optional, tag = "1")]
16606    pub chan: ::core::option::Option<u32>,
16607    #[prost(string, optional, tag = "2")]
16608    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16609}
16610#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16611pub struct TrustyIpcReadEndFtraceEvent {
16612    #[prost(uint64, optional, tag = "1")]
16613    pub buf_id: ::core::option::Option<u64>,
16614    #[prost(uint32, optional, tag = "2")]
16615    pub chan: ::core::option::Option<u32>,
16616    #[prost(int32, optional, tag = "3")]
16617    pub len_or_err: ::core::option::Option<i32>,
16618    #[prost(uint64, optional, tag = "4")]
16619    pub shm_cnt: ::core::option::Option<u64>,
16620    #[prost(string, optional, tag = "5")]
16621    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16622}
16623#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16624pub struct TrustyIpcRxFtraceEvent {
16625    #[prost(uint64, optional, tag = "1")]
16626    pub buf_id: ::core::option::Option<u64>,
16627    #[prost(uint32, optional, tag = "2")]
16628    pub chan: ::core::option::Option<u32>,
16629    #[prost(string, optional, tag = "3")]
16630    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16631}
16632#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16633pub struct TrustyEnqueueNopFtraceEvent {
16634    #[prost(uint32, optional, tag = "1")]
16635    pub arg1: ::core::option::Option<u32>,
16636    #[prost(uint32, optional, tag = "2")]
16637    pub arg2: ::core::option::Option<u32>,
16638    #[prost(uint32, optional, tag = "3")]
16639    pub arg3: ::core::option::Option<u32>,
16640}
16641#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16642pub struct UfshcdCommandFtraceEvent {
16643    #[prost(string, optional, tag = "1")]
16644    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16645    #[prost(uint32, optional, tag = "2")]
16646    pub doorbell: ::core::option::Option<u32>,
16647    #[prost(uint32, optional, tag = "3")]
16648    pub intr: ::core::option::Option<u32>,
16649    #[prost(uint64, optional, tag = "4")]
16650    pub lba: ::core::option::Option<u64>,
16651    #[prost(uint32, optional, tag = "5")]
16652    pub opcode: ::core::option::Option<u32>,
16653    #[prost(string, optional, tag = "6")]
16654    pub str: ::core::option::Option<::prost::alloc::string::String>,
16655    #[prost(uint32, optional, tag = "7")]
16656    pub tag: ::core::option::Option<u32>,
16657    #[prost(int32, optional, tag = "8")]
16658    pub transfer_len: ::core::option::Option<i32>,
16659    #[prost(uint32, optional, tag = "9")]
16660    pub group_id: ::core::option::Option<u32>,
16661    #[prost(uint32, optional, tag = "10")]
16662    pub str_t: ::core::option::Option<u32>,
16663}
16664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16665pub struct UfshcdClkGatingFtraceEvent {
16666    #[prost(string, optional, tag = "1")]
16667    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16668    #[prost(int32, optional, tag = "2")]
16669    pub state: ::core::option::Option<i32>,
16670}
16671#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16672pub struct V4l2QbufFtraceEvent {
16673    #[prost(uint32, optional, tag = "1")]
16674    pub bytesused: ::core::option::Option<u32>,
16675    #[prost(uint32, optional, tag = "2")]
16676    pub field: ::core::option::Option<u32>,
16677    #[prost(uint32, optional, tag = "3")]
16678    pub flags: ::core::option::Option<u32>,
16679    #[prost(uint32, optional, tag = "4")]
16680    pub index: ::core::option::Option<u32>,
16681    #[prost(int32, optional, tag = "5")]
16682    pub minor: ::core::option::Option<i32>,
16683    #[prost(uint32, optional, tag = "6")]
16684    pub sequence: ::core::option::Option<u32>,
16685    #[prost(uint32, optional, tag = "7")]
16686    pub timecode_flags: ::core::option::Option<u32>,
16687    #[prost(uint32, optional, tag = "8")]
16688    pub timecode_frames: ::core::option::Option<u32>,
16689    #[prost(uint32, optional, tag = "9")]
16690    pub timecode_hours: ::core::option::Option<u32>,
16691    #[prost(uint32, optional, tag = "10")]
16692    pub timecode_minutes: ::core::option::Option<u32>,
16693    #[prost(uint32, optional, tag = "11")]
16694    pub timecode_seconds: ::core::option::Option<u32>,
16695    #[prost(uint32, optional, tag = "12")]
16696    pub timecode_type: ::core::option::Option<u32>,
16697    #[prost(uint32, optional, tag = "13")]
16698    pub timecode_userbits0: ::core::option::Option<u32>,
16699    #[prost(uint32, optional, tag = "14")]
16700    pub timecode_userbits1: ::core::option::Option<u32>,
16701    #[prost(uint32, optional, tag = "15")]
16702    pub timecode_userbits2: ::core::option::Option<u32>,
16703    #[prost(uint32, optional, tag = "16")]
16704    pub timecode_userbits3: ::core::option::Option<u32>,
16705    #[prost(int64, optional, tag = "17")]
16706    pub timestamp: ::core::option::Option<i64>,
16707    #[prost(uint32, optional, tag = "18")]
16708    pub r#type: ::core::option::Option<u32>,
16709}
16710#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16711pub struct V4l2DqbufFtraceEvent {
16712    #[prost(uint32, optional, tag = "1")]
16713    pub bytesused: ::core::option::Option<u32>,
16714    #[prost(uint32, optional, tag = "2")]
16715    pub field: ::core::option::Option<u32>,
16716    #[prost(uint32, optional, tag = "3")]
16717    pub flags: ::core::option::Option<u32>,
16718    #[prost(uint32, optional, tag = "4")]
16719    pub index: ::core::option::Option<u32>,
16720    #[prost(int32, optional, tag = "5")]
16721    pub minor: ::core::option::Option<i32>,
16722    #[prost(uint32, optional, tag = "6")]
16723    pub sequence: ::core::option::Option<u32>,
16724    #[prost(uint32, optional, tag = "7")]
16725    pub timecode_flags: ::core::option::Option<u32>,
16726    #[prost(uint32, optional, tag = "8")]
16727    pub timecode_frames: ::core::option::Option<u32>,
16728    #[prost(uint32, optional, tag = "9")]
16729    pub timecode_hours: ::core::option::Option<u32>,
16730    #[prost(uint32, optional, tag = "10")]
16731    pub timecode_minutes: ::core::option::Option<u32>,
16732    #[prost(uint32, optional, tag = "11")]
16733    pub timecode_seconds: ::core::option::Option<u32>,
16734    #[prost(uint32, optional, tag = "12")]
16735    pub timecode_type: ::core::option::Option<u32>,
16736    #[prost(uint32, optional, tag = "13")]
16737    pub timecode_userbits0: ::core::option::Option<u32>,
16738    #[prost(uint32, optional, tag = "14")]
16739    pub timecode_userbits1: ::core::option::Option<u32>,
16740    #[prost(uint32, optional, tag = "15")]
16741    pub timecode_userbits2: ::core::option::Option<u32>,
16742    #[prost(uint32, optional, tag = "16")]
16743    pub timecode_userbits3: ::core::option::Option<u32>,
16744    #[prost(int64, optional, tag = "17")]
16745    pub timestamp: ::core::option::Option<i64>,
16746    #[prost(uint32, optional, tag = "18")]
16747    pub r#type: ::core::option::Option<u32>,
16748}
16749#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16750pub struct Vb2V4l2BufQueueFtraceEvent {
16751    #[prost(uint32, optional, tag = "1")]
16752    pub field: ::core::option::Option<u32>,
16753    #[prost(uint32, optional, tag = "2")]
16754    pub flags: ::core::option::Option<u32>,
16755    #[prost(int32, optional, tag = "3")]
16756    pub minor: ::core::option::Option<i32>,
16757    #[prost(uint32, optional, tag = "4")]
16758    pub sequence: ::core::option::Option<u32>,
16759    #[prost(uint32, optional, tag = "5")]
16760    pub timecode_flags: ::core::option::Option<u32>,
16761    #[prost(uint32, optional, tag = "6")]
16762    pub timecode_frames: ::core::option::Option<u32>,
16763    #[prost(uint32, optional, tag = "7")]
16764    pub timecode_hours: ::core::option::Option<u32>,
16765    #[prost(uint32, optional, tag = "8")]
16766    pub timecode_minutes: ::core::option::Option<u32>,
16767    #[prost(uint32, optional, tag = "9")]
16768    pub timecode_seconds: ::core::option::Option<u32>,
16769    #[prost(uint32, optional, tag = "10")]
16770    pub timecode_type: ::core::option::Option<u32>,
16771    #[prost(uint32, optional, tag = "11")]
16772    pub timecode_userbits0: ::core::option::Option<u32>,
16773    #[prost(uint32, optional, tag = "12")]
16774    pub timecode_userbits1: ::core::option::Option<u32>,
16775    #[prost(uint32, optional, tag = "13")]
16776    pub timecode_userbits2: ::core::option::Option<u32>,
16777    #[prost(uint32, optional, tag = "14")]
16778    pub timecode_userbits3: ::core::option::Option<u32>,
16779    #[prost(int64, optional, tag = "15")]
16780    pub timestamp: ::core::option::Option<i64>,
16781}
16782#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16783pub struct Vb2V4l2BufDoneFtraceEvent {
16784    #[prost(uint32, optional, tag = "1")]
16785    pub field: ::core::option::Option<u32>,
16786    #[prost(uint32, optional, tag = "2")]
16787    pub flags: ::core::option::Option<u32>,
16788    #[prost(int32, optional, tag = "3")]
16789    pub minor: ::core::option::Option<i32>,
16790    #[prost(uint32, optional, tag = "4")]
16791    pub sequence: ::core::option::Option<u32>,
16792    #[prost(uint32, optional, tag = "5")]
16793    pub timecode_flags: ::core::option::Option<u32>,
16794    #[prost(uint32, optional, tag = "6")]
16795    pub timecode_frames: ::core::option::Option<u32>,
16796    #[prost(uint32, optional, tag = "7")]
16797    pub timecode_hours: ::core::option::Option<u32>,
16798    #[prost(uint32, optional, tag = "8")]
16799    pub timecode_minutes: ::core::option::Option<u32>,
16800    #[prost(uint32, optional, tag = "9")]
16801    pub timecode_seconds: ::core::option::Option<u32>,
16802    #[prost(uint32, optional, tag = "10")]
16803    pub timecode_type: ::core::option::Option<u32>,
16804    #[prost(uint32, optional, tag = "11")]
16805    pub timecode_userbits0: ::core::option::Option<u32>,
16806    #[prost(uint32, optional, tag = "12")]
16807    pub timecode_userbits1: ::core::option::Option<u32>,
16808    #[prost(uint32, optional, tag = "13")]
16809    pub timecode_userbits2: ::core::option::Option<u32>,
16810    #[prost(uint32, optional, tag = "14")]
16811    pub timecode_userbits3: ::core::option::Option<u32>,
16812    #[prost(int64, optional, tag = "15")]
16813    pub timestamp: ::core::option::Option<i64>,
16814}
16815#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16816pub struct Vb2V4l2QbufFtraceEvent {
16817    #[prost(uint32, optional, tag = "1")]
16818    pub field: ::core::option::Option<u32>,
16819    #[prost(uint32, optional, tag = "2")]
16820    pub flags: ::core::option::Option<u32>,
16821    #[prost(int32, optional, tag = "3")]
16822    pub minor: ::core::option::Option<i32>,
16823    #[prost(uint32, optional, tag = "4")]
16824    pub sequence: ::core::option::Option<u32>,
16825    #[prost(uint32, optional, tag = "5")]
16826    pub timecode_flags: ::core::option::Option<u32>,
16827    #[prost(uint32, optional, tag = "6")]
16828    pub timecode_frames: ::core::option::Option<u32>,
16829    #[prost(uint32, optional, tag = "7")]
16830    pub timecode_hours: ::core::option::Option<u32>,
16831    #[prost(uint32, optional, tag = "8")]
16832    pub timecode_minutes: ::core::option::Option<u32>,
16833    #[prost(uint32, optional, tag = "9")]
16834    pub timecode_seconds: ::core::option::Option<u32>,
16835    #[prost(uint32, optional, tag = "10")]
16836    pub timecode_type: ::core::option::Option<u32>,
16837    #[prost(uint32, optional, tag = "11")]
16838    pub timecode_userbits0: ::core::option::Option<u32>,
16839    #[prost(uint32, optional, tag = "12")]
16840    pub timecode_userbits1: ::core::option::Option<u32>,
16841    #[prost(uint32, optional, tag = "13")]
16842    pub timecode_userbits2: ::core::option::Option<u32>,
16843    #[prost(uint32, optional, tag = "14")]
16844    pub timecode_userbits3: ::core::option::Option<u32>,
16845    #[prost(int64, optional, tag = "15")]
16846    pub timestamp: ::core::option::Option<i64>,
16847}
16848#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16849pub struct Vb2V4l2DqbufFtraceEvent {
16850    #[prost(uint32, optional, tag = "1")]
16851    pub field: ::core::option::Option<u32>,
16852    #[prost(uint32, optional, tag = "2")]
16853    pub flags: ::core::option::Option<u32>,
16854    #[prost(int32, optional, tag = "3")]
16855    pub minor: ::core::option::Option<i32>,
16856    #[prost(uint32, optional, tag = "4")]
16857    pub sequence: ::core::option::Option<u32>,
16858    #[prost(uint32, optional, tag = "5")]
16859    pub timecode_flags: ::core::option::Option<u32>,
16860    #[prost(uint32, optional, tag = "6")]
16861    pub timecode_frames: ::core::option::Option<u32>,
16862    #[prost(uint32, optional, tag = "7")]
16863    pub timecode_hours: ::core::option::Option<u32>,
16864    #[prost(uint32, optional, tag = "8")]
16865    pub timecode_minutes: ::core::option::Option<u32>,
16866    #[prost(uint32, optional, tag = "9")]
16867    pub timecode_seconds: ::core::option::Option<u32>,
16868    #[prost(uint32, optional, tag = "10")]
16869    pub timecode_type: ::core::option::Option<u32>,
16870    #[prost(uint32, optional, tag = "11")]
16871    pub timecode_userbits0: ::core::option::Option<u32>,
16872    #[prost(uint32, optional, tag = "12")]
16873    pub timecode_userbits1: ::core::option::Option<u32>,
16874    #[prost(uint32, optional, tag = "13")]
16875    pub timecode_userbits2: ::core::option::Option<u32>,
16876    #[prost(uint32, optional, tag = "14")]
16877    pub timecode_userbits3: ::core::option::Option<u32>,
16878    #[prost(int64, optional, tag = "15")]
16879    pub timestamp: ::core::option::Option<i64>,
16880}
16881#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16882pub struct VirtioGpuCmdQueueFtraceEvent {
16883    #[prost(uint32, optional, tag = "1")]
16884    pub ctx_id: ::core::option::Option<u32>,
16885    #[prost(int32, optional, tag = "2")]
16886    pub dev: ::core::option::Option<i32>,
16887    #[prost(uint64, optional, tag = "3")]
16888    pub fence_id: ::core::option::Option<u64>,
16889    #[prost(uint32, optional, tag = "4")]
16890    pub flags: ::core::option::Option<u32>,
16891    #[prost(string, optional, tag = "5")]
16892    pub name: ::core::option::Option<::prost::alloc::string::String>,
16893    #[prost(uint32, optional, tag = "6")]
16894    pub num_free: ::core::option::Option<u32>,
16895    #[prost(uint32, optional, tag = "7")]
16896    pub seqno: ::core::option::Option<u32>,
16897    #[prost(uint32, optional, tag = "8")]
16898    pub r#type: ::core::option::Option<u32>,
16899    #[prost(uint32, optional, tag = "9")]
16900    pub vq: ::core::option::Option<u32>,
16901}
16902#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16903pub struct VirtioGpuCmdResponseFtraceEvent {
16904    #[prost(uint32, optional, tag = "1")]
16905    pub ctx_id: ::core::option::Option<u32>,
16906    #[prost(int32, optional, tag = "2")]
16907    pub dev: ::core::option::Option<i32>,
16908    #[prost(uint64, optional, tag = "3")]
16909    pub fence_id: ::core::option::Option<u64>,
16910    #[prost(uint32, optional, tag = "4")]
16911    pub flags: ::core::option::Option<u32>,
16912    #[prost(string, optional, tag = "5")]
16913    pub name: ::core::option::Option<::prost::alloc::string::String>,
16914    #[prost(uint32, optional, tag = "6")]
16915    pub num_free: ::core::option::Option<u32>,
16916    #[prost(uint32, optional, tag = "7")]
16917    pub seqno: ::core::option::Option<u32>,
16918    #[prost(uint32, optional, tag = "8")]
16919    pub r#type: ::core::option::Option<u32>,
16920    #[prost(uint32, optional, tag = "9")]
16921    pub vq: ::core::option::Option<u32>,
16922}
16923#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16924pub struct VirtioVideoCmdFtraceEvent {
16925    #[prost(uint32, optional, tag = "1")]
16926    pub stream_id: ::core::option::Option<u32>,
16927    #[prost(uint32, optional, tag = "2")]
16928    pub r#type: ::core::option::Option<u32>,
16929}
16930#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16931pub struct VirtioVideoCmdDoneFtraceEvent {
16932    #[prost(uint32, optional, tag = "1")]
16933    pub stream_id: ::core::option::Option<u32>,
16934    #[prost(uint32, optional, tag = "2")]
16935    pub r#type: ::core::option::Option<u32>,
16936}
16937#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16938pub struct VirtioVideoResourceQueueFtraceEvent {
16939    #[prost(uint32, optional, tag = "1")]
16940    pub data_size0: ::core::option::Option<u32>,
16941    #[prost(uint32, optional, tag = "2")]
16942    pub data_size1: ::core::option::Option<u32>,
16943    #[prost(uint32, optional, tag = "3")]
16944    pub data_size2: ::core::option::Option<u32>,
16945    #[prost(uint32, optional, tag = "4")]
16946    pub data_size3: ::core::option::Option<u32>,
16947    #[prost(uint32, optional, tag = "5")]
16948    pub queue_type: ::core::option::Option<u32>,
16949    #[prost(int32, optional, tag = "6")]
16950    pub resource_id: ::core::option::Option<i32>,
16951    #[prost(int32, optional, tag = "7")]
16952    pub stream_id: ::core::option::Option<i32>,
16953    #[prost(uint64, optional, tag = "8")]
16954    pub timestamp: ::core::option::Option<u64>,
16955}
16956#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16957pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16958    #[prost(uint32, optional, tag = "1")]
16959    pub data_size0: ::core::option::Option<u32>,
16960    #[prost(uint32, optional, tag = "2")]
16961    pub data_size1: ::core::option::Option<u32>,
16962    #[prost(uint32, optional, tag = "3")]
16963    pub data_size2: ::core::option::Option<u32>,
16964    #[prost(uint32, optional, tag = "4")]
16965    pub data_size3: ::core::option::Option<u32>,
16966    #[prost(uint32, optional, tag = "5")]
16967    pub queue_type: ::core::option::Option<u32>,
16968    #[prost(int32, optional, tag = "6")]
16969    pub resource_id: ::core::option::Option<i32>,
16970    #[prost(int32, optional, tag = "7")]
16971    pub stream_id: ::core::option::Option<i32>,
16972    #[prost(uint64, optional, tag = "8")]
16973    pub timestamp: ::core::option::Option<u64>,
16974}
16975#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16976pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16977    #[prost(int32, optional, tag = "1")]
16978    pub order: ::core::option::Option<i32>,
16979    #[prost(int32, optional, tag = "2")]
16980    pub may_writepage: ::core::option::Option<i32>,
16981    #[prost(uint32, optional, tag = "3")]
16982    pub gfp_flags: ::core::option::Option<u32>,
16983}
16984#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16985pub struct MmVmscanDirectReclaimEndFtraceEvent {
16986    #[prost(uint64, optional, tag = "1")]
16987    pub nr_reclaimed: ::core::option::Option<u64>,
16988}
16989#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16990pub struct MmVmscanKswapdWakeFtraceEvent {
16991    #[prost(int32, optional, tag = "1")]
16992    pub nid: ::core::option::Option<i32>,
16993    #[prost(int32, optional, tag = "2")]
16994    pub order: ::core::option::Option<i32>,
16995    #[prost(int32, optional, tag = "3")]
16996    pub zid: ::core::option::Option<i32>,
16997}
16998#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16999pub struct MmVmscanKswapdSleepFtraceEvent {
17000    #[prost(int32, optional, tag = "1")]
17001    pub nid: ::core::option::Option<i32>,
17002}
17003#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17004pub struct MmShrinkSlabStartFtraceEvent {
17005    #[prost(uint64, optional, tag = "1")]
17006    pub cache_items: ::core::option::Option<u64>,
17007    #[prost(uint64, optional, tag = "2")]
17008    pub delta: ::core::option::Option<u64>,
17009    #[prost(uint32, optional, tag = "3")]
17010    pub gfp_flags: ::core::option::Option<u32>,
17011    #[prost(uint64, optional, tag = "4")]
17012    pub lru_pgs: ::core::option::Option<u64>,
17013    #[prost(int64, optional, tag = "5")]
17014    pub nr_objects_to_shrink: ::core::option::Option<i64>,
17015    #[prost(uint64, optional, tag = "6")]
17016    pub pgs_scanned: ::core::option::Option<u64>,
17017    #[prost(uint64, optional, tag = "7")]
17018    pub shr: ::core::option::Option<u64>,
17019    #[prost(uint64, optional, tag = "8")]
17020    pub shrink: ::core::option::Option<u64>,
17021    #[prost(uint64, optional, tag = "9")]
17022    pub total_scan: ::core::option::Option<u64>,
17023    #[prost(int32, optional, tag = "10")]
17024    pub nid: ::core::option::Option<i32>,
17025    #[prost(int32, optional, tag = "11")]
17026    pub priority: ::core::option::Option<i32>,
17027}
17028#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17029pub struct MmShrinkSlabEndFtraceEvent {
17030    #[prost(int64, optional, tag = "1")]
17031    pub new_scan: ::core::option::Option<i64>,
17032    #[prost(int32, optional, tag = "2")]
17033    pub retval: ::core::option::Option<i32>,
17034    #[prost(uint64, optional, tag = "3")]
17035    pub shr: ::core::option::Option<u64>,
17036    #[prost(uint64, optional, tag = "4")]
17037    pub shrink: ::core::option::Option<u64>,
17038    #[prost(int64, optional, tag = "5")]
17039    pub total_scan: ::core::option::Option<i64>,
17040    #[prost(int64, optional, tag = "6")]
17041    pub unused_scan: ::core::option::Option<i64>,
17042    #[prost(int32, optional, tag = "7")]
17043    pub nid: ::core::option::Option<i32>,
17044}
17045#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17046pub struct MmVmscanMemcgReclaimBeginFtraceEvent {
17047    #[prost(int32, optional, tag = "1")]
17048    pub order: ::core::option::Option<i32>,
17049    #[prost(int32, optional, tag = "2")]
17050    pub may_writepage: ::core::option::Option<i32>,
17051    #[prost(uint64, optional, tag = "3")]
17052    pub gfp_flags: ::core::option::Option<u64>,
17053}
17054#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17055pub struct MmVmscanMemcgReclaimEndFtraceEvent {
17056    #[prost(uint64, optional, tag = "1")]
17057    pub nr_reclaimed: ::core::option::Option<u64>,
17058}
17059#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17060pub struct WorkqueueActivateWorkFtraceEvent {
17061    #[prost(uint64, optional, tag = "1")]
17062    pub work: ::core::option::Option<u64>,
17063    #[prost(uint64, optional, tag = "2")]
17064    pub function: ::core::option::Option<u64>,
17065}
17066#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17067pub struct WorkqueueExecuteEndFtraceEvent {
17068    #[prost(uint64, optional, tag = "1")]
17069    pub work: ::core::option::Option<u64>,
17070    #[prost(uint64, optional, tag = "2")]
17071    pub function: ::core::option::Option<u64>,
17072}
17073#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17074pub struct WorkqueueExecuteStartFtraceEvent {
17075    #[prost(uint64, optional, tag = "1")]
17076    pub work: ::core::option::Option<u64>,
17077    #[prost(uint64, optional, tag = "2")]
17078    pub function: ::core::option::Option<u64>,
17079}
17080#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17081pub struct WorkqueueQueueWorkFtraceEvent {
17082    #[prost(uint64, optional, tag = "1")]
17083    pub work: ::core::option::Option<u64>,
17084    #[prost(uint64, optional, tag = "2")]
17085    pub function: ::core::option::Option<u64>,
17086    #[prost(int32, optional, tag = "4")]
17087    pub req_cpu: ::core::option::Option<i32>,
17088    #[prost(int32, optional, tag = "5")]
17089    pub cpu: ::core::option::Option<i32>,
17090    #[prost(string, optional, tag = "6")]
17091    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
17092}
17093#[derive(Clone, PartialEq, ::prost::Message)]
17094pub struct FtraceEvent {
17095    /// Timestamp in nanoseconds using .../tracing/trace_clock.
17096    #[prost(uint64, optional, tag = "1")]
17097    pub timestamp: ::core::option::Option<u64>,
17098    /// Kernel pid (do not confuse with userspace pid aka tgid).
17099    #[prost(uint32, optional, tag = "2")]
17100    pub pid: ::core::option::Option<u32>,
17101    /// Not populated in actual traces. Wire format might change.
17102    /// Placeholder declaration so that the ftrace parsing code accepts the
17103    /// existence of this common field. If this becomes needed for all events:
17104    /// consider merging with common_preempt_count to avoid extra proto tags.
17105    #[prost(uint32, optional, tag = "5")]
17106    pub common_flags: ::core::option::Option<u32>,
17107    #[prost(
17108        oneof = "ftrace_event::Event",
17109        tags = "3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617"
17110    )]
17111    pub event: ::core::option::Option<ftrace_event::Event>,
17112}
17113/// Nested message and enum types in `FtraceEvent`.
17114pub mod ftrace_event {
17115    #[derive(Clone, PartialEq, ::prost::Oneof)]
17116    pub enum Event {
17117        #[prost(message, tag = "3")]
17118        Print(super::PrintFtraceEvent),
17119        #[prost(message, tag = "4")]
17120        SchedSwitch(super::SchedSwitchFtraceEvent),
17121        /// removed field with id 5;
17122        /// removed field with id 6;
17123        /// removed field with id 7;
17124        /// removed field with id 8;
17125        /// removed field with id 9;
17126        /// removed field with id 10;
17127        #[prost(message, tag = "11")]
17128        CpuFrequency(super::CpuFrequencyFtraceEvent),
17129        #[prost(message, tag = "12")]
17130        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
17131        #[prost(message, tag = "13")]
17132        CpuIdle(super::CpuIdleFtraceEvent),
17133        #[prost(message, tag = "14")]
17134        ClockEnable(super::ClockEnableFtraceEvent),
17135        #[prost(message, tag = "15")]
17136        ClockDisable(super::ClockDisableFtraceEvent),
17137        #[prost(message, tag = "16")]
17138        ClockSetRate(super::ClockSetRateFtraceEvent),
17139        #[prost(message, tag = "17")]
17140        SchedWakeup(super::SchedWakeupFtraceEvent),
17141        #[prost(message, tag = "18")]
17142        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
17143        #[prost(message, tag = "19")]
17144        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
17145        #[prost(message, tag = "20")]
17146        SchedWaking(super::SchedWakingFtraceEvent),
17147        #[prost(message, tag = "21")]
17148        IpiEntry(super::IpiEntryFtraceEvent),
17149        #[prost(message, tag = "22")]
17150        IpiExit(super::IpiExitFtraceEvent),
17151        #[prost(message, tag = "23")]
17152        IpiRaise(super::IpiRaiseFtraceEvent),
17153        #[prost(message, tag = "24")]
17154        SoftirqEntry(super::SoftirqEntryFtraceEvent),
17155        #[prost(message, tag = "25")]
17156        SoftirqExit(super::SoftirqExitFtraceEvent),
17157        #[prost(message, tag = "26")]
17158        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
17159        #[prost(message, tag = "27")]
17160        I2cRead(super::I2cReadFtraceEvent),
17161        #[prost(message, tag = "28")]
17162        I2cWrite(super::I2cWriteFtraceEvent),
17163        #[prost(message, tag = "29")]
17164        I2cResult(super::I2cResultFtraceEvent),
17165        #[prost(message, tag = "30")]
17166        I2cReply(super::I2cReplyFtraceEvent),
17167        #[prost(message, tag = "31")]
17168        SmbusRead(super::SmbusReadFtraceEvent),
17169        #[prost(message, tag = "32")]
17170        SmbusWrite(super::SmbusWriteFtraceEvent),
17171        #[prost(message, tag = "33")]
17172        SmbusResult(super::SmbusResultFtraceEvent),
17173        #[prost(message, tag = "34")]
17174        SmbusReply(super::SmbusReplyFtraceEvent),
17175        #[prost(message, tag = "35")]
17176        LowmemoryKill(super::LowmemoryKillFtraceEvent),
17177        #[prost(message, tag = "36")]
17178        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
17179        #[prost(message, tag = "37")]
17180        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
17181        #[prost(message, tag = "38")]
17182        SyncPt(super::SyncPtFtraceEvent),
17183        #[prost(message, tag = "39")]
17184        SyncTimeline(super::SyncTimelineFtraceEvent),
17185        #[prost(message, tag = "40")]
17186        SyncWait(super::SyncWaitFtraceEvent),
17187        #[prost(message, tag = "41")]
17188        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
17189        #[prost(message, tag = "42")]
17190        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
17191        #[prost(message, tag = "43")]
17192        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
17193        #[prost(message, tag = "44")]
17194        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
17195        #[prost(message, tag = "45")]
17196        BlockRqIssue(super::BlockRqIssueFtraceEvent),
17197        #[prost(message, tag = "46")]
17198        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
17199        #[prost(message, tag = "47")]
17200        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
17201        #[prost(message, tag = "48")]
17202        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
17203        #[prost(message, tag = "49")]
17204        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
17205        #[prost(message, tag = "50")]
17206        BinderTransaction(super::BinderTransactionFtraceEvent),
17207        #[prost(message, tag = "51")]
17208        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
17209        #[prost(message, tag = "52")]
17210        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
17211        #[prost(message, tag = "53")]
17212        BinderLock(super::BinderLockFtraceEvent),
17213        #[prost(message, tag = "54")]
17214        BinderLocked(super::BinderLockedFtraceEvent),
17215        #[prost(message, tag = "55")]
17216        BinderUnlock(super::BinderUnlockFtraceEvent),
17217        #[prost(message, tag = "56")]
17218        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
17219        #[prost(message, tag = "57")]
17220        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
17221        #[prost(message, tag = "58")]
17222        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
17223        #[prost(message, tag = "59")]
17224        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
17225        #[prost(message, tag = "60")]
17226        RegulatorDisable(super::RegulatorDisableFtraceEvent),
17227        #[prost(message, tag = "61")]
17228        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
17229        #[prost(message, tag = "62")]
17230        RegulatorEnable(super::RegulatorEnableFtraceEvent),
17231        #[prost(message, tag = "63")]
17232        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
17233        #[prost(message, tag = "64")]
17234        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
17235        #[prost(message, tag = "65")]
17236        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
17237        #[prost(message, tag = "66")]
17238        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
17239        #[prost(message, tag = "67")]
17240        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
17241        #[prost(message, tag = "68")]
17242        CgroupMkdir(super::CgroupMkdirFtraceEvent),
17243        #[prost(message, tag = "69")]
17244        CgroupRemount(super::CgroupRemountFtraceEvent),
17245        #[prost(message, tag = "70")]
17246        CgroupRmdir(super::CgroupRmdirFtraceEvent),
17247        #[prost(message, tag = "71")]
17248        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
17249        #[prost(message, tag = "72")]
17250        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
17251        #[prost(message, tag = "73")]
17252        CgroupRelease(super::CgroupReleaseFtraceEvent),
17253        #[prost(message, tag = "74")]
17254        CgroupRename(super::CgroupRenameFtraceEvent),
17255        #[prost(message, tag = "75")]
17256        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
17257        #[prost(message, tag = "76")]
17258        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
17259        #[prost(message, tag = "77")]
17260        MdpCommit(super::MdpCommitFtraceEvent),
17261        #[prost(message, tag = "78")]
17262        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
17263        #[prost(message, tag = "79")]
17264        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
17265        #[prost(message, tag = "80")]
17266        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
17267        #[prost(message, tag = "81")]
17268        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
17269        #[prost(message, tag = "82")]
17270        MdpCompareBw(super::MdpCompareBwFtraceEvent),
17271        #[prost(message, tag = "83")]
17272        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
17273        #[prost(message, tag = "84")]
17274        MdpSsppSet(super::MdpSsppSetFtraceEvent),
17275        #[prost(message, tag = "85")]
17276        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
17277        #[prost(message, tag = "86")]
17278        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
17279        #[prost(message, tag = "87")]
17280        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
17281        #[prost(message, tag = "88")]
17282        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
17283        #[prost(message, tag = "89")]
17284        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
17285        #[prost(message, tag = "90")]
17286        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
17287        #[prost(message, tag = "91")]
17288        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
17289        #[prost(message, tag = "92")]
17290        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
17291        #[prost(message, tag = "93")]
17292        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
17293        #[prost(message, tag = "94")]
17294        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
17295        #[prost(message, tag = "95")]
17296        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
17297        #[prost(message, tag = "96")]
17298        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
17299        #[prost(message, tag = "97")]
17300        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
17301        #[prost(message, tag = "98")]
17302        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
17303        #[prost(message, tag = "99")]
17304        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
17305        #[prost(message, tag = "100")]
17306        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
17307        #[prost(message, tag = "101")]
17308        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
17309        #[prost(message, tag = "102")]
17310        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
17311        #[prost(message, tag = "103")]
17312        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
17313        #[prost(message, tag = "104")]
17314        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
17315        #[prost(message, tag = "105")]
17316        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
17317        #[prost(message, tag = "106")]
17318        MmCompactionIsolateMigratepages(
17319            super::MmCompactionIsolateMigratepagesFtraceEvent,
17320        ),
17321        #[prost(message, tag = "107")]
17322        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
17323        #[prost(message, tag = "108")]
17324        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
17325        #[prost(message, tag = "109")]
17326        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
17327        #[prost(message, tag = "110")]
17328        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
17329        #[prost(message, tag = "111")]
17330        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
17331        #[prost(message, tag = "112")]
17332        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
17333        #[prost(message, tag = "113")]
17334        SuspendResume(super::SuspendResumeFtraceEvent),
17335        #[prost(message, tag = "114")]
17336        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
17337        #[prost(message, tag = "115")]
17338        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
17339        #[prost(message, tag = "116")]
17340        BlockBioBounce(super::BlockBioBounceFtraceEvent),
17341        #[prost(message, tag = "117")]
17342        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
17343        #[prost(message, tag = "118")]
17344        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
17345        #[prost(message, tag = "119")]
17346        BlockBioQueue(super::BlockBioQueueFtraceEvent),
17347        #[prost(message, tag = "120")]
17348        BlockBioRemap(super::BlockBioRemapFtraceEvent),
17349        #[prost(message, tag = "121")]
17350        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
17351        #[prost(message, tag = "122")]
17352        BlockGetrq(super::BlockGetrqFtraceEvent),
17353        #[prost(message, tag = "123")]
17354        BlockPlug(super::BlockPlugFtraceEvent),
17355        #[prost(message, tag = "124")]
17356        BlockRqAbort(super::BlockRqAbortFtraceEvent),
17357        #[prost(message, tag = "125")]
17358        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
17359        #[prost(message, tag = "126")]
17360        BlockRqInsert(super::BlockRqInsertFtraceEvent),
17361        /// removed field with id 127;
17362        #[prost(message, tag = "128")]
17363        BlockRqRemap(super::BlockRqRemapFtraceEvent),
17364        #[prost(message, tag = "129")]
17365        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
17366        #[prost(message, tag = "130")]
17367        BlockSleeprq(super::BlockSleeprqFtraceEvent),
17368        #[prost(message, tag = "131")]
17369        BlockSplit(super::BlockSplitFtraceEvent),
17370        #[prost(message, tag = "132")]
17371        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
17372        #[prost(message, tag = "133")]
17373        BlockUnplug(super::BlockUnplugFtraceEvent),
17374        #[prost(message, tag = "134")]
17375        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
17376        #[prost(message, tag = "135")]
17377        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
17378        #[prost(message, tag = "136")]
17379        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
17380        #[prost(message, tag = "137")]
17381        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
17382        #[prost(message, tag = "138")]
17383        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
17384        #[prost(message, tag = "139")]
17385        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
17386        #[prost(message, tag = "140")]
17387        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
17388        #[prost(message, tag = "141")]
17389        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
17390        #[prost(message, tag = "142")]
17391        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
17392        #[prost(message, tag = "143")]
17393        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
17394        #[prost(message, tag = "144")]
17395        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
17396        #[prost(message, tag = "145")]
17397        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
17398        #[prost(message, tag = "146")]
17399        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
17400        #[prost(message, tag = "147")]
17401        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
17402        #[prost(message, tag = "148")]
17403        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
17404        #[prost(message, tag = "149")]
17405        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
17406        #[prost(message, tag = "150")]
17407        Ext4EsFindDelayedExtentRangeEnter(
17408            super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent,
17409        ),
17410        #[prost(message, tag = "151")]
17411        Ext4EsFindDelayedExtentRangeExit(
17412            super::Ext4EsFindDelayedExtentRangeExitFtraceEvent,
17413        ),
17414        #[prost(message, tag = "152")]
17415        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
17416        #[prost(message, tag = "153")]
17417        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
17418        #[prost(message, tag = "154")]
17419        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
17420        #[prost(message, tag = "155")]
17421        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
17422        #[prost(message, tag = "156")]
17423        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
17424        #[prost(message, tag = "157")]
17425        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
17426        #[prost(message, tag = "158")]
17427        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
17428        #[prost(message, tag = "159")]
17429        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
17430        #[prost(message, tag = "160")]
17431        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
17432        #[prost(message, tag = "161")]
17433        Ext4ExtConvertToInitializedEnter(
17434            super::Ext4ExtConvertToInitializedEnterFtraceEvent,
17435        ),
17436        #[prost(message, tag = "162")]
17437        Ext4ExtConvertToInitializedFastpath(
17438            super::Ext4ExtConvertToInitializedFastpathFtraceEvent,
17439        ),
17440        #[prost(message, tag = "163")]
17441        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
17442        #[prost(message, tag = "164")]
17443        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
17444        #[prost(message, tag = "165")]
17445        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
17446        #[prost(message, tag = "166")]
17447        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
17448        #[prost(message, tag = "167")]
17449        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
17450        #[prost(message, tag = "168")]
17451        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
17452        #[prost(message, tag = "169")]
17453        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
17454        #[prost(message, tag = "170")]
17455        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
17456        #[prost(message, tag = "171")]
17457        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
17458        #[prost(message, tag = "172")]
17459        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
17460        #[prost(message, tag = "173")]
17461        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
17462        #[prost(message, tag = "174")]
17463        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
17464        #[prost(message, tag = "175")]
17465        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
17466        #[prost(message, tag = "176")]
17467        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
17468        #[prost(message, tag = "177")]
17469        Ext4Forget(super::Ext4ForgetFtraceEvent),
17470        #[prost(message, tag = "178")]
17471        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
17472        #[prost(message, tag = "179")]
17473        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
17474        #[prost(message, tag = "180")]
17475        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
17476        #[prost(message, tag = "181")]
17477        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
17478        #[prost(message, tag = "182")]
17479        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
17480        #[prost(message, tag = "183")]
17481        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
17482        #[prost(message, tag = "184")]
17483        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
17484        #[prost(message, tag = "185")]
17485        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
17486        #[prost(message, tag = "186")]
17487        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
17488        #[prost(message, tag = "187")]
17489        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
17490        #[prost(message, tag = "188")]
17491        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
17492        #[prost(message, tag = "189")]
17493        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
17494        #[prost(message, tag = "190")]
17495        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
17496        #[prost(message, tag = "191")]
17497        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
17498        #[prost(message, tag = "192")]
17499        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
17500        #[prost(message, tag = "193")]
17501        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
17502        #[prost(message, tag = "194")]
17503        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
17504        #[prost(message, tag = "195")]
17505        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
17506        #[prost(message, tag = "196")]
17507        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
17508        #[prost(message, tag = "197")]
17509        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
17510        #[prost(message, tag = "198")]
17511        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
17512        #[prost(message, tag = "199")]
17513        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
17514        #[prost(message, tag = "200")]
17515        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
17516        #[prost(message, tag = "201")]
17517        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
17518        #[prost(message, tag = "202")]
17519        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
17520        #[prost(message, tag = "203")]
17521        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
17522        #[prost(message, tag = "204")]
17523        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
17524        #[prost(message, tag = "205")]
17525        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
17526        #[prost(message, tag = "206")]
17527        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
17528        #[prost(message, tag = "207")]
17529        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
17530        #[prost(message, tag = "208")]
17531        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
17532        #[prost(message, tag = "209")]
17533        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
17534        #[prost(message, tag = "210")]
17535        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
17536        #[prost(message, tag = "211")]
17537        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
17538        #[prost(message, tag = "212")]
17539        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
17540        #[prost(message, tag = "213")]
17541        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
17542        #[prost(message, tag = "214")]
17543        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
17544        #[prost(message, tag = "215")]
17545        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
17546        #[prost(message, tag = "216")]
17547        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
17548        #[prost(message, tag = "217")]
17549        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
17550        #[prost(message, tag = "218")]
17551        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
17552        #[prost(message, tag = "219")]
17553        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
17554        /// removed field with id 220;
17555        /// removed field with id 221;
17556        /// removed field with id 222;
17557        /// removed field with id 223;
17558        /// removed field with id 224;
17559        /// removed field with id 225;
17560        /// removed field with id 226;
17561        /// removed field with id 227;
17562        /// removed field with id 228;
17563        /// removed field with id 229;
17564        #[prost(message, tag = "230")]
17565        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
17566        #[prost(message, tag = "231")]
17567        Ext4Writepage(super::Ext4WritepageFtraceEvent),
17568        #[prost(message, tag = "232")]
17569        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
17570        #[prost(message, tag = "233")]
17571        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
17572        #[prost(message, tag = "234")]
17573        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
17574        #[prost(message, tag = "235")]
17575        TaskNewtask(super::TaskNewtaskFtraceEvent),
17576        #[prost(message, tag = "236")]
17577        TaskRename(super::TaskRenameFtraceEvent),
17578        #[prost(message, tag = "237")]
17579        SchedProcessExec(super::SchedProcessExecFtraceEvent),
17580        #[prost(message, tag = "238")]
17581        SchedProcessExit(super::SchedProcessExitFtraceEvent),
17582        #[prost(message, tag = "239")]
17583        SchedProcessFork(super::SchedProcessForkFtraceEvent),
17584        #[prost(message, tag = "240")]
17585        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
17586        #[prost(message, tag = "241")]
17587        SchedProcessHang(super::SchedProcessHangFtraceEvent),
17588        #[prost(message, tag = "242")]
17589        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
17590        #[prost(message, tag = "243")]
17591        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
17592        #[prost(message, tag = "244")]
17593        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
17594        #[prost(message, tag = "245")]
17595        F2fsFallocate(super::F2fsFallocateFtraceEvent),
17596        #[prost(message, tag = "246")]
17597        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
17598        #[prost(message, tag = "247")]
17599        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
17600        #[prost(message, tag = "248")]
17601        F2fsIget(super::F2fsIgetFtraceEvent),
17602        #[prost(message, tag = "249")]
17603        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
17604        #[prost(message, tag = "250")]
17605        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
17606        #[prost(message, tag = "251")]
17607        F2fsReadpage(super::F2fsReadpageFtraceEvent),
17608        #[prost(message, tag = "252")]
17609        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
17610        #[prost(message, tag = "253")]
17611        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
17612        #[prost(message, tag = "254")]
17613        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
17614        #[prost(message, tag = "255")]
17615        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
17616        #[prost(message, tag = "256")]
17617        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
17618        #[prost(message, tag = "257")]
17619        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
17620        #[prost(message, tag = "258")]
17621        F2fsTruncate(super::F2fsTruncateFtraceEvent),
17622        #[prost(message, tag = "259")]
17623        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
17624        #[prost(message, tag = "260")]
17625        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
17626        #[prost(message, tag = "261")]
17627        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
17628        #[prost(message, tag = "262")]
17629        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
17630        #[prost(message, tag = "263")]
17631        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
17632        #[prost(message, tag = "264")]
17633        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
17634        #[prost(message, tag = "265")]
17635        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
17636        #[prost(message, tag = "266")]
17637        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
17638        #[prost(message, tag = "267")]
17639        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
17640        #[prost(message, tag = "268")]
17641        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
17642        #[prost(message, tag = "269")]
17643        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
17644        #[prost(message, tag = "270")]
17645        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
17646        #[prost(message, tag = "271")]
17647        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
17648        #[prost(message, tag = "272")]
17649        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
17650        #[prost(message, tag = "273")]
17651        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
17652        #[prost(message, tag = "274")]
17653        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
17654        #[prost(message, tag = "275")]
17655        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
17656        #[prost(message, tag = "276")]
17657        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
17658        #[prost(message, tag = "277")]
17659        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
17660        #[prost(message, tag = "278")]
17661        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
17662        #[prost(message, tag = "279")]
17663        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
17664        #[prost(message, tag = "280")]
17665        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
17666        #[prost(message, tag = "281")]
17667        IommuMapRange(super::IommuMapRangeFtraceEvent),
17668        #[prost(message, tag = "282")]
17669        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
17670        #[prost(message, tag = "283")]
17671        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
17672        #[prost(message, tag = "284")]
17673        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17674        #[prost(message, tag = "285")]
17675        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17676        #[prost(message, tag = "286")]
17677        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17678        #[prost(message, tag = "287")]
17679        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17680        #[prost(message, tag = "288")]
17681        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17682        #[prost(message, tag = "289")]
17683        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17684        #[prost(message, tag = "290")]
17685        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17686        #[prost(message, tag = "291")]
17687        IonPrefetching(super::IonPrefetchingFtraceEvent),
17688        #[prost(message, tag = "292")]
17689        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17690        #[prost(message, tag = "293")]
17691        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17692        #[prost(message, tag = "294")]
17693        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17694        #[prost(message, tag = "295")]
17695        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17696        #[prost(message, tag = "296")]
17697        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17698        #[prost(message, tag = "297")]
17699        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17700        #[prost(message, tag = "298")]
17701        Kfree(super::KfreeFtraceEvent),
17702        #[prost(message, tag = "299")]
17703        Kmalloc(super::KmallocFtraceEvent),
17704        #[prost(message, tag = "300")]
17705        KmallocNode(super::KmallocNodeFtraceEvent),
17706        #[prost(message, tag = "301")]
17707        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17708        #[prost(message, tag = "302")]
17709        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17710        #[prost(message, tag = "303")]
17711        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17712        #[prost(message, tag = "304")]
17713        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17714        #[prost(message, tag = "305")]
17715        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17716        #[prost(message, tag = "306")]
17717        MigrateRetry(super::MigrateRetryFtraceEvent),
17718        #[prost(message, tag = "307")]
17719        MmPageAlloc(super::MmPageAllocFtraceEvent),
17720        #[prost(message, tag = "308")]
17721        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17722        #[prost(message, tag = "309")]
17723        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17724        #[prost(message, tag = "310")]
17725        MmPageFree(super::MmPageFreeFtraceEvent),
17726        #[prost(message, tag = "311")]
17727        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17728        #[prost(message, tag = "312")]
17729        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17730        #[prost(message, tag = "313")]
17731        RssStat(super::RssStatFtraceEvent),
17732        #[prost(message, tag = "314")]
17733        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17734        #[prost(message, tag = "315")]
17735        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17736        #[prost(message, tag = "316")]
17737        FenceInit(super::FenceInitFtraceEvent),
17738        #[prost(message, tag = "317")]
17739        FenceDestroy(super::FenceDestroyFtraceEvent),
17740        #[prost(message, tag = "318")]
17741        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17742        #[prost(message, tag = "319")]
17743        FenceSignaled(super::FenceSignaledFtraceEvent),
17744        #[prost(message, tag = "320")]
17745        ClkEnable(super::ClkEnableFtraceEvent),
17746        #[prost(message, tag = "321")]
17747        ClkDisable(super::ClkDisableFtraceEvent),
17748        #[prost(message, tag = "322")]
17749        ClkSetRate(super::ClkSetRateFtraceEvent),
17750        #[prost(message, tag = "323")]
17751        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17752        #[prost(message, tag = "324")]
17753        SignalDeliver(super::SignalDeliverFtraceEvent),
17754        #[prost(message, tag = "325")]
17755        SignalGenerate(super::SignalGenerateFtraceEvent),
17756        #[prost(message, tag = "326")]
17757        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17758        #[prost(message, tag = "327")]
17759        Generic(super::GenericFtraceEvent),
17760        #[prost(message, tag = "328")]
17761        MmEventRecord(super::MmEventRecordFtraceEvent),
17762        #[prost(message, tag = "329")]
17763        SysEnter(super::SysEnterFtraceEvent),
17764        #[prost(message, tag = "330")]
17765        SysExit(super::SysExitFtraceEvent),
17766        #[prost(message, tag = "331")]
17767        Zero(super::ZeroFtraceEvent),
17768        #[prost(message, tag = "332")]
17769        GpuFrequency(super::GpuFrequencyFtraceEvent),
17770        #[prost(message, tag = "333")]
17771        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
17772        #[prost(message, tag = "334")]
17773        MarkVictim(super::MarkVictimFtraceEvent),
17774        #[prost(message, tag = "335")]
17775        IonStat(super::IonStatFtraceEvent),
17776        #[prost(message, tag = "336")]
17777        IonBufferCreate(super::IonBufferCreateFtraceEvent),
17778        #[prost(message, tag = "337")]
17779        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
17780        #[prost(message, tag = "338")]
17781        ScmCallStart(super::ScmCallStartFtraceEvent),
17782        #[prost(message, tag = "339")]
17783        ScmCallEnd(super::ScmCallEndFtraceEvent),
17784        #[prost(message, tag = "340")]
17785        GpuMemTotal(super::GpuMemTotalFtraceEvent),
17786        #[prost(message, tag = "341")]
17787        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
17788        #[prost(message, tag = "342")]
17789        CdevUpdate(super::CdevUpdateFtraceEvent),
17790        #[prost(message, tag = "343")]
17791        CpuhpExit(super::CpuhpExitFtraceEvent),
17792        #[prost(message, tag = "344")]
17793        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
17794        #[prost(message, tag = "345")]
17795        CpuhpEnter(super::CpuhpEnterFtraceEvent),
17796        #[prost(message, tag = "346")]
17797        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
17798        #[prost(message, tag = "347")]
17799        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
17800        #[prost(message, tag = "348")]
17801        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
17802        #[prost(message, tag = "349")]
17803        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
17804        #[prost(message, tag = "350")]
17805        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
17806        #[prost(message, tag = "351")]
17807        DmaHeapStat(super::DmaHeapStatFtraceEvent),
17808        #[prost(message, tag = "352")]
17809        CpuhpPause(super::CpuhpPauseFtraceEvent),
17810        #[prost(message, tag = "353")]
17811        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
17812        #[prost(message, tag = "354")]
17813        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
17814        #[prost(message, tag = "355")]
17815        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
17816        #[prost(message, tag = "356")]
17817        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
17818        #[prost(message, tag = "357")]
17819        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
17820        #[prost(message, tag = "358")]
17821        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
17822        #[prost(message, tag = "359")]
17823        RssStatThrottled(super::RssStatThrottledFtraceEvent),
17824        #[prost(message, tag = "360")]
17825        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
17826        #[prost(message, tag = "361")]
17827        NetDevXmit(super::NetDevXmitFtraceEvent),
17828        #[prost(message, tag = "362")]
17829        InetSockSetState(super::InetSockSetStateFtraceEvent),
17830        #[prost(message, tag = "363")]
17831        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
17832        #[prost(message, tag = "364")]
17833        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
17834        #[prost(message, tag = "365")]
17835        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
17836        #[prost(message, tag = "366")]
17837        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
17838        #[prost(message, tag = "367")]
17839        KfreeSkb(super::KfreeSkbFtraceEvent),
17840        #[prost(message, tag = "368")]
17841        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
17842        #[prost(message, tag = "369")]
17843        KvmAckIrq(super::KvmAckIrqFtraceEvent),
17844        #[prost(message, tag = "370")]
17845        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
17846        #[prost(message, tag = "371")]
17847        KvmAgePage(super::KvmAgePageFtraceEvent),
17848        #[prost(message, tag = "372")]
17849        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
17850        #[prost(message, tag = "373")]
17851        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
17852        #[prost(message, tag = "374")]
17853        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
17854        #[prost(message, tag = "375")]
17855        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
17856        #[prost(message, tag = "376")]
17857        KvmEntry(super::KvmEntryFtraceEvent),
17858        #[prost(message, tag = "377")]
17859        KvmExit(super::KvmExitFtraceEvent),
17860        #[prost(message, tag = "378")]
17861        KvmFpu(super::KvmFpuFtraceEvent),
17862        #[prost(message, tag = "379")]
17863        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17864        #[prost(message, tag = "380")]
17865        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17866        #[prost(message, tag = "381")]
17867        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17868        #[prost(message, tag = "382")]
17869        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17870        #[prost(message, tag = "383")]
17871        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17872        #[prost(message, tag = "384")]
17873        KvmMmio(super::KvmMmioFtraceEvent),
17874        #[prost(message, tag = "385")]
17875        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17876        #[prost(message, tag = "386")]
17877        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17878        #[prost(message, tag = "387")]
17879        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17880        #[prost(message, tag = "388")]
17881        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17882        #[prost(message, tag = "389")]
17883        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17884        #[prost(message, tag = "390")]
17885        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17886        #[prost(message, tag = "391")]
17887        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17888        #[prost(message, tag = "392")]
17889        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17890        #[prost(message, tag = "393")]
17891        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17892        #[prost(message, tag = "394")]
17893        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17894        #[prost(message, tag = "395")]
17895        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17896        #[prost(message, tag = "396")]
17897        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17898        #[prost(message, tag = "397")]
17899        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17900        #[prost(message, tag = "398")]
17901        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17902        #[prost(message, tag = "399")]
17903        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17904        #[prost(message, tag = "400")]
17905        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17906        #[prost(message, tag = "401")]
17907        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17908        #[prost(message, tag = "402")]
17909        TrapReg(super::TrapRegFtraceEvent),
17910        #[prost(message, tag = "403")]
17911        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17912        #[prost(message, tag = "404")]
17913        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17914        #[prost(message, tag = "405")]
17915        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17916        #[prost(message, tag = "406")]
17917        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17918        #[prost(message, tag = "407")]
17919        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17920        #[prost(message, tag = "408")]
17921        Console(super::ConsoleFtraceEvent),
17922        #[prost(message, tag = "409")]
17923        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17924        #[prost(message, tag = "410")]
17925        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17926        #[prost(message, tag = "411")]
17927        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17928        #[prost(message, tag = "412")]
17929        DrmRunJob(super::DrmRunJobFtraceEvent),
17930        #[prost(message, tag = "413")]
17931        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17932        #[prost(message, tag = "414")]
17933        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17934        #[prost(message, tag = "415")]
17935        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17936        #[prost(message, tag = "416")]
17937        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17938        #[prost(message, tag = "417")]
17939        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17940        #[prost(message, tag = "418")]
17941        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17942        #[prost(message, tag = "419")]
17943        F2fsIostat(super::F2fsIostatFtraceEvent),
17944        #[prost(message, tag = "420")]
17945        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17946        #[prost(message, tag = "421")]
17947        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17948        #[prost(message, tag = "422")]
17949        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17950        #[prost(message, tag = "423")]
17951        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17952        #[prost(message, tag = "424")]
17953        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17954        #[prost(message, tag = "425")]
17955        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17956        #[prost(message, tag = "426")]
17957        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17958        #[prost(message, tag = "427")]
17959        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17960        #[prost(message, tag = "428")]
17961        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17962        #[prost(message, tag = "429")]
17963        DsiRx(super::DsiRxFtraceEvent),
17964        #[prost(message, tag = "430")]
17965        DsiTx(super::DsiTxFtraceEvent),
17966        #[prost(message, tag = "431")]
17967        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17968        #[prost(message, tag = "432")]
17969        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17970        #[prost(message, tag = "433")]
17971        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17972        #[prost(message, tag = "434")]
17973        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17974        #[prost(message, tag = "435")]
17975        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17976        #[prost(message, tag = "436")]
17977        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17978        #[prost(message, tag = "437")]
17979        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17980        #[prost(message, tag = "438")]
17981        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17982        #[prost(message, tag = "439")]
17983        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17984        #[prost(message, tag = "440")]
17985        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17986        #[prost(message, tag = "441")]
17987        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17988        #[prost(message, tag = "442")]
17989        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17990        #[prost(message, tag = "443")]
17991        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17992        #[prost(message, tag = "444")]
17993        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17994        #[prost(message, tag = "445")]
17995        TrustySmc(super::TrustySmcFtraceEvent),
17996        #[prost(message, tag = "446")]
17997        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17998        #[prost(message, tag = "447")]
17999        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
18000        #[prost(message, tag = "448")]
18001        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
18002        #[prost(message, tag = "449")]
18003        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
18004        #[prost(message, tag = "450")]
18005        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
18006        #[prost(message, tag = "451")]
18007        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
18008        #[prost(message, tag = "452")]
18009        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
18010        #[prost(message, tag = "453")]
18011        TrustyIrq(super::TrustyIrqFtraceEvent),
18012        #[prost(message, tag = "454")]
18013        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
18014        #[prost(message, tag = "455")]
18015        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
18016        #[prost(message, tag = "456")]
18017        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
18018        #[prost(message, tag = "457")]
18019        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
18020        #[prost(message, tag = "458")]
18021        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
18022        /// removed field with id 459;
18023        #[prost(message, tag = "460")]
18024        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
18025        #[prost(message, tag = "461")]
18026        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
18027        #[prost(message, tag = "462")]
18028        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
18029        /// removed field with id 463;
18030        #[prost(message, tag = "464")]
18031        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
18032        #[prost(message, tag = "465")]
18033        CmaAllocStart(super::CmaAllocStartFtraceEvent),
18034        #[prost(message, tag = "466")]
18035        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
18036        #[prost(message, tag = "467")]
18037        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
18038        #[prost(message, tag = "468")]
18039        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
18040        #[prost(message, tag = "469")]
18041        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
18042        #[prost(message, tag = "470")]
18043        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
18044        #[prost(message, tag = "471")]
18045        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
18046        #[prost(message, tag = "472")]
18047        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
18048        #[prost(message, tag = "473")]
18049        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
18050        #[prost(message, tag = "474")]
18051        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
18052        #[prost(message, tag = "475")]
18053        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
18054        #[prost(message, tag = "476")]
18055        HypEnter(super::HypEnterFtraceEvent),
18056        #[prost(message, tag = "477")]
18057        HypExit(super::HypExitFtraceEvent),
18058        #[prost(message, tag = "478")]
18059        HostHcall(super::HostHcallFtraceEvent),
18060        #[prost(message, tag = "479")]
18061        HostSmc(super::HostSmcFtraceEvent),
18062        #[prost(message, tag = "480")]
18063        HostMemAbort(super::HostMemAbortFtraceEvent),
18064        #[prost(message, tag = "481")]
18065        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
18066        #[prost(message, tag = "482")]
18067        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
18068        #[prost(message, tag = "483")]
18069        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
18070        #[prost(message, tag = "484")]
18071        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
18072        #[prost(message, tag = "485")]
18073        BinderCommand(super::BinderCommandFtraceEvent),
18074        #[prost(message, tag = "486")]
18075        BinderReturn(super::BinderReturnFtraceEvent),
18076        #[prost(message, tag = "487")]
18077        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
18078        #[prost(message, tag = "488")]
18079        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
18080        #[prost(message, tag = "489")]
18081        RpmStatus(super::RpmStatusFtraceEvent),
18082        #[prost(message, tag = "490")]
18083        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
18084        #[prost(message, tag = "491")]
18085        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
18086        #[prost(message, tag = "492")]
18087        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
18088        #[prost(message, tag = "493")]
18089        DpuDsiRx(super::DpuDsiRxFtraceEvent),
18090        #[prost(message, tag = "494")]
18091        DpuDsiTx(super::DpuDsiTxFtraceEvent),
18092        #[prost(message, tag = "495")]
18093        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
18094        #[prost(message, tag = "496")]
18095        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
18096        #[prost(message, tag = "497")]
18097        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
18098        #[prost(message, tag = "498")]
18099        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
18100        #[prost(message, tag = "499")]
18101        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
18102        #[prost(message, tag = "500")]
18103        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
18104        #[prost(message, tag = "501")]
18105        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
18106        #[prost(message, tag = "502")]
18107        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
18108        #[prost(message, tag = "503")]
18109        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
18110        #[prost(message, tag = "504")]
18111        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
18112        #[prost(message, tag = "505")]
18113        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
18114        #[prost(message, tag = "506")]
18115        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
18116        #[prost(message, tag = "507")]
18117        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
18118        #[prost(message, tag = "508")]
18119        DcvshFreq(super::DcvshFreqFtraceEvent),
18120        #[prost(message, tag = "509")]
18121        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
18122        #[prost(message, tag = "510")]
18123        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(
18124            super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent,
18125        ),
18126        #[prost(message, tag = "511")]
18127        MaliMaliPmMcuHctlCoresNotifyPend(
18128            super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent,
18129        ),
18130        #[prost(message, tag = "512")]
18131        MaliMaliPmMcuHctlCoreInactivePend(
18132            super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent,
18133        ),
18134        #[prost(message, tag = "513")]
18135        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
18136        #[prost(message, tag = "514")]
18137        MaliMaliPmMcuHctlShadersCoreOffPend(
18138            super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent,
18139        ),
18140        #[prost(message, tag = "515")]
18141        MaliMaliPmMcuHctlShadersPendOff(
18142            super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent,
18143        ),
18144        #[prost(message, tag = "516")]
18145        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
18146        #[prost(message, tag = "517")]
18147        MaliMaliPmMcuHctlShadersReadyOff(
18148            super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent,
18149        ),
18150        #[prost(message, tag = "518")]
18151        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
18152        #[prost(message, tag = "519")]
18153        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
18154        #[prost(message, tag = "520")]
18155        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
18156        #[prost(message, tag = "521")]
18157        MaliMaliPmMcuOnCoreAttrUpdatePend(
18158            super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent,
18159        ),
18160        #[prost(message, tag = "522")]
18161        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
18162        #[prost(message, tag = "523")]
18163        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
18164        #[prost(message, tag = "524")]
18165        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
18166        #[prost(message, tag = "525")]
18167        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
18168        #[prost(message, tag = "526")]
18169        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
18170        #[prost(message, tag = "527")]
18171        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
18172        #[prost(message, tag = "528")]
18173        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
18174        #[prost(message, tag = "529")]
18175        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
18176        #[prost(message, tag = "530")]
18177        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
18178        #[prost(message, tag = "531")]
18179        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
18180        #[prost(message, tag = "532")]
18181        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
18182        #[prost(message, tag = "533")]
18183        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
18184        #[prost(message, tag = "534")]
18185        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
18186        #[prost(message, tag = "535")]
18187        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
18188        #[prost(message, tag = "536")]
18189        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
18190        #[prost(message, tag = "537")]
18191        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
18192        #[prost(message, tag = "538")]
18193        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
18194        #[prost(message, tag = "539")]
18195        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
18196        #[prost(message, tag = "540")]
18197        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
18198        #[prost(message, tag = "541")]
18199        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
18200        #[prost(message, tag = "542")]
18201        KprobeEvent(super::KprobeEvent),
18202        #[prost(message, tag = "543")]
18203        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
18204        #[prost(message, tag = "544")]
18205        DoSysOpen(super::DoSysOpenFtraceEvent),
18206        #[prost(message, tag = "545")]
18207        OpenExec(super::OpenExecFtraceEvent),
18208        #[prost(message, tag = "546")]
18209        BlockIoStart(super::BlockIoStartFtraceEvent),
18210        #[prost(message, tag = "547")]
18211        BlockIoDone(super::BlockIoDoneFtraceEvent),
18212        #[prost(message, tag = "548")]
18213        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
18214        #[prost(message, tag = "549")]
18215        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
18216        #[prost(message, tag = "550")]
18217        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
18218        #[prost(message, tag = "551")]
18219        HrtimerStart(super::HrtimerStartFtraceEvent),
18220        #[prost(message, tag = "552")]
18221        HrtimerCancel(super::HrtimerCancelFtraceEvent),
18222        #[prost(message, tag = "553")]
18223        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
18224        #[prost(message, tag = "554")]
18225        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
18226        #[prost(message, tag = "555")]
18227        TimerStart(super::TimerStartFtraceEvent),
18228        #[prost(message, tag = "556")]
18229        TimerCancel(super::TimerCancelFtraceEvent),
18230        #[prost(message, tag = "557")]
18231        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
18232        #[prost(message, tag = "558")]
18233        TimerExpireExit(super::TimerExpireExitFtraceEvent),
18234        #[prost(message, tag = "559")]
18235        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
18236        #[prost(message, tag = "560")]
18237        LocalTimerExit(super::LocalTimerExitFtraceEvent),
18238        #[prost(message, tag = "561")]
18239        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
18240        #[prost(message, tag = "562")]
18241        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
18242        #[prost(message, tag = "563")]
18243        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
18244        #[prost(message, tag = "564")]
18245        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
18246        #[prost(message, tag = "565")]
18247        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
18248        #[prost(message, tag = "566")]
18249        Dwc3Event(super::Dwc3EventFtraceEvent),
18250        #[prost(message, tag = "567")]
18251        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
18252        #[prost(message, tag = "568")]
18253        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
18254        #[prost(message, tag = "569")]
18255        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
18256        #[prost(message, tag = "570")]
18257        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
18258        #[prost(message, tag = "571")]
18259        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
18260        #[prost(message, tag = "572")]
18261        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
18262        #[prost(message, tag = "573")]
18263        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
18264        #[prost(message, tag = "574")]
18265        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
18266        #[prost(message, tag = "575")]
18267        Dwc3Writel(super::Dwc3WritelFtraceEvent),
18268        #[prost(message, tag = "576")]
18269        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
18270        #[prost(message, tag = "577")]
18271        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
18272        #[prost(message, tag = "578")]
18273        HostFfaCall(super::HostFfaCallFtraceEvent),
18274        #[prost(message, tag = "579")]
18275        DmabufRssStat(super::DmabufRssStatFtraceEvent),
18276        #[prost(message, tag = "580")]
18277        IommuIdmap(super::IommuIdmapFtraceEvent),
18278        #[prost(message, tag = "581")]
18279        PsciMemProtect(super::PsciMemProtectFtraceEvent),
18280        #[prost(message, tag = "582")]
18281        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
18282        #[prost(message, tag = "583")]
18283        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
18284        #[prost(message, tag = "584")]
18285        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
18286        #[prost(message, tag = "585")]
18287        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
18288        #[prost(message, tag = "586")]
18289        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
18290        #[prost(message, tag = "587")]
18291        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
18292        #[prost(message, tag = "588")]
18293        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
18294        #[prost(message, tag = "589")]
18295        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
18296        #[prost(message, tag = "590")]
18297        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
18298        #[prost(message, tag = "591")]
18299        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
18300        #[prost(message, tag = "592")]
18301        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
18302        #[prost(message, tag = "593")]
18303        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
18304        #[prost(message, tag = "594")]
18305        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
18306        #[prost(message, tag = "595")]
18307        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
18308        #[prost(message, tag = "596")]
18309        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
18310        #[prost(message, tag = "597")]
18311        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
18312        #[prost(message, tag = "598")]
18313        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
18314        #[prost(message, tag = "599")]
18315        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
18316        #[prost(message, tag = "600")]
18317        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
18318        #[prost(message, tag = "601")]
18319        GpuPowerState(super::GpuPowerStateFtraceEvent),
18320        #[prost(message, tag = "602")]
18321        GramCollision(super::GramCollisionFtraceEvent),
18322        #[prost(message, tag = "603")]
18323        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
18324        #[prost(message, tag = "604")]
18325        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
18326        #[prost(message, tag = "605")]
18327        DpuDispFrameDoneTimeout(super::DpuDispFrameDoneTimeoutFtraceEvent),
18328        #[prost(message, tag = "606")]
18329        DpuDispFrameStartTimeout(super::DpuDispFrameStartTimeoutFtraceEvent),
18330        #[prost(message, tag = "607")]
18331        MmVmscanMemcgReclaimBegin(super::MmVmscanMemcgReclaimBeginFtraceEvent),
18332        #[prost(message, tag = "608")]
18333        MmVmscanMemcgReclaimEnd(super::MmVmscanMemcgReclaimEndFtraceEvent),
18334        #[prost(message, tag = "609")]
18335        DpuDispFrameDoneMissing(super::DpuDispFrameDoneMissingFtraceEvent),
18336        #[prost(message, tag = "610")]
18337        DpuDispFrameStartMissing(super::DpuDispFrameStartMissingFtraceEvent),
18338        #[prost(message, tag = "611")]
18339        PanelSettingsFull(super::PanelSettingsFullFtraceEvent),
18340        #[prost(message, tag = "612")]
18341        PanelSettingsLite(super::PanelSettingsLiteFtraceEvent),
18342        #[prost(message, tag = "613")]
18343        DpuDispDpuLineUnderrun(super::DpuDispDpuLineUnderrunFtraceEvent),
18344        #[prost(message, tag = "614")]
18345        PsciDomainIdleExit(super::PsciDomainIdleExitFtraceEvent),
18346        #[prost(message, tag = "615")]
18347        PsciDomainIdleEnter(super::PsciDomainIdleEnterFtraceEvent),
18348        #[prost(message, tag = "616")]
18349        LongIrq(super::LongIrqFtraceEvent),
18350        #[prost(message, tag = "617")]
18351        LongSoftirq(super::LongSoftirqFtraceEvent),
18352    }
18353}
18354/// Per-CPU kernel buffer stats for the ftrace data source gathered from
18355/// /sys/kernel/tracing/per_cpu/cpuX/stats.
18356#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18357pub struct FtraceCpuStats {
18358    /// CPU index.
18359    #[prost(uint64, optional, tag = "1")]
18360    pub cpu: ::core::option::Option<u64>,
18361    /// Number of entries currently in the kernel buffer.
18362    #[prost(uint64, optional, tag = "2")]
18363    pub entries: ::core::option::Option<u64>,
18364    /// Number of events lost in kernel buffers due to overwriting of old events
18365    /// before userspace had a chance to drain them. Valid if the buffer is in
18366    /// "overwrite" mode, otherwise see |dropped_events|.
18367    #[prost(uint64, optional, tag = "3")]
18368    pub overrun: ::core::option::Option<u64>,
18369    /// This should always be zero. If not the buffer size is way too small or
18370    /// something went wrong with the tracer. Quoting the kernel: "number of
18371    /// commits failing due to the buffer wrapping around while there are
18372    /// uncommitted events, such as during an interrupt storm".
18373    #[prost(uint64, optional, tag = "4")]
18374    pub commit_overrun: ::core::option::Option<u64>,
18375    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
18376    /// The field should be named "bytes", but is misnamed for historical reasons.
18377    /// This value has known inaccuracies before Linux v6.6:
18378    /// <https://github.com/torvalds/linux/commit/45d99ea>
18379    #[prost(uint64, optional, tag = "5")]
18380    pub bytes_read: ::core::option::Option<u64>,
18381    /// The timestamp for the oldest event still in the ring buffer.
18382    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18383    #[prost(double, optional, tag = "6")]
18384    pub oldest_event_ts: ::core::option::Option<f64>,
18385    /// The current timestamp.
18386    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18387    #[prost(double, optional, tag = "7")]
18388    pub now_ts: ::core::option::Option<f64>,
18389    /// If the kernel buffer has overwrite mode disabled, this will show the number
18390    /// of new events that were lost because the buffer was full. This is similar
18391    /// to |overrun| but only for the overwrite=false case.
18392    #[prost(uint64, optional, tag = "8")]
18393    pub dropped_events: ::core::option::Option<u64>,
18394    /// The number of events read (consumed) from the buffer by userspace.
18395    #[prost(uint64, optional, tag = "9")]
18396    pub read_events: ::core::option::Option<u64>,
18397}
18398/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
18399#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18400pub struct FtraceKprobeStats {
18401    /// Cumulative number of kprobe events generated for this function
18402    #[prost(int64, optional, tag = "1")]
18403    pub hits: ::core::option::Option<i64>,
18404    /// Cumulative number of kprobe events that could not be generated for this
18405    /// function and were missed.  This happens when too much nesting
18406    /// happens between a kprobe and its kretprobe, overflowing the
18407    /// maxactives buffer.
18408    #[prost(int64, optional, tag = "2")]
18409    pub misses: ::core::option::Option<i64>,
18410}
18411/// Errors and kernel buffer stats for the ftrace data source.
18412#[derive(Clone, PartialEq, ::prost::Message)]
18413pub struct FtraceStats {
18414    /// A pair of FtraceStats is written on every trace flush:
18415    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
18416    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
18417    ///                   before this packet was written. For simple traces this
18418    ///                   will be once at the end of the trace.
18419    #[prost(enumeration = "ftrace_stats::Phase", optional, tag = "1")]
18420    pub phase: ::core::option::Option<i32>,
18421    /// Per-CPU stats (one entry for each CPU).
18422    #[prost(message, repeated, tag = "2")]
18423    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
18424    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
18425    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
18426    /// trace or not. It can be used to debug kptr_restrict or security-related
18427    /// errors.
18428    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
18429    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
18430    #[prost(uint32, optional, tag = "3")]
18431    pub kernel_symbols_parsed: ::core::option::Option<u32>,
18432    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
18433    #[prost(uint32, optional, tag = "4")]
18434    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
18435    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
18436    /// one or more atrace categories not available on the device.
18437    #[prost(string, optional, tag = "5")]
18438    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
18439    /// Error message due to exclusivity violation of a single-tenant feature.
18440    #[prost(string, optional, tag = "13")]
18441    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
18442    /// Ftrace events requested by the config but not present on device.
18443    #[prost(string, repeated, tag = "6")]
18444    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18445    /// Ftrace events requested by the config and present on device, but which we
18446    /// failed to enable due to permissions, or due to a conflicting option
18447    /// (currently FtraceConfig.disable_generic_events).
18448    #[prost(string, repeated, tag = "7")]
18449    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18450    /// The data source was configured to preserve existing events in the ftrace
18451    /// buffer before the start of the trace.
18452    #[prost(bool, optional, tag = "8")]
18453    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
18454    /// Unique errors encountered during reading and parsing of the raw ftrace
18455    /// data. Ring buffer ABI related errors will also be recorded in the
18456    /// affected FtraceEventBundles with a timestamp.
18457    /// Any traces with entries in this field should be investigated, as they
18458    /// indicate a bug in perfetto or the kernel.
18459    #[prost(enumeration = "FtraceParseStatus", repeated, packed = "false", tag = "9")]
18460    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
18461    /// Kprobe profile stats for functions hits and misses
18462    #[prost(message, optional, tag = "10")]
18463    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
18464    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
18465    /// Added in: perfetto v52.
18466    #[prost(uint32, optional, tag = "11")]
18467    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
18468    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
18469    /// on the value we're writing into the tracefs control file. Might not be
18470    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
18471    /// scratch pages (and/or other factors). Added in: perfetto v52.
18472    #[prost(uint32, optional, tag = "12")]
18473    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
18474}
18475/// Nested message and enum types in `FtraceStats`.
18476pub mod ftrace_stats {
18477    #[derive(
18478        Clone,
18479        Copy,
18480        Debug,
18481        PartialEq,
18482        Eq,
18483        Hash,
18484        PartialOrd,
18485        Ord,
18486        ::prost::Enumeration
18487    )]
18488    #[repr(i32)]
18489    pub enum Phase {
18490        Unspecified = 0,
18491        StartOfTrace = 1,
18492        EndOfTrace = 2,
18493    }
18494    impl Phase {
18495        /// String value of the enum field names used in the ProtoBuf definition.
18496        ///
18497        /// The values are not transformed in any way and thus are considered stable
18498        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18499        pub fn as_str_name(&self) -> &'static str {
18500            match self {
18501                Self::Unspecified => "UNSPECIFIED",
18502                Self::StartOfTrace => "START_OF_TRACE",
18503                Self::EndOfTrace => "END_OF_TRACE",
18504            }
18505        }
18506        /// Creates an enum from field names used in the ProtoBuf definition.
18507        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18508            match value {
18509                "UNSPECIFIED" => Some(Self::Unspecified),
18510                "START_OF_TRACE" => Some(Self::StartOfTrace),
18511                "END_OF_TRACE" => Some(Self::EndOfTrace),
18512                _ => None,
18513            }
18514        }
18515    }
18516}
18517/// The result of tracing one or more ftrace data pages from a single per-cpu
18518/// kernel ring buffer. If collating multiple pages' worth of events, all of
18519/// them come from contiguous pages, with no kernel data loss in between.
18520#[derive(Clone, PartialEq, ::prost::Message)]
18521pub struct FtraceEventBundle {
18522    #[prost(uint32, optional, tag = "1")]
18523    pub cpu: ::core::option::Option<u32>,
18524    #[prost(message, repeated, tag = "2")]
18525    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
18526    /// Set to true if there was data loss between the last time we've read from
18527    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
18528    /// in this bundle.
18529    #[prost(bool, optional, tag = "3")]
18530    pub lost_events: ::core::option::Option<bool>,
18531    #[prost(message, optional, tag = "4")]
18532    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
18533    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
18534    /// timestamps as that counts during suspend, is available to userspace, and
18535    /// is coherent across cpus.
18536    ///
18537    /// If this field is set, it means that a different clock was used during
18538    /// recording. Either because the boot clock is unavailable (e.g. old kernels
18539    /// before 3.x), or the trace config has set an incompatible option
18540    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
18541    /// trace_processor will do best-effort clock alignment using timestamp pairs
18542    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
18543    /// when the ftrace clock is "boot", as that is the default assumption.
18544    ///
18545    /// Some clocks (local/global) are technically per-cpu, but we make a
18546    /// simplifying assumption that they are global, as their inter-cpu skew
18547    /// should be reasonably bounded on modern systems.
18548    ///
18549    /// Added in: perfetto v19. Android T (13).
18550    #[prost(enumeration = "FtraceClock", optional, tag = "5")]
18551    pub ftrace_clock: ::core::option::Option<i32>,
18552    /// The timestamp according to the ftrace clock, taken at the same instant as
18553    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
18554    /// will be in the future relative to the data covered by this bundle.
18555    /// Implementation note: Populated by reading the 'now ts:' field in
18556    /// tracefs/per_cpu/cpu0/stat.
18557    ///
18558    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18559    #[prost(int64, optional, tag = "6")]
18560    pub ftrace_timestamp: ::core::option::Option<i64>,
18561    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
18562    /// |ftrace_timestamp|.
18563    ///
18564    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18565    #[prost(int64, optional, tag = "7")]
18566    pub boot_timestamp: ::core::option::Option<i64>,
18567    #[prost(message, repeated, tag = "8")]
18568    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
18569    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
18570    /// primary difference is that this field tracked the last timestamp read from
18571    /// the per-cpu buffer, while the newer field tracks events that get
18572    /// serialised into the trace.
18573    /// Added in: perfetto v44.
18574    #[prost(uint64, optional, tag = "9")]
18575    pub last_read_event_timestamp: ::core::option::Option<u64>,
18576    /// The timestamp (using ftrace clock) of the last event written into this
18577    /// data source on this cpu. In other words: the last event in the previous
18578    /// bundle.
18579    /// Lets the trace processing find an initial timestamp after which ftrace
18580    /// data is known to be valid across all cpus. Of particular importance when
18581    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
18582    /// oldest bundles can skew the first valid timestamp per cpu significantly.
18583    /// Added in: perfetto v47.
18584    #[prost(uint64, optional, tag = "10")]
18585    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
18586    #[prost(message, repeated, tag = "11")]
18587    pub generic_event_descriptors: ::prost::alloc::vec::Vec<
18588        ftrace_event_bundle::GenericEventDescriptor,
18589    >,
18590    /// Written only on android builds if the config sets |debug_ftrace_abi|.
18591    /// Contains the raw ring buffer tracing page that the implementation could
18592    /// not parse.
18593    /// Addded in: perfetto v50.
18594    #[prost(bytes = "vec", optional, tag = "512")]
18595    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18596}
18597/// Nested message and enum types in `FtraceEventBundle`.
18598pub mod ftrace_event_bundle {
18599    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
18600    /// a subset of events & their fields is recorded.
18601    /// All fields (except comms) are stored in a structure-of-arrays form, one
18602    /// entry in each repeated field per event.
18603    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18604    pub struct CompactSched {
18605        /// Interned table of unique strings for this bundle.
18606        #[prost(string, repeated, tag = "5")]
18607        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18608        /// Delta-encoded timestamps across all sched_switch events within this
18609        /// bundle. The first is absolute, each next one is relative to its
18610        /// predecessor.
18611        #[prost(uint64, repeated, tag = "1")]
18612        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
18613        #[prost(int64, repeated, tag = "2")]
18614        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
18615        #[prost(int32, repeated, tag = "3")]
18616        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
18617        #[prost(int32, repeated, tag = "4")]
18618        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
18619        /// One per event, index into |intern_table| corresponding to the
18620        /// next_comm field of the event.
18621        #[prost(uint32, repeated, tag = "6")]
18622        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
18623        /// Delta-encoded timestamps across all sched_waking events within this
18624        /// bundle. The first is absolute, each next one is relative to its
18625        /// predecessor.
18626        #[prost(uint64, repeated, tag = "7")]
18627        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
18628        #[prost(int32, repeated, tag = "8")]
18629        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
18630        #[prost(int32, repeated, tag = "9")]
18631        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
18632        #[prost(int32, repeated, tag = "10")]
18633        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
18634        /// One per event, index into |intern_table| corresponding to the
18635        /// comm field of the event.
18636        #[prost(uint32, repeated, tag = "11")]
18637        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
18638        #[prost(uint32, repeated, tag = "12")]
18639        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
18640    }
18641    /// Errors encountered during parsing of the raw ftrace data. In case of ring
18642    /// buffer layout errors, the parser skips the rest of the offending kernel
18643    /// buffer page and continues from the next page.
18644    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
18645    /// seen within the duration of the trace (even if the affected bundles get
18646    /// overwritten in ring buffer mode).
18647    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18648    pub struct FtraceError {
18649        /// Timestamp of the data that we're unable to parse, in the ftrace clock
18650        /// domain. Currently, we use the base timestamp of the tracing page
18651        /// containing the bad record rather than the time of the record itself.
18652        #[prost(uint64, optional, tag = "1")]
18653        pub timestamp: ::core::option::Option<u64>,
18654        #[prost(enumeration = "super::FtraceParseStatus", optional, tag = "2")]
18655        pub status: ::core::option::Option<i32>,
18656    }
18657    /// Describes the serialised |FtraceEvent| protos for events not known at
18658    /// compile time, when using the |denser_generic_event_encoding| option.
18659    /// Addded in: perfetto v50.
18660    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18661    pub struct GenericEventDescriptor {
18662        /// submessage id within FtraceEvent described by |event_descriptor|.
18663        #[prost(int32, optional, tag = "1")]
18664        pub field_id: ::core::option::Option<i32>,
18665        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
18666        /// The event name itself is in |event_descriptor.name|.
18667        #[prost(string, optional, tag = "3")]
18668        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
18669        /// serialised DescriptorProto.
18670        #[prost(bytes = "vec", optional, tag = "2")]
18671        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18672    }
18673}
18674/// GenericGpuFrequencyEvent is the standard proto to capture GPU
18675/// frequency change events in a generic kernel implementation.
18676#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18677pub struct GenericGpuFrequencyEvent {
18678    /// GPU on which the frequency change occurred.
18679    #[prost(uint32, optional, tag = "1")]
18680    pub gpu_id: ::core::option::Option<u32>,
18681    /// Frequency (kHz) of the GPU.
18682    #[prost(uint32, optional, tag = "2")]
18683    pub frequency_khz: ::core::option::Option<u32>,
18684}
18685/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
18686/// frequency change events in a generic kernel implementation.
18687#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18688pub struct GenericKernelCpuFrequencyEvent {
18689    /// CPU in which the event occurred.
18690    #[prost(int32, optional, tag = "1")]
18691    pub cpu: ::core::option::Option<i32>,
18692    /// Frequency (Hz) of the CPU.
18693    #[prost(int64, optional, tag = "2")]
18694    pub freq_hz: ::core::option::Option<i64>,
18695}
18696/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18697/// change events in a generic kernel implementation. This is mainly for the
18698/// case where scheduler events are not directly supported in the kernel's
18699/// tracing mechanism.
18700///
18701/// By capturing these task state events Perfetto is able to infer higher-level
18702/// events such as context switches and task waking events, providing as much
18703/// parity as possible with established tracing frameworks such as
18704/// Linux's ftrace.
18705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18706pub struct GenericKernelTaskStateEvent {
18707    /// CPU in which the event occurred.
18708    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18709    /// no specific meaning to the cpu field in a non-running state event.
18710    #[prost(int32, optional, tag = "1")]
18711    pub cpu: ::core::option::Option<i32>,
18712    /// Command name for the thread.
18713    #[prost(string, optional, tag = "2")]
18714    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18715    /// Thread id.
18716    #[prost(int64, optional, tag = "3")]
18717    pub tid: ::core::option::Option<i64>,
18718    /// New state of the thread.
18719    #[prost(
18720        enumeration = "generic_kernel_task_state_event::TaskStateEnum",
18721        optional,
18722        tag = "4"
18723    )]
18724    pub state: ::core::option::Option<i32>,
18725    /// Priority of the thread.
18726    /// This value is OS agnostic and should only be interpreted based on the
18727    /// kernel who emitted the message.
18728    #[prost(int32, optional, tag = "5")]
18729    pub prio: ::core::option::Option<i32>,
18730}
18731/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18732pub mod generic_kernel_task_state_event {
18733    /// TaskStateEnum represents the valid states of a thread.
18734    /// These states are a generic representation of the actual thread state and
18735    /// don't necessarily map one-to-one to the states the actual OS kernel
18736    /// tracks internally.
18737    ///
18738    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18739    /// an error resulting in potential data loss.
18740    #[derive(
18741        Clone,
18742        Copy,
18743        Debug,
18744        PartialEq,
18745        Eq,
18746        Hash,
18747        PartialOrd,
18748        Ord,
18749        ::prost::Enumeration
18750    )]
18751    #[repr(i32)]
18752    pub enum TaskStateEnum {
18753        TaskStateUnknown = 0,
18754        TaskStateCreated = 1,
18755        TaskStateRunnable = 2,
18756        TaskStateRunning = 3,
18757        TaskStateInterruptibleSleep = 4,
18758        TaskStateUninterruptibleSleep = 5,
18759        TaskStateStopped = 6,
18760        TaskStateDead = 7,
18761        TaskStateDestroyed = 8,
18762    }
18763    impl TaskStateEnum {
18764        /// String value of the enum field names used in the ProtoBuf definition.
18765        ///
18766        /// The values are not transformed in any way and thus are considered stable
18767        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18768        pub fn as_str_name(&self) -> &'static str {
18769            match self {
18770                Self::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18771                Self::TaskStateCreated => "TASK_STATE_CREATED",
18772                Self::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18773                Self::TaskStateRunning => "TASK_STATE_RUNNING",
18774                Self::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18775                Self::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18776                Self::TaskStateStopped => "TASK_STATE_STOPPED",
18777                Self::TaskStateDead => "TASK_STATE_DEAD",
18778                Self::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18779            }
18780        }
18781        /// Creates an enum from field names used in the ProtoBuf definition.
18782        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18783            match value {
18784                "TASK_STATE_UNKNOWN" => Some(Self::TaskStateUnknown),
18785                "TASK_STATE_CREATED" => Some(Self::TaskStateCreated),
18786                "TASK_STATE_RUNNABLE" => Some(Self::TaskStateRunnable),
18787                "TASK_STATE_RUNNING" => Some(Self::TaskStateRunning),
18788                "TASK_STATE_INTERRUPTIBLE_SLEEP" => {
18789                    Some(Self::TaskStateInterruptibleSleep)
18790                }
18791                "TASK_STATE_UNINTERRUPTIBLE_SLEEP" => {
18792                    Some(Self::TaskStateUninterruptibleSleep)
18793                }
18794                "TASK_STATE_STOPPED" => Some(Self::TaskStateStopped),
18795                "TASK_STATE_DEAD" => Some(Self::TaskStateDead),
18796                "TASK_STATE_DESTROYED" => Some(Self::TaskStateDestroyed),
18797                _ => None,
18798            }
18799        }
18800    }
18801}
18802/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18803/// of a thread.
18804#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18805pub struct GenericKernelTaskRenameEvent {
18806    /// Thread id.
18807    #[prost(int64, optional, tag = "1")]
18808    pub tid: ::core::option::Option<i64>,
18809    /// New command name for the thread.
18810    #[prost(string, optional, tag = "2")]
18811    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18812}
18813/// Metadata about the processes and threads in the trace.
18814/// The main goal of this proto is to provide a generic kernel
18815/// implementation a mechanism to outline its process structure.
18816#[derive(Clone, PartialEq, ::prost::Message)]
18817pub struct GenericKernelProcessTree {
18818    /// List of processes and threads in the kernel. These lists are incremental
18819    /// and not exhaustive. A process and its threads might show up separately in
18820    /// different ProcessTree messages. A thread might not show up at all, if
18821    /// no sched switch activity was detected, for instance:
18822    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{tid: 11, pid: 10}\] }
18823    /// #1 { threads: \[{tid: 12, pid: 10}\] }
18824    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{tid: 13, pid: 10}\] }
18825    #[prost(message, repeated, tag = "1")]
18826    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18827    #[prost(message, repeated, tag = "2")]
18828    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18829}
18830/// Nested message and enum types in `GenericKernelProcessTree`.
18831pub mod generic_kernel_process_tree {
18832    /// Representation of a thread.
18833    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18834    pub struct Thread {
18835        /// Thread id.
18836        #[prost(int64, optional, tag = "1")]
18837        pub tid: ::core::option::Option<i64>,
18838        /// Id of the parent process.
18839        #[prost(int64, optional, tag = "2")]
18840        pub pid: ::core::option::Option<i64>,
18841        /// The command name of the thread.
18842        #[prost(string, optional, tag = "3")]
18843        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18844        /// True if thread is the main thread.
18845        #[prost(bool, optional, tag = "4")]
18846        pub is_main_thread: ::core::option::Option<bool>,
18847        /// True if thread is an idle thread.
18848        #[prost(bool, optional, tag = "5")]
18849        pub is_idle: ::core::option::Option<bool>,
18850    }
18851    /// Representation of a process.
18852    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18853    pub struct Process {
18854        /// Process id.
18855        #[prost(int64, optional, tag = "1")]
18856        pub pid: ::core::option::Option<i64>,
18857        /// Parent process id.
18858        #[prost(int64, optional, tag = "2")]
18859        pub ppid: ::core::option::Option<i64>,
18860        /// The command line of the process.
18861        /// If the cmdline has spaces in it, then we use the characters from
18862        /// position 0 to the first instance of the space char (' ') as the name
18863        /// of the process. If no spaces are present, then the entire cmdline is
18864        /// used as the name.
18865        #[prost(string, optional, tag = "3")]
18866        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
18867    }
18868}
18869/// Events for emitting information about GPU counters.
18870///
18871/// There are two "modes" to use these protos:
18872///    1) Using GpuCounterDescriptor. This is the simplest way to use this proto
18873///       but has the limitation that counter ids are*global* so must only be
18874///       emitted by a single producer or requires coordination between different
18875///       producers. This is the mechanism which *must* be used by Android OEMS
18876///       to be complaint with CDD/CTS tests.
18877///    2) Using InternedGpuCounterDescriptor. This is generally recommended for
18878///       more complex use-cases involving multiple producers, multiple GPUs etc.
18879#[derive(Clone, PartialEq, ::prost::Message)]
18880pub struct GpuCounterEvent {
18881    #[prost(message, repeated, tag = "2")]
18882    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
18883    /// Identifier for GPU in a multi-gpu device.
18884    ///
18885    /// If `counter_descriptor_iid` is specified, the `gpu_id` in
18886    /// `InternedGpuCounterDescriptor` takes precedence over this field.
18887    #[prost(int32, optional, tag = "3")]
18888    pub gpu_id: ::core::option::Option<i32>,
18889    /// The specification for the GPU counters. Gives them information like the
18890    /// name of the counter, unit etc.
18891    #[prost(oneof = "gpu_counter_event::Desc", tags = "1, 4")]
18892    pub desc: ::core::option::Option<gpu_counter_event::Desc>,
18893}
18894/// Nested message and enum types in `GpuCounterEvent`.
18895pub mod gpu_counter_event {
18896    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
18897    pub struct GpuCounter {
18898        /// required. Identifier for counter.
18899        #[prost(uint32, optional, tag = "1")]
18900        pub counter_id: ::core::option::Option<u32>,
18901        /// required. Value of the counter.
18902        #[prost(oneof = "gpu_counter::Value", tags = "2, 3")]
18903        pub value: ::core::option::Option<gpu_counter::Value>,
18904    }
18905    /// Nested message and enum types in `GpuCounter`.
18906    pub mod gpu_counter {
18907        /// required. Value of the counter.
18908        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
18909        pub enum Value {
18910            #[prost(int64, tag = "2")]
18911            IntValue(i64),
18912            #[prost(double, tag = "3")]
18913            DoubleValue(f64),
18914        }
18915    }
18916    /// The specification for the GPU counters. Gives them information like the
18917    /// name of the counter, unit etc.
18918    #[derive(Clone, PartialEq, ::prost::Oneof)]
18919    pub enum Desc {
18920        /// Must be specified on first trace packet of each session if using mode 1.
18921        /// (e.g. if you're an Android GPU vendor).
18922        #[prost(message, tag = "1")]
18923        CounterDescriptor(super::GpuCounterDescriptor),
18924        /// ID to a InternedGpuCounterDescriptor in InternedData. Must be specified
18925        /// on first trace packet of the trusted sequence if using mode 2.
18926        #[prost(uint64, tag = "4")]
18927        CounterDescriptorIid(u64),
18928    }
18929}
18930/// Interned GPU counter descriptor for sequence-scoped counter specs.
18931#[derive(Clone, PartialEq, ::prost::Message)]
18932pub struct InternedGpuCounterDescriptor {
18933    #[prost(uint64, optional, tag = "1")]
18934    pub iid: ::core::option::Option<u64>,
18935    #[prost(message, optional, tag = "2")]
18936    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
18937    /// optional. Identifier for GPU in a multi-gpu device.
18938    #[prost(int32, optional, tag = "3")]
18939    pub gpu_id: ::core::option::Option<i32>,
18940}
18941/// Message for logging events GPU data producer.
18942#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18943pub struct GpuLog {
18944    #[prost(enumeration = "gpu_log::Severity", optional, tag = "1")]
18945    pub severity: ::core::option::Option<i32>,
18946    #[prost(string, optional, tag = "2")]
18947    pub tag: ::core::option::Option<::prost::alloc::string::String>,
18948    #[prost(string, optional, tag = "3")]
18949    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
18950}
18951/// Nested message and enum types in `GpuLog`.
18952pub mod gpu_log {
18953    #[derive(
18954        Clone,
18955        Copy,
18956        Debug,
18957        PartialEq,
18958        Eq,
18959        Hash,
18960        PartialOrd,
18961        Ord,
18962        ::prost::Enumeration
18963    )]
18964    #[repr(i32)]
18965    pub enum Severity {
18966        LogSeverityUnspecified = 0,
18967        LogSeverityVerbose = 1,
18968        LogSeverityDebug = 2,
18969        LogSeverityInfo = 3,
18970        LogSeverityWarning = 4,
18971        LogSeverityError = 5,
18972    }
18973    impl Severity {
18974        /// String value of the enum field names used in the ProtoBuf definition.
18975        ///
18976        /// The values are not transformed in any way and thus are considered stable
18977        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18978        pub fn as_str_name(&self) -> &'static str {
18979            match self {
18980                Self::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
18981                Self::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
18982                Self::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
18983                Self::LogSeverityInfo => "LOG_SEVERITY_INFO",
18984                Self::LogSeverityWarning => "LOG_SEVERITY_WARNING",
18985                Self::LogSeverityError => "LOG_SEVERITY_ERROR",
18986            }
18987        }
18988        /// Creates an enum from field names used in the ProtoBuf definition.
18989        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18990            match value {
18991                "LOG_SEVERITY_UNSPECIFIED" => Some(Self::LogSeverityUnspecified),
18992                "LOG_SEVERITY_VERBOSE" => Some(Self::LogSeverityVerbose),
18993                "LOG_SEVERITY_DEBUG" => Some(Self::LogSeverityDebug),
18994                "LOG_SEVERITY_INFO" => Some(Self::LogSeverityInfo),
18995                "LOG_SEVERITY_WARNING" => Some(Self::LogSeverityWarning),
18996                "LOG_SEVERITY_ERROR" => Some(Self::LogSeverityError),
18997                _ => None,
18998            }
18999        }
19000    }
19001}
19002/// Generated by Android's GpuService.
19003#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19004pub struct GpuMemTotalEvent {
19005    #[prost(uint32, optional, tag = "1")]
19006    pub gpu_id: ::core::option::Option<u32>,
19007    #[prost(uint32, optional, tag = "2")]
19008    pub pid: ::core::option::Option<u32>,
19009    #[prost(uint64, optional, tag = "3")]
19010    pub size: ::core::option::Option<u64>,
19011}
19012/// next id: 22
19013#[derive(Clone, PartialEq, ::prost::Message)]
19014pub struct GpuRenderStageEvent {
19015    /// required. Unique ID for the event.
19016    #[prost(uint64, optional, tag = "1")]
19017    pub event_id: ::core::option::Option<u64>,
19018    /// optional. Duration of the event in nanoseconds. If unset, this is a
19019    /// single time point event.
19020    #[prost(uint64, optional, tag = "2")]
19021    pub duration: ::core::option::Option<u64>,
19022    /// required. ID to a hardware queue description in the specifications.
19023    /// InternedGpuRenderStageSpecification
19024    #[prost(uint64, optional, tag = "13")]
19025    pub hw_queue_iid: ::core::option::Option<u64>,
19026    /// required. ID to a render stage description in the specifications.
19027    /// InternedGpuRenderStageSpecification
19028    #[prost(uint64, optional, tag = "14")]
19029    pub stage_iid: ::core::option::Option<u64>,
19030    /// optional. Identifier for GPU in a multi-gpu device.
19031    #[prost(int32, optional, tag = "11")]
19032    pub gpu_id: ::core::option::Option<i32>,
19033    /// required. Graphics context for the event.
19034    /// For OpenGL, this is the GL context.
19035    /// For Vulkan, this is the VkDevice.
19036    #[prost(uint64, optional, tag = "5")]
19037    pub context: ::core::option::Option<u64>,
19038    /// optional. The render target for this event.
19039    /// For OpenGL, this is the GL frame buffer handle.
19040    /// For Vulkan, this is the VkFrameBuffer handle.
19041    #[prost(uint64, optional, tag = "8")]
19042    pub render_target_handle: ::core::option::Option<u64>,
19043    /// optional. Submission ID generated by the UMD.
19044    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
19045    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
19046    /// to a single API submission should share the same ID.
19047    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
19048    #[prost(uint32, optional, tag = "10")]
19049    pub submission_id: ::core::option::Option<u32>,
19050    #[prost(message, repeated, tag = "6")]
19051    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
19052    /// optional. The Vulkan render pass handle.
19053    #[prost(uint64, optional, tag = "9")]
19054    pub render_pass_handle: ::core::option::Option<u64>,
19055    /// optional. An ID for the render pass instance. This is used to correlate
19056    /// different events on different queues produced by the same Vulkan render
19057    /// pass instance.
19058    #[prost(uint64, optional, tag = "16")]
19059    pub render_pass_instance_id: ::core::option::Option<u64>,
19060    /// optional. A bit mask representing which render subpasses contributed to
19061    /// this render stage event.  Subpass index 0 is represented by setting the
19062    /// LSB of the mask.  Additional mask can be added for subpass index greater
19063    /// than 63.
19064    #[prost(uint64, repeated, packed = "false", tag = "15")]
19065    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
19066    /// optional. The Vulkan command buffer handle.
19067    #[prost(uint64, optional, tag = "12")]
19068    pub command_buffer_handle: ::core::option::Option<u64>,
19069    /// Event IDs of other GpuRenderStageEvents that this event
19070    /// had to wait on before it could run.
19071    #[prost(uint64, repeated, packed = "false", tag = "18")]
19072    pub event_wait_ids: ::prost::alloc::vec::Vec<u64>,
19073    /// optional. ID to a compute kernel description in the interned data.
19074    /// InternedComputeKernel
19075    #[prost(uint64, optional, tag = "19")]
19076    pub kernel_iid: ::core::option::Option<u64>,
19077    /// optional. Compute kernel launch parameters for this event.
19078    #[prost(message, optional, tag = "21")]
19079    pub launch: ::core::option::Option<gpu_render_stage_event::ComputeKernelLaunch>,
19080    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
19081    /// InternedGpuRenderStageSpecification instead.
19082    #[deprecated]
19083    #[prost(message, optional, tag = "7")]
19084    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
19085    /// Deprecated. Use hw_queue_iid instead;
19086    #[deprecated]
19087    #[prost(int32, optional, tag = "3")]
19088    pub hw_queue_id: ::core::option::Option<i32>,
19089    /// Deprecated. Use stage_iid instead;
19090    #[deprecated]
19091    #[prost(int32, optional, tag = "4")]
19092    pub stage_id: ::core::option::Option<i32>,
19093    /// optional. Custom name for this render stage event. When set, this
19094    /// provides a name for the stage instead of using the name from the stage
19095    /// specification.
19096    #[prost(oneof = "gpu_render_stage_event::NameField", tags = "17, 20")]
19097    pub name_field: ::core::option::Option<gpu_render_stage_event::NameField>,
19098}
19099/// Nested message and enum types in `GpuRenderStageEvent`.
19100pub mod gpu_render_stage_event {
19101    /// optional. Additional data for the user. This may include attributes for
19102    /// the event like resource ids, shaders, etc.
19103    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19104    pub struct ExtraData {
19105        #[prost(string, optional, tag = "1")]
19106        pub name: ::core::option::Option<::prost::alloc::string::String>,
19107        #[prost(string, optional, tag = "2")]
19108        pub value: ::core::option::Option<::prost::alloc::string::String>,
19109    }
19110    /// 3D unsigned integer vector for grid and workgroup dimensions.
19111    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19112    pub struct Dim3 {
19113        #[prost(uint32, optional, tag = "1")]
19114        pub x: ::core::option::Option<u32>,
19115        #[prost(uint32, optional, tag = "2")]
19116        pub y: ::core::option::Option<u32>,
19117        #[prost(uint32, optional, tag = "3")]
19118        pub z: ::core::option::Option<u32>,
19119    }
19120    /// Typed key/value argument for extending compute kernel descriptions
19121    /// and launch parameters with custom data.
19122    #[derive(Clone, PartialEq, ::prost::Message)]
19123    pub struct ExtraComputeArg {
19124        #[prost(oneof = "extra_compute_arg::NameField", tags = "1, 2")]
19125        pub name_field: ::core::option::Option<extra_compute_arg::NameField>,
19126        #[prost(oneof = "extra_compute_arg::Value", tags = "3, 4, 5, 6, 7")]
19127        pub value: ::core::option::Option<extra_compute_arg::Value>,
19128    }
19129    /// Nested message and enum types in `ExtraComputeArg`.
19130    pub mod extra_compute_arg {
19131        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19132        pub enum NameField {
19133            /// Interned InternedComputeArgName.
19134            #[prost(uint64, tag = "1")]
19135            NameIid(u64),
19136            /// Non-interned variant.
19137            #[prost(string, tag = "2")]
19138            Name(::prost::alloc::string::String),
19139        }
19140        #[derive(Clone, PartialEq, ::prost::Oneof)]
19141        pub enum Value {
19142            #[prost(int64, tag = "3")]
19143            IntValue(i64),
19144            #[prost(uint64, tag = "4")]
19145            UintValue(u64),
19146            #[prost(double, tag = "5")]
19147            DoubleValue(f64),
19148            #[prost(string, tag = "6")]
19149            StringValue(::prost::alloc::string::String),
19150            /// Interned InternedString via debug_annotation_string_values.
19151            #[prost(uint64, tag = "7")]
19152            StringValueIid(u64),
19153        }
19154    }
19155    /// Compute kernel launch parameters for a single dispatch.
19156    #[derive(Clone, PartialEq, ::prost::Message)]
19157    pub struct ComputeKernelLaunch {
19158        /// Grid dimensions (number of workgroups in each dimension).
19159        #[prost(message, optional, tag = "1")]
19160        pub grid_size: ::core::option::Option<Dim3>,
19161        /// Workgroup dimensions (number of threads per workgroup in each dimension).
19162        #[prost(message, optional, tag = "2")]
19163        pub workgroup_size: ::core::option::Option<Dim3>,
19164        /// Additional typed launch parameters (e.g. registers_per_thread,
19165        /// shared_mem_dynamic, shared_mem_static).
19166        #[prost(message, repeated, tag = "3")]
19167        pub args: ::prost::alloc::vec::Vec<ExtraComputeArg>,
19168    }
19169    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
19170    /// The first trace packet of each session should include a Specifications
19171    /// to enumerate *all* IDs that will be used. The timestamp of this packet
19172    /// must be earlier than all other packets. Only one packet with Specifications
19173    /// is expected.
19174    #[derive(Clone, PartialEq, ::prost::Message)]
19175    pub struct Specifications {
19176        #[prost(message, optional, tag = "1")]
19177        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
19178        /// Labels to categorize the hw Queue this event goes on.
19179        #[prost(message, repeated, tag = "2")]
19180        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
19181        /// Labels to categorize render stage(binning, render, compute etc).
19182        #[prost(message, repeated, tag = "3")]
19183        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
19184    }
19185    /// Nested message and enum types in `Specifications`.
19186    pub mod specifications {
19187        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19188        pub struct ContextSpec {
19189            #[prost(uint64, optional, tag = "1")]
19190            pub context: ::core::option::Option<u64>,
19191            #[prost(int32, optional, tag = "2")]
19192            pub pid: ::core::option::Option<i32>,
19193        }
19194        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19195        pub struct Description {
19196            #[prost(string, optional, tag = "1")]
19197            pub name: ::core::option::Option<::prost::alloc::string::String>,
19198            #[prost(string, optional, tag = "2")]
19199            pub description: ::core::option::Option<::prost::alloc::string::String>,
19200        }
19201    }
19202    /// optional. Custom name for this render stage event. When set, this
19203    /// provides a name for the stage instead of using the name from the stage
19204    /// specification.
19205    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19206    pub enum NameField {
19207        #[prost(string, tag = "17")]
19208        Name(::prost::alloc::string::String),
19209        /// Interned event name. Refers to EventName in InternedData.
19210        #[prost(uint64, tag = "20")]
19211        NameIid(u64),
19212    }
19213}
19214/// The iid is the numeric value of either the GL Context or the VkDevice
19215/// handle.
19216#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19217pub struct InternedGraphicsContext {
19218    #[prost(uint64, optional, tag = "1")]
19219    pub iid: ::core::option::Option<u64>,
19220    #[prost(int32, optional, tag = "2")]
19221    pub pid: ::core::option::Option<i32>,
19222    #[prost(enumeration = "interned_graphics_context::Api", optional, tag = "3")]
19223    pub api: ::core::option::Option<i32>,
19224}
19225/// Nested message and enum types in `InternedGraphicsContext`.
19226pub mod interned_graphics_context {
19227    #[derive(
19228        Clone,
19229        Copy,
19230        Debug,
19231        PartialEq,
19232        Eq,
19233        Hash,
19234        PartialOrd,
19235        Ord,
19236        ::prost::Enumeration
19237    )]
19238    #[repr(i32)]
19239    pub enum Api {
19240        Undefined = 0,
19241        OpenGl = 1,
19242        Vulkan = 2,
19243        OpenCl = 3,
19244        Cuda = 4,
19245        Hip = 5,
19246    }
19247    impl Api {
19248        /// String value of the enum field names used in the ProtoBuf definition.
19249        ///
19250        /// The values are not transformed in any way and thus are considered stable
19251        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19252        pub fn as_str_name(&self) -> &'static str {
19253            match self {
19254                Self::Undefined => "UNDEFINED",
19255                Self::OpenGl => "OPEN_GL",
19256                Self::Vulkan => "VULKAN",
19257                Self::OpenCl => "OPEN_CL",
19258                Self::Cuda => "CUDA",
19259                Self::Hip => "HIP",
19260            }
19261        }
19262        /// Creates an enum from field names used in the ProtoBuf definition.
19263        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19264            match value {
19265                "UNDEFINED" => Some(Self::Undefined),
19266                "OPEN_GL" => Some(Self::OpenGl),
19267                "VULKAN" => Some(Self::Vulkan),
19268                "OPEN_CL" => Some(Self::OpenCl),
19269                "CUDA" => Some(Self::Cuda),
19270                "HIP" => Some(Self::Hip),
19271                _ => None,
19272            }
19273        }
19274    }
19275}
19276#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19277pub struct InternedGpuRenderStageSpecification {
19278    #[prost(uint64, optional, tag = "1")]
19279    pub iid: ::core::option::Option<u64>,
19280    #[prost(string, optional, tag = "2")]
19281    pub name: ::core::option::Option<::prost::alloc::string::String>,
19282    #[prost(string, optional, tag = "3")]
19283    pub description: ::core::option::Option<::prost::alloc::string::String>,
19284    #[prost(
19285        enumeration = "interned_gpu_render_stage_specification::RenderStageCategory",
19286        optional,
19287        tag = "4"
19288    )]
19289    pub category: ::core::option::Option<i32>,
19290}
19291/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
19292pub mod interned_gpu_render_stage_specification {
19293    #[derive(
19294        Clone,
19295        Copy,
19296        Debug,
19297        PartialEq,
19298        Eq,
19299        Hash,
19300        PartialOrd,
19301        Ord,
19302        ::prost::Enumeration
19303    )]
19304    #[repr(i32)]
19305    pub enum RenderStageCategory {
19306        Other = 0,
19307        Graphics = 1,
19308        Compute = 2,
19309    }
19310    impl RenderStageCategory {
19311        /// String value of the enum field names used in the ProtoBuf definition.
19312        ///
19313        /// The values are not transformed in any way and thus are considered stable
19314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19315        pub fn as_str_name(&self) -> &'static str {
19316            match self {
19317                Self::Other => "OTHER",
19318                Self::Graphics => "GRAPHICS",
19319                Self::Compute => "COMPUTE",
19320            }
19321        }
19322        /// Creates an enum from field names used in the ProtoBuf definition.
19323        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19324            match value {
19325                "OTHER" => Some(Self::Other),
19326                "GRAPHICS" => Some(Self::Graphics),
19327                "COMPUTE" => Some(Self::Compute),
19328                _ => None,
19329            }
19330        }
19331    }
19332}
19333#[derive(Clone, PartialEq, ::prost::Message)]
19334pub struct InternedComputeKernel {
19335    #[prost(uint64, optional, tag = "1")]
19336    pub iid: ::core::option::Option<u64>,
19337    #[prost(string, optional, tag = "2")]
19338    pub name: ::core::option::Option<::prost::alloc::string::String>,
19339    #[prost(string, optional, tag = "3")]
19340    pub demangled_name: ::core::option::Option<::prost::alloc::string::String>,
19341    #[prost(string, optional, tag = "4")]
19342    pub arch: ::core::option::Option<::prost::alloc::string::String>,
19343    /// Additional typed kernel attributes (e.g. static resource limits).
19344    #[prost(message, repeated, tag = "5")]
19345    pub args: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraComputeArg>,
19346}
19347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19348pub struct InternedComputeArgName {
19349    #[prost(uint64, optional, tag = "1")]
19350    pub iid: ::core::option::Option<u64>,
19351    #[prost(string, optional, tag = "2")]
19352    pub name: ::core::option::Option<::prost::alloc::string::String>,
19353}
19354/// Message for recording the Vulkan call.
19355#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19356pub struct VulkanApiEvent {
19357    #[prost(oneof = "vulkan_api_event::Event", tags = "1, 2")]
19358    pub event: ::core::option::Option<vulkan_api_event::Event>,
19359}
19360/// Nested message and enum types in `VulkanApiEvent`.
19361pub mod vulkan_api_event {
19362    /// For recording vkSetDebugUtilsObjectNameEXT and
19363    /// vkDebugMarkerSetObjectNameEXT
19364    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19365    pub struct VkDebugUtilsObjectName {
19366        #[prost(uint32, optional, tag = "1")]
19367        pub pid: ::core::option::Option<u32>,
19368        #[prost(uint64, optional, tag = "2")]
19369        pub vk_device: ::core::option::Option<u64>,
19370        /// VkObjectType.  Value must match
19371        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
19372        #[prost(int32, optional, tag = "3")]
19373        pub object_type: ::core::option::Option<i32>,
19374        #[prost(uint64, optional, tag = "4")]
19375        pub object: ::core::option::Option<u64>,
19376        #[prost(string, optional, tag = "5")]
19377        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
19378    }
19379    /// For recording vkQueueSubmit call.
19380    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19381    pub struct VkQueueSubmit {
19382        #[prost(uint64, optional, tag = "1")]
19383        pub duration_ns: ::core::option::Option<u64>,
19384        #[prost(uint32, optional, tag = "2")]
19385        pub pid: ::core::option::Option<u32>,
19386        #[prost(uint32, optional, tag = "3")]
19387        pub tid: ::core::option::Option<u32>,
19388        #[prost(uint64, optional, tag = "4")]
19389        pub vk_queue: ::core::option::Option<u64>,
19390        #[prost(uint64, repeated, packed = "false", tag = "5")]
19391        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
19392        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
19393        /// submission_id must match GpuRenderStageEvent.submission_id if the
19394        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
19395        #[prost(uint32, optional, tag = "6")]
19396        pub submission_id: ::core::option::Option<u32>,
19397    }
19398    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19399    pub enum Event {
19400        #[prost(message, tag = "1")]
19401        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
19402        #[prost(message, tag = "2")]
19403        VkQueueSubmit(VkQueueSubmit),
19404    }
19405}
19406/// All the information that cannot be sent within a VulkanMemoryEvent message,
19407/// are sent as annotations to the main memory event. One example is the
19408/// properties of the object that consumes the allocated memory, for example, a
19409/// buffer or an image.
19410/// key_iid and string_iid are both interned strings. Original string value is
19411/// stored in vulkan_memory_keys from
19412/// protos/perfetto/trace/interned_data/interned_data.proto.
19413#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19414pub struct VulkanMemoryEventAnnotation {
19415    #[prost(uint64, optional, tag = "1")]
19416    pub key_iid: ::core::option::Option<u64>,
19417    #[prost(oneof = "vulkan_memory_event_annotation::Value", tags = "2, 3, 4")]
19418    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
19419}
19420/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
19421pub mod vulkan_memory_event_annotation {
19422    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
19423    pub enum Value {
19424        #[prost(int64, tag = "2")]
19425        IntValue(i64),
19426        #[prost(double, tag = "3")]
19427        DoubleValue(f64),
19428        #[prost(uint64, tag = "4")]
19429        StringIid(u64),
19430    }
19431}
19432/// Each VulkanMemoryEvent encompasses information regarding one single function
19433/// call that results in reserving, binding or freeing host or GPU memory. There
19434/// is a special message type, ANNOTATIONS, which is used to communicate
19435/// information that are not directly related to a memory event, nonetheless are
19436/// essential to understand the memory usage. An example is the size and memory
19437/// types of the memory heaps.
19438///
19439/// Next reserved id: 10 (up to 15).
19440/// Next id: 21.
19441#[derive(Clone, PartialEq, ::prost::Message)]
19442pub struct VulkanMemoryEvent {
19443    #[prost(enumeration = "vulkan_memory_event::Source", optional, tag = "1")]
19444    pub source: ::core::option::Option<i32>,
19445    #[prost(enumeration = "vulkan_memory_event::Operation", optional, tag = "2")]
19446    pub operation: ::core::option::Option<i32>,
19447    #[prost(int64, optional, tag = "3")]
19448    pub timestamp: ::core::option::Option<i64>,
19449    #[prost(uint32, optional, tag = "4")]
19450    pub pid: ::core::option::Option<u32>,
19451    #[prost(fixed64, optional, tag = "5")]
19452    pub memory_address: ::core::option::Option<u64>,
19453    #[prost(uint64, optional, tag = "6")]
19454    pub memory_size: ::core::option::Option<u64>,
19455    /// Interned string. Original string value is stored in function_names from
19456    /// protos/perfetto/trace/interned_data/interned_data.proto.
19457    #[prost(uint64, optional, tag = "7")]
19458    pub caller_iid: ::core::option::Option<u64>,
19459    #[prost(enumeration = "vulkan_memory_event::AllocationScope", optional, tag = "8")]
19460    pub allocation_scope: ::core::option::Option<i32>,
19461    /// Extra related information, e.g., create configs, etc.
19462    #[prost(message, repeated, tag = "9")]
19463    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
19464    /// Field IDs used for device memory (low sampling rate)
19465    #[prost(fixed64, optional, tag = "16")]
19466    pub device: ::core::option::Option<u64>,
19467    #[prost(fixed64, optional, tag = "17")]
19468    pub device_memory: ::core::option::Option<u64>,
19469    #[prost(uint32, optional, tag = "18")]
19470    pub memory_type: ::core::option::Option<u32>,
19471    #[prost(uint32, optional, tag = "19")]
19472    pub heap: ::core::option::Option<u32>,
19473    #[prost(fixed64, optional, tag = "20")]
19474    pub object_handle: ::core::option::Option<u64>,
19475}
19476/// Nested message and enum types in `VulkanMemoryEvent`.
19477pub mod vulkan_memory_event {
19478    #[derive(
19479        Clone,
19480        Copy,
19481        Debug,
19482        PartialEq,
19483        Eq,
19484        Hash,
19485        PartialOrd,
19486        Ord,
19487        ::prost::Enumeration
19488    )]
19489    #[repr(i32)]
19490    pub enum Source {
19491        Unspecified = 0,
19492        Driver = 1,
19493        Device = 2,
19494        DeviceMemory = 3,
19495        Buffer = 4,
19496        Image = 5,
19497    }
19498    impl Source {
19499        /// String value of the enum field names used in the ProtoBuf definition.
19500        ///
19501        /// The values are not transformed in any way and thus are considered stable
19502        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19503        pub fn as_str_name(&self) -> &'static str {
19504            match self {
19505                Self::Unspecified => "SOURCE_UNSPECIFIED",
19506                Self::Driver => "SOURCE_DRIVER",
19507                Self::Device => "SOURCE_DEVICE",
19508                Self::DeviceMemory => "SOURCE_DEVICE_MEMORY",
19509                Self::Buffer => "SOURCE_BUFFER",
19510                Self::Image => "SOURCE_IMAGE",
19511            }
19512        }
19513        /// Creates an enum from field names used in the ProtoBuf definition.
19514        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19515            match value {
19516                "SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
19517                "SOURCE_DRIVER" => Some(Self::Driver),
19518                "SOURCE_DEVICE" => Some(Self::Device),
19519                "SOURCE_DEVICE_MEMORY" => Some(Self::DeviceMemory),
19520                "SOURCE_BUFFER" => Some(Self::Buffer),
19521                "SOURCE_IMAGE" => Some(Self::Image),
19522                _ => None,
19523            }
19524        }
19525    }
19526    #[derive(
19527        Clone,
19528        Copy,
19529        Debug,
19530        PartialEq,
19531        Eq,
19532        Hash,
19533        PartialOrd,
19534        Ord,
19535        ::prost::Enumeration
19536    )]
19537    #[repr(i32)]
19538    pub enum Operation {
19539        OpUnspecified = 0,
19540        /// alloc, create
19541        OpCreate = 1,
19542        /// free, destroy(non-bound)
19543        OpDestroy = 2,
19544        /// bind buffer and image
19545        OpBind = 3,
19546        /// destroy (bound)
19547        OpDestroyBound = 4,
19548        /// only annotations
19549        OpAnnotations = 5,
19550    }
19551    impl Operation {
19552        /// String value of the enum field names used in the ProtoBuf definition.
19553        ///
19554        /// The values are not transformed in any way and thus are considered stable
19555        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19556        pub fn as_str_name(&self) -> &'static str {
19557            match self {
19558                Self::OpUnspecified => "OP_UNSPECIFIED",
19559                Self::OpCreate => "OP_CREATE",
19560                Self::OpDestroy => "OP_DESTROY",
19561                Self::OpBind => "OP_BIND",
19562                Self::OpDestroyBound => "OP_DESTROY_BOUND",
19563                Self::OpAnnotations => "OP_ANNOTATIONS",
19564            }
19565        }
19566        /// Creates an enum from field names used in the ProtoBuf definition.
19567        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19568            match value {
19569                "OP_UNSPECIFIED" => Some(Self::OpUnspecified),
19570                "OP_CREATE" => Some(Self::OpCreate),
19571                "OP_DESTROY" => Some(Self::OpDestroy),
19572                "OP_BIND" => Some(Self::OpBind),
19573                "OP_DESTROY_BOUND" => Some(Self::OpDestroyBound),
19574                "OP_ANNOTATIONS" => Some(Self::OpAnnotations),
19575                _ => None,
19576            }
19577        }
19578    }
19579    #[derive(
19580        Clone,
19581        Copy,
19582        Debug,
19583        PartialEq,
19584        Eq,
19585        Hash,
19586        PartialOrd,
19587        Ord,
19588        ::prost::Enumeration
19589    )]
19590    #[repr(i32)]
19591    pub enum AllocationScope {
19592        ScopeUnspecified = 0,
19593        ScopeCommand = 1,
19594        ScopeObject = 2,
19595        ScopeCache = 3,
19596        ScopeDevice = 4,
19597        ScopeInstance = 5,
19598    }
19599    impl AllocationScope {
19600        /// String value of the enum field names used in the ProtoBuf definition.
19601        ///
19602        /// The values are not transformed in any way and thus are considered stable
19603        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19604        pub fn as_str_name(&self) -> &'static str {
19605            match self {
19606                Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19607                Self::ScopeCommand => "SCOPE_COMMAND",
19608                Self::ScopeObject => "SCOPE_OBJECT",
19609                Self::ScopeCache => "SCOPE_CACHE",
19610                Self::ScopeDevice => "SCOPE_DEVICE",
19611                Self::ScopeInstance => "SCOPE_INSTANCE",
19612            }
19613        }
19614        /// Creates an enum from field names used in the ProtoBuf definition.
19615        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19616            match value {
19617                "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
19618                "SCOPE_COMMAND" => Some(Self::ScopeCommand),
19619                "SCOPE_OBJECT" => Some(Self::ScopeObject),
19620                "SCOPE_CACHE" => Some(Self::ScopeCache),
19621                "SCOPE_DEVICE" => Some(Self::ScopeDevice),
19622                "SCOPE_INSTANCE" => Some(Self::ScopeInstance),
19623                _ => None,
19624            }
19625        }
19626    }
19627}
19628/// The interning fields in this file can refer to 2 different intern tables,
19629/// depending on the message they are used in. If the interned fields are present
19630/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
19631/// should be used. If the intered fields are present in the
19632/// StreamingProfilePacket proto, then the intern tables included in all of the
19633/// previous InternedData message with same sequence ID should be used.
19634/// TODO(fmayer): Move to the intern tables to a common location.
19635#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19636pub struct InternedString {
19637    /// Interning key. Starts from 1, 0 is the same as "not set".
19638    #[prost(uint64, optional, tag = "1")]
19639    pub iid: ::core::option::Option<u64>,
19640    /// The actual string.
19641    #[prost(bytes = "vec", optional, tag = "2")]
19642    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19643}
19644/// Source line info.
19645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19646pub struct Line {
19647    #[prost(string, optional, tag = "1")]
19648    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19649    #[prost(string, optional, tag = "2")]
19650    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
19651    #[prost(uint32, optional, tag = "3")]
19652    pub line_number: ::core::option::Option<u32>,
19653}
19654/// Symbols for a given address in a module.
19655#[derive(Clone, PartialEq, ::prost::Message)]
19656pub struct AddressSymbols {
19657    #[prost(uint64, optional, tag = "1")]
19658    pub address: ::core::option::Option<u64>,
19659    /// Source lines that correspond to this address.
19660    ///
19661    /// These are repeated because when inlining happens, multiple functions'
19662    /// frames can be at a single address. Imagine function Foo calling the
19663    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
19664    /// both Foo and the std::vector<int> constructor when we symbolize the
19665    /// address.
19666    #[prost(message, repeated, tag = "2")]
19667    pub lines: ::prost::alloc::vec::Vec<Line>,
19668}
19669/// Symbols for addresses seen in a module.
19670/// Used in re-symbolisation of complete traces.
19671#[derive(Clone, PartialEq, ::prost::Message)]
19672pub struct ModuleSymbols {
19673    /// Fully qualified path to the mapping.
19674    /// E.g. /system/lib64/libc.so.
19675    #[prost(string, optional, tag = "1")]
19676    pub path: ::core::option::Option<::prost::alloc::string::String>,
19677    /// .note.gnu.build-id on Linux (not hex encoded).
19678    /// uuid on MacOS.
19679    /// Module GUID on Windows.
19680    #[prost(string, optional, tag = "2")]
19681    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
19682    #[prost(message, repeated, tag = "3")]
19683    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
19684}
19685#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19686pub struct Mapping {
19687    /// Interning key.
19688    /// Starts from 1, 0 is the same as "not set".
19689    #[prost(uint64, optional, tag = "1")]
19690    pub iid: ::core::option::Option<u64>,
19691    /// Interning key.
19692    /// Starts from 1, 0 is the same as "not set".
19693    #[prost(uint64, optional, tag = "2")]
19694    pub build_id: ::core::option::Option<u64>,
19695    /// The linker may create multiple memory mappings for the same shared
19696    /// library.
19697    /// This is so that the ELF header is mapped as read only, while the
19698    /// executable memory is mapped as executable only.
19699    /// The details of this depend on the linker, a possible mapping of an ELF
19700    /// file is this:
19701    ///          +----------------------+
19702    /// ELF     |xxxxxxxxxyyyyyyyyyyyyy|
19703    ///          +---------+------------+
19704    ///          |         |
19705    ///          | read    | executable
19706    ///          v mapping v mapping
19707    ///          +----------------------+
19708    /// Memory  |xxxxxxxxx|yyyyyyyyyyyy|
19709    ///          +------------------+---+
19710    ///          ^         ^        ^
19711    ///          +         +        +
19712    ///        start     exact    relpc
19713    ///        offset   offset    0x1800
19714    ///        0x0000   0x1000
19715    ///
19716    /// exact_offset is the offset into the library file of this mapping.
19717    /// start_offset is the offset into the library file of the first mapping
19718    /// for that library. For native libraries (.so files) this should be 0.
19719    ///
19720    /// This is not set on Android 10.
19721    #[prost(uint64, optional, tag = "8")]
19722    pub exact_offset: ::core::option::Option<u64>,
19723    #[prost(uint64, optional, tag = "3")]
19724    pub start_offset: ::core::option::Option<u64>,
19725    #[prost(uint64, optional, tag = "4")]
19726    pub start: ::core::option::Option<u64>,
19727    #[prost(uint64, optional, tag = "5")]
19728    pub end: ::core::option::Option<u64>,
19729    /// Libunwindstack-specific concept, not to be confused with bionic linker's
19730    /// notion of load_bias. Needed to correct relative pc addresses (as produced
19731    /// by libunwindstack) when doing offline resymbolisation.
19732    ///
19733    /// For an executable ELF PT_LOAD segment, this is:
19734    ///    p_vaddr - p_offset
19735    ///
19736    /// Where p_offset means that the code is at that offset into the ELF file on
19737    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
19738    /// to where the linker loads the ELF into the address space. For most ELFs,
19739    /// the two values are identical and therefore load_bias is zero.
19740    #[prost(uint64, optional, tag = "6")]
19741    pub load_bias: ::core::option::Option<u64>,
19742    /// E.g. \["system", "lib64", "libc.so"\]
19743    /// id of string.
19744    #[prost(uint64, repeated, packed = "false", tag = "7")]
19745    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
19746}
19747#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19748pub struct Frame {
19749    /// Interning key. Starts from 1, 0 is the same as "not set".
19750    #[prost(uint64, optional, tag = "1")]
19751    pub iid: ::core::option::Option<u64>,
19752    /// E.g. "fopen"
19753    /// id of string.
19754    #[prost(uint64, optional, tag = "2")]
19755    pub function_name_id: ::core::option::Option<u64>,
19756    /// The mapping in which this frame's instruction pointer resides.
19757    /// iid of Mapping.iid.
19758    ///
19759    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
19760    /// this frame has no associated memory mapping (e.g., symbolized frames
19761    /// without address information).
19762    ///
19763    /// Starts from 1, 0 is the same as "not set".
19764    #[prost(uint64, optional, tag = "3")]
19765    pub mapping_id: ::core::option::Option<u64>,
19766    /// Instruction pointer relative to the start of the mapping.
19767    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
19768    #[prost(uint64, optional, tag = "4")]
19769    pub rel_pc: ::core::option::Option<u64>,
19770    /// Source file path for this frame.
19771    /// This is typically set during online symbolization when symbol information
19772    /// is available at trace collection time. If not set, source file paths may be
19773    /// added later via offline symbolization (see ModuleSymbols).
19774    ///
19775    /// Starts from 1, 0 is the same as "not set".
19776    ///
19777    /// iid of InternedData.source_paths.
19778    #[prost(uint64, optional, tag = "5")]
19779    pub source_path_iid: ::core::option::Option<u64>,
19780    /// Line number in the source file for this frame.
19781    /// This is typically set during online symbolization when symbol information
19782    /// is available at trace collection time. If not set, line numbers may be
19783    /// added later via offline symbolization (see ModuleSymbols).
19784    #[prost(uint32, optional, tag = "6")]
19785    pub line_number: ::core::option::Option<u32>,
19786    #[prost(oneof = "frame::KindField", tags = "7, 8")]
19787    pub kind_field: ::core::option::Option<frame::KindField>,
19788}
19789/// Nested message and enum types in `Frame`.
19790pub mod frame {
19791    /// The kind of code this frame represents, for categorization (e.g. coloring
19792    /// a flamegraph, or telling interpreted Python frames apart from native and
19793    /// GC frames in one mixed stack). Set the well-known `kind` when one fits,
19794    /// otherwise set `kind_str` to a custom label. The well-known enum is
19795    /// append-only and language-neutral; language-specific labels go in kind_str.
19796    #[derive(
19797        Clone,
19798        Copy,
19799        Debug,
19800        PartialEq,
19801        Eq,
19802        Hash,
19803        PartialOrd,
19804        Ord,
19805        ::prost::Enumeration
19806    )]
19807    #[repr(i32)]
19808    pub enum Kind {
19809        Unknown = 0,
19810        Native = 1,
19811        Kernel = 2,
19812        Interpreted = 3,
19813        Jit = 4,
19814        Gc = 5,
19815        Runtime = 6,
19816    }
19817    impl Kind {
19818        /// String value of the enum field names used in the ProtoBuf definition.
19819        ///
19820        /// The values are not transformed in any way and thus are considered stable
19821        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19822        pub fn as_str_name(&self) -> &'static str {
19823            match self {
19824                Self::Unknown => "KIND_UNKNOWN",
19825                Self::Native => "KIND_NATIVE",
19826                Self::Kernel => "KIND_KERNEL",
19827                Self::Interpreted => "KIND_INTERPRETED",
19828                Self::Jit => "KIND_JIT",
19829                Self::Gc => "KIND_GC",
19830                Self::Runtime => "KIND_RUNTIME",
19831            }
19832        }
19833        /// Creates an enum from field names used in the ProtoBuf definition.
19834        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19835            match value {
19836                "KIND_UNKNOWN" => Some(Self::Unknown),
19837                "KIND_NATIVE" => Some(Self::Native),
19838                "KIND_KERNEL" => Some(Self::Kernel),
19839                "KIND_INTERPRETED" => Some(Self::Interpreted),
19840                "KIND_JIT" => Some(Self::Jit),
19841                "KIND_GC" => Some(Self::Gc),
19842                "KIND_RUNTIME" => Some(Self::Runtime),
19843                _ => None,
19844            }
19845        }
19846    }
19847    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19848    pub enum KindField {
19849        #[prost(enumeration = "Kind", tag = "7")]
19850        Kind(i32),
19851        #[prost(string, tag = "8")]
19852        KindStr(::prost::alloc::string::String),
19853    }
19854}
19855#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19856pub struct Callstack {
19857    /// Interning key. Starts from 1, 0 is the same as "not set".
19858    #[prost(uint64, optional, tag = "1")]
19859    pub iid: ::core::option::Option<u64>,
19860    /// Frames of this callstack. Bottom frame first.
19861    #[prost(uint64, repeated, packed = "false", tag = "2")]
19862    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
19863}
19864/// A fully-inline, self-contained callstack: each frame carries its function
19865/// name and source location directly, with no interning. This is the simple
19866/// alternative to Callstack (whose frames are interned Frame/Mapping
19867/// references): use it when trace size is not a concern or callstacks are
19868/// unique. For binary/library information (mappings, build ids, relative pcs)
19869/// or efficient repetition, use interned Callstacks instead.
19870///
19871/// Used by StackSample as the inline (non-interned) variant of its callstack
19872/// field.
19873#[derive(Clone, PartialEq, ::prost::Message)]
19874pub struct InlineCallstack {
19875    /// Frames of this callstack, ordered from bottom (outermost) to top
19876    /// (innermost). For example, if main() calls foo() which calls bar(), the
19877    /// frames are: \[main, foo, bar\].
19878    #[prost(message, repeated, tag = "1")]
19879    pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
19880}
19881/// Nested message and enum types in `InlineCallstack`.
19882pub mod inline_callstack {
19883    /// A frame within an inline callstack.
19884    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19885    pub struct Frame {
19886        /// Function name, e.g. "malloc" or "std::vector<int>::push_back".
19887        #[prost(string, optional, tag = "1")]
19888        pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19889        /// Source file path, e.g. "/src/foo.cc".
19890        #[prost(string, optional, tag = "2")]
19891        pub source_file: ::core::option::Option<::prost::alloc::string::String>,
19892        /// Line number in the source file.
19893        #[prost(uint32, optional, tag = "3")]
19894        pub line_number: ::core::option::Option<u32>,
19895    }
19896}
19897/// A single stack sample: a callstack captured for a task, measured against a
19898/// counter timebase. This is transport-neutral and timebase-neutral. The
19899/// timebase can be CPU cycles, wall-clock nanoseconds, allocated bytes, page
19900/// faults, etc.; the primary CounterDescriptor says which. It is not specific to
19901/// CPU profiling.
19902///
19903/// Each context/callstack/descriptor can be given inline or as an `iid`
19904/// referencing an InternedData entry. Producers that reuse a context across
19905/// samples should intern it so the per-sample cost is a single varint.
19906#[derive(Clone, PartialEq, ::prost::Message)]
19907pub struct StackSample {
19908    /// The value attributed to this sample for the primary counter (e.g. the
19909    /// number of cycles or nanoseconds this sample represents).
19910    #[prost(uint64, optional, tag = "11")]
19911    pub primary_weight: ::core::option::Option<u64>,
19912    /// Additional counters read at the same sample (e.g. instructions, cache
19913    /// misses read alongside a cycles timebase). follower_weights is positional
19914    /// with whichever of follower_descriptors / follower_descriptor_iids is set.
19915    #[prost(message, repeated, tag = "12")]
19916    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
19917    #[prost(uint64, repeated, tag = "13")]
19918    pub follower_descriptor_iids: ::prost::alloc::vec::Vec<u64>,
19919    #[prost(uint64, repeated, tag = "14")]
19920    pub follower_weights: ::prost::alloc::vec::Vec<u64>,
19921    /// The task (thread / process / async context) this sample is attributed to.
19922    /// Give it inline via `task_context` or reference an interned TaskContext via
19923    /// `task_context_iid`.
19924    #[prost(oneof = "stack_sample::TaskContextField", tags = "1, 2")]
19925    pub task_context_field: ::core::option::Option<stack_sample::TaskContextField>,
19926    /// The execution state (cpu, privilege mode) at sample time. Absent for
19927    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
19928    /// or reference an interned ExecutionContext via `execution_context_iid`.
19929    #[prost(oneof = "stack_sample::ExecutionContextField", tags = "3, 4")]
19930    pub execution_context_field: ::core::option::Option<
19931        stack_sample::ExecutionContextField,
19932    >,
19933    /// The captured callstack, bottom frame first. Give it fully inline via
19934    /// `callstack` or reference an interned Callstack via `callstack_iid`.
19935    #[prost(oneof = "stack_sample::CallstackField", tags = "5, 6")]
19936    pub callstack_field: ::core::option::Option<stack_sample::CallstackField>,
19937    /// Set if stack unwinding was incomplete; describes the data, not producer
19938    /// internal state. Give it inline via `unwind_error` or reference an interned
19939    /// string via `unwind_error_iid`.
19940    ///
19941    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
19942    /// wire layout; a table column will surface it later.
19943    #[prost(oneof = "stack_sample::UnwindErrorField", tags = "7, 8")]
19944    pub unwind_error_field: ::core::option::Option<stack_sample::UnwindErrorField>,
19945    /// The sampling timebase: the counter this sample's weight is measured
19946    /// against. Set one of the two; may be omitted entirely if declared in
19947    /// StackSampleDefaults.primary_descriptor.
19948    #[prost(oneof = "stack_sample::PrimaryDescriptorField", tags = "9, 10")]
19949    pub primary_descriptor_field: ::core::option::Option<
19950        stack_sample::PrimaryDescriptorField,
19951    >,
19952}
19953/// Nested message and enum types in `StackSample`.
19954pub mod stack_sample {
19955    /// The task an observation is attributed to. At least one of pid / tid /
19956    /// async_id should be set. async_id identifies a stackful async context
19957    /// (goroutine, fiber, ...) described by an AsyncContextDescriptor whose iid
19958    /// equals the async_id.
19959    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19960    pub struct TaskContext {
19961        /// Interning key, used when this context is emitted via
19962        /// InternedData.stack_sample_task_contexts and referenced by
19963        /// StackSample.task_context_iid. Starts from 1; 0 is the same as "not set".
19964        #[prost(uint64, optional, tag = "1")]
19965        pub iid: ::core::option::Option<u64>,
19966        /// OS process id the sample belongs to.
19967        #[prost(uint32, optional, tag = "2")]
19968        pub pid: ::core::option::Option<u32>,
19969        /// OS thread id the sample belongs to. If only tid is set, the process is
19970        /// inferred from thread association elsewhere in the trace.
19971        #[prost(uint32, optional, tag = "3")]
19972        pub tid: ::core::option::Option<u32>,
19973        #[prost(uint64, optional, tag = "4")]
19974        pub async_id: ::core::option::Option<u64>,
19975    }
19976    /// Describes an async context referenced by TaskContext.async_id: a stackful
19977    /// unit of execution that is not an OS thread (goroutine, fiber, coroutine).
19978    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19979    pub struct AsyncContextDescriptor {
19980        /// Interning key, equal to the TaskContext.async_id it describes. Starts
19981        /// from 1, 0 is the same as "not set".
19982        #[prost(uint64, optional, tag = "1")]
19983        pub iid: ::core::option::Option<u64>,
19984        /// A human-readable name for this specific context, e.g. "worker-7".
19985        #[prost(string, optional, tag = "2")]
19986        pub name: ::core::option::Option<::prost::alloc::string::String>,
19987        /// The kind of async context, e.g. "goroutine", "fiber".
19988        #[prost(string, optional, tag = "3")]
19989        pub kind: ::core::option::Option<::prost::alloc::string::String>,
19990        /// iid of the structural parent AsyncContextDescriptor, if any.
19991        #[prost(uint64, optional, tag = "4")]
19992        pub parent_iid: ::core::option::Option<u64>,
19993    }
19994    /// The execution state a sample was taken in. All fields are optional: an
19995    /// off-CPU sample (e.g. a wall-clock sampler catching a sleeping thread) has
19996    /// no meaningful cpu or mode.
19997    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19998    pub struct ExecutionContext {
19999        /// Interning key, used when this context is emitted via
20000        /// InternedData.stack_sample_execution_contexts and referenced by
20001        /// StackSample.execution_context_iid. Starts from 1; 0 is the same as "not
20002        /// set".
20003        #[prost(uint64, optional, tag = "1")]
20004        pub iid: ::core::option::Option<u64>,
20005        /// The cpu the sample was taken on.
20006        #[prost(uint32, optional, tag = "2")]
20007        pub cpu: ::core::option::Option<u32>,
20008        /// The privilege level the sampled code was running at.
20009        #[prost(enumeration = "Mode", optional, tag = "3")]
20010        pub mode: ::core::option::Option<i32>,
20011    }
20012    /// Describes a counter: a named, typed quantity a sample is measured against
20013    /// (the sampling timebase) or observed alongside (a follower). Values live on
20014    /// the sample as weights; this only describes their meaning.
20015    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20016    pub struct CounterDescriptor {
20017        /// Interning key, used when this descriptor is emitted via
20018        /// InternedData.stack_sample_counter_descriptors and referenced by
20019        /// StackSample.primary_descriptor_iid. Starts from 1; 0 is the same as "not
20020        /// set".
20021        #[prost(uint64, optional, tag = "1")]
20022        pub iid: ::core::option::Option<u64>,
20023        /// Human-readable counter name, e.g. "cycles", "wall-time", "cache-misses".
20024        #[prost(string, optional, tag = "2")]
20025        pub name: ::core::option::Option<::prost::alloc::string::String>,
20026        /// Scales raw weights to `unit`. E.g. unit=UNIT_BYTES, unit_multiplier=1024
20027        /// means weights are in KiB. Absent means 1.
20028        #[prost(uint64, optional, tag = "5")]
20029        pub unit_multiplier: ::core::option::Option<u64>,
20030        /// Free-form description of what the counter measures.
20031        #[prost(string, optional, tag = "6")]
20032        pub description: ::core::option::Option<::prost::alloc::string::String>,
20033        /// The scope of this counter's instances. Absent means SCOPE_GLOBAL.
20034        #[prost(enumeration = "counter_descriptor::Scope", optional, tag = "7")]
20035        pub scope: ::core::option::Option<i32>,
20036        /// The unit weights are expressed in. Set the well-known `unit` when one
20037        /// fits, otherwise set `unit_str` to a custom label.
20038        #[prost(oneof = "counter_descriptor::UnitField", tags = "3, 4")]
20039        pub unit_field: ::core::option::Option<counter_descriptor::UnitField>,
20040    }
20041    /// Nested message and enum types in `CounterDescriptor`.
20042    pub mod counter_descriptor {
20043        /// The scope of a counter instance: which stream of values the per-sample
20044        /// weights belong to. Counter instances accumulate independently, so
20045        /// values from different instances must never be merged into one stream.
20046        /// Trace processor keeps sampling streams separate and materializes one
20047        /// counter track per instance within each stream: SCOPE_GLOBAL yields one
20048        /// track per sampling stream and SCOPE_CPU one track per
20049        /// (sampling stream, cpu).
20050        ///
20051        /// If your profiler needs a scope that is not listed here, please file
20052        /// a bug at <https://github.com/google/perfetto/issues> explaining what
20053        /// you are trying to record and which scope you would like added.
20054        /// Append-only: never renumber or repurpose an existing value.
20055        #[derive(
20056            Clone,
20057            Copy,
20058            Debug,
20059            PartialEq,
20060            Eq,
20061            Hash,
20062            PartialOrd,
20063            Ord,
20064            ::prost::Enumeration
20065        )]
20066        #[repr(i32)]
20067        pub enum Scope {
20068            /// Treated as SCOPE_GLOBAL.
20069            Unspecified = 0,
20070            /// A single counter instance, not split by cpu, thread or anything
20071            /// else.
20072            Global = 1,
20073            /// One counter instance per cpu. Each sample's weight belongs to the
20074            /// instance of the cpu in its ExecutionContext; samples without a cpu
20075            /// cannot be attributed and their weights for this counter are dropped.
20076            Cpu = 2,
20077        }
20078        impl Scope {
20079            /// String value of the enum field names used in the ProtoBuf definition.
20080            ///
20081            /// The values are not transformed in any way and thus are considered stable
20082            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20083            pub fn as_str_name(&self) -> &'static str {
20084                match self {
20085                    Self::Unspecified => "SCOPE_UNSPECIFIED",
20086                    Self::Global => "SCOPE_GLOBAL",
20087                    Self::Cpu => "SCOPE_CPU",
20088                }
20089            }
20090            /// Creates an enum from field names used in the ProtoBuf definition.
20091            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20092                match value {
20093                    "SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
20094                    "SCOPE_GLOBAL" => Some(Self::Global),
20095                    "SCOPE_CPU" => Some(Self::Cpu),
20096                    _ => None,
20097                }
20098            }
20099        }
20100        /// The unit weights are expressed in. Set the well-known `unit` when one
20101        /// fits, otherwise set `unit_str` to a custom label.
20102        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20103        pub enum UnitField {
20104            /// A well-known unit from the Unit enum.
20105            #[prost(enumeration = "super::Unit", tag = "3")]
20106            Unit(i32),
20107            /// A custom unit label, used when no Unit enum value fits.
20108            #[prost(string, tag = "4")]
20109            UnitStr(::prost::alloc::string::String),
20110        }
20111    }
20112    /// The privilege level a sample was taken at. Append-only: never renumber or
20113    /// repurpose an existing value.
20114    #[derive(
20115        Clone,
20116        Copy,
20117        Debug,
20118        PartialEq,
20119        Eq,
20120        Hash,
20121        PartialOrd,
20122        Ord,
20123        ::prost::Enumeration
20124    )]
20125    #[repr(i32)]
20126    pub enum Mode {
20127        Unknown = 0,
20128        User = 1,
20129        Kernel = 2,
20130        Hypervisor = 3,
20131        GuestUser = 4,
20132        GuestKernel = 5,
20133    }
20134    impl Mode {
20135        /// String value of the enum field names used in the ProtoBuf definition.
20136        ///
20137        /// The values are not transformed in any way and thus are considered stable
20138        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20139        pub fn as_str_name(&self) -> &'static str {
20140            match self {
20141                Self::Unknown => "MODE_UNKNOWN",
20142                Self::User => "MODE_USER",
20143                Self::Kernel => "MODE_KERNEL",
20144                Self::Hypervisor => "MODE_HYPERVISOR",
20145                Self::GuestUser => "MODE_GUEST_USER",
20146                Self::GuestKernel => "MODE_GUEST_KERNEL",
20147            }
20148        }
20149        /// Creates an enum from field names used in the ProtoBuf definition.
20150        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20151            match value {
20152                "MODE_UNKNOWN" => Some(Self::Unknown),
20153                "MODE_USER" => Some(Self::User),
20154                "MODE_KERNEL" => Some(Self::Kernel),
20155                "MODE_HYPERVISOR" => Some(Self::Hypervisor),
20156                "MODE_GUEST_USER" => Some(Self::GuestUser),
20157                "MODE_GUEST_KERNEL" => Some(Self::GuestKernel),
20158                _ => None,
20159            }
20160        }
20161    }
20162    /// The unit a CounterDescriptor's values are expressed in. Append-only: new
20163    /// units may be added, but existing values are never renumbered or
20164    /// repurposed. If none of these fit, set CounterDescriptor.unit_str instead.
20165    #[derive(
20166        Clone,
20167        Copy,
20168        Debug,
20169        PartialEq,
20170        Eq,
20171        Hash,
20172        PartialOrd,
20173        Ord,
20174        ::prost::Enumeration
20175    )]
20176    #[repr(i32)]
20177    pub enum Unit {
20178        Unspecified = 0,
20179        Nanoseconds = 1,
20180        CpuCycles = 2,
20181        Instructions = 3,
20182        Bytes = 4,
20183        PageFaults = 5,
20184        CacheMisses = 6,
20185        CacheReferences = 7,
20186        BranchMisses = 8,
20187        Count = 9,
20188    }
20189    impl Unit {
20190        /// String value of the enum field names used in the ProtoBuf definition.
20191        ///
20192        /// The values are not transformed in any way and thus are considered stable
20193        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20194        pub fn as_str_name(&self) -> &'static str {
20195            match self {
20196                Self::Unspecified => "UNIT_UNSPECIFIED",
20197                Self::Nanoseconds => "UNIT_NANOSECONDS",
20198                Self::CpuCycles => "UNIT_CPU_CYCLES",
20199                Self::Instructions => "UNIT_INSTRUCTIONS",
20200                Self::Bytes => "UNIT_BYTES",
20201                Self::PageFaults => "UNIT_PAGE_FAULTS",
20202                Self::CacheMisses => "UNIT_CACHE_MISSES",
20203                Self::CacheReferences => "UNIT_CACHE_REFERENCES",
20204                Self::BranchMisses => "UNIT_BRANCH_MISSES",
20205                Self::Count => "UNIT_COUNT",
20206            }
20207        }
20208        /// Creates an enum from field names used in the ProtoBuf definition.
20209        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20210            match value {
20211                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
20212                "UNIT_NANOSECONDS" => Some(Self::Nanoseconds),
20213                "UNIT_CPU_CYCLES" => Some(Self::CpuCycles),
20214                "UNIT_INSTRUCTIONS" => Some(Self::Instructions),
20215                "UNIT_BYTES" => Some(Self::Bytes),
20216                "UNIT_PAGE_FAULTS" => Some(Self::PageFaults),
20217                "UNIT_CACHE_MISSES" => Some(Self::CacheMisses),
20218                "UNIT_CACHE_REFERENCES" => Some(Self::CacheReferences),
20219                "UNIT_BRANCH_MISSES" => Some(Self::BranchMisses),
20220                "UNIT_COUNT" => Some(Self::Count),
20221                _ => None,
20222            }
20223        }
20224    }
20225    /// The task (thread / process / async context) this sample is attributed to.
20226    /// Give it inline via `task_context` or reference an interned TaskContext via
20227    /// `task_context_iid`.
20228    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
20229    pub enum TaskContextField {
20230        /// Inline task context.
20231        #[prost(message, tag = "1")]
20232        TaskContext(TaskContext),
20233        /// Interned task context, referencing
20234        /// InternedData.stack_sample_task_contexts.
20235        #[prost(uint64, tag = "2")]
20236        TaskContextIid(u64),
20237    }
20238    /// The execution state (cpu, privilege mode) at sample time. Absent for
20239    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
20240    /// or reference an interned ExecutionContext via `execution_context_iid`.
20241    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
20242    pub enum ExecutionContextField {
20243        /// Inline execution context.
20244        #[prost(message, tag = "3")]
20245        ExecutionContext(ExecutionContext),
20246        /// Interned execution context, referencing
20247        /// InternedData.stack_sample_execution_contexts.
20248        #[prost(uint64, tag = "4")]
20249        ExecutionContextIid(u64),
20250    }
20251    /// The captured callstack, bottom frame first. Give it fully inline via
20252    /// `callstack` or reference an interned Callstack via `callstack_iid`.
20253    #[derive(Clone, PartialEq, ::prost::Oneof)]
20254    pub enum CallstackField {
20255        /// Fully-inline callstack: each frame carries its function name and source
20256        /// location directly, no interning. Simple but larger; prefer
20257        /// `callstack_iid` when callstacks repeat or frames need binary/library
20258        /// information (mappings, build ids, relative pcs).
20259        #[prost(message, tag = "5")]
20260        Callstack(super::InlineCallstack),
20261        /// Interned callstack, referencing InternedData.callstacks.
20262        #[prost(uint64, tag = "6")]
20263        CallstackIid(u64),
20264    }
20265    /// Set if stack unwinding was incomplete; describes the data, not producer
20266    /// internal state. Give it inline via `unwind_error` or reference an interned
20267    /// string via `unwind_error_iid`.
20268    ///
20269    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
20270    /// wire layout; a table column will surface it later.
20271    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20272    pub enum UnwindErrorField {
20273        /// Inline unwind error string.
20274        #[prost(string, tag = "7")]
20275        UnwindError(::prost::alloc::string::String),
20276        /// Interned unwind error string, referencing an InternedData string entry.
20277        #[prost(uint64, tag = "8")]
20278        UnwindErrorIid(u64),
20279    }
20280    /// The sampling timebase: the counter this sample's weight is measured
20281    /// against. Set one of the two; may be omitted entirely if declared in
20282    /// StackSampleDefaults.primary_descriptor.
20283    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20284    pub enum PrimaryDescriptorField {
20285        /// Inline timebase descriptor.
20286        #[prost(message, tag = "9")]
20287        PrimaryDescriptor(CounterDescriptor),
20288        /// Interned timebase descriptor, referencing
20289        /// InternedData.stack_sample_counter_descriptors.
20290        #[prost(uint64, tag = "10")]
20291        PrimaryDescriptorIid(u64),
20292    }
20293}
20294/// Per-sequence defaults for StackSample. Lets a producer declare the source and
20295/// the common timebase / followers once instead of on every sample.
20296#[derive(Clone, PartialEq, ::prost::Message)]
20297pub struct StackSampleDefaults {
20298    /// Identifies the profiler that produced these samples, e.g. "linux.perf",
20299    /// "python.wall". Recorded once per sampling stream.
20300    #[prost(string, optional, tag = "1")]
20301    pub source: ::core::option::Option<::prost::alloc::string::String>,
20302    /// Default primary timebase for samples that omit their own.
20303    #[prost(message, optional, tag = "2")]
20304    pub primary_descriptor: ::core::option::Option<stack_sample::CounterDescriptor>,
20305    /// Default follower counters, positional with StackSample.follower_weights.
20306    #[prost(message, repeated, tag = "3")]
20307    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
20308}
20309#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20310pub struct HistogramName {
20311    #[prost(uint64, optional, tag = "1")]
20312    pub iid: ::core::option::Option<u64>,
20313    #[prost(string, optional, tag = "2")]
20314    pub name: ::core::option::Option<::prost::alloc::string::String>,
20315}
20316/// An individual histogram sample logged via Chrome's UMA metrics system.
20317#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20318pub struct ChromeHistogramSample {
20319    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
20320    /// both must be present.
20321    #[prost(uint64, optional, tag = "1")]
20322    pub name_hash: ::core::option::Option<u64>,
20323    #[prost(string, optional, tag = "2")]
20324    pub name: ::core::option::Option<::prost::alloc::string::String>,
20325    #[prost(int64, optional, tag = "3")]
20326    pub sample: ::core::option::Option<i64>,
20327    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
20328    #[prost(uint64, optional, tag = "4")]
20329    pub name_iid: ::core::option::Option<u64>,
20330}
20331/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
20332/// macros. Users of the Perfetto SDK should prefer to use the
20333/// perfetto::TracedValue API to fill these protos, rather than filling them
20334/// manually.
20335///
20336/// Debug annotations are intended for debug use and are not considered a stable
20337/// API of the trace contents. Trace-based metrics that use debug annotation
20338/// values are prone to breakage, so please rely on typed TrackEvent fields for
20339/// these instead.
20340///
20341/// DebugAnnotations support nested arrays and dictionaries. Each entry is
20342/// encoded as a single DebugAnnotation message. Only dictionary entries
20343/// set the "name" field. The TrackEvent message forms an implicit root
20344/// dictionary.
20345///
20346/// Example TrackEvent with nested annotations:
20347///    track_event {
20348///      debug_annotations {
20349///        name: "foo"
20350///        dict_entries {
20351///          name: "a"
20352///          bool_value: true
20353///        }
20354///        dict_entries {
20355///          name: "b"
20356///          int_value: 123
20357///        }
20358///      }
20359///      debug_annotations {
20360///        name: "bar"
20361///        array_values {
20362///          string_value: "hello"
20363///        }
20364///        array_values {
20365///          string_value: "world"
20366///        }
20367///      }
20368///    }
20369///
20370/// Next ID: 18.
20371/// Reserved ID: 15
20372#[derive(Clone, PartialEq, ::prost::Message)]
20373pub struct DebugAnnotation {
20374    #[prost(bytes = "vec", optional, tag = "14")]
20375    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20376    #[prost(message, repeated, tag = "11")]
20377    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
20378    #[prost(message, repeated, tag = "12")]
20379    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
20380    /// Name fields are set only for dictionary entries.
20381    #[prost(oneof = "debug_annotation::NameField", tags = "1, 10")]
20382    pub name_field: ::core::option::Option<debug_annotation::NameField>,
20383    #[prost(oneof = "debug_annotation::Value", tags = "2, 3, 4, 5, 7, 8, 9, 6, 17")]
20384    pub value: ::core::option::Option<debug_annotation::Value>,
20385    /// Used to embed arbitrary proto messages (which are also typically used to
20386    /// represent typed TrackEvent arguments). |proto_type_name| or
20387    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20388    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20389    /// proto messages. See |TracedValue::WriteProto| for more details.
20390    #[prost(oneof = "debug_annotation::ProtoTypeDescriptor", tags = "16, 13")]
20391    pub proto_type_descriptor: ::core::option::Option<
20392        debug_annotation::ProtoTypeDescriptor,
20393    >,
20394}
20395/// Nested message and enum types in `DebugAnnotation`.
20396pub mod debug_annotation {
20397    /// Deprecated legacy way to use nested values. Only kept for
20398    /// backwards-compatibility in TraceProcessor. May be removed in the future -
20399    /// code filling protos should use |dict_entries| and |array_values| instead.
20400    #[derive(Clone, PartialEq, ::prost::Message)]
20401    pub struct NestedValue {
20402        #[prost(enumeration = "nested_value::NestedType", optional, tag = "1")]
20403        pub nested_type: ::core::option::Option<i32>,
20404        #[prost(string, repeated, tag = "2")]
20405        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20406        #[prost(message, repeated, tag = "3")]
20407        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
20408        #[prost(message, repeated, tag = "4")]
20409        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
20410        #[prost(int64, optional, tag = "5")]
20411        pub int_value: ::core::option::Option<i64>,
20412        #[prost(double, optional, tag = "6")]
20413        pub double_value: ::core::option::Option<f64>,
20414        #[prost(bool, optional, tag = "7")]
20415        pub bool_value: ::core::option::Option<bool>,
20416        #[prost(string, optional, tag = "8")]
20417        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
20418    }
20419    /// Nested message and enum types in `NestedValue`.
20420    pub mod nested_value {
20421        #[derive(
20422            Clone,
20423            Copy,
20424            Debug,
20425            PartialEq,
20426            Eq,
20427            Hash,
20428            PartialOrd,
20429            Ord,
20430            ::prost::Enumeration
20431        )]
20432        #[repr(i32)]
20433        pub enum NestedType {
20434            /// leaf value.
20435            Unspecified = 0,
20436            Dict = 1,
20437            Array = 2,
20438        }
20439        impl NestedType {
20440            /// String value of the enum field names used in the ProtoBuf definition.
20441            ///
20442            /// The values are not transformed in any way and thus are considered stable
20443            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20444            pub fn as_str_name(&self) -> &'static str {
20445                match self {
20446                    Self::Unspecified => "UNSPECIFIED",
20447                    Self::Dict => "DICT",
20448                    Self::Array => "ARRAY",
20449                }
20450            }
20451            /// Creates an enum from field names used in the ProtoBuf definition.
20452            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20453                match value {
20454                    "UNSPECIFIED" => Some(Self::Unspecified),
20455                    "DICT" => Some(Self::Dict),
20456                    "ARRAY" => Some(Self::Array),
20457                    _ => None,
20458                }
20459            }
20460        }
20461    }
20462    /// Name fields are set only for dictionary entries.
20463    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20464    pub enum NameField {
20465        /// interned DebugAnnotationName.
20466        #[prost(uint64, tag = "1")]
20467        NameIid(u64),
20468        /// non-interned variant.
20469        #[prost(string, tag = "10")]
20470        Name(::prost::alloc::string::String),
20471    }
20472    #[derive(Clone, PartialEq, ::prost::Oneof)]
20473    pub enum Value {
20474        #[prost(bool, tag = "2")]
20475        BoolValue(bool),
20476        #[prost(uint64, tag = "3")]
20477        UintValue(u64),
20478        #[prost(int64, tag = "4")]
20479        IntValue(i64),
20480        #[prost(double, tag = "5")]
20481        DoubleValue(f64),
20482        /// Pointers are stored in a separate type as the JSON output treats them
20483        /// differently from other uint64 values.
20484        #[prost(uint64, tag = "7")]
20485        PointerValue(u64),
20486        /// Deprecated. Use dict_entries / array_values instead.
20487        #[prost(message, tag = "8")]
20488        NestedValue(NestedValue),
20489        /// Legacy instrumentation may not support conversion of nested data to
20490        /// NestedValue yet.
20491        #[prost(string, tag = "9")]
20492        LegacyJsonValue(::prost::alloc::string::String),
20493        /// interned and non-interned variants of strings.
20494        #[prost(string, tag = "6")]
20495        StringValue(::prost::alloc::string::String),
20496        /// Corresponds to |debug_annotation_string_values| field in InternedData.
20497        #[prost(uint64, tag = "17")]
20498        StringValueIid(u64),
20499    }
20500    /// Used to embed arbitrary proto messages (which are also typically used to
20501    /// represent typed TrackEvent arguments). |proto_type_name| or
20502    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20503    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20504    /// proto messages. See |TracedValue::WriteProto| for more details.
20505    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20506    pub enum ProtoTypeDescriptor {
20507        #[prost(string, tag = "16")]
20508        ProtoTypeName(::prost::alloc::string::String),
20509        /// interned DebugAnnotationValueTypeName.
20510        #[prost(uint64, tag = "13")]
20511        ProtoTypeNameIid(u64),
20512    }
20513}
20514#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20515pub struct DebugAnnotationName {
20516    #[prost(uint64, optional, tag = "1")]
20517    pub iid: ::core::option::Option<u64>,
20518    #[prost(string, optional, tag = "2")]
20519    pub name: ::core::option::Option<::prost::alloc::string::String>,
20520}
20521/// See the |proto_type_descriptor| comment.
20522#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20523pub struct DebugAnnotationValueTypeName {
20524    #[prost(uint64, optional, tag = "1")]
20525    pub iid: ::core::option::Option<u64>,
20526    #[prost(string, optional, tag = "2")]
20527    pub name: ::core::option::Option<::prost::alloc::string::String>,
20528}
20529#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20530pub struct LogMessage {
20531    /// interned SourceLocation.
20532    #[prost(uint64, optional, tag = "1")]
20533    pub source_location_iid: ::core::option::Option<u64>,
20534    /// interned LogMessageBody.
20535    #[prost(uint64, optional, tag = "2")]
20536    pub body_iid: ::core::option::Option<u64>,
20537    #[prost(enumeration = "log_message::Priority", optional, tag = "3")]
20538    pub prio: ::core::option::Option<i32>,
20539}
20540/// Nested message and enum types in `LogMessage`.
20541pub mod log_message {
20542    #[derive(
20543        Clone,
20544        Copy,
20545        Debug,
20546        PartialEq,
20547        Eq,
20548        Hash,
20549        PartialOrd,
20550        Ord,
20551        ::prost::Enumeration
20552    )]
20553    #[repr(i32)]
20554    pub enum Priority {
20555        PrioUnspecified = 0,
20556        PrioUnused = 1,
20557        PrioVerbose = 2,
20558        PrioDebug = 3,
20559        PrioInfo = 4,
20560        PrioWarn = 5,
20561        PrioError = 6,
20562        PrioFatal = 7,
20563    }
20564    impl Priority {
20565        /// String value of the enum field names used in the ProtoBuf definition.
20566        ///
20567        /// The values are not transformed in any way and thus are considered stable
20568        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20569        pub fn as_str_name(&self) -> &'static str {
20570            match self {
20571                Self::PrioUnspecified => "PRIO_UNSPECIFIED",
20572                Self::PrioUnused => "PRIO_UNUSED",
20573                Self::PrioVerbose => "PRIO_VERBOSE",
20574                Self::PrioDebug => "PRIO_DEBUG",
20575                Self::PrioInfo => "PRIO_INFO",
20576                Self::PrioWarn => "PRIO_WARN",
20577                Self::PrioError => "PRIO_ERROR",
20578                Self::PrioFatal => "PRIO_FATAL",
20579            }
20580        }
20581        /// Creates an enum from field names used in the ProtoBuf definition.
20582        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20583            match value {
20584                "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
20585                "PRIO_UNUSED" => Some(Self::PrioUnused),
20586                "PRIO_VERBOSE" => Some(Self::PrioVerbose),
20587                "PRIO_DEBUG" => Some(Self::PrioDebug),
20588                "PRIO_INFO" => Some(Self::PrioInfo),
20589                "PRIO_WARN" => Some(Self::PrioWarn),
20590                "PRIO_ERROR" => Some(Self::PrioError),
20591                "PRIO_FATAL" => Some(Self::PrioFatal),
20592                _ => None,
20593            }
20594        }
20595    }
20596}
20597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20598pub struct LogMessageBody {
20599    #[prost(uint64, optional, tag = "1")]
20600    pub iid: ::core::option::Option<u64>,
20601    #[prost(string, optional, tag = "2")]
20602    pub body: ::core::option::Option<::prost::alloc::string::String>,
20603}
20604/// A source location, represented as a native symbol.
20605/// This is similar to `message Frame` from
20606/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
20607/// source code locations (for example in track event args), not stack frames.
20608#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20609pub struct UnsymbolizedSourceLocation {
20610    #[prost(uint64, optional, tag = "1")]
20611    pub iid: ::core::option::Option<u64>,
20612    #[prost(uint64, optional, tag = "2")]
20613    pub mapping_id: ::core::option::Option<u64>,
20614    #[prost(uint64, optional, tag = "3")]
20615    pub rel_pc: ::core::option::Option<u64>,
20616}
20617#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20618pub struct SourceLocation {
20619    #[prost(uint64, optional, tag = "1")]
20620    pub iid: ::core::option::Option<u64>,
20621    #[prost(string, optional, tag = "2")]
20622    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20623    #[prost(string, optional, tag = "3")]
20624    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20625    #[prost(uint32, optional, tag = "4")]
20626    pub line_number: ::core::option::Option<u32>,
20627}
20628/// A list of processes connected to the tracing service.
20629#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20630pub struct ChromeActiveProcesses {
20631    #[prost(int32, repeated, packed = "false", tag = "1")]
20632    pub pid: ::prost::alloc::vec::Vec<i32>,
20633}
20634/// Trace event arguments for application state changes.
20635#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20636pub struct ChromeApplicationStateInfo {
20637    #[prost(
20638        enumeration = "chrome_application_state_info::ChromeApplicationState",
20639        optional,
20640        tag = "1"
20641    )]
20642    pub application_state: ::core::option::Option<i32>,
20643}
20644/// Nested message and enum types in `ChromeApplicationStateInfo`.
20645pub mod chrome_application_state_info {
20646    /// Enum definition taken from:
20647    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
20648    #[derive(
20649        Clone,
20650        Copy,
20651        Debug,
20652        PartialEq,
20653        Eq,
20654        Hash,
20655        PartialOrd,
20656        Ord,
20657        ::prost::Enumeration
20658    )]
20659    #[repr(i32)]
20660    pub enum ChromeApplicationState {
20661        ApplicationStateUnknown = 0,
20662        ApplicationStateHasRunningActivities = 1,
20663        ApplicationStateHasPausedActivities = 2,
20664        ApplicationStateHasStoppedActivities = 3,
20665        ApplicationStateHasDestroyedActivities = 4,
20666    }
20667    impl ChromeApplicationState {
20668        /// String value of the enum field names used in the ProtoBuf definition.
20669        ///
20670        /// The values are not transformed in any way and thus are considered stable
20671        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20672        pub fn as_str_name(&self) -> &'static str {
20673            match self {
20674                Self::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
20675                Self::ApplicationStateHasRunningActivities => {
20676                    "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES"
20677                }
20678                Self::ApplicationStateHasPausedActivities => {
20679                    "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES"
20680                }
20681                Self::ApplicationStateHasStoppedActivities => {
20682                    "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES"
20683                }
20684                Self::ApplicationStateHasDestroyedActivities => {
20685                    "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES"
20686                }
20687            }
20688        }
20689        /// Creates an enum from field names used in the ProtoBuf definition.
20690        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20691            match value {
20692                "APPLICATION_STATE_UNKNOWN" => Some(Self::ApplicationStateUnknown),
20693                "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES" => {
20694                    Some(Self::ApplicationStateHasRunningActivities)
20695                }
20696                "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES" => {
20697                    Some(Self::ApplicationStateHasPausedActivities)
20698                }
20699                "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES" => {
20700                    Some(Self::ApplicationStateHasStoppedActivities)
20701                }
20702                "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES" => {
20703                    Some(Self::ApplicationStateHasDestroyedActivities)
20704                }
20705                _ => None,
20706            }
20707        }
20708    }
20709}
20710/// Next id: 18
20711#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20712pub struct ChromeCompositorSchedulerState {
20713    #[prost(message, optional, tag = "1")]
20714    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
20715    #[prost(bool, optional, tag = "2")]
20716    pub observing_begin_frame_source: ::core::option::Option<bool>,
20717    #[prost(bool, optional, tag = "3")]
20718    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
20719    #[prost(bool, optional, tag = "4")]
20720    pub pending_begin_frame_task: ::core::option::Option<bool>,
20721    #[prost(bool, optional, tag = "5")]
20722    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
20723    #[prost(enumeration = "ChromeCompositorSchedulerAction", optional, tag = "7")]
20724    pub inside_action: ::core::option::Option<i32>,
20725    #[prost(
20726        enumeration = "chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode",
20727        optional,
20728        tag = "8"
20729    )]
20730    pub deadline_mode: ::core::option::Option<i32>,
20731    #[prost(int64, optional, tag = "9")]
20732    pub deadline_us: ::core::option::Option<i64>,
20733    #[prost(int64, optional, tag = "10")]
20734    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
20735    #[prost(int64, optional, tag = "11")]
20736    pub now_us: ::core::option::Option<i64>,
20737    #[prost(int64, optional, tag = "12")]
20738    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
20739    #[prost(int64, optional, tag = "13")]
20740    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
20741    #[prost(message, optional, tag = "14")]
20742    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
20743    #[prost(message, optional, tag = "15")]
20744    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
20745    #[prost(message, optional, tag = "16")]
20746    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
20747    #[prost(message, optional, tag = "17")]
20748    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
20749}
20750/// Nested message and enum types in `ChromeCompositorSchedulerState`.
20751pub mod chrome_compositor_scheduler_state {
20752    #[derive(
20753        Clone,
20754        Copy,
20755        Debug,
20756        PartialEq,
20757        Eq,
20758        Hash,
20759        PartialOrd,
20760        Ord,
20761        ::prost::Enumeration
20762    )]
20763    #[repr(i32)]
20764    pub enum BeginImplFrameDeadlineMode {
20765        DeadlineModeUnspecified = 0,
20766        DeadlineModeNone = 1,
20767        DeadlineModeImmediate = 2,
20768        DeadlineModeRegular = 3,
20769        DeadlineModeLate = 4,
20770        DeadlineModeBlocked = 5,
20771    }
20772    impl BeginImplFrameDeadlineMode {
20773        /// String value of the enum field names used in the ProtoBuf definition.
20774        ///
20775        /// The values are not transformed in any way and thus are considered stable
20776        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20777        pub fn as_str_name(&self) -> &'static str {
20778            match self {
20779                Self::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
20780                Self::DeadlineModeNone => "DEADLINE_MODE_NONE",
20781                Self::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
20782                Self::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
20783                Self::DeadlineModeLate => "DEADLINE_MODE_LATE",
20784                Self::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
20785            }
20786        }
20787        /// Creates an enum from field names used in the ProtoBuf definition.
20788        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20789            match value {
20790                "DEADLINE_MODE_UNSPECIFIED" => Some(Self::DeadlineModeUnspecified),
20791                "DEADLINE_MODE_NONE" => Some(Self::DeadlineModeNone),
20792                "DEADLINE_MODE_IMMEDIATE" => Some(Self::DeadlineModeImmediate),
20793                "DEADLINE_MODE_REGULAR" => Some(Self::DeadlineModeRegular),
20794                "DEADLINE_MODE_LATE" => Some(Self::DeadlineModeLate),
20795                "DEADLINE_MODE_BLOCKED" => Some(Self::DeadlineModeBlocked),
20796                _ => None,
20797            }
20798        }
20799    }
20800}
20801/// Describes the current values stored in the Chrome Compositor state machine.
20802/// Next id: 3
20803#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20804pub struct ChromeCompositorStateMachine {
20805    #[prost(message, optional, tag = "1")]
20806    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
20807    #[prost(message, optional, tag = "2")]
20808    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
20809}
20810/// Nested message and enum types in `ChromeCompositorStateMachine`.
20811pub mod chrome_compositor_state_machine {
20812    /// Next id: 6
20813    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20814    pub struct MajorState {
20815        #[prost(
20816            enumeration = "super::ChromeCompositorSchedulerAction",
20817            optional,
20818            tag = "1"
20819        )]
20820        pub next_action: ::core::option::Option<i32>,
20821        #[prost(enumeration = "major_state::BeginImplFrameState", optional, tag = "2")]
20822        pub begin_impl_frame_state: ::core::option::Option<i32>,
20823        #[prost(enumeration = "major_state::BeginMainFrameState", optional, tag = "3")]
20824        pub begin_main_frame_state: ::core::option::Option<i32>,
20825        #[prost(
20826            enumeration = "major_state::LayerTreeFrameSinkState",
20827            optional,
20828            tag = "4"
20829        )]
20830        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
20831        #[prost(
20832            enumeration = "major_state::ForcedRedrawOnTimeoutState",
20833            optional,
20834            tag = "5"
20835        )]
20836        pub forced_redraw_state: ::core::option::Option<i32>,
20837    }
20838    /// Nested message and enum types in `MajorState`.
20839    pub mod major_state {
20840        #[derive(
20841            Clone,
20842            Copy,
20843            Debug,
20844            PartialEq,
20845            Eq,
20846            Hash,
20847            PartialOrd,
20848            Ord,
20849            ::prost::Enumeration
20850        )]
20851        #[repr(i32)]
20852        pub enum BeginImplFrameState {
20853            BeginImplFrameUnspecified = 0,
20854            BeginImplFrameIdle = 1,
20855            BeginImplFrameInsideBeginFrame = 2,
20856            BeginImplFrameInsideDeadline = 3,
20857        }
20858        impl BeginImplFrameState {
20859            /// String value of the enum field names used in the ProtoBuf definition.
20860            ///
20861            /// The values are not transformed in any way and thus are considered stable
20862            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20863            pub fn as_str_name(&self) -> &'static str {
20864                match self {
20865                    Self::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
20866                    Self::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
20867                    Self::BeginImplFrameInsideBeginFrame => {
20868                        "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME"
20869                    }
20870                    Self::BeginImplFrameInsideDeadline => {
20871                        "BEGIN_IMPL_FRAME_INSIDE_DEADLINE"
20872                    }
20873                }
20874            }
20875            /// Creates an enum from field names used in the ProtoBuf definition.
20876            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20877                match value {
20878                    "BEGIN_IMPL_FRAME_UNSPECIFIED" => {
20879                        Some(Self::BeginImplFrameUnspecified)
20880                    }
20881                    "BEGIN_IMPL_FRAME_IDLE" => Some(Self::BeginImplFrameIdle),
20882                    "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME" => {
20883                        Some(Self::BeginImplFrameInsideBeginFrame)
20884                    }
20885                    "BEGIN_IMPL_FRAME_INSIDE_DEADLINE" => {
20886                        Some(Self::BeginImplFrameInsideDeadline)
20887                    }
20888                    _ => None,
20889                }
20890            }
20891        }
20892        #[derive(
20893            Clone,
20894            Copy,
20895            Debug,
20896            PartialEq,
20897            Eq,
20898            Hash,
20899            PartialOrd,
20900            Ord,
20901            ::prost::Enumeration
20902        )]
20903        #[repr(i32)]
20904        pub enum BeginMainFrameState {
20905            BeginMainFrameUnspecified = 0,
20906            BeginMainFrameIdle = 1,
20907            BeginMainFrameSent = 2,
20908            BeginMainFrameReadyToCommit = 3,
20909        }
20910        impl BeginMainFrameState {
20911            /// String value of the enum field names used in the ProtoBuf definition.
20912            ///
20913            /// The values are not transformed in any way and thus are considered stable
20914            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20915            pub fn as_str_name(&self) -> &'static str {
20916                match self {
20917                    Self::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
20918                    Self::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
20919                    Self::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
20920                    Self::BeginMainFrameReadyToCommit => {
20921                        "BEGIN_MAIN_FRAME_READY_TO_COMMIT"
20922                    }
20923                }
20924            }
20925            /// Creates an enum from field names used in the ProtoBuf definition.
20926            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20927                match value {
20928                    "BEGIN_MAIN_FRAME_UNSPECIFIED" => {
20929                        Some(Self::BeginMainFrameUnspecified)
20930                    }
20931                    "BEGIN_MAIN_FRAME_IDLE" => Some(Self::BeginMainFrameIdle),
20932                    "BEGIN_MAIN_FRAME_SENT" => Some(Self::BeginMainFrameSent),
20933                    "BEGIN_MAIN_FRAME_READY_TO_COMMIT" => {
20934                        Some(Self::BeginMainFrameReadyToCommit)
20935                    }
20936                    _ => None,
20937                }
20938            }
20939        }
20940        #[derive(
20941            Clone,
20942            Copy,
20943            Debug,
20944            PartialEq,
20945            Eq,
20946            Hash,
20947            PartialOrd,
20948            Ord,
20949            ::prost::Enumeration
20950        )]
20951        #[repr(i32)]
20952        pub enum LayerTreeFrameSinkState {
20953            LayerTreeFrameUnspecified = 0,
20954            LayerTreeFrameNone = 1,
20955            LayerTreeFrameActive = 2,
20956            LayerTreeFrameCreating = 3,
20957            LayerTreeFrameWaitingForFirstCommit = 4,
20958            LayerTreeFrameWaitingForFirstActivation = 5,
20959        }
20960        impl LayerTreeFrameSinkState {
20961            /// String value of the enum field names used in the ProtoBuf definition.
20962            ///
20963            /// The values are not transformed in any way and thus are considered stable
20964            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20965            pub fn as_str_name(&self) -> &'static str {
20966                match self {
20967                    Self::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
20968                    Self::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
20969                    Self::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
20970                    Self::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
20971                    Self::LayerTreeFrameWaitingForFirstCommit => {
20972                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT"
20973                    }
20974                    Self::LayerTreeFrameWaitingForFirstActivation => {
20975                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION"
20976                    }
20977                }
20978            }
20979            /// Creates an enum from field names used in the ProtoBuf definition.
20980            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20981                match value {
20982                    "LAYER_TREE_FRAME_UNSPECIFIED" => {
20983                        Some(Self::LayerTreeFrameUnspecified)
20984                    }
20985                    "LAYER_TREE_FRAME_NONE" => Some(Self::LayerTreeFrameNone),
20986                    "LAYER_TREE_FRAME_ACTIVE" => Some(Self::LayerTreeFrameActive),
20987                    "LAYER_TREE_FRAME_CREATING" => Some(Self::LayerTreeFrameCreating),
20988                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT" => {
20989                        Some(Self::LayerTreeFrameWaitingForFirstCommit)
20990                    }
20991                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION" => {
20992                        Some(Self::LayerTreeFrameWaitingForFirstActivation)
20993                    }
20994                    _ => None,
20995                }
20996            }
20997        }
20998        #[derive(
20999            Clone,
21000            Copy,
21001            Debug,
21002            PartialEq,
21003            Eq,
21004            Hash,
21005            PartialOrd,
21006            Ord,
21007            ::prost::Enumeration
21008        )]
21009        #[repr(i32)]
21010        pub enum ForcedRedrawOnTimeoutState {
21011            ForcedRedrawUnspecified = 0,
21012            ForcedRedrawIdle = 1,
21013            ForcedRedrawWaitingForCommit = 2,
21014            ForcedRedrawWaitingForActivation = 3,
21015            ForcedRedrawWaitingForDraw = 4,
21016        }
21017        impl ForcedRedrawOnTimeoutState {
21018            /// String value of the enum field names used in the ProtoBuf definition.
21019            ///
21020            /// The values are not transformed in any way and thus are considered stable
21021            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21022            pub fn as_str_name(&self) -> &'static str {
21023                match self {
21024                    Self::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
21025                    Self::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
21026                    Self::ForcedRedrawWaitingForCommit => {
21027                        "FORCED_REDRAW_WAITING_FOR_COMMIT"
21028                    }
21029                    Self::ForcedRedrawWaitingForActivation => {
21030                        "FORCED_REDRAW_WAITING_FOR_ACTIVATION"
21031                    }
21032                    Self::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
21033                }
21034            }
21035            /// Creates an enum from field names used in the ProtoBuf definition.
21036            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21037                match value {
21038                    "FORCED_REDRAW_UNSPECIFIED" => Some(Self::ForcedRedrawUnspecified),
21039                    "FORCED_REDRAW_IDLE" => Some(Self::ForcedRedrawIdle),
21040                    "FORCED_REDRAW_WAITING_FOR_COMMIT" => {
21041                        Some(Self::ForcedRedrawWaitingForCommit)
21042                    }
21043                    "FORCED_REDRAW_WAITING_FOR_ACTIVATION" => {
21044                        Some(Self::ForcedRedrawWaitingForActivation)
21045                    }
21046                    "FORCED_REDRAW_WAITING_FOR_DRAW" => {
21047                        Some(Self::ForcedRedrawWaitingForDraw)
21048                    }
21049                    _ => None,
21050                }
21051            }
21052        }
21053    }
21054    /// Next id: 47
21055    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21056    pub struct MinorState {
21057        #[prost(int32, optional, tag = "1")]
21058        pub commit_count: ::core::option::Option<i32>,
21059        #[prost(int32, optional, tag = "2")]
21060        pub current_frame_number: ::core::option::Option<i32>,
21061        #[prost(int32, optional, tag = "3")]
21062        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
21063        #[prost(int32, optional, tag = "4")]
21064        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
21065        #[prost(int32, optional, tag = "5")]
21066        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
21067        #[prost(bool, optional, tag = "6")]
21068        pub did_draw: ::core::option::Option<bool>,
21069        #[prost(bool, optional, tag = "7")]
21070        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
21071        #[prost(bool, optional, tag = "8")]
21072        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
21073        #[prost(bool, optional, tag = "9")]
21074        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
21075        #[prost(bool, optional, tag = "10")]
21076        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
21077        #[prost(bool, optional, tag = "11")]
21078        pub did_commit_during_frame: ::core::option::Option<bool>,
21079        #[prost(bool, optional, tag = "12")]
21080        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
21081        #[prost(bool, optional, tag = "13")]
21082        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
21083        #[prost(bool, optional, tag = "14")]
21084        pub did_prepare_tiles: ::core::option::Option<bool>,
21085        #[prost(int32, optional, tag = "15")]
21086        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
21087        #[prost(int32, optional, tag = "16")]
21088        pub pending_submit_frames: ::core::option::Option<i32>,
21089        #[prost(int32, optional, tag = "17")]
21090        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<
21091            i32,
21092        >,
21093        #[prost(bool, optional, tag = "18")]
21094        pub needs_redraw: ::core::option::Option<bool>,
21095        #[prost(bool, optional, tag = "19")]
21096        pub needs_prepare_tiles: ::core::option::Option<bool>,
21097        #[prost(bool, optional, tag = "20")]
21098        pub needs_begin_main_frame: ::core::option::Option<bool>,
21099        #[prost(bool, optional, tag = "21")]
21100        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
21101        #[prost(bool, optional, tag = "22")]
21102        pub visible: ::core::option::Option<bool>,
21103        #[prost(bool, optional, tag = "23")]
21104        pub begin_frame_source_paused: ::core::option::Option<bool>,
21105        #[prost(bool, optional, tag = "24")]
21106        pub can_draw: ::core::option::Option<bool>,
21107        #[prost(bool, optional, tag = "25")]
21108        pub resourceless_draw: ::core::option::Option<bool>,
21109        #[prost(bool, optional, tag = "26")]
21110        pub has_pending_tree: ::core::option::Option<bool>,
21111        #[prost(bool, optional, tag = "27")]
21112        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
21113        #[prost(bool, optional, tag = "28")]
21114        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
21115        #[prost(bool, optional, tag = "29")]
21116        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
21117        #[prost(bool, optional, tag = "30")]
21118        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<
21119            bool,
21120        >,
21121        #[prost(enumeration = "minor_state::TreePriority", optional, tag = "31")]
21122        pub tree_priority: ::core::option::Option<i32>,
21123        #[prost(enumeration = "minor_state::ScrollHandlerState", optional, tag = "32")]
21124        pub scroll_handler_state: ::core::option::Option<i32>,
21125        #[prost(bool, optional, tag = "33")]
21126        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
21127        #[prost(bool, optional, tag = "34")]
21128        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
21129        #[prost(bool, optional, tag = "36")]
21130        pub video_needs_begin_frames: ::core::option::Option<bool>,
21131        #[prost(bool, optional, tag = "37")]
21132        pub defer_begin_main_frame: ::core::option::Option<bool>,
21133        #[prost(bool, optional, tag = "38")]
21134        pub last_commit_had_no_updates: ::core::option::Option<bool>,
21135        #[prost(bool, optional, tag = "39")]
21136        pub did_draw_in_last_frame: ::core::option::Option<bool>,
21137        #[prost(bool, optional, tag = "40")]
21138        pub did_submit_in_last_frame: ::core::option::Option<bool>,
21139        #[prost(bool, optional, tag = "41")]
21140        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
21141        #[prost(bool, optional, tag = "42")]
21142        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
21143        #[prost(bool, optional, tag = "43")]
21144        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
21145        #[prost(bool, optional, tag = "44")]
21146        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
21147        #[prost(bool, optional, tag = "45")]
21148        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
21149        #[prost(bool, optional, tag = "46")]
21150        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
21151    }
21152    /// Nested message and enum types in `MinorState`.
21153    pub mod minor_state {
21154        #[derive(
21155            Clone,
21156            Copy,
21157            Debug,
21158            PartialEq,
21159            Eq,
21160            Hash,
21161            PartialOrd,
21162            Ord,
21163            ::prost::Enumeration
21164        )]
21165        #[repr(i32)]
21166        pub enum TreePriority {
21167            Unspecified = 0,
21168            SamePriorityForBothTrees = 1,
21169            SmoothnessTakesPriority = 2,
21170            NewContentTakesPriority = 3,
21171        }
21172        impl TreePriority {
21173            /// String value of the enum field names used in the ProtoBuf definition.
21174            ///
21175            /// The values are not transformed in any way and thus are considered stable
21176            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21177            pub fn as_str_name(&self) -> &'static str {
21178                match self {
21179                    Self::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
21180                    Self::SamePriorityForBothTrees => {
21181                        "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES"
21182                    }
21183                    Self::SmoothnessTakesPriority => {
21184                        "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY"
21185                    }
21186                    Self::NewContentTakesPriority => {
21187                        "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY"
21188                    }
21189                }
21190            }
21191            /// Creates an enum from field names used in the ProtoBuf definition.
21192            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21193                match value {
21194                    "TREE_PRIORITY_UNSPECIFIED" => Some(Self::Unspecified),
21195                    "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES" => {
21196                        Some(Self::SamePriorityForBothTrees)
21197                    }
21198                    "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY" => {
21199                        Some(Self::SmoothnessTakesPriority)
21200                    }
21201                    "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY" => {
21202                        Some(Self::NewContentTakesPriority)
21203                    }
21204                    _ => None,
21205                }
21206            }
21207        }
21208        #[derive(
21209            Clone,
21210            Copy,
21211            Debug,
21212            PartialEq,
21213            Eq,
21214            Hash,
21215            PartialOrd,
21216            Ord,
21217            ::prost::Enumeration
21218        )]
21219        #[repr(i32)]
21220        pub enum ScrollHandlerState {
21221            ScrollHandlerUnspecified = 0,
21222            ScrollAffectsScrollHandler = 1,
21223            ScrollDoesNotAffectScrollHandler = 2,
21224        }
21225        impl ScrollHandlerState {
21226            /// String value of the enum field names used in the ProtoBuf definition.
21227            ///
21228            /// The values are not transformed in any way and thus are considered stable
21229            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21230            pub fn as_str_name(&self) -> &'static str {
21231                match self {
21232                    Self::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
21233                    Self::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
21234                    Self::ScrollDoesNotAffectScrollHandler => {
21235                        "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER"
21236                    }
21237                }
21238            }
21239            /// Creates an enum from field names used in the ProtoBuf definition.
21240            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21241                match value {
21242                    "SCROLL_HANDLER_UNSPECIFIED" => Some(Self::ScrollHandlerUnspecified),
21243                    "SCROLL_AFFECTS_SCROLL_HANDLER" => {
21244                        Some(Self::ScrollAffectsScrollHandler)
21245                    }
21246                    "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER" => {
21247                        Some(Self::ScrollDoesNotAffectScrollHandler)
21248                    }
21249                    _ => None,
21250                }
21251            }
21252        }
21253    }
21254}
21255/// Next id: 13
21256#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21257pub struct BeginFrameArgs {
21258    #[prost(enumeration = "begin_frame_args::BeginFrameArgsType", optional, tag = "1")]
21259    pub r#type: ::core::option::Option<i32>,
21260    #[prost(uint64, optional, tag = "2")]
21261    pub source_id: ::core::option::Option<u64>,
21262    #[prost(uint64, optional, tag = "3")]
21263    pub sequence_number: ::core::option::Option<u64>,
21264    #[prost(int64, optional, tag = "4")]
21265    pub frame_time_us: ::core::option::Option<i64>,
21266    #[prost(int64, optional, tag = "5")]
21267    pub deadline_us: ::core::option::Option<i64>,
21268    #[prost(int64, optional, tag = "6")]
21269    pub interval_delta_us: ::core::option::Option<i64>,
21270    #[prost(bool, optional, tag = "7")]
21271    pub on_critical_path: ::core::option::Option<bool>,
21272    #[prost(bool, optional, tag = "8")]
21273    pub animate_only: ::core::option::Option<bool>,
21274    #[prost(int64, optional, tag = "12")]
21275    pub frames_throttled_since_last: ::core::option::Option<i64>,
21276    #[prost(oneof = "begin_frame_args::CreatedFrom", tags = "9, 10")]
21277    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
21278}
21279/// Nested message and enum types in `BeginFrameArgs`.
21280pub mod begin_frame_args {
21281    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
21282    /// drop this in the proto representation, and instead make the JSON format
21283    /// "subtype" field become the type field.
21284    #[derive(
21285        Clone,
21286        Copy,
21287        Debug,
21288        PartialEq,
21289        Eq,
21290        Hash,
21291        PartialOrd,
21292        Ord,
21293        ::prost::Enumeration
21294    )]
21295    #[repr(i32)]
21296    pub enum BeginFrameArgsType {
21297        Unspecified = 0,
21298        Invalid = 1,
21299        Normal = 2,
21300        Missed = 3,
21301    }
21302    impl BeginFrameArgsType {
21303        /// String value of the enum field names used in the ProtoBuf definition.
21304        ///
21305        /// The values are not transformed in any way and thus are considered stable
21306        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21307        pub fn as_str_name(&self) -> &'static str {
21308            match self {
21309                Self::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
21310                Self::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
21311                Self::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
21312                Self::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
21313            }
21314        }
21315        /// Creates an enum from field names used in the ProtoBuf definition.
21316        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21317            match value {
21318                "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
21319                "BEGIN_FRAME_ARGS_TYPE_INVALID" => Some(Self::Invalid),
21320                "BEGIN_FRAME_ARGS_TYPE_NORMAL" => Some(Self::Normal),
21321                "BEGIN_FRAME_ARGS_TYPE_MISSED" => Some(Self::Missed),
21322                _ => None,
21323            }
21324        }
21325    }
21326    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
21327    pub enum CreatedFrom {
21328        /// The interned SourceLocation.
21329        #[prost(uint64, tag = "9")]
21330        SourceLocationIid(u64),
21331        /// The SourceLocation that this args was created from.
21332        /// TODO(nuskos): Eventually we will support interning inside of
21333        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
21334        /// since we can emit it as part of the InternedData message. When we can
21335        /// remove this |source_location|.
21336        #[prost(message, tag = "10")]
21337        SourceLocation(super::SourceLocation),
21338    }
21339}
21340/// Next id: 7
21341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21342pub struct BeginImplFrameArgs {
21343    #[prost(int64, optional, tag = "1")]
21344    pub updated_at_us: ::core::option::Option<i64>,
21345    #[prost(int64, optional, tag = "2")]
21346    pub finished_at_us: ::core::option::Option<i64>,
21347    #[prost(enumeration = "begin_impl_frame_args::State", optional, tag = "3")]
21348    pub state: ::core::option::Option<i32>,
21349    #[prost(message, optional, tag = "6")]
21350    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
21351    #[prost(oneof = "begin_impl_frame_args::Args", tags = "4, 5")]
21352    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
21353}
21354/// Nested message and enum types in `BeginImplFrameArgs`.
21355pub mod begin_impl_frame_args {
21356    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21357    pub struct TimestampsInUs {
21358        #[prost(int64, optional, tag = "1")]
21359        pub interval_delta: ::core::option::Option<i64>,
21360        #[prost(int64, optional, tag = "2")]
21361        pub now_to_deadline_delta: ::core::option::Option<i64>,
21362        #[prost(int64, optional, tag = "3")]
21363        pub frame_time_to_now_delta: ::core::option::Option<i64>,
21364        #[prost(int64, optional, tag = "4")]
21365        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
21366        #[prost(int64, optional, tag = "5")]
21367        pub now: ::core::option::Option<i64>,
21368        #[prost(int64, optional, tag = "6")]
21369        pub frame_time: ::core::option::Option<i64>,
21370        #[prost(int64, optional, tag = "7")]
21371        pub deadline: ::core::option::Option<i64>,
21372    }
21373    #[derive(
21374        Clone,
21375        Copy,
21376        Debug,
21377        PartialEq,
21378        Eq,
21379        Hash,
21380        PartialOrd,
21381        Ord,
21382        ::prost::Enumeration
21383    )]
21384    #[repr(i32)]
21385    pub enum State {
21386        BeginFrameFinished = 0,
21387        BeginFrameUsing = 1,
21388    }
21389    impl State {
21390        /// String value of the enum field names used in the ProtoBuf definition.
21391        ///
21392        /// The values are not transformed in any way and thus are considered stable
21393        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21394        pub fn as_str_name(&self) -> &'static str {
21395            match self {
21396                Self::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
21397                Self::BeginFrameUsing => "BEGIN_FRAME_USING",
21398            }
21399        }
21400        /// Creates an enum from field names used in the ProtoBuf definition.
21401        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21402            match value {
21403                "BEGIN_FRAME_FINISHED" => Some(Self::BeginFrameFinished),
21404                "BEGIN_FRAME_USING" => Some(Self::BeginFrameUsing),
21405                _ => None,
21406            }
21407        }
21408    }
21409    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
21410    pub enum Args {
21411        /// Only set if |state| is BEGIN_FRAME_FINISHED.
21412        #[prost(message, tag = "4")]
21413        CurrentArgs(super::BeginFrameArgs),
21414        /// Only set if |state| is BEGIN_FRAME_USING.
21415        #[prost(message, tag = "5")]
21416        LastArgs(super::BeginFrameArgs),
21417    }
21418}
21419#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21420pub struct BeginFrameObserverState {
21421    #[prost(int64, optional, tag = "1")]
21422    pub dropped_begin_frame_args: ::core::option::Option<i64>,
21423    #[prost(message, optional, tag = "2")]
21424    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
21425}
21426#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21427pub struct BeginFrameSourceState {
21428    #[prost(uint32, optional, tag = "1")]
21429    pub source_id: ::core::option::Option<u32>,
21430    #[prost(bool, optional, tag = "2")]
21431    pub paused: ::core::option::Option<bool>,
21432    #[prost(uint32, optional, tag = "3")]
21433    pub num_observers: ::core::option::Option<u32>,
21434    #[prost(message, optional, tag = "4")]
21435    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
21436}
21437#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21438pub struct CompositorTimingHistory {
21439    #[prost(int64, optional, tag = "1")]
21440    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
21441    #[prost(int64, optional, tag = "2")]
21442    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<
21443        i64,
21444    >,
21445    #[prost(int64, optional, tag = "3")]
21446    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<
21447        i64,
21448    >,
21449    #[prost(int64, optional, tag = "4")]
21450    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
21451    #[prost(int64, optional, tag = "5")]
21452    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
21453    #[prost(int64, optional, tag = "6")]
21454    pub activate_estimate_delta_us: ::core::option::Option<i64>,
21455    #[prost(int64, optional, tag = "7")]
21456    pub draw_estimate_delta_us: ::core::option::Option<i64>,
21457}
21458/// Details about ContentSettings trace events.
21459#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21460pub struct ChromeContentSettingsEventInfo {
21461    /// The number of user defined hostname patterns for content settings at
21462    /// browser start. Similar to UMA histogram
21463    /// 'ContentSettings.NumberOfExceptions'.
21464    #[prost(uint32, optional, tag = "1")]
21465    pub number_of_exceptions: ::core::option::Option<u32>,
21466}
21467/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
21468/// in
21469/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
21470/// instead.
21471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21472pub struct ChromeFrameReporter {
21473    #[prost(enumeration = "chrome_frame_reporter::State", optional, tag = "1")]
21474    pub state: ::core::option::Option<i32>,
21475    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
21476    #[prost(enumeration = "chrome_frame_reporter::FrameDropReason", optional, tag = "2")]
21477    pub reason: ::core::option::Option<i32>,
21478    #[prost(uint64, optional, tag = "3")]
21479    pub frame_source: ::core::option::Option<u64>,
21480    #[prost(uint64, optional, tag = "4")]
21481    pub frame_sequence: ::core::option::Option<u64>,
21482    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
21483    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
21484    /// smoothness.
21485    #[prost(bool, optional, tag = "5")]
21486    pub affects_smoothness: ::core::option::Option<bool>,
21487    /// The type of active scroll.
21488    #[prost(enumeration = "chrome_frame_reporter::ScrollState", optional, tag = "6")]
21489    pub scroll_state: ::core::option::Option<i32>,
21490    /// If any main thread animation is active during this frame.
21491    #[prost(bool, optional, tag = "7")]
21492    pub has_main_animation: ::core::option::Option<bool>,
21493    /// If any compositor thread animation is active during this frame.
21494    #[prost(bool, optional, tag = "8")]
21495    pub has_compositor_animation: ::core::option::Option<bool>,
21496    /// If any touch-driven UX (not scroll) is active during this frame.
21497    #[prost(bool, optional, tag = "9")]
21498    pub has_smooth_input_main: ::core::option::Option<bool>,
21499    /// Whether the frame contained any missing content (i.e. whether there was
21500    /// checkerboarding in the frame).  If has_missing_content,
21501    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
21502    /// values, has_missing_content should equal checkerboarded_needs_raster ||
21503    /// checkerboarded_needs_record.
21504    #[prost(bool, optional, tag = "10")]
21505    pub has_missing_content: ::core::option::Option<bool>,
21506    /// The id of layer_tree_host that the frame has been produced for.
21507    #[prost(uint64, optional, tag = "11")]
21508    pub layer_tree_host_id: ::core::option::Option<u64>,
21509    /// If total latency of PipelineReporter exceeds a certain limit.
21510    #[prost(bool, optional, tag = "12")]
21511    pub has_high_latency: ::core::option::Option<bool>,
21512    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
21513    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
21514    /// (i.e. dropped frames when there are no partial compositor updates).
21515    #[prost(enumeration = "chrome_frame_reporter::FrameType", optional, tag = "13")]
21516    pub frame_type: ::core::option::Option<i32>,
21517    /// The breakdown stage of PipelineReporter that is most likely accountable for
21518    /// high latency.
21519    #[prost(string, repeated, tag = "14")]
21520    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<
21521        ::prost::alloc::string::String,
21522    >,
21523    /// Whether the frame contained any content that is not fully rastered.
21524    #[prost(bool, optional, tag = "15")]
21525    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
21526    /// Whether the frame contained any content that is not fully recorded.
21527    #[prost(bool, optional, tag = "16")]
21528    pub checkerboarded_needs_record: ::core::option::Option<bool>,
21529    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
21530    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
21531    #[prost(int64, optional, tag = "17")]
21532    pub surface_frame_trace_id: ::core::option::Option<i64>,
21533    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
21534    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
21535    #[prost(int64, optional, tag = "18")]
21536    pub display_trace_id: ::core::option::Option<i64>,
21537}
21538/// Nested message and enum types in `ChromeFrameReporter`.
21539pub mod chrome_frame_reporter {
21540    #[derive(
21541        Clone,
21542        Copy,
21543        Debug,
21544        PartialEq,
21545        Eq,
21546        Hash,
21547        PartialOrd,
21548        Ord,
21549        ::prost::Enumeration
21550    )]
21551    #[repr(i32)]
21552    pub enum State {
21553        /// The frame did not have any updates to present.
21554        NoUpdateDesired = 0,
21555        /// The frame presented all the desired updates (i.e. any updates requested
21556        /// from both the compositor thread and main-threads were handled).
21557        PresentedAll = 1,
21558        /// The frame was presented with some updates, but also missed some updates
21559        /// (e.g. missed updates from the main-thread, but included updates from the
21560        /// compositor thread).
21561        PresentedPartial = 2,
21562        /// The frame was dropped, i.e. some updates were desired for the frame, but
21563        /// was not presented.
21564        Dropped = 3,
21565    }
21566    impl State {
21567        /// String value of the enum field names used in the ProtoBuf definition.
21568        ///
21569        /// The values are not transformed in any way and thus are considered stable
21570        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21571        pub fn as_str_name(&self) -> &'static str {
21572            match self {
21573                Self::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
21574                Self::PresentedAll => "STATE_PRESENTED_ALL",
21575                Self::PresentedPartial => "STATE_PRESENTED_PARTIAL",
21576                Self::Dropped => "STATE_DROPPED",
21577            }
21578        }
21579        /// Creates an enum from field names used in the ProtoBuf definition.
21580        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21581            match value {
21582                "STATE_NO_UPDATE_DESIRED" => Some(Self::NoUpdateDesired),
21583                "STATE_PRESENTED_ALL" => Some(Self::PresentedAll),
21584                "STATE_PRESENTED_PARTIAL" => Some(Self::PresentedPartial),
21585                "STATE_DROPPED" => Some(Self::Dropped),
21586                _ => None,
21587            }
21588        }
21589    }
21590    #[derive(
21591        Clone,
21592        Copy,
21593        Debug,
21594        PartialEq,
21595        Eq,
21596        Hash,
21597        PartialOrd,
21598        Ord,
21599        ::prost::Enumeration
21600    )]
21601    #[repr(i32)]
21602    pub enum FrameDropReason {
21603        ReasonUnspecified = 0,
21604        /// Frame was dropped by the display-compositor.
21605        /// The display-compositor may drop a frame some times (e.g. the frame missed
21606        /// the deadline, or was blocked on surface-sync, etc.)
21607        ReasonDisplayCompositor = 1,
21608        /// Frame was dropped because of the main-thread.
21609        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
21610        /// is running expensive javascript, or doing a lot of layout updates, etc.
21611        ReasonMainThread = 2,
21612        /// Frame was dropped by the client compositor.
21613        /// The client compositor can drop some frames too (e.g. attempting to
21614        /// recover latency, missing the deadline, etc.).
21615        ReasonClientCompositor = 3,
21616    }
21617    impl FrameDropReason {
21618        /// String value of the enum field names used in the ProtoBuf definition.
21619        ///
21620        /// The values are not transformed in any way and thus are considered stable
21621        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21622        pub fn as_str_name(&self) -> &'static str {
21623            match self {
21624                Self::ReasonUnspecified => "REASON_UNSPECIFIED",
21625                Self::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
21626                Self::ReasonMainThread => "REASON_MAIN_THREAD",
21627                Self::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
21628            }
21629        }
21630        /// Creates an enum from field names used in the ProtoBuf definition.
21631        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21632            match value {
21633                "REASON_UNSPECIFIED" => Some(Self::ReasonUnspecified),
21634                "REASON_DISPLAY_COMPOSITOR" => Some(Self::ReasonDisplayCompositor),
21635                "REASON_MAIN_THREAD" => Some(Self::ReasonMainThread),
21636                "REASON_CLIENT_COMPOSITOR" => Some(Self::ReasonClientCompositor),
21637                _ => None,
21638            }
21639        }
21640    }
21641    #[derive(
21642        Clone,
21643        Copy,
21644        Debug,
21645        PartialEq,
21646        Eq,
21647        Hash,
21648        PartialOrd,
21649        Ord,
21650        ::prost::Enumeration
21651    )]
21652    #[repr(i32)]
21653    pub enum ScrollState {
21654        ScrollNone = 0,
21655        ScrollMainThread = 1,
21656        ScrollCompositorThread = 2,
21657        ScrollRaster = 3,
21658        /// Used when it can't be determined whether a scroll is in progress or not.
21659        ScrollUnknown = 4,
21660    }
21661    impl ScrollState {
21662        /// String value of the enum field names used in the ProtoBuf definition.
21663        ///
21664        /// The values are not transformed in any way and thus are considered stable
21665        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21666        pub fn as_str_name(&self) -> &'static str {
21667            match self {
21668                Self::ScrollNone => "SCROLL_NONE",
21669                Self::ScrollMainThread => "SCROLL_MAIN_THREAD",
21670                Self::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
21671                Self::ScrollRaster => "SCROLL_RASTER",
21672                Self::ScrollUnknown => "SCROLL_UNKNOWN",
21673            }
21674        }
21675        /// Creates an enum from field names used in the ProtoBuf definition.
21676        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21677            match value {
21678                "SCROLL_NONE" => Some(Self::ScrollNone),
21679                "SCROLL_MAIN_THREAD" => Some(Self::ScrollMainThread),
21680                "SCROLL_COMPOSITOR_THREAD" => Some(Self::ScrollCompositorThread),
21681                "SCROLL_RASTER" => Some(Self::ScrollRaster),
21682                "SCROLL_UNKNOWN" => Some(Self::ScrollUnknown),
21683                _ => None,
21684            }
21685        }
21686    }
21687    #[derive(
21688        Clone,
21689        Copy,
21690        Debug,
21691        PartialEq,
21692        Eq,
21693        Hash,
21694        PartialOrd,
21695        Ord,
21696        ::prost::Enumeration
21697    )]
21698    #[repr(i32)]
21699    pub enum FrameType {
21700        Forked = 0,
21701        Backfill = 1,
21702    }
21703    impl FrameType {
21704        /// String value of the enum field names used in the ProtoBuf definition.
21705        ///
21706        /// The values are not transformed in any way and thus are considered stable
21707        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21708        pub fn as_str_name(&self) -> &'static str {
21709            match self {
21710                Self::Forked => "FORKED",
21711                Self::Backfill => "BACKFILL",
21712            }
21713        }
21714        /// Creates an enum from field names used in the ProtoBuf definition.
21715        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21716            match value {
21717                "FORKED" => Some(Self::Forked),
21718                "BACKFILL" => Some(Self::Backfill),
21719                _ => None,
21720            }
21721        }
21722    }
21723}
21724/// Details about one of Chrome's keyed services associated with the event.
21725#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21726pub struct ChromeKeyedService {
21727    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
21728    /// Chrome, these are static strings known at compile time).
21729    #[prost(string, optional, tag = "1")]
21730    pub name: ::core::option::Option<::prost::alloc::string::String>,
21731}
21732#[derive(Clone, PartialEq, ::prost::Message)]
21733pub struct ChromeLatencyInfo {
21734    #[prost(int64, optional, tag = "1")]
21735    pub trace_id: ::core::option::Option<i64>,
21736    #[prost(enumeration = "chrome_latency_info::Step", optional, tag = "2")]
21737    pub step: ::core::option::Option<i32>,
21738    #[prost(int32, optional, tag = "3")]
21739    pub frame_tree_node_id: ::core::option::Option<i32>,
21740    #[prost(message, repeated, tag = "4")]
21741    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
21742    #[prost(bool, optional, tag = "5")]
21743    pub is_coalesced: ::core::option::Option<bool>,
21744    #[prost(int64, optional, tag = "6")]
21745    pub gesture_scroll_id: ::core::option::Option<i64>,
21746    #[prost(int64, optional, tag = "7")]
21747    pub touch_id: ::core::option::Option<i64>,
21748    /// The type of input corresponding to this `ChromeLatencyInfo`.
21749    #[prost(enumeration = "chrome_latency_info::InputType", optional, tag = "8")]
21750    pub input_type: ::core::option::Option<i32>,
21751}
21752/// Nested message and enum types in `ChromeLatencyInfo`.
21753pub mod chrome_latency_info {
21754    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21755    pub struct ComponentInfo {
21756        #[prost(enumeration = "LatencyComponentType", optional, tag = "1")]
21757        pub component_type: ::core::option::Option<i32>,
21758        /// Microsecond timestamp in CLOCK_MONOTONIC domain
21759        #[prost(uint64, optional, tag = "2")]
21760        pub time_us: ::core::option::Option<u64>,
21761    }
21762    /// NEXT ID: 12
21763    /// All step are optional but the enum is ordered (not by number) below in the
21764    /// order we expect them to appear if they are emitted in trace in a blocking
21765    /// fashion.
21766    #[derive(
21767        Clone,
21768        Copy,
21769        Debug,
21770        PartialEq,
21771        Eq,
21772        Hash,
21773        PartialOrd,
21774        Ord,
21775        ::prost::Enumeration
21776    )]
21777    #[repr(i32)]
21778    pub enum Step {
21779        Unspecified = 0,
21780        /// Emitted on the browser main thread.
21781        SendInputEventUi = 3,
21782        /// Happens on the renderer's compositor.
21783        HandleInputEventImpl = 5,
21784        DidHandleInputAndOverscroll = 8,
21785        /// Occurs on the Renderer's main thread.
21786        HandleInputEventMain = 4,
21787        MainThreadScrollUpdate = 2,
21788        HandleInputEventMainCommit = 1,
21789        /// Could be emitted on both the renderer's main OR compositor.
21790        HandledInputEventMainOrImpl = 9,
21791        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
21792        /// renderer's compositor and this will be emitted.
21793        HandledInputEventImpl = 10,
21794        /// Renderer's compositor.
21795        SwapBuffers = 6,
21796        /// Happens on the VizCompositor in the GPU process.
21797        DrawAndSwap = 7,
21798        /// Happens on the GPU main thread after the swap has completed.
21799        ///
21800        /// See above for NEXT ID, enum steps are not ordered by tag number.
21801        FinishedSwapBuffers = 11,
21802    }
21803    impl Step {
21804        /// String value of the enum field names used in the ProtoBuf definition.
21805        ///
21806        /// The values are not transformed in any way and thus are considered stable
21807        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21808        pub fn as_str_name(&self) -> &'static str {
21809            match self {
21810                Self::Unspecified => "STEP_UNSPECIFIED",
21811                Self::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
21812                Self::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
21813                Self::DidHandleInputAndOverscroll => {
21814                    "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
21815                }
21816                Self::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
21817                Self::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
21818                Self::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
21819                Self::HandledInputEventMainOrImpl => {
21820                    "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL"
21821                }
21822                Self::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
21823                Self::SwapBuffers => "STEP_SWAP_BUFFERS",
21824                Self::DrawAndSwap => "STEP_DRAW_AND_SWAP",
21825                Self::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
21826            }
21827        }
21828        /// Creates an enum from field names used in the ProtoBuf definition.
21829        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21830            match value {
21831                "STEP_UNSPECIFIED" => Some(Self::Unspecified),
21832                "STEP_SEND_INPUT_EVENT_UI" => Some(Self::SendInputEventUi),
21833                "STEP_HANDLE_INPUT_EVENT_IMPL" => Some(Self::HandleInputEventImpl),
21834                "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL" => {
21835                    Some(Self::DidHandleInputAndOverscroll)
21836                }
21837                "STEP_HANDLE_INPUT_EVENT_MAIN" => Some(Self::HandleInputEventMain),
21838                "STEP_MAIN_THREAD_SCROLL_UPDATE" => Some(Self::MainThreadScrollUpdate),
21839                "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT" => {
21840                    Some(Self::HandleInputEventMainCommit)
21841                }
21842                "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL" => {
21843                    Some(Self::HandledInputEventMainOrImpl)
21844                }
21845                "STEP_HANDLED_INPUT_EVENT_IMPL" => Some(Self::HandledInputEventImpl),
21846                "STEP_SWAP_BUFFERS" => Some(Self::SwapBuffers),
21847                "STEP_DRAW_AND_SWAP" => Some(Self::DrawAndSwap),
21848                "STEP_FINISHED_SWAP_BUFFERS" => Some(Self::FinishedSwapBuffers),
21849                _ => None,
21850            }
21851        }
21852    }
21853    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
21854    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
21855    /// practices.
21856    #[derive(
21857        Clone,
21858        Copy,
21859        Debug,
21860        PartialEq,
21861        Eq,
21862        Hash,
21863        PartialOrd,
21864        Ord,
21865        ::prost::Enumeration
21866    )]
21867    #[repr(i32)]
21868    pub enum LatencyComponentType {
21869        ComponentUnspecified = 0,
21870        ComponentInputEventLatencyBeginRwh = 1,
21871        ComponentInputEventLatencyScrollUpdateOriginal = 2,
21872        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
21873        ComponentInputEventLatencyOriginal = 4,
21874        ComponentInputEventLatencyUi = 5,
21875        ComponentInputEventLatencyRendererMain = 6,
21876        ComponentInputEventLatencyRenderingScheduledMain = 7,
21877        ComponentInputEventLatencyRenderingScheduledImpl = 8,
21878        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
21879        ComponentInputEventLatencyAckRwh = 10,
21880        ComponentInputEventLatencyRendererSwap = 11,
21881        ComponentDisplayCompositorReceivedFrame = 12,
21882        ComponentInputEventGpuSwapBuffer = 13,
21883        ComponentInputEventLatencyFrameSwap = 14,
21884    }
21885    impl LatencyComponentType {
21886        /// String value of the enum field names used in the ProtoBuf definition.
21887        ///
21888        /// The values are not transformed in any way and thus are considered stable
21889        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21890        pub fn as_str_name(&self) -> &'static str {
21891            match self {
21892                Self::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
21893                Self::ComponentInputEventLatencyBeginRwh => {
21894                    "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH"
21895                }
21896                Self::ComponentInputEventLatencyScrollUpdateOriginal => {
21897                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL"
21898                }
21899                Self::ComponentInputEventLatencyFirstScrollUpdateOriginal => {
21900                    "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL"
21901                }
21902                Self::ComponentInputEventLatencyOriginal => {
21903                    "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL"
21904                }
21905                Self::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
21906                Self::ComponentInputEventLatencyRendererMain => {
21907                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN"
21908                }
21909                Self::ComponentInputEventLatencyRenderingScheduledMain => {
21910                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN"
21911                }
21912                Self::ComponentInputEventLatencyRenderingScheduledImpl => {
21913                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL"
21914                }
21915                Self::ComponentInputEventLatencyScrollUpdateLastEvent => {
21916                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT"
21917                }
21918                Self::ComponentInputEventLatencyAckRwh => {
21919                    "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH"
21920                }
21921                Self::ComponentInputEventLatencyRendererSwap => {
21922                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP"
21923                }
21924                Self::ComponentDisplayCompositorReceivedFrame => {
21925                    "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME"
21926                }
21927                Self::ComponentInputEventGpuSwapBuffer => {
21928                    "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER"
21929                }
21930                Self::ComponentInputEventLatencyFrameSwap => {
21931                    "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP"
21932                }
21933            }
21934        }
21935        /// Creates an enum from field names used in the ProtoBuf definition.
21936        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21937            match value {
21938                "COMPONENT_UNSPECIFIED" => Some(Self::ComponentUnspecified),
21939                "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH" => {
21940                    Some(Self::ComponentInputEventLatencyBeginRwh)
21941                }
21942                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL" => {
21943                    Some(Self::ComponentInputEventLatencyScrollUpdateOriginal)
21944                }
21945                "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL" => {
21946                    Some(Self::ComponentInputEventLatencyFirstScrollUpdateOriginal)
21947                }
21948                "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL" => {
21949                    Some(Self::ComponentInputEventLatencyOriginal)
21950                }
21951                "COMPONENT_INPUT_EVENT_LATENCY_UI" => {
21952                    Some(Self::ComponentInputEventLatencyUi)
21953                }
21954                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN" => {
21955                    Some(Self::ComponentInputEventLatencyRendererMain)
21956                }
21957                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN" => {
21958                    Some(Self::ComponentInputEventLatencyRenderingScheduledMain)
21959                }
21960                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL" => {
21961                    Some(Self::ComponentInputEventLatencyRenderingScheduledImpl)
21962                }
21963                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT" => {
21964                    Some(Self::ComponentInputEventLatencyScrollUpdateLastEvent)
21965                }
21966                "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH" => {
21967                    Some(Self::ComponentInputEventLatencyAckRwh)
21968                }
21969                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP" => {
21970                    Some(Self::ComponentInputEventLatencyRendererSwap)
21971                }
21972                "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME" => {
21973                    Some(Self::ComponentDisplayCompositorReceivedFrame)
21974                }
21975                "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER" => {
21976                    Some(Self::ComponentInputEventGpuSwapBuffer)
21977                }
21978                "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP" => {
21979                    Some(Self::ComponentInputEventLatencyFrameSwap)
21980                }
21981                _ => None,
21982            }
21983        }
21984    }
21985    #[derive(
21986        Clone,
21987        Copy,
21988        Debug,
21989        PartialEq,
21990        Eq,
21991        Hash,
21992        PartialOrd,
21993        Ord,
21994        ::prost::Enumeration
21995    )]
21996    #[repr(i32)]
21997    pub enum InputType {
21998        UnspecifiedOrOther = 0,
21999        TouchMoved = 1,
22000        GestureScrollBegin = 2,
22001        GestureScrollUpdate = 3,
22002        GestureScrollEnd = 4,
22003        GestureTap = 5,
22004        GestureTapCancel = 6,
22005    }
22006    impl InputType {
22007        /// String value of the enum field names used in the ProtoBuf definition.
22008        ///
22009        /// The values are not transformed in any way and thus are considered stable
22010        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22011        pub fn as_str_name(&self) -> &'static str {
22012            match self {
22013                Self::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
22014                Self::TouchMoved => "TOUCH_MOVED",
22015                Self::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
22016                Self::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
22017                Self::GestureScrollEnd => "GESTURE_SCROLL_END",
22018                Self::GestureTap => "GESTURE_TAP",
22019                Self::GestureTapCancel => "GESTURE_TAP_CANCEL",
22020            }
22021        }
22022        /// Creates an enum from field names used in the ProtoBuf definition.
22023        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22024            match value {
22025                "UNSPECIFIED_OR_OTHER" => Some(Self::UnspecifiedOrOther),
22026                "TOUCH_MOVED" => Some(Self::TouchMoved),
22027                "GESTURE_SCROLL_BEGIN" => Some(Self::GestureScrollBegin),
22028                "GESTURE_SCROLL_UPDATE" => Some(Self::GestureScrollUpdate),
22029                "GESTURE_SCROLL_END" => Some(Self::GestureScrollEnd),
22030                "GESTURE_TAP" => Some(Self::GestureTap),
22031                "GESTURE_TAP_CANCEL" => Some(Self::GestureTapCancel),
22032                _ => None,
22033            }
22034        }
22035    }
22036}
22037/// Details about a legacy Chrome IPC message that is either sent by the event.
22038/// TODO(eseckler): Also use this message on the receiving side?
22039#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22040pub struct ChromeLegacyIpc {
22041    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
22042    /// enum, e.g. FrameMsgStart,
22043    #[prost(enumeration = "chrome_legacy_ipc::MessageClass", optional, tag = "1")]
22044    pub message_class: ::core::option::Option<i32>,
22045    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
22046    /// IPC_MESSAGE_START macros.
22047    #[prost(uint32, optional, tag = "2")]
22048    pub message_line: ::core::option::Option<u32>,
22049}
22050/// Nested message and enum types in `ChromeLegacyIpc`.
22051pub mod chrome_legacy_ipc {
22052    #[derive(
22053        Clone,
22054        Copy,
22055        Debug,
22056        PartialEq,
22057        Eq,
22058        Hash,
22059        PartialOrd,
22060        Ord,
22061        ::prost::Enumeration
22062    )]
22063    #[repr(i32)]
22064    pub enum MessageClass {
22065        ClassUnspecified = 0,
22066        ClassAutomation = 1,
22067        ClassFrame = 2,
22068        ClassPage = 3,
22069        ClassView = 4,
22070        ClassWidget = 5,
22071        ClassInput = 6,
22072        ClassTest = 7,
22073        ClassWorker = 8,
22074        ClassNacl = 9,
22075        ClassGpuChannel = 10,
22076        ClassMedia = 11,
22077        ClassPpapi = 12,
22078        ClassChrome = 13,
22079        ClassDrag = 14,
22080        ClassPrint = 15,
22081        ClassExtension = 16,
22082        ClassTextInputClient = 17,
22083        ClassBlinkTest = 18,
22084        ClassAccessibility = 19,
22085        ClassPrerender = 20,
22086        ClassChromoting = 21,
22087        ClassBrowserPlugin = 22,
22088        ClassAndroidWebView = 23,
22089        ClassNaclHost = 24,
22090        ClassEncryptedMedia = 25,
22091        ClassCast = 26,
22092        ClassGinJavaBridge = 27,
22093        ClassChromeUtilityPrinting = 28,
22094        ClassOzoneGpu = 29,
22095        ClassWebTest = 30,
22096        ClassNetworkHints = 31,
22097        ClassExtensionsGuestView = 32,
22098        ClassGuestView = 33,
22099        ClassMediaPlayerDelegate = 34,
22100        ClassExtensionWorker = 35,
22101        ClassSubresourceFilter = 36,
22102        ClassUnfreezableFrame = 37,
22103    }
22104    impl MessageClass {
22105        /// String value of the enum field names used in the ProtoBuf definition.
22106        ///
22107        /// The values are not transformed in any way and thus are considered stable
22108        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22109        pub fn as_str_name(&self) -> &'static str {
22110            match self {
22111                Self::ClassUnspecified => "CLASS_UNSPECIFIED",
22112                Self::ClassAutomation => "CLASS_AUTOMATION",
22113                Self::ClassFrame => "CLASS_FRAME",
22114                Self::ClassPage => "CLASS_PAGE",
22115                Self::ClassView => "CLASS_VIEW",
22116                Self::ClassWidget => "CLASS_WIDGET",
22117                Self::ClassInput => "CLASS_INPUT",
22118                Self::ClassTest => "CLASS_TEST",
22119                Self::ClassWorker => "CLASS_WORKER",
22120                Self::ClassNacl => "CLASS_NACL",
22121                Self::ClassGpuChannel => "CLASS_GPU_CHANNEL",
22122                Self::ClassMedia => "CLASS_MEDIA",
22123                Self::ClassPpapi => "CLASS_PPAPI",
22124                Self::ClassChrome => "CLASS_CHROME",
22125                Self::ClassDrag => "CLASS_DRAG",
22126                Self::ClassPrint => "CLASS_PRINT",
22127                Self::ClassExtension => "CLASS_EXTENSION",
22128                Self::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
22129                Self::ClassBlinkTest => "CLASS_BLINK_TEST",
22130                Self::ClassAccessibility => "CLASS_ACCESSIBILITY",
22131                Self::ClassPrerender => "CLASS_PRERENDER",
22132                Self::ClassChromoting => "CLASS_CHROMOTING",
22133                Self::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
22134                Self::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
22135                Self::ClassNaclHost => "CLASS_NACL_HOST",
22136                Self::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
22137                Self::ClassCast => "CLASS_CAST",
22138                Self::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
22139                Self::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
22140                Self::ClassOzoneGpu => "CLASS_OZONE_GPU",
22141                Self::ClassWebTest => "CLASS_WEB_TEST",
22142                Self::ClassNetworkHints => "CLASS_NETWORK_HINTS",
22143                Self::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
22144                Self::ClassGuestView => "CLASS_GUEST_VIEW",
22145                Self::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
22146                Self::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
22147                Self::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
22148                Self::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
22149            }
22150        }
22151        /// Creates an enum from field names used in the ProtoBuf definition.
22152        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22153            match value {
22154                "CLASS_UNSPECIFIED" => Some(Self::ClassUnspecified),
22155                "CLASS_AUTOMATION" => Some(Self::ClassAutomation),
22156                "CLASS_FRAME" => Some(Self::ClassFrame),
22157                "CLASS_PAGE" => Some(Self::ClassPage),
22158                "CLASS_VIEW" => Some(Self::ClassView),
22159                "CLASS_WIDGET" => Some(Self::ClassWidget),
22160                "CLASS_INPUT" => Some(Self::ClassInput),
22161                "CLASS_TEST" => Some(Self::ClassTest),
22162                "CLASS_WORKER" => Some(Self::ClassWorker),
22163                "CLASS_NACL" => Some(Self::ClassNacl),
22164                "CLASS_GPU_CHANNEL" => Some(Self::ClassGpuChannel),
22165                "CLASS_MEDIA" => Some(Self::ClassMedia),
22166                "CLASS_PPAPI" => Some(Self::ClassPpapi),
22167                "CLASS_CHROME" => Some(Self::ClassChrome),
22168                "CLASS_DRAG" => Some(Self::ClassDrag),
22169                "CLASS_PRINT" => Some(Self::ClassPrint),
22170                "CLASS_EXTENSION" => Some(Self::ClassExtension),
22171                "CLASS_TEXT_INPUT_CLIENT" => Some(Self::ClassTextInputClient),
22172                "CLASS_BLINK_TEST" => Some(Self::ClassBlinkTest),
22173                "CLASS_ACCESSIBILITY" => Some(Self::ClassAccessibility),
22174                "CLASS_PRERENDER" => Some(Self::ClassPrerender),
22175                "CLASS_CHROMOTING" => Some(Self::ClassChromoting),
22176                "CLASS_BROWSER_PLUGIN" => Some(Self::ClassBrowserPlugin),
22177                "CLASS_ANDROID_WEB_VIEW" => Some(Self::ClassAndroidWebView),
22178                "CLASS_NACL_HOST" => Some(Self::ClassNaclHost),
22179                "CLASS_ENCRYPTED_MEDIA" => Some(Self::ClassEncryptedMedia),
22180                "CLASS_CAST" => Some(Self::ClassCast),
22181                "CLASS_GIN_JAVA_BRIDGE" => Some(Self::ClassGinJavaBridge),
22182                "CLASS_CHROME_UTILITY_PRINTING" => Some(Self::ClassChromeUtilityPrinting),
22183                "CLASS_OZONE_GPU" => Some(Self::ClassOzoneGpu),
22184                "CLASS_WEB_TEST" => Some(Self::ClassWebTest),
22185                "CLASS_NETWORK_HINTS" => Some(Self::ClassNetworkHints),
22186                "CLASS_EXTENSIONS_GUEST_VIEW" => Some(Self::ClassExtensionsGuestView),
22187                "CLASS_GUEST_VIEW" => Some(Self::ClassGuestView),
22188                "CLASS_MEDIA_PLAYER_DELEGATE" => Some(Self::ClassMediaPlayerDelegate),
22189                "CLASS_EXTENSION_WORKER" => Some(Self::ClassExtensionWorker),
22190                "CLASS_SUBRESOURCE_FILTER" => Some(Self::ClassSubresourceFilter),
22191                "CLASS_UNFREEZABLE_FRAME" => Some(Self::ClassUnfreezableFrame),
22192                _ => None,
22193            }
22194        }
22195    }
22196}
22197/// Details about Chrome message pump events
22198#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22199pub struct ChromeMessagePump {
22200    /// True if there are sent messages in the queue.
22201    #[prost(bool, optional, tag = "1")]
22202    pub sent_messages_in_queue: ::core::option::Option<bool>,
22203    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
22204    /// invoke.
22205    #[prost(uint64, optional, tag = "2")]
22206    pub io_handler_location_iid: ::core::option::Option<u64>,
22207}
22208/// Contains information to identify mojo handling events. The trace events in
22209/// mojo are common for all mojo interfaces and this information is used to
22210/// identify who is the caller or callee.
22211#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22212pub struct ChromeMojoEventInfo {
22213    /// Contains the interface name or the file name of the creator of a mojo
22214    /// handle watcher, recorded when an event if notified to the watcher. The code
22215    /// that runs within the track event belongs to the interface.
22216    #[prost(string, optional, tag = "1")]
22217    pub watcher_notify_interface_tag: ::core::option::Option<
22218        ::prost::alloc::string::String,
22219    >,
22220    /// The hash of the IPC message that is being handled.
22221    #[prost(uint32, optional, tag = "2")]
22222    pub ipc_hash: ::core::option::Option<u32>,
22223    /// A static string representing the mojo interface name of the message that is
22224    /// being handled.
22225    #[prost(string, optional, tag = "3")]
22226    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
22227    /// Refers to an interned UnsymbolizedSourceLocation.
22228    /// The UnsymbolizedSourceLocation contains the interface method that's being
22229    /// handled, represented as a native symbol.
22230    /// The native symbol can be symbolized after the trace is recorded.
22231    /// Not using a symbolized source location for official Chromium builds to
22232    /// reduce binary size - emitting file/function names as strings into the
22233    /// trace requires storing them in the binary, which causes a significant
22234    /// binary size bloat for Chromium.
22235    #[prost(uint64, optional, tag = "4")]
22236    pub mojo_interface_method_iid: ::core::option::Option<u64>,
22237    /// Indicate whether this is a message or reply.
22238    #[prost(bool, optional, tag = "5")]
22239    pub is_reply: ::core::option::Option<bool>,
22240    /// The payload size of the message being sent through mojo messages.
22241    #[prost(uint64, optional, tag = "6")]
22242    pub payload_size: ::core::option::Option<u64>,
22243    /// Represents the size of the message. Includes all headers and user payload.
22244    #[prost(uint64, optional, tag = "7")]
22245    pub data_num_bytes: ::core::option::Option<u64>,
22246}
22247/// Describes the state of the RendererScheduler for a given Renderer Process.
22248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22249pub struct ChromeRendererSchedulerState {
22250    #[prost(enumeration = "ChromeRailMode", optional, tag = "1")]
22251    pub rail_mode: ::core::option::Option<i32>,
22252    #[prost(bool, optional, tag = "2")]
22253    pub is_backgrounded: ::core::option::Option<bool>,
22254    #[prost(bool, optional, tag = "3")]
22255    pub is_hidden: ::core::option::Option<bool>,
22256}
22257/// Details about a UI interaction initiated by the user, such as opening or
22258/// closing a tab or a context menu.
22259#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22260pub struct ChromeUserEvent {
22261    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
22262    /// Chrome, these are usually static strings known at compile time, or
22263    /// concatenations of multiple such static strings).
22264    #[prost(string, optional, tag = "1")]
22265    pub action: ::core::option::Option<::prost::alloc::string::String>,
22266    /// MD5 hash of the action string.
22267    #[prost(uint64, optional, tag = "2")]
22268    pub action_hash: ::core::option::Option<u64>,
22269}
22270/// Details about HWNDMessageHandler trace events.
22271#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22272pub struct ChromeWindowHandleEventInfo {
22273    #[prost(uint32, optional, tag = "1")]
22274    pub dpi: ::core::option::Option<u32>,
22275    #[prost(uint32, optional, tag = "2")]
22276    pub message_id: ::core::option::Option<u32>,
22277    #[prost(fixed64, optional, tag = "3")]
22278    pub hwnd_ptr: ::core::option::Option<u64>,
22279}
22280#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22281pub struct Screenshot {
22282    /// The JPEG (Joint Photographic Experts Group) file format.
22283    #[prost(bytes = "vec", optional, tag = "1")]
22284    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22285    /// The PAM (Portable Arbitrary Map) file format.
22286    #[prost(bytes = "vec", optional, tag = "2")]
22287    pub pam_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22288    /// The PPM (Portable Pixmap) file format.
22289    #[prost(bytes = "vec", optional, tag = "3")]
22290    pub ppm_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22291}
22292/// TrackEvent arguments describing the execution of a task.
22293#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22294pub struct TaskExecution {
22295    /// Source location that the task was posted from.
22296    /// interned SourceLocation.
22297    #[prost(uint64, optional, tag = "1")]
22298    pub posted_from_iid: ::core::option::Option<u64>,
22299}
22300/// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
22301/// protos are still subject to change. Don't depend on them staying as they are.
22302///
22303/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
22304/// which describe activity on a track, such as a thread or asynchronous event
22305/// track. The track is specified using separate TrackDescriptor messages and
22306/// referred to via the track's UUID.
22307///
22308/// A simple TrackEvent packet specifies a timestamp, category, name and type:
22309/// ```protobuf
22310///    trace_packet {
22311///      timestamp: 1000
22312///      track_event {
22313///        categories: \["my_cat"\]
22314///        name: "my_event"
22315///        type: TYPE_INSTANT
22316///       }
22317///     }
22318/// ```
22319///
22320/// To associate an event with a custom track (e.g. a thread), the track is
22321/// defined in a separate packet and referred to from the TrackEvent by its UUID:
22322/// ```protobuf
22323///    trace_packet {
22324///      track_descriptor {
22325///        track_uuid: 1234
22326///        name: "my_track"
22327///
22328///        // Optionally, associate the track with a thread.
22329///        thread_descriptor {
22330///          pid: 10
22331///          tid: 10
22332///          ..
22333///        }
22334///      }
22335///    }
22336/// ```
22337///
22338/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
22339///
22340/// ```protobuf
22341///    trace_packet {
22342///      timestamp: 1200
22343///      track_event {
22344///        track_uuid: 1234
22345///        categories: \["my_cat"\]
22346///        name: "my_slice"
22347///        type: TYPE_SLICE_BEGIN
22348///      }
22349///    }
22350///    trace_packet {
22351///      timestamp: 1400
22352///      track_event {
22353///        track_uuid: 1234
22354///        type: TYPE_SLICE_END
22355///      }
22356///    }
22357/// ```
22358/// TrackEvents also support optimizations to reduce data repetition and encoded
22359/// data size, e.g. through data interning (names, categories, ...) and delta
22360/// encoding of timestamps/counters. For details, see the InternedData message.
22361/// Further, default values for attributes of events on the same sequence (e.g.
22362/// their default track association) can be emitted as part of a
22363/// TrackEventDefaults message.
22364///
22365/// Next reserved id: 13 (up to 15). Next id: 58.
22366#[derive(Clone, PartialEq, ::prost::Message)]
22367pub struct TrackEvent {
22368    /// Names of categories of the event. In the client library, categories are a
22369    /// way to turn groups of individual events on or off.
22370    /// interned EventCategoryName.
22371    #[prost(uint64, repeated, packed = "false", tag = "3")]
22372    pub category_iids: ::prost::alloc::vec::Vec<u64>,
22373    /// non-interned variant.
22374    #[prost(string, repeated, tag = "22")]
22375    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22376    #[prost(enumeration = "track_event::Type", optional, tag = "9")]
22377    pub r#type: ::core::option::Option<i32>,
22378    /// Identifies the track of the event. The default value may be overridden
22379    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
22380    /// sequence (in most cases sequence = one thread). If no value is specified
22381    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
22382    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
22383    #[prost(uint64, optional, tag = "11")]
22384    pub track_uuid: ::core::option::Option<u64>,
22385    /// To encode counter values more efficiently, we support attaching additional
22386    /// counter values to a TrackEvent of any type. All values will share the same
22387    /// timestamp specified in the TracePacket. The value at
22388    /// extra_counter_values\[N\] is for the counter track referenced by
22389    /// extra_counter_track_uuids\[N\].
22390    ///
22391    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
22392    /// should always be equal or more uuids than values. It is valid to set more
22393    /// uuids (e.g. via defaults) than values. If uuids are specified in
22394    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
22395    /// default uuid list.
22396    ///
22397    /// For example, this allows snapshotting the thread time clock at each
22398    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
22399    #[prost(uint64, repeated, packed = "false", tag = "31")]
22400    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22401    #[prost(int64, repeated, packed = "false", tag = "12")]
22402    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
22403    /// Counter snapshots using floating point instead of integer values.
22404    #[prost(uint64, repeated, packed = "false", tag = "45")]
22405    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22406    #[prost(double, repeated, packed = "false", tag = "46")]
22407    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
22408    /// IDs of flows originating, passing through, or ending at this event.
22409    /// Flow IDs are global within a trace.
22410    ///
22411    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
22412    /// an input event may be handled on one thread but cause another event on
22413    /// a different thread - a flow between the two events can associate them.
22414    ///
22415    /// The direction of the flows between events is inferred from the events'
22416    /// timestamps. The earliest event with the same flow ID becomes the source
22417    /// of the flow. Any events thereafter are intermediate steps of the flow,
22418    /// until the flow terminates at the last event with the flow ID.
22419    ///
22420    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
22421    /// that the same ID can later be reused for another flow.
22422    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
22423    #[deprecated]
22424    #[prost(uint64, repeated, packed = "false", tag = "36")]
22425    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
22426    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
22427    /// consumption.
22428    #[prost(fixed64, repeated, packed = "false", tag = "47")]
22429    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
22430    /// List of flow ids which should terminate on this event, otherwise same as
22431    /// |flow_ids|.
22432    /// Any one flow ID should be either listed as part of |flow_ids| OR
22433    /// |terminating_flow_ids|, not both.
22434    /// DEPRECATED. Only kept for backwards compatibility.  Use
22435    /// |terminating_flow_ids|.
22436    #[deprecated]
22437    #[prost(uint64, repeated, packed = "false", tag = "42")]
22438    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
22439    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
22440    /// "terminating_flow_ids" to reduce memory consumption.
22441    #[prost(fixed64, repeated, packed = "false", tag = "48")]
22442    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
22443    /// An optional additive value attributed to this callstack occurrence. When
22444    /// present, weighted callstack aggregations only include occurrences which
22445    /// have this field set; they do not mix weighted and unweighted samples.
22446    /// Consumers can use sample count as a separate fallback measure when no
22447    /// weighted occurrences are available.
22448    #[prost(double, optional, tag = "57")]
22449    pub callstack_weight: ::core::option::Option<f64>,
22450    /// Debug annotations associated with this event. These are arbitrary key-value
22451    /// pairs that can be used to attach additional information to the event.
22452    /// See DebugAnnotation message for details on supported value types.
22453    ///
22454    /// For example, debug annotations can be used to attach a URL or resource
22455    /// identifier to a network request event. Arrays, dictionaries and full
22456    /// nested structures (e.g. arrays of dictionaries of dictionaries)
22457    /// are supported.
22458    #[prost(message, repeated, tag = "4")]
22459    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
22460    /// Typed event arguments:
22461    #[prost(message, optional, tag = "5")]
22462    pub task_execution: ::core::option::Option<TaskExecution>,
22463    #[prost(message, optional, tag = "21")]
22464    pub log_message: ::core::option::Option<LogMessage>,
22465    #[prost(message, optional, tag = "24")]
22466    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
22467    #[prost(message, optional, tag = "25")]
22468    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
22469    #[prost(message, optional, tag = "26")]
22470    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
22471    #[prost(message, optional, tag = "27")]
22472    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
22473    #[prost(message, optional, tag = "28")]
22474    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
22475    #[prost(message, optional, tag = "29")]
22476    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
22477    /// DEPRECATED. Only kept for backwards compatibility. Use the
22478    /// |ChromeTrackEvent.frame_reporter| extension in
22479    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
22480    /// instead.
22481    #[deprecated]
22482    #[prost(message, optional, tag = "32")]
22483    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
22484    #[prost(message, optional, tag = "39")]
22485    pub chrome_application_state_info: ::core::option::Option<
22486        ChromeApplicationStateInfo,
22487    >,
22488    #[prost(message, optional, tag = "40")]
22489    pub chrome_renderer_scheduler_state: ::core::option::Option<
22490        ChromeRendererSchedulerState,
22491    >,
22492    #[prost(message, optional, tag = "41")]
22493    pub chrome_window_handle_event_info: ::core::option::Option<
22494        ChromeWindowHandleEventInfo,
22495    >,
22496    #[prost(message, optional, tag = "43")]
22497    pub chrome_content_settings_event_info: ::core::option::Option<
22498        ChromeContentSettingsEventInfo,
22499    >,
22500    #[prost(message, optional, tag = "49")]
22501    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
22502    #[prost(message, optional, tag = "50")]
22503    pub screenshot: ::core::option::Option<Screenshot>,
22504    #[prost(message, optional, tag = "35")]
22505    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
22506    #[prost(message, optional, tag = "38")]
22507    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
22508    #[prost(message, optional, tag = "6")]
22509    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
22510    /// Optional name of the event for its display in trace viewer. May be left
22511    /// unspecified for events with typed arguments.
22512    ///
22513    /// Note that metrics should not rely on event names, as they are prone to
22514    /// changing. Instead, they should use typed arguments to identify the events
22515    /// they are interested in.
22516    #[prost(oneof = "track_event::NameField", tags = "10, 23")]
22517    pub name_field: ::core::option::Option<track_event::NameField>,
22518    /// A new value for a counter track. |track_uuid| should refer to a track with
22519    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22520    /// efficient encoding of counter values that are sampled at the beginning/end
22521    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22522    /// Counter values can optionally be encoded in as delta values (positive or
22523    /// negative) on each packet sequence (see CounterIncrementalBase).
22524    #[prost(oneof = "track_event::CounterValueField", tags = "30, 44")]
22525    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
22526    /// An opaque identifier to correlate this slice with other slices that are
22527    /// considered part of the same logical operation, even if they are not
22528    /// causally connected. Examples uses of a correlation id might be the number
22529    /// of frame going through various stages of rendering in a GPU, the id for an
22530    /// RPC request going through a distributed system, or the id of a network
22531    /// request going through various stages of processing by the kernel.
22532    ///
22533    /// NOTE: if the events *are* causually connected, you probably want to use
22534    /// flows instead of OR in addition to correlation ids.
22535    ///
22536    /// UIs can use this identifier to visually link these slices, for instance,
22537    /// by assigning them a consistent color or highlighting the entire correlated
22538    /// set when one slice is hovered.
22539    ///
22540    /// Only one field within this 'oneof' should be set to define the correlation.
22541    #[prost(oneof = "track_event::CorrelationIdField", tags = "52, 53, 54")]
22542    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
22543    /// Callstack associated with this event. This captures the program stack at
22544    /// the time the event occurred, useful for understanding what code path led
22545    /// to the event.
22546    ///
22547    /// Two variants are supported:
22548    /// - callstack: Inline callstack data (simpler when trace size is not a
22549    ///    concern or callstacks are unique)
22550    /// - callstack_iid: Reference to an interned Callstack in InternedData
22551    ///    (efficient for repeated callstacks)
22552    ///
22553    /// Only one of these fields should be set.
22554    #[prost(oneof = "track_event::CallstackField", tags = "55, 56")]
22555    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
22556    /// This field is used only if the source location represents the function that
22557    /// executes during this event.
22558    #[prost(oneof = "track_event::SourceLocationField", tags = "33, 34")]
22559    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
22560    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22561    /// TracePacket instead.
22562    ///
22563    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22564    #[prost(oneof = "track_event::Timestamp", tags = "1, 16")]
22565    pub timestamp: ::core::option::Option<track_event::Timestamp>,
22566    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22567    /// encode thread time instead.
22568    ///
22569    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22570    /// microseconds.
22571    #[prost(oneof = "track_event::ThreadTime", tags = "2, 17")]
22572    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
22573    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22574    /// encode thread instruction count instead.
22575    ///
22576    /// Value of the instruction counter for the current thread.
22577    #[prost(oneof = "track_event::ThreadInstructionCount", tags = "8, 20")]
22578    pub thread_instruction_count: ::core::option::Option<
22579        track_event::ThreadInstructionCount,
22580    >,
22581}
22582/// Nested message and enum types in `TrackEvent`.
22583pub mod track_event {
22584    /// Inline callstack for TrackEvents when interning is not needed.
22585    /// This is a simplified version of the profiling Callstack/Frame messages,
22586    /// designed for cases where trace size is not critical or callstacks are
22587    /// unique.
22588    ///
22589    /// Use this for simple callstacks with function names and source locations.
22590    /// For binary/library information (mappings, build IDs, relative PCs), use
22591    /// interned callstacks via callstack_iid instead.
22592    #[derive(Clone, PartialEq, ::prost::Message)]
22593    pub struct InlineCallstack {
22594        /// Frames of this callstack, ordered from bottom (outermost) to top
22595        /// (innermost). For example, if main() calls foo() which calls bar(), the
22596        /// frames would be: \[main, foo, bar\]
22597        #[prost(message, repeated, tag = "1")]
22598        pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
22599    }
22600    /// Nested message and enum types in `InlineCallstack`.
22601    pub mod inline_callstack {
22602        /// Frame within an inline callstack.
22603        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22604        pub struct Frame {
22605            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
22606            #[prost(string, optional, tag = "1")]
22607            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
22608            /// Optional: Source file path, e.g., "/src/foo.cc"
22609            #[prost(string, optional, tag = "2")]
22610            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
22611            /// Optional: Line number in the source file
22612            #[prost(uint32, optional, tag = "3")]
22613            pub line_number: ::core::option::Option<u32>,
22614        }
22615    }
22616    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
22617    /// event attributes are initially simply proxied for conversion to a JSON
22618    /// trace. We intend to gradually transition these attributes to similar native
22619    /// features in TrackEvent (e.g. async + flow events), or deprecate them
22620    /// without replacement where transition is unsuitable.
22621    ///
22622    /// Next reserved id: 16 (up to 16).
22623    /// Next id: 20.
22624    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22625    pub struct LegacyEvent {
22626        /// Deprecated, use TrackEvent::name(_iid) instead.
22627        /// interned EventName.
22628        #[prost(uint64, optional, tag = "1")]
22629        pub name_iid: ::core::option::Option<u64>,
22630        #[prost(int32, optional, tag = "2")]
22631        pub phase: ::core::option::Option<i32>,
22632        #[prost(int64, optional, tag = "3")]
22633        pub duration_us: ::core::option::Option<i64>,
22634        #[prost(int64, optional, tag = "4")]
22635        pub thread_duration_us: ::core::option::Option<i64>,
22636        /// Elapsed retired instruction count during the event.
22637        #[prost(int64, optional, tag = "15")]
22638        pub thread_instruction_delta: ::core::option::Option<i64>,
22639        /// Additional optional scope for |id|.
22640        #[prost(string, optional, tag = "7")]
22641        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
22642        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
22643        #[prost(bool, optional, tag = "9")]
22644        pub use_async_tts: ::core::option::Option<bool>,
22645        /// Idenfifies a flow. Flow events with the same bind_id are connected.
22646        #[prost(uint64, optional, tag = "8")]
22647        pub bind_id: ::core::option::Option<u64>,
22648        /// Use the enclosing slice as binding point for a flow end event instead of
22649        /// the next slice. Flow start/step events always bind to the enclosing
22650        /// slice.
22651        #[prost(bool, optional, tag = "12")]
22652        pub bind_to_enclosing: ::core::option::Option<bool>,
22653        #[prost(enumeration = "legacy_event::FlowDirection", optional, tag = "13")]
22654        pub flow_direction: ::core::option::Option<i32>,
22655        #[prost(enumeration = "legacy_event::InstantEventScope", optional, tag = "14")]
22656        pub instant_event_scope: ::core::option::Option<i32>,
22657        /// Override the pid/tid if the writer needs to emit events on behalf of
22658        /// another process/thread. This should be the exception. Normally, the
22659        /// pid+tid from ThreadDescriptor is used.
22660        #[prost(int32, optional, tag = "18")]
22661        pub pid_override: ::core::option::Option<i32>,
22662        #[prost(int32, optional, tag = "19")]
22663        pub tid_override: ::core::option::Option<i32>,
22664        #[prost(oneof = "legacy_event::Id", tags = "6, 10, 11")]
22665        pub id: ::core::option::Option<legacy_event::Id>,
22666    }
22667    /// Nested message and enum types in `LegacyEvent`.
22668    pub mod legacy_event {
22669        #[derive(
22670            Clone,
22671            Copy,
22672            Debug,
22673            PartialEq,
22674            Eq,
22675            Hash,
22676            PartialOrd,
22677            Ord,
22678            ::prost::Enumeration
22679        )]
22680        #[repr(i32)]
22681        pub enum FlowDirection {
22682            FlowUnspecified = 0,
22683            FlowIn = 1,
22684            FlowOut = 2,
22685            FlowInout = 3,
22686        }
22687        impl FlowDirection {
22688            /// String value of the enum field names used in the ProtoBuf definition.
22689            ///
22690            /// The values are not transformed in any way and thus are considered stable
22691            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22692            pub fn as_str_name(&self) -> &'static str {
22693                match self {
22694                    Self::FlowUnspecified => "FLOW_UNSPECIFIED",
22695                    Self::FlowIn => "FLOW_IN",
22696                    Self::FlowOut => "FLOW_OUT",
22697                    Self::FlowInout => "FLOW_INOUT",
22698                }
22699            }
22700            /// Creates an enum from field names used in the ProtoBuf definition.
22701            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22702                match value {
22703                    "FLOW_UNSPECIFIED" => Some(Self::FlowUnspecified),
22704                    "FLOW_IN" => Some(Self::FlowIn),
22705                    "FLOW_OUT" => Some(Self::FlowOut),
22706                    "FLOW_INOUT" => Some(Self::FlowInout),
22707                    _ => None,
22708                }
22709            }
22710        }
22711        #[derive(
22712            Clone,
22713            Copy,
22714            Debug,
22715            PartialEq,
22716            Eq,
22717            Hash,
22718            PartialOrd,
22719            Ord,
22720            ::prost::Enumeration
22721        )]
22722        #[repr(i32)]
22723        pub enum InstantEventScope {
22724            ScopeUnspecified = 0,
22725            ScopeGlobal = 1,
22726            ScopeProcess = 2,
22727            ScopeThread = 3,
22728        }
22729        impl InstantEventScope {
22730            /// String value of the enum field names used in the ProtoBuf definition.
22731            ///
22732            /// The values are not transformed in any way and thus are considered stable
22733            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22734            pub fn as_str_name(&self) -> &'static str {
22735                match self {
22736                    Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
22737                    Self::ScopeGlobal => "SCOPE_GLOBAL",
22738                    Self::ScopeProcess => "SCOPE_PROCESS",
22739                    Self::ScopeThread => "SCOPE_THREAD",
22740                }
22741            }
22742            /// Creates an enum from field names used in the ProtoBuf definition.
22743            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22744                match value {
22745                    "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
22746                    "SCOPE_GLOBAL" => Some(Self::ScopeGlobal),
22747                    "SCOPE_PROCESS" => Some(Self::ScopeProcess),
22748                    "SCOPE_THREAD" => Some(Self::ScopeThread),
22749                    _ => None,
22750                }
22751            }
22752        }
22753        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22754        pub enum Id {
22755            #[prost(uint64, tag = "6")]
22756            UnscopedId(u64),
22757            #[prost(uint64, tag = "10")]
22758            LocalId(u64),
22759            #[prost(uint64, tag = "11")]
22760            GlobalId(u64),
22761        }
22762    }
22763    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
22764    #[derive(
22765        Clone,
22766        Copy,
22767        Debug,
22768        PartialEq,
22769        Eq,
22770        Hash,
22771        PartialOrd,
22772        Ord,
22773        ::prost::Enumeration
22774    )]
22775    #[repr(i32)]
22776    pub enum Type {
22777        Unspecified = 0,
22778        /// Slice events are events that have a begin and end timestamp, i.e. a
22779        /// duration. They can be nested similar to a callstack: If, on the same
22780        /// track, event B begins after event A, but before A ends, B is a child
22781        /// event of A and will be drawn as a nested event underneath A in the UI.
22782        /// Note that child events should always end before their parents (e.g. B
22783        /// before A).
22784        ///
22785        /// Each slice event is formed by a pair of BEGIN + END events. The END event
22786        /// does not need to repeat any TrackEvent fields it has in common with its
22787        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
22788        /// END pair will be merged during trace import.
22789        ///
22790        /// Note that we deliberately chose not to support COMPLETE events (which
22791        /// would specify a duration directly) since clients would need to delay
22792        /// writing them until the slice is completed, which can result in reordered
22793        /// events in the trace and loss of unfinished events at the end of a trace.
22794        SliceBegin = 1,
22795        SliceEnd = 2,
22796        /// Instant events are nestable events without duration. They can be children
22797        /// of slice events on the same track.
22798        Instant = 3,
22799        /// Event that provides a value for a counter track. |track_uuid| should
22800        /// refer to a counter track and |counter_value| set to the new value. Note
22801        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
22802        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
22803        Counter = 4,
22804        /// Event that provides a state value update for a state track. Think of this
22805        /// as a symbolic counter (a TYPE_COUNTER with literals rather then numbers).
22806        /// |track_uuid| should refer to a state track, and the state value update is
22807        /// carried in the |state| field. An empty or unset state field indicates "no
22808        /// state" / "idle". For more details, see
22809        /// [RFC-0023](<https://github.com/google/perfetto/discussions/5549>).
22810        State = 5,
22811    }
22812    impl Type {
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                Self::Unspecified => "TYPE_UNSPECIFIED",
22820                Self::SliceBegin => "TYPE_SLICE_BEGIN",
22821                Self::SliceEnd => "TYPE_SLICE_END",
22822                Self::Instant => "TYPE_INSTANT",
22823                Self::Counter => "TYPE_COUNTER",
22824                Self::State => "TYPE_STATE",
22825            }
22826        }
22827        /// Creates an enum from field names used in the ProtoBuf definition.
22828        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22829            match value {
22830                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
22831                "TYPE_SLICE_BEGIN" => Some(Self::SliceBegin),
22832                "TYPE_SLICE_END" => Some(Self::SliceEnd),
22833                "TYPE_INSTANT" => Some(Self::Instant),
22834                "TYPE_COUNTER" => Some(Self::Counter),
22835                "TYPE_STATE" => Some(Self::State),
22836                _ => None,
22837            }
22838        }
22839    }
22840    /// Optional name of the event for its display in trace viewer. May be left
22841    /// unspecified for events with typed arguments.
22842    ///
22843    /// Note that metrics should not rely on event names, as they are prone to
22844    /// changing. Instead, they should use typed arguments to identify the events
22845    /// they are interested in.
22846    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22847    pub enum NameField {
22848        /// interned EventName.
22849        #[prost(uint64, tag = "10")]
22850        NameIid(u64),
22851        /// non-interned variant.
22852        #[prost(string, tag = "23")]
22853        Name(::prost::alloc::string::String),
22854    }
22855    /// A new value for a counter track. |track_uuid| should refer to a track with
22856    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22857    /// efficient encoding of counter values that are sampled at the beginning/end
22858    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22859    /// Counter values can optionally be encoded in as delta values (positive or
22860    /// negative) on each packet sequence (see CounterIncrementalBase).
22861    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22862    pub enum CounterValueField {
22863        #[prost(int64, tag = "30")]
22864        CounterValue(i64),
22865        #[prost(double, tag = "44")]
22866        DoubleCounterValue(f64),
22867    }
22868    /// An opaque identifier to correlate this slice with other slices that are
22869    /// considered part of the same logical operation, even if they are not
22870    /// causally connected. Examples uses of a correlation id might be the number
22871    /// of frame going through various stages of rendering in a GPU, the id for an
22872    /// RPC request going through a distributed system, or the id of a network
22873    /// request going through various stages of processing by the kernel.
22874    ///
22875    /// NOTE: if the events *are* causually connected, you probably want to use
22876    /// flows instead of OR in addition to correlation ids.
22877    ///
22878    /// UIs can use this identifier to visually link these slices, for instance,
22879    /// by assigning them a consistent color or highlighting the entire correlated
22880    /// set when one slice is hovered.
22881    ///
22882    /// Only one field within this 'oneof' should be set to define the correlation.
22883    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22884    pub enum CorrelationIdField {
22885        /// A 64-bit unsigned integer used as the correlation ID.
22886        ///
22887        /// Best for performance and compact traces if the identifier is naturally
22888        /// numerical or can be easily mapped to one by the trace producer.
22889        #[prost(uint64, tag = "52")]
22890        CorrelationId(u64),
22891        /// A string value used as the correlation ID.
22892        ///
22893        /// Offers maximum flexibility for human-readable or complex identifiers
22894        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
22895        /// size. For frequently repeated string identifiers, consider
22896        /// 'correlation_id_string_iid'.
22897        #[prost(string, tag = "53")]
22898        CorrelationIdStr(::prost::alloc::string::String),
22899        /// An interned string identifier (an IID) for correlation.
22900        ///
22901        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
22902        /// field within the packet sequence's InternedData. This approach combines
22903        /// the descriptiveness and uniqueness of strings with the efficiency of
22904        /// integer IDs for storage and comparison, especially for identifiers that
22905        /// repeat across many events.
22906        #[prost(uint64, tag = "54")]
22907        CorrelationIdStrIid(u64),
22908    }
22909    /// Callstack associated with this event. This captures the program stack at
22910    /// the time the event occurred, useful for understanding what code path led
22911    /// to the event.
22912    ///
22913    /// Two variants are supported:
22914    /// - callstack: Inline callstack data (simpler when trace size is not a
22915    ///    concern or callstacks are unique)
22916    /// - callstack_iid: Reference to an interned Callstack in InternedData
22917    ///    (efficient for repeated callstacks)
22918    ///
22919    /// Only one of these fields should be set.
22920    #[derive(Clone, PartialEq, ::prost::Oneof)]
22921    pub enum CallstackField {
22922        /// Inline callstack data. Use this for simplicity when interning is not
22923        /// needed (e.g., for unique callstacks or when trace size is not critical).
22924        #[prost(message, tag = "55")]
22925        Callstack(InlineCallstack),
22926        /// Reference to interned Callstack (see InternedData.callstacks).
22927        /// This is the efficient option when callstacks are repeated.
22928        ///
22929        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
22930        #[prost(uint64, tag = "56")]
22931        CallstackIid(u64),
22932    }
22933    /// This field is used only if the source location represents the function that
22934    /// executes during this event.
22935    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22936    pub enum SourceLocationField {
22937        /// Non-interned field.
22938        #[prost(message, tag = "33")]
22939        SourceLocation(super::SourceLocation),
22940        /// Interned field.
22941        #[prost(uint64, tag = "34")]
22942        SourceLocationIid(u64),
22943    }
22944    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22945    /// TracePacket instead.
22946    ///
22947    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22948    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22949    pub enum Timestamp {
22950        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22951        /// calculate the absolute timestamp value, sum up all delta values of the
22952        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22953        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22954        /// be positive.
22955        #[prost(int64, tag = "1")]
22956        TimestampDeltaUs(i64),
22957        /// Absolute value (e.g. a manually specified timestamp in the macro).
22958        /// This is a one-off value that does not affect delta timestamp computation
22959        /// in subsequent TrackEvents.
22960        #[prost(int64, tag = "16")]
22961        TimestampAbsoluteUs(i64),
22962    }
22963    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22964    /// encode thread time instead.
22965    ///
22966    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22967    /// microseconds.
22968    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22969    pub enum ThreadTime {
22970        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22971        /// calculate the absolute timestamp value, sum up all delta values of the
22972        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22973        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22974        /// be positive.
22975        #[prost(int64, tag = "2")]
22976        ThreadTimeDeltaUs(i64),
22977        /// This is a one-off absolute value that does not affect delta timestamp
22978        /// computation in subsequent TrackEvents.
22979        #[prost(int64, tag = "17")]
22980        ThreadTimeAbsoluteUs(i64),
22981    }
22982    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22983    /// encode thread instruction count instead.
22984    ///
22985    /// Value of the instruction counter for the current thread.
22986    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22987    pub enum ThreadInstructionCount {
22988        /// Same encoding as |thread_time| field above.
22989        #[prost(int64, tag = "8")]
22990        ThreadInstructionCountDelta(i64),
22991        #[prost(int64, tag = "20")]
22992        ThreadInstructionCountAbsolute(i64),
22993    }
22994}
22995/// Default values for fields of all TrackEvents on the same packet sequence.
22996/// Should be emitted as part of TracePacketDefaults whenever incremental state
22997/// is cleared. It's defined here because field IDs should match those of the
22998/// corresponding fields in TrackEvent.
22999#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23000pub struct TrackEventDefaults {
23001    #[prost(uint64, optional, tag = "11")]
23002    pub track_uuid: ::core::option::Option<u64>,
23003    #[prost(uint64, repeated, packed = "false", tag = "31")]
23004    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
23005    #[prost(uint64, repeated, packed = "false", tag = "45")]
23006    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
23007}
23008#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23009pub struct EventCategory {
23010    #[prost(uint64, optional, tag = "1")]
23011    pub iid: ::core::option::Option<u64>,
23012    #[prost(string, optional, tag = "2")]
23013    pub name: ::core::option::Option<::prost::alloc::string::String>,
23014}
23015#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23016pub struct EventName {
23017    #[prost(uint64, optional, tag = "1")]
23018    pub iid: ::core::option::Option<u64>,
23019    #[prost(string, optional, tag = "2")]
23020    pub name: ::core::option::Option<::prost::alloc::string::String>,
23021}
23022/// ------------------------------ DATA INTERNING: ------------------------------
23023/// Interning indexes are built up gradually by adding the entries contained in
23024/// each TracePacket of the same packet sequence (packets emitted by the same
23025/// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
23026/// can only refer to interned data from other packets in the same sequence.
23027///
23028/// The writer will emit new entries when it encounters new internable values
23029/// that aren't yet in the index. Data in current and subsequent TracePackets can
23030/// then refer to the entry by its position (interning ID, abbreviated "iid") in
23031/// its index. An interning ID with value 0 is considered invalid (not set).
23032///
23033/// Because of the incremental build-up, the interning index will miss data when
23034/// TracePackets are lost, e.g. because a chunk was overridden in the central
23035/// ring buffer. To avoid invalidation of the whole trace in such a case, the
23036/// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
23037/// When packet loss occurs, the reader will only lose interning data up to the
23038/// next reset.
23039/// -----------------------------------------------------------------------------
23040///
23041/// Message that contains new entries for the interning indices of a packet
23042/// sequence.
23043///
23044/// The writer will usually emit new entries in the same TracePacket that first
23045/// refers to them (since the last reset of interning state). They may also be
23046/// emitted proactively in advance of referring to them in later packets.
23047///
23048/// Each field's message type needs to specify an |iid| field, which is the ID
23049/// of the entry in the field's interning index. Each field constructs its own
23050/// index, thus interning IDs are scoped to the tracing session and field
23051/// (usually as a counter for efficient var-int encoding), and optionally to
23052/// the incremental state generation of the packet sequence.
23053///
23054/// Note: field IDs up to 15 should be used for frequent data only.
23055///
23056/// Next reserved id: 8 (up to 15).
23057/// Next id: 51.
23058///
23059/// TODO(eseckler): Replace iid fields inside interned messages with
23060/// map<iid, message> type fields in InternedData.
23061#[derive(Clone, PartialEq, ::prost::Message)]
23062pub struct InternedData {
23063    ///
23064    /// == STABLE PUBLIC API: TrackEvent ==
23065    ///
23066    /// Interning for the stable TrackEvent API (see trace_packet.proto and
23067    /// docs/instrumentation/track-events.md).
23068    #[prost(message, repeated, tag = "1")]
23069    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
23070    #[prost(message, repeated, tag = "2")]
23071    pub event_names: ::prost::alloc::vec::Vec<EventName>,
23072    #[prost(message, repeated, tag = "3")]
23073    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
23074    #[prost(message, repeated, tag = "27")]
23075    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<
23076        DebugAnnotationValueTypeName,
23077    >,
23078    /// Interned string values in the DebugAnnotation proto.
23079    #[prost(message, repeated, tag = "29")]
23080    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
23081    /// Interned correlation ids in track_event.
23082    #[prost(message, repeated, tag = "43")]
23083    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
23084    ///
23085    /// == STABLE PUBLIC API: Callstacks and symbolization ==
23086    ///
23087    /// Interned callstacks, frames, mappings and symbol strings. Referenced by the
23088    /// stable TrackEvent callstack fields (TrackEvent.callstack_iid) and by the
23089    /// StackSample API.
23090    ///
23091    /// Build IDs of exectuable files.
23092    #[prost(message, repeated, tag = "16")]
23093    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
23094    /// Paths to executable files.
23095    #[prost(message, repeated, tag = "17")]
23096    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
23097    /// Paths to source files.
23098    #[prost(message, repeated, tag = "18")]
23099    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
23100    /// Names of functions used in frames below.
23101    #[prost(message, repeated, tag = "5")]
23102    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
23103    /// Executable files mapped into processes.
23104    #[prost(message, repeated, tag = "19")]
23105    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
23106    /// Frames of callstacks of a program.
23107    #[prost(message, repeated, tag = "6")]
23108    pub frames: ::prost::alloc::vec::Vec<Frame>,
23109    /// A callstack of a program.
23110    #[prost(message, repeated, tag = "7")]
23111    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
23112    ///
23113    /// == STABLE PUBLIC API: StackSample ==
23114    ///
23115    /// Interned StackSample context and descriptors, referenced by iid from
23116    /// StackSample. See protos/perfetto/trace/profiling/stack_sample.proto.
23117    #[prost(message, repeated, tag = "48")]
23118    pub stack_sample_task_contexts: ::prost::alloc::vec::Vec<stack_sample::TaskContext>,
23119    #[prost(message, repeated, tag = "49")]
23120    pub stack_sample_execution_contexts: ::prost::alloc::vec::Vec<
23121        stack_sample::ExecutionContext,
23122    >,
23123    #[prost(message, repeated, tag = "50")]
23124    pub stack_sample_counter_descriptors: ::prost::alloc::vec::Vec<
23125        stack_sample::CounterDescriptor,
23126    >,
23127    #[prost(message, repeated, tag = "51")]
23128    pub stack_sample_async_context_descriptors: ::prost::alloc::vec::Vec<
23129        stack_sample::AsyncContextDescriptor,
23130    >,
23131    /// Interning for the non-stable TrackEvent arguments below the "NOT part of
23132    /// the stable public API" line in track_event.proto: source_location,
23133    /// log_message and chrome_histogram_sample (Chrome/Android internal).
23134    #[prost(message, repeated, tag = "4")]
23135    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
23136    #[prost(message, repeated, tag = "28")]
23137    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<
23138        UnsymbolizedSourceLocation,
23139    >,
23140    #[prost(message, repeated, tag = "20")]
23141    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
23142    #[prost(message, repeated, tag = "25")]
23143    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
23144    /// Additional Vulkan information sent in a VulkanMemoryEvent message
23145    #[prost(message, repeated, tag = "22")]
23146    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
23147    /// Graphics context of a render stage event.  This represent the GL
23148    /// context for an OpenGl app or the VkDevice for a Vulkan app.
23149    #[prost(message, repeated, tag = "23")]
23150    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
23151    /// Description of a GPU hardware queue or render stage.
23152    #[prost(message, repeated, tag = "24")]
23153    pub gpu_specifications: ::prost::alloc::vec::Vec<
23154        InternedGpuRenderStageSpecification,
23155    >,
23156    /// Description of GPU counters available in a data source.
23157    #[prost(message, repeated, tag = "47")]
23158    pub gpu_counter_descriptors: ::prost::alloc::vec::Vec<InternedGpuCounterDescriptor>,
23159    /// This is set when FtraceConfig.symbolize_ksyms = true.
23160    /// The id of each symbol the number that will be reported in ftrace events
23161    /// like sched_block_reason.caller and is obtained from a monotonic counter.
23162    /// The same symbol can have different indexes in different bundles.
23163    /// This is is NOT the real address. This is to avoid disclosing KASLR through
23164    /// traces.
23165    #[prost(message, repeated, tag = "26")]
23166    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
23167    /// Interned name of a js function. We only intern js functions as there is a
23168    /// lot of duplication for them, but less so for other strings in the V8 data
23169    /// source.
23170    #[prost(message, repeated, tag = "31")]
23171    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
23172    /// Js functions can be emitted multiple times for various compilation tiers,
23173    /// so it makes sense to deduplicate all this.
23174    #[prost(message, repeated, tag = "32")]
23175    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
23176    /// Interned JS script (there is one associated with each JS function)
23177    #[prost(message, repeated, tag = "33")]
23178    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
23179    /// Interned Wasm script (there is one associated with each Wasm function)
23180    #[prost(message, repeated, tag = "34")]
23181    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
23182    /// Every V8 event is associated with an isolate, intern the isolate to remove
23183    /// duplication.
23184    #[prost(message, repeated, tag = "35")]
23185    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
23186}
23187/// A journald log event packet, collected from the Linux systemd journal.
23188/// Emitted by the "linux.systemd_journald" data source in traced_probes.
23189/// Next field id: 13, statistics starting at 20
23190#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23191pub struct SystemdJournaldEvent {
23192    /// _PID: PID of the process that wrote the log entry (trusted).
23193    #[prost(uint32, optional, tag = "1")]
23194    pub pid: ::core::option::Option<u32>,
23195    /// _TID: thread ID of the logging thread (trusted, set by journald for
23196    /// native journal protocol entries). Absent for syslog, stdout-piped, and
23197    /// kernel entries.
23198    #[prost(uint32, optional, tag = "2")]
23199    pub tid: ::core::option::Option<u32>,
23200    /// _UID: user ID of the process (trusted).
23201    #[prost(uint32, optional, tag = "3")]
23202    pub uid: ::core::option::Option<u32>,
23203    /// _GID: group ID of the process (trusted).
23204    #[prost(uint32, optional, tag = "4")]
23205    pub gid: ::core::option::Option<u32>,
23206    /// PRIORITY: syslog priority level 0 (EMERG) .. 7 (DEBUG).
23207    #[prost(uint32, optional, tag = "5")]
23208    pub prio: ::core::option::Option<u32>,
23209    /// SYSLOG_IDENTIFIER: program name / tag, set by the logging application.
23210    #[prost(string, optional, tag = "6")]
23211    pub tag: ::core::option::Option<::prost::alloc::string::String>,
23212    /// MESSAGE: the human-readable log message text.
23213    #[prost(string, optional, tag = "7")]
23214    pub message: ::core::option::Option<::prost::alloc::string::String>,
23215    /// _COMM: short process name as known to the kernel (trusted).
23216    #[prost(string, optional, tag = "8")]
23217    pub comm: ::core::option::Option<::prost::alloc::string::String>,
23218    /// _EXE: full executable path (trusted).
23219    #[prost(string, optional, tag = "9")]
23220    pub exe: ::core::option::Option<::prost::alloc::string::String>,
23221    /// _SYSTEMD_UNIT: the systemd unit that owns this process (trusted).
23222    #[prost(string, optional, tag = "10")]
23223    pub systemd_unit: ::core::option::Option<::prost::alloc::string::String>,
23224    /// _HOSTNAME: hostname of the machine (trusted).
23225    #[prost(string, optional, tag = "11")]
23226    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
23227    /// _TRANSPORT: how the entry was received by journald (trusted).
23228    /// Values: "audit", "driver", "syslog", "journal", "stdout", "kernel".
23229    #[prost(string, optional, tag = "12")]
23230    pub transport: ::core::option::Option<::prost::alloc::string::String>,
23231    /// These statistics emitted once on Flush()
23232    #[prost(uint64, optional, tag = "20")]
23233    pub num_total: ::core::option::Option<u64>,
23234    #[prost(uint64, optional, tag = "21")]
23235    pub num_failed: ::core::option::Option<u64>,
23236}
23237/// Message definitions for app-reported memory breakdowns. At the moment, this
23238/// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
23239/// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
23240/// This is unrelated to the native or java heap profilers (those protos live
23241/// in //protos/perfetto/trace/profiling/).
23242#[derive(Clone, PartialEq, ::prost::Message)]
23243pub struct MemoryTrackerSnapshot {
23244    /// Unique ID that represents the global memory dump.
23245    #[prost(uint64, optional, tag = "1")]
23246    pub global_dump_id: ::core::option::Option<u64>,
23247    #[prost(enumeration = "memory_tracker_snapshot::LevelOfDetail", optional, tag = "2")]
23248    pub level_of_detail: ::core::option::Option<i32>,
23249    #[prost(message, repeated, tag = "3")]
23250    pub process_memory_dumps: ::prost::alloc::vec::Vec<
23251        memory_tracker_snapshot::ProcessSnapshot,
23252    >,
23253}
23254/// Nested message and enum types in `MemoryTrackerSnapshot`.
23255pub mod memory_tracker_snapshot {
23256    /// Memory snapshot of a process. The snapshot contains memory data that is
23257    /// from 2 different sources, namely system stats and instrumentation stats.
23258    /// The system memory usage stats come from the OS based on standard API
23259    /// available in the platform to query memory usage. The instrumentation stats
23260    /// are added by instrumenting specific piece of code which tracks memory
23261    /// allocations and deallocations made by a small sub-system within the
23262    /// application.
23263    /// The system stats of the global memory snapshot are recorded as part of
23264    /// ProcessStats and SmapsPacket fields in trace packet with the same
23265    /// timestamp.
23266    #[derive(Clone, PartialEq, ::prost::Message)]
23267    pub struct ProcessSnapshot {
23268        /// Process ID of the process
23269        #[prost(int32, optional, tag = "1")]
23270        pub pid: ::core::option::Option<i32>,
23271        #[prost(message, repeated, tag = "2")]
23272        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
23273        #[prost(message, repeated, tag = "3")]
23274        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
23275    }
23276    /// Nested message and enum types in `ProcessSnapshot`.
23277    pub mod process_snapshot {
23278        /// Memory dumps are represented as a graph of memory nodes which contain
23279        /// statistics. To avoid double counting the same memory across different
23280        /// nodes, edges are used to mark nodes that account for the same memory. See
23281        /// this doc for examples of the usage:
23282        /// <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
23283        ///
23284        /// A single node in the memory graph.
23285        #[derive(Clone, PartialEq, ::prost::Message)]
23286        pub struct MemoryNode {
23287            /// Unique ID of the node across all processes involved in the global
23288            /// memory dump. The ID is only unique within this particular global dump
23289            /// identified by GlobalMemoryDumpPacket.global_dump_id.
23290            #[prost(uint64, optional, tag = "1")]
23291            pub id: ::core::option::Option<u64>,
23292            /// Absolute name is a unique name for the memory node within the process
23293            /// with ProcessMemoryDump.pid. The name can contain multiple parts
23294            /// separated by '/', which traces the edges of the node from the root
23295            /// node.
23296            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
23297            /// node "buffer1" in a graph structure of:
23298            ///    root -> partition_allocator -> array_buffers -> buffer1.
23299            #[prost(string, optional, tag = "2")]
23300            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
23301            /// A weak node means that the instrumentation that added the current node
23302            /// is unsure about the existence of the actual memory. Unless a "strong"
23303            /// (non-weak is default) node that has an edge to the current node exists
23304            /// in the current global dump, the current node will be discarded.
23305            #[prost(bool, optional, tag = "3")]
23306            pub weak: ::core::option::Option<bool>,
23307            /// Size of the node in bytes, used to compute the effective size of the
23308            /// nodes without double counting.
23309            #[prost(uint64, optional, tag = "4")]
23310            pub size_bytes: ::core::option::Option<u64>,
23311            #[prost(message, repeated, tag = "5")]
23312            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
23313        }
23314        /// Nested message and enum types in `MemoryNode`.
23315        pub mod memory_node {
23316            /// Entries in the memory node that contain statistics and additional
23317            /// debuggable information about the memory. The size of the node is
23318            /// tracked separately in the |size_bytes| field.
23319            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23320            pub struct MemoryNodeEntry {
23321                #[prost(string, optional, tag = "1")]
23322                pub name: ::core::option::Option<::prost::alloc::string::String>,
23323                #[prost(enumeration = "memory_node_entry::Units", optional, tag = "2")]
23324                pub units: ::core::option::Option<i32>,
23325                /// Contains either one of uint64 or string value.
23326                #[prost(uint64, optional, tag = "3")]
23327                pub value_uint64: ::core::option::Option<u64>,
23328                #[prost(string, optional, tag = "4")]
23329                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
23330            }
23331            /// Nested message and enum types in `MemoryNodeEntry`.
23332            pub mod memory_node_entry {
23333                #[derive(
23334                    Clone,
23335                    Copy,
23336                    Debug,
23337                    PartialEq,
23338                    Eq,
23339                    Hash,
23340                    PartialOrd,
23341                    Ord,
23342                    ::prost::Enumeration
23343                )]
23344                #[repr(i32)]
23345                pub enum Units {
23346                    Unspecified = 0,
23347                    Bytes = 1,
23348                    Count = 2,
23349                }
23350                impl Units {
23351                    /// String value of the enum field names used in the ProtoBuf definition.
23352                    ///
23353                    /// The values are not transformed in any way and thus are considered stable
23354                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23355                    pub fn as_str_name(&self) -> &'static str {
23356                        match self {
23357                            Self::Unspecified => "UNSPECIFIED",
23358                            Self::Bytes => "BYTES",
23359                            Self::Count => "COUNT",
23360                        }
23361                    }
23362                    /// Creates an enum from field names used in the ProtoBuf definition.
23363                    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23364                        match value {
23365                            "UNSPECIFIED" => Some(Self::Unspecified),
23366                            "BYTES" => Some(Self::Bytes),
23367                            "COUNT" => Some(Self::Count),
23368                            _ => None,
23369                        }
23370                    }
23371                }
23372            }
23373        }
23374        /// A directed edge that connects any 2 nodes in the graph above. These are
23375        /// in addition to the inherent edges added due to the tree structure of the
23376        /// node's absolute names.
23377        /// Node with id |source_id| owns the node with id |target_id|, and has the
23378        /// effect of attributing the memory usage of target to source. |importance|
23379        /// is optional and relevant only for the cases of co-ownership, where it
23380        /// acts as a z-index: the owner with the highest importance will be
23381        /// attributed target's memory.
23382        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23383        pub struct MemoryEdge {
23384            #[prost(uint64, optional, tag = "1")]
23385            pub source_id: ::core::option::Option<u64>,
23386            #[prost(uint64, optional, tag = "2")]
23387            pub target_id: ::core::option::Option<u64>,
23388            #[prost(uint32, optional, tag = "3")]
23389            pub importance: ::core::option::Option<u32>,
23390            #[prost(bool, optional, tag = "4")]
23391            pub overridable: ::core::option::Option<bool>,
23392        }
23393    }
23394    #[derive(
23395        Clone,
23396        Copy,
23397        Debug,
23398        PartialEq,
23399        Eq,
23400        Hash,
23401        PartialOrd,
23402        Ord,
23403        ::prost::Enumeration
23404    )]
23405    #[repr(i32)]
23406    pub enum LevelOfDetail {
23407        DetailFull = 0,
23408        DetailLight = 1,
23409        DetailBackground = 2,
23410    }
23411    impl LevelOfDetail {
23412        /// String value of the enum field names used in the ProtoBuf definition.
23413        ///
23414        /// The values are not transformed in any way and thus are considered stable
23415        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23416        pub fn as_str_name(&self) -> &'static str {
23417            match self {
23418                Self::DetailFull => "DETAIL_FULL",
23419                Self::DetailLight => "DETAIL_LIGHT",
23420                Self::DetailBackground => "DETAIL_BACKGROUND",
23421            }
23422        }
23423        /// Creates an enum from field names used in the ProtoBuf definition.
23424        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23425            match value {
23426                "DETAIL_FULL" => Some(Self::DetailFull),
23427                "DETAIL_LIGHT" => Some(Self::DetailLight),
23428                "DETAIL_BACKGROUND" => Some(Self::DetailBackground),
23429                _ => None,
23430            }
23431        }
23432    }
23433}
23434/// Emitted by the tracing service to record a state change of another tracing
23435/// session that was active while this trace was being recorded. Opt-in via
23436/// TraceConfig.BuiltinDataSource.enable_concurrent_session_events.
23437///
23438/// One packet per state change; its time is carried by the enclosing
23439/// TracePacket's timestamp (CLOCK_BOOTTIME). Events of the same session share
23440/// the same |session_id|. The trace UUID is deliberately not included.
23441///
23442/// Introduced in v58 / Android 26Q3+.
23443#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23444pub struct ConcurrentSessionEvent {
23445    /// The state the session transitioned to at this timestamp.
23446    #[prost(enumeration = "concurrent_session_event::State", optional, tag = "1")]
23447    pub state: ::core::option::Option<i32>,
23448    /// unique_session_name from the session's TraceConfig. May be empty.
23449    #[prost(string, optional, tag = "2")]
23450    pub session_name: ::core::option::Option<::prost::alloc::string::String>,
23451    /// Service-local monotonic counter identifying the session. Shared by all
23452    /// state changes of one session, never reused within a service instance.
23453    #[prost(uint64, optional, tag = "3")]
23454    pub session_id: ::core::option::Option<u64>,
23455    /// Unix uid of the consumer that started the session.
23456    #[prost(int32, optional, tag = "4")]
23457    pub consumer_uid: ::core::option::Option<i32>,
23458    /// Number of data sources in the session at the time of the state change.
23459    #[prost(uint32, optional, tag = "5")]
23460    pub num_data_sources: ::core::option::Option<u32>,
23461}
23462/// Nested message and enum types in `ConcurrentSessionEvent`.
23463pub mod concurrent_session_event {
23464    /// Mirrors the tracing service's internal session state machine
23465    /// (TracingSession::State in the service): keep these two enums in sync.
23466    /// These values are part of the trace wire format and must stay stable: never
23467    /// renumber or reuse an existing value, only append new ones at the end.
23468    #[derive(
23469        Clone,
23470        Copy,
23471        Debug,
23472        PartialEq,
23473        Eq,
23474        Hash,
23475        PartialOrd,
23476        Ord,
23477        ::prost::Enumeration
23478    )]
23479    #[repr(i32)]
23480    pub enum State {
23481        Unspecified = 0,
23482        /// Not recording (initial and final state).
23483        Disabled = 1,
23484        /// Configured but waiting for a start signal (e.g. a trigger).
23485        Configured = 2,
23486        /// Actively recording data.
23487        Started = 3,
23488        /// Stopping, waiting for data sources to ack and drain their final data.
23489        DisablingWaitingStopAcks = 4,
23490        /// A read-only snapshot of another session, created by a clone operation.
23491        ClonedReadOnly = 5,
23492    }
23493    impl State {
23494        /// String value of the enum field names used in the ProtoBuf definition.
23495        ///
23496        /// The values are not transformed in any way and thus are considered stable
23497        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23498        pub fn as_str_name(&self) -> &'static str {
23499            match self {
23500                Self::Unspecified => "STATE_UNSPECIFIED",
23501                Self::Disabled => "STATE_DISABLED",
23502                Self::Configured => "STATE_CONFIGURED",
23503                Self::Started => "STATE_STARTED",
23504                Self::DisablingWaitingStopAcks => "STATE_DISABLING_WAITING_STOP_ACKS",
23505                Self::ClonedReadOnly => "STATE_CLONED_READ_ONLY",
23506            }
23507        }
23508        /// Creates an enum from field names used in the ProtoBuf definition.
23509        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23510            match value {
23511                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
23512                "STATE_DISABLED" => Some(Self::Disabled),
23513                "STATE_CONFIGURED" => Some(Self::Configured),
23514                "STATE_STARTED" => Some(Self::Started),
23515                "STATE_DISABLING_WAITING_STOP_ACKS" => {
23516                    Some(Self::DisablingWaitingStopAcks)
23517                }
23518                "STATE_CLONED_READ_ONLY" => Some(Self::ClonedReadOnly),
23519                _ => None,
23520            }
23521        }
23522    }
23523}
23524/// Used to trace the execution of perfetto itself.
23525#[derive(Clone, PartialEq, ::prost::Message)]
23526pub struct PerfettoMetatrace {
23527    /// Only when using |event_id|.
23528    #[prost(uint64, optional, tag = "3")]
23529    pub event_duration_ns: ::core::option::Option<u64>,
23530    /// Only when using |counter_id|.
23531    #[prost(int32, optional, tag = "4")]
23532    pub counter_value: ::core::option::Option<i32>,
23533    /// ID of the thread that emitted the event.
23534    #[prost(uint32, optional, tag = "5")]
23535    pub thread_id: ::core::option::Option<u32>,
23536    /// If true the meta-tracing ring buffer had overruns and hence some data is
23537    /// missing from this point.
23538    #[prost(bool, optional, tag = "6")]
23539    pub has_overruns: ::core::option::Option<bool>,
23540    /// Args for the event.
23541    #[prost(message, repeated, tag = "7")]
23542    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
23543    #[prost(message, repeated, tag = "10")]
23544    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
23545    /// See base/metatrace_events.h for definitions.
23546    #[prost(oneof = "perfetto_metatrace::RecordType", tags = "1, 2, 8, 11, 9")]
23547    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
23548}
23549/// Nested message and enum types in `PerfettoMetatrace`.
23550pub mod perfetto_metatrace {
23551    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23552    pub struct Arg {
23553        #[prost(oneof = "arg::KeyOrInternedKey", tags = "1, 3")]
23554        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
23555        #[prost(oneof = "arg::ValueOrInternedValue", tags = "2, 4")]
23556        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
23557    }
23558    /// Nested message and enum types in `Arg`.
23559    pub mod arg {
23560        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23561        pub enum KeyOrInternedKey {
23562            #[prost(string, tag = "1")]
23563            Key(::prost::alloc::string::String),
23564            #[prost(uint64, tag = "3")]
23565            KeyIid(u64),
23566        }
23567        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23568        pub enum ValueOrInternedValue {
23569            #[prost(string, tag = "2")]
23570            Value(::prost::alloc::string::String),
23571            #[prost(uint64, tag = "4")]
23572            ValueIid(u64),
23573        }
23574    }
23575    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
23576    /// |value_iid| above.
23577    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23578    pub struct InternedString {
23579        #[prost(uint64, optional, tag = "1")]
23580        pub iid: ::core::option::Option<u64>,
23581        #[prost(string, optional, tag = "2")]
23582        pub value: ::core::option::Option<::prost::alloc::string::String>,
23583    }
23584    /// See base/metatrace_events.h for definitions.
23585    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23586    pub enum RecordType {
23587        #[prost(uint32, tag = "1")]
23588        EventId(u32),
23589        #[prost(uint32, tag = "2")]
23590        CounterId(u32),
23591        /// For trace processor metatracing.
23592        #[prost(string, tag = "8")]
23593        EventName(::prost::alloc::string::String),
23594        #[prost(uint64, tag = "11")]
23595        EventNameIid(u64),
23596        #[prost(string, tag = "9")]
23597        CounterName(::prost::alloc::string::String),
23598    }
23599}
23600#[derive(Clone, PartialEq, ::prost::Message)]
23601pub struct TraceProvenance {
23602    #[prost(message, repeated, tag = "2")]
23603    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
23604}
23605/// Nested message and enum types in `TraceProvenance`.
23606pub mod trace_provenance {
23607    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23608    pub struct Sequence {
23609        /// The trusted_packet_sequence_id reported in each TracePacket.
23610        #[prost(uint32, optional, tag = "1")]
23611        pub id: ::core::option::Option<u32>,
23612        /// ID of the producer, as per Producer.id.
23613        #[prost(int32, optional, tag = "2")]
23614        pub producer_id: ::core::option::Option<i32>,
23615    }
23616    /// Describes a trace buffer and all the sequences writing to it.
23617    #[derive(Clone, PartialEq, ::prost::Message)]
23618    pub struct Buffer {
23619        #[prost(message, repeated, tag = "1")]
23620        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
23621    }
23622}
23623/// Events emitted by the tracing service.
23624/// Next id: 12.
23625#[derive(Clone, PartialEq, ::prost::Message)]
23626pub struct TracingServiceEvent {
23627    /// When each of the following booleans are set to true, they report the
23628    /// point in time (through TracePacket's timestamp) where the condition
23629    /// they describe happened.
23630    /// The order of the booleans below matches the timestamp ordering
23631    /// they would generally be expected to have.
23632    #[prost(
23633        oneof = "tracing_service_event::EventType",
23634        tags = "2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11"
23635    )]
23636    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
23637}
23638/// Nested message and enum types in `TracingServiceEvent`.
23639pub mod tracing_service_event {
23640    #[derive(Clone, PartialEq, ::prost::Message)]
23641    pub struct DataSources {
23642        #[prost(message, repeated, tag = "1")]
23643        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
23644    }
23645    /// Nested message and enum types in `DataSources`.
23646    pub mod data_sources {
23647        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23648        pub struct DataSource {
23649            #[prost(string, optional, tag = "1")]
23650            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
23651            #[prost(string, optional, tag = "2")]
23652            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
23653        }
23654    }
23655    /// When each of the following booleans are set to true, they report the
23656    /// point in time (through TracePacket's timestamp) where the condition
23657    /// they describe happened.
23658    /// The order of the booleans below matches the timestamp ordering
23659    /// they would generally be expected to have.
23660    #[derive(Clone, PartialEq, ::prost::Oneof)]
23661    pub enum EventType {
23662        /// Emitted when we start tracing and specifically, this will be before any
23663        /// producer is notified about the existence of this trace. This is always
23664        /// emitted before the all_data_sources_started event. This event is also
23665        /// guaranteed to be seen (byte-offset wise) before any data packets from
23666        /// producers.
23667        #[prost(bool, tag = "2")]
23668        TracingStarted(bool),
23669        /// Emitted after all data sources saw the start event and ACKed it.
23670        /// This identifies the point in time when it's safe to assume that all data
23671        /// sources have been recording events.
23672        #[prost(bool, tag = "1")]
23673        AllDataSourcesStarted(bool),
23674        /// Emitted when a flush is started.
23675        #[prost(bool, tag = "9")]
23676        FlushStarted(bool),
23677        /// Emitted when all data sources have been flushed successfully or with an
23678        /// error (including timeouts). This can generally happen many times over the
23679        /// course of the trace.
23680        #[prost(bool, tag = "3")]
23681        AllDataSourcesFlushed(bool),
23682        /// Emitted when reading back the central tracing buffers has been completed.
23683        /// If |write_into_file| is specified, this can happen many times over the
23684        /// course of the trace.
23685        #[prost(bool, tag = "4")]
23686        ReadTracingBuffersCompleted(bool),
23687        /// Emitted after tracing has been disabled and specifically, this will be
23688        /// after all packets from producers have been included in the central
23689        /// tracing buffer.
23690        #[prost(bool, tag = "5")]
23691        TracingDisabled(bool),
23692        /// Emitted if perfetto --save-for-bugreport was invoked while the current
23693        /// tracing session was running and it had the highest bugreport_score. In
23694        /// this case the original consumer will see a nearly empty trace, because
23695        /// the contents are routed onto the bugreport file. This event flags the
23696        /// situation explicitly. Traces that contain this marker should be discarded
23697        /// by test infrastructures / pipelines.
23698        /// Deprecated since Android U, where --save-for-bugreport uses
23699        /// non-destructive cloning.
23700        #[prost(bool, tag = "6")]
23701        SeizedForBugreport(bool),
23702        /// Emitted when not all data sources in all producers reply to a start
23703        /// request after some time.
23704        #[prost(message, tag = "7")]
23705        SlowStartingDataSources(DataSources),
23706        /// Emitted when the last flush request has failed. Lists data sources that
23707        /// did not reply on time.
23708        #[prost(message, tag = "8")]
23709        LastFlushSlowDataSources(DataSources),
23710        /// If this was a cloned tracing session, emitted when the tracing serice
23711        /// started the clone operation.
23712        #[prost(bool, tag = "10")]
23713        CloneStarted(bool),
23714        /// If this was a cloned tracing session, emitted when the tracing service
23715        /// finished the clone operation (for a specific buffer).
23716        #[prost(uint32, tag = "11")]
23717        BufferCloned(u32),
23718    }
23719}
23720/// Energy consumer based on aidl class:
23721/// android.hardware.power.stats.EnergyConsumer.
23722#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23723pub struct AndroidEnergyConsumer {
23724    /// Unique ID of this energy consumer.  Matches the ID in a
23725    /// AndroidEnergyEstimationBreakdown.
23726    #[prost(int32, optional, tag = "1")]
23727    pub energy_consumer_id: ::core::option::Option<i32>,
23728    /// For a group of energy consumers of the same logical type, sorting by
23729    /// ordinal gives their physical order. Ordinals must be consecutive integers
23730    /// starting from 0.
23731    #[prost(int32, optional, tag = "2")]
23732    pub ordinal: ::core::option::Option<i32>,
23733    /// Type of this energy consumer.
23734    #[prost(string, optional, tag = "3")]
23735    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23736    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
23737    /// framework.
23738    #[prost(string, optional, tag = "4")]
23739    pub name: ::core::option::Option<::prost::alloc::string::String>,
23740}
23741#[derive(Clone, PartialEq, ::prost::Message)]
23742pub struct AndroidEnergyConsumerDescriptor {
23743    #[prost(message, repeated, tag = "1")]
23744    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
23745}
23746/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
23747/// This proto represents the aidl class:
23748/// android.hardware.power.stats.EnergyConsumerResult.
23749#[derive(Clone, PartialEq, ::prost::Message)]
23750pub struct AndroidEnergyEstimationBreakdown {
23751    /// The first trace packet of each session should include a energy consumer
23752    /// descriptor.
23753    #[prost(message, optional, tag = "1")]
23754    pub energy_consumer_descriptor: ::core::option::Option<
23755        AndroidEnergyConsumerDescriptor,
23756    >,
23757    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
23758    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
23759    /// should be sent at the beginning of a trace.
23760    #[prost(int32, optional, tag = "2")]
23761    pub energy_consumer_id: ::core::option::Option<i32>,
23762    /// Total accumulated energy since boot in microwatt-seconds (uWs)
23763    #[prost(int64, optional, tag = "3")]
23764    pub energy_uws: ::core::option::Option<i64>,
23765    /// Optional attributed energy per Android ID / Linux UID for this
23766    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
23767    /// to total accumulated energy.
23768    #[prost(message, repeated, tag = "4")]
23769    pub per_uid_breakdown: ::prost::alloc::vec::Vec<
23770        android_energy_estimation_breakdown::EnergyUidBreakdown,
23771    >,
23772}
23773/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
23774pub mod android_energy_estimation_breakdown {
23775    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23776    pub struct EnergyUidBreakdown {
23777        /// Android ID/Linux UID, the accumulated energy is attributed to.
23778        #[prost(int32, optional, tag = "1")]
23779        pub uid: ::core::option::Option<i32>,
23780        /// Accumulated energy since boot in microwatt-seconds (uWs).
23781        #[prost(int64, optional, tag = "2")]
23782        pub energy_uws: ::core::option::Option<i64>,
23783    }
23784}
23785#[derive(Clone, PartialEq, ::prost::Message)]
23786pub struct EntityStateResidency {
23787    /// This is only emitted at the beginning of the trace.
23788    #[prost(message, repeated, tag = "1")]
23789    pub power_entity_state: ::prost::alloc::vec::Vec<
23790        entity_state_residency::PowerEntityState,
23791    >,
23792    #[prost(message, repeated, tag = "2")]
23793    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
23794}
23795/// Nested message and enum types in `EntityStateResidency`.
23796pub mod entity_state_residency {
23797    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23798    pub struct PowerEntityState {
23799        /// Index corresponding to the entity
23800        #[prost(int32, optional, tag = "1")]
23801        pub entity_index: ::core::option::Option<i32>,
23802        /// Index corresponding to the state
23803        #[prost(int32, optional, tag = "2")]
23804        pub state_index: ::core::option::Option<i32>,
23805        /// Name of the entity. This is device-specific, determined by the PowerStats
23806        /// HAL, and cannot be configured by the user. An example would be
23807        /// "Bluetooth".
23808        #[prost(string, optional, tag = "3")]
23809        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
23810        /// Name of the state. This is device-specific, determined by the PowerStats
23811        /// HAL, and cannot be configured by the user. An example would be
23812        /// "Active".
23813        #[prost(string, optional, tag = "4")]
23814        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
23815    }
23816    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23817    pub struct StateResidency {
23818        /// Index corresponding to PowerEntityState.entity_index
23819        #[prost(int32, optional, tag = "1")]
23820        pub entity_index: ::core::option::Option<i32>,
23821        /// Index corresponding to PowerEntityState.state_index
23822        #[prost(int32, optional, tag = "2")]
23823        pub state_index: ::core::option::Option<i32>,
23824        /// Time since boot that this entity has been in this state
23825        #[prost(uint64, optional, tag = "3")]
23826        pub total_time_in_state_ms: ::core::option::Option<u64>,
23827        /// Total number of times since boot that the entity has entered this state
23828        #[prost(uint64, optional, tag = "4")]
23829        pub total_state_entry_count: ::core::option::Option<u64>,
23830        /// Timestamp of the last time the entity entered this state
23831        #[prost(uint64, optional, tag = "5")]
23832        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
23833    }
23834}
23835#[derive(Clone, PartialEq, ::prost::Message)]
23836pub struct BatteryCounters {
23837    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
23838    #[prost(int64, optional, tag = "1")]
23839    pub charge_counter_uah: ::core::option::Option<i64>,
23840    /// Remaining battery capacity percentage of total capacity
23841    #[prost(float, optional, tag = "2")]
23842    pub capacity_percent: ::core::option::Option<f32>,
23843    /// Instantaneous battery current in microamperes(µA).
23844    /// Negative values indicate current being drained from the battery and
23845    /// positive values indicate current feeding the battery from a charge source
23846    /// (USB).
23847    ///
23848    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
23849    #[prost(int64, optional, tag = "3")]
23850    pub current_ua: ::core::option::Option<i64>,
23851    /// Instantaneous battery current in microamperes(µA).
23852    #[prost(int64, optional, tag = "4")]
23853    pub current_avg_ua: ::core::option::Option<i64>,
23854    /// Battery name, emitted only on multiple batteries.
23855    #[prost(string, optional, tag = "5")]
23856    pub name: ::core::option::Option<::prost::alloc::string::String>,
23857    /// Battery capacity in microwatt-hours(µWh).
23858    #[prost(int64, optional, tag = "6")]
23859    pub energy_counter_uwh: ::core::option::Option<i64>,
23860    /// Battery voltage in microvolts(µV).
23861    #[prost(int64, optional, tag = "7")]
23862    pub voltage_uv: ::core::option::Option<i64>,
23863}
23864#[derive(Clone, PartialEq, ::prost::Message)]
23865pub struct PowerRails {
23866    /// This is only emitted at the beginning of the trace.
23867    #[prost(message, repeated, tag = "1")]
23868    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
23869    #[prost(message, repeated, tag = "2")]
23870    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
23871    /// A unique session id that can be used to match energy data to sets of
23872    /// descriptors. The indices used by rail descriptors and energy data packets
23873    /// are meant to be unique to a given session uuid. When multiple data sources
23874    /// are running in parallel, each data source should use a unique id.
23875    #[prost(uint64, optional, tag = "3")]
23876    pub session_uuid: ::core::option::Option<u64>,
23877}
23878/// Nested message and enum types in `PowerRails`.
23879pub mod power_rails {
23880    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23881    pub struct RailDescriptor {
23882        /// Index corresponding to the rail
23883        #[prost(uint32, optional, tag = "1")]
23884        pub index: ::core::option::Option<u32>,
23885        /// Name of the rail
23886        #[prost(string, optional, tag = "2")]
23887        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
23888        /// Name of the subsystem to which this rail belongs
23889        #[prost(string, optional, tag = "3")]
23890        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
23891        /// Hardware sampling rate (Hz).
23892        #[prost(uint32, optional, tag = "4")]
23893        pub sampling_rate: ::core::option::Option<u32>,
23894    }
23895    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23896    pub struct EnergyData {
23897        /// Index corresponding to RailDescriptor.index
23898        #[prost(uint32, optional, tag = "1")]
23899        pub index: ::core::option::Option<u32>,
23900        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
23901        #[prost(uint64, optional, tag = "2")]
23902        pub timestamp_ms: ::core::option::Option<u64>,
23903        /// Accumulated energy since device boot in microwatt-seconds (uWs).
23904        #[prost(uint64, optional, tag = "3")]
23905        pub energy: ::core::option::Option<u64>,
23906    }
23907}
23908#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23909pub struct JavaFrame {
23910    #[prost(string, optional, tag = "1")]
23911    pub method_name: ::core::option::Option<::prost::alloc::string::String>,
23912    #[prost(string, optional, tag = "2")]
23913    pub source_file: ::core::option::Option<::prost::alloc::string::String>,
23914    #[prost(int32, optional, tag = "3")]
23915    pub line_number: ::core::option::Option<i32>,
23916}
23917#[derive(Clone, PartialEq, ::prost::Message)]
23918pub struct JavaStack {
23919    #[prost(message, repeated, tag = "1")]
23920    pub frames: ::prost::alloc::vec::Vec<JavaFrame>,
23921}
23922#[derive(Clone, PartialEq, ::prost::Message)]
23923pub struct ArtProcessMetadata {
23924    #[prost(int32, optional, tag = "1")]
23925    pub pid: ::core::option::Option<i32>,
23926    #[prost(int32, optional, tag = "2")]
23927    pub uid: ::core::option::Option<i32>,
23928    /// /proc/self/cmdline argv0
23929    #[prost(string, optional, tag = "3")]
23930    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
23931    /// Set by VMRuntime.setProcessPackageName
23932    #[prost(string, optional, tag = "4")]
23933    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
23934    /// OutOfMemoryError details (if heap dump was triggered by an OOM)
23935    /// The size of the allocation that ended up failing with OOME
23936    #[prost(uint64, optional, tag = "5")]
23937    pub oom_allocation_size: ::core::option::Option<u64>,
23938    /// Amount of free memory until the runtime would need to grow the heap
23939    #[prost(uint64, optional, tag = "6")]
23940    pub oom_total_bytes_free: ::core::option::Option<u64>,
23941    /// Amount of memory remaining until the max heap size supported
23942    #[prost(uint64, optional, tag = "7")]
23943    pub oom_free_bytes_until_oom: ::core::option::Option<u64>,
23944    /// Stacktrace for the thread doing the failing allocation
23945    #[prost(message, optional, tag = "8")]
23946    pub oom_thread_java_stack: ::core::option::Option<JavaStack>,
23947    /// Full OOME exception message
23948    #[prost(string, optional, tag = "9")]
23949    pub oom_error_msg: ::core::option::Option<::prost::alloc::string::String>,
23950}
23951#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23952pub struct ObfuscatedMember {
23953    /// This is the obfuscated field name relative to the class containing the
23954    /// ObfuscatedMember.
23955    #[prost(string, optional, tag = "1")]
23956    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23957    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
23958    /// field name including its class. Otherwise, this is this the unqualified
23959    /// deobfuscated field name relative to the class containing this
23960    /// ObfuscatedMember.
23961    #[prost(string, optional, tag = "2")]
23962    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23963    /// R8 inline method support: line number ranges for disambiguation.
23964    /// When multiple methods map to the same obfuscated name, the line number
23965    /// from the stack frame is used to select the correct mapping.
23966    ///
23967    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
23968    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
23969    /// - source_line_start/end = 10:12 (line range in original source)
23970    ///
23971    /// Methods with the same obfuscated_name and overlapping obfuscated line
23972    /// ranges form an inline chain, ordered innermost (inlined) first.
23973    #[prost(uint32, optional, tag = "3")]
23974    pub obfuscated_line_start: ::core::option::Option<u32>,
23975    #[prost(uint32, optional, tag = "4")]
23976    pub obfuscated_line_end: ::core::option::Option<u32>,
23977    #[prost(uint32, optional, tag = "5")]
23978    pub source_line_start: ::core::option::Option<u32>,
23979    #[prost(uint32, optional, tag = "6")]
23980    pub source_line_end: ::core::option::Option<u32>,
23981}
23982#[derive(Clone, PartialEq, ::prost::Message)]
23983pub struct ObfuscatedClass {
23984    #[prost(string, optional, tag = "1")]
23985    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23986    #[prost(string, optional, tag = "2")]
23987    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23988    /// fields.
23989    #[prost(message, repeated, tag = "3")]
23990    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23991    #[prost(message, repeated, tag = "4")]
23992    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23993    #[prost(message, optional, tag = "5")]
23994    pub merged_classes: ::core::option::Option<obfuscated_class::MergedClasses>,
23995}
23996/// Nested message and enum types in `ObfuscatedClass`.
23997pub mod obfuscated_class {
23998    /// Information about a single class merged by optimization into this
23999    /// obfuscated class.
24000    #[derive(Clone, PartialEq, ::prost::Message)]
24001    pub struct MergedClass {
24002        #[prost(string, optional, tag = "1")]
24003        pub name: ::core::option::Option<::prost::alloc::string::String>,
24004        #[prost(int32, optional, tag = "2")]
24005        pub class_id: ::core::option::Option<i32>,
24006        #[prost(message, optional, tag = "3")]
24007        pub merged_classes: ::core::option::Option<MergedClasses>,
24008    }
24009    /// Set of classes merged into this obfuscated class by optimization.
24010    #[derive(Clone, PartialEq, ::prost::Message)]
24011    pub struct MergedClasses {
24012        #[prost(string, optional, tag = "1")]
24013        pub class_id_field_name: ::core::option::Option<::prost::alloc::string::String>,
24014        #[prost(message, repeated, tag = "2")]
24015        pub merged_classes: ::prost::alloc::vec::Vec<MergedClass>,
24016        /// Set to true if other unknown classes may have been merged into this
24017        /// class by optimization (e.g. when using older R8 mapping versions that
24018        /// do not emit mergedClasses metadata).
24019        #[prost(bool, optional, tag = "3")]
24020        pub unknown_merged_classes: ::core::option::Option<bool>,
24021    }
24022}
24023#[derive(Clone, PartialEq, ::prost::Message)]
24024pub struct DeobfuscationMapping {
24025    #[prost(string, optional, tag = "1")]
24026    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
24027    #[prost(int64, optional, tag = "2")]
24028    pub version_code: ::core::option::Option<i64>,
24029    #[prost(message, repeated, tag = "3")]
24030    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
24031}
24032/// This file contains a mixture of messages emitted by various sampling
24033/// profilers:
24034///
24035/// Memory allocator profiling
24036/// ----------------
24037/// ProfilePacket:
24038///    The packet emitted by heapprofd, which started off as a native heap
24039///    (malloc/free) profiler, but now supports custom allocators as well. Each
24040///    packet contains a preaggregated state of the heap at snapshot time, which
24041///    report the total allocated/free bytes per callstack (plus other info such
24042///    as the number of samples).
24043/// StreamingAllocation/StreamingFree:
24044///    Emitted by heapprofd when configured in streaming mode (i.e. when
24045///    stream_allocations = true). This is only for local testing, and doesn't
24046///    report callstacks (only address time and size of each alloc/free). It can
24047///    lead to enormous traces, as it contains the stream of each alloc/free call.
24048///
24049/// Callstack sampling
24050/// ------------------
24051/// StreamingProfilePacket:
24052///    The packet emitted by the chromium in-process sampling profiler, which is
24053///    based on periodically sending a signal to itself, and unwinding the stack
24054///    in the signal handler. Each packet contains a series of individual stack
24055///    samples for a Chromium thread.
24056///
24057/// Callstack and performance counter sampling
24058/// ---------------------
24059/// PerfSample:
24060///    The packet emitted by traced_perf sampling performance profiler based on
24061///    the perf_event_open syscall. Each packet represents an individual sample
24062///    of a performance counter (which might be a timer), and optionally a
24063///    callstack of the process that was scheduled at the time of the sample.
24064///
24065/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
24066/// involve more than one ProfilePacket if the snapshot is big (when |continued|
24067/// is true). The cardinality and grouping is as follows:
24068/// A ProfilePacket contains:
24069///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
24070///     one heap per process (the main malloc/free heap), but there can be more if
24071///     the process is using the heapprofd API to profile custom allocators.
24072///   - Globally interned strings, mappings and frames (to allow de-duplicating
24073///     frames/mapping in common between different processes).
24074/// A ProcessHeapSamples contains:
24075///   - The process and heap identifier.
24076///   - A number of HeapSample, one for each callsite that had some alloc/frees.
24077///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
24078/// A HeapSample contains statistics about callsites:
24079///   - Total number of bytes allocated and freed from that callsite.
24080///   - Total number of alloc/free calls sampled.
24081///   - Stats at the local maximum when dump_at_max = true.
24082/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
24083#[derive(Clone, PartialEq, ::prost::Message)]
24084pub struct ProfilePacket {
24085    /// The following interning tables are only used in Android version Q.
24086    /// In newer versions, these tables are in InternedData
24087    /// (see protos/perfetto/trace/interned_data) and are shared across
24088    /// multiple ProfilePackets.
24089    /// For backwards compatibility, consumers need to first look up interned
24090    /// data in the tables within the ProfilePacket, and then, if they are empty,
24091    /// look up in the InternedData instead.
24092    #[prost(message, repeated, tag = "1")]
24093    pub strings: ::prost::alloc::vec::Vec<InternedString>,
24094    #[prost(message, repeated, tag = "4")]
24095    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
24096    #[prost(message, repeated, tag = "2")]
24097    pub frames: ::prost::alloc::vec::Vec<Frame>,
24098    #[prost(message, repeated, tag = "3")]
24099    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
24100    #[prost(message, repeated, tag = "5")]
24101    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
24102    /// If this is true, the next ProfilePacket in this package_sequence_id is a
24103    /// continuation of this one.
24104    /// To get all samples for a process, accummulate its
24105    /// ProcessHeapSamples.samples until you see continued=false.
24106    #[prost(bool, optional, tag = "6")]
24107    pub continued: ::core::option::Option<bool>,
24108    /// Index of this ProfilePacket on its package_sequence_id. Can be used
24109    /// to detect dropped data.
24110    /// Verify these are consecutive.
24111    #[prost(uint64, optional, tag = "7")]
24112    pub index: ::core::option::Option<u64>,
24113}
24114/// Nested message and enum types in `ProfilePacket`.
24115pub mod profile_packet {
24116    /// Next ID: 9
24117    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24118    pub struct HeapSample {
24119        #[prost(uint64, optional, tag = "1")]
24120        pub callstack_id: ::core::option::Option<u64>,
24121        /// bytes allocated at this callstack.
24122        #[prost(uint64, optional, tag = "2")]
24123        pub self_allocated: ::core::option::Option<u64>,
24124        /// bytes allocated at this callstack that have been freed.
24125        #[prost(uint64, optional, tag = "3")]
24126        pub self_freed: ::core::option::Option<u64>,
24127        /// Bytes allocated by this callstack but not freed at the time the malloc
24128        /// heap usage of this process was maximal. This is only set if dump_at_max
24129        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
24130        /// self_idle will not be set.
24131        #[prost(uint64, optional, tag = "8")]
24132        pub self_max: ::core::option::Option<u64>,
24133        /// Number of allocations that were sampled at this callstack but not freed
24134        /// at the time the malloc heap usage of this process was maximal. This is
24135        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
24136        /// self_allocated, self_freed and self_idle will not be set.
24137        #[prost(uint64, optional, tag = "9")]
24138        pub self_max_count: ::core::option::Option<u64>,
24139        /// timestamp \[opt\]
24140        #[prost(uint64, optional, tag = "4")]
24141        pub timestamp: ::core::option::Option<u64>,
24142        /// Number of allocations that were sampled at this callstack.
24143        #[prost(uint64, optional, tag = "5")]
24144        pub alloc_count: ::core::option::Option<u64>,
24145        /// Number of allocations that were sampled at this callstack that have been
24146        /// freed.
24147        #[prost(uint64, optional, tag = "6")]
24148        pub free_count: ::core::option::Option<u64>,
24149    }
24150    #[derive(Clone, PartialEq, ::prost::Message)]
24151    pub struct Histogram {
24152        #[prost(message, repeated, tag = "1")]
24153        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
24154    }
24155    /// Nested message and enum types in `Histogram`.
24156    pub mod histogram {
24157        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24158        pub struct Bucket {
24159            /// This bucket counts values from the previous bucket's (or -infinity if
24160            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
24161            /// (exclusive).
24162            #[prost(uint64, optional, tag = "1")]
24163            pub upper_limit: ::core::option::Option<u64>,
24164            /// This is the highest bucket. This is set instead of the upper_limit. Any
24165            /// values larger or equal to the previous bucket's upper_limit are counted
24166            /// in this bucket.
24167            #[prost(bool, optional, tag = "2")]
24168            pub max_bucket: ::core::option::Option<bool>,
24169            /// Number of values that fall into this range.
24170            #[prost(uint64, optional, tag = "3")]
24171            pub count: ::core::option::Option<u64>,
24172        }
24173    }
24174    #[derive(Clone, PartialEq, ::prost::Message)]
24175    pub struct ProcessStats {
24176        #[prost(uint64, optional, tag = "1")]
24177        pub unwinding_errors: ::core::option::Option<u64>,
24178        #[prost(uint64, optional, tag = "2")]
24179        pub heap_samples: ::core::option::Option<u64>,
24180        #[prost(uint64, optional, tag = "3")]
24181        pub map_reparses: ::core::option::Option<u64>,
24182        #[prost(message, optional, tag = "4")]
24183        pub unwinding_time_us: ::core::option::Option<Histogram>,
24184        #[prost(uint64, optional, tag = "5")]
24185        pub total_unwinding_time_us: ::core::option::Option<u64>,
24186        #[prost(uint64, optional, tag = "6")]
24187        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
24188    }
24189    #[derive(Clone, PartialEq, ::prost::Message)]
24190    pub struct ProcessHeapSamples {
24191        #[prost(uint64, optional, tag = "1")]
24192        pub pid: ::core::option::Option<u64>,
24193        /// This process was profiled from startup.
24194        /// If false, this process was already running when profiling started.
24195        #[prost(bool, optional, tag = "3")]
24196        pub from_startup: ::core::option::Option<bool>,
24197        /// This process was not profiled because a concurrent session was active.
24198        /// If this is true, samples will be empty.
24199        #[prost(bool, optional, tag = "4")]
24200        pub rejected_concurrent: ::core::option::Option<bool>,
24201        /// This process disconnected while it was profiled.
24202        /// If false, the process outlived the profiling session.
24203        #[prost(bool, optional, tag = "6")]
24204        pub disconnected: ::core::option::Option<bool>,
24205        /// If disconnected, this disconnect was caused by the client overrunning
24206        /// the buffer.
24207        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
24208        /// on new S builds.
24209        #[prost(bool, optional, tag = "7")]
24210        pub buffer_overran: ::core::option::Option<bool>,
24211        #[prost(enumeration = "process_heap_samples::ClientError", optional, tag = "14")]
24212        pub client_error: ::core::option::Option<i32>,
24213        /// If disconnected, this disconnected was caused by the shared memory
24214        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
24215        /// MEMORY CORRUPTION.
24216        #[prost(bool, optional, tag = "8")]
24217        pub buffer_corrupted: ::core::option::Option<bool>,
24218        /// If disconnected, this disconnect was caused by heapprofd exceeding
24219        /// guardrails during this profiling session.
24220        #[prost(bool, optional, tag = "10")]
24221        pub hit_guardrail: ::core::option::Option<bool>,
24222        #[prost(string, optional, tag = "11")]
24223        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
24224        #[prost(uint64, optional, tag = "12")]
24225        pub sampling_interval_bytes: ::core::option::Option<u64>,
24226        #[prost(uint64, optional, tag = "13")]
24227        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
24228        /// Timestamp of the state of the target process that this dump represents,
24229        /// i.e. the end of the interval covered by the dump (|start_timestamp| is
24230        /// the start). This can be different to the timestamp of the TracePackets
24231        /// for various reasons:
24232        /// * If disconnected is set above, this is the timestamp of last state
24233        ///    heapprofd had of the process before it disconnected.
24234        /// * Otherwise, if the rate of events produced by the process is high,
24235        ///    heapprofd might be behind.
24236        ///
24237        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
24238        ///                to have a type enum that we can reuse here.
24239        #[prost(uint64, optional, tag = "9")]
24240        pub timestamp: ::core::option::Option<u64>,
24241        /// Start of the interval this dump covers (|timestamp| is the end): the
24242        /// profiling start for the first dump, the previous dump's timestamp
24243        /// afterwards. Same clock as |timestamp|. Unset on older producers.
24244        #[prost(uint64, optional, tag = "15")]
24245        pub start_timestamp: ::core::option::Option<u64>,
24246        /// Metadata about heapprofd.
24247        #[prost(message, optional, tag = "5")]
24248        pub stats: ::core::option::Option<ProcessStats>,
24249        #[prost(message, repeated, tag = "2")]
24250        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
24251    }
24252    /// Nested message and enum types in `ProcessHeapSamples`.
24253    pub mod process_heap_samples {
24254        #[derive(
24255            Clone,
24256            Copy,
24257            Debug,
24258            PartialEq,
24259            Eq,
24260            Hash,
24261            PartialOrd,
24262            Ord,
24263            ::prost::Enumeration
24264        )]
24265        #[repr(i32)]
24266        pub enum ClientError {
24267            None = 0,
24268            HitTimeout = 1,
24269            InvalidStackBounds = 2,
24270        }
24271        impl ClientError {
24272            /// String value of the enum field names used in the ProtoBuf definition.
24273            ///
24274            /// The values are not transformed in any way and thus are considered stable
24275            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24276            pub fn as_str_name(&self) -> &'static str {
24277                match self {
24278                    Self::None => "CLIENT_ERROR_NONE",
24279                    Self::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
24280                    Self::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
24281                }
24282            }
24283            /// Creates an enum from field names used in the ProtoBuf definition.
24284            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24285                match value {
24286                    "CLIENT_ERROR_NONE" => Some(Self::None),
24287                    "CLIENT_ERROR_HIT_TIMEOUT" => Some(Self::HitTimeout),
24288                    "CLIENT_ERROR_INVALID_STACK_BOUNDS" => Some(Self::InvalidStackBounds),
24289                    _ => None,
24290                }
24291            }
24292        }
24293    }
24294}
24295/// Packet emitted by heapprofd when stream_allocations = true. Only for local
24296/// testing. Doesn't report the callsite.
24297#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24298pub struct StreamingAllocation {
24299    /// TODO(fmayer): Add callstack.
24300    #[prost(uint64, repeated, packed = "false", tag = "1")]
24301    pub address: ::prost::alloc::vec::Vec<u64>,
24302    #[prost(uint64, repeated, packed = "false", tag = "2")]
24303    pub size: ::prost::alloc::vec::Vec<u64>,
24304    #[prost(uint64, repeated, packed = "false", tag = "3")]
24305    pub sample_size: ::prost::alloc::vec::Vec<u64>,
24306    #[prost(uint64, repeated, packed = "false", tag = "4")]
24307    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
24308    #[prost(uint32, repeated, packed = "false", tag = "5")]
24309    pub heap_id: ::prost::alloc::vec::Vec<u32>,
24310    #[prost(uint64, repeated, packed = "false", tag = "6")]
24311    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
24312}
24313/// Packet emitted by heapprofd when stream_allocations = true. Only for local
24314/// testing. Doesn't report the callsite.
24315#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24316pub struct StreamingFree {
24317    /// TODO(fmayer): Add callstack.
24318    #[prost(uint64, repeated, packed = "false", tag = "1")]
24319    pub address: ::prost::alloc::vec::Vec<u64>,
24320    #[prost(uint32, repeated, packed = "false", tag = "2")]
24321    pub heap_id: ::prost::alloc::vec::Vec<u32>,
24322    #[prost(uint64, repeated, packed = "false", tag = "3")]
24323    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
24324}
24325/// Packet emitted by the chromium in-process signal-based callstack sampler.
24326/// Represents a series of individual stack samples (sampled at discrete points
24327/// in time), rather than aggregated over an interval.
24328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24329pub struct StreamingProfilePacket {
24330    /// Index into InternedData.callstacks
24331    #[prost(uint64, repeated, packed = "false", tag = "1")]
24332    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
24333    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
24334    /// this with ClockSnapshot-based delta encoding instead.
24335    #[prost(int64, repeated, packed = "false", tag = "2")]
24336    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
24337    #[prost(int32, optional, tag = "3")]
24338    pub process_priority: ::core::option::Option<i32>,
24339}
24340/// Namespace for the contained enums.
24341#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24342pub struct Profiling {}
24343/// Nested message and enum types in `Profiling`.
24344pub mod profiling {
24345    #[derive(
24346        Clone,
24347        Copy,
24348        Debug,
24349        PartialEq,
24350        Eq,
24351        Hash,
24352        PartialOrd,
24353        Ord,
24354        ::prost::Enumeration
24355    )]
24356    #[repr(i32)]
24357    pub enum CpuMode {
24358        ModeUnknown = 0,
24359        ModeKernel = 1,
24360        ModeUser = 2,
24361        /// The following values aren't expected, but included for completeness:
24362        ModeHypervisor = 3,
24363        ModeGuestKernel = 4,
24364        ModeGuestUser = 5,
24365    }
24366    impl CpuMode {
24367        /// String value of the enum field names used in the ProtoBuf definition.
24368        ///
24369        /// The values are not transformed in any way and thus are considered stable
24370        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24371        pub fn as_str_name(&self) -> &'static str {
24372            match self {
24373                Self::ModeUnknown => "MODE_UNKNOWN",
24374                Self::ModeKernel => "MODE_KERNEL",
24375                Self::ModeUser => "MODE_USER",
24376                Self::ModeHypervisor => "MODE_HYPERVISOR",
24377                Self::ModeGuestKernel => "MODE_GUEST_KERNEL",
24378                Self::ModeGuestUser => "MODE_GUEST_USER",
24379            }
24380        }
24381        /// Creates an enum from field names used in the ProtoBuf definition.
24382        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24383            match value {
24384                "MODE_UNKNOWN" => Some(Self::ModeUnknown),
24385                "MODE_KERNEL" => Some(Self::ModeKernel),
24386                "MODE_USER" => Some(Self::ModeUser),
24387                "MODE_HYPERVISOR" => Some(Self::ModeHypervisor),
24388                "MODE_GUEST_KERNEL" => Some(Self::ModeGuestKernel),
24389                "MODE_GUEST_USER" => Some(Self::ModeGuestUser),
24390                _ => None,
24391            }
24392        }
24393    }
24394    /// Enumeration of libunwindstack's error codes.
24395    /// NB: the integral representations of the two enums are different.
24396    #[derive(
24397        Clone,
24398        Copy,
24399        Debug,
24400        PartialEq,
24401        Eq,
24402        Hash,
24403        PartialOrd,
24404        Ord,
24405        ::prost::Enumeration
24406    )]
24407    #[repr(i32)]
24408    pub enum StackUnwindError {
24409        UnwindErrorUnknown = 0,
24410        UnwindErrorNone = 1,
24411        UnwindErrorMemoryInvalid = 2,
24412        UnwindErrorUnwindInfo = 3,
24413        UnwindErrorUnsupported = 4,
24414        UnwindErrorInvalidMap = 5,
24415        UnwindErrorMaxFramesExceeded = 6,
24416        UnwindErrorRepeatedFrame = 7,
24417        UnwindErrorInvalidElf = 8,
24418        UnwindErrorSystemCall = 9,
24419        UnwindErrorThreadTimeout = 10,
24420        UnwindErrorThreadDoesNotExist = 11,
24421        UnwindErrorBadArch = 12,
24422        UnwindErrorMapsParse = 13,
24423        UnwindErrorInvalidParameter = 14,
24424        UnwindErrorPtraceCall = 15,
24425    }
24426    impl StackUnwindError {
24427        /// String value of the enum field names used in the ProtoBuf definition.
24428        ///
24429        /// The values are not transformed in any way and thus are considered stable
24430        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24431        pub fn as_str_name(&self) -> &'static str {
24432            match self {
24433                Self::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
24434                Self::UnwindErrorNone => "UNWIND_ERROR_NONE",
24435                Self::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
24436                Self::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
24437                Self::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
24438                Self::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
24439                Self::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
24440                Self::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
24441                Self::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
24442                Self::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
24443                Self::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
24444                Self::UnwindErrorThreadDoesNotExist => {
24445                    "UNWIND_ERROR_THREAD_DOES_NOT_EXIST"
24446                }
24447                Self::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
24448                Self::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
24449                Self::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
24450                Self::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
24451            }
24452        }
24453        /// Creates an enum from field names used in the ProtoBuf definition.
24454        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24455            match value {
24456                "UNWIND_ERROR_UNKNOWN" => Some(Self::UnwindErrorUnknown),
24457                "UNWIND_ERROR_NONE" => Some(Self::UnwindErrorNone),
24458                "UNWIND_ERROR_MEMORY_INVALID" => Some(Self::UnwindErrorMemoryInvalid),
24459                "UNWIND_ERROR_UNWIND_INFO" => Some(Self::UnwindErrorUnwindInfo),
24460                "UNWIND_ERROR_UNSUPPORTED" => Some(Self::UnwindErrorUnsupported),
24461                "UNWIND_ERROR_INVALID_MAP" => Some(Self::UnwindErrorInvalidMap),
24462                "UNWIND_ERROR_MAX_FRAMES_EXCEEDED" => {
24463                    Some(Self::UnwindErrorMaxFramesExceeded)
24464                }
24465                "UNWIND_ERROR_REPEATED_FRAME" => Some(Self::UnwindErrorRepeatedFrame),
24466                "UNWIND_ERROR_INVALID_ELF" => Some(Self::UnwindErrorInvalidElf),
24467                "UNWIND_ERROR_SYSTEM_CALL" => Some(Self::UnwindErrorSystemCall),
24468                "UNWIND_ERROR_THREAD_TIMEOUT" => Some(Self::UnwindErrorThreadTimeout),
24469                "UNWIND_ERROR_THREAD_DOES_NOT_EXIST" => {
24470                    Some(Self::UnwindErrorThreadDoesNotExist)
24471                }
24472                "UNWIND_ERROR_BAD_ARCH" => Some(Self::UnwindErrorBadArch),
24473                "UNWIND_ERROR_MAPS_PARSE" => Some(Self::UnwindErrorMapsParse),
24474                "UNWIND_ERROR_INVALID_PARAMETER" => {
24475                    Some(Self::UnwindErrorInvalidParameter)
24476                }
24477                "UNWIND_ERROR_PTRACE_CALL" => Some(Self::UnwindErrorPtraceCall),
24478                _ => None,
24479            }
24480        }
24481    }
24482}
24483/// Packet emitted by the traced_perf sampling performance profiler, which
24484/// gathers data via the perf_event_open syscall. Each packet contains an
24485/// individual sample with a counter value, and optionally a
24486/// callstack.
24487///
24488/// Timestamps are within the root packet. The config can specify the clock, or
24489/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
24490/// timeframe, the default was CLOCK_BOOTTIME.
24491///
24492/// There are several distinct views of this message:
24493/// * indication of kernel buffer data loss (kernel_records_lost set)
24494/// * indication of skipped samples (sample_skipped_reason set)
24495/// * notable event in the sampling implementation (producer_event set)
24496/// * normal sample (timebase_count set, typically also callstack_iid)
24497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24498pub struct PerfSample {
24499    #[prost(uint32, optional, tag = "1")]
24500    pub cpu: ::core::option::Option<u32>,
24501    #[prost(uint32, optional, tag = "2")]
24502    pub pid: ::core::option::Option<u32>,
24503    #[prost(uint32, optional, tag = "3")]
24504    pub tid: ::core::option::Option<u32>,
24505    /// Execution state that the process was sampled at.
24506    #[prost(enumeration = "profiling::CpuMode", optional, tag = "5")]
24507    pub cpu_mode: ::core::option::Option<i32>,
24508    /// Value of the timebase counter (since the event was configured, no deltas).
24509    #[prost(uint64, optional, tag = "6")]
24510    pub timebase_count: ::core::option::Option<u64>,
24511    /// Value of the followers counter (since the event was configured, no deltas).
24512    #[prost(uint64, repeated, packed = "false", tag = "7")]
24513    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
24514    /// Unwound callstack. Might be partial, in which case a synthetic "error"
24515    /// frame is appended, and |unwind_error| is set accordingly.
24516    #[prost(uint64, optional, tag = "4")]
24517    pub callstack_iid: ::core::option::Option<u64>,
24518    /// If set, indicates that this message is not a sample, but rather an
24519    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
24520    /// loss occurs when the kernel has insufficient ring buffer capacity to write
24521    /// a record (which gets discarded). A record in this context is an individual
24522    /// ring buffer entry, and counts more than just sample records.
24523    ///
24524    /// The |timestamp| of the packet corresponds to the time that the producer
24525    /// wrote the packet for trace-sorting purposes alone, and should not be
24526    /// interpreted relative to the sample timestamps. This field is sufficient to
24527    /// detect that *some* kernel data loss happened within the trace, but not the
24528    /// specific time bounds of that loss (which would require tracking precedessor
24529    /// & successor timestamps, which is not deemed necessary at the moment).
24530    #[prost(uint64, optional, tag = "17")]
24531    pub kernel_records_lost: ::core::option::Option<u64>,
24532    #[prost(message, optional, tag = "19")]
24533    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
24534    /// If set, stack unwinding was incomplete due to an error.
24535    /// Unset values should be treated as UNWIND_ERROR_NONE.
24536    #[prost(oneof = "perf_sample::OptionalUnwindError", tags = "16")]
24537    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
24538    #[prost(oneof = "perf_sample::OptionalSampleSkippedReason", tags = "18")]
24539    pub optional_sample_skipped_reason: ::core::option::Option<
24540        perf_sample::OptionalSampleSkippedReason,
24541    >,
24542}
24543/// Nested message and enum types in `PerfSample`.
24544pub mod perf_sample {
24545    /// A notable event within the sampling implementation.
24546    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24547    pub struct ProducerEvent {
24548        #[prost(oneof = "producer_event::OptionalSourceStopReason", tags = "1")]
24549        pub optional_source_stop_reason: ::core::option::Option<
24550            producer_event::OptionalSourceStopReason,
24551        >,
24552    }
24553    /// Nested message and enum types in `ProducerEvent`.
24554    pub mod producer_event {
24555        #[derive(
24556            Clone,
24557            Copy,
24558            Debug,
24559            PartialEq,
24560            Eq,
24561            Hash,
24562            PartialOrd,
24563            Ord,
24564            ::prost::Enumeration
24565        )]
24566        #[repr(i32)]
24567        pub enum DataSourceStopReason {
24568            ProfilerStopUnknown = 0,
24569            ProfilerStopGuardrail = 1,
24570        }
24571        impl DataSourceStopReason {
24572            /// String value of the enum field names used in the ProtoBuf definition.
24573            ///
24574            /// The values are not transformed in any way and thus are considered stable
24575            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24576            pub fn as_str_name(&self) -> &'static str {
24577                match self {
24578                    Self::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
24579                    Self::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
24580                }
24581            }
24582            /// Creates an enum from field names used in the ProtoBuf definition.
24583            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24584                match value {
24585                    "PROFILER_STOP_UNKNOWN" => Some(Self::ProfilerStopUnknown),
24586                    "PROFILER_STOP_GUARDRAIL" => Some(Self::ProfilerStopGuardrail),
24587                    _ => None,
24588                }
24589            }
24590        }
24591        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24592        pub enum OptionalSourceStopReason {
24593            #[prost(enumeration = "DataSourceStopReason", tag = "1")]
24594            SourceStopReason(i32),
24595        }
24596    }
24597    /// If set, indicates that the profiler encountered a sample that was relevant,
24598    /// but was skipped.
24599    #[derive(
24600        Clone,
24601        Copy,
24602        Debug,
24603        PartialEq,
24604        Eq,
24605        Hash,
24606        PartialOrd,
24607        Ord,
24608        ::prost::Enumeration
24609    )]
24610    #[repr(i32)]
24611    pub enum SampleSkipReason {
24612        ProfilerSkipUnknown = 0,
24613        ProfilerSkipReadStage = 1,
24614        ProfilerSkipUnwindStage = 2,
24615        ProfilerSkipUnwindEnqueue = 3,
24616        ProfilerSkipNotInScope = 4,
24617    }
24618    impl SampleSkipReason {
24619        /// String value of the enum field names used in the ProtoBuf definition.
24620        ///
24621        /// The values are not transformed in any way and thus are considered stable
24622        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24623        pub fn as_str_name(&self) -> &'static str {
24624            match self {
24625                Self::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
24626                Self::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
24627                Self::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
24628                Self::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
24629                Self::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
24630            }
24631        }
24632        /// Creates an enum from field names used in the ProtoBuf definition.
24633        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24634            match value {
24635                "PROFILER_SKIP_UNKNOWN" => Some(Self::ProfilerSkipUnknown),
24636                "PROFILER_SKIP_READ_STAGE" => Some(Self::ProfilerSkipReadStage),
24637                "PROFILER_SKIP_UNWIND_STAGE" => Some(Self::ProfilerSkipUnwindStage),
24638                "PROFILER_SKIP_UNWIND_ENQUEUE" => Some(Self::ProfilerSkipUnwindEnqueue),
24639                "PROFILER_SKIP_NOT_IN_SCOPE" => Some(Self::ProfilerSkipNotInScope),
24640                _ => None,
24641            }
24642        }
24643    }
24644    /// If set, stack unwinding was incomplete due to an error.
24645    /// Unset values should be treated as UNWIND_ERROR_NONE.
24646    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24647    pub enum OptionalUnwindError {
24648        #[prost(enumeration = "super::profiling::StackUnwindError", tag = "16")]
24649        UnwindError(i32),
24650    }
24651    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24652    pub enum OptionalSampleSkippedReason {
24653        #[prost(enumeration = "SampleSkipReason", tag = "18")]
24654        SampleSkippedReason(i32),
24655    }
24656}
24657/// Submessage for TracePacketDefaults.
24658#[derive(Clone, PartialEq, ::prost::Message)]
24659pub struct PerfSampleDefaults {
24660    /// The sampling timebase. Might not be identical to the data source config if
24661    /// the implementation decided to default/override some parameters.
24662    #[prost(message, optional, tag = "1")]
24663    pub timebase: ::core::option::Option<perf_events::Timebase>,
24664    /// Description of followers event
24665    #[prost(message, repeated, tag = "4")]
24666    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
24667    /// If the config requested process sharding, report back the count and which
24668    /// of those bins was selected. Never changes for the duration of a trace.
24669    #[prost(uint32, optional, tag = "2")]
24670    pub process_shard_count: ::core::option::Option<u32>,
24671    #[prost(uint32, optional, tag = "3")]
24672    pub chosen_process_shard: ::core::option::Option<u32>,
24673}
24674#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24675pub struct SmapsEntry {
24676    #[prost(string, optional, tag = "1")]
24677    pub path: ::core::option::Option<::prost::alloc::string::String>,
24678    #[prost(uint64, optional, tag = "2")]
24679    pub size_kb: ::core::option::Option<u64>,
24680    #[prost(uint64, optional, tag = "3")]
24681    pub private_dirty_kb: ::core::option::Option<u64>,
24682    #[prost(uint64, optional, tag = "4")]
24683    pub swap_kb: ::core::option::Option<u64>,
24684    /// for field upload (instead of path).
24685    #[prost(string, optional, tag = "5")]
24686    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
24687    /// Fields below added and used only for Chromium memory infra, see
24688    /// crbug.com/1098746.
24689    #[prost(uint64, optional, tag = "6")]
24690    pub start_address: ::core::option::Option<u64>,
24691    #[prost(uint64, optional, tag = "7")]
24692    pub module_timestamp: ::core::option::Option<u64>,
24693    #[prost(string, optional, tag = "8")]
24694    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
24695    #[prost(string, optional, tag = "9")]
24696    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
24697    #[prost(uint32, optional, tag = "10")]
24698    pub protection_flags: ::core::option::Option<u32>,
24699    #[prost(uint64, optional, tag = "11")]
24700    pub private_clean_resident_kb: ::core::option::Option<u64>,
24701    #[prost(uint64, optional, tag = "12")]
24702    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
24703    #[prost(uint64, optional, tag = "13")]
24704    pub shared_clean_resident_kb: ::core::option::Option<u64>,
24705    #[prost(uint64, optional, tag = "14")]
24706    pub locked_kb: ::core::option::Option<u64>,
24707    #[prost(uint64, optional, tag = "15")]
24708    pub proportional_resident_kb: ::core::option::Option<u64>,
24709}
24710/// Structure-of-arrays style smaps packet of a single process. All packed
24711/// repeated fields, if set, must have the same length.
24712#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24713pub struct PackedSmaps {
24714    /// Table of path names. Notes:
24715    /// * first element is the empty string, serialised explicitly.
24716    /// * the table might contain duplicates.
24717    #[prost(string, repeated, tag = "1")]
24718    pub string_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24719    /// Interned file paths as an index into |string_table|.
24720    /// Note: the "(deleted)" suffix is kept as part of the string_table entry, and
24721    /// is to be handled during trace import stage.
24722    /// Written only if config.unaggregated == true. Otherwise the string_table is
24723    /// exactly the ordered names of the aggregated mappings.
24724    #[prost(uint32, repeated, tag = "2")]
24725    pub name_id: ::prost::alloc::vec::Vec<u32>,
24726    /// How many mappings were merged by name, summing the values below.
24727    /// Written only if config.unaggregated == false.
24728    #[prost(uint32, repeated, tag = "3")]
24729    pub aggregate_count: ::prost::alloc::vec::Vec<u32>,
24730    #[prost(uint64, repeated, tag = "4")]
24731    pub size_kb: ::prost::alloc::vec::Vec<u64>,
24732    #[prost(uint64, repeated, tag = "5")]
24733    pub rss_kb: ::prost::alloc::vec::Vec<u64>,
24734    #[prost(uint64, repeated, tag = "6")]
24735    pub anonymous_kb: ::prost::alloc::vec::Vec<u64>,
24736    #[prost(uint64, repeated, tag = "7")]
24737    pub swap_kb: ::prost::alloc::vec::Vec<u64>,
24738    #[prost(uint64, repeated, tag = "8")]
24739    pub shared_clean_kb: ::prost::alloc::vec::Vec<u64>,
24740    #[prost(uint64, repeated, tag = "9")]
24741    pub shared_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24742    #[prost(uint64, repeated, tag = "10")]
24743    pub private_clean_kb: ::prost::alloc::vec::Vec<u64>,
24744    #[prost(uint64, repeated, tag = "11")]
24745    pub private_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24746    #[prost(uint64, repeated, tag = "12")]
24747    pub locked_kb: ::prost::alloc::vec::Vec<u64>,
24748    #[prost(uint64, repeated, tag = "13")]
24749    pub pss_kb: ::prost::alloc::vec::Vec<u64>,
24750    #[prost(uint64, repeated, tag = "14")]
24751    pub pss_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24752    #[prost(uint64, repeated, tag = "15")]
24753    pub swap_pss_kb: ::prost::alloc::vec::Vec<u64>,
24754}
24755#[derive(Clone, PartialEq, ::prost::Message)]
24756pub struct SmapsPacket {
24757    #[prost(uint32, optional, tag = "1")]
24758    pub pid: ::core::option::Option<u32>,
24759    #[prost(message, repeated, tag = "2")]
24760    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
24761    #[prost(message, optional, tag = "3")]
24762    pub packed_entries: ::core::option::Option<PackedSmaps>,
24763    #[prost(enumeration = "smaps_packet::RecordingType", optional, tag = "4")]
24764    pub recording_type: ::core::option::Option<i32>,
24765}
24766/// Nested message and enum types in `SmapsPacket`.
24767pub mod smaps_packet {
24768    /// Records how the snapshot was generated, as the message is shared by
24769    /// multiple smaps writers.
24770    /// If populating |packed_entries|, set explicitly to RECORDING_TYPE_STANDALONE
24771    /// as otherwise the trace importer might transform the data.
24772    #[derive(
24773        Clone,
24774        Copy,
24775        Debug,
24776        PartialEq,
24777        Eq,
24778        Hash,
24779        PartialOrd,
24780        Ord,
24781        ::prost::Enumeration
24782    )]
24783    #[repr(i32)]
24784    pub enum RecordingType {
24785        Unknown = 0,
24786        /// Normal recording.
24787        Standalone = 1,
24788        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
24789        /// heap dump. Recording is done inside of a forked child process, which
24790        /// means private/shared and pss fields are misleading as there is
24791        /// copy-on-write page sharing with the forked child.
24792        ArtHprofPostfork = 2,
24793        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
24794        /// heap dump, but with the original smaps calculated before forking in the
24795        /// plugin.
24796        ArtHprofPrefork = 3,
24797    }
24798    impl RecordingType {
24799        /// String value of the enum field names used in the ProtoBuf definition.
24800        ///
24801        /// The values are not transformed in any way and thus are considered stable
24802        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24803        pub fn as_str_name(&self) -> &'static str {
24804            match self {
24805                Self::Unknown => "RECORDING_TYPE_UNKNOWN",
24806                Self::Standalone => "RECORDING_TYPE_STANDALONE",
24807                Self::ArtHprofPostfork => "RECORDING_TYPE_ART_HPROF_POSTFORK",
24808                Self::ArtHprofPrefork => "RECORDING_TYPE_ART_HPROF_PREFORK",
24809            }
24810        }
24811        /// Creates an enum from field names used in the ProtoBuf definition.
24812        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24813            match value {
24814                "RECORDING_TYPE_UNKNOWN" => Some(Self::Unknown),
24815                "RECORDING_TYPE_STANDALONE" => Some(Self::Standalone),
24816                "RECORDING_TYPE_ART_HPROF_POSTFORK" => Some(Self::ArtHprofPostfork),
24817                "RECORDING_TYPE_ART_HPROF_PREFORK" => Some(Self::ArtHprofPrefork),
24818                _ => None,
24819            }
24820        }
24821    }
24822}
24823/// Per-process periodically sampled stats. These samples are wrapped in a
24824/// dedicated message (as opposite to be fields in process_tree.proto) because
24825/// they are dumped at a different rate than cmdline and thread list.
24826/// Note: not all of these stats will be present in every ProcessStats message
24827/// and sometimes processes may be missing. This is because counters are
24828/// cached to reduce emission of counters which do not change.
24829#[derive(Clone, PartialEq, ::prost::Message)]
24830pub struct ProcessStats {
24831    #[prost(message, repeated, tag = "1")]
24832    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
24833    /// The time at which we finish collecting this batch of samples;
24834    /// the top-level packet timestamp is the time at which
24835    /// we begin collection.
24836    #[prost(uint64, optional, tag = "2")]
24837    pub collection_end_timestamp: ::core::option::Option<u64>,
24838}
24839/// Nested message and enum types in `ProcessStats`.
24840pub mod process_stats {
24841    /// Per-thread periodically sampled stats.
24842    /// Note: not all of these stats will be present in every message. See the note
24843    /// for ProcessStats.
24844    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24845    pub struct Thread {
24846        #[prost(int32, optional, tag = "1")]
24847        pub tid: ::core::option::Option<i32>,
24848    }
24849    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24850    pub struct FdInfo {
24851        #[prost(uint64, optional, tag = "1")]
24852        pub fd: ::core::option::Option<u64>,
24853        #[prost(string, optional, tag = "2")]
24854        pub path: ::core::option::Option<::prost::alloc::string::String>,
24855    }
24856    /// When adding a new field remember to update kProcMemCounterSize in
24857    /// the trace processor.
24858    #[derive(Clone, PartialEq, ::prost::Message)]
24859    pub struct Process {
24860        #[prost(int32, optional, tag = "1")]
24861        pub pid: ::core::option::Option<i32>,
24862        #[prost(message, repeated, tag = "11")]
24863        pub threads: ::prost::alloc::vec::Vec<Thread>,
24864        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
24865        #[prost(uint64, optional, tag = "2")]
24866        pub vm_size_kb: ::core::option::Option<u64>,
24867        #[prost(uint64, optional, tag = "3")]
24868        pub vm_rss_kb: ::core::option::Option<u64>,
24869        #[prost(uint64, optional, tag = "4")]
24870        pub rss_anon_kb: ::core::option::Option<u64>,
24871        #[prost(uint64, optional, tag = "5")]
24872        pub rss_file_kb: ::core::option::Option<u64>,
24873        #[prost(uint64, optional, tag = "6")]
24874        pub rss_shmem_kb: ::core::option::Option<u64>,
24875        #[prost(uint64, optional, tag = "7")]
24876        pub vm_swap_kb: ::core::option::Option<u64>,
24877        #[prost(uint64, optional, tag = "8")]
24878        pub vm_locked_kb: ::core::option::Option<u64>,
24879        #[prost(uint64, optional, tag = "9")]
24880        pub vm_hwm_kb: ::core::option::Option<u64>,
24881        #[prost(int64, optional, tag = "10")]
24882        pub oom_score_adj: ::core::option::Option<i64>,
24883        /// The peak resident set size is resettable in newer Posix kernels.
24884        /// This field specifies if reset is supported and if the writer had reset
24885        /// the peaks after each process stats recording.
24886        #[prost(bool, optional, tag = "12")]
24887        pub is_peak_rss_resettable: ::core::option::Option<bool>,
24888        /// Private, shared and swap footprint of the process as measured by
24889        /// Chrome. To know more about these metrics refer to:
24890        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
24891        #[prost(uint32, optional, tag = "13")]
24892        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
24893        #[prost(uint32, optional, tag = "14")]
24894        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
24895        #[prost(message, repeated, tag = "15")]
24896        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
24897        /// These fields are set only when scan_smaps_rollup=true
24898        #[prost(uint64, optional, tag = "16")]
24899        pub smr_rss_kb: ::core::option::Option<u64>,
24900        #[prost(uint64, optional, tag = "17")]
24901        pub smr_pss_kb: ::core::option::Option<u64>,
24902        #[prost(uint64, optional, tag = "18")]
24903        pub smr_pss_anon_kb: ::core::option::Option<u64>,
24904        #[prost(uint64, optional, tag = "19")]
24905        pub smr_pss_file_kb: ::core::option::Option<u64>,
24906        #[prost(uint64, optional, tag = "20")]
24907        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
24908        #[prost(uint64, optional, tag = "23")]
24909        pub smr_swap_pss_kb: ::core::option::Option<u64>,
24910        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
24911        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24912        /// Resolution of "clock ticks", usually 10ms.
24913        #[prost(uint64, optional, tag = "21")]
24914        pub runtime_user_mode: ::core::option::Option<u64>,
24915        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
24916        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24917        /// Resolution of "clock ticks", usually 10ms.
24918        #[prost(uint64, optional, tag = "22")]
24919        pub runtime_kernel_mode: ::core::option::Option<u64>,
24920        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
24921        #[prost(uint64, optional, tag = "24")]
24922        pub dmabuf_rss_kb: ::core::option::Option<u64>,
24923    }
24924}
24925/// Metadata about the processes and threads in the trace.
24926/// Note: this proto was designed to be filled in by traced_probes and should
24927/// only be populated with accurate information coming from the system. Other
24928/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
24929/// in TrackDescriptor.
24930#[derive(Clone, PartialEq, ::prost::Message)]
24931pub struct ProcessTree {
24932    /// List of processes and threads in the client. These lists are incremental
24933    /// and not exhaustive. A process and its threads might show up separately in
24934    /// different ProcessTree messages. A thread might event not show up at all, if
24935    /// no sched_switch activity was detected, for instance:
24936    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{pid: 11, tgid: 10}\] }
24937    /// #1 { threads: \[{pid: 12, tgid: 10}\] }
24938    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{pid: 13, tgid: 10}\] }
24939    #[prost(message, repeated, tag = "1")]
24940    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
24941    #[prost(message, repeated, tag = "2")]
24942    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
24943    /// The time at which we finish collecting this process tree;
24944    /// the top-level packet timestamp is the time at which
24945    /// we begin collection.
24946    #[prost(uint64, optional, tag = "3")]
24947    pub collection_end_timestamp: ::core::option::Option<u64>,
24948}
24949/// Nested message and enum types in `ProcessTree`.
24950pub mod process_tree {
24951    /// Representation of a thread.
24952    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24953    pub struct Thread {
24954        /// The thread ID (as per gettid()) in the root PID namespace.
24955        #[prost(int32, optional, tag = "1")]
24956        pub tid: ::core::option::Option<i32>,
24957        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
24958        #[prost(int32, optional, tag = "3")]
24959        pub tgid: ::core::option::Option<i32>,
24960        /// The name of the thread.
24961        #[prost(string, optional, tag = "2")]
24962        pub name: ::core::option::Option<::prost::alloc::string::String>,
24963        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
24964        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
24965        /// level thread ID) omitted.
24966        #[prost(int32, repeated, packed = "false", tag = "4")]
24967        pub nstid: ::prost::alloc::vec::Vec<i32>,
24968    }
24969    /// Representation of a process.
24970    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24971    pub struct Process {
24972        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
24973        /// PID namespace.
24974        #[prost(int32, optional, tag = "1")]
24975        pub pid: ::core::option::Option<i32>,
24976        /// The parent process ID, as per getppid().
24977        #[prost(int32, optional, tag = "2")]
24978        pub ppid: ::core::option::Option<i32>,
24979        /// The command line for the process, as per /proc/pid/cmdline, broken up on
24980        /// NUL bytes.
24981        /// If it is a kernel thread or a zombie, there will only be one cmdline
24982        /// field and it will contain /proc/pid/comm.
24983        #[prost(string, repeated, tag = "3")]
24984        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24985        /// If true, the |cmdline| field was filled with the main thread's "comm"
24986        /// field instead.
24987        /// Introduced in: perfetto v50.
24988        #[prost(bool, optional, tag = "9")]
24989        pub cmdline_is_comm: ::core::option::Option<bool>,
24990        /// The uid for the process, as per /proc/pid/status.
24991        #[prost(int32, optional, tag = "5")]
24992        pub uid: ::core::option::Option<i32>,
24993        /// The non-root-level process IDs if the process runs in a PID namespace.
24994        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
24995        /// (root-level process ID) omitted.
24996        #[prost(int32, repeated, packed = "false", tag = "6")]
24997        pub nspid: ::prost::alloc::vec::Vec<i32>,
24998        /// Timestamp of when the process was created, in nanoseconds
24999        /// from boot. Parsed from starttime in /proc/pid/stat.
25000        /// Recorded if record_process_age config option is set.
25001        /// Resolution of "clock ticks", usually 10ms.
25002        #[prost(uint64, optional, tag = "7")]
25003        pub process_start_from_boot: ::core::option::Option<u64>,
25004        /// If true, the process is a kernel thread.
25005        /// Set only on linux v6.4+. For traces from older devices, it is possible to
25006        /// infer most kthreads by checking that they're a descendant of kthreadd
25007        /// (pid=2), or are the idle process (pid=0).
25008        /// Introduced in: perfetto v50.
25009        #[prost(bool, optional, tag = "8")]
25010        pub is_kthread: ::core::option::Option<bool>,
25011    }
25012}
25013/// Records the parameters for aligning clock readings between machines.
25014#[derive(Clone, PartialEq, ::prost::Message)]
25015pub struct RemoteClockSync {
25016    #[prost(message, repeated, tag = "1")]
25017    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
25018}
25019/// Nested message and enum types in `RemoteClockSync`.
25020pub mod remote_clock_sync {
25021    /// Synchronized clock snapshots taken on both sides of the relay port (the
25022    /// tracing service and the relay service). A round of clock synchronization
25023    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
25024    /// snapshot -> client snapshot -> host snapshot.
25025    #[derive(Clone, PartialEq, ::prost::Message)]
25026    pub struct SyncedClocks {
25027        #[prost(message, optional, tag = "2")]
25028        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
25029        #[prost(message, optional, tag = "3")]
25030        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
25031    }
25032}
25033/// Deliberate empty message. See comment on StatsdAtom#atom below.
25034#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25035pub struct Atom {}
25036/// One or more statsd atoms. This must continue to match:
25037/// perfetto/protos/third_party/statsd/shell_data.proto
25038/// So that we can efficiently add data from statsd directly to the
25039/// trace.
25040#[derive(Clone, PartialEq, ::prost::Message)]
25041pub struct StatsdAtom {
25042    /// Atom should be filled with an Atom proto from:
25043    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
25044    /// We don't reference Atom directly here since we don't want to import
25045    /// Atom.proto and all its transitive dependencies into Perfetto.
25046    /// atom and timestamp_nanos have the same cardinality
25047    #[prost(message, repeated, tag = "1")]
25048    pub atom: ::prost::alloc::vec::Vec<Atom>,
25049    #[prost(int64, repeated, packed = "false", tag = "2")]
25050    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
25051}
25052/// Various Linux system stat counters from /proc.
25053/// The fields in this message can be reported at different rates and with
25054/// different granularity. See sys_stats_config.proto.
25055#[derive(Clone, PartialEq, ::prost::Message)]
25056pub struct SysStats {
25057    #[prost(message, repeated, tag = "1")]
25058    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
25059    #[prost(message, repeated, tag = "2")]
25060    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
25061    /// One entry per cpu.
25062    #[prost(message, repeated, tag = "3")]
25063    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
25064    /// Num processes forked since boot.
25065    /// Populated only if FORK_COUNT in config.stat_counters.
25066    #[prost(uint64, optional, tag = "4")]
25067    pub num_forks: ::core::option::Option<u64>,
25068    /// Number of interrupts, broken by IRQ number.
25069    /// Populated only if IRQ_COUNTS in config.stat_counters.
25070    ///
25071    /// Total num of irqs serviced since boot.
25072    #[prost(uint64, optional, tag = "5")]
25073    pub num_irq_total: ::core::option::Option<u64>,
25074    #[prost(message, repeated, tag = "6")]
25075    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
25076    /// Number of softirqs, broken by softirq number.
25077    /// Populated only if SOFTIRQ_COUNTS in config.stat_counters.
25078    ///
25079    /// Total num of softirqs since boot.
25080    #[prost(uint64, optional, tag = "7")]
25081    pub num_softirq_total: ::core::option::Option<u64>,
25082    /// Per-softirq count.
25083    #[prost(message, repeated, tag = "8")]
25084    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
25085    /// The time at which we finish collecting this set of samples;
25086    /// the top-level packet timestamp is the time at which
25087    /// we begin collection.
25088    #[prost(uint64, optional, tag = "9")]
25089    pub collection_end_timestamp: ::core::option::Option<u64>,
25090    /// One entry per device.
25091    #[prost(message, repeated, tag = "10")]
25092    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
25093    /// Cpu current frequency from
25094    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
25095    /// One entry per cpu. Report 0 for offline cpu
25096    #[prost(uint32, repeated, packed = "false", tag = "11")]
25097    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
25098    /// One entry per each node's zones.
25099    #[prost(message, repeated, tag = "12")]
25100    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
25101    /// One entry per disk device.
25102    #[prost(message, repeated, tag = "13")]
25103    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
25104    /// One entry per PsiResource type.
25105    #[prost(message, repeated, tag = "14")]
25106    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
25107    #[prost(message, repeated, tag = "15")]
25108    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
25109    #[prost(message, repeated, tag = "16")]
25110    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
25111    /// Read GPU frequency info on Intel/AMD devices.
25112    #[prost(uint64, repeated, packed = "false", tag = "17")]
25113    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
25114    #[prost(message, repeated, tag = "18")]
25115    pub slab_info: ::prost::alloc::vec::Vec<sys_stats::SlabInfo>,
25116}
25117/// Nested message and enum types in `SysStats`.
25118pub mod sys_stats {
25119    /// Counters from /proc/meminfo. Values are in KB.
25120    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25121    pub struct MeminfoValue {
25122        #[prost(enumeration = "super::MeminfoCounters", optional, tag = "1")]
25123        pub key: ::core::option::Option<i32>,
25124        #[prost(uint64, optional, tag = "2")]
25125        pub value: ::core::option::Option<u64>,
25126    }
25127    /// Counter from /proc/vmstat. Units are often pages, not KB.
25128    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25129    pub struct VmstatValue {
25130        #[prost(enumeration = "super::VmstatCounters", optional, tag = "1")]
25131        pub key: ::core::option::Option<i32>,
25132        #[prost(uint64, optional, tag = "2")]
25133        pub value: ::core::option::Option<u64>,
25134    }
25135    /// Times in each mode, since boot. Unit: nanoseconds.
25136    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25137    pub struct CpuTimes {
25138        #[prost(uint32, optional, tag = "1")]
25139        pub cpu_id: ::core::option::Option<u32>,
25140        /// Time spent in user mode.
25141        #[prost(uint64, optional, tag = "2")]
25142        pub user_ns: ::core::option::Option<u64>,
25143        /// Time spent in user mode (low prio).
25144        #[prost(uint64, optional, tag = "3")]
25145        pub user_nice_ns: ::core::option::Option<u64>,
25146        /// Time spent in system mode.
25147        #[prost(uint64, optional, tag = "4")]
25148        pub system_mode_ns: ::core::option::Option<u64>,
25149        /// Time spent in the idle task.
25150        #[prost(uint64, optional, tag = "5")]
25151        pub idle_ns: ::core::option::Option<u64>,
25152        /// Time spent waiting for I/O.
25153        #[prost(uint64, optional, tag = "6")]
25154        pub io_wait_ns: ::core::option::Option<u64>,
25155        /// Time spent servicing interrupts.
25156        #[prost(uint64, optional, tag = "7")]
25157        pub irq_ns: ::core::option::Option<u64>,
25158        /// Time spent servicing softirqs.
25159        #[prost(uint64, optional, tag = "8")]
25160        pub softirq_ns: ::core::option::Option<u64>,
25161        /// Time spent executing something else on host than this guest.
25162        #[prost(uint64, optional, tag = "9")]
25163        pub steal_ns: ::core::option::Option<u64>,
25164    }
25165    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25166    pub struct InterruptCount {
25167        #[prost(int32, optional, tag = "1")]
25168        pub irq: ::core::option::Option<i32>,
25169        #[prost(uint64, optional, tag = "2")]
25170        pub count: ::core::option::Option<u64>,
25171    }
25172    /// Frequencies for /sys/class/devfreq/ entries in kHz.
25173    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25174    pub struct DevfreqValue {
25175        #[prost(string, optional, tag = "1")]
25176        pub key: ::core::option::Option<::prost::alloc::string::String>,
25177        #[prost(uint64, optional, tag = "2")]
25178        pub value: ::core::option::Option<u64>,
25179    }
25180    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25181    pub struct BuddyInfo {
25182        #[prost(string, optional, tag = "1")]
25183        pub node: ::core::option::Option<::prost::alloc::string::String>,
25184        #[prost(string, optional, tag = "2")]
25185        pub zone: ::core::option::Option<::prost::alloc::string::String>,
25186        #[prost(uint32, repeated, packed = "false", tag = "3")]
25187        pub order_pages: ::prost::alloc::vec::Vec<u32>,
25188    }
25189    /// Counters from /proc/diskstats.
25190    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25191    pub struct DiskStat {
25192        #[prost(string, optional, tag = "1")]
25193        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
25194        #[prost(uint64, optional, tag = "2")]
25195        pub read_sectors: ::core::option::Option<u64>,
25196        #[prost(uint64, optional, tag = "3")]
25197        pub read_time_ms: ::core::option::Option<u64>,
25198        #[prost(uint64, optional, tag = "4")]
25199        pub write_sectors: ::core::option::Option<u64>,
25200        #[prost(uint64, optional, tag = "5")]
25201        pub write_time_ms: ::core::option::Option<u64>,
25202        #[prost(uint64, optional, tag = "6")]
25203        pub discard_sectors: ::core::option::Option<u64>,
25204        #[prost(uint64, optional, tag = "7")]
25205        pub discard_time_ms: ::core::option::Option<u64>,
25206        #[prost(uint64, optional, tag = "8")]
25207        pub flush_count: ::core::option::Option<u64>,
25208        #[prost(uint64, optional, tag = "9")]
25209        pub flush_time_ms: ::core::option::Option<u64>,
25210    }
25211    /// Reading from /proc/pressure/*.
25212    /// Note that /proc/pressure/* exposes historical average utilization values
25213    /// (as a %), but we don't yet sample those. They could easily be added as
25214    /// additional fields should the total stall time readings be insufficient.
25215    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25216    pub struct PsiSample {
25217        #[prost(enumeration = "psi_sample::PsiResource", optional, tag = "1")]
25218        pub resource: ::core::option::Option<i32>,
25219        /// Total absolute stall time (in nanos) for a given resource.
25220        /// While PSI readings are in micros, we store in nanos for consistency with
25221        /// most other time-based counters.
25222        #[prost(uint64, optional, tag = "2")]
25223        pub total_ns: ::core::option::Option<u64>,
25224    }
25225    /// Nested message and enum types in `PsiSample`.
25226    pub mod psi_sample {
25227        /// Type of resource that may have exhibited pressure stalls.
25228        ///     * _SOME indicates some resource tasks stalled.
25229        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
25230        #[derive(
25231            Clone,
25232            Copy,
25233            Debug,
25234            PartialEq,
25235            Eq,
25236            Hash,
25237            PartialOrd,
25238            Ord,
25239            ::prost::Enumeration
25240        )]
25241        #[repr(i32)]
25242        pub enum PsiResource {
25243            Unspecified = 0,
25244            CpuSome = 1,
25245            CpuFull = 2,
25246            IoSome = 3,
25247            IoFull = 4,
25248            MemorySome = 5,
25249            MemoryFull = 6,
25250        }
25251        impl PsiResource {
25252            /// String value of the enum field names used in the ProtoBuf definition.
25253            ///
25254            /// The values are not transformed in any way and thus are considered stable
25255            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25256            pub fn as_str_name(&self) -> &'static str {
25257                match self {
25258                    Self::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
25259                    Self::CpuSome => "PSI_RESOURCE_CPU_SOME",
25260                    Self::CpuFull => "PSI_RESOURCE_CPU_FULL",
25261                    Self::IoSome => "PSI_RESOURCE_IO_SOME",
25262                    Self::IoFull => "PSI_RESOURCE_IO_FULL",
25263                    Self::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
25264                    Self::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
25265                }
25266            }
25267            /// Creates an enum from field names used in the ProtoBuf definition.
25268            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25269                match value {
25270                    "PSI_RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
25271                    "PSI_RESOURCE_CPU_SOME" => Some(Self::CpuSome),
25272                    "PSI_RESOURCE_CPU_FULL" => Some(Self::CpuFull),
25273                    "PSI_RESOURCE_IO_SOME" => Some(Self::IoSome),
25274                    "PSI_RESOURCE_IO_FULL" => Some(Self::IoFull),
25275                    "PSI_RESOURCE_MEMORY_SOME" => Some(Self::MemorySome),
25276                    "PSI_RESOURCE_MEMORY_FULL" => Some(Self::MemoryFull),
25277                    _ => None,
25278                }
25279            }
25280        }
25281    }
25282    /// Reading from /sys/class/thermal/*.
25283    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25284    pub struct ThermalZone {
25285        #[prost(string, optional, tag = "1")]
25286        pub name: ::core::option::Option<::prost::alloc::string::String>,
25287        #[prost(uint64, optional, tag = "2")]
25288        pub temp: ::core::option::Option<u64>,
25289        #[prost(string, optional, tag = "3")]
25290        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
25291    }
25292    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
25293    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25294    pub struct CpuIdleStateEntry {
25295        /// Name of the idle state, e.g. C1-C10
25296        #[prost(string, optional, tag = "1")]
25297        pub state: ::core::option::Option<::prost::alloc::string::String>,
25298        #[prost(uint64, optional, tag = "2")]
25299        pub duration_us: ::core::option::Option<u64>,
25300    }
25301    #[derive(Clone, PartialEq, ::prost::Message)]
25302    pub struct CpuIdleState {
25303        #[prost(uint32, optional, tag = "1")]
25304        pub cpu_id: ::core::option::Option<u32>,
25305        #[prost(message, repeated, tag = "2")]
25306        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
25307    }
25308    /// Reading from /proc/slabinfo.
25309    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25310    pub struct SlabInfo {
25311        #[prost(string, optional, tag = "1")]
25312        pub name: ::core::option::Option<::prost::alloc::string::String>,
25313        #[prost(uint32, optional, tag = "2")]
25314        pub pages_per_slab: ::core::option::Option<u32>,
25315        #[prost(uint32, optional, tag = "3")]
25316        pub num_slabs: ::core::option::Option<u32>,
25317    }
25318}
25319/// Information about CPUs from procfs and sysfs.
25320#[derive(Clone, PartialEq, ::prost::Message)]
25321pub struct CpuInfo {
25322    /// Describes available CPUs, one entry per CPU.
25323    #[prost(message, repeated, tag = "1")]
25324    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
25325}
25326/// Nested message and enum types in `CpuInfo`.
25327pub mod cpu_info {
25328    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25329    pub struct ArmCpuIdentifier {
25330        /// Implementer code
25331        #[prost(uint32, optional, tag = "1")]
25332        pub implementer: ::core::option::Option<u32>,
25333        /// Architecture code
25334        #[prost(uint32, optional, tag = "2")]
25335        pub architecture: ::core::option::Option<u32>,
25336        /// CPU variant
25337        #[prost(uint32, optional, tag = "3")]
25338        pub variant: ::core::option::Option<u32>,
25339        /// CPU part
25340        #[prost(uint32, optional, tag = "4")]
25341        pub part: ::core::option::Option<u32>,
25342        /// CPU revision
25343        #[prost(uint32, optional, tag = "5")]
25344        pub revision: ::core::option::Option<u32>,
25345    }
25346    /// Information about a single CPU.
25347    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25348    pub struct Cpu {
25349        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
25350        /// Example: "AArch64 Processor rev 12 (aarch64)"
25351        #[prost(string, optional, tag = "1")]
25352        pub processor: ::core::option::Option<::prost::alloc::string::String>,
25353        /// Frequencies from
25354        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
25355        /// where X is the index of this CPU.
25356        #[prost(uint32, repeated, packed = "false", tag = "2")]
25357        pub frequencies: ::prost::alloc::vec::Vec<u32>,
25358        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
25359        /// the index of this CPU.
25360        #[prost(uint32, optional, tag = "3")]
25361        pub capacity: ::core::option::Option<u32>,
25362        /// Features is a bitmap containing a bit set for each feature defined in
25363        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
25364        /// index.
25365        #[prost(uint64, optional, tag = "5")]
25366        pub features: ::core::option::Option<u64>,
25367        /// Code to identify the CPU
25368        #[prost(oneof = "cpu::Identifier", tags = "4")]
25369        pub identifier: ::core::option::Option<cpu::Identifier>,
25370    }
25371    /// Nested message and enum types in `Cpu`.
25372    pub mod cpu {
25373        /// Code to identify the CPU
25374        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
25375        pub enum Identifier {
25376            #[prost(message, tag = "4")]
25377            ArmIdentifier(super::ArmCpuIdentifier),
25378        }
25379    }
25380}
25381/// Information about GPUs on the device.
25382#[derive(Clone, PartialEq, ::prost::Message)]
25383pub struct GpuInfo {
25384    /// Describes available GPUs, one entry per GPU. The index in the list
25385    /// corresponds to the gpu_id used elsewhere in the trace.
25386    #[prost(message, repeated, tag = "1")]
25387    pub gpus: ::prost::alloc::vec::Vec<gpu_info::Gpu>,
25388}
25389/// Nested message and enum types in `GpuInfo`.
25390pub mod gpu_info {
25391    /// Information about a single GPU.
25392    #[derive(Clone, PartialEq, ::prost::Message)]
25393    pub struct Gpu {
25394        /// GPU name (e.g., "NVIDIA A100", "Adreno 740").
25395        /// Used by the Perfetto UI as the display label for GPU tracks (e.g.,
25396        /// "NVIDIA A100 Frequency" instead of "GPU 0 Frequency"). If multiple GPUs
25397        /// share the same name, consider appending an index to distinguish them
25398        /// (e.g., "NVIDIA A100 #0", "NVIDIA A100 #1").
25399        #[prost(string, optional, tag = "1")]
25400        pub name: ::core::option::Option<::prost::alloc::string::String>,
25401        /// GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
25402        #[prost(string, optional, tag = "2")]
25403        pub vendor: ::core::option::Option<::prost::alloc::string::String>,
25404        /// GPU model/product identifier.
25405        #[prost(string, optional, tag = "3")]
25406        pub model: ::core::option::Option<::prost::alloc::string::String>,
25407        /// GPU architecture (e.g., "Ampere", "RDNA 3", "Adreno").
25408        #[prost(string, optional, tag = "4")]
25409        pub architecture: ::core::option::Option<::prost::alloc::string::String>,
25410        /// 16-byte device UUID when available.
25411        #[prost(bytes = "vec", optional, tag = "5")]
25412        pub uuid: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
25413        /// PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
25414        #[prost(string, optional, tag = "7")]
25415        pub pci_bdf: ::core::option::Option<::prost::alloc::string::String>,
25416        #[prost(message, repeated, tag = "6")]
25417        pub extra_info: ::prost::alloc::vec::Vec<gpu::KeyValue>,
25418    }
25419    /// Nested message and enum types in `Gpu`.
25420    pub mod gpu {
25421        /// Arbitrary key-value pairs for vendor-specific info
25422        /// (driver version, memory size, compute capability, clock speeds, etc.).
25423        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25424        pub struct KeyValue {
25425            #[prost(string, optional, tag = "1")]
25426            pub key: ::core::option::Option<::prost::alloc::string::String>,
25427            #[prost(string, optional, tag = "2")]
25428            pub value: ::core::option::Option<::prost::alloc::string::String>,
25429        }
25430    }
25431}
25432/// Hardware interrupt (IRQ) ID-to-name mappings collected from
25433/// /proc/interrupts at the start of a trace.
25434/// Emitted by the linux.system_info data source when irq_names: true is set
25435/// in SystemInfoConfig.
25436#[derive(Clone, PartialEq, ::prost::Message)]
25437pub struct InterruptInfo {
25438    /// One entry per hardware IRQ found in /proc/interrupts.
25439    #[prost(message, repeated, tag = "1")]
25440    pub irq_mapping: ::prost::alloc::vec::Vec<interrupt_info::InterruptMapping>,
25441}
25442/// Nested message and enum types in `InterruptInfo`.
25443pub mod interrupt_info {
25444    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25445    pub struct InterruptMapping {
25446        /// Numeric IRQ identifier.
25447        #[prost(uint32, optional, tag = "1")]
25448        pub irq_id: ::core::option::Option<u32>,
25449        /// Human-readable name for the IRQ (e.g. "arch_timer", "arm-pmu").
25450        #[prost(string, optional, tag = "2")]
25451        pub name: ::core::option::Option<::prost::alloc::string::String>,
25452    }
25453}
25454/// Event used by testing code.
25455#[derive(Clone, PartialEq, ::prost::Message)]
25456pub struct TestEvent {
25457    /// Arbitrary string used in tests.
25458    #[prost(string, optional, tag = "1")]
25459    pub str: ::core::option::Option<::prost::alloc::string::String>,
25460    /// The current value of the random number sequence used in tests.
25461    #[prost(uint32, optional, tag = "2")]
25462    pub seq_value: ::core::option::Option<u32>,
25463    /// Monotonically increased on each packet.
25464    #[prost(uint64, optional, tag = "3")]
25465    pub counter: ::core::option::Option<u64>,
25466    /// No more packets should follow (from the current sequence).
25467    #[prost(bool, optional, tag = "4")]
25468    pub is_last: ::core::option::Option<bool>,
25469    #[prost(message, optional, tag = "5")]
25470    pub payload: ::core::option::Option<test_event::TestPayload>,
25471    #[prost(message, optional, tag = "6")]
25472    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
25473    #[prost(message, optional, tag = "7")]
25474    pub protovm_incremental_state: ::core::option::Option<
25475        test_event::ProtoVmIncrementalState,
25476    >,
25477}
25478/// Nested message and enum types in `TestEvent`.
25479pub mod test_event {
25480    #[derive(Clone, PartialEq, ::prost::Message)]
25481    pub struct TestPayload {
25482        #[prost(string, repeated, tag = "1")]
25483        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25484        #[prost(message, repeated, tag = "2")]
25485        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
25486        #[prost(string, optional, tag = "4")]
25487        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
25488        #[prost(int32, optional, tag = "5")]
25489        pub single_int: ::core::option::Option<i32>,
25490        #[prost(int32, repeated, packed = "false", tag = "6")]
25491        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
25492        /// When 0 this is the bottom-most nested message.
25493        #[prost(uint32, optional, tag = "3")]
25494        pub remaining_nesting_depth: ::core::option::Option<u32>,
25495        #[prost(message, repeated, tag = "7")]
25496        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
25497    }
25498    /// Simple ProtoVm patch and incremental state formats used for testing
25499    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25500    pub struct ProtoVmMessage {
25501        #[prost(uint32, optional, tag = "1")]
25502        pub id: ::core::option::Option<u32>,
25503        #[prost(message, optional, tag = "2")]
25504        pub submessage: ::core::option::Option<proto_vm_message::ProtoVmSubmessage>,
25505    }
25506    /// Nested message and enum types in `ProtoVmMessage`.
25507    pub mod proto_vm_message {
25508        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25509        pub struct ProtoVmSubmessage {
25510            #[prost(uint32, optional, tag = "1")]
25511            pub single_int: ::core::option::Option<u32>,
25512        }
25513    }
25514    #[derive(Clone, PartialEq, ::prost::Message)]
25515    pub struct ProtoVmPatch {
25516        #[prost(string, optional, tag = "1")]
25517        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
25518        #[prost(int32, optional, tag = "2")]
25519        pub int_to_merge: ::core::option::Option<i32>,
25520        #[prost(message, optional, tag = "3")]
25521        pub single_message: ::core::option::Option<ProtoVmMessage>,
25522        #[prost(message, repeated, tag = "4")]
25523        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
25524        #[prost(uint32, repeated, packed = "false", tag = "5")]
25525        pub delete_message_ids: ::prost::alloc::vec::Vec<u32>,
25526    }
25527    #[derive(Clone, PartialEq, ::prost::Message)]
25528    pub struct ProtoVmIncrementalState {
25529        #[prost(string, optional, tag = "1")]
25530        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
25531        #[prost(int32, optional, tag = "2")]
25532        pub int_merged: ::core::option::Option<i32>,
25533        #[prost(message, optional, tag = "3")]
25534        pub single_message: ::core::option::Option<ProtoVmMessage>,
25535        #[prost(message, repeated, tag = "4")]
25536        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
25537    }
25538}
25539/// Default values for TracePacket fields that hold for a particular TraceWriter
25540/// packet sequence. This message contains a subset of the TracePacket fields
25541/// with matching IDs. When provided, these fields define the default values
25542/// that should be applied, at import time, to all TracePacket(s) with the same
25543/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
25544///
25545/// Should be reemitted whenever incremental state is cleared on the sequence.
25546#[derive(Clone, PartialEq, ::prost::Message)]
25547pub struct TracePacketDefaults {
25548    #[prost(uint32, optional, tag = "58")]
25549    pub timestamp_clock_id: ::core::option::Option<u32>,
25550    /// Default values for TrackEvents (e.g. default track).
25551    #[prost(message, optional, tag = "11")]
25552    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
25553    /// Defaults for perf profiler packets (PerfSample).
25554    #[prost(message, optional, tag = "12")]
25555    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
25556    /// Defaults for transport-neutral stack sampling packets (StackSample).
25557    #[prost(message, optional, tag = "100")]
25558    pub stack_sample_defaults: ::core::option::Option<StackSampleDefaults>,
25559    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
25560    /// V8RegexpCode)
25561    #[prost(message, optional, tag = "99")]
25562    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
25563}
25564/// A random unique ID that identifies the trace.
25565/// This message has been introduced in v32. Prior to that, the UUID was
25566/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
25567/// This has been moved to a standalone packet to deal with new use-cases for
25568/// go/gapless-aot, where the same tracing session can be serialized several
25569/// times, in which case the UUID is changed on each snapshot and does not match
25570/// the one in the TraceConfig.
25571#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25572pub struct TraceUuid {
25573    #[prost(int64, optional, tag = "1")]
25574    pub msb: ::core::option::Option<i64>,
25575    #[prost(int64, optional, tag = "2")]
25576    pub lsb: ::core::option::Option<i64>,
25577}
25578/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
25579/// usually by the process's main thread.
25580///
25581/// Next id: 9.
25582#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25583pub struct ProcessDescriptor {
25584    #[prost(int32, optional, tag = "1")]
25585    pub pid: ::core::option::Option<i32>,
25586    #[prost(string, repeated, tag = "2")]
25587    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25588    #[prost(string, optional, tag = "6")]
25589    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
25590    #[prost(int32, optional, tag = "5")]
25591    pub process_priority: ::core::option::Option<i32>,
25592    /// Process start time in nanoseconds.
25593    /// The timestamp refers to the trace clock by default. Other clock IDs
25594    /// provided in TracePacket are not supported.
25595    #[prost(int64, optional, tag = "7")]
25596    pub start_timestamp_ns: ::core::option::Option<i64>,
25597    #[prost(enumeration = "process_descriptor::ChromeProcessType", optional, tag = "4")]
25598    pub chrome_process_type: ::core::option::Option<i32>,
25599    /// To support old UI. New UI should determine default sorting by process_type.
25600    #[prost(int32, optional, tag = "3")]
25601    pub legacy_sort_index: ::core::option::Option<i32>,
25602    /// Labels can be used to further describe properties of the work performed by
25603    /// the process. For example, these can be used by Chrome renderer process to
25604    /// provide titles of frames being rendered.
25605    #[prost(string, repeated, tag = "8")]
25606    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25607}
25608/// Nested message and enum types in `ProcessDescriptor`.
25609pub mod process_descriptor {
25610    /// See chromium's content::ProcessType.
25611    #[derive(
25612        Clone,
25613        Copy,
25614        Debug,
25615        PartialEq,
25616        Eq,
25617        Hash,
25618        PartialOrd,
25619        Ord,
25620        ::prost::Enumeration
25621    )]
25622    #[repr(i32)]
25623    pub enum ChromeProcessType {
25624        ProcessUnspecified = 0,
25625        ProcessBrowser = 1,
25626        ProcessRenderer = 2,
25627        ProcessUtility = 3,
25628        ProcessZygote = 4,
25629        ProcessSandboxHelper = 5,
25630        ProcessGpu = 6,
25631        ProcessPpapiPlugin = 7,
25632        ProcessPpapiBroker = 8,
25633    }
25634    impl ChromeProcessType {
25635        /// String value of the enum field names used in the ProtoBuf definition.
25636        ///
25637        /// The values are not transformed in any way and thus are considered stable
25638        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25639        pub fn as_str_name(&self) -> &'static str {
25640            match self {
25641                Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
25642                Self::ProcessBrowser => "PROCESS_BROWSER",
25643                Self::ProcessRenderer => "PROCESS_RENDERER",
25644                Self::ProcessUtility => "PROCESS_UTILITY",
25645                Self::ProcessZygote => "PROCESS_ZYGOTE",
25646                Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
25647                Self::ProcessGpu => "PROCESS_GPU",
25648                Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
25649                Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
25650            }
25651        }
25652        /// Creates an enum from field names used in the ProtoBuf definition.
25653        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25654            match value {
25655                "PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
25656                "PROCESS_BROWSER" => Some(Self::ProcessBrowser),
25657                "PROCESS_RENDERER" => Some(Self::ProcessRenderer),
25658                "PROCESS_UTILITY" => Some(Self::ProcessUtility),
25659                "PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
25660                "PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
25661                "PROCESS_GPU" => Some(Self::ProcessGpu),
25662                "PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
25663                "PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
25664                _ => None,
25665            }
25666        }
25667    }
25668}
25669/// This message specifies the "range of interest" for track events. With the
25670/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
25671/// Trace Processor drops track events outside of this range.
25672#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25673pub struct TrackEventRangeOfInterest {
25674    #[prost(int64, optional, tag = "1")]
25675    pub start_us: ::core::option::Option<i64>,
25676}
25677/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
25678/// usually by the thread's trace writer.
25679///
25680/// Next id: 9.
25681#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25682pub struct ThreadDescriptor {
25683    #[prost(int32, optional, tag = "1")]
25684    pub pid: ::core::option::Option<i32>,
25685    #[prost(int64, optional, tag = "2")]
25686    pub tid: ::core::option::Option<i64>,
25687    #[prost(string, optional, tag = "5")]
25688    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
25689    #[prost(enumeration = "thread_descriptor::ChromeThreadType", optional, tag = "4")]
25690    pub chrome_thread_type: ::core::option::Option<i32>,
25691    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
25692    /// and timestamp_clock_id fields instead.
25693    #[prost(int64, optional, tag = "6")]
25694    pub reference_timestamp_us: ::core::option::Option<i64>,
25695    /// Absolute reference values. Clock values in subsequent TrackEvents can be
25696    /// encoded accumulatively and relative to these. This reduces their var-int
25697    /// encoding size.
25698    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
25699    #[prost(int64, optional, tag = "7")]
25700    pub reference_thread_time_us: ::core::option::Option<i64>,
25701    #[prost(int64, optional, tag = "8")]
25702    pub reference_thread_instruction_count: ::core::option::Option<i64>,
25703    /// To support old UI. New UI should determine default sorting by thread_type.
25704    #[prost(int32, optional, tag = "3")]
25705    pub legacy_sort_index: ::core::option::Option<i32>,
25706}
25707/// Nested message and enum types in `ThreadDescriptor`.
25708pub mod thread_descriptor {
25709    #[derive(
25710        Clone,
25711        Copy,
25712        Debug,
25713        PartialEq,
25714        Eq,
25715        Hash,
25716        PartialOrd,
25717        Ord,
25718        ::prost::Enumeration
25719    )]
25720    #[repr(i32)]
25721    pub enum ChromeThreadType {
25722        ChromeThreadUnspecified = 0,
25723        ChromeThreadMain = 1,
25724        ChromeThreadIo = 2,
25725        /// Scheduler:
25726        ChromeThreadPoolBgWorker = 3,
25727        ChromeThreadPoolFgWorker = 4,
25728        ChromeThreadPoolFbBlocking = 5,
25729        ChromeThreadPoolBgBlocking = 6,
25730        ChromeThreadPoolService = 7,
25731        /// Compositor:
25732        ChromeThreadCompositor = 8,
25733        ChromeThreadVizCompositor = 9,
25734        ChromeThreadCompositorWorker = 10,
25735        /// Renderer:
25736        ChromeThreadServiceWorker = 11,
25737        /// Tracing related threads:
25738        ChromeThreadMemoryInfra = 50,
25739        ChromeThreadSamplingProfiler = 51,
25740    }
25741    impl ChromeThreadType {
25742        /// String value of the enum field names used in the ProtoBuf definition.
25743        ///
25744        /// The values are not transformed in any way and thus are considered stable
25745        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25746        pub fn as_str_name(&self) -> &'static str {
25747            match self {
25748                Self::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
25749                Self::ChromeThreadMain => "CHROME_THREAD_MAIN",
25750                Self::ChromeThreadIo => "CHROME_THREAD_IO",
25751                Self::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
25752                Self::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
25753                Self::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
25754                Self::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
25755                Self::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
25756                Self::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
25757                Self::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
25758                Self::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
25759                Self::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
25760                Self::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
25761                Self::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
25762            }
25763        }
25764        /// Creates an enum from field names used in the ProtoBuf definition.
25765        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25766            match value {
25767                "CHROME_THREAD_UNSPECIFIED" => Some(Self::ChromeThreadUnspecified),
25768                "CHROME_THREAD_MAIN" => Some(Self::ChromeThreadMain),
25769                "CHROME_THREAD_IO" => Some(Self::ChromeThreadIo),
25770                "CHROME_THREAD_POOL_BG_WORKER" => Some(Self::ChromeThreadPoolBgWorker),
25771                "CHROME_THREAD_POOL_FG_WORKER" => Some(Self::ChromeThreadPoolFgWorker),
25772                "CHROME_THREAD_POOL_FB_BLOCKING" => {
25773                    Some(Self::ChromeThreadPoolFbBlocking)
25774                }
25775                "CHROME_THREAD_POOL_BG_BLOCKING" => {
25776                    Some(Self::ChromeThreadPoolBgBlocking)
25777                }
25778                "CHROME_THREAD_POOL_SERVICE" => Some(Self::ChromeThreadPoolService),
25779                "CHROME_THREAD_COMPOSITOR" => Some(Self::ChromeThreadCompositor),
25780                "CHROME_THREAD_VIZ_COMPOSITOR" => Some(Self::ChromeThreadVizCompositor),
25781                "CHROME_THREAD_COMPOSITOR_WORKER" => {
25782                    Some(Self::ChromeThreadCompositorWorker)
25783                }
25784                "CHROME_THREAD_SERVICE_WORKER" => Some(Self::ChromeThreadServiceWorker),
25785                "CHROME_THREAD_MEMORY_INFRA" => Some(Self::ChromeThreadMemoryInfra),
25786                "CHROME_THREAD_SAMPLING_PROFILER" => {
25787                    Some(Self::ChromeThreadSamplingProfiler)
25788                }
25789                _ => None,
25790            }
25791        }
25792    }
25793}
25794/// Describes the attributes for a Chrome process. Must be paired with a
25795/// ProcessDescriptor in the same TrackDescriptor.
25796///
25797/// Next id: 6.
25798#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25799pub struct ChromeProcessDescriptor {
25800    /// This is a chrome_enums::ProcessType from
25801    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
25802    /// be imported here because of a dependency loop.
25803    #[prost(int32, optional, tag = "1")]
25804    pub process_type: ::core::option::Option<i32>,
25805    #[prost(int32, optional, tag = "2")]
25806    pub process_priority: ::core::option::Option<i32>,
25807    /// To support old UI. New UI should determine default sorting by process_type.
25808    #[prost(int32, optional, tag = "3")]
25809    pub legacy_sort_index: ::core::option::Option<i32>,
25810    /// Name of the hosting app for WebView. Used to match renderer processes to
25811    /// their hosting apps.
25812    #[prost(string, optional, tag = "4")]
25813    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
25814    /// The ID to link crashes to trace.
25815    /// Notes:
25816    /// * The ID is per process. So, each trace may contain many IDs, and you need
25817    ///    to look for the ID from crashed process to find the crash report.
25818    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
25819    ///    get an uploaded trace, since uploads could have failed.
25820    /// * On the other hand, if there was a crash during the session and trace was
25821    ///    uploaded, it is very likely to find a crash report with the trace ID.
25822    /// * This is not crash ID or trace ID. It is just a random 64-bit number
25823    ///    recorded in both traces and crashes. It is possible to have collisions,
25824    ///    though very rare.
25825    #[prost(uint64, optional, tag = "5")]
25826    pub crash_trace_id: ::core::option::Option<u64>,
25827}
25828/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
25829/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
25830/// in the same TrackDescriptor.
25831///
25832/// Next id: 3.
25833#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25834pub struct ChromeThreadDescriptor {
25835    /// This is a chrome_enums::ThreadType from
25836    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
25837    /// be imported here because of a dependency loop.
25838    #[prost(int32, optional, tag = "1")]
25839    pub thread_type: ::core::option::Option<i32>,
25840    /// To support old UI. New UI should determine default sorting by thread_type.
25841    #[prost(int32, optional, tag = "2")]
25842    pub legacy_sort_index: ::core::option::Option<i32>,
25843    /// Indicates whether the thread's tid specified in the thread descriptor is
25844    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
25845    #[prost(bool, optional, tag = "3")]
25846    pub is_sandboxed_tid: ::core::option::Option<bool>,
25847}
25848/// Defines properties of a counter track, e.g. for built-in counters (thread
25849/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
25850/// a specific app component).
25851///
25852/// Counter tracks only support TYPE_COUNTER track events, which specify new
25853/// values for the counter. For counters that require per-slice values, counter
25854/// values can instead be provided in a more efficient encoding via TrackEvent's
25855/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
25856/// slice-type events cannot be emitted onto a counter track.
25857///
25858/// Values for counters that are only emitted on a single packet sequence can
25859/// optionally be delta-encoded, see |is_incremental|.
25860///
25861/// Next id: 7.
25862#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25863pub struct CounterDescriptor {
25864    /// For built-in counters (e.g. thread time). Custom user-specified counters
25865    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
25866    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
25867    #[prost(enumeration = "counter_descriptor::BuiltinCounterType", optional, tag = "1")]
25868    pub r#type: ::core::option::Option<i32>,
25869    /// Names of categories of the counter (usually for user-specified counters).
25870    /// In the client library, categories are a way to turn groups of individual
25871    /// counters (or events) on or off.
25872    #[prost(string, repeated, tag = "2")]
25873    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25874    /// Type of the counter's values. Built-in counters imply a value for this
25875    /// field.
25876    #[prost(enumeration = "counter_descriptor::Unit", optional, tag = "3")]
25877    pub unit: ::core::option::Option<i32>,
25878    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
25879    /// name can be used instead.
25880    #[prost(string, optional, tag = "6")]
25881    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
25882    /// Multiplication factor of this counter's values, e.g. to supply
25883    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
25884    #[prost(int64, optional, tag = "4")]
25885    pub unit_multiplier: ::core::option::Option<i64>,
25886    /// Whether values for this counter are provided as delta values. Only
25887    /// supported for counters that are emitted on a single packet-sequence (e.g.
25888    /// thread time). Counter values in subsequent packets on the current packet
25889    /// sequence will be interpreted as delta values from the sequence's most
25890    /// recent value for the counter. When incremental state is cleared, the
25891    /// counter value is considered to be reset to 0. Thus, the first value after
25892    /// incremental state is cleared is effectively an absolute value.
25893    #[prost(bool, optional, tag = "5")]
25894    pub is_incremental: ::core::option::Option<bool>,
25895    /// When visualizing multiple counter tracks, it is often useful to have them
25896    /// share the same Y-axis range. This allows for easy comparison of their
25897    /// values.
25898    ///
25899    /// All counter tracks with the same |y_axis_share_key| and the same parent
25900    /// track (e.g. grouped under the same process track) will share their y-axis
25901    /// range in the UI.
25902    #[prost(string, optional, tag = "7")]
25903    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
25904}
25905/// Nested message and enum types in `CounterDescriptor`.
25906pub mod counter_descriptor {
25907    /// Built-in counters, usually with special meaning in the client library,
25908    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
25909    /// track name from the enum value if none is provided in TrackDescriptor.
25910    ///
25911    /// Thread-scoped counters. The thread's track should be specified via
25912    /// |parent_uuid| in the TrackDescriptor for such a counter.
25913    #[derive(
25914        Clone,
25915        Copy,
25916        Debug,
25917        PartialEq,
25918        Eq,
25919        Hash,
25920        PartialOrd,
25921        Ord,
25922        ::prost::Enumeration
25923    )]
25924    #[repr(i32)]
25925    pub enum BuiltinCounterType {
25926        CounterUnspecified = 0,
25927        /// implies UNIT_TIME_NS.
25928        CounterThreadTimeNs = 1,
25929        /// implies UNIT_COUNT.
25930        CounterThreadInstructionCount = 2,
25931    }
25932    impl BuiltinCounterType {
25933        /// String value of the enum field names used in the ProtoBuf definition.
25934        ///
25935        /// The values are not transformed in any way and thus are considered stable
25936        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25937        pub fn as_str_name(&self) -> &'static str {
25938            match self {
25939                Self::CounterUnspecified => "COUNTER_UNSPECIFIED",
25940                Self::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
25941                Self::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
25942            }
25943        }
25944        /// Creates an enum from field names used in the ProtoBuf definition.
25945        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25946            match value {
25947                "COUNTER_UNSPECIFIED" => Some(Self::CounterUnspecified),
25948                "COUNTER_THREAD_TIME_NS" => Some(Self::CounterThreadTimeNs),
25949                "COUNTER_THREAD_INSTRUCTION_COUNT" => {
25950                    Some(Self::CounterThreadInstructionCount)
25951                }
25952                _ => None,
25953            }
25954        }
25955    }
25956    /// Type of the values for the counters - to supply lower granularity units,
25957    /// see also |unit_multiplier|.
25958    #[derive(
25959        Clone,
25960        Copy,
25961        Debug,
25962        PartialEq,
25963        Eq,
25964        Hash,
25965        PartialOrd,
25966        Ord,
25967        ::prost::Enumeration
25968    )]
25969    #[repr(i32)]
25970    pub enum Unit {
25971        Unspecified = 0,
25972        TimeNs = 1,
25973        Count = 2,
25974        /// TODO(eseckler): Support more units as necessary.
25975        SizeBytes = 3,
25976    }
25977    impl Unit {
25978        /// String value of the enum field names used in the ProtoBuf definition.
25979        ///
25980        /// The values are not transformed in any way and thus are considered stable
25981        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25982        pub fn as_str_name(&self) -> &'static str {
25983            match self {
25984                Self::Unspecified => "UNIT_UNSPECIFIED",
25985                Self::TimeNs => "UNIT_TIME_NS",
25986                Self::Count => "UNIT_COUNT",
25987                Self::SizeBytes => "UNIT_SIZE_BYTES",
25988            }
25989        }
25990        /// Creates an enum from field names used in the ProtoBuf definition.
25991        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25992            match value {
25993                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
25994                "UNIT_TIME_NS" => Some(Self::TimeNs),
25995                "UNIT_COUNT" => Some(Self::Count),
25996                "UNIT_SIZE_BYTES" => Some(Self::SizeBytes),
25997                _ => None,
25998            }
25999        }
26000    }
26001}
26002/// Descriptor for a state track.
26003/// For now, this message is empty. It is used to identify a track as a state
26004/// track.
26005#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26006pub struct StateDescriptor {}
26007/// Defines a track for TrackEvents. Slices and instant events on the same track
26008/// will be nested based on their timestamps, see TrackEvent::Type.
26009///
26010/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
26011/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
26012/// when the ring buffer wraps, it should be reemitted whenever incremental state
26013/// is cleared.
26014///
26015/// As a fallback, TrackEvents emitted without an explicit track association will
26016/// be associated with an implicit trace-global track (uuid = 0), see also
26017/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
26018/// TrackDescriptor for this implicit track.
26019///
26020/// Next id: 21.
26021#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26022pub struct TrackDescriptor {
26023    /// Unique ID that identifies this track. This ID is global to the whole trace.
26024    /// Producers should ensure that it is unlikely to clash with IDs emitted by
26025    /// other producers. A value of 0 denotes the implicit trace-global track.
26026    ///
26027    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
26028    /// event id + id_scope, pid, and/or tid to compute this ID.
26029    #[prost(uint64, optional, tag = "1")]
26030    pub uuid: ::core::option::Option<u64>,
26031    /// A parent track reference can be used to describe relationships between
26032    /// tracks. For example, to define an asynchronous track which is scoped to a
26033    /// specific process, specify the uuid for that process's process track here.
26034    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
26035    /// thread, specify the uuid for that thread's thread track here. In general,
26036    /// setting a parent will *nest* that track under the parent in the UI and in
26037    /// the trace processor data model (with the important exception noted below).
26038    ///
26039    /// If not specified, the track will be a root track, i.e. not nested under any
26040    /// other track.
26041    ///
26042    /// Note: if the `thread` or `process` fields are set, this value will be
26043    /// *ignored* as priority is given to those fields.
26044    ///
26045    /// Note: if the parent is set to a track with `thread` or `process` fields
26046    /// set, the track will *not* be nested under the parent in the UI and in the
26047    /// trace processor data model. Instead, the track will inherit the parent's
26048    /// thread/process association and will appear as a *sibling* of the parent.
26049    /// This semantic exists for back-compat reasons as the UI used to work this
26050    /// way for years and changing this leads to a lot of traces subtly breaking.
26051    /// If you want to force nesting, create *another* intermediate track to act as
26052    /// the parent.
26053    #[prost(uint64, optional, tag = "5")]
26054    pub parent_uuid: ::core::option::Option<u64>,
26055    /// A human-readable description of the track providing more context about its
26056    /// data. In the UI, this is shown in a popup when the track's help button is
26057    /// clicked.
26058    #[prost(string, optional, tag = "14")]
26059    pub description: ::core::option::Option<::prost::alloc::string::String>,
26060    /// Associate the track with a process, making it the process-global track.
26061    /// There should only be one such track per process (usually for instant
26062    /// events; trace processor uses this fact to detect pid reuse). If you need
26063    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
26064    ///
26065    /// Trace processor will merge events on a process track with slice-type events
26066    /// from other sources (e.g. ftrace) for the same process into a single
26067    /// timeline view.
26068    #[prost(message, optional, tag = "3")]
26069    pub process: ::core::option::Option<ProcessDescriptor>,
26070    #[prost(message, optional, tag = "6")]
26071    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
26072    /// Associate the track with a thread, indicating that the track's events
26073    /// describe synchronous code execution on the thread. There should only be one
26074    /// such track per thread (trace processor uses this fact to detect tid reuse).
26075    ///
26076    /// Trace processor will merge events on a thread track with slice-type events
26077    /// from other sources (e.g. ftrace) for the same thread into a single timeline
26078    /// view.
26079    #[prost(message, optional, tag = "4")]
26080    pub thread: ::core::option::Option<ThreadDescriptor>,
26081    #[prost(message, optional, tag = "7")]
26082    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
26083    /// Descriptor for a counter track. If set, the track will only support
26084    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
26085    /// |extra_counter_values|).
26086    #[prost(message, optional, tag = "8")]
26087    pub counter: ::core::option::Option<CounterDescriptor>,
26088    /// Descriptor for a state track. If set, the track will support
26089    /// TYPE_STATE TrackEvents.
26090    #[prost(message, optional, tag = "18")]
26091    pub state: ::core::option::Option<StateDescriptor>,
26092    /// If true, forces Trace Processor to use separate tracks for track events
26093    /// and system events for the same thread.
26094    ///
26095    /// Track events timestamps in Chrome have microsecond resolution, while
26096    /// system events use nanoseconds. It results in broken event nesting when
26097    /// track events and system events share a track.
26098    #[prost(bool, optional, tag = "9")]
26099    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
26100    #[prost(enumeration = "track_descriptor::ChildTracksOrdering", optional, tag = "11")]
26101    pub child_ordering: ::core::option::Option<i32>,
26102    /// An opaque value which allows specifying how sibling tracks should be
26103    /// ordered relative to each other: tracks with lower ranks will appear before
26104    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
26105    /// 0.
26106    ///
26107    /// This rank is used in the following scenarios:
26108    /// - For standard child tracks, if the parent track has `child_ordering` set
26109    ///    to `EXPLICIT`.
26110    /// - For process tracks, if the root track descriptor (uuid = 0) has
26111    ///    `process_ordering` set to `PROCESS_ORDERING_EXPLICIT`.
26112    /// - For thread tracks, if the root track descriptor (uuid = 0) has
26113    ///    `thread_ordering` set to `THREAD_ORDERING_EXPLICIT`.
26114    ///
26115    /// In all other cases, this value is ignored.
26116    #[prost(int32, optional, tag = "12")]
26117    pub sibling_order_rank: ::core::option::Option<i32>,
26118    #[prost(
26119        enumeration = "track_descriptor::SiblingMergeBehavior",
26120        optional,
26121        tag = "15"
26122    )]
26123    pub sibling_merge_behavior: ::core::option::Option<i32>,
26124    #[prost(enumeration = "track_descriptor::ProcessOrdering", optional, tag = "19")]
26125    pub process_ordering: ::core::option::Option<i32>,
26126    #[prost(enumeration = "track_descriptor::ThreadOrdering", optional, tag = "20")]
26127    pub thread_ordering: ::core::option::Option<i32>,
26128    /// Name of the track.
26129    ///
26130    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
26131    /// emitted before any `TrackEvent`s on the same track.
26132    ///
26133    /// Note: any name specified here will be *ignored* for the root thread scoped
26134    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
26135    /// case, the name of the track is shared by many different data sources and so
26136    /// is centrally controlled by trace processor.
26137    ///
26138    /// It's strongly recommended to only emit the name for a track uuid *once*. If
26139    /// a descriptor *has* to be emitted multiple times (e.g. between different
26140    /// processes), it's recommended to ensure that the name is consistent across
26141    /// all TrackDescriptors with the same `uuid`.
26142    ///
26143    /// If the the above recommendation is not followed and the same uuid is
26144    /// emitted with different names, it is implementation defined how the final
26145    /// name will be chosen and may change at any time.
26146    ///
26147    /// The current implementation of trace processor chooses the name in the
26148    /// following way, depending on the value of the `sibling_merge_behavior`
26149    /// field:
26150    ///
26151    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
26152    ///    * The *last* non-null name in the whole trace according to trace order
26153    ///      will be used.
26154    ///    * If no non-null name is present in the whole trace, the trace processor
26155    ///      may fall back to other sources to provide a name for the track (e.g.
26156    ///      the first event name for slice tracks, the counter name for counter
26157    ///      tracks). This is implementation defined and may change at any time.
26158    ///
26159    /// 2. If `sibling_merge_behavior` is set to any other value:
26160    ///    * The first non-null name before the first event on the track *or on any
26161    ///      descendant tracks* is processed will be used. For example, consider
26162    ///      the following sequence of events:
26163    ///        ts=100: TrackDescriptor(uuid=A)
26164    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
26165    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
26166    ///        ts=400: TrackEvent(track_uuid=B)
26167    ///      In this case, the name for track A will be "Track A" because the
26168    ///      descriptor with the name was emitted before the first event on a
26169    ///      descendant track (B).
26170    ///    * If no non-null name is present before the event is processed, the trace
26171    ///      processor may fall back to other sources to provide a name for the
26172    ///      track (e.g. the first event name for slice tracks, the counter name for
26173    ///      counter tracks). This is implementation defined and may change at any
26174    ///      time.
26175    ///    * Note on processing order: In the standard trace processor pipeline,
26176    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
26177    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
26178    ///      track, all its descriptors in the trace are processed before its
26179    ///      events. Consequently, the "first non-null name before the first event"
26180    ///      will be the name from the first `TrackDescriptor` for that track in the
26181    ///      trace file that has a non-null name. However, in a streaming parsing
26182    ///      scenario, the timestamp order of descriptors and events is significant,
26183    ///      and a descriptor arriving after an event has been processed will not be
26184    ///      used to name the track.
26185    #[prost(oneof = "track_descriptor::StaticOrDynamicName", tags = "2, 10, 13")]
26186    pub static_or_dynamic_name: ::core::option::Option<
26187        track_descriptor::StaticOrDynamicName,
26188    >,
26189    /// An opaque value which allows specifying which tracks should be merged
26190    /// together.
26191    ///
26192    /// Only meaningful when `sibling_merge_behavior` is set to
26193    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
26194    #[prost(oneof = "track_descriptor::SiblingMergeKeyField", tags = "16, 17")]
26195    pub sibling_merge_key_field: ::core::option::Option<
26196        track_descriptor::SiblingMergeKeyField,
26197    >,
26198}
26199/// Nested message and enum types in `TrackDescriptor`.
26200pub mod track_descriptor {
26201    /// Specifies how the UI should display child tracks of this track (i.e. tracks
26202    /// where `parent_uuid` is specified to this track `uuid`). Note that this
26203    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
26204    /// this if it has a good reason not to do so.
26205    ///
26206    /// Note: for tracks where `thread` or `process` are set (i.e. process tracks
26207    /// and thread tracks), this option is *ignored*. Instead, use
26208    /// `thread_ordering` and `process_ordering` on the root track descriptor (uuid
26209    /// = 0) to configure process and thread track ordering. See `parent_uuid` for
26210    /// details.
26211    #[derive(
26212        Clone,
26213        Copy,
26214        Debug,
26215        PartialEq,
26216        Eq,
26217        Hash,
26218        PartialOrd,
26219        Ord,
26220        ::prost::Enumeration
26221    )]
26222    #[repr(i32)]
26223    pub enum ChildTracksOrdering {
26224        /// The default ordering, with no bearing on how the UI will visualise the
26225        /// tracks.
26226        Unknown = 0,
26227        /// Order tracks by `name` or `static_name` depending on which one has been
26228        /// specified.
26229        Lexicographic = 1,
26230        /// Order tracks by the first `ts` event in a track.
26231        Chronological = 2,
26232        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
26233        /// the lower values will be shown before tracks with higher values. Tracks
26234        /// with no value will be treated as having 0 rank.
26235        Explicit = 3,
26236    }
26237    impl ChildTracksOrdering {
26238        /// String value of the enum field names used in the ProtoBuf definition.
26239        ///
26240        /// The values are not transformed in any way and thus are considered stable
26241        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26242        pub fn as_str_name(&self) -> &'static str {
26243            match self {
26244                Self::Unknown => "UNKNOWN",
26245                Self::Lexicographic => "LEXICOGRAPHIC",
26246                Self::Chronological => "CHRONOLOGICAL",
26247                Self::Explicit => "EXPLICIT",
26248            }
26249        }
26250        /// Creates an enum from field names used in the ProtoBuf definition.
26251        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26252            match value {
26253                "UNKNOWN" => Some(Self::Unknown),
26254                "LEXICOGRAPHIC" => Some(Self::Lexicographic),
26255                "CHRONOLOGICAL" => Some(Self::Chronological),
26256                "EXPLICIT" => Some(Self::Explicit),
26257                _ => None,
26258            }
26259        }
26260    }
26261    /// Specifies how the analysis tools should "merge" different sibling
26262    /// TrackEvent tracks.
26263    ///
26264    /// For two or more tracks to be merged, they must be "eligible" siblings.
26265    /// Eligibility is determined by the following rules:
26266    /// 1. All tracks must have the same parent.
26267    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
26268    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
26269    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
26270    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
26271    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
26272    ///
26273    /// Specifically:
26274    ///    - in the UI, all tracks which are merged together will be
26275    ///      displayed as a single "visual" track.
26276    ///    - in the trace processor, all tracks which are merged together will be
26277    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
26278    ///      of tracks which have an active event at the same time.
26279    ///
26280    /// When tracks are merged togther, the properties for the merged track will be
26281    /// chosen from the source tracks based on the following rules:
26282    ///    - for `sibling_order_rank`: the rank of the merged track will be the
26283    ///      smallest rank among the source tracks.
26284    ///    - for all other properties: the property taken is unspecified and can
26285    ///      be any value provided by one of the source tracks. This can lead to
26286    ///      non-deterministic behavior.
26287    ///       - examples of other properties include `name`, `child_ordering` etc.
26288    ///       - because of this, it's strongly recommended to ensure that all source
26289    ///         tracks have the same value for these properties.
26290    ///       - the trace processor will also emit an error stat if it detects
26291    ///         that the properties are not the same across all source tracks.
26292    ///
26293    /// Note: merging is done *recursively* so entire trees of tracks can be merged
26294    /// together. To make this clearer, consider an example track hierarchy (in
26295    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
26296    /// track line, like "Updater", is its 'name' property):
26297    ///
26298    ///    Initial track hierarchy:
26299    ///      SystemActivity
26300    ///      ├── AuthService (smk: "auth_main_cluster")
26301    ///      │   └── LoginOp (smk: "login_v1")
26302    ///      ├── AuthService (smk: "auth_main_cluster")
26303    ///      │   └── LoginOp (smk: "login_v1")
26304    ///      ├── AuthService (smk: "auth_backup_cluster")
26305    ///      │   └── GuestOp (smk: "guest_v1")
26306    ///      └── UserProfileService (smk: "profile_cluster")
26307    ///          └── GetProfileOp (smk: "getprofile_v1")
26308    ///
26309    /// Merging outcomes:
26310    ///
26311    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
26312    ///    - The first two "AuthService" tracks merge because they share
26313    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
26314    ///      aligning with recommendations. The merged track is named "AuthService".
26315    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
26316    ///      remains separate, as its `sibling_merge_key` is different.
26317    ///    - "UserProfileService" also remains separate.
26318    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
26319    ///      "LoginOp" get merged as they have the same sibling merge key.
26320    ///
26321    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
26322    ///      SystemActivity
26323    ///      ├── AuthService (merged by smk: "auth_main_cluster")
26324    ///      │   ├── LoginOp (merged by smk: "login_v1")
26325    ///      ├── AuthService (smk: "auth_backup_cluster")
26326    ///      │   └── GuestOp (smk: "guest_v1")
26327    ///      └── UserProfileService (smk: "profile_cluster")
26328    ///          └── GetProfileOp (smk: "getprofile_v1")
26329    ///
26330    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
26331    ///    - All three tracks named "AuthService" merge because they share the same
26332    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
26333    ///      for this merged track would be taken from one of the source tracks
26334    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
26335    ///      relevant if its children had key-based merge behaviors.
26336    ///    - "UserProfileService" remains separate due to its different name.
26337    ///    - Within the single merged "AuthService" track:
26338    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
26339    ///      they have the same name.
26340    ///
26341    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
26342    ///      SystemActivity
26343    ///      ├── AuthService (merged from 3 "AuthService" tracks)
26344    ///      │   ├── LoginOp (smk: "login_v1")
26345    ///      │   └── GuestOp (smk: "guest_v1")
26346    ///      └── UserProfileService (smk: "profile_cluster")
26347    ///          └── GetProfileOp (smk: "getprofile_v1")
26348    ///
26349    /// Note: for tracks where `thread` or `process` are set, this option is
26350    /// *ignored*. See `parent_uuid` for details.
26351    #[derive(
26352        Clone,
26353        Copy,
26354        Debug,
26355        PartialEq,
26356        Eq,
26357        Hash,
26358        PartialOrd,
26359        Ord,
26360        ::prost::Enumeration
26361    )]
26362    #[repr(i32)]
26363    pub enum SiblingMergeBehavior {
26364        /// When unspecified or not set, defaults to
26365        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
26366        Unspecified = 0,
26367        /// Merge this track with eligible siblings which have the same `name`.
26368        ///
26369        /// This is the default behavior.option.
26370        ///
26371        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
26372        /// worked this way for years and inherited this behavior from
26373        /// chrome://tracing which has worked this way for even longer
26374        ByTrackName = 1,
26375        /// Never merge this track with any siblings. Useful if if this track has a
26376        /// specific meaning and you want to see separately from any others.
26377        None = 2,
26378        /// Merge this track with eligible siblings which have the same
26379        /// `sibling_merge_key`.
26380        BySiblingMergeKey = 3,
26381    }
26382    impl SiblingMergeBehavior {
26383        /// String value of the enum field names used in the ProtoBuf definition.
26384        ///
26385        /// The values are not transformed in any way and thus are considered stable
26386        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26387        pub fn as_str_name(&self) -> &'static str {
26388            match self {
26389                Self::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
26390                Self::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
26391                Self::None => "SIBLING_MERGE_BEHAVIOR_NONE",
26392                Self::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
26393            }
26394        }
26395        /// Creates an enum from field names used in the ProtoBuf definition.
26396        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26397            match value {
26398                "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED" => Some(Self::Unspecified),
26399                "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME" => Some(Self::ByTrackName),
26400                "SIBLING_MERGE_BEHAVIOR_NONE" => Some(Self::None),
26401                "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY" => {
26402                    Some(Self::BySiblingMergeKey)
26403                }
26404                _ => None,
26405            }
26406        }
26407    }
26408    /// Specifies how the UI should display top-level process tracks relative to
26409    /// each other. Note that this value is simply a *hint* to the UI and is only
26410    /// valid on the root track descriptor (uuid = 0).
26411    #[derive(
26412        Clone,
26413        Copy,
26414        Debug,
26415        PartialEq,
26416        Eq,
26417        Hash,
26418        PartialOrd,
26419        Ord,
26420        ::prost::Enumeration
26421    )]
26422    #[repr(i32)]
26423    pub enum ProcessOrdering {
26424        /// The default ordering, with no bearing on how the UI will visualise the
26425        /// processes.
26426        Unspecified = 0,
26427        /// Order processes by `sibling_order_rank` of their process track
26428        /// descriptors. Processes with lower ranks will be shown before processes
26429        /// with higher ranks. Processes with no rank specified will be treated as
26430        /// having a rank of 0.
26431        Explicit = 1,
26432    }
26433    impl ProcessOrdering {
26434        /// String value of the enum field names used in the ProtoBuf definition.
26435        ///
26436        /// The values are not transformed in any way and thus are considered stable
26437        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26438        pub fn as_str_name(&self) -> &'static str {
26439            match self {
26440                Self::Unspecified => "PROCESS_ORDERING_UNSPECIFIED",
26441                Self::Explicit => "PROCESS_ORDERING_EXPLICIT",
26442            }
26443        }
26444        /// Creates an enum from field names used in the ProtoBuf definition.
26445        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26446            match value {
26447                "PROCESS_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
26448                "PROCESS_ORDERING_EXPLICIT" => Some(Self::Explicit),
26449                _ => None,
26450            }
26451        }
26452    }
26453    /// Specifies how the UI should display thread tracks within a process group
26454    /// relative to each other. Note that this value is simply a *hint* to the UI
26455    /// and is only valid on the root track descriptor (uuid = 0).
26456    #[derive(
26457        Clone,
26458        Copy,
26459        Debug,
26460        PartialEq,
26461        Eq,
26462        Hash,
26463        PartialOrd,
26464        Ord,
26465        ::prost::Enumeration
26466    )]
26467    #[repr(i32)]
26468    pub enum ThreadOrdering {
26469        /// The default ordering, with no bearing on how the UI will visualise the
26470        /// threads.
26471        Unspecified = 0,
26472        /// Order threads by `sibling_order_rank` of their thread track descriptors.
26473        /// Threads with lower ranks will be shown before threads with higher ranks.
26474        /// Threads with no rank specified will be treated as having a rank of 0.
26475        Explicit = 1,
26476    }
26477    impl ThreadOrdering {
26478        /// String value of the enum field names used in the ProtoBuf definition.
26479        ///
26480        /// The values are not transformed in any way and thus are considered stable
26481        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26482        pub fn as_str_name(&self) -> &'static str {
26483            match self {
26484                Self::Unspecified => "THREAD_ORDERING_UNSPECIFIED",
26485                Self::Explicit => "THREAD_ORDERING_EXPLICIT",
26486            }
26487        }
26488        /// Creates an enum from field names used in the ProtoBuf definition.
26489        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26490            match value {
26491                "THREAD_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
26492                "THREAD_ORDERING_EXPLICIT" => Some(Self::Explicit),
26493                _ => None,
26494            }
26495        }
26496    }
26497    /// Name of the track.
26498    ///
26499    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
26500    /// emitted before any `TrackEvent`s on the same track.
26501    ///
26502    /// Note: any name specified here will be *ignored* for the root thread scoped
26503    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
26504    /// case, the name of the track is shared by many different data sources and so
26505    /// is centrally controlled by trace processor.
26506    ///
26507    /// It's strongly recommended to only emit the name for a track uuid *once*. If
26508    /// a descriptor *has* to be emitted multiple times (e.g. between different
26509    /// processes), it's recommended to ensure that the name is consistent across
26510    /// all TrackDescriptors with the same `uuid`.
26511    ///
26512    /// If the the above recommendation is not followed and the same uuid is
26513    /// emitted with different names, it is implementation defined how the final
26514    /// name will be chosen and may change at any time.
26515    ///
26516    /// The current implementation of trace processor chooses the name in the
26517    /// following way, depending on the value of the `sibling_merge_behavior`
26518    /// field:
26519    ///
26520    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
26521    ///    * The *last* non-null name in the whole trace according to trace order
26522    ///      will be used.
26523    ///    * If no non-null name is present in the whole trace, the trace processor
26524    ///      may fall back to other sources to provide a name for the track (e.g.
26525    ///      the first event name for slice tracks, the counter name for counter
26526    ///      tracks). This is implementation defined and may change at any time.
26527    ///
26528    /// 2. If `sibling_merge_behavior` is set to any other value:
26529    ///    * The first non-null name before the first event on the track *or on any
26530    ///      descendant tracks* is processed will be used. For example, consider
26531    ///      the following sequence of events:
26532    ///        ts=100: TrackDescriptor(uuid=A)
26533    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
26534    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
26535    ///        ts=400: TrackEvent(track_uuid=B)
26536    ///      In this case, the name for track A will be "Track A" because the
26537    ///      descriptor with the name was emitted before the first event on a
26538    ///      descendant track (B).
26539    ///    * If no non-null name is present before the event is processed, the trace
26540    ///      processor may fall back to other sources to provide a name for the
26541    ///      track (e.g. the first event name for slice tracks, the counter name for
26542    ///      counter tracks). This is implementation defined and may change at any
26543    ///      time.
26544    ///    * Note on processing order: In the standard trace processor pipeline,
26545    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
26546    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
26547    ///      track, all its descriptors in the trace are processed before its
26548    ///      events. Consequently, the "first non-null name before the first event"
26549    ///      will be the name from the first `TrackDescriptor` for that track in the
26550    ///      trace file that has a non-null name. However, in a streaming parsing
26551    ///      scenario, the timestamp order of descriptors and events is significant,
26552    ///      and a descriptor arriving after an event has been processed will not be
26553    ///      used to name the track.
26554    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
26555    pub enum StaticOrDynamicName {
26556        #[prost(string, tag = "2")]
26557        Name(::prost::alloc::string::String),
26558        /// This field is only set by the SDK when perfetto::StaticString is
26559        /// provided.
26560        #[prost(string, tag = "10")]
26561        StaticName(::prost::alloc::string::String),
26562        /// Equivalent to name, used just to mark that the data is coming from
26563        /// android.os.Trace.
26564        #[prost(string, tag = "13")]
26565        AtraceName(::prost::alloc::string::String),
26566    }
26567    /// An opaque value which allows specifying which tracks should be merged
26568    /// together.
26569    ///
26570    /// Only meaningful when `sibling_merge_behavior` is set to
26571    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
26572    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
26573    pub enum SiblingMergeKeyField {
26574        #[prost(string, tag = "16")]
26575        SiblingMergeKey(::prost::alloc::string::String),
26576        #[prost(uint64, tag = "17")]
26577        SiblingMergeKeyInt(u64),
26578    }
26579}
26580/// Translation rules for the trace processor.
26581/// See the comments for each rule type for specific meaning.
26582#[derive(Clone, PartialEq, ::prost::Message)]
26583pub struct TranslationTable {
26584    #[prost(oneof = "translation_table::Table", tags = "1, 2, 3, 4, 5, 6")]
26585    pub table: ::core::option::Option<translation_table::Table>,
26586}
26587/// Nested message and enum types in `TranslationTable`.
26588pub mod translation_table {
26589    #[derive(Clone, PartialEq, ::prost::Oneof)]
26590    pub enum Table {
26591        #[prost(message, tag = "1")]
26592        ChromeHistogram(super::ChromeHistorgramTranslationTable),
26593        #[prost(message, tag = "2")]
26594        ChromeUserEvent(super::ChromeUserEventTranslationTable),
26595        #[prost(message, tag = "3")]
26596        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
26597        #[prost(message, tag = "4")]
26598        SliceName(super::SliceNameTranslationTable),
26599        #[prost(message, tag = "5")]
26600        ProcessTrackName(super::ProcessTrackNameTranslationTable),
26601        #[prost(message, tag = "6")]
26602        ChromeStudy(super::ChromeStudyTranslationTable),
26603    }
26604}
26605/// Chrome histogram sample hash -> name translation rules.
26606#[derive(Clone, PartialEq, ::prost::Message)]
26607pub struct ChromeHistorgramTranslationTable {
26608    #[prost(map = "uint64, string", tag = "1")]
26609    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
26610}
26611/// Chrome user event action hash -> name translation rules.
26612#[derive(Clone, PartialEq, ::prost::Message)]
26613pub struct ChromeUserEventTranslationTable {
26614    #[prost(map = "uint64, string", tag = "1")]
26615    pub action_hash_to_name: ::std::collections::HashMap<
26616        u64,
26617        ::prost::alloc::string::String,
26618    >,
26619}
26620/// Chrome performance mark translation rules.
26621#[derive(Clone, PartialEq, ::prost::Message)]
26622pub struct ChromePerformanceMarkTranslationTable {
26623    #[prost(map = "uint32, string", tag = "1")]
26624    pub site_hash_to_name: ::std::collections::HashMap<
26625        u32,
26626        ::prost::alloc::string::String,
26627    >,
26628    #[prost(map = "uint32, string", tag = "2")]
26629    pub mark_hash_to_name: ::std::collections::HashMap<
26630        u32,
26631        ::prost::alloc::string::String,
26632    >,
26633}
26634/// Raw -> deobfuscated slice name translation rules.
26635#[derive(Clone, PartialEq, ::prost::Message)]
26636pub struct SliceNameTranslationTable {
26637    #[prost(map = "string, string", tag = "1")]
26638    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
26639        ::prost::alloc::string::String,
26640        ::prost::alloc::string::String,
26641    >,
26642}
26643/// Raw -> deobfuscated process track name translation rules.
26644#[derive(Clone, PartialEq, ::prost::Message)]
26645pub struct ProcessTrackNameTranslationTable {
26646    #[prost(map = "string, string", tag = "1")]
26647    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
26648        ::prost::alloc::string::String,
26649        ::prost::alloc::string::String,
26650    >,
26651}
26652/// Chrome study hash -> name translation rules.
26653#[derive(Clone, PartialEq, ::prost::Message)]
26654pub struct ChromeStudyTranslationTable {
26655    #[prost(map = "uint64, string", tag = "1")]
26656    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
26657}
26658/// When a TracingSession receives a trigger it records the boot time nanoseconds
26659/// in the TracePacket's timestamp field as well as the name of the producer that
26660/// triggered it. We emit this data so filtering can be done on triggers received
26661/// in the trace.
26662#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26663pub struct Trigger {
26664    /// Name of the trigger which was received.
26665    #[prost(string, optional, tag = "1")]
26666    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
26667    /// The actual producer that activated |trigger|.
26668    #[prost(string, optional, tag = "2")]
26669    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
26670    /// The verified UID of the producer.
26671    #[prost(int32, optional, tag = "3")]
26672    pub trusted_producer_uid: ::core::option::Option<i32>,
26673    /// The value of stop_delay_ms from the configuration.
26674    #[prost(uint64, optional, tag = "4")]
26675    pub stop_delay_ms: ::core::option::Option<u64>,
26676}
26677/// Common state for UIs visualizing Perfetto traces.
26678/// This message can be appended as a TracePacket by UIs to save the
26679/// visible state (e.g. scroll position/zoom state) for future opening
26680/// of the trace.
26681/// Design doc: go/trace-ui-state.
26682#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26683pub struct UiState {
26684    /// The start and end bounds of the viewport of the UI in nanoseconds.
26685    ///
26686    /// This is the absolute time associated to slices and other events in
26687    /// trace processor tables (i.e. the |ts| column of most tables)
26688    #[prost(int64, optional, tag = "1")]
26689    pub timeline_start_ts: ::core::option::Option<i64>,
26690    #[prost(int64, optional, tag = "2")]
26691    pub timeline_end_ts: ::core::option::Option<i64>,
26692    #[prost(message, optional, tag = "3")]
26693    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
26694}
26695/// Nested message and enum types in `UiState`.
26696pub mod ui_state {
26697    /// Indicates that the given process should be highlighted by the UI.
26698    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26699    pub struct HighlightProcess {
26700        #[prost(oneof = "highlight_process::Selector", tags = "1, 2")]
26701        pub selector: ::core::option::Option<highlight_process::Selector>,
26702    }
26703    /// Nested message and enum types in `HighlightProcess`.
26704    pub mod highlight_process {
26705        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
26706        pub enum Selector {
26707            /// The pid of the process to highlight. This is useful for UIs to focus
26708            /// on tracks of a particular process in the trace.
26709            ///
26710            /// If more than one process in a trace has the same pid, it is UI
26711            /// implementation specific how the process to be focused will be
26712            /// chosen.
26713            #[prost(uint32, tag = "1")]
26714            Pid(u32),
26715            /// The command line of the process to highlight; for most Android apps,
26716            /// this is the package name of the app. This is useful for UIs to focus
26717            /// on a particular app in the trace.
26718            ///
26719            /// If more than one process hasthe same cmdline, it is UI implementation
26720            /// specific how the process to be focused will be chosen.
26721            #[prost(string, tag = "2")]
26722            Cmdline(::prost::alloc::string::String),
26723        }
26724    }
26725}
26726/// TracePacket is the root object of a Perfetto trace.
26727/// A Perfetto trace is a linear sequence of TracePacket(s).
26728///
26729/// The tracing service guarantees that all TracePacket(s) written by a given
26730/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
26731/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
26732/// to the Consumer (or written into the trace file).
26733/// TracePacket(s) written by different TraceWriter(s), hence even different
26734/// data sources, can be seen in arbitrary order.
26735/// The consumer can re-establish a total order, if interested, using the packet
26736/// timestamps, after having synchronized the different clocks onto a global
26737/// clock.
26738///
26739/// The tracing service is agnostic of the content of TracePacket, with the
26740/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
26741/// the service itself.
26742///
26743/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
26744///
26745/// Next reserved id: 14 (up to 15).
26746/// Next id: 139.
26747#[derive(Clone, PartialEq, ::prost::Message)]
26748pub struct TracePacket {
26749    /// The timestamp of the TracePacket.
26750    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
26751    /// Android). It can be overridden using a different timestamp_clock_id.
26752    /// The clock domain definition in ClockSnapshot can also override:
26753    /// - The unit (default: 1ns).
26754    /// - The absolute vs delta encoding (default: absolute timestamp).
26755    #[prost(uint64, optional, tag = "8")]
26756    pub timestamp: ::core::option::Option<u64>,
26757    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
26758    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
26759    /// producer-defined clock id.
26760    /// If unspecified and if no default per-sequence value has been provided via
26761    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
26762    #[prost(uint32, optional, tag = "58")]
26763    pub timestamp_clock_id: ::core::option::Option<u32>,
26764    /// Trusted process id of the producer which generated this packet, written by
26765    /// the service.
26766    #[prost(int32, optional, tag = "79")]
26767    pub trusted_pid: ::core::option::Option<i32>,
26768    /// Incrementally emitted interned data, valid only on the packet's sequence
26769    /// (packets with the same |trusted_packet_sequence_id|). The writer will
26770    /// usually emit new interned data in the same TracePacket that first refers to
26771    /// it (since the last reset of interning state). It may also be emitted
26772    /// proactively in advance of referring to them in later packets.
26773    #[prost(message, optional, tag = "12")]
26774    pub interned_data: ::core::option::Option<InternedData>,
26775    #[prost(uint32, optional, tag = "13")]
26776    pub sequence_flags: ::core::option::Option<u32>,
26777    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
26778    #[prost(bool, optional, tag = "41")]
26779    pub incremental_state_cleared: ::core::option::Option<bool>,
26780    /// Default values for fields of later TracePackets emitted on this packet's
26781    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
26782    /// It must be reemitted when incremental state is cleared (see
26783    /// |incremental_state_cleared|).
26784    /// Requires that any future packet emitted on the same sequence specifies
26785    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
26786    /// TracePacketDefaults always override the global defaults for any future
26787    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
26788    #[prost(message, optional, tag = "59")]
26789    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
26790    /// Set by the service if, for the current packet sequence (see
26791    /// |trusted_packet_sequence_id|), either:
26792    /// * this is the first packet, or
26793    /// * one or multiple packets were dropped since the last packet that the
26794    ///    consumer read from the sequence. This can happen if chunks in the trace
26795    ///    buffer are overridden before the consumer could read them when the trace
26796    ///    is configured in ring buffer mode.
26797    ///
26798    /// 0 means not dropped, nonzero means dropped (so this stays compatible with
26799    /// the historical bool semantics). The value is a DataLossReason bitmask:
26800    /// DATA_LOSS_PRESENT (bit 0) is always set when there is a loss, and
26801    /// TraceBufferV2 additionally sets a bit identifying the cause. TraceBufferV1
26802    /// and producer-signalled drops set the bare value 1 (DATA_LOSS_PRESENT), i.e.
26803    /// dropped with no specific cause attributed.
26804    ///
26805    /// When packet loss occurs, incrementally emitted data (including interned
26806    /// data) on the sequence should be considered invalid up until the next packet
26807    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
26808    #[prost(uint32, optional, tag = "42")]
26809    pub previous_packet_dropped: ::core::option::Option<u32>,
26810    /// Flag set by a producer (starting from SDK v29) if, for the current packet
26811    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
26812    ///
26813    /// This flag can be used for distinguishing the two situations when
26814    /// processing the trace:
26815    /// 1. There are no prior events for the sequence because of data loss, e.g.
26816    ///     due to ring buffer wrapping.
26817    /// 2. There are no prior events for the sequence because it didn't start
26818    ///     before this packet (= there's definitely no preceding data loss).
26819    ///
26820    /// Given that older SDK versions do not support this flag, this flag not
26821    /// being present for a particular sequence does not necessarily imply data
26822    /// loss.
26823    #[prost(bool, optional, tag = "87")]
26824    pub first_packet_on_sequence: ::core::option::Option<bool>,
26825    /// The machine ID for identifying trace packets in a multi-machine tracing
26826    /// session. Is emitted by the tracing service for producers running on a
26827    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
26828    #[prost(uint32, optional, tag = "98")]
26829    pub machine_id: ::core::option::Option<u32>,
26830    #[prost(
26831        oneof = "trace_packet::Data",
26832        tags = "11, 60, 117, 118, 120, 122, 129, 2, 90, 9, 4, 5, 6, 7, 89, 33, 34, 35, 37, 74, 75, 38, 40, 39, 45, 46, 109, 47, 48, 49, 51, 52, 53, 54, 131, 57, 62, 63, 65, 66, 67, 68, 69, 134, 135, 70, 71, 73, 77, 78, 82, 83, 84, 86, 91, 124, 125, 126, 127, 128, 130, 61, 64, 43, 44, 1, 36, 50, 133, 72, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 115, 119, 123, 132, 138, 900, 76"
26833    )]
26834    pub data: ::core::option::Option<trace_packet::Data>,
26835    /// Trusted user id of the producer which generated this packet. Keep in sync
26836    /// with TrustedPacket.trusted_uid.
26837    ///
26838    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
26839    /// instead.
26840    #[prost(oneof = "trace_packet::OptionalTrustedUid", tags = "3")]
26841    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
26842    /// Service-assigned identifier of the packet sequence this packet belongs to.
26843    /// Uniquely identifies a producer + writer pair within the tracing session. A
26844    /// value of zero denotes an invalid ID. Keep in sync with
26845    /// TrustedPacket.trusted_packet_sequence_id.
26846    #[prost(oneof = "trace_packet::OptionalTrustedPacketSequenceId", tags = "10")]
26847    pub optional_trusted_packet_sequence_id: ::core::option::Option<
26848        trace_packet::OptionalTrustedPacketSequenceId,
26849    >,
26850}
26851/// Nested message and enum types in `TracePacket`.
26852pub mod trace_packet {
26853    /// Encapsulates the state and configuration of the ProtoVM instances running
26854    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
26855    /// and use them to inflate patches into full-state packets.
26856    /// Note: this message can't be defined in a dedicated file because it has a
26857    /// recursive dependency with TracePacket (see 'state' field below).
26858    #[derive(Clone, PartialEq, ::prost::Message)]
26859    pub struct ProtoVms {
26860        #[prost(message, repeated, tag = "1")]
26861        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
26862    }
26863    /// Nested message and enum types in `ProtoVms`.
26864    pub mod proto_vms {
26865        #[derive(Clone, PartialEq, ::prost::Message)]
26866        pub struct Instance {
26867            #[prost(message, optional, tag = "1")]
26868            pub program: ::core::option::Option<super::super::VmProgram>,
26869            #[prost(message, optional, tag = "2")]
26870            pub state: ::core::option::Option<super::super::TracePacket>,
26871            #[prost(uint32, optional, tag = "3")]
26872            pub memory_limit_kb: ::core::option::Option<u32>,
26873            #[prost(int32, repeated, packed = "false", tag = "4")]
26874            pub producer_id: ::prost::alloc::vec::Vec<i32>,
26875        }
26876    }
26877    #[derive(
26878        Clone,
26879        Copy,
26880        Debug,
26881        PartialEq,
26882        Eq,
26883        Hash,
26884        PartialOrd,
26885        Ord,
26886        ::prost::Enumeration
26887    )]
26888    #[repr(i32)]
26889    pub enum SequenceFlags {
26890        SeqUnspecified = 0,
26891        /// Set by the writer to indicate that it will re-emit any incremental data
26892        /// for the packet's sequence before referring to it again. This includes
26893        /// interned data as well as periodically emitted data like
26894        /// Process/ThreadDescriptors. This flag only affects the current packet
26895        /// sequence (see |trusted_packet_sequence_id|).
26896        ///
26897        /// When set, this TracePacket and subsequent TracePackets on the same
26898        /// sequence will not refer to any incremental data emitted before this
26899        /// TracePacket. For example, previously emitted interned data will be
26900        /// re-emitted if it is referred to again.
26901        ///
26902        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
26903        /// to skip packets in the sequence until the next one with this flag set, to
26904        /// ensure intact incremental data.
26905        SeqIncrementalStateCleared = 1,
26906        /// This packet requires incremental state, such as TracePacketDefaults or
26907        /// InternedData, to be parsed correctly. The trace reader should skip this
26908        /// packet if incremental state is not valid on this sequence, i.e. if no
26909        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
26910        /// current |trusted_packet_sequence_id|.
26911        SeqNeedsIncrementalState = 2,
26912    }
26913    impl SequenceFlags {
26914        /// String value of the enum field names used in the ProtoBuf definition.
26915        ///
26916        /// The values are not transformed in any way and thus are considered stable
26917        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26918        pub fn as_str_name(&self) -> &'static str {
26919            match self {
26920                Self::SeqUnspecified => "SEQ_UNSPECIFIED",
26921                Self::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
26922                Self::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
26923            }
26924        }
26925        /// Creates an enum from field names used in the ProtoBuf definition.
26926        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26927            match value {
26928                "SEQ_UNSPECIFIED" => Some(Self::SeqUnspecified),
26929                "SEQ_INCREMENTAL_STATE_CLEARED" => Some(Self::SeqIncrementalStateCleared),
26930                "SEQ_NEEDS_INCREMENTAL_STATE" => Some(Self::SeqNeedsIncrementalState),
26931                _ => None,
26932            }
26933        }
26934    }
26935    /// Bit flags OR-ed together into |previous_packet_dropped| to describe why
26936    /// packets were dropped. DATA_LOSS_PRESENT is set on every loss; the remaining
26937    /// bits attribute the cause and are set either by TraceBufferV2 in the service
26938    /// or by the producer's trace writer.
26939    #[derive(
26940        Clone,
26941        Copy,
26942        Debug,
26943        PartialEq,
26944        Eq,
26945        Hash,
26946        PartialOrd,
26947        Ord,
26948        ::prost::Enumeration
26949    )]
26950    #[repr(i32)]
26951    pub enum DataLossReason {
26952        DataLossUnspecified = 0,
26953        /// A loss was detected (set on every loss). On its own (value 1) it means
26954        /// dropped with no specific cause, e.g. TraceBufferV1 or a producer.
26955        DataLossPresent = 1,
26956        /// A read started on a non-successor ChunkID (a gap in the stream), or a
26957        /// proto-group sequence resumed after a recorded loss.
26958        DataLossReadGap = 2,
26959        /// A chunk's fragments couldn't be tokenized (malformed / out-of-bounds),
26960        /// or a proto-group packet couldn't be rewritten. The buffer stats
26961        /// abi_violations and oversized_packets_dropped tell the two rewrite
26962        /// failures apart.
26963        DataLossChunkCorrupted = 4,
26964        /// A continuation/end fragment with no preceding begin fragment.
26965        DataLossOrphanContinuation = 8,
26966        /// Reassembly abandoned because of a ChunkID gap mid-packet.
26967        DataLossReassemblyGap = 16,
26968        /// Reassembly abandoned because the fragment chain was broken even though
26969        /// the ChunkIDs were contiguous.
26970        DataLossReassemblyBrokenChain = 32,
26971        /// Unconsumed fragments were evicted while overwriting (ring buffer wrap).
26972        DataLossOverwrite = 64,
26973        /// The trace writer aborted an in-progress fragmented packet (it stamped
26974        /// the kPacketSizeDropPacket sentinel in the last fragment header).
26975        DataLossWriterAbort = 128,
26976        /// The producer's shared memory buffer was full: the trace writer couldn't
26977        /// acquire a chunk and dropped packets until one became available. Set by
26978        /// the producer, not the service.
26979        DataLossSmbFull = 256,
26980    }
26981    impl DataLossReason {
26982        /// String value of the enum field names used in the ProtoBuf definition.
26983        ///
26984        /// The values are not transformed in any way and thus are considered stable
26985        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26986        pub fn as_str_name(&self) -> &'static str {
26987            match self {
26988                Self::DataLossUnspecified => "DATA_LOSS_UNSPECIFIED",
26989                Self::DataLossPresent => "DATA_LOSS_PRESENT",
26990                Self::DataLossReadGap => "DATA_LOSS_READ_GAP",
26991                Self::DataLossChunkCorrupted => "DATA_LOSS_CHUNK_CORRUPTED",
26992                Self::DataLossOrphanContinuation => "DATA_LOSS_ORPHAN_CONTINUATION",
26993                Self::DataLossReassemblyGap => "DATA_LOSS_REASSEMBLY_GAP",
26994                Self::DataLossReassemblyBrokenChain => {
26995                    "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN"
26996                }
26997                Self::DataLossOverwrite => "DATA_LOSS_OVERWRITE",
26998                Self::DataLossWriterAbort => "DATA_LOSS_WRITER_ABORT",
26999                Self::DataLossSmbFull => "DATA_LOSS_SMB_FULL",
27000            }
27001        }
27002        /// Creates an enum from field names used in the ProtoBuf definition.
27003        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27004            match value {
27005                "DATA_LOSS_UNSPECIFIED" => Some(Self::DataLossUnspecified),
27006                "DATA_LOSS_PRESENT" => Some(Self::DataLossPresent),
27007                "DATA_LOSS_READ_GAP" => Some(Self::DataLossReadGap),
27008                "DATA_LOSS_CHUNK_CORRUPTED" => Some(Self::DataLossChunkCorrupted),
27009                "DATA_LOSS_ORPHAN_CONTINUATION" => Some(Self::DataLossOrphanContinuation),
27010                "DATA_LOSS_REASSEMBLY_GAP" => Some(Self::DataLossReassemblyGap),
27011                "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN" => {
27012                    Some(Self::DataLossReassemblyBrokenChain)
27013                }
27014                "DATA_LOSS_OVERWRITE" => Some(Self::DataLossOverwrite),
27015                "DATA_LOSS_WRITER_ABORT" => Some(Self::DataLossWriterAbort),
27016                "DATA_LOSS_SMB_FULL" => Some(Self::DataLossSmbFull),
27017                _ => None,
27018            }
27019        }
27020    }
27021    #[derive(Clone, PartialEq, ::prost::Oneof)]
27022    pub enum Data {
27023        ///
27024        /// == STABLE PUBLIC API: TrackEvent ==
27025        ///
27026        /// TrackEvent is the stable, extensible API for recording trace events.
27027        /// See docs/instrumentation/track-events.md for details.
27028        #[prost(message, tag = "11")]
27029        TrackEvent(super::TrackEvent),
27030        #[prost(message, tag = "60")]
27031        TrackDescriptor(super::TrackDescriptor),
27032        ///
27033        /// == STABLE PUBLIC API: GENERIC KERNEL EVENTS ==
27034        ///
27035        /// Stable API for OS-level and hardware events from non-ftrace data
27036        /// sources.
27037        #[prost(message, tag = "117")]
27038        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
27039        #[prost(message, tag = "118")]
27040        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
27041        #[prost(message, tag = "120")]
27042        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
27043        #[prost(message, tag = "122")]
27044        GenericKernelProcessTree(super::GenericKernelProcessTree),
27045        #[prost(message, tag = "129")]
27046        GenericGpuFrequencyEvent(super::GenericGpuFrequencyEvent),
27047        /// IDs up to 15 are reserved. They take only one byte to encode their
27048        /// preamble so should be used for frequent events.
27049        #[prost(message, tag = "2")]
27050        ProcessTree(super::ProcessTree),
27051        #[prost(message, tag = "90")]
27052        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
27053        #[prost(message, tag = "9")]
27054        ProcessStats(super::ProcessStats),
27055        #[prost(message, tag = "4")]
27056        InodeFileMap(super::InodeFileMap),
27057        #[prost(message, tag = "5")]
27058        ChromeEvents(super::ChromeEventBundle),
27059        #[prost(message, tag = "6")]
27060        ClockSnapshot(super::ClockSnapshot),
27061        #[prost(message, tag = "7")]
27062        SysStats(super::SysStats),
27063        #[prost(message, tag = "89")]
27064        TraceUuid(super::TraceUuid),
27065        #[prost(message, tag = "33")]
27066        TraceConfig(super::TraceConfig),
27067        #[prost(message, tag = "34")]
27068        FtraceStats(super::FtraceStats),
27069        #[prost(message, tag = "35")]
27070        TraceStats(super::TraceStats),
27071        #[prost(message, tag = "37")]
27072        ProfilePacket(super::ProfilePacket),
27073        #[prost(message, tag = "74")]
27074        StreamingAllocation(super::StreamingAllocation),
27075        #[prost(message, tag = "75")]
27076        StreamingFree(super::StreamingFree),
27077        #[prost(message, tag = "38")]
27078        Battery(super::BatteryCounters),
27079        #[prost(message, tag = "40")]
27080        PowerRails(super::PowerRails),
27081        #[prost(message, tag = "39")]
27082        AndroidLog(super::AndroidLogPacket),
27083        #[prost(message, tag = "45")]
27084        SystemInfo(super::SystemInfo),
27085        #[prost(message, tag = "46")]
27086        Trigger(super::Trigger),
27087        #[prost(message, tag = "109")]
27088        ChromeTrigger(super::ChromeTrigger),
27089        #[prost(message, tag = "47")]
27090        PackagesList(super::PackagesList),
27091        #[prost(message, tag = "48")]
27092        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
27093        #[prost(message, tag = "49")]
27094        PerfettoMetatrace(super::PerfettoMetatrace),
27095        #[prost(message, tag = "51")]
27096        ChromeMetadata(super::ChromeMetadataPacket),
27097        #[prost(message, tag = "52")]
27098        GpuCounterEvent(super::GpuCounterEvent),
27099        #[prost(message, tag = "53")]
27100        GpuRenderStageEvent(super::GpuRenderStageEvent),
27101        #[prost(message, tag = "54")]
27102        StreamingProfilePacket(super::StreamingProfilePacket),
27103        #[prost(message, tag = "131")]
27104        ArtProcessMetadata(super::ArtProcessMetadata),
27105        #[prost(message, tag = "57")]
27106        GraphicsFrameEvent(super::GraphicsFrameEvent),
27107        #[prost(message, tag = "62")]
27108        VulkanMemoryEvent(super::VulkanMemoryEvent),
27109        #[prost(message, tag = "63")]
27110        GpuLog(super::GpuLog),
27111        #[prost(message, tag = "65")]
27112        VulkanApiEvent(super::VulkanApiEvent),
27113        #[prost(message, tag = "66")]
27114        PerfSample(super::PerfSample),
27115        #[prost(message, tag = "67")]
27116        CpuInfo(super::CpuInfo),
27117        #[prost(message, tag = "68")]
27118        SmapsPacket(super::SmapsPacket),
27119        #[prost(message, tag = "69")]
27120        ServiceEvent(super::TracingServiceEvent),
27121        #[prost(message, tag = "134")]
27122        ConcurrentSessionEvent(super::ConcurrentSessionEvent),
27123        /// Transport-neutral stack sampling (see profiling/stack_sample.proto).
27124        /// Independent of PerfSample.
27125        #[prost(message, tag = "135")]
27126        StackSample(super::StackSample),
27127        #[prost(message, tag = "70")]
27128        InitialDisplayState(super::InitialDisplayState),
27129        #[prost(message, tag = "71")]
27130        GpuMemTotalEvent(super::GpuMemTotalEvent),
27131        #[prost(message, tag = "73")]
27132        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
27133        #[prost(message, tag = "77")]
27134        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
27135        #[prost(message, tag = "78")]
27136        UiState(super::UiState),
27137        #[prost(message, tag = "82")]
27138        TranslationTable(super::TranslationTable),
27139        #[prost(message, tag = "83")]
27140        AndroidGameInterventionList(super::AndroidGameInterventionList),
27141        #[prost(message, tag = "84")]
27142        StatsdAtom(super::StatsdAtom),
27143        #[prost(message, tag = "86")]
27144        AndroidSystemProperty(super::AndroidSystemProperty),
27145        #[prost(message, tag = "91")]
27146        EntityStateResidency(super::EntityStateResidency),
27147        #[prost(message, tag = "124")]
27148        TraceProvenance(super::TraceProvenance),
27149        #[prost(message, tag = "125")]
27150        Protovms(ProtoVms),
27151        #[prost(message, tag = "126")]
27152        TraceAttributes(super::TraceAttributes),
27153        #[prost(message, tag = "127")]
27154        AndroidAflags(super::AndroidAflags),
27155        #[prost(message, tag = "128")]
27156        GpuInfo(super::GpuInfo),
27157        #[prost(message, tag = "130")]
27158        InterruptInfo(super::InterruptInfo),
27159        /// Only used in profile packets.
27160        #[prost(message, tag = "61")]
27161        ModuleSymbols(super::ModuleSymbols),
27162        #[prost(message, tag = "64")]
27163        DeobfuscationMapping(super::DeobfuscationMapping),
27164        /// Deprecated, use TrackDescriptor instead.
27165        #[prost(message, tag = "43")]
27166        ProcessDescriptor(super::ProcessDescriptor),
27167        /// Deprecated, use TrackDescriptor instead.
27168        #[prost(message, tag = "44")]
27169        ThreadDescriptor(super::ThreadDescriptor),
27170        /// Events from the Linux kernel ftrace infrastructure.
27171        #[prost(message, tag = "1")]
27172        FtraceEvents(super::FtraceEventBundle),
27173        /// This field is emitted at periodic intervals (~10s) and
27174        /// contains always the binary representation of the UUID
27175        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
27176        /// efficiently partition long traces without having to fully parse them.
27177        #[prost(bytes, tag = "36")]
27178        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
27179        /// Zero or more proto encoded trace packets compressed using deflate.
27180        /// Each compressed_packets TracePacket (including the two field ids and
27181        /// sizes) should be less than 512KB.
27182        #[prost(bytes, tag = "50")]
27183        CompressedPackets(::prost::alloc::vec::Vec<u8>),
27184        /// The zstd counterpart of |compressed_packets|.
27185        #[prost(bytes, tag = "133")]
27186        ZstdCompressedPackets(::prost::alloc::vec::Vec<u8>),
27187        /// Data sources can extend the trace proto with custom extension protos (see
27188        /// docs/instrumentation/extensions.md). When they do that, the descriptor of
27189        /// their extension proto descriptor is serialized in this packet. This
27190        /// allows trace_processor to deserialize extended messages using reflection
27191        /// even if the extension proto is not checked in the Perfetto repo.
27192        #[prost(message, tag = "72")]
27193        ExtensionDescriptor(super::ExtensionDescriptor),
27194        /// Events from the Windows etw infrastructure.
27195        #[prost(message, tag = "95")]
27196        EtwEvents(super::EtwTraceEventBundle),
27197        #[prost(message, tag = "99")]
27198        V8JsCode(super::V8JsCode),
27199        #[prost(message, tag = "100")]
27200        V8InternalCode(super::V8InternalCode),
27201        #[prost(message, tag = "101")]
27202        V8WasmCode(super::V8WasmCode),
27203        #[prost(message, tag = "102")]
27204        V8RegExpCode(super::V8RegExpCode),
27205        #[prost(message, tag = "103")]
27206        V8CodeMove(super::V8CodeMove),
27207        /// Clock synchronization with remote machines.
27208        #[prost(message, tag = "107")]
27209        RemoteClockSync(super::RemoteClockSync),
27210        #[prost(message, tag = "110")]
27211        PixelModemEvents(super::PixelModemEvents),
27212        #[prost(message, tag = "111")]
27213        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
27214        #[prost(message, tag = "113")]
27215        CloneSnapshotTrigger(super::Trigger),
27216        #[prost(message, tag = "115")]
27217        KernelWakelockData(super::KernelWakelockData),
27218        #[prost(message, tag = "119")]
27219        CpuPerUidData(super::CpuPerUidData),
27220        #[prost(message, tag = "123")]
27221        UserList(super::AndroidUserList),
27222        #[prost(message, tag = "132")]
27223        JournaldEvent(super::SystemdJournaldEvent),
27224        /// Injected into TracePacket by perfetto post-reboot recovery to record
27225        /// recovered trace metadata.
27226        #[prost(message, tag = "138")]
27227        RecoveredTraceInfo(super::RecoveredTraceInfo),
27228        /// This field is only used for testing.
27229        /// In previous versions of this proto this field had the id 268435455
27230        /// This caused many problems:
27231        /// - protozero decoder does not handle field ids larger than 999.
27232        /// - old versions of protoc produce Java bindings with syntax errors when
27233        ///    the field id is large enough.
27234        #[prost(message, tag = "900")]
27235        ForTesting(super::TestEvent),
27236        #[prost(message, tag = "76")]
27237        FrameTimelineEvent(super::FrameTimelineEvent),
27238    }
27239    /// Trusted user id of the producer which generated this packet. Keep in sync
27240    /// with TrustedPacket.trusted_uid.
27241    ///
27242    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
27243    /// instead.
27244    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
27245    pub enum OptionalTrustedUid {
27246        #[prost(int32, tag = "3")]
27247        TrustedUid(i32),
27248    }
27249    /// Service-assigned identifier of the packet sequence this packet belongs to.
27250    /// Uniquely identifies a producer + writer pair within the tracing session. A
27251    /// value of zero denotes an invalid ID. Keep in sync with
27252    /// TrustedPacket.trusted_packet_sequence_id.
27253    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
27254    pub enum OptionalTrustedPacketSequenceId {
27255        #[prost(uint32, tag = "10")]
27256        TrustedPacketSequenceId(u32),
27257    }
27258}
27259/// Do NOT add any other field here. This is just a convenience wrapper for
27260/// the use case of a trace being saved to a file. There are other cases
27261/// (streaming) where TracePacket are directly streamed without being wrapped
27262/// in a Trace proto. Nothing should ever rely on the full trace, all the
27263/// logic should be based on TracePacket(s).
27264#[derive(Clone, PartialEq, ::prost::Message)]
27265pub struct Trace {
27266    #[prost(message, repeated, tag = "1")]
27267    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
27268}
27269/// Re-added for Fuchsia/Starnix compatibility:
27270#[derive(Clone, PartialEq, ::prost::Message)]
27271pub struct FrameTimelineEvent {
27272    #[prost(oneof = "frame_timeline_event::Event", tags = "1, 2, 3, 4, 5")]
27273    pub event: ::core::option::Option<frame_timeline_event::Event>,
27274}
27275/// Nested message and enum types in `FrameTimelineEvent`.
27276pub mod frame_timeline_event {
27277    /// Indicates the start of expected timeline slice for SurfaceFrames.
27278    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27279    pub struct ExpectedSurfaceFrameStart {
27280        /// Cookie used to correlate between the start and end messages of the same
27281        /// frame. Since all values except the ts are same for start and end, cookie
27282        /// helps in preventing redundant data transmission.
27283        /// The same cookie is used only by start and end messages of a single frame
27284        /// and is otherwise unique.
27285        #[prost(int64, optional, tag = "1")]
27286        pub cookie: ::core::option::Option<i64>,
27287        /// Token received by the app for its work. Can be shared between multiple
27288        /// layers of the same app (example: pip mode).
27289        #[prost(int64, optional, tag = "2")]
27290        pub token: ::core::option::Option<i64>,
27291        /// The corresponding DisplayFrame token is required to link the App's work
27292        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
27293        /// DisplayFrame.
27294        /// this.display_frame_token = DisplayFrame.token
27295        #[prost(int64, optional, tag = "3")]
27296        pub display_frame_token: ::core::option::Option<i64>,
27297        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
27298        /// the respective process track group.
27299        #[prost(int32, optional, tag = "4")]
27300        pub pid: ::core::option::Option<i32>,
27301        #[prost(string, optional, tag = "5")]
27302        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
27303    }
27304    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
27305    /// includes the jank information.
27306    #[derive(Clone, PartialEq, ::prost::Message)]
27307    pub struct ActualSurfaceFrameStart {
27308        /// Cookie used to correlate between the start and end messages of the same
27309        /// frame. Since all values except the ts are same for start and end, cookie
27310        /// helps in preventing redundant data transmission.
27311        /// The same cookie is used only by start and end messages of a single frame
27312        /// and is otherwise unique.
27313        #[prost(int64, optional, tag = "1")]
27314        pub cookie: ::core::option::Option<i64>,
27315        /// Token received by the app for its work. Can be shared between multiple
27316        /// layers of the same app (example: pip mode).
27317        #[prost(int64, optional, tag = "2")]
27318        pub token: ::core::option::Option<i64>,
27319        /// The corresponding DisplayFrame token is required to link the App's work
27320        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
27321        /// DisplayFrame.
27322        /// this.display_frame_token = DisplayFrame.token
27323        #[prost(int64, optional, tag = "3")]
27324        pub display_frame_token: ::core::option::Option<i64>,
27325        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
27326        /// the respective process track group.
27327        #[prost(int32, optional, tag = "4")]
27328        pub pid: ::core::option::Option<i32>,
27329        #[prost(string, optional, tag = "5")]
27330        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
27331        #[prost(enumeration = "PresentType", optional, tag = "6")]
27332        pub present_type: ::core::option::Option<i32>,
27333        #[prost(bool, optional, tag = "7")]
27334        pub on_time_finish: ::core::option::Option<bool>,
27335        #[prost(bool, optional, tag = "8")]
27336        pub gpu_composition: ::core::option::Option<bool>,
27337        /// A bitmask of JankType. More than one reason can be attributed to a janky
27338        /// frame.
27339        #[prost(int32, optional, tag = "9")]
27340        pub jank_type: ::core::option::Option<i32>,
27341        #[prost(enumeration = "PredictionType", optional, tag = "10")]
27342        pub prediction_type: ::core::option::Option<i32>,
27343        #[prost(bool, optional, tag = "11")]
27344        pub is_buffer: ::core::option::Option<bool>,
27345        #[prost(enumeration = "JankSeverityType", optional, tag = "12")]
27346        pub jank_severity_type: ::core::option::Option<i32>,
27347        #[prost(float, optional, tag = "13")]
27348        pub present_delay_millis: ::core::option::Option<f32>,
27349        #[prost(float, optional, tag = "14")]
27350        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
27351        #[prost(float, optional, tag = "15")]
27352        pub jank_severity_score: ::core::option::Option<f32>,
27353        /// experimental value for jank_type. Do not consider in jank analysis.
27354        #[prost(int32, optional, tag = "16")]
27355        pub jank_type_experimental: ::core::option::Option<i32>,
27356        /// experimental value for present_type. Do not consider in jank analysis.
27357        #[prost(enumeration = "PresentType", optional, tag = "17")]
27358        pub present_type_experimental: ::core::option::Option<i32>,
27359        /// jank metadata information (for debug).
27360        #[prost(float, optional, tag = "18")]
27361        pub jank_debug_metadata: ::core::option::Option<f32>,
27362        #[prost(
27363            enumeration = "actual_surface_frame_start::LatchedFenceState",
27364            optional,
27365            tag = "19"
27366        )]
27367        pub latched_fence_state: ::core::option::Option<i32>,
27368        /// animation time (ms) used when drawing this frame.
27369        #[prost(float, optional, tag = "20")]
27370        pub animation_time_millis: ::core::option::Option<f32>,
27371    }
27372    /// Nested message and enum types in `ActualSurfaceFrameStart`.
27373    pub mod actual_surface_frame_start {
27374        #[derive(
27375            Clone,
27376            Copy,
27377            Debug,
27378            PartialEq,
27379            Eq,
27380            Hash,
27381            PartialOrd,
27382            Ord,
27383            ::prost::Enumeration
27384        )]
27385        #[repr(i32)]
27386        pub enum LatchedFenceState {
27387            LatchedUnknown = 0,
27388            LatchedSignaled = 1,
27389            LatchedUnsignaled = 2,
27390            LatchedDelayedLatchUnsignaled = 3,
27391        }
27392        impl LatchedFenceState {
27393            /// String value of the enum field names used in the ProtoBuf definition.
27394            ///
27395            /// The values are not transformed in any way and thus are considered stable
27396            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27397            pub fn as_str_name(&self) -> &'static str {
27398                match self {
27399                    Self::LatchedUnknown => "LATCHED_UNKNOWN",
27400                    Self::LatchedSignaled => "LATCHED_SIGNALED",
27401                    Self::LatchedUnsignaled => "LATCHED_UNSIGNALED",
27402                    Self::LatchedDelayedLatchUnsignaled => {
27403                        "LATCHED_DELAYED_LATCH_UNSIGNALED"
27404                    }
27405                }
27406            }
27407            /// Creates an enum from field names used in the ProtoBuf definition.
27408            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27409                match value {
27410                    "LATCHED_UNKNOWN" => Some(Self::LatchedUnknown),
27411                    "LATCHED_SIGNALED" => Some(Self::LatchedSignaled),
27412                    "LATCHED_UNSIGNALED" => Some(Self::LatchedUnsignaled),
27413                    "LATCHED_DELAYED_LATCH_UNSIGNALED" => {
27414                        Some(Self::LatchedDelayedLatchUnsignaled)
27415                    }
27416                    _ => None,
27417                }
27418            }
27419        }
27420    }
27421    /// Indicates the start of expected timeline slice for DisplayFrames.
27422    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
27423    pub struct ExpectedDisplayFrameStart {
27424        /// Cookie used to correlate between the start and end messages of the same
27425        /// frame. Since all values except the ts are same for start and end, cookie
27426        /// helps in preventing redundant data transmission.
27427        /// The same cookie is used only by start and end messages of a single frame
27428        /// and is otherwise unique.
27429        #[prost(int64, optional, tag = "1")]
27430        pub cookie: ::core::option::Option<i64>,
27431        /// Token received by SurfaceFlinger for its work
27432        /// this.token = SurfaceFrame.display_frame_token
27433        #[prost(int64, optional, tag = "2")]
27434        pub token: ::core::option::Option<i64>,
27435        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
27436        /// inside the SurfaceFlinger process group.
27437        #[prost(int32, optional, tag = "3")]
27438        pub pid: ::core::option::Option<i32>,
27439    }
27440    /// Indicates the start of actual timeline slice for DisplayFrames. Also
27441    /// includes the jank information.
27442    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
27443    pub struct ActualDisplayFrameStart {
27444        /// Cookie used to correlate between the start and end messages of the same
27445        /// frame. Since all values except the ts are same for start and end, cookie
27446        /// helps in preventing redundant data transmission.
27447        /// The same cookie is used only by start and end messages of a single frame
27448        /// and is otherwise unique.
27449        #[prost(int64, optional, tag = "1")]
27450        pub cookie: ::core::option::Option<i64>,
27451        /// Token received by SurfaceFlinger for its work
27452        /// this.token = SurfaceFrame.display_frame_token
27453        #[prost(int64, optional, tag = "2")]
27454        pub token: ::core::option::Option<i64>,
27455        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
27456        /// inside the SurfaceFlinger process group.
27457        #[prost(int32, optional, tag = "3")]
27458        pub pid: ::core::option::Option<i32>,
27459        #[prost(enumeration = "PresentType", optional, tag = "4")]
27460        pub present_type: ::core::option::Option<i32>,
27461        #[prost(bool, optional, tag = "5")]
27462        pub on_time_finish: ::core::option::Option<bool>,
27463        #[prost(bool, optional, tag = "6")]
27464        pub gpu_composition: ::core::option::Option<bool>,
27465        /// A bitmask of JankType. More than one reason can be attributed to a janky
27466        /// frame.
27467        #[prost(int32, optional, tag = "7")]
27468        pub jank_type: ::core::option::Option<i32>,
27469        #[prost(enumeration = "PredictionType", optional, tag = "8")]
27470        pub prediction_type: ::core::option::Option<i32>,
27471        #[prost(enumeration = "JankSeverityType", optional, tag = "9")]
27472        pub jank_severity_type: ::core::option::Option<i32>,
27473        #[prost(float, optional, tag = "10")]
27474        pub present_delay_millis: ::core::option::Option<f32>,
27475        #[prost(float, optional, tag = "11")]
27476        pub jank_severity_score: ::core::option::Option<f32>,
27477        /// experimental value for jank_type. Do not consider in jank analysis.
27478        #[prost(int32, optional, tag = "12")]
27479        pub jank_type_experimental: ::core::option::Option<i32>,
27480        /// experimental value for present_type. Do not consider in jank analysis.
27481        #[prost(enumeration = "PresentType", optional, tag = "13")]
27482        pub present_type_experimental: ::core::option::Option<i32>,
27483        /// jank metadata information (for debug).
27484        #[prost(float, optional, tag = "14")]
27485        pub jank_debug_metadata: ::core::option::Option<f32>,
27486        #[prost(int64, optional, tag = "15")]
27487        pub latched_unsignaled_count: ::core::option::Option<i64>,
27488        #[prost(int64, optional, tag = "16")]
27489        pub addressable_unsignaled_latch_count: ::core::option::Option<i64>,
27490    }
27491    /// FrameEnd just sends the cookie to indicate that the corresponding
27492    /// <display/surface>frame slice's end.
27493    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
27494    pub struct FrameEnd {
27495        #[prost(int64, optional, tag = "1")]
27496        pub cookie: ::core::option::Option<i64>,
27497    }
27498    /// Specifies the reason(s) most likely to have caused the jank.
27499    /// Used as a bitmask.
27500    #[derive(
27501        Clone,
27502        Copy,
27503        Debug,
27504        PartialEq,
27505        Eq,
27506        Hash,
27507        PartialOrd,
27508        Ord,
27509        ::prost::Enumeration
27510    )]
27511    #[repr(i32)]
27512    pub enum JankType {
27513        JankUnspecified = 0,
27514        JankNone = 1,
27515        JankSfScheduling = 2,
27516        JankPredictionError = 4,
27517        JankDisplayHal = 8,
27518        JankSfCpuDeadlineMissed = 16,
27519        JankSfGpuDeadlineMissed = 32,
27520        JankAppDeadlineMissed = 64,
27521        JankBufferStuffing = 128,
27522        JankUnknown = 256,
27523        JankSfStuffing = 512,
27524        JankDropped = 1024,
27525        JankNonAnimating = 2048,
27526        JankAppResyncedJitter = 4096,
27527        JankDisplayNotOn = 8192,
27528        JankDisplayModeChangeInProgress = 16384,
27529        JankDisplayPowerModeChangeInProgress = 32768,
27530    }
27531    impl JankType {
27532        /// String value of the enum field names used in the ProtoBuf definition.
27533        ///
27534        /// The values are not transformed in any way and thus are considered stable
27535        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27536        pub fn as_str_name(&self) -> &'static str {
27537            match self {
27538                Self::JankUnspecified => "JANK_UNSPECIFIED",
27539                Self::JankNone => "JANK_NONE",
27540                Self::JankSfScheduling => "JANK_SF_SCHEDULING",
27541                Self::JankPredictionError => "JANK_PREDICTION_ERROR",
27542                Self::JankDisplayHal => "JANK_DISPLAY_HAL",
27543                Self::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
27544                Self::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
27545                Self::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
27546                Self::JankBufferStuffing => "JANK_BUFFER_STUFFING",
27547                Self::JankUnknown => "JANK_UNKNOWN",
27548                Self::JankSfStuffing => "JANK_SF_STUFFING",
27549                Self::JankDropped => "JANK_DROPPED",
27550                Self::JankNonAnimating => "JANK_NON_ANIMATING",
27551                Self::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
27552                Self::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
27553                Self::JankDisplayModeChangeInProgress => {
27554                    "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS"
27555                }
27556                Self::JankDisplayPowerModeChangeInProgress => {
27557                    "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS"
27558                }
27559            }
27560        }
27561        /// Creates an enum from field names used in the ProtoBuf definition.
27562        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27563            match value {
27564                "JANK_UNSPECIFIED" => Some(Self::JankUnspecified),
27565                "JANK_NONE" => Some(Self::JankNone),
27566                "JANK_SF_SCHEDULING" => Some(Self::JankSfScheduling),
27567                "JANK_PREDICTION_ERROR" => Some(Self::JankPredictionError),
27568                "JANK_DISPLAY_HAL" => Some(Self::JankDisplayHal),
27569                "JANK_SF_CPU_DEADLINE_MISSED" => Some(Self::JankSfCpuDeadlineMissed),
27570                "JANK_SF_GPU_DEADLINE_MISSED" => Some(Self::JankSfGpuDeadlineMissed),
27571                "JANK_APP_DEADLINE_MISSED" => Some(Self::JankAppDeadlineMissed),
27572                "JANK_BUFFER_STUFFING" => Some(Self::JankBufferStuffing),
27573                "JANK_UNKNOWN" => Some(Self::JankUnknown),
27574                "JANK_SF_STUFFING" => Some(Self::JankSfStuffing),
27575                "JANK_DROPPED" => Some(Self::JankDropped),
27576                "JANK_NON_ANIMATING" => Some(Self::JankNonAnimating),
27577                "JANK_APP_RESYNCED_JITTER" => Some(Self::JankAppResyncedJitter),
27578                "JANK_DISPLAY_NOT_ON" => Some(Self::JankDisplayNotOn),
27579                "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS" => {
27580                    Some(Self::JankDisplayModeChangeInProgress)
27581                }
27582                "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS" => {
27583                    Some(Self::JankDisplayPowerModeChangeInProgress)
27584                }
27585                _ => None,
27586            }
27587        }
27588    }
27589    /// Specifies the severity of a jank.
27590    #[derive(
27591        Clone,
27592        Copy,
27593        Debug,
27594        PartialEq,
27595        Eq,
27596        Hash,
27597        PartialOrd,
27598        Ord,
27599        ::prost::Enumeration
27600    )]
27601    #[repr(i32)]
27602    pub enum JankSeverityType {
27603        SeverityUnknown = 0,
27604        SeverityNone = 1,
27605        SeverityPartial = 2,
27606        SeverityFull = 3,
27607    }
27608    impl JankSeverityType {
27609        /// String value of the enum field names used in the ProtoBuf definition.
27610        ///
27611        /// The values are not transformed in any way and thus are considered stable
27612        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27613        pub fn as_str_name(&self) -> &'static str {
27614            match self {
27615                Self::SeverityUnknown => "SEVERITY_UNKNOWN",
27616                Self::SeverityNone => "SEVERITY_NONE",
27617                Self::SeverityPartial => "SEVERITY_PARTIAL",
27618                Self::SeverityFull => "SEVERITY_FULL",
27619            }
27620        }
27621        /// Creates an enum from field names used in the ProtoBuf definition.
27622        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27623            match value {
27624                "SEVERITY_UNKNOWN" => Some(Self::SeverityUnknown),
27625                "SEVERITY_NONE" => Some(Self::SeverityNone),
27626                "SEVERITY_PARTIAL" => Some(Self::SeverityPartial),
27627                "SEVERITY_FULL" => Some(Self::SeverityFull),
27628                _ => None,
27629            }
27630        }
27631    }
27632    /// Specifies how a frame was presented on screen w.r.t. timing.
27633    /// Can be different for SurfaceFrame and DisplayFrame.
27634    #[derive(
27635        Clone,
27636        Copy,
27637        Debug,
27638        PartialEq,
27639        Eq,
27640        Hash,
27641        PartialOrd,
27642        Ord,
27643        ::prost::Enumeration
27644    )]
27645    #[repr(i32)]
27646    pub enum PresentType {
27647        PresentUnspecified = 0,
27648        PresentOnTime = 1,
27649        PresentLate = 2,
27650        PresentEarly = 3,
27651        PresentDropped = 4,
27652        PresentUnknown = 5,
27653    }
27654    impl PresentType {
27655        /// String value of the enum field names used in the ProtoBuf definition.
27656        ///
27657        /// The values are not transformed in any way and thus are considered stable
27658        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27659        pub fn as_str_name(&self) -> &'static str {
27660            match self {
27661                Self::PresentUnspecified => "PRESENT_UNSPECIFIED",
27662                Self::PresentOnTime => "PRESENT_ON_TIME",
27663                Self::PresentLate => "PRESENT_LATE",
27664                Self::PresentEarly => "PRESENT_EARLY",
27665                Self::PresentDropped => "PRESENT_DROPPED",
27666                Self::PresentUnknown => "PRESENT_UNKNOWN",
27667            }
27668        }
27669        /// Creates an enum from field names used in the ProtoBuf definition.
27670        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27671            match value {
27672                "PRESENT_UNSPECIFIED" => Some(Self::PresentUnspecified),
27673                "PRESENT_ON_TIME" => Some(Self::PresentOnTime),
27674                "PRESENT_LATE" => Some(Self::PresentLate),
27675                "PRESENT_EARLY" => Some(Self::PresentEarly),
27676                "PRESENT_DROPPED" => Some(Self::PresentDropped),
27677                "PRESENT_UNKNOWN" => Some(Self::PresentUnknown),
27678                _ => None,
27679            }
27680        }
27681    }
27682    /// Specifies if the predictions for the frame are still valid, expired or
27683    /// unknown.
27684    #[derive(
27685        Clone,
27686        Copy,
27687        Debug,
27688        PartialEq,
27689        Eq,
27690        Hash,
27691        PartialOrd,
27692        Ord,
27693        ::prost::Enumeration
27694    )]
27695    #[repr(i32)]
27696    pub enum PredictionType {
27697        PredictionUnspecified = 0,
27698        PredictionValid = 1,
27699        PredictionExpired = 2,
27700        PredictionUnknown = 3,
27701    }
27702    impl PredictionType {
27703        /// String value of the enum field names used in the ProtoBuf definition.
27704        ///
27705        /// The values are not transformed in any way and thus are considered stable
27706        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27707        pub fn as_str_name(&self) -> &'static str {
27708            match self {
27709                Self::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
27710                Self::PredictionValid => "PREDICTION_VALID",
27711                Self::PredictionExpired => "PREDICTION_EXPIRED",
27712                Self::PredictionUnknown => "PREDICTION_UNKNOWN",
27713            }
27714        }
27715        /// Creates an enum from field names used in the ProtoBuf definition.
27716        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27717            match value {
27718                "PREDICTION_UNSPECIFIED" => Some(Self::PredictionUnspecified),
27719                "PREDICTION_VALID" => Some(Self::PredictionValid),
27720                "PREDICTION_EXPIRED" => Some(Self::PredictionExpired),
27721                "PREDICTION_UNKNOWN" => Some(Self::PredictionUnknown),
27722                _ => None,
27723            }
27724        }
27725    }
27726    #[derive(Clone, PartialEq, ::prost::Oneof)]
27727    pub enum Event {
27728        #[prost(message, tag = "1")]
27729        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
27730        #[prost(message, tag = "2")]
27731        ActualDisplayFrameStart(ActualDisplayFrameStart),
27732        #[prost(message, tag = "3")]
27733        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
27734        #[prost(message, tag = "4")]
27735        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
27736        #[prost(message, tag = "5")]
27737        FrameEnd(FrameEnd),
27738    }
27739}
27740#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27741#[repr(i32)]
27742pub enum VmCursorEnum {
27743    VmCursorUnspecified = 0,
27744    VmCursorSrc = 1,
27745    VmCursorDst = 2,
27746    VmCursorBoth = 3,
27747}
27748impl VmCursorEnum {
27749    /// String value of the enum field names used in the ProtoBuf definition.
27750    ///
27751    /// The values are not transformed in any way and thus are considered stable
27752    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27753    pub fn as_str_name(&self) -> &'static str {
27754        match self {
27755            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
27756            Self::VmCursorSrc => "VM_CURSOR_SRC",
27757            Self::VmCursorDst => "VM_CURSOR_DST",
27758            Self::VmCursorBoth => "VM_CURSOR_BOTH",
27759        }
27760    }
27761    /// Creates an enum from field names used in the ProtoBuf definition.
27762    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27763        match value {
27764            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
27765            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
27766            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
27767            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
27768            _ => None,
27769        }
27770    }
27771}
27772/// Builtin clock domains used in Perfetto traces.
27773///
27774/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
27775/// representing the trace file's own timeline. Each trace file gets its own
27776/// instance (scoped by trace file index).
27777///
27778/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
27779/// fallback: if the first timestamp conversion uses a clock other than the
27780/// trace file clock and no explicit clock snapshot data exists, the trace time
27781/// is switched to BOOTTIME. This fallback does not fire for modern traces that
27782/// include ClockSnapshots or that only use the trace file clock directly.
27783///
27784/// The `primary_trace_clock` field in ClockSnapshot can definitively override
27785/// the trace time clock regardless of the above.
27786#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27787#[repr(i32)]
27788pub enum BuiltinClock {
27789    Unknown = 0,
27790    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
27791    Realtime = 1,
27792    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
27793    RealtimeCoarse = 2,
27794    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
27795    Monotonic = 3,
27796    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
27797    MonotonicCoarse = 4,
27798    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
27799    MonotonicRaw = 5,
27800    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
27801    /// For proto traces, this is used as a backwards-compatible fallback trace
27802    /// time clock when no explicit clock snapshots are present.
27803    Boottime = 6,
27804    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
27805    Tsc = 9,
27806    /// Corresponds to the perf event clock (PERF_CLOCK).
27807    Perf = 10,
27808    /// A synthetic clock representing the trace file's own timeline. Each trace
27809    /// file gets its own instance (scoped by trace file index). This is the
27810    /// default trace time clock before any clock snapshot or format-specific
27811    /// override takes effect.
27812    TraceFile = 11,
27813    MaxId = 63,
27814}
27815impl BuiltinClock {
27816    /// String value of the enum field names used in the ProtoBuf definition.
27817    ///
27818    /// The values are not transformed in any way and thus are considered stable
27819    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27820    pub fn as_str_name(&self) -> &'static str {
27821        match self {
27822            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
27823            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
27824            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
27825            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
27826            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
27827            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
27828            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
27829            Self::Tsc => "BUILTIN_CLOCK_TSC",
27830            Self::Perf => "BUILTIN_CLOCK_PERF",
27831            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
27832            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
27833        }
27834    }
27835    /// Creates an enum from field names used in the ProtoBuf definition.
27836    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27837        match value {
27838            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
27839            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
27840            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
27841            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
27842            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
27843            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
27844            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
27845            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
27846            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
27847            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
27848            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
27849            _ => None,
27850        }
27851    }
27852}
27853/// Semantic types for string fields. This tells the filter what kind of
27854/// data the field contains, so it can apply the right filtering rules.
27855/// See /rfcs/0011-subset-string-filter-rules.md for design details.
27856/// Introduced in: Perfetto v54.
27857#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27858#[repr(i32)]
27859pub enum SemanticType {
27860    Unspecified = 0,
27861    Atrace = 1,
27862    Job = 2,
27863    Wakelock = 3,
27864}
27865impl SemanticType {
27866    /// String value of the enum field names used in the ProtoBuf definition.
27867    ///
27868    /// The values are not transformed in any way and thus are considered stable
27869    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27870    pub fn as_str_name(&self) -> &'static str {
27871        match self {
27872            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
27873            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
27874            Self::Job => "SEMANTIC_TYPE_JOB",
27875            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
27876        }
27877    }
27878    /// Creates an enum from field names used in the ProtoBuf definition.
27879    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27880        match value {
27881            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
27882            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
27883            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
27884            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
27885            _ => None,
27886        }
27887    }
27888}
27889/// Values from NDK's android/log.h.
27890#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27891#[repr(i32)]
27892pub enum AndroidLogId {
27893    /// MAIN.
27894    LidDefault = 0,
27895    LidRadio = 1,
27896    LidEvents = 2,
27897    LidSystem = 3,
27898    LidCrash = 4,
27899    LidStats = 5,
27900    LidSecurity = 6,
27901    LidKernel = 7,
27902}
27903impl AndroidLogId {
27904    /// String value of the enum field names used in the ProtoBuf definition.
27905    ///
27906    /// The values are not transformed in any way and thus are considered stable
27907    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27908    pub fn as_str_name(&self) -> &'static str {
27909        match self {
27910            Self::LidDefault => "LID_DEFAULT",
27911            Self::LidRadio => "LID_RADIO",
27912            Self::LidEvents => "LID_EVENTS",
27913            Self::LidSystem => "LID_SYSTEM",
27914            Self::LidCrash => "LID_CRASH",
27915            Self::LidStats => "LID_STATS",
27916            Self::LidSecurity => "LID_SECURITY",
27917            Self::LidKernel => "LID_KERNEL",
27918        }
27919    }
27920    /// Creates an enum from field names used in the ProtoBuf definition.
27921    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27922        match value {
27923            "LID_DEFAULT" => Some(Self::LidDefault),
27924            "LID_RADIO" => Some(Self::LidRadio),
27925            "LID_EVENTS" => Some(Self::LidEvents),
27926            "LID_SYSTEM" => Some(Self::LidSystem),
27927            "LID_CRASH" => Some(Self::LidCrash),
27928            "LID_STATS" => Some(Self::LidStats),
27929            "LID_SECURITY" => Some(Self::LidSecurity),
27930            "LID_KERNEL" => Some(Self::LidKernel),
27931            _ => None,
27932        }
27933    }
27934}
27935#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27936#[repr(i32)]
27937pub enum AndroidLogPriority {
27938    PrioUnspecified = 0,
27939    /// _DEFAULT, but should never be seen in logs.
27940    PrioUnused = 1,
27941    PrioVerbose = 2,
27942    PrioDebug = 3,
27943    PrioInfo = 4,
27944    PrioWarn = 5,
27945    PrioError = 6,
27946    PrioFatal = 7,
27947}
27948impl AndroidLogPriority {
27949    /// String value of the enum field names used in the ProtoBuf definition.
27950    ///
27951    /// The values are not transformed in any way and thus are considered stable
27952    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27953    pub fn as_str_name(&self) -> &'static str {
27954        match self {
27955            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
27956            Self::PrioUnused => "PRIO_UNUSED",
27957            Self::PrioVerbose => "PRIO_VERBOSE",
27958            Self::PrioDebug => "PRIO_DEBUG",
27959            Self::PrioInfo => "PRIO_INFO",
27960            Self::PrioWarn => "PRIO_WARN",
27961            Self::PrioError => "PRIO_ERROR",
27962            Self::PrioFatal => "PRIO_FATAL",
27963        }
27964    }
27965    /// Creates an enum from field names used in the ProtoBuf definition.
27966    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27967        match value {
27968            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
27969            "PRIO_UNUSED" => Some(Self::PrioUnused),
27970            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
27971            "PRIO_DEBUG" => Some(Self::PrioDebug),
27972            "PRIO_INFO" => Some(Self::PrioInfo),
27973            "PRIO_WARN" => Some(Self::PrioWarn),
27974            "PRIO_ERROR" => Some(Self::PrioError),
27975            "PRIO_FATAL" => Some(Self::PrioFatal),
27976            _ => None,
27977        }
27978    }
27979}
27980#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27981#[repr(i32)]
27982pub enum ProtoLogLevel {
27983    ProtologLevelUndefined = 0,
27984    ProtologLevelDebug = 1,
27985    ProtologLevelVerbose = 2,
27986    ProtologLevelInfo = 3,
27987    ProtologLevelWarn = 4,
27988    ProtologLevelError = 5,
27989    ProtologLevelWtf = 6,
27990}
27991impl ProtoLogLevel {
27992    /// String value of the enum field names used in the ProtoBuf definition.
27993    ///
27994    /// The values are not transformed in any way and thus are considered stable
27995    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27996    pub fn as_str_name(&self) -> &'static str {
27997        match self {
27998            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
27999            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
28000            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
28001            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
28002            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
28003            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
28004            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
28005        }
28006    }
28007    /// Creates an enum from field names used in the ProtoBuf definition.
28008    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28009        match value {
28010            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
28011            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
28012            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
28013            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
28014            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
28015            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
28016            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
28017            _ => None,
28018        }
28019    }
28020}
28021/// This enum is obtained by post-processing
28022/// AOSP/frameworks/proto_logging/stats/atoms.proto through
28023/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
28024/// enum value for each proto field defined in the upstream atoms.proto.
28025#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28026#[repr(i32)]
28027pub enum AtomId {
28028    AtomUnspecified = 0,
28029    AtomBleScanStateChanged = 2,
28030    AtomProcessStateChanged = 3,
28031    AtomBleScanResultReceived = 4,
28032    AtomSensorStateChanged = 5,
28033    AtomGpsScanStateChanged = 6,
28034    AtomSyncStateChanged = 7,
28035    AtomScheduledJobStateChanged = 8,
28036    AtomScreenBrightnessChanged = 9,
28037    AtomWakelockStateChanged = 10,
28038    AtomLongPartialWakelockStateChanged = 11,
28039    AtomMobileRadioPowerStateChanged = 12,
28040    AtomWifiRadioPowerStateChanged = 13,
28041    AtomActivityManagerSleepStateChanged = 14,
28042    AtomMemoryFactorStateChanged = 15,
28043    AtomExcessiveCpuUsageReported = 16,
28044    AtomCachedKillReported = 17,
28045    AtomProcessMemoryStatReported = 18,
28046    AtomLauncherEvent = 19,
28047    AtomBatterySaverModeStateChanged = 20,
28048    AtomDeviceIdleModeStateChanged = 21,
28049    AtomDeviceIdlingModeStateChanged = 22,
28050    AtomAudioStateChanged = 23,
28051    AtomMediaCodecStateChanged = 24,
28052    AtomCameraStateChanged = 25,
28053    AtomFlashlightStateChanged = 26,
28054    AtomUidProcessStateChanged = 27,
28055    AtomProcessLifeCycleStateChanged = 28,
28056    AtomScreenStateChanged = 29,
28057    AtomBatteryLevelChanged = 30,
28058    AtomChargingStateChanged = 31,
28059    AtomPluggedStateChanged = 32,
28060    AtomInteractiveStateChanged = 33,
28061    AtomTouchEventReported = 34,
28062    AtomWakeupAlarmOccurred = 35,
28063    AtomKernelWakeupReported = 36,
28064    AtomWifiLockStateChanged = 37,
28065    AtomWifiSignalStrengthChanged = 38,
28066    AtomWifiScanStateChanged = 39,
28067    AtomPhoneSignalStrengthChanged = 40,
28068    AtomSettingChanged = 41,
28069    AtomActivityForegroundStateChanged = 42,
28070    AtomIsolatedUidChanged = 43,
28071    AtomPacketWakeupOccurred = 44,
28072    AtomWallClockTimeShifted = 45,
28073    AtomAnomalyDetected = 46,
28074    AtomAppBreadcrumbReported = 47,
28075    AtomAppStartOccurred = 48,
28076    AtomAppStartCanceled = 49,
28077    AtomAppStartFullyDrawn = 50,
28078    AtomLmkKillOccurred = 51,
28079    AtomPictureInPictureStateChanged = 52,
28080    AtomWifiMulticastLockStateChanged = 53,
28081    AtomAppStartMemoryStateCaptured = 55,
28082    AtomShutdownSequenceReported = 56,
28083    AtomBootSequenceReported = 57,
28084    AtomOverlayStateChanged = 59,
28085    AtomForegroundServiceStateChanged = 60,
28086    AtomCallStateChanged = 61,
28087    AtomKeyguardStateChanged = 62,
28088    AtomKeyguardBouncerStateChanged = 63,
28089    AtomKeyguardBouncerPasswordEntered = 64,
28090    AtomAppDied = 65,
28091    AtomResourceConfigurationChanged = 66,
28092    AtomBluetoothEnabledStateChanged = 67,
28093    AtomBluetoothConnectionStateChanged = 68,
28094    AtomGpsSignalQualityChanged = 69,
28095    AtomUsbConnectorStateChanged = 70,
28096    AtomSpeakerImpedanceReported = 71,
28097    AtomHardwareFailed = 72,
28098    AtomPhysicalDropDetected = 73,
28099    AtomChargeCyclesReported = 74,
28100    AtomMobileConnectionStateChanged = 75,
28101    AtomMobileRadioTechnologyChanged = 76,
28102    AtomUsbDeviceAttached = 77,
28103    AtomAppCrashOccurred = 78,
28104    AtomAnrOccurred = 79,
28105    AtomWtfOccurred = 80,
28106    AtomLowMemReported = 81,
28107    AtomGenericAtom = 82,
28108    AtomVibratorStateChanged = 84,
28109    AtomDeferredJobStatsReported = 85,
28110    AtomThermalThrottling = 86,
28111    AtomBiometricAcquired = 87,
28112    AtomBiometricAuthenticated = 88,
28113    AtomBiometricErrorOccurred = 89,
28114    AtomUiEventReported = 90,
28115    AtomBatteryHealthSnapshot = 91,
28116    AtomSlowIo = 92,
28117    AtomBatteryCausedShutdown = 93,
28118    AtomPhoneServiceStateChanged = 94,
28119    AtomPhoneStateChanged = 95,
28120    AtomUserRestrictionChanged = 96,
28121    AtomSettingsUiChanged = 97,
28122    AtomConnectivityStateChanged = 98,
28123    AtomServiceStateChanged = 99,
28124    AtomServiceLaunchReported = 100,
28125    AtomFlagFlipUpdateOccurred = 101,
28126    AtomBinaryPushStateChanged = 102,
28127    AtomDevicePolicyEvent = 103,
28128    AtomDocsUiFileOpCanceled = 104,
28129    AtomDocsUiFileOpCopyMoveModeReported = 105,
28130    AtomDocsUiFileOpFailure = 106,
28131    AtomDocsUiProviderFileOp = 107,
28132    AtomDocsUiInvalidScopedAccessRequest = 108,
28133    AtomDocsUiLaunchReported = 109,
28134    AtomDocsUiRootVisited = 110,
28135    AtomDocsUiStartupMs = 111,
28136    AtomDocsUiUserActionReported = 112,
28137    AtomWifiEnabledStateChanged = 113,
28138    AtomWifiRunningStateChanged = 114,
28139    AtomAppCompacted = 115,
28140    AtomNetworkDnsEventReported = 116,
28141    AtomDocsUiPickerLaunchedFromReported = 117,
28142    AtomDocsUiPickResultReported = 118,
28143    AtomDocsUiSearchModeReported = 119,
28144    AtomDocsUiSearchTypeReported = 120,
28145    AtomDataStallEvent = 121,
28146    AtomRescuePartyResetReported = 122,
28147    AtomSignedConfigReported = 123,
28148    AtomGnssNiEventReported = 124,
28149    AtomBluetoothLinkLayerConnectionEvent = 125,
28150    AtomBluetoothAclConnectionStateChanged = 126,
28151    AtomBluetoothScoConnectionStateChanged = 127,
28152    AtomAppDowngraded = 128,
28153    AtomAppOptimizedAfterDowngraded = 129,
28154    AtomLowStorageStateChanged = 130,
28155    AtomGnssNfwNotificationReported = 131,
28156    AtomGnssConfigurationReported = 132,
28157    AtomUsbPortOverheatEventReported = 133,
28158    AtomNfcErrorOccurred = 134,
28159    AtomNfcStateChanged = 135,
28160    AtomNfcBeamOccurred = 136,
28161    AtomNfcCardemulationOccurred = 137,
28162    AtomNfcTagOccurred = 138,
28163    AtomNfcHceTransactionOccurred = 139,
28164    AtomSeStateChanged = 140,
28165    AtomSeOmapiReported = 141,
28166    AtomBroadcastDispatchLatencyReported = 142,
28167    AtomAttentionManagerServiceResultReported = 143,
28168    AtomAdbConnectionChanged = 144,
28169    AtomSpeechDspStatReported = 145,
28170    AtomUsbContaminantReported = 146,
28171    AtomWatchdogRollbackOccurred = 147,
28172    AtomBiometricSystemHealthIssueDetected = 148,
28173    AtomBubbleUiChanged = 149,
28174    AtomScheduledJobConstraintChanged = 150,
28175    AtomBluetoothActiveDeviceChanged = 151,
28176    AtomBluetoothA2dpPlaybackStateChanged = 152,
28177    AtomBluetoothA2dpCodecConfigChanged = 153,
28178    AtomBluetoothA2dpCodecCapabilityChanged = 154,
28179    AtomBluetoothA2dpAudioUnderrunReported = 155,
28180    AtomBluetoothA2dpAudioOverrunReported = 156,
28181    AtomBluetoothDeviceRssiReported = 157,
28182    AtomBluetoothDeviceFailedContactCounterReported = 158,
28183    AtomBluetoothDeviceTxPowerLevelReported = 159,
28184    AtomBluetoothHciTimeoutReported = 160,
28185    AtomBluetoothQualityReportReported = 161,
28186    AtomBluetoothDeviceInfoReported = 162,
28187    AtomBluetoothRemoteVersionInfoReported = 163,
28188    AtomBluetoothSdpAttributeReported = 164,
28189    AtomBluetoothBondStateChanged = 165,
28190    AtomBluetoothClassicPairingEventReported = 166,
28191    AtomBluetoothSmpPairingEventReported = 167,
28192    AtomScreenTimeoutExtensionReported = 168,
28193    AtomProcessStartTime = 169,
28194    AtomPermissionGrantRequestResultReported = 170,
28195    AtomBluetoothSocketConnectionStateChanged = 171,
28196    AtomDeviceIdentifierAccessDenied = 172,
28197    AtomBubbleDeveloperErrorReported = 173,
28198    AtomAssistGestureStageReported = 174,
28199    AtomAssistGestureFeedbackReported = 175,
28200    AtomAssistGestureProgressReported = 176,
28201    AtomTouchGestureClassified = 177,
28202    AtomHiddenApiUsed = 178,
28203    AtomStyleUiChanged = 179,
28204    AtomPrivacyIndicatorsInteracted = 180,
28205    AtomAppInstallOnExternalStorageReported = 181,
28206    AtomNetworkStackReported = 182,
28207    AtomAppMovedStorageReported = 183,
28208    AtomBiometricEnrolled = 184,
28209    AtomSystemServerWatchdogOccurred = 185,
28210    AtomTombStoneOccurred = 186,
28211    AtomBluetoothClassOfDeviceReported = 187,
28212    AtomIntelligenceEventReported = 188,
28213    AtomThermalThrottlingSeverityStateChanged = 189,
28214    AtomRoleRequestResultReported = 190,
28215    AtomMediametricsAudiopolicyReported = 191,
28216    AtomMediametricsAudiorecordReported = 192,
28217    AtomMediametricsAudiothreadReported = 193,
28218    AtomMediametricsAudiotrackReported = 194,
28219    AtomMediametricsCodecReported = 195,
28220    AtomMediametricsDrmWidevineReported = 196,
28221    AtomMediametricsExtractorReported = 197,
28222    AtomMediametricsMediadrmReported = 198,
28223    AtomMediametricsNuplayerReported = 199,
28224    AtomMediametricsRecorderReported = 200,
28225    AtomMediametricsDrmmanagerReported = 201,
28226    AtomCarPowerStateChanged = 203,
28227    AtomGarageModeInfo = 204,
28228    AtomTestAtomReported = 205,
28229    AtomContentCaptureCallerMismatchReported = 206,
28230    AtomContentCaptureServiceEvents = 207,
28231    AtomContentCaptureSessionEvents = 208,
28232    AtomContentCaptureFlushed = 209,
28233    AtomLocationManagerApiUsageReported = 210,
28234    AtomReviewPermissionsFragmentResultReported = 211,
28235    AtomRuntimePermissionsUpgradeResult = 212,
28236    AtomGrantPermissionsActivityButtonActions = 213,
28237    AtomLocationAccessCheckNotificationAction = 214,
28238    AtomAppPermissionFragmentActionReported = 215,
28239    AtomAppPermissionFragmentViewed = 216,
28240    AtomAppPermissionsFragmentViewed = 217,
28241    AtomPermissionAppsFragmentViewed = 218,
28242    AtomTextSelectionEvent = 219,
28243    AtomTextLinkifyEvent = 220,
28244    AtomConversationActionsEvent = 221,
28245    AtomLanguageDetectionEvent = 222,
28246    AtomExclusionRectStateChanged = 223,
28247    AtomBackGestureReportedReported = 224,
28248    AtomUpdateEngineUpdateAttemptReported = 225,
28249    AtomUpdateEngineSuccessfulUpdateReported = 226,
28250    AtomCameraActionEvent = 227,
28251    AtomAppCompatibilityChangeReported = 228,
28252    AtomPerfettoUploaded = 229,
28253    AtomVmsClientConnectionStateChanged = 230,
28254    AtomMediaProviderScanOccurred = 233,
28255    AtomMediaContentDeleted = 234,
28256    AtomMediaProviderPermissionRequested = 235,
28257    AtomMediaProviderSchemaChanged = 236,
28258    AtomMediaProviderIdleMaintenanceFinished = 237,
28259    AtomRebootEscrowRecoveryReported = 238,
28260    AtomBootTimeEventDurationReported = 239,
28261    AtomBootTimeEventElapsedTimeReported = 240,
28262    AtomBootTimeEventUtcTimeReported = 241,
28263    AtomBootTimeEventErrorCodeReported = 242,
28264    AtomUserspaceRebootReported = 243,
28265    AtomNotificationReported = 244,
28266    AtomNotificationPanelReported = 245,
28267    AtomNotificationChannelModified = 246,
28268    AtomIntegrityCheckResultReported = 247,
28269    AtomIntegrityRulesPushed = 248,
28270    AtomCbMessageReported = 249,
28271    AtomCbMessageError = 250,
28272    AtomWifiHealthStatReported = 251,
28273    AtomWifiFailureStatReported = 252,
28274    AtomWifiConnectionResultReported = 253,
28275    AtomAppFreezeChanged = 254,
28276    AtomSnapshotMergeReported = 255,
28277    AtomForegroundServiceAppOpSessionEnded = 256,
28278    AtomDisplayJankReported = 257,
28279    AtomAppStandbyBucketChanged = 258,
28280    AtomSharesheetStarted = 259,
28281    AtomRankingSelected = 260,
28282    AtomTvsettingsUiInteracted = 261,
28283    AtomLauncherSnapshot = 262,
28284    AtomPackageInstallerV2Reported = 263,
28285    AtomUserLifecycleJourneyReported = 264,
28286    AtomUserLifecycleEventOccurred = 265,
28287    AtomAccessibilityShortcutReported = 266,
28288    AtomAccessibilityServiceReported = 267,
28289    AtomDocsUiDragAndDropReported = 268,
28290    AtomAppUsageEventOccurred = 269,
28291    AtomAutoRevokeNotificationClicked = 270,
28292    AtomAutoRevokeFragmentAppViewed = 271,
28293    AtomAutoRevokedAppInteraction = 272,
28294    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
28295    AtomEvsUsageStatsReported = 274,
28296    AtomAudioPowerUsageDataReported = 275,
28297    AtomTvTunerStateChanged = 276,
28298    AtomMediaoutputOpSwitchReported = 277,
28299    AtomCbMessageFiltered = 278,
28300    AtomTvTunerDvrStatus = 279,
28301    AtomTvCasSessionOpenStatus = 280,
28302    AtomAssistantInvocationReported = 281,
28303    AtomDisplayWakeReported = 282,
28304    AtomCarUserHalModifyUserRequestReported = 283,
28305    AtomCarUserHalModifyUserResponseReported = 284,
28306    AtomCarUserHalPostSwitchResponseReported = 285,
28307    AtomCarUserHalInitialUserInfoRequestReported = 286,
28308    AtomCarUserHalInitialUserInfoResponseReported = 287,
28309    AtomCarUserHalUserAssociationRequestReported = 288,
28310    AtomCarUserHalSetUserAssociationResponseReported = 289,
28311    AtomNetworkIpProvisioningReported = 290,
28312    AtomNetworkDhcpRenewReported = 291,
28313    AtomNetworkValidationReported = 292,
28314    AtomNetworkStackQuirkReported = 293,
28315    AtomMediametricsAudiorecorddeviceusageReported = 294,
28316    AtomMediametricsAudiothreaddeviceusageReported = 295,
28317    AtomMediametricsAudiotrackdeviceusageReported = 296,
28318    AtomMediametricsAudiodeviceconnectionReported = 297,
28319    AtomBlobCommitted = 298,
28320    AtomBlobLeased = 299,
28321    AtomBlobOpened = 300,
28322    AtomContactsProviderStatusReported = 301,
28323    AtomKeystoreKeyEventReported = 302,
28324    AtomNetworkTetheringReported = 303,
28325    AtomImeTouchReported = 304,
28326    AtomUiInteractionFrameInfoReported = 305,
28327    AtomUiActionLatencyReported = 306,
28328    AtomWifiDisconnectReported = 307,
28329    AtomWifiConnectionStateChanged = 308,
28330    AtomHdmiCecActiveSourceChanged = 309,
28331    AtomHdmiCecMessageReported = 310,
28332    AtomAirplaneMode = 311,
28333    AtomModemRestart = 312,
28334    AtomCarrierIdMismatchReported = 313,
28335    AtomCarrierIdTableUpdated = 314,
28336    AtomDataStallRecoveryReported = 315,
28337    AtomMediametricsMediaparserReported = 316,
28338    AtomTlsHandshakeReported = 317,
28339    AtomTextClassifierApiUsageReported = 318,
28340    AtomCarWatchdogKillStatsReported = 319,
28341    AtomMediametricsPlaybackReported = 320,
28342    AtomMediaNetworkInfoChanged = 321,
28343    AtomMediaPlaybackStateChanged = 322,
28344    AtomMediaPlaybackErrorReported = 323,
28345    AtomMediaPlaybackTrackChanged = 324,
28346    AtomWifiScanReported = 325,
28347    AtomWifiPnoScanReported = 326,
28348    AtomTifTuneChanged = 327,
28349    AtomAutoRotateReported = 328,
28350    AtomPerfettoTrigger = 329,
28351    AtomTranscodingData = 330,
28352    AtomImsServiceEntitlementUpdated = 331,
28353    AtomDeviceRotated = 333,
28354    AtomSimSpecificSettingsRestored = 334,
28355    AtomTextClassifierDownloadReported = 335,
28356    AtomPinStorageEvent = 336,
28357    AtomFaceDownReported = 337,
28358    AtomBluetoothHalCrashReasonReported = 338,
28359    AtomRebootEscrowPreparationReported = 339,
28360    AtomRebootEscrowLskfCaptureReported = 340,
28361    AtomRebootEscrowRebootReported = 341,
28362    AtomBinderLatencyReported = 342,
28363    AtomMediametricsAaudiostreamReported = 343,
28364    AtomMediaTranscodingSessionEnded = 344,
28365    AtomMagnificationUsageReported = 345,
28366    AtomMagnificationModeWithImeOnReported = 346,
28367    AtomAppSearchCallStatsReported = 347,
28368    AtomAppSearchPutDocumentStatsReported = 348,
28369    AtomDeviceControlChanged = 349,
28370    AtomDeviceStateChanged = 350,
28371    AtomInputdeviceRegistered = 351,
28372    AtomSmartspaceCardReported = 352,
28373    AtomAuthPromptAuthenticateInvoked = 353,
28374    AtomAuthManagerCanAuthenticateInvoked = 354,
28375    AtomAuthEnrollActionInvoked = 355,
28376    AtomAuthDeprecatedApiUsed = 356,
28377    AtomUnattendedRebootOccurred = 357,
28378    AtomLongRebootBlockingReported = 358,
28379    AtomLocationTimeZoneProviderStateChanged = 359,
28380    AtomFdtrackEventOccurred = 364,
28381    AtomTimeoutAutoExtendedReported = 365,
28382    AtomAlarmBatchDelivered = 367,
28383    AtomAlarmScheduled = 368,
28384    AtomCarWatchdogIoOveruseStatsReported = 369,
28385    AtomUserLevelHibernationStateChanged = 370,
28386    AtomAppSearchInitializeStatsReported = 371,
28387    AtomAppSearchQueryStatsReported = 372,
28388    AtomAppProcessDied = 373,
28389    AtomNetworkIpReachabilityMonitorReported = 374,
28390    AtomSlowInputEventReported = 375,
28391    AtomAnrOccurredProcessingStarted = 376,
28392    AtomAppSearchRemoveStatsReported = 377,
28393    AtomMediaCodecReported = 378,
28394    AtomPermissionUsageFragmentInteraction = 379,
28395    AtomPermissionDetailsInteraction = 380,
28396    AtomPrivacySensorToggleInteraction = 381,
28397    AtomPrivacyToggleDialogInteraction = 382,
28398    AtomAppSearchOptimizeStatsReported = 383,
28399    AtomNonA11yToolServiceWarningReport = 384,
28400    AtomAppCompatStateChanged = 386,
28401    AtomSizeCompatRestartButtonEventReported = 387,
28402    AtomSplitscreenUiChanged = 388,
28403    AtomNetworkDnsHandshakeReported = 389,
28404    AtomBluetoothCodePathCounter = 390,
28405    AtomBluetoothLeBatchScanReportDelay = 392,
28406    AtomAccessibilityFloatingMenuUiChanged = 393,
28407    AtomNeuralnetworksCompilationCompleted = 394,
28408    AtomNeuralnetworksExecutionCompleted = 395,
28409    AtomNeuralnetworksCompilationFailed = 396,
28410    AtomNeuralnetworksExecutionFailed = 397,
28411    AtomContextHubBooted = 398,
28412    AtomContextHubRestarted = 399,
28413    AtomContextHubLoadedNanoappSnapshotReported = 400,
28414    AtomChreCodeDownloadTransacted = 401,
28415    AtomUwbSessionInited = 402,
28416    AtomUwbSessionClosed = 403,
28417    AtomUwbFirstRangingReceived = 404,
28418    AtomUwbRangingMeasurementReceived = 405,
28419    AtomTextClassifierDownloadWorkScheduled = 406,
28420    AtomTextClassifierDownloadWorkCompleted = 407,
28421    AtomClipboardCleared = 408,
28422    AtomVmCreationRequested = 409,
28423    AtomNearbyDeviceScanStateChanged = 410,
28424    AtomApplicationLocalesChanged = 412,
28425    AtomMediametricsAudiotrackstatusReported = 413,
28426    AtomFoldStateDurationReported = 414,
28427    AtomLocationTimeZoneProviderControllerStateChanged = 415,
28428    AtomDisplayHbmStateChanged = 416,
28429    AtomDisplayHbmBrightnessChanged = 417,
28430    AtomPersistentUriPermissionsFlushed = 418,
28431    AtomEarlyBootCompOsArtifactsCheckReported = 419,
28432    AtomVbmetaDigestReported = 420,
28433    AtomApexInfoGathered = 421,
28434    AtomPvmInfoGathered = 422,
28435    AtomWearSettingsUiInteracted = 423,
28436    AtomTracingServiceReportEvent = 424,
28437    AtomMediametricsAudiorecordstatusReported = 425,
28438    AtomLauncherLatency = 426,
28439    AtomDropboxEntryDropped = 427,
28440    AtomWifiP2pConnectionReported = 428,
28441    AtomGameStateChanged = 429,
28442    AtomHotwordDetectorCreateRequested = 430,
28443    AtomHotwordDetectionServiceInitResultReported = 431,
28444    AtomHotwordDetectionServiceRestarted = 432,
28445    AtomHotwordDetectorKeyphraseTriggered = 433,
28446    AtomHotwordDetectorEvents = 434,
28447    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
28448    AtomContactsIndexerUpdateStatsReported = 440,
28449    AtomAppBackgroundRestrictionsInfo = 441,
28450    AtomMmsSmsProviderGetThreadIdFailed = 442,
28451    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
28452    AtomPermissionReminderNotificationInteracted = 444,
28453    AtomRecentPermissionDecisionsInteracted = 445,
28454    AtomGnssPsdsDownloadReported = 446,
28455    AtomLeAudioConnectionSessionReported = 447,
28456    AtomLeAudioBroadcastSessionReported = 448,
28457    AtomDreamUiEventReported = 449,
28458    AtomTaskManagerEventReported = 450,
28459    AtomCdmAssociationAction = 451,
28460    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
28461    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
28462    AtomAccessibilityTextReadingOptionsChanged = 454,
28463    AtomWifiSetupFailureCrashReported = 455,
28464    AtomUwbDeviceErrorReported = 456,
28465    AtomIsolatedCompilationScheduled = 457,
28466    AtomIsolatedCompilationEnded = 458,
28467    AtomOnsOpportunisticEsimProvisioningComplete = 459,
28468    AtomSystemServerPreWatchdogOccurred = 460,
28469    AtomTelephonyAnomalyDetected = 461,
28470    AtomLetterboxPositionChanged = 462,
28471    AtomRemoteKeyProvisioningAttempt = 463,
28472    AtomRemoteKeyProvisioningNetworkInfo = 464,
28473    AtomRemoteKeyProvisioningTiming = 465,
28474    AtomMediaoutputOpInteractionReport = 466,
28475    AtomSyncExemptionOccurred = 468,
28476    AtomAutofillPresentationEventReported = 469,
28477    AtomDockStateChanged = 470,
28478    AtomSafetySourceStateCollected = 471,
28479    AtomSafetyCenterSystemEventReported = 472,
28480    AtomSafetyCenterInteractionReported = 473,
28481    AtomSettingsProviderSettingChanged = 474,
28482    AtomBroadcastDeliveryEventReported = 475,
28483    AtomServiceRequestEventReported = 476,
28484    AtomProviderAcquisitionEventReported = 477,
28485    AtomBluetoothDeviceNameReported = 478,
28486    AtomCbConfigUpdated = 479,
28487    AtomCbModuleErrorReported = 480,
28488    AtomCbServiceFeatureChanged = 481,
28489    AtomCbReceiverFeatureChanged = 482,
28490    AtomPrivacySignalNotificationInteraction = 484,
28491    AtomPrivacySignalIssueCardInteraction = 485,
28492    AtomPrivacySignalsJobFailure = 486,
28493    AtomVibrationReported = 487,
28494    AtomUwbRangingStart = 489,
28495    AtomAppCompactedV2 = 491,
28496    AtomDisplayBrightnessChanged = 494,
28497    AtomActivityActionBlocked = 495,
28498    AtomNetworkDnsServerSupportReported = 504,
28499    AtomVmBooted = 505,
28500    AtomVmExited = 506,
28501    AtomAmbientBrightnessStatsReported = 507,
28502    AtomMediametricsSpatializercapabilitiesReported = 508,
28503    AtomMediametricsSpatializerdeviceenabledReported = 509,
28504    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
28505    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
28506    AtomHearingAidInfoReported = 513,
28507    AtomDeviceWideJobConstraintChanged = 514,
28508    AtomAmbientModeChanged = 515,
28509    AtomAnrLatencyReported = 516,
28510    AtomResourceApiInfo = 517,
28511    AtomSystemDefaultNetworkChanged = 518,
28512    AtomIwlanSetupDataCallResultReported = 519,
28513    AtomIwlanPdnDisconnectedReasonReported = 520,
28514    AtomAirplaneModeSessionReported = 521,
28515    AtomVmCpuStatusReported = 522,
28516    AtomVmMemStatusReported = 523,
28517    AtomPackageInstallationSessionReported = 524,
28518    AtomDefaultNetworkRematchInfo = 525,
28519    AtomNetworkSelectionPerformance = 526,
28520    AtomNetworkNsdReported = 527,
28521    AtomBluetoothDisconnectionReasonReported = 529,
28522    AtomBluetoothLocalVersionsReported = 530,
28523    AtomBluetoothRemoteSupportedFeaturesReported = 531,
28524    AtomBluetoothLocalSupportedFeaturesReported = 532,
28525    AtomBluetoothGattAppInfo = 533,
28526    AtomBrightnessConfigurationUpdated = 534,
28527    AtomWearMediaOutputSwitcherLaunched = 538,
28528    AtomWearMediaOutputSwitcherFinished = 539,
28529    AtomWearMediaOutputSwitcherConnectionReported = 540,
28530    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
28531    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
28532    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
28533    AtomPackageManagerSnapshotReported = 544,
28534    AtomPackageManagerAppsFilterCacheBuildReported = 545,
28535    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
28536    AtomLauncherImpressionEvent = 547,
28537    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
28538    AtomWsWatchFaceEdited = 551,
28539    AtomWsWatchFaceFavoriteActionReported = 552,
28540    AtomWsWatchFaceSetActionReported = 553,
28541    AtomPackageUninstallationReported = 554,
28542    AtomGameModeChanged = 555,
28543    AtomGameModeConfigurationChanged = 556,
28544    AtomBedtimeModeStateChanged = 557,
28545    AtomNetworkSliceSessionEnded = 558,
28546    AtomNetworkSliceDailyDataUsageReported = 559,
28547    AtomNfcTagTypeOccurred = 560,
28548    AtomNfcAidConflictOccurred = 561,
28549    AtomNfcReaderConflictOccurred = 562,
28550    AtomWsTileListChanged = 563,
28551    AtomGetTypeAccessedWithoutPermission = 564,
28552    AtomMobileBundledAppInfoGathered = 566,
28553    AtomWsWatchFaceComplicationSetChanged = 567,
28554    AtomMediaDrmCreated = 568,
28555    AtomMediaDrmErrored = 569,
28556    AtomMediaDrmSessionOpened = 570,
28557    AtomMediaDrmSessionClosed = 571,
28558    AtomUserSelectedResolution = 572,
28559    AtomUnsafeIntentEventReported = 573,
28560    AtomPerformanceHintSessionReported = 574,
28561    AtomMediametricsMidiDeviceCloseReported = 576,
28562    AtomBiometricTouchReported = 577,
28563    AtomHotwordAudioEgressEventReported = 578,
28564    AtomLocationEnabledStateChanged = 580,
28565    AtomImeRequestFinished = 581,
28566    AtomUsbComplianceWarningsReported = 582,
28567    AtomAppSupportedLocalesChanged = 583,
28568    AtomMediaProviderVolumeRecoveryReported = 586,
28569    AtomBiometricPropertiesCollected = 587,
28570    AtomKernelWakeupAttributed = 588,
28571    AtomScreenStateChangedV2 = 589,
28572    AtomWsBackupActionReported = 590,
28573    AtomWsRestoreActionReported = 591,
28574    AtomDeviceLogAccessEventReported = 592,
28575    AtomMediaSessionUpdated = 594,
28576    AtomWearOobeStateChanged = 595,
28577    AtomWsNotificationUpdated = 596,
28578    AtomNetworkValidationFailureStatsDailyReported = 601,
28579    AtomWsComplicationTapped = 602,
28580    AtomWsNotificationBlocking = 780,
28581    AtomWsNotificationBridgemodeUpdated = 822,
28582    AtomWsNotificationDismissalActioned = 823,
28583    AtomWsNotificationActioned = 824,
28584    AtomWsNotificationLatency = 880,
28585    AtomWifiBytesTransfer = 10000,
28586    AtomWifiBytesTransferByFgBg = 10001,
28587    AtomMobileBytesTransfer = 10002,
28588    AtomMobileBytesTransferByFgBg = 10003,
28589    AtomBluetoothBytesTransfer = 10006,
28590    AtomKernelWakelock = 10004,
28591    AtomSubsystemSleepState = 10005,
28592    AtomCpuTimePerUid = 10009,
28593    AtomCpuTimePerUidFreq = 10010,
28594    AtomWifiActivityInfo = 10011,
28595    AtomModemActivityInfo = 10012,
28596    AtomBluetoothActivityInfo = 10007,
28597    AtomProcessMemoryState = 10013,
28598    AtomSystemElapsedRealtime = 10014,
28599    AtomSystemUptime = 10015,
28600    AtomCpuActiveTime = 10016,
28601    AtomCpuClusterTime = 10017,
28602    AtomDiskSpace = 10018,
28603    AtomRemainingBatteryCapacity = 10019,
28604    AtomFullBatteryCapacity = 10020,
28605    AtomTemperature = 10021,
28606    AtomBinderCalls = 10022,
28607    AtomBinderCallsExceptions = 10023,
28608    AtomLooperStats = 10024,
28609    AtomDiskStats = 10025,
28610    AtomDirectoryUsage = 10026,
28611    AtomAppSize = 10027,
28612    AtomCategorySize = 10028,
28613    AtomProcStats = 10029,
28614    AtomBatteryVoltage = 10030,
28615    AtomNumFingerprintsEnrolled = 10031,
28616    AtomDiskIo = 10032,
28617    AtomPowerProfile = 10033,
28618    AtomProcStatsPkgProc = 10034,
28619    AtomProcessCpuTime = 10035,
28620    AtomCpuTimePerThreadFreq = 10037,
28621    AtomOnDevicePowerMeasurement = 10038,
28622    AtomDeviceCalculatedPowerUse = 10039,
28623    AtomProcessMemoryHighWaterMark = 10042,
28624    AtomBatteryLevel = 10043,
28625    AtomBuildInformation = 10044,
28626    AtomBatteryCycleCount = 10045,
28627    AtomDebugElapsedClock = 10046,
28628    AtomDebugFailingElapsedClock = 10047,
28629    AtomNumFacesEnrolled = 10048,
28630    AtomRoleHolder = 10049,
28631    AtomDangerousPermissionState = 10050,
28632    AtomTrainInfo = 10051,
28633    AtomTimeZoneDataInfo = 10052,
28634    AtomExternalStorageInfo = 10053,
28635    AtomGpuStatsGlobalInfo = 10054,
28636    AtomGpuStatsAppInfo = 10055,
28637    AtomSystemIonHeapSize = 10056,
28638    AtomAppsOnExternalStorageInfo = 10057,
28639    AtomFaceSettings = 10058,
28640    AtomCoolingDevice = 10059,
28641    AtomAppOps = 10060,
28642    AtomProcessSystemIonHeapSize = 10061,
28643    AtomSurfaceflingerStatsGlobalInfo = 10062,
28644    AtomSurfaceflingerStatsLayerInfo = 10063,
28645    AtomProcessMemorySnapshot = 10064,
28646    AtomVmsClientStats = 10065,
28647    AtomNotificationRemoteViews = 10066,
28648    AtomDangerousPermissionStateSampled = 10067,
28649    AtomGraphicsStats = 10068,
28650    AtomRuntimeAppOpAccess = 10069,
28651    AtomIonHeapSize = 10070,
28652    AtomPackageNotificationPreferences = 10071,
28653    AtomPackageNotificationChannelPreferences = 10072,
28654    AtomPackageNotificationChannelGroupPreferences = 10073,
28655    AtomGnssStats = 10074,
28656    AtomAttributedAppOps = 10075,
28657    AtomVoiceCallSession = 10076,
28658    AtomVoiceCallRatUsage = 10077,
28659    AtomSimSlotState = 10078,
28660    AtomSupportedRadioAccessFamily = 10079,
28661    AtomSettingSnapshot = 10080,
28662    AtomBlobInfo = 10081,
28663    AtomDataUsageBytesTransfer = 10082,
28664    AtomBytesTransferByTagAndMetered = 10083,
28665    AtomDndModeRule = 10084,
28666    AtomGeneralExternalStorageAccessStats = 10085,
28667    AtomIncomingSms = 10086,
28668    AtomOutgoingSms = 10087,
28669    AtomCarrierIdTableVersion = 10088,
28670    AtomDataCallSession = 10089,
28671    AtomCellularServiceState = 10090,
28672    AtomCellularDataServiceSwitch = 10091,
28673    AtomSystemMemory = 10092,
28674    AtomImsRegistrationTermination = 10093,
28675    AtomImsRegistrationStats = 10094,
28676    AtomCpuTimePerClusterFreq = 10095,
28677    AtomCpuCyclesPerUidCluster = 10096,
28678    AtomDeviceRotatedData = 10097,
28679    AtomCpuCyclesPerThreadGroupCluster = 10098,
28680    AtomMediaDrmActivityInfo = 10099,
28681    AtomOemManagedBytesTransfer = 10100,
28682    AtomGnssPowerStats = 10101,
28683    AtomTimeZoneDetectorState = 10102,
28684    AtomKeystore2StorageStats = 10103,
28685    AtomRkpPoolStats = 10104,
28686    AtomProcessDmabufMemory = 10105,
28687    AtomPendingAlarmInfo = 10106,
28688    AtomUserLevelHibernatedApps = 10107,
28689    AtomLauncherLayoutSnapshot = 10108,
28690    AtomGlobalHibernatedApps = 10109,
28691    AtomInputEventLatencySketch = 10110,
28692    AtomBatteryUsageStatsBeforeReset = 10111,
28693    AtomBatteryUsageStatsSinceReset = 10112,
28694    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
28695    AtomInstalledIncrementalPackage = 10114,
28696    AtomTelephonyNetworkRequests = 10115,
28697    AtomAppSearchStorageInfo = 10116,
28698    AtomVmstat = 10117,
28699    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
28700    AtomKeystore2KeyCreationWithAuthInfo = 10119,
28701    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
28702    AtomKeystore2AtomWithOverflow = 10121,
28703    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
28704    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
28705    AtomRkpErrorStats = 10124,
28706    AtomKeystore2CrashStats = 10125,
28707    AtomVendorApexInfo = 10126,
28708    AtomAccessibilityShortcutStats = 10127,
28709    AtomAccessibilityFloatingMenuStats = 10128,
28710    AtomDataUsageBytesTransferV2 = 10129,
28711    AtomMediaCapabilities = 10130,
28712    AtomCarWatchdogSystemIoUsageSummary = 10131,
28713    AtomCarWatchdogUidIoUsageSummary = 10132,
28714    AtomImsRegistrationFeatureTagStats = 10133,
28715    AtomRcsClientProvisioningStats = 10134,
28716    AtomRcsAcsProvisioningStats = 10135,
28717    AtomSipDelegateStats = 10136,
28718    AtomSipTransportFeatureTagStats = 10137,
28719    AtomSipMessageResponse = 10138,
28720    AtomSipTransportSession = 10139,
28721    AtomImsDedicatedBearerListenerEvent = 10140,
28722    AtomImsDedicatedBearerEvent = 10141,
28723    AtomImsRegistrationServiceDescStats = 10142,
28724    AtomUceEventStats = 10143,
28725    AtomPresenceNotifyEvent = 10144,
28726    AtomGbaEvent = 10145,
28727    AtomPerSimStatus = 10146,
28728    AtomGpuWorkPerUid = 10147,
28729    AtomPersistentUriPermissionsAmountPerPackage = 10148,
28730    AtomSignedPartitionInfo = 10149,
28731    AtomPinnedFileSizesPerPackage = 10150,
28732    AtomPendingIntentsPerPackage = 10151,
28733    AtomUserInfo = 10152,
28734    AtomTelephonyNetworkRequestsV2 = 10153,
28735    AtomDeviceTelephonyProperties = 10154,
28736    AtomRemoteKeyProvisioningErrorCounts = 10155,
28737    AtomSafetyState = 10156,
28738    AtomIncomingMms = 10157,
28739    AtomOutgoingMms = 10158,
28740    AtomMultiUserInfo = 10160,
28741    AtomNetworkBpfMapInfo = 10161,
28742    AtomOutgoingShortCodeSms = 10162,
28743    AtomConnectivityStateSample = 10163,
28744    AtomNetworkSelectionRematchReasonsInfo = 10164,
28745    AtomGameModeInfo = 10165,
28746    AtomGameModeConfiguration = 10166,
28747    AtomGameModeListener = 10167,
28748    AtomNetworkSliceRequestCount = 10168,
28749    AtomWsTileSnapshot = 10169,
28750    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
28751    AtomProcessState = 10171,
28752    AtomProcessAssociation = 10172,
28753    AtomAdpfSystemComponentInfo = 10173,
28754    AtomNotificationMemoryUse = 10174,
28755    AtomHdrCapabilities = 10175,
28756    AtomWsFavouriteWatchFaceListSnapshot = 10176,
28757    AtomWifiAwareNdpReported = 638,
28758    AtomWifiAwareAttachReported = 639,
28759    AtomWifiSelfRecoveryTriggered = 661,
28760    AtomSoftApStarted = 680,
28761    AtomSoftApStopped = 681,
28762    AtomWifiLockReleased = 687,
28763    AtomWifiLockDeactivated = 688,
28764    AtomWifiConfigSaved = 689,
28765    AtomWifiAwareResourceUsingChanged = 690,
28766    AtomWifiAwareHalApiCalled = 691,
28767    AtomWifiLocalOnlyRequestReceived = 692,
28768    AtomWifiLocalOnlyRequestScanTriggered = 693,
28769    AtomWifiThreadTaskExecuted = 694,
28770    AtomWifiStateChanged = 700,
28771    AtomPnoScanStarted = 719,
28772    AtomPnoScanStopped = 720,
28773    AtomWifiIsUnusableReported = 722,
28774    AtomWifiApCapabilitiesReported = 723,
28775    AtomSoftApStateChanged = 805,
28776    AtomScorerPredictionResultReported = 884,
28777    AtomWifiAwareCapabilities = 10190,
28778    AtomWifiModuleInfo = 10193,
28779    AtomWifiSettingInfo = 10194,
28780    AtomWifiComplexSettingInfo = 10195,
28781    AtomWifiConfiguredNetworkInfo = 10198,
28782    AtomWearPowerMenuOpened = 731,
28783    AtomWearAssistantOpened = 755,
28784    AtomFirstOverlayStateChanged = 917,
28785    AtomWsWearTimeSession = 610,
28786    AtomWsIncomingCallActionReported = 626,
28787    AtomWsCallDisconnectionReported = 627,
28788    AtomWsCallDurationReported = 628,
28789    AtomWsCallUserExperienceLatencyReported = 629,
28790    AtomWsCallInteractionReported = 630,
28791    AtomWsOnBodyStateChanged = 787,
28792    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
28793    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
28794    AtomWsComplicationsImpactedNotificationEventReported = 804,
28795    AtomWsRemoteEventUsageReported = 920,
28796    AtomWsNotificationManagedDismissalSync = 941,
28797    AtomWsBugreportEventReported = 964,
28798    AtomWsStandaloneModeSnapshot = 10197,
28799    AtomWsFavoriteWatchFaceSnapshot = 10206,
28800    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
28801    AtomWsWatchFaceCustomizationSnapshot = 10227,
28802    AtomWearAdaptiveSuspendStatsReported = 619,
28803    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
28804    AtomWearPowerAnomalyServiceEventStatsReported = 621,
28805    AtomWearTimeSyncRequested = 911,
28806    AtomWearTimeUpdateStarted = 912,
28807    AtomWearTimeSyncAttemptCompleted = 913,
28808    AtomWearTimeChanged = 914,
28809    AtomWearSetupWizardDeviceStatusReported = 953,
28810    AtomWearSetupWizardPairingCompleted = 954,
28811    AtomWearSetupWizardConnectionEstablished = 955,
28812    AtomWearSetupWizardCheckinCompleted = 956,
28813    AtomWearSetupWizardCompanionTimeReported = 957,
28814    AtomWearSetupWizardStatusReported = 958,
28815    AtomWearSetupWizardHeartbeatReported = 959,
28816    AtomWearSetupWizardFrpTriggered = 960,
28817    AtomWearSetupWizardSystemUpdateTriggered = 961,
28818    AtomWearSetupWizardPhoneSwitchTriggered = 962,
28819    AtomRendererInitialized = 736,
28820    AtomSchemaVersionReceived = 737,
28821    AtomLayoutInspected = 741,
28822    AtomLayoutExpressionInspected = 742,
28823    AtomLayoutAnimationsInspected = 743,
28824    AtomMaterialComponentsInspected = 744,
28825    AtomTileRequested = 745,
28826    AtomStateResponseReceived = 746,
28827    AtomTileResponseReceived = 747,
28828    AtomInflationFinished = 748,
28829    AtomInflationFailed = 749,
28830    AtomIgnoredInflationFailuresReported = 750,
28831    AtomDrawableRendered = 751,
28832    AtomWearModeStateChanged = 715,
28833    AtomMediaActionReported = 608,
28834    AtomMediaControlsLaunched = 609,
28835    AtomMediaSessionStateChanged = 677,
28836    AtomMediaControlApiUsageReported = 966,
28837    AtomMediaSubscriptionChanged = 990,
28838    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
28839    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
28840    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
28841    AtomMediatorUpdated = 721,
28842    AtomSysproxyBluetoothBytesTransfer = 10196,
28843    AtomSysproxyConnectionUpdated = 786,
28844    AtomWearCompanionConnectionState = 921,
28845    AtomSysproxyServiceStateUpdated = 949,
28846    AtomUwbActivityInfo = 10188,
28847    AtomTestUprobestatsAtomReported = 915,
28848    AtomTvLowPowerStandbyPolicy = 679,
28849    AtomExternalTvInputEvent = 717,
28850    AtomBootIntegrityInfoReported = 775,
28851    AtomThreadnetworkTelemetryDataReported = 738,
28852    AtomThreadnetworkTopoEntryRepeated = 739,
28853    AtomThreadnetworkDeviceInfoReported = 740,
28854    AtomCellularRadioPowerStateChanged = 713,
28855    AtomEmergencyNumbersInfo = 10180,
28856    AtomDataNetworkValidation = 10207,
28857    AtomDataRatStateChanged = 854,
28858    AtomConnectedChannelChanged = 882,
28859    AtomCellularIdentifierDisclosed = 800,
28860    AtomSatelliteController = 10182,
28861    AtomSatelliteSession = 10183,
28862    AtomSatelliteIncomingDatagram = 10184,
28863    AtomSatelliteOutgoingDatagram = 10185,
28864    AtomSatelliteProvision = 10186,
28865    AtomSatelliteSosMessageRecommender = 10187,
28866    AtomCarrierRoamingSatelliteSession = 10211,
28867    AtomCarrierRoamingSatelliteControllerStats = 10212,
28868    AtomControllerStatsPerPackage = 10213,
28869    AtomSatelliteEntitlement = 10214,
28870    AtomSatelliteConfigUpdater = 10215,
28871    AtomSatelliteAccessController = 10219,
28872    AtomQualifiedRatListChanged = 634,
28873    AtomQnsImsCallDropStats = 635,
28874    AtomQnsFallbackRestrictionChanged = 636,
28875    AtomQnsRatPreferenceMismatchInfo = 10177,
28876    AtomQnsHandoverTimeMillis = 10178,
28877    AtomQnsHandoverPingpong = 10179,
28878    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
28879    AtomEmergencyNumberDialed = 637,
28880    AtomCallStats = 10221,
28881    AtomCallAudioRouteStats = 10222,
28882    AtomTelecomApiStats = 10223,
28883    AtomTelecomErrorStats = 10224,
28884    AtomLockscreenShortcutSelected = 611,
28885    AtomLockscreenShortcutTriggered = 612,
28886    AtomLauncherImpressionEventV2 = 716,
28887    AtomDisplaySwitchLatencyTracked = 753,
28888    AtomNotificationListenerService = 829,
28889    AtomNavHandleTouchPoints = 869,
28890    AtomCommunalHubWidgetEventReported = 908,
28891    AtomPeripheralTutorialLaunched = 942,
28892    AtomContextualEducationTriggered = 971,
28893    AtomCommunalHubSnapshot = 10226,
28894    AtomTestExtensionAtomReported = 660,
28895    AtomTestRestrictedAtomReported = 672,
28896    AtomStatsSocketLossReported = 752,
28897    AtomSettingsSpaReported = 622,
28898    AtomSelinuxAuditLog = 799,
28899    AtomSandboxApiCalled = 488,
28900    AtomSandboxActivityEventOccurred = 735,
28901    AtomSdkSandboxRestrictedAccessInSession = 796,
28902    AtomSandboxSdkStorage = 10159,
28903    AtomRkpdPoolStats = 664,
28904    AtomRkpdClientOperation = 665,
28905    AtomRangingSessionConfigured = 993,
28906    AtomRangingSessionStarted = 994,
28907    AtomRangingSessionClosed = 995,
28908    AtomRangingTechnologyStarted = 996,
28909    AtomRangingTechnologyStopped = 997,
28910    AtomMediaProviderDatabaseRollbackReported = 784,
28911    AtomBackupSetupStatusReported = 785,
28912    AtomScreenOffReported = 776,
28913    AtomScreenTimeoutOverrideReported = 836,
28914    AtomScreenInteractiveSessionReported = 837,
28915    AtomScreenDimReported = 867,
28916    AtomAtom9999 = 9999,
28917    AtomAtom99999 = 99999,
28918    AtomPhotopickerSessionInfoReported = 886,
28919    AtomPhotopickerApiInfoReported = 887,
28920    AtomPhotopickerUiEventLogged = 888,
28921    AtomPhotopickerMediaItemStatusReported = 889,
28922    AtomPhotopickerPreviewInfoLogged = 890,
28923    AtomPhotopickerMenuInteractionLogged = 891,
28924    AtomPhotopickerBannerInteractionLogged = 892,
28925    AtomPhotopickerMediaLibraryInfoLogged = 893,
28926    AtomPhotopickerPageInfoLogged = 894,
28927    AtomPhotopickerMediaGridSyncInfoReported = 895,
28928    AtomPhotopickerAlbumSyncInfoReported = 896,
28929    AtomPhotopickerSearchInfoReported = 897,
28930    AtomSearchDataExtractionDetailsReported = 898,
28931    AtomEmbeddedPhotopickerInfoReported = 899,
28932    AtomPermissionRationaleDialogViewed = 645,
28933    AtomPermissionRationaleDialogActionReported = 646,
28934    AtomAppDataSharingUpdatesNotificationInteraction = 647,
28935    AtomAppDataSharingUpdatesFragmentViewed = 648,
28936    AtomAppDataSharingUpdatesFragmentActionReported = 649,
28937    AtomEnhancedConfirmationDialogResultReported = 827,
28938    AtomEnhancedConfirmationRestrictionCleared = 828,
28939    AtomPressureStallInformation = 10229,
28940    AtomPdfLoadReported = 859,
28941    AtomPdfApiUsageReported = 860,
28942    AtomPdfSearchReported = 861,
28943    AtomComponentStateChangedReported = 863,
28944    AtomOndevicepersonalizationApiCalled = 711,
28945    AtomOndevicepersonalizationTraceEvent = 952,
28946    AtomNfcObserveModeStateChanged = 855,
28947    AtomNfcFieldChanged = 856,
28948    AtomNfcPollingLoopNotificationReported = 857,
28949    AtomNfcProprietaryCapabilitiesReported = 858,
28950    AtomNfcExitFrameTableChanged = 1036,
28951    AtomNfcAutoTransactReported = 1038,
28952    AtomMicroxrDeviceBootCompleteReported = 901,
28953    AtomMteState = 10181,
28954    AtomZramMaintenanceExecuted = 1015,
28955    AtomZramSetupExecuted = 1029,
28956    AtomZramMmStatMmd = 10232,
28957    AtomZramBdStatMmd = 10233,
28958    AtomMediaEditingEndedReported = 798,
28959    AtomMediaCodecReclaimRequestCompleted = 600,
28960    AtomMediaCodecStarted = 641,
28961    AtomMediaCodecStopped = 642,
28962    AtomMediaCodecRendered = 684,
28963    AtomEmergencyStateChanged = 633,
28964    AtomChreSignificantMotionStateChanged = 868,
28965    AtomPopulationDensityProviderLoadingReported = 1002,
28966    AtomDensityBasedCoarseLocationsUsageReported = 1003,
28967    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
28968    AtomKernelOomKillOccurred = 754,
28969    AtomKeyboardConfigured = 682,
28970    AtomKeyboardSystemsEventReported = 683,
28971    AtomInputdeviceUsageReported = 686,
28972    AtomInputEventLatencyReported = 932,
28973    AtomTouchpadUsage = 10191,
28974    AtomIkeSessionTerminated = 678,
28975    AtomIkeLivenessCheckSessionValidated = 760,
28976    AtomNegotiatedSecurityAssociation = 821,
28977    AtomHotwordEgressSizeAtomReported = 761,
28978    AtomHealthConnectUiImpression = 623,
28979    AtomHealthConnectUiInteraction = 624,
28980    AtomHealthConnectAppOpenedReported = 625,
28981    AtomHealthConnectApiCalled = 616,
28982    AtomHealthConnectUsageStats = 617,
28983    AtomHealthConnectStorageStats = 618,
28984    AtomHealthConnectApiInvoked = 643,
28985    AtomExerciseRouteApiCalled = 654,
28986    AtomHealthConnectExportInvoked = 907,
28987    AtomHealthConnectImportInvoked = 918,
28988    AtomHealthConnectExportImportStatsReported = 919,
28989    AtomHealthConnectPermissionStats = 963,
28990    AtomHealthConnectPhrApiInvoked = 980,
28991    AtomHealthConnectPhrUsageStats = 981,
28992    AtomHealthConnectPhrStorageStats = 984,
28993    AtomHealthConnectRestrictedEcosystemStats = 985,
28994    AtomHealthConnectEcosystemStats = 986,
28995    AtomHdmiEarcStatusReported = 701,
28996    AtomHdmiSoundbarModeStatusReported = 724,
28997    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
28998    AtomBatteryHealth = 10220,
28999    AtomBiometricUnenrolled = 944,
29000    AtomBiometricEnumerated = 945,
29001    AtomApplicationGrammaticalInflectionChanged = 584,
29002    AtomSystemGrammaticalInflectionChanged = 816,
29003    AtomFullScreenIntentLaunched = 631,
29004    AtomBalAllowed = 632,
29005    AtomInTaskActivityStarted = 685,
29006    AtomDeviceOrientationChanged = 906,
29007    AtomCachedAppsHighWatermark = 10189,
29008    AtomStylusPredictionMetricsReported = 718,
29009    AtomUserRiskEventReported = 725,
29010    AtomMediaProjectionStateChanged = 729,
29011    AtomMediaProjectionTargetChanged = 730,
29012    AtomExcessiveBinderProxyCountReported = 853,
29013    AtomProxyBytesTransferByFgBg = 10200,
29014    AtomMobileBytesTransferByProcState = 10204,
29015    AtomBiometricFrrNotification = 817,
29016    AtomSensitiveContentMediaProjectionSession = 830,
29017    AtomSensitiveNotificationAppProtectionSession = 831,
29018    AtomSensitiveNotificationAppProtectionApplied = 832,
29019    AtomSensitiveNotificationRedaction = 833,
29020    AtomSensitiveContentAppProtection = 835,
29021    AtomAppRestrictionStateChanged = 866,
29022    AtomBatteryUsageStatsPerUid = 10209,
29023    AtomPostgcMemorySnapshot = 924,
29024    AtomPowerSaveTempAllowlistChanged = 926,
29025    AtomAppOpAccessTracked = 931,
29026    AtomContentOrFileUriEventReported = 933,
29027    AtomDeviceIdleTempAllowlistUpdated = 940,
29028    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
29029    AtomFrameworkWakelockInfo = 10230,
29030    AtomJankFrameCountByWidgetReported = 950,
29031    AtomIntentCreatorTokenAdded = 978,
29032    AtomNotificationChannelClassification = 983,
29033    AtomCameraStatusForCompatibilityChanged = 999,
29034    AtomFederatedComputeApiCalled = 712,
29035    AtomFederatedComputeTrainingEventReported = 771,
29036    AtomExampleIteratorNextLatencyReported = 838,
29037    AtomFederatedComputeTraceEventReported = 992,
29038    AtomExpressEventReported = 528,
29039    AtomExpressHistogramSampleReported = 593,
29040    AtomExpressUidEventReported = 644,
29041    AtomExpressUidHistogramSampleReported = 658,
29042    AtomDreamSettingChanged = 705,
29043    AtomDreamSettingSnapshot = 10192,
29044    AtomDndStateChanged = 657,
29045    AtomExternalDisplayStateChanged = 806,
29046    AtomDisplayModeDirectorVoteChanged = 792,
29047    AtomDevicePolicyManagementMode = 10216,
29048    AtomDevicePolicyState = 10217,
29049    AtomDeviceLockCheckInRequestReported = 726,
29050    AtomDeviceLockProvisioningCompleteReported = 727,
29051    AtomDeviceLockKioskAppRequestReported = 728,
29052    AtomDeviceLockCheckInRetryReported = 789,
29053    AtomDeviceLockProvisionFailureReported = 790,
29054    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
29055    AtomDesktopModeUiChanged = 818,
29056    AtomDesktopModeSessionTaskUpdate = 819,
29057    AtomDesktopModeTaskSizeUpdated = 935,
29058    AtomCronetEngineCreated = 703,
29059    AtomCronetTrafficReported = 704,
29060    AtomCronetEngineBuilderInitialized = 762,
29061    AtomCronetHttpFlagsInitialized = 763,
29062    AtomCronetInitialized = 764,
29063    AtomCredentialManagerApiCalled = 585,
29064    AtomCredentialManagerInitPhaseReported = 651,
29065    AtomCredentialManagerCandidatePhaseReported = 652,
29066    AtomCredentialManagerFinalPhaseReported = 653,
29067    AtomCredentialManagerTotalReported = 667,
29068    AtomCredentialManagerFinalnouidReported = 668,
29069    AtomCredentialManagerGetReported = 669,
29070    AtomCredentialManagerAuthClickReported = 670,
29071    AtomCredentialManagerApiv2Called = 671,
29072    AtomCpuPolicy = 10199,
29073    AtomVpnConnectionStateChanged = 850,
29074    AtomVpnConnectionReported = 851,
29075    AtomIpClientRaInfoReported = 778,
29076    AtomApfSessionInfoReported = 777,
29077    AtomCoreNetworkingTerribleErrorOccurred = 979,
29078    AtomNetworkStatsRecorderFileOperated = 783,
29079    AtomDailyKeepaliveInfoReported = 650,
29080    AtomNetworkRequestStateChanged = 779,
29081    AtomTetheringActiveSessionsReported = 925,
29082    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
29083    AtomHardwareRendererEvent = 946,
29084    AtomTextureViewEvent = 947,
29085    AtomSurfaceControlEvent = 948,
29086    AtomImageDecoded = 977,
29087    AtomCertificateTransparencyLogListStateChanged = 934,
29088    AtomConscryptServiceUsed = 965,
29089    AtomCertificateTransparencyVerificationReported = 989,
29090    AtomCameraFeatureCombinationQueryEvent = 900,
29091    AtomBroadcastSent = 922,
29092    AtomBluetoothHashedDeviceNameReported = 613,
29093    AtomBluetoothL2capCocClientConnection = 614,
29094    AtomBluetoothL2capCocServerConnection = 615,
29095    AtomBluetoothLeSessionConnected = 656,
29096    AtomRestrictedBluetoothDeviceNameReported = 666,
29097    AtomBluetoothProfileConnectionAttempted = 696,
29098    AtomBluetoothContentProfileErrorReported = 781,
29099    AtomBluetoothRfcommConnectionAttempted = 782,
29100    AtomRemoteDeviceInformationWithMetricId = 862,
29101    AtomLeAppScanStateChanged = 870,
29102    AtomLeRadioScanStopped = 871,
29103    AtomLeScanResultReceived = 872,
29104    AtomLeScanAbused = 873,
29105    AtomLeAdvStateChanged = 874,
29106    AtomLeAdvErrorReported = 875,
29107    AtomA2dpSessionReported = 904,
29108    AtomBluetoothCrossLayerEventReported = 916,
29109    AtomBroadcastAudioSessionReported = 927,
29110    AtomBroadcastAudioSyncReported = 928,
29111    AtomBluetoothRfcommConnectionReportedAtClose = 982,
29112    AtomBluetoothLeConnection = 988,
29113    AtomHearingDeviceActiveEventReported = 1021,
29114    AtomBackportedFixStatusReported = 987,
29115    AtomPluginInitialized = 655,
29116    AtomCarSystemUiDataSubscriptionEventReported = 974,
29117    AtomCarSettingsDataSubscriptionEventReported = 975,
29118    AtomCarQcLibEventReported = 976,
29119    AtomCarWakeupFromSuspendReported = 852,
29120    AtomCarRecentsEventReported = 770,
29121    AtomCarCalmModeEventReported = 797,
29122    AtomAutofillUiEventReported = 603,
29123    AtomAutofillFillRequestReported = 604,
29124    AtomAutofillFillResponseReported = 605,
29125    AtomAutofillSaveEventReported = 606,
29126    AtomAutofillSessionCommitted = 607,
29127    AtomAutofillFieldClassificationEventReported = 659,
29128    AtomOdrefreshReported = 366,
29129    AtomOdsignReported = 548,
29130    AtomBackgroundDexoptJobEnded = 467,
29131    AtomPrerebootDexoptJobEnded = 883,
29132    AtomArtDatumReported = 332,
29133    AtomArtDeviceDatumReported = 550,
29134    AtomArtDatumDeltaReported = 565,
29135    AtomArtDex2oatReported = 929,
29136    AtomArtDeviceStatus = 10205,
29137    AtomAppSearchSetSchemaStatsReported = 385,
29138    AtomAppSearchSchemaMigrationStatsReported = 579,
29139    AtomAppSearchUsageSearchIntentStatsReported = 825,
29140    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
29141    AtomAppSearchAppsIndexerStatsReported = 909,
29142    AtomAppFunctionsRequestReported = 998,
29143    AtomApexInstallationRequested = 732,
29144    AtomApexInstallationStaged = 733,
29145    AtomApexInstallationEnded = 734,
29146    AtomAiWallpapersButtonPressed = 706,
29147    AtomAiWallpapersTemplateSelected = 707,
29148    AtomAiWallpapersTermSelected = 708,
29149    AtomAiWallpapersWallpaperSet = 709,
29150    AtomAiWallpapersSessionSummary = 710,
29151    AtomJsscriptengineLatencyReported = 483,
29152    AtomAdServicesApiCalled = 435,
29153    AtomAdServicesMesurementReportsUploaded = 436,
29154    AtomMobileDataDownloadFileGroupStatusReported = 490,
29155    AtomMobileDataDownloadDownloadResultReported = 502,
29156    AtomAdServicesSettingsUsageReported = 493,
29157    AtomBackgroundFetchProcessReported = 496,
29158    AtomUpdateCustomAudienceProcessReported = 497,
29159    AtomRunAdBiddingProcessReported = 498,
29160    AtomRunAdScoringProcessReported = 499,
29161    AtomRunAdSelectionProcessReported = 500,
29162    AtomRunAdBiddingPerCaProcessReported = 501,
29163    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
29164    AtomAdServicesMeasurementRegistrations = 512,
29165    AtomAdServicesGetTopicsReported = 535,
29166    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
29167    AtomAdServicesEpochComputationClassifierReported = 537,
29168    AtomAdServicesBackCompatGetTopicsReported = 598,
29169    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
29170    AtomAdServicesMeasurementDebugKeys = 640,
29171    AtomAdServicesErrorReported = 662,
29172    AtomAdServicesBackgroundJobsExecutionReported = 663,
29173    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
29174    AtomAdServicesMeasurementAttribution = 674,
29175    AtomAdServicesMeasurementJobs = 675,
29176    AtomAdServicesMeasurementWipeout = 676,
29177    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
29178    AtomAdServicesEnrollmentDataStored = 697,
29179    AtomAdServicesEnrollmentFileDownloaded = 698,
29180    AtomAdServicesEnrollmentMatched = 699,
29181    AtomAdServicesConsentMigrated = 702,
29182    AtomAdServicesEnrollmentFailed = 714,
29183    AtomAdServicesMeasurementClickVerification = 756,
29184    AtomAdServicesEncryptionKeyFetched = 765,
29185    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
29186    AtomDestinationRegisteredBeacons = 767,
29187    AtomReportInteractionApiCalled = 768,
29188    AtomInteractionReportingTableCleared = 769,
29189    AtomAppManifestConfigHelperCalled = 788,
29190    AtomAdFilteringProcessJoinCaReported = 793,
29191    AtomAdFilteringProcessAdSelectionReported = 794,
29192    AtomAdCounterHistogramUpdaterReported = 795,
29193    AtomSignatureVerification = 807,
29194    AtomKAnonImmediateSignJoinStatusReported = 808,
29195    AtomKAnonBackgroundJobStatusReported = 809,
29196    AtomKAnonInitializeStatusReported = 810,
29197    AtomKAnonSignStatusReported = 811,
29198    AtomKAnonJoinStatusReported = 812,
29199    AtomKAnonKeyAttestationStatusReported = 813,
29200    AtomGetAdSelectionDataApiCalled = 814,
29201    AtomGetAdSelectionDataBuyerInputGenerated = 815,
29202    AtomBackgroundJobSchedulingReported = 834,
29203    AtomTopicsEncryptionEpochComputationReported = 840,
29204    AtomTopicsEncryptionGetTopicsReported = 841,
29205    AtomAdservicesShellCommandCalled = 842,
29206    AtomUpdateSignalsApiCalled = 843,
29207    AtomEncodingJobRun = 844,
29208    AtomEncodingJsFetch = 845,
29209    AtomEncodingJsExecution = 846,
29210    AtomPersistAdSelectionResultCalled = 847,
29211    AtomServerAuctionKeyFetchCalled = 848,
29212    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
29213    AtomAdServicesMeasurementProcessOdpRegistration = 864,
29214    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
29215    AtomSelectAdsFromOutcomesApiCalled = 876,
29216    AtomReportImpressionApiCalled = 877,
29217    AtomAdServicesEnrollmentTransactionStats = 885,
29218    AtomAdServicesCobaltLoggerEventReported = 902,
29219    AtomAdServicesCobaltPeriodicJobEventReported = 903,
29220    AtomUpdateSignalsProcessReported = 905,
29221    AtomTopicsScheduleEpochJobSettingReported = 930,
29222    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
29223    AtomScheduledCustomAudienceUpdatePerformed = 968,
29224    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
29225    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
29226    AtomThermalStatusCalled = 772,
29227    AtomThermalHeadroomCalled = 773,
29228    AtomThermalHeadroomThresholdsCalled = 774,
29229    AtomAdpfHintSessionTidCleanup = 839,
29230    AtomThermalHeadroomThresholds = 10201,
29231    AtomAdpfSessionSnapshot = 10218,
29232    AtomAdaptiveAuthUnlockAfterLockReported = 820,
29233    AtomAccountManagerEvent = 951,
29234    AtomAccessibilityCheckResultReported = 910,
29235}
29236impl AtomId {
29237    /// String value of the enum field names used in the ProtoBuf definition.
29238    ///
29239    /// The values are not transformed in any way and thus are considered stable
29240    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29241    pub fn as_str_name(&self) -> &'static str {
29242        match self {
29243            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
29244            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
29245            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
29246            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
29247            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
29248            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
29249            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
29250            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
29251            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
29252            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
29253            Self::AtomLongPartialWakelockStateChanged => {
29254                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
29255            }
29256            Self::AtomMobileRadioPowerStateChanged => {
29257                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
29258            }
29259            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
29260            Self::AtomActivityManagerSleepStateChanged => {
29261                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
29262            }
29263            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
29264            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
29265            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
29266            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
29267            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
29268            Self::AtomBatterySaverModeStateChanged => {
29269                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
29270            }
29271            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
29272            Self::AtomDeviceIdlingModeStateChanged => {
29273                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
29274            }
29275            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
29276            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
29277            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
29278            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
29279            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
29280            Self::AtomProcessLifeCycleStateChanged => {
29281                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
29282            }
29283            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
29284            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
29285            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
29286            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
29287            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
29288            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
29289            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
29290            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
29291            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
29292            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
29293            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
29294            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
29295            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
29296            Self::AtomActivityForegroundStateChanged => {
29297                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
29298            }
29299            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
29300            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
29301            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
29302            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
29303            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
29304            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
29305            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
29306            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
29307            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
29308            Self::AtomPictureInPictureStateChanged => {
29309                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
29310            }
29311            Self::AtomWifiMulticastLockStateChanged => {
29312                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
29313            }
29314            Self::AtomAppStartMemoryStateCaptured => {
29315                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
29316            }
29317            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
29318            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
29319            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
29320            Self::AtomForegroundServiceStateChanged => {
29321                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
29322            }
29323            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
29324            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
29325            Self::AtomKeyguardBouncerStateChanged => {
29326                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
29327            }
29328            Self::AtomKeyguardBouncerPasswordEntered => {
29329                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
29330            }
29331            Self::AtomAppDied => "ATOM_APP_DIED",
29332            Self::AtomResourceConfigurationChanged => {
29333                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
29334            }
29335            Self::AtomBluetoothEnabledStateChanged => {
29336                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
29337            }
29338            Self::AtomBluetoothConnectionStateChanged => {
29339                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
29340            }
29341            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
29342            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
29343            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
29344            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
29345            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
29346            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
29347            Self::AtomMobileConnectionStateChanged => {
29348                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
29349            }
29350            Self::AtomMobileRadioTechnologyChanged => {
29351                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
29352            }
29353            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
29354            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
29355            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
29356            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
29357            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
29358            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
29359            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
29360            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
29361            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
29362            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
29363            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
29364            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
29365            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
29366            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
29367            Self::AtomSlowIo => "ATOM_SLOW_IO",
29368            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
29369            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
29370            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
29371            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
29372            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
29373            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
29374            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
29375            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
29376            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
29377            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
29378            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
29379            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
29380            Self::AtomDocsUiFileOpCopyMoveModeReported => {
29381                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
29382            }
29383            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
29384            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
29385            Self::AtomDocsUiInvalidScopedAccessRequest => {
29386                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
29387            }
29388            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
29389            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
29390            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
29391            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
29392            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
29393            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
29394            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
29395            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
29396            Self::AtomDocsUiPickerLaunchedFromReported => {
29397                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
29398            }
29399            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
29400            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
29401            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
29402            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
29403            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
29404            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
29405            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
29406            Self::AtomBluetoothLinkLayerConnectionEvent => {
29407                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
29408            }
29409            Self::AtomBluetoothAclConnectionStateChanged => {
29410                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
29411            }
29412            Self::AtomBluetoothScoConnectionStateChanged => {
29413                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
29414            }
29415            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
29416            Self::AtomAppOptimizedAfterDowngraded => {
29417                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
29418            }
29419            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
29420            Self::AtomGnssNfwNotificationReported => {
29421                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
29422            }
29423            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
29424            Self::AtomUsbPortOverheatEventReported => {
29425                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
29426            }
29427            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
29428            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
29429            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
29430            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
29431            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
29432            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
29433            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
29434            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
29435            Self::AtomBroadcastDispatchLatencyReported => {
29436                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
29437            }
29438            Self::AtomAttentionManagerServiceResultReported => {
29439                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
29440            }
29441            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
29442            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
29443            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
29444            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
29445            Self::AtomBiometricSystemHealthIssueDetected => {
29446                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
29447            }
29448            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
29449            Self::AtomScheduledJobConstraintChanged => {
29450                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
29451            }
29452            Self::AtomBluetoothActiveDeviceChanged => {
29453                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
29454            }
29455            Self::AtomBluetoothA2dpPlaybackStateChanged => {
29456                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
29457            }
29458            Self::AtomBluetoothA2dpCodecConfigChanged => {
29459                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
29460            }
29461            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
29462                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
29463            }
29464            Self::AtomBluetoothA2dpAudioUnderrunReported => {
29465                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
29466            }
29467            Self::AtomBluetoothA2dpAudioOverrunReported => {
29468                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
29469            }
29470            Self::AtomBluetoothDeviceRssiReported => {
29471                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
29472            }
29473            Self::AtomBluetoothDeviceFailedContactCounterReported => {
29474                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
29475            }
29476            Self::AtomBluetoothDeviceTxPowerLevelReported => {
29477                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
29478            }
29479            Self::AtomBluetoothHciTimeoutReported => {
29480                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
29481            }
29482            Self::AtomBluetoothQualityReportReported => {
29483                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
29484            }
29485            Self::AtomBluetoothDeviceInfoReported => {
29486                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
29487            }
29488            Self::AtomBluetoothRemoteVersionInfoReported => {
29489                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
29490            }
29491            Self::AtomBluetoothSdpAttributeReported => {
29492                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
29493            }
29494            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
29495            Self::AtomBluetoothClassicPairingEventReported => {
29496                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
29497            }
29498            Self::AtomBluetoothSmpPairingEventReported => {
29499                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
29500            }
29501            Self::AtomScreenTimeoutExtensionReported => {
29502                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
29503            }
29504            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
29505            Self::AtomPermissionGrantRequestResultReported => {
29506                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
29507            }
29508            Self::AtomBluetoothSocketConnectionStateChanged => {
29509                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
29510            }
29511            Self::AtomDeviceIdentifierAccessDenied => {
29512                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
29513            }
29514            Self::AtomBubbleDeveloperErrorReported => {
29515                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
29516            }
29517            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
29518            Self::AtomAssistGestureFeedbackReported => {
29519                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
29520            }
29521            Self::AtomAssistGestureProgressReported => {
29522                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
29523            }
29524            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
29525            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
29526            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
29527            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
29528            Self::AtomAppInstallOnExternalStorageReported => {
29529                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
29530            }
29531            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
29532            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
29533            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
29534            Self::AtomSystemServerWatchdogOccurred => {
29535                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
29536            }
29537            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
29538            Self::AtomBluetoothClassOfDeviceReported => {
29539                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
29540            }
29541            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
29542            Self::AtomThermalThrottlingSeverityStateChanged => {
29543                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
29544            }
29545            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
29546            Self::AtomMediametricsAudiopolicyReported => {
29547                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
29548            }
29549            Self::AtomMediametricsAudiorecordReported => {
29550                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
29551            }
29552            Self::AtomMediametricsAudiothreadReported => {
29553                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
29554            }
29555            Self::AtomMediametricsAudiotrackReported => {
29556                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
29557            }
29558            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
29559            Self::AtomMediametricsDrmWidevineReported => {
29560                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
29561            }
29562            Self::AtomMediametricsExtractorReported => {
29563                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
29564            }
29565            Self::AtomMediametricsMediadrmReported => {
29566                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
29567            }
29568            Self::AtomMediametricsNuplayerReported => {
29569                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
29570            }
29571            Self::AtomMediametricsRecorderReported => {
29572                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
29573            }
29574            Self::AtomMediametricsDrmmanagerReported => {
29575                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
29576            }
29577            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
29578            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
29579            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
29580            Self::AtomContentCaptureCallerMismatchReported => {
29581                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
29582            }
29583            Self::AtomContentCaptureServiceEvents => {
29584                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
29585            }
29586            Self::AtomContentCaptureSessionEvents => {
29587                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
29588            }
29589            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
29590            Self::AtomLocationManagerApiUsageReported => {
29591                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
29592            }
29593            Self::AtomReviewPermissionsFragmentResultReported => {
29594                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
29595            }
29596            Self::AtomRuntimePermissionsUpgradeResult => {
29597                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
29598            }
29599            Self::AtomGrantPermissionsActivityButtonActions => {
29600                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
29601            }
29602            Self::AtomLocationAccessCheckNotificationAction => {
29603                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
29604            }
29605            Self::AtomAppPermissionFragmentActionReported => {
29606                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
29607            }
29608            Self::AtomAppPermissionFragmentViewed => {
29609                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
29610            }
29611            Self::AtomAppPermissionsFragmentViewed => {
29612                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
29613            }
29614            Self::AtomPermissionAppsFragmentViewed => {
29615                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
29616            }
29617            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
29618            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
29619            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
29620            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
29621            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
29622            Self::AtomBackGestureReportedReported => {
29623                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
29624            }
29625            Self::AtomUpdateEngineUpdateAttemptReported => {
29626                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
29627            }
29628            Self::AtomUpdateEngineSuccessfulUpdateReported => {
29629                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
29630            }
29631            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
29632            Self::AtomAppCompatibilityChangeReported => {
29633                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
29634            }
29635            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
29636            Self::AtomVmsClientConnectionStateChanged => {
29637                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
29638            }
29639            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
29640            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
29641            Self::AtomMediaProviderPermissionRequested => {
29642                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
29643            }
29644            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
29645            Self::AtomMediaProviderIdleMaintenanceFinished => {
29646                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
29647            }
29648            Self::AtomRebootEscrowRecoveryReported => {
29649                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
29650            }
29651            Self::AtomBootTimeEventDurationReported => {
29652                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
29653            }
29654            Self::AtomBootTimeEventElapsedTimeReported => {
29655                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
29656            }
29657            Self::AtomBootTimeEventUtcTimeReported => {
29658                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
29659            }
29660            Self::AtomBootTimeEventErrorCodeReported => {
29661                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
29662            }
29663            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
29664            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
29665            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
29666            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
29667            Self::AtomIntegrityCheckResultReported => {
29668                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
29669            }
29670            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
29671            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
29672            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
29673            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
29674            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
29675            Self::AtomWifiConnectionResultReported => {
29676                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
29677            }
29678            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
29679            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
29680            Self::AtomForegroundServiceAppOpSessionEnded => {
29681                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
29682            }
29683            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
29684            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
29685            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
29686            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
29687            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
29688            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
29689            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
29690            Self::AtomUserLifecycleJourneyReported => {
29691                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
29692            }
29693            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
29694            Self::AtomAccessibilityShortcutReported => {
29695                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
29696            }
29697            Self::AtomAccessibilityServiceReported => {
29698                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
29699            }
29700            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
29701            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
29702            Self::AtomAutoRevokeNotificationClicked => {
29703                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
29704            }
29705            Self::AtomAutoRevokeFragmentAppViewed => {
29706                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
29707            }
29708            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
29709            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
29710                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
29711            }
29712            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
29713            Self::AtomAudioPowerUsageDataReported => {
29714                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
29715            }
29716            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
29717            Self::AtomMediaoutputOpSwitchReported => {
29718                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
29719            }
29720            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
29721            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
29722            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
29723            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
29724            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
29725            Self::AtomCarUserHalModifyUserRequestReported => {
29726                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
29727            }
29728            Self::AtomCarUserHalModifyUserResponseReported => {
29729                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
29730            }
29731            Self::AtomCarUserHalPostSwitchResponseReported => {
29732                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
29733            }
29734            Self::AtomCarUserHalInitialUserInfoRequestReported => {
29735                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
29736            }
29737            Self::AtomCarUserHalInitialUserInfoResponseReported => {
29738                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
29739            }
29740            Self::AtomCarUserHalUserAssociationRequestReported => {
29741                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
29742            }
29743            Self::AtomCarUserHalSetUserAssociationResponseReported => {
29744                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
29745            }
29746            Self::AtomNetworkIpProvisioningReported => {
29747                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
29748            }
29749            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
29750            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
29751            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
29752            Self::AtomMediametricsAudiorecorddeviceusageReported => {
29753                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
29754            }
29755            Self::AtomMediametricsAudiothreaddeviceusageReported => {
29756                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
29757            }
29758            Self::AtomMediametricsAudiotrackdeviceusageReported => {
29759                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
29760            }
29761            Self::AtomMediametricsAudiodeviceconnectionReported => {
29762                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
29763            }
29764            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
29765            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
29766            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
29767            Self::AtomContactsProviderStatusReported => {
29768                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
29769            }
29770            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
29771            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
29772            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
29773            Self::AtomUiInteractionFrameInfoReported => {
29774                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
29775            }
29776            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
29777            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
29778            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
29779            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
29780            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
29781            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
29782            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
29783            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
29784            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
29785            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
29786            Self::AtomMediametricsMediaparserReported => {
29787                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
29788            }
29789            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
29790            Self::AtomTextClassifierApiUsageReported => {
29791                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
29792            }
29793            Self::AtomCarWatchdogKillStatsReported => {
29794                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
29795            }
29796            Self::AtomMediametricsPlaybackReported => {
29797                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
29798            }
29799            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
29800            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
29801            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
29802            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
29803            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
29804            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
29805            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
29806            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
29807            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
29808            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
29809            Self::AtomImsServiceEntitlementUpdated => {
29810                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
29811            }
29812            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
29813            Self::AtomSimSpecificSettingsRestored => {
29814                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
29815            }
29816            Self::AtomTextClassifierDownloadReported => {
29817                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
29818            }
29819            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
29820            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
29821            Self::AtomBluetoothHalCrashReasonReported => {
29822                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
29823            }
29824            Self::AtomRebootEscrowPreparationReported => {
29825                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
29826            }
29827            Self::AtomRebootEscrowLskfCaptureReported => {
29828                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
29829            }
29830            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
29831            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
29832            Self::AtomMediametricsAaudiostreamReported => {
29833                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
29834            }
29835            Self::AtomMediaTranscodingSessionEnded => {
29836                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
29837            }
29838            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
29839            Self::AtomMagnificationModeWithImeOnReported => {
29840                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
29841            }
29842            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
29843            Self::AtomAppSearchPutDocumentStatsReported => {
29844                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
29845            }
29846            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
29847            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
29848            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
29849            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
29850            Self::AtomAuthPromptAuthenticateInvoked => {
29851                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
29852            }
29853            Self::AtomAuthManagerCanAuthenticateInvoked => {
29854                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
29855            }
29856            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
29857            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
29858            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
29859            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
29860            Self::AtomLocationTimeZoneProviderStateChanged => {
29861                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
29862            }
29863            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
29864            Self::AtomTimeoutAutoExtendedReported => {
29865                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
29866            }
29867            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
29868            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
29869            Self::AtomCarWatchdogIoOveruseStatsReported => {
29870                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
29871            }
29872            Self::AtomUserLevelHibernationStateChanged => {
29873                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
29874            }
29875            Self::AtomAppSearchInitializeStatsReported => {
29876                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
29877            }
29878            Self::AtomAppSearchQueryStatsReported => {
29879                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
29880            }
29881            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
29882            Self::AtomNetworkIpReachabilityMonitorReported => {
29883                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
29884            }
29885            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
29886            Self::AtomAnrOccurredProcessingStarted => {
29887                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
29888            }
29889            Self::AtomAppSearchRemoveStatsReported => {
29890                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
29891            }
29892            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
29893            Self::AtomPermissionUsageFragmentInteraction => {
29894                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
29895            }
29896            Self::AtomPermissionDetailsInteraction => {
29897                "ATOM_PERMISSION_DETAILS_INTERACTION"
29898            }
29899            Self::AtomPrivacySensorToggleInteraction => {
29900                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
29901            }
29902            Self::AtomPrivacyToggleDialogInteraction => {
29903                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
29904            }
29905            Self::AtomAppSearchOptimizeStatsReported => {
29906                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
29907            }
29908            Self::AtomNonA11yToolServiceWarningReport => {
29909                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
29910            }
29911            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
29912            Self::AtomSizeCompatRestartButtonEventReported => {
29913                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
29914            }
29915            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
29916            Self::AtomNetworkDnsHandshakeReported => {
29917                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
29918            }
29919            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
29920            Self::AtomBluetoothLeBatchScanReportDelay => {
29921                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
29922            }
29923            Self::AtomAccessibilityFloatingMenuUiChanged => {
29924                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
29925            }
29926            Self::AtomNeuralnetworksCompilationCompleted => {
29927                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
29928            }
29929            Self::AtomNeuralnetworksExecutionCompleted => {
29930                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
29931            }
29932            Self::AtomNeuralnetworksCompilationFailed => {
29933                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
29934            }
29935            Self::AtomNeuralnetworksExecutionFailed => {
29936                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
29937            }
29938            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
29939            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
29940            Self::AtomContextHubLoadedNanoappSnapshotReported => {
29941                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
29942            }
29943            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
29944            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
29945            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
29946            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
29947            Self::AtomUwbRangingMeasurementReceived => {
29948                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
29949            }
29950            Self::AtomTextClassifierDownloadWorkScheduled => {
29951                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
29952            }
29953            Self::AtomTextClassifierDownloadWorkCompleted => {
29954                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
29955            }
29956            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
29957            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
29958            Self::AtomNearbyDeviceScanStateChanged => {
29959                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
29960            }
29961            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
29962            Self::AtomMediametricsAudiotrackstatusReported => {
29963                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
29964            }
29965            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
29966            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
29967                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
29968            }
29969            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
29970            Self::AtomDisplayHbmBrightnessChanged => {
29971                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
29972            }
29973            Self::AtomPersistentUriPermissionsFlushed => {
29974                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
29975            }
29976            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
29977                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
29978            }
29979            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
29980            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
29981            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
29982            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
29983            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
29984            Self::AtomMediametricsAudiorecordstatusReported => {
29985                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
29986            }
29987            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
29988            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
29989            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
29990            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
29991            Self::AtomHotwordDetectorCreateRequested => {
29992                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
29993            }
29994            Self::AtomHotwordDetectionServiceInitResultReported => {
29995                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
29996            }
29997            Self::AtomHotwordDetectionServiceRestarted => {
29998                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
29999            }
30000            Self::AtomHotwordDetectorKeyphraseTriggered => {
30001                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
30002            }
30003            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
30004            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
30005                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
30006            }
30007            Self::AtomContactsIndexerUpdateStatsReported => {
30008                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
30009            }
30010            Self::AtomAppBackgroundRestrictionsInfo => {
30011                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
30012            }
30013            Self::AtomMmsSmsProviderGetThreadIdFailed => {
30014                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
30015            }
30016            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
30017                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
30018            }
30019            Self::AtomPermissionReminderNotificationInteracted => {
30020                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
30021            }
30022            Self::AtomRecentPermissionDecisionsInteracted => {
30023                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
30024            }
30025            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
30026            Self::AtomLeAudioConnectionSessionReported => {
30027                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
30028            }
30029            Self::AtomLeAudioBroadcastSessionReported => {
30030                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
30031            }
30032            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
30033            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
30034            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
30035            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
30036                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
30037            }
30038            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
30039                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
30040            }
30041            Self::AtomAccessibilityTextReadingOptionsChanged => {
30042                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
30043            }
30044            Self::AtomWifiSetupFailureCrashReported => {
30045                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
30046            }
30047            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
30048            Self::AtomIsolatedCompilationScheduled => {
30049                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
30050            }
30051            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
30052            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
30053                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
30054            }
30055            Self::AtomSystemServerPreWatchdogOccurred => {
30056                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
30057            }
30058            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
30059            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
30060            Self::AtomRemoteKeyProvisioningAttempt => {
30061                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
30062            }
30063            Self::AtomRemoteKeyProvisioningNetworkInfo => {
30064                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
30065            }
30066            Self::AtomRemoteKeyProvisioningTiming => {
30067                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
30068            }
30069            Self::AtomMediaoutputOpInteractionReport => {
30070                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
30071            }
30072            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
30073            Self::AtomAutofillPresentationEventReported => {
30074                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
30075            }
30076            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
30077            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
30078            Self::AtomSafetyCenterSystemEventReported => {
30079                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
30080            }
30081            Self::AtomSafetyCenterInteractionReported => {
30082                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
30083            }
30084            Self::AtomSettingsProviderSettingChanged => {
30085                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
30086            }
30087            Self::AtomBroadcastDeliveryEventReported => {
30088                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
30089            }
30090            Self::AtomServiceRequestEventReported => {
30091                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
30092            }
30093            Self::AtomProviderAcquisitionEventReported => {
30094                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
30095            }
30096            Self::AtomBluetoothDeviceNameReported => {
30097                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
30098            }
30099            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
30100            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
30101            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
30102            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
30103            Self::AtomPrivacySignalNotificationInteraction => {
30104                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
30105            }
30106            Self::AtomPrivacySignalIssueCardInteraction => {
30107                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
30108            }
30109            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
30110            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
30111            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
30112            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
30113            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
30114            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
30115            Self::AtomNetworkDnsServerSupportReported => {
30116                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
30117            }
30118            Self::AtomVmBooted => "ATOM_VM_BOOTED",
30119            Self::AtomVmExited => "ATOM_VM_EXITED",
30120            Self::AtomAmbientBrightnessStatsReported => {
30121                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
30122            }
30123            Self::AtomMediametricsSpatializercapabilitiesReported => {
30124                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
30125            }
30126            Self::AtomMediametricsSpatializerdeviceenabledReported => {
30127                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
30128            }
30129            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
30130                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
30131            }
30132            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
30133                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
30134            }
30135            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
30136            Self::AtomDeviceWideJobConstraintChanged => {
30137                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
30138            }
30139            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
30140            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
30141            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
30142            Self::AtomSystemDefaultNetworkChanged => {
30143                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
30144            }
30145            Self::AtomIwlanSetupDataCallResultReported => {
30146                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
30147            }
30148            Self::AtomIwlanPdnDisconnectedReasonReported => {
30149                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
30150            }
30151            Self::AtomAirplaneModeSessionReported => {
30152                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
30153            }
30154            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
30155            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
30156            Self::AtomPackageInstallationSessionReported => {
30157                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
30158            }
30159            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
30160            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
30161            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
30162            Self::AtomBluetoothDisconnectionReasonReported => {
30163                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
30164            }
30165            Self::AtomBluetoothLocalVersionsReported => {
30166                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
30167            }
30168            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
30169                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
30170            }
30171            Self::AtomBluetoothLocalSupportedFeaturesReported => {
30172                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
30173            }
30174            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
30175            Self::AtomBrightnessConfigurationUpdated => {
30176                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
30177            }
30178            Self::AtomWearMediaOutputSwitcherLaunched => {
30179                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
30180            }
30181            Self::AtomWearMediaOutputSwitcherFinished => {
30182                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
30183            }
30184            Self::AtomWearMediaOutputSwitcherConnectionReported => {
30185                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
30186            }
30187            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
30188                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
30189            }
30190            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
30191                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
30192            }
30193            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
30194                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
30195            }
30196            Self::AtomPackageManagerSnapshotReported => {
30197                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
30198            }
30199            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
30200                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
30201            }
30202            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
30203                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
30204            }
30205            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
30206            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
30207                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
30208            }
30209            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
30210            Self::AtomWsWatchFaceFavoriteActionReported => {
30211                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
30212            }
30213            Self::AtomWsWatchFaceSetActionReported => {
30214                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
30215            }
30216            Self::AtomPackageUninstallationReported => {
30217                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
30218            }
30219            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
30220            Self::AtomGameModeConfigurationChanged => {
30221                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
30222            }
30223            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
30224            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
30225            Self::AtomNetworkSliceDailyDataUsageReported => {
30226                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
30227            }
30228            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
30229            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
30230            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
30231            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
30232            Self::AtomGetTypeAccessedWithoutPermission => {
30233                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
30234            }
30235            Self::AtomMobileBundledAppInfoGathered => {
30236                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
30237            }
30238            Self::AtomWsWatchFaceComplicationSetChanged => {
30239                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
30240            }
30241            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
30242            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
30243            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
30244            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
30245            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
30246            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
30247            Self::AtomPerformanceHintSessionReported => {
30248                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
30249            }
30250            Self::AtomMediametricsMidiDeviceCloseReported => {
30251                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
30252            }
30253            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
30254            Self::AtomHotwordAudioEgressEventReported => {
30255                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
30256            }
30257            Self::AtomLocationEnabledStateChanged => {
30258                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
30259            }
30260            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
30261            Self::AtomUsbComplianceWarningsReported => {
30262                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
30263            }
30264            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
30265            Self::AtomMediaProviderVolumeRecoveryReported => {
30266                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
30267            }
30268            Self::AtomBiometricPropertiesCollected => {
30269                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
30270            }
30271            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
30272            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
30273            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
30274            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
30275            Self::AtomDeviceLogAccessEventReported => {
30276                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
30277            }
30278            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
30279            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
30280            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
30281            Self::AtomNetworkValidationFailureStatsDailyReported => {
30282                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
30283            }
30284            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
30285            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
30286            Self::AtomWsNotificationBridgemodeUpdated => {
30287                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
30288            }
30289            Self::AtomWsNotificationDismissalActioned => {
30290                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
30291            }
30292            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
30293            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
30294            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
30295            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
30296            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
30297            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
30298            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
30299            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
30300            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
30301            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
30302            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
30303            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
30304            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
30305            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
30306            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
30307            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
30308            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
30309            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
30310            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
30311            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
30312            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
30313            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
30314            Self::AtomTemperature => "ATOM_TEMPERATURE",
30315            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
30316            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
30317            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
30318            Self::AtomDiskStats => "ATOM_DISK_STATS",
30319            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
30320            Self::AtomAppSize => "ATOM_APP_SIZE",
30321            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
30322            Self::AtomProcStats => "ATOM_PROC_STATS",
30323            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
30324            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
30325            Self::AtomDiskIo => "ATOM_DISK_IO",
30326            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
30327            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
30328            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
30329            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
30330            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
30331            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
30332            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
30333            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
30334            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
30335            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
30336            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
30337            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
30338            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
30339            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
30340            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
30341            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
30342            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
30343            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
30344            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
30345            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
30346            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
30347            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
30348            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
30349            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
30350            Self::AtomAppOps => "ATOM_APP_OPS",
30351            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
30352            Self::AtomSurfaceflingerStatsGlobalInfo => {
30353                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
30354            }
30355            Self::AtomSurfaceflingerStatsLayerInfo => {
30356                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
30357            }
30358            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
30359            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
30360            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
30361            Self::AtomDangerousPermissionStateSampled => {
30362                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
30363            }
30364            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
30365            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
30366            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
30367            Self::AtomPackageNotificationPreferences => {
30368                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
30369            }
30370            Self::AtomPackageNotificationChannelPreferences => {
30371                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
30372            }
30373            Self::AtomPackageNotificationChannelGroupPreferences => {
30374                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
30375            }
30376            Self::AtomGnssStats => "ATOM_GNSS_STATS",
30377            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
30378            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
30379            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
30380            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
30381            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
30382            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
30383            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
30384            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
30385            Self::AtomBytesTransferByTagAndMetered => {
30386                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
30387            }
30388            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
30389            Self::AtomGeneralExternalStorageAccessStats => {
30390                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
30391            }
30392            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
30393            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
30394            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
30395            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
30396            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
30397            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
30398            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
30399            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
30400            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
30401            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
30402            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
30403            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
30404            Self::AtomCpuCyclesPerThreadGroupCluster => {
30405                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
30406            }
30407            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
30408            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
30409            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
30410            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
30411            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
30412            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
30413            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
30414            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
30415            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
30416            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
30417            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
30418            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
30419            Self::AtomBatteryUsageStatsBeforeReset => {
30420                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
30421            }
30422            Self::AtomBatteryUsageStatsSinceReset => {
30423                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
30424            }
30425            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
30426                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
30427            }
30428            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
30429            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
30430            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
30431            Self::AtomVmstat => "ATOM_VMSTAT",
30432            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
30433                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
30434            }
30435            Self::AtomKeystore2KeyCreationWithAuthInfo => {
30436                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
30437            }
30438            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
30439                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
30440            }
30441            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
30442            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
30443                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
30444            }
30445            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
30446                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
30447            }
30448            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
30449            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
30450            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
30451            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
30452            Self::AtomAccessibilityFloatingMenuStats => {
30453                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
30454            }
30455            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
30456            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
30457            Self::AtomCarWatchdogSystemIoUsageSummary => {
30458                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
30459            }
30460            Self::AtomCarWatchdogUidIoUsageSummary => {
30461                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
30462            }
30463            Self::AtomImsRegistrationFeatureTagStats => {
30464                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
30465            }
30466            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
30467            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
30468            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
30469            Self::AtomSipTransportFeatureTagStats => {
30470                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
30471            }
30472            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
30473            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
30474            Self::AtomImsDedicatedBearerListenerEvent => {
30475                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
30476            }
30477            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
30478            Self::AtomImsRegistrationServiceDescStats => {
30479                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
30480            }
30481            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
30482            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
30483            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
30484            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
30485            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
30486            Self::AtomPersistentUriPermissionsAmountPerPackage => {
30487                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
30488            }
30489            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
30490            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
30491            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
30492            Self::AtomUserInfo => "ATOM_USER_INFO",
30493            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
30494            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
30495            Self::AtomRemoteKeyProvisioningErrorCounts => {
30496                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
30497            }
30498            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
30499            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
30500            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
30501            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
30502            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
30503            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
30504            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
30505            Self::AtomNetworkSelectionRematchReasonsInfo => {
30506                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
30507            }
30508            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
30509            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
30510            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
30511            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
30512            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
30513            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
30514                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
30515            }
30516            Self::AtomProcessState => "ATOM_PROCESS_STATE",
30517            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
30518            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
30519            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
30520            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
30521            Self::AtomWsFavouriteWatchFaceListSnapshot => {
30522                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
30523            }
30524            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
30525            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
30526            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
30527            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
30528            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
30529            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
30530            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
30531            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
30532            Self::AtomWifiAwareResourceUsingChanged => {
30533                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
30534            }
30535            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
30536            Self::AtomWifiLocalOnlyRequestReceived => {
30537                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
30538            }
30539            Self::AtomWifiLocalOnlyRequestScanTriggered => {
30540                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
30541            }
30542            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
30543            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
30544            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
30545            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
30546            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
30547            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
30548            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
30549            Self::AtomScorerPredictionResultReported => {
30550                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
30551            }
30552            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
30553            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
30554            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
30555            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
30556            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
30557            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
30558            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
30559            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
30560            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
30561            Self::AtomWsIncomingCallActionReported => {
30562                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
30563            }
30564            Self::AtomWsCallDisconnectionReported => {
30565                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
30566            }
30567            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
30568            Self::AtomWsCallUserExperienceLatencyReported => {
30569                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
30570            }
30571            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
30572            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
30573            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
30574                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
30575            }
30576            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
30577                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
30578            }
30579            Self::AtomWsComplicationsImpactedNotificationEventReported => {
30580                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
30581            }
30582            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
30583            Self::AtomWsNotificationManagedDismissalSync => {
30584                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
30585            }
30586            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
30587            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
30588            Self::AtomWsFavoriteWatchFaceSnapshot => {
30589                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
30590            }
30591            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
30592                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
30593            }
30594            Self::AtomWsWatchFaceCustomizationSnapshot => {
30595                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
30596            }
30597            Self::AtomWearAdaptiveSuspendStatsReported => {
30598                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
30599            }
30600            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
30601                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
30602            }
30603            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
30604                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
30605            }
30606            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
30607            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
30608            Self::AtomWearTimeSyncAttemptCompleted => {
30609                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
30610            }
30611            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
30612            Self::AtomWearSetupWizardDeviceStatusReported => {
30613                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
30614            }
30615            Self::AtomWearSetupWizardPairingCompleted => {
30616                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
30617            }
30618            Self::AtomWearSetupWizardConnectionEstablished => {
30619                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
30620            }
30621            Self::AtomWearSetupWizardCheckinCompleted => {
30622                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
30623            }
30624            Self::AtomWearSetupWizardCompanionTimeReported => {
30625                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
30626            }
30627            Self::AtomWearSetupWizardStatusReported => {
30628                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
30629            }
30630            Self::AtomWearSetupWizardHeartbeatReported => {
30631                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
30632            }
30633            Self::AtomWearSetupWizardFrpTriggered => {
30634                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
30635            }
30636            Self::AtomWearSetupWizardSystemUpdateTriggered => {
30637                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
30638            }
30639            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
30640                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
30641            }
30642            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
30643            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
30644            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
30645            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
30646            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
30647            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
30648            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
30649            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
30650            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
30651            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
30652            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
30653            Self::AtomIgnoredInflationFailuresReported => {
30654                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
30655            }
30656            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
30657            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
30658            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
30659            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
30660            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
30661            Self::AtomMediaControlApiUsageReported => {
30662                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
30663            }
30664            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
30665            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
30666                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
30667            }
30668            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
30669                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
30670            }
30671            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
30672                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
30673            }
30674            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
30675            Self::AtomSysproxyBluetoothBytesTransfer => {
30676                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
30677            }
30678            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
30679            Self::AtomWearCompanionConnectionState => {
30680                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
30681            }
30682            Self::AtomSysproxyServiceStateUpdated => {
30683                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
30684            }
30685            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
30686            Self::AtomTestUprobestatsAtomReported => {
30687                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
30688            }
30689            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
30690            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
30691            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
30692            Self::AtomThreadnetworkTelemetryDataReported => {
30693                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
30694            }
30695            Self::AtomThreadnetworkTopoEntryRepeated => {
30696                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
30697            }
30698            Self::AtomThreadnetworkDeviceInfoReported => {
30699                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
30700            }
30701            Self::AtomCellularRadioPowerStateChanged => {
30702                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
30703            }
30704            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
30705            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
30706            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
30707            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
30708            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
30709            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
30710            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
30711            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
30712            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
30713            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
30714            Self::AtomSatelliteSosMessageRecommender => {
30715                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
30716            }
30717            Self::AtomCarrierRoamingSatelliteSession => {
30718                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
30719            }
30720            Self::AtomCarrierRoamingSatelliteControllerStats => {
30721                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
30722            }
30723            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
30724            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
30725            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
30726            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
30727            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
30728            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
30729            Self::AtomQnsFallbackRestrictionChanged => {
30730                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
30731            }
30732            Self::AtomQnsRatPreferenceMismatchInfo => {
30733                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
30734            }
30735            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
30736            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
30737            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
30738                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
30739            }
30740            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
30741            Self::AtomCallStats => "ATOM_CALL_STATS",
30742            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
30743            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
30744            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
30745            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
30746            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
30747            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
30748            Self::AtomDisplaySwitchLatencyTracked => {
30749                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
30750            }
30751            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
30752            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
30753            Self::AtomCommunalHubWidgetEventReported => {
30754                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
30755            }
30756            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
30757            Self::AtomContextualEducationTriggered => {
30758                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
30759            }
30760            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
30761            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
30762            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
30763            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
30764            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
30765            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
30766            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
30767            Self::AtomSandboxActivityEventOccurred => {
30768                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
30769            }
30770            Self::AtomSdkSandboxRestrictedAccessInSession => {
30771                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
30772            }
30773            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
30774            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
30775            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
30776            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
30777            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
30778            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
30779            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
30780            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
30781            Self::AtomMediaProviderDatabaseRollbackReported => {
30782                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
30783            }
30784            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
30785            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
30786            Self::AtomScreenTimeoutOverrideReported => {
30787                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
30788            }
30789            Self::AtomScreenInteractiveSessionReported => {
30790                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
30791            }
30792            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
30793            Self::AtomAtom9999 => "ATOM_ATOM_9999",
30794            Self::AtomAtom99999 => "ATOM_ATOM_99999",
30795            Self::AtomPhotopickerSessionInfoReported => {
30796                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
30797            }
30798            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
30799            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
30800            Self::AtomPhotopickerMediaItemStatusReported => {
30801                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
30802            }
30803            Self::AtomPhotopickerPreviewInfoLogged => {
30804                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
30805            }
30806            Self::AtomPhotopickerMenuInteractionLogged => {
30807                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
30808            }
30809            Self::AtomPhotopickerBannerInteractionLogged => {
30810                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
30811            }
30812            Self::AtomPhotopickerMediaLibraryInfoLogged => {
30813                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
30814            }
30815            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
30816            Self::AtomPhotopickerMediaGridSyncInfoReported => {
30817                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
30818            }
30819            Self::AtomPhotopickerAlbumSyncInfoReported => {
30820                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
30821            }
30822            Self::AtomPhotopickerSearchInfoReported => {
30823                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
30824            }
30825            Self::AtomSearchDataExtractionDetailsReported => {
30826                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
30827            }
30828            Self::AtomEmbeddedPhotopickerInfoReported => {
30829                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
30830            }
30831            Self::AtomPermissionRationaleDialogViewed => {
30832                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
30833            }
30834            Self::AtomPermissionRationaleDialogActionReported => {
30835                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
30836            }
30837            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
30838                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
30839            }
30840            Self::AtomAppDataSharingUpdatesFragmentViewed => {
30841                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
30842            }
30843            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
30844                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
30845            }
30846            Self::AtomEnhancedConfirmationDialogResultReported => {
30847                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
30848            }
30849            Self::AtomEnhancedConfirmationRestrictionCleared => {
30850                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
30851            }
30852            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
30853            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
30854            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
30855            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
30856            Self::AtomComponentStateChangedReported => {
30857                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
30858            }
30859            Self::AtomOndevicepersonalizationApiCalled => {
30860                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
30861            }
30862            Self::AtomOndevicepersonalizationTraceEvent => {
30863                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
30864            }
30865            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
30866            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
30867            Self::AtomNfcPollingLoopNotificationReported => {
30868                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
30869            }
30870            Self::AtomNfcProprietaryCapabilitiesReported => {
30871                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
30872            }
30873            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
30874            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
30875            Self::AtomMicroxrDeviceBootCompleteReported => {
30876                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
30877            }
30878            Self::AtomMteState => "ATOM_MTE_STATE",
30879            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
30880            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
30881            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
30882            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
30883            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
30884            Self::AtomMediaCodecReclaimRequestCompleted => {
30885                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
30886            }
30887            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
30888            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
30889            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
30890            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
30891            Self::AtomChreSignificantMotionStateChanged => {
30892                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
30893            }
30894            Self::AtomPopulationDensityProviderLoadingReported => {
30895                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
30896            }
30897            Self::AtomDensityBasedCoarseLocationsUsageReported => {
30898                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
30899            }
30900            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
30901                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
30902            }
30903            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
30904            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
30905            Self::AtomKeyboardSystemsEventReported => {
30906                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
30907            }
30908            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
30909            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
30910            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
30911            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
30912            Self::AtomIkeLivenessCheckSessionValidated => {
30913                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
30914            }
30915            Self::AtomNegotiatedSecurityAssociation => {
30916                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
30917            }
30918            Self::AtomHotwordEgressSizeAtomReported => {
30919                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
30920            }
30921            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
30922            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
30923            Self::AtomHealthConnectAppOpenedReported => {
30924                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
30925            }
30926            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
30927            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
30928            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
30929            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
30930            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
30931            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
30932            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
30933            Self::AtomHealthConnectExportImportStatsReported => {
30934                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
30935            }
30936            Self::AtomHealthConnectPermissionStats => {
30937                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
30938            }
30939            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
30940            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
30941            Self::AtomHealthConnectPhrStorageStats => {
30942                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
30943            }
30944            Self::AtomHealthConnectRestrictedEcosystemStats => {
30945                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
30946            }
30947            Self::AtomHealthConnectEcosystemStats => {
30948                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
30949            }
30950            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
30951            Self::AtomHdmiSoundbarModeStatusReported => {
30952                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
30953            }
30954            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
30955                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
30956            }
30957            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
30958            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
30959            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
30960            Self::AtomApplicationGrammaticalInflectionChanged => {
30961                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
30962            }
30963            Self::AtomSystemGrammaticalInflectionChanged => {
30964                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
30965            }
30966            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
30967            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
30968            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
30969            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
30970            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
30971            Self::AtomStylusPredictionMetricsReported => {
30972                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
30973            }
30974            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
30975            Self::AtomMediaProjectionStateChanged => {
30976                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
30977            }
30978            Self::AtomMediaProjectionTargetChanged => {
30979                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
30980            }
30981            Self::AtomExcessiveBinderProxyCountReported => {
30982                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
30983            }
30984            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
30985            Self::AtomMobileBytesTransferByProcState => {
30986                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
30987            }
30988            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
30989            Self::AtomSensitiveContentMediaProjectionSession => {
30990                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
30991            }
30992            Self::AtomSensitiveNotificationAppProtectionSession => {
30993                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
30994            }
30995            Self::AtomSensitiveNotificationAppProtectionApplied => {
30996                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
30997            }
30998            Self::AtomSensitiveNotificationRedaction => {
30999                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
31000            }
31001            Self::AtomSensitiveContentAppProtection => {
31002                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
31003            }
31004            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
31005            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
31006            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
31007            Self::AtomPowerSaveTempAllowlistChanged => {
31008                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
31009            }
31010            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
31011            Self::AtomContentOrFileUriEventReported => {
31012                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
31013            }
31014            Self::AtomDeviceIdleTempAllowlistUpdated => {
31015                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
31016            }
31017            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
31018                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
31019            }
31020            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
31021            Self::AtomJankFrameCountByWidgetReported => {
31022                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
31023            }
31024            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
31025            Self::AtomNotificationChannelClassification => {
31026                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
31027            }
31028            Self::AtomCameraStatusForCompatibilityChanged => {
31029                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
31030            }
31031            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
31032            Self::AtomFederatedComputeTrainingEventReported => {
31033                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
31034            }
31035            Self::AtomExampleIteratorNextLatencyReported => {
31036                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
31037            }
31038            Self::AtomFederatedComputeTraceEventReported => {
31039                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
31040            }
31041            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
31042            Self::AtomExpressHistogramSampleReported => {
31043                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
31044            }
31045            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
31046            Self::AtomExpressUidHistogramSampleReported => {
31047                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
31048            }
31049            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
31050            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
31051            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
31052            Self::AtomExternalDisplayStateChanged => {
31053                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
31054            }
31055            Self::AtomDisplayModeDirectorVoteChanged => {
31056                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
31057            }
31058            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
31059            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
31060            Self::AtomDeviceLockCheckInRequestReported => {
31061                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
31062            }
31063            Self::AtomDeviceLockProvisioningCompleteReported => {
31064                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
31065            }
31066            Self::AtomDeviceLockKioskAppRequestReported => {
31067                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
31068            }
31069            Self::AtomDeviceLockCheckInRetryReported => {
31070                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
31071            }
31072            Self::AtomDeviceLockProvisionFailureReported => {
31073                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
31074            }
31075            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
31076                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
31077            }
31078            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
31079            Self::AtomDesktopModeSessionTaskUpdate => {
31080                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
31081            }
31082            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
31083            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
31084            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
31085            Self::AtomCronetEngineBuilderInitialized => {
31086                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
31087            }
31088            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
31089            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
31090            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
31091            Self::AtomCredentialManagerInitPhaseReported => {
31092                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
31093            }
31094            Self::AtomCredentialManagerCandidatePhaseReported => {
31095                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
31096            }
31097            Self::AtomCredentialManagerFinalPhaseReported => {
31098                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
31099            }
31100            Self::AtomCredentialManagerTotalReported => {
31101                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
31102            }
31103            Self::AtomCredentialManagerFinalnouidReported => {
31104                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
31105            }
31106            Self::AtomCredentialManagerGetReported => {
31107                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
31108            }
31109            Self::AtomCredentialManagerAuthClickReported => {
31110                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
31111            }
31112            Self::AtomCredentialManagerApiv2Called => {
31113                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
31114            }
31115            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
31116            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
31117            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
31118            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
31119            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
31120            Self::AtomCoreNetworkingTerribleErrorOccurred => {
31121                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
31122            }
31123            Self::AtomNetworkStatsRecorderFileOperated => {
31124                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
31125            }
31126            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
31127            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
31128            Self::AtomTetheringActiveSessionsReported => {
31129                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
31130            }
31131            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
31132                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
31133            }
31134            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
31135            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
31136            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
31137            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
31138            Self::AtomCertificateTransparencyLogListStateChanged => {
31139                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
31140            }
31141            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
31142            Self::AtomCertificateTransparencyVerificationReported => {
31143                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
31144            }
31145            Self::AtomCameraFeatureCombinationQueryEvent => {
31146                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
31147            }
31148            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
31149            Self::AtomBluetoothHashedDeviceNameReported => {
31150                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
31151            }
31152            Self::AtomBluetoothL2capCocClientConnection => {
31153                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
31154            }
31155            Self::AtomBluetoothL2capCocServerConnection => {
31156                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
31157            }
31158            Self::AtomBluetoothLeSessionConnected => {
31159                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
31160            }
31161            Self::AtomRestrictedBluetoothDeviceNameReported => {
31162                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
31163            }
31164            Self::AtomBluetoothProfileConnectionAttempted => {
31165                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
31166            }
31167            Self::AtomBluetoothContentProfileErrorReported => {
31168                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
31169            }
31170            Self::AtomBluetoothRfcommConnectionAttempted => {
31171                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
31172            }
31173            Self::AtomRemoteDeviceInformationWithMetricId => {
31174                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
31175            }
31176            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
31177            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
31178            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
31179            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
31180            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
31181            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
31182            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
31183            Self::AtomBluetoothCrossLayerEventReported => {
31184                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
31185            }
31186            Self::AtomBroadcastAudioSessionReported => {
31187                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
31188            }
31189            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
31190            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
31191                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
31192            }
31193            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
31194            Self::AtomHearingDeviceActiveEventReported => {
31195                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
31196            }
31197            Self::AtomBackportedFixStatusReported => {
31198                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
31199            }
31200            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
31201            Self::AtomCarSystemUiDataSubscriptionEventReported => {
31202                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
31203            }
31204            Self::AtomCarSettingsDataSubscriptionEventReported => {
31205                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
31206            }
31207            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
31208            Self::AtomCarWakeupFromSuspendReported => {
31209                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
31210            }
31211            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
31212            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
31213            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
31214            Self::AtomAutofillFillRequestReported => {
31215                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
31216            }
31217            Self::AtomAutofillFillResponseReported => {
31218                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
31219            }
31220            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
31221            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
31222            Self::AtomAutofillFieldClassificationEventReported => {
31223                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
31224            }
31225            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
31226            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
31227            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
31228            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
31229            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
31230            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
31231            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
31232            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
31233            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
31234            Self::AtomAppSearchSetSchemaStatsReported => {
31235                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
31236            }
31237            Self::AtomAppSearchSchemaMigrationStatsReported => {
31238                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
31239            }
31240            Self::AtomAppSearchUsageSearchIntentStatsReported => {
31241                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
31242            }
31243            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
31244                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
31245            }
31246            Self::AtomAppSearchAppsIndexerStatsReported => {
31247                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
31248            }
31249            Self::AtomAppFunctionsRequestReported => {
31250                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
31251            }
31252            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
31253            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
31254            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
31255            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
31256            Self::AtomAiWallpapersTemplateSelected => {
31257                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
31258            }
31259            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
31260            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
31261            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
31262            Self::AtomJsscriptengineLatencyReported => {
31263                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
31264            }
31265            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
31266            Self::AtomAdServicesMesurementReportsUploaded => {
31267                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
31268            }
31269            Self::AtomMobileDataDownloadFileGroupStatusReported => {
31270                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
31271            }
31272            Self::AtomMobileDataDownloadDownloadResultReported => {
31273                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
31274            }
31275            Self::AtomAdServicesSettingsUsageReported => {
31276                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
31277            }
31278            Self::AtomBackgroundFetchProcessReported => {
31279                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
31280            }
31281            Self::AtomUpdateCustomAudienceProcessReported => {
31282                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
31283            }
31284            Self::AtomRunAdBiddingProcessReported => {
31285                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
31286            }
31287            Self::AtomRunAdScoringProcessReported => {
31288                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
31289            }
31290            Self::AtomRunAdSelectionProcessReported => {
31291                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
31292            }
31293            Self::AtomRunAdBiddingPerCaProcessReported => {
31294                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
31295            }
31296            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
31297                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
31298            }
31299            Self::AtomAdServicesMeasurementRegistrations => {
31300                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
31301            }
31302            Self::AtomAdServicesGetTopicsReported => {
31303                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
31304            }
31305            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
31306                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
31307            }
31308            Self::AtomAdServicesEpochComputationClassifierReported => {
31309                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
31310            }
31311            Self::AtomAdServicesBackCompatGetTopicsReported => {
31312                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
31313            }
31314            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
31315                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
31316            }
31317            Self::AtomAdServicesMeasurementDebugKeys => {
31318                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
31319            }
31320            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
31321            Self::AtomAdServicesBackgroundJobsExecutionReported => {
31322                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
31323            }
31324            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
31325                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
31326            }
31327            Self::AtomAdServicesMeasurementAttribution => {
31328                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
31329            }
31330            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
31331            Self::AtomAdServicesMeasurementWipeout => {
31332                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
31333            }
31334            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
31335                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
31336            }
31337            Self::AtomAdServicesEnrollmentDataStored => {
31338                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
31339            }
31340            Self::AtomAdServicesEnrollmentFileDownloaded => {
31341                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
31342            }
31343            Self::AtomAdServicesEnrollmentMatched => {
31344                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
31345            }
31346            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
31347            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
31348            Self::AtomAdServicesMeasurementClickVerification => {
31349                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
31350            }
31351            Self::AtomAdServicesEncryptionKeyFetched => {
31352                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
31353            }
31354            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
31355                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
31356            }
31357            Self::AtomDestinationRegisteredBeacons => {
31358                "ATOM_DESTINATION_REGISTERED_BEACONS"
31359            }
31360            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
31361            Self::AtomInteractionReportingTableCleared => {
31362                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
31363            }
31364            Self::AtomAppManifestConfigHelperCalled => {
31365                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
31366            }
31367            Self::AtomAdFilteringProcessJoinCaReported => {
31368                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
31369            }
31370            Self::AtomAdFilteringProcessAdSelectionReported => {
31371                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
31372            }
31373            Self::AtomAdCounterHistogramUpdaterReported => {
31374                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
31375            }
31376            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
31377            Self::AtomKAnonImmediateSignJoinStatusReported => {
31378                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
31379            }
31380            Self::AtomKAnonBackgroundJobStatusReported => {
31381                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
31382            }
31383            Self::AtomKAnonInitializeStatusReported => {
31384                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
31385            }
31386            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
31387            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
31388            Self::AtomKAnonKeyAttestationStatusReported => {
31389                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
31390            }
31391            Self::AtomGetAdSelectionDataApiCalled => {
31392                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
31393            }
31394            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
31395                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
31396            }
31397            Self::AtomBackgroundJobSchedulingReported => {
31398                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
31399            }
31400            Self::AtomTopicsEncryptionEpochComputationReported => {
31401                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
31402            }
31403            Self::AtomTopicsEncryptionGetTopicsReported => {
31404                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
31405            }
31406            Self::AtomAdservicesShellCommandCalled => {
31407                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
31408            }
31409            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
31410            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
31411            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
31412            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
31413            Self::AtomPersistAdSelectionResultCalled => {
31414                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
31415            }
31416            Self::AtomServerAuctionKeyFetchCalled => {
31417                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
31418            }
31419            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
31420                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
31421            }
31422            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
31423                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
31424            }
31425            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
31426                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
31427            }
31428            Self::AtomSelectAdsFromOutcomesApiCalled => {
31429                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
31430            }
31431            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
31432            Self::AtomAdServicesEnrollmentTransactionStats => {
31433                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
31434            }
31435            Self::AtomAdServicesCobaltLoggerEventReported => {
31436                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
31437            }
31438            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
31439                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
31440            }
31441            Self::AtomUpdateSignalsProcessReported => {
31442                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
31443            }
31444            Self::AtomTopicsScheduleEpochJobSettingReported => {
31445                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
31446            }
31447            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
31448                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
31449            }
31450            Self::AtomScheduledCustomAudienceUpdatePerformed => {
31451                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
31452            }
31453            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
31454                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
31455            }
31456            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
31457                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
31458            }
31459            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
31460            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
31461            Self::AtomThermalHeadroomThresholdsCalled => {
31462                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
31463            }
31464            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
31465            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
31466            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
31467            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
31468                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
31469            }
31470            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
31471            Self::AtomAccessibilityCheckResultReported => {
31472                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
31473            }
31474        }
31475    }
31476    /// Creates an enum from field names used in the ProtoBuf definition.
31477    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
31478        match value {
31479            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
31480            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
31481            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
31482            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
31483            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
31484            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
31485            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
31486            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
31487                Some(Self::AtomScheduledJobStateChanged)
31488            }
31489            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
31490            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
31491            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
31492                Some(Self::AtomLongPartialWakelockStateChanged)
31493            }
31494            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
31495                Some(Self::AtomMobileRadioPowerStateChanged)
31496            }
31497            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
31498                Some(Self::AtomWifiRadioPowerStateChanged)
31499            }
31500            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
31501                Some(Self::AtomActivityManagerSleepStateChanged)
31502            }
31503            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
31504                Some(Self::AtomMemoryFactorStateChanged)
31505            }
31506            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
31507                Some(Self::AtomExcessiveCpuUsageReported)
31508            }
31509            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
31510            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
31511                Some(Self::AtomProcessMemoryStatReported)
31512            }
31513            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
31514            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
31515                Some(Self::AtomBatterySaverModeStateChanged)
31516            }
31517            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
31518                Some(Self::AtomDeviceIdleModeStateChanged)
31519            }
31520            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
31521                Some(Self::AtomDeviceIdlingModeStateChanged)
31522            }
31523            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
31524            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
31525            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
31526            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
31527            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
31528            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
31529                Some(Self::AtomProcessLifeCycleStateChanged)
31530            }
31531            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
31532            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
31533            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
31534            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
31535            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
31536            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
31537            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
31538            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
31539            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
31540            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
31541                Some(Self::AtomWifiSignalStrengthChanged)
31542            }
31543            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
31544            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
31545                Some(Self::AtomPhoneSignalStrengthChanged)
31546            }
31547            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
31548            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
31549                Some(Self::AtomActivityForegroundStateChanged)
31550            }
31551            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
31552            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
31553            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
31554            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
31555            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
31556            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
31557            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
31558            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
31559            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
31560            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
31561                Some(Self::AtomPictureInPictureStateChanged)
31562            }
31563            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
31564                Some(Self::AtomWifiMulticastLockStateChanged)
31565            }
31566            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
31567                Some(Self::AtomAppStartMemoryStateCaptured)
31568            }
31569            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
31570            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
31571            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
31572            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
31573                Some(Self::AtomForegroundServiceStateChanged)
31574            }
31575            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
31576            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
31577            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
31578                Some(Self::AtomKeyguardBouncerStateChanged)
31579            }
31580            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
31581                Some(Self::AtomKeyguardBouncerPasswordEntered)
31582            }
31583            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
31584            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
31585                Some(Self::AtomResourceConfigurationChanged)
31586            }
31587            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
31588                Some(Self::AtomBluetoothEnabledStateChanged)
31589            }
31590            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
31591                Some(Self::AtomBluetoothConnectionStateChanged)
31592            }
31593            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
31594            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
31595                Some(Self::AtomUsbConnectorStateChanged)
31596            }
31597            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
31598            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
31599            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
31600            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
31601            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
31602                Some(Self::AtomMobileConnectionStateChanged)
31603            }
31604            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
31605                Some(Self::AtomMobileRadioTechnologyChanged)
31606            }
31607            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
31608            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
31609            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
31610            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
31611            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
31612            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
31613            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
31614            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
31615                Some(Self::AtomDeferredJobStatsReported)
31616            }
31617            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
31618            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
31619            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
31620            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
31621            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
31622            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
31623            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
31624            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
31625            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
31626                Some(Self::AtomPhoneServiceStateChanged)
31627            }
31628            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
31629            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
31630            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
31631            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
31632            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
31633            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
31634            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
31635            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
31636            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
31637            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
31638            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
31639                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
31640            }
31641            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
31642            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
31643            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
31644                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
31645            }
31646            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
31647            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
31648            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
31649            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
31650                Some(Self::AtomDocsUiUserActionReported)
31651            }
31652            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
31653            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
31654            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
31655            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
31656            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
31657                Some(Self::AtomDocsUiPickerLaunchedFromReported)
31658            }
31659            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
31660                Some(Self::AtomDocsUiPickResultReported)
31661            }
31662            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
31663                Some(Self::AtomDocsUiSearchModeReported)
31664            }
31665            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
31666                Some(Self::AtomDocsUiSearchTypeReported)
31667            }
31668            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
31669            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
31670                Some(Self::AtomRescuePartyResetReported)
31671            }
31672            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
31673            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
31674            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
31675                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
31676            }
31677            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
31678                Some(Self::AtomBluetoothAclConnectionStateChanged)
31679            }
31680            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
31681                Some(Self::AtomBluetoothScoConnectionStateChanged)
31682            }
31683            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
31684            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
31685                Some(Self::AtomAppOptimizedAfterDowngraded)
31686            }
31687            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
31688            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
31689                Some(Self::AtomGnssNfwNotificationReported)
31690            }
31691            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
31692                Some(Self::AtomGnssConfigurationReported)
31693            }
31694            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
31695                Some(Self::AtomUsbPortOverheatEventReported)
31696            }
31697            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
31698            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
31699            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
31700            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
31701            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
31702            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
31703                Some(Self::AtomNfcHceTransactionOccurred)
31704            }
31705            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
31706            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
31707            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
31708                Some(Self::AtomBroadcastDispatchLatencyReported)
31709            }
31710            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
31711                Some(Self::AtomAttentionManagerServiceResultReported)
31712            }
31713            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
31714            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
31715            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
31716            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
31717            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
31718                Some(Self::AtomBiometricSystemHealthIssueDetected)
31719            }
31720            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
31721            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
31722                Some(Self::AtomScheduledJobConstraintChanged)
31723            }
31724            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
31725                Some(Self::AtomBluetoothActiveDeviceChanged)
31726            }
31727            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
31728                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
31729            }
31730            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
31731                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
31732            }
31733            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
31734                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
31735            }
31736            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
31737                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
31738            }
31739            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
31740                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
31741            }
31742            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
31743                Some(Self::AtomBluetoothDeviceRssiReported)
31744            }
31745            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
31746                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
31747            }
31748            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
31749                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
31750            }
31751            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
31752                Some(Self::AtomBluetoothHciTimeoutReported)
31753            }
31754            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
31755                Some(Self::AtomBluetoothQualityReportReported)
31756            }
31757            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
31758                Some(Self::AtomBluetoothDeviceInfoReported)
31759            }
31760            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
31761                Some(Self::AtomBluetoothRemoteVersionInfoReported)
31762            }
31763            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
31764                Some(Self::AtomBluetoothSdpAttributeReported)
31765            }
31766            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
31767                Some(Self::AtomBluetoothBondStateChanged)
31768            }
31769            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
31770                Some(Self::AtomBluetoothClassicPairingEventReported)
31771            }
31772            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
31773                Some(Self::AtomBluetoothSmpPairingEventReported)
31774            }
31775            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
31776                Some(Self::AtomScreenTimeoutExtensionReported)
31777            }
31778            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
31779            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
31780                Some(Self::AtomPermissionGrantRequestResultReported)
31781            }
31782            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
31783                Some(Self::AtomBluetoothSocketConnectionStateChanged)
31784            }
31785            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
31786                Some(Self::AtomDeviceIdentifierAccessDenied)
31787            }
31788            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
31789                Some(Self::AtomBubbleDeveloperErrorReported)
31790            }
31791            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
31792                Some(Self::AtomAssistGestureStageReported)
31793            }
31794            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
31795                Some(Self::AtomAssistGestureFeedbackReported)
31796            }
31797            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
31798                Some(Self::AtomAssistGestureProgressReported)
31799            }
31800            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
31801            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
31802            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
31803            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
31804                Some(Self::AtomPrivacyIndicatorsInteracted)
31805            }
31806            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
31807                Some(Self::AtomAppInstallOnExternalStorageReported)
31808            }
31809            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
31810            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
31811            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
31812            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
31813                Some(Self::AtomSystemServerWatchdogOccurred)
31814            }
31815            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
31816            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
31817                Some(Self::AtomBluetoothClassOfDeviceReported)
31818            }
31819            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
31820                Some(Self::AtomIntelligenceEventReported)
31821            }
31822            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
31823                Some(Self::AtomThermalThrottlingSeverityStateChanged)
31824            }
31825            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
31826                Some(Self::AtomRoleRequestResultReported)
31827            }
31828            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
31829                Some(Self::AtomMediametricsAudiopolicyReported)
31830            }
31831            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
31832                Some(Self::AtomMediametricsAudiorecordReported)
31833            }
31834            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
31835                Some(Self::AtomMediametricsAudiothreadReported)
31836            }
31837            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
31838                Some(Self::AtomMediametricsAudiotrackReported)
31839            }
31840            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
31841                Some(Self::AtomMediametricsCodecReported)
31842            }
31843            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
31844                Some(Self::AtomMediametricsDrmWidevineReported)
31845            }
31846            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
31847                Some(Self::AtomMediametricsExtractorReported)
31848            }
31849            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
31850                Some(Self::AtomMediametricsMediadrmReported)
31851            }
31852            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
31853                Some(Self::AtomMediametricsNuplayerReported)
31854            }
31855            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
31856                Some(Self::AtomMediametricsRecorderReported)
31857            }
31858            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
31859                Some(Self::AtomMediametricsDrmmanagerReported)
31860            }
31861            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
31862            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
31863            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
31864            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
31865                Some(Self::AtomContentCaptureCallerMismatchReported)
31866            }
31867            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
31868                Some(Self::AtomContentCaptureServiceEvents)
31869            }
31870            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
31871                Some(Self::AtomContentCaptureSessionEvents)
31872            }
31873            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
31874            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
31875                Some(Self::AtomLocationManagerApiUsageReported)
31876            }
31877            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
31878                Some(Self::AtomReviewPermissionsFragmentResultReported)
31879            }
31880            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
31881                Some(Self::AtomRuntimePermissionsUpgradeResult)
31882            }
31883            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
31884                Some(Self::AtomGrantPermissionsActivityButtonActions)
31885            }
31886            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
31887                Some(Self::AtomLocationAccessCheckNotificationAction)
31888            }
31889            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
31890                Some(Self::AtomAppPermissionFragmentActionReported)
31891            }
31892            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
31893                Some(Self::AtomAppPermissionFragmentViewed)
31894            }
31895            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
31896                Some(Self::AtomAppPermissionsFragmentViewed)
31897            }
31898            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
31899                Some(Self::AtomPermissionAppsFragmentViewed)
31900            }
31901            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
31902            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
31903            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
31904            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
31905            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
31906                Some(Self::AtomExclusionRectStateChanged)
31907            }
31908            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
31909                Some(Self::AtomBackGestureReportedReported)
31910            }
31911            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
31912                Some(Self::AtomUpdateEngineUpdateAttemptReported)
31913            }
31914            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
31915                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
31916            }
31917            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
31918            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
31919                Some(Self::AtomAppCompatibilityChangeReported)
31920            }
31921            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
31922            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
31923                Some(Self::AtomVmsClientConnectionStateChanged)
31924            }
31925            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
31926                Some(Self::AtomMediaProviderScanOccurred)
31927            }
31928            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
31929            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
31930                Some(Self::AtomMediaProviderPermissionRequested)
31931            }
31932            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
31933                Some(Self::AtomMediaProviderSchemaChanged)
31934            }
31935            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
31936                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
31937            }
31938            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
31939                Some(Self::AtomRebootEscrowRecoveryReported)
31940            }
31941            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
31942                Some(Self::AtomBootTimeEventDurationReported)
31943            }
31944            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
31945                Some(Self::AtomBootTimeEventElapsedTimeReported)
31946            }
31947            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
31948                Some(Self::AtomBootTimeEventUtcTimeReported)
31949            }
31950            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
31951                Some(Self::AtomBootTimeEventErrorCodeReported)
31952            }
31953            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
31954            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
31955            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
31956                Some(Self::AtomNotificationPanelReported)
31957            }
31958            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
31959                Some(Self::AtomNotificationChannelModified)
31960            }
31961            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
31962                Some(Self::AtomIntegrityCheckResultReported)
31963            }
31964            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
31965            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
31966            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
31967            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
31968            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
31969            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
31970                Some(Self::AtomWifiConnectionResultReported)
31971            }
31972            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
31973            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
31974            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
31975                Some(Self::AtomForegroundServiceAppOpSessionEnded)
31976            }
31977            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
31978            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
31979            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
31980            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
31981            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
31982            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
31983            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
31984                Some(Self::AtomPackageInstallerV2Reported)
31985            }
31986            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
31987                Some(Self::AtomUserLifecycleJourneyReported)
31988            }
31989            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
31990                Some(Self::AtomUserLifecycleEventOccurred)
31991            }
31992            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
31993                Some(Self::AtomAccessibilityShortcutReported)
31994            }
31995            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
31996                Some(Self::AtomAccessibilityServiceReported)
31997            }
31998            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
31999                Some(Self::AtomDocsUiDragAndDropReported)
32000            }
32001            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
32002            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
32003                Some(Self::AtomAutoRevokeNotificationClicked)
32004            }
32005            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
32006                Some(Self::AtomAutoRevokeFragmentAppViewed)
32007            }
32008            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
32009                Some(Self::AtomAutoRevokedAppInteraction)
32010            }
32011            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
32012                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
32013            }
32014            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
32015            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
32016                Some(Self::AtomAudioPowerUsageDataReported)
32017            }
32018            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
32019            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
32020                Some(Self::AtomMediaoutputOpSwitchReported)
32021            }
32022            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
32023            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
32024            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
32025            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
32026                Some(Self::AtomAssistantInvocationReported)
32027            }
32028            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
32029            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
32030                Some(Self::AtomCarUserHalModifyUserRequestReported)
32031            }
32032            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
32033                Some(Self::AtomCarUserHalModifyUserResponseReported)
32034            }
32035            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
32036                Some(Self::AtomCarUserHalPostSwitchResponseReported)
32037            }
32038            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
32039                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
32040            }
32041            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
32042                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
32043            }
32044            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
32045                Some(Self::AtomCarUserHalUserAssociationRequestReported)
32046            }
32047            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
32048                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
32049            }
32050            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
32051                Some(Self::AtomNetworkIpProvisioningReported)
32052            }
32053            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
32054                Some(Self::AtomNetworkDhcpRenewReported)
32055            }
32056            "ATOM_NETWORK_VALIDATION_REPORTED" => {
32057                Some(Self::AtomNetworkValidationReported)
32058            }
32059            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
32060                Some(Self::AtomNetworkStackQuirkReported)
32061            }
32062            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
32063                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
32064            }
32065            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
32066                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
32067            }
32068            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
32069                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
32070            }
32071            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
32072                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
32073            }
32074            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
32075            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
32076            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
32077            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
32078                Some(Self::AtomContactsProviderStatusReported)
32079            }
32080            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
32081                Some(Self::AtomKeystoreKeyEventReported)
32082            }
32083            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
32084            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
32085            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
32086                Some(Self::AtomUiInteractionFrameInfoReported)
32087            }
32088            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
32089            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
32090            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
32091                Some(Self::AtomWifiConnectionStateChanged)
32092            }
32093            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
32094                Some(Self::AtomHdmiCecActiveSourceChanged)
32095            }
32096            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
32097            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
32098            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
32099            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
32100                Some(Self::AtomCarrierIdMismatchReported)
32101            }
32102            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
32103            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
32104                Some(Self::AtomDataStallRecoveryReported)
32105            }
32106            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
32107                Some(Self::AtomMediametricsMediaparserReported)
32108            }
32109            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
32110            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
32111                Some(Self::AtomTextClassifierApiUsageReported)
32112            }
32113            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
32114                Some(Self::AtomCarWatchdogKillStatsReported)
32115            }
32116            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
32117                Some(Self::AtomMediametricsPlaybackReported)
32118            }
32119            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
32120            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
32121                Some(Self::AtomMediaPlaybackStateChanged)
32122            }
32123            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
32124                Some(Self::AtomMediaPlaybackErrorReported)
32125            }
32126            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
32127                Some(Self::AtomMediaPlaybackTrackChanged)
32128            }
32129            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
32130            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
32131            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
32132            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
32133            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
32134            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
32135            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
32136                Some(Self::AtomImsServiceEntitlementUpdated)
32137            }
32138            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
32139            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
32140                Some(Self::AtomSimSpecificSettingsRestored)
32141            }
32142            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
32143                Some(Self::AtomTextClassifierDownloadReported)
32144            }
32145            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
32146            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
32147            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
32148                Some(Self::AtomBluetoothHalCrashReasonReported)
32149            }
32150            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
32151                Some(Self::AtomRebootEscrowPreparationReported)
32152            }
32153            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
32154                Some(Self::AtomRebootEscrowLskfCaptureReported)
32155            }
32156            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
32157                Some(Self::AtomRebootEscrowRebootReported)
32158            }
32159            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
32160            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
32161                Some(Self::AtomMediametricsAaudiostreamReported)
32162            }
32163            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
32164                Some(Self::AtomMediaTranscodingSessionEnded)
32165            }
32166            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
32167                Some(Self::AtomMagnificationUsageReported)
32168            }
32169            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
32170                Some(Self::AtomMagnificationModeWithImeOnReported)
32171            }
32172            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
32173                Some(Self::AtomAppSearchCallStatsReported)
32174            }
32175            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
32176                Some(Self::AtomAppSearchPutDocumentStatsReported)
32177            }
32178            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
32179            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
32180            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
32181            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
32182            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
32183                Some(Self::AtomAuthPromptAuthenticateInvoked)
32184            }
32185            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
32186                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
32187            }
32188            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
32189            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
32190            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
32191            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
32192                Some(Self::AtomLongRebootBlockingReported)
32193            }
32194            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
32195                Some(Self::AtomLocationTimeZoneProviderStateChanged)
32196            }
32197            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
32198            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
32199                Some(Self::AtomTimeoutAutoExtendedReported)
32200            }
32201            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
32202            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
32203            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
32204                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
32205            }
32206            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
32207                Some(Self::AtomUserLevelHibernationStateChanged)
32208            }
32209            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
32210                Some(Self::AtomAppSearchInitializeStatsReported)
32211            }
32212            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
32213                Some(Self::AtomAppSearchQueryStatsReported)
32214            }
32215            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
32216            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
32217                Some(Self::AtomNetworkIpReachabilityMonitorReported)
32218            }
32219            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
32220            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
32221                Some(Self::AtomAnrOccurredProcessingStarted)
32222            }
32223            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
32224                Some(Self::AtomAppSearchRemoveStatsReported)
32225            }
32226            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
32227            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
32228                Some(Self::AtomPermissionUsageFragmentInteraction)
32229            }
32230            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
32231                Some(Self::AtomPermissionDetailsInteraction)
32232            }
32233            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
32234                Some(Self::AtomPrivacySensorToggleInteraction)
32235            }
32236            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
32237                Some(Self::AtomPrivacyToggleDialogInteraction)
32238            }
32239            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
32240                Some(Self::AtomAppSearchOptimizeStatsReported)
32241            }
32242            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
32243                Some(Self::AtomNonA11yToolServiceWarningReport)
32244            }
32245            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
32246            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
32247                Some(Self::AtomSizeCompatRestartButtonEventReported)
32248            }
32249            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
32250            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
32251                Some(Self::AtomNetworkDnsHandshakeReported)
32252            }
32253            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
32254                Some(Self::AtomBluetoothCodePathCounter)
32255            }
32256            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
32257                Some(Self::AtomBluetoothLeBatchScanReportDelay)
32258            }
32259            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
32260                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
32261            }
32262            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
32263                Some(Self::AtomNeuralnetworksCompilationCompleted)
32264            }
32265            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
32266                Some(Self::AtomNeuralnetworksExecutionCompleted)
32267            }
32268            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
32269                Some(Self::AtomNeuralnetworksCompilationFailed)
32270            }
32271            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
32272                Some(Self::AtomNeuralnetworksExecutionFailed)
32273            }
32274            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
32275            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
32276            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
32277                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
32278            }
32279            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
32280                Some(Self::AtomChreCodeDownloadTransacted)
32281            }
32282            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
32283            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
32284            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
32285            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
32286                Some(Self::AtomUwbRangingMeasurementReceived)
32287            }
32288            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
32289                Some(Self::AtomTextClassifierDownloadWorkScheduled)
32290            }
32291            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
32292                Some(Self::AtomTextClassifierDownloadWorkCompleted)
32293            }
32294            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
32295            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
32296            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
32297                Some(Self::AtomNearbyDeviceScanStateChanged)
32298            }
32299            "ATOM_APPLICATION_LOCALES_CHANGED" => {
32300                Some(Self::AtomApplicationLocalesChanged)
32301            }
32302            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
32303                Some(Self::AtomMediametricsAudiotrackstatusReported)
32304            }
32305            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
32306                Some(Self::AtomFoldStateDurationReported)
32307            }
32308            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
32309                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
32310            }
32311            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
32312            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
32313                Some(Self::AtomDisplayHbmBrightnessChanged)
32314            }
32315            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
32316                Some(Self::AtomPersistentUriPermissionsFlushed)
32317            }
32318            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
32319                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
32320            }
32321            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
32322            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
32323            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
32324            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
32325                Some(Self::AtomWearSettingsUiInteracted)
32326            }
32327            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
32328                Some(Self::AtomTracingServiceReportEvent)
32329            }
32330            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
32331                Some(Self::AtomMediametricsAudiorecordstatusReported)
32332            }
32333            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
32334            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
32335            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
32336                Some(Self::AtomWifiP2pConnectionReported)
32337            }
32338            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
32339            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
32340                Some(Self::AtomHotwordDetectorCreateRequested)
32341            }
32342            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
32343                Some(Self::AtomHotwordDetectionServiceInitResultReported)
32344            }
32345            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
32346                Some(Self::AtomHotwordDetectionServiceRestarted)
32347            }
32348            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
32349                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
32350            }
32351            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
32352            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
32353                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
32354            }
32355            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
32356                Some(Self::AtomContactsIndexerUpdateStatsReported)
32357            }
32358            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
32359                Some(Self::AtomAppBackgroundRestrictionsInfo)
32360            }
32361            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
32362                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
32363            }
32364            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
32365                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
32366            }
32367            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
32368                Some(Self::AtomPermissionReminderNotificationInteracted)
32369            }
32370            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
32371                Some(Self::AtomRecentPermissionDecisionsInteracted)
32372            }
32373            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
32374                Some(Self::AtomGnssPsdsDownloadReported)
32375            }
32376            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
32377                Some(Self::AtomLeAudioConnectionSessionReported)
32378            }
32379            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
32380                Some(Self::AtomLeAudioBroadcastSessionReported)
32381            }
32382            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
32383            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
32384                Some(Self::AtomTaskManagerEventReported)
32385            }
32386            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
32387            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
32388                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
32389            }
32390            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
32391                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
32392            }
32393            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
32394                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
32395            }
32396            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
32397                Some(Self::AtomWifiSetupFailureCrashReported)
32398            }
32399            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
32400            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
32401                Some(Self::AtomIsolatedCompilationScheduled)
32402            }
32403            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
32404            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
32405                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
32406            }
32407            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
32408                Some(Self::AtomSystemServerPreWatchdogOccurred)
32409            }
32410            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
32411            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
32412            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
32413                Some(Self::AtomRemoteKeyProvisioningAttempt)
32414            }
32415            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
32416                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
32417            }
32418            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
32419                Some(Self::AtomRemoteKeyProvisioningTiming)
32420            }
32421            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
32422                Some(Self::AtomMediaoutputOpInteractionReport)
32423            }
32424            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
32425            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
32426                Some(Self::AtomAutofillPresentationEventReported)
32427            }
32428            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
32429            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
32430                Some(Self::AtomSafetySourceStateCollected)
32431            }
32432            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
32433                Some(Self::AtomSafetyCenterSystemEventReported)
32434            }
32435            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
32436                Some(Self::AtomSafetyCenterInteractionReported)
32437            }
32438            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
32439                Some(Self::AtomSettingsProviderSettingChanged)
32440            }
32441            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
32442                Some(Self::AtomBroadcastDeliveryEventReported)
32443            }
32444            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
32445                Some(Self::AtomServiceRequestEventReported)
32446            }
32447            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
32448                Some(Self::AtomProviderAcquisitionEventReported)
32449            }
32450            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
32451                Some(Self::AtomBluetoothDeviceNameReported)
32452            }
32453            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
32454            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
32455            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
32456            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
32457                Some(Self::AtomCbReceiverFeatureChanged)
32458            }
32459            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
32460                Some(Self::AtomPrivacySignalNotificationInteraction)
32461            }
32462            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
32463                Some(Self::AtomPrivacySignalIssueCardInteraction)
32464            }
32465            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
32466                Some(Self::AtomPrivacySignalsJobFailure)
32467            }
32468            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
32469            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
32470            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
32471            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
32472            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
32473            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
32474                Some(Self::AtomNetworkDnsServerSupportReported)
32475            }
32476            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
32477            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
32478            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
32479                Some(Self::AtomAmbientBrightnessStatsReported)
32480            }
32481            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
32482                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
32483            }
32484            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
32485                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
32486            }
32487            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
32488                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
32489            }
32490            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
32491                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
32492            }
32493            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
32494            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
32495                Some(Self::AtomDeviceWideJobConstraintChanged)
32496            }
32497            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
32498            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
32499            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
32500            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
32501                Some(Self::AtomSystemDefaultNetworkChanged)
32502            }
32503            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
32504                Some(Self::AtomIwlanSetupDataCallResultReported)
32505            }
32506            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
32507                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
32508            }
32509            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
32510                Some(Self::AtomAirplaneModeSessionReported)
32511            }
32512            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
32513            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
32514            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
32515                Some(Self::AtomPackageInstallationSessionReported)
32516            }
32517            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
32518                Some(Self::AtomDefaultNetworkRematchInfo)
32519            }
32520            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
32521                Some(Self::AtomNetworkSelectionPerformance)
32522            }
32523            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
32524            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
32525                Some(Self::AtomBluetoothDisconnectionReasonReported)
32526            }
32527            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
32528                Some(Self::AtomBluetoothLocalVersionsReported)
32529            }
32530            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
32531                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
32532            }
32533            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
32534                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
32535            }
32536            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
32537            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
32538                Some(Self::AtomBrightnessConfigurationUpdated)
32539            }
32540            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
32541                Some(Self::AtomWearMediaOutputSwitcherLaunched)
32542            }
32543            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
32544                Some(Self::AtomWearMediaOutputSwitcherFinished)
32545            }
32546            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
32547                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
32548            }
32549            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
32550                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
32551            }
32552            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
32553                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
32554            }
32555            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
32556                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
32557            }
32558            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
32559                Some(Self::AtomPackageManagerSnapshotReported)
32560            }
32561            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
32562                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
32563            }
32564            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
32565                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
32566            }
32567            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
32568            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
32569                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
32570            }
32571            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
32572            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
32573                Some(Self::AtomWsWatchFaceFavoriteActionReported)
32574            }
32575            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
32576                Some(Self::AtomWsWatchFaceSetActionReported)
32577            }
32578            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
32579                Some(Self::AtomPackageUninstallationReported)
32580            }
32581            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
32582            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
32583                Some(Self::AtomGameModeConfigurationChanged)
32584            }
32585            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
32586            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
32587                Some(Self::AtomNetworkSliceSessionEnded)
32588            }
32589            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
32590                Some(Self::AtomNetworkSliceDailyDataUsageReported)
32591            }
32592            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
32593            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
32594            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
32595                Some(Self::AtomNfcReaderConflictOccurred)
32596            }
32597            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
32598            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
32599                Some(Self::AtomGetTypeAccessedWithoutPermission)
32600            }
32601            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
32602                Some(Self::AtomMobileBundledAppInfoGathered)
32603            }
32604            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
32605                Some(Self::AtomWsWatchFaceComplicationSetChanged)
32606            }
32607            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
32608            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
32609            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
32610            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
32611            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
32612            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
32613                Some(Self::AtomUnsafeIntentEventReported)
32614            }
32615            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
32616                Some(Self::AtomPerformanceHintSessionReported)
32617            }
32618            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
32619                Some(Self::AtomMediametricsMidiDeviceCloseReported)
32620            }
32621            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
32622            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
32623                Some(Self::AtomHotwordAudioEgressEventReported)
32624            }
32625            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
32626                Some(Self::AtomLocationEnabledStateChanged)
32627            }
32628            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
32629            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
32630                Some(Self::AtomUsbComplianceWarningsReported)
32631            }
32632            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
32633                Some(Self::AtomAppSupportedLocalesChanged)
32634            }
32635            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
32636                Some(Self::AtomMediaProviderVolumeRecoveryReported)
32637            }
32638            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
32639                Some(Self::AtomBiometricPropertiesCollected)
32640            }
32641            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
32642            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
32643            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
32644            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
32645            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
32646                Some(Self::AtomDeviceLogAccessEventReported)
32647            }
32648            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
32649            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
32650            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
32651            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
32652                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
32653            }
32654            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
32655            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
32656            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
32657                Some(Self::AtomWsNotificationBridgemodeUpdated)
32658            }
32659            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
32660                Some(Self::AtomWsNotificationDismissalActioned)
32661            }
32662            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
32663            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
32664            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
32665            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
32666                Some(Self::AtomWifiBytesTransferByFgBg)
32667            }
32668            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
32669            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
32670                Some(Self::AtomMobileBytesTransferByFgBg)
32671            }
32672            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
32673            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
32674            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
32675            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
32676            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
32677            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
32678            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
32679            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
32680            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
32681            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
32682            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
32683            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
32684            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
32685            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
32686            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
32687            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
32688            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
32689            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
32690            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
32691            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
32692            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
32693            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
32694            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
32695            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
32696            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
32697            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
32698            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
32699            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
32700            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
32701            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
32702            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
32703            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
32704            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
32705                Some(Self::AtomOnDevicePowerMeasurement)
32706            }
32707            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
32708                Some(Self::AtomDeviceCalculatedPowerUse)
32709            }
32710            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
32711                Some(Self::AtomProcessMemoryHighWaterMark)
32712            }
32713            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
32714            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
32715            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
32716            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
32717            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
32718                Some(Self::AtomDebugFailingElapsedClock)
32719            }
32720            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
32721            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
32722            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
32723            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
32724            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
32725            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
32726            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
32727            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
32728            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
32729            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
32730                Some(Self::AtomAppsOnExternalStorageInfo)
32731            }
32732            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
32733            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
32734            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
32735            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
32736                Some(Self::AtomProcessSystemIonHeapSize)
32737            }
32738            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
32739                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
32740            }
32741            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
32742                Some(Self::AtomSurfaceflingerStatsLayerInfo)
32743            }
32744            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
32745            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
32746            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
32747            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
32748                Some(Self::AtomDangerousPermissionStateSampled)
32749            }
32750            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
32751            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
32752            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
32753            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
32754                Some(Self::AtomPackageNotificationPreferences)
32755            }
32756            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
32757                Some(Self::AtomPackageNotificationChannelPreferences)
32758            }
32759            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
32760                Some(Self::AtomPackageNotificationChannelGroupPreferences)
32761            }
32762            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
32763            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
32764            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
32765            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
32766            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
32767            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
32768                Some(Self::AtomSupportedRadioAccessFamily)
32769            }
32770            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
32771            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
32772            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
32773            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
32774                Some(Self::AtomBytesTransferByTagAndMetered)
32775            }
32776            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
32777            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
32778                Some(Self::AtomGeneralExternalStorageAccessStats)
32779            }
32780            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
32781            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
32782            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
32783            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
32784            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
32785            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
32786                Some(Self::AtomCellularDataServiceSwitch)
32787            }
32788            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
32789            "ATOM_IMS_REGISTRATION_TERMINATION" => {
32790                Some(Self::AtomImsRegistrationTermination)
32791            }
32792            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
32793            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
32794            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
32795            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
32796            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
32797                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
32798            }
32799            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
32800            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
32801            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
32802            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
32803            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
32804            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
32805            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
32806            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
32807            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
32808            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
32809            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
32810            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
32811            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
32812                Some(Self::AtomBatteryUsageStatsBeforeReset)
32813            }
32814            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
32815                Some(Self::AtomBatteryUsageStatsSinceReset)
32816            }
32817            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
32818                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
32819            }
32820            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
32821                Some(Self::AtomInstalledIncrementalPackage)
32822            }
32823            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
32824            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
32825            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
32826            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
32827                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
32828            }
32829            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
32830                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
32831            }
32832            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
32833                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
32834            }
32835            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
32836                Some(Self::AtomKeystore2AtomWithOverflow)
32837            }
32838            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
32839                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
32840            }
32841            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
32842                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
32843            }
32844            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
32845            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
32846            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
32847            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
32848                Some(Self::AtomAccessibilityShortcutStats)
32849            }
32850            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
32851                Some(Self::AtomAccessibilityFloatingMenuStats)
32852            }
32853            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
32854                Some(Self::AtomDataUsageBytesTransferV2)
32855            }
32856            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
32857            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
32858                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
32859            }
32860            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
32861                Some(Self::AtomCarWatchdogUidIoUsageSummary)
32862            }
32863            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
32864                Some(Self::AtomImsRegistrationFeatureTagStats)
32865            }
32866            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
32867                Some(Self::AtomRcsClientProvisioningStats)
32868            }
32869            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
32870            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
32871            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
32872                Some(Self::AtomSipTransportFeatureTagStats)
32873            }
32874            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
32875            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
32876            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
32877                Some(Self::AtomImsDedicatedBearerListenerEvent)
32878            }
32879            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
32880            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
32881                Some(Self::AtomImsRegistrationServiceDescStats)
32882            }
32883            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
32884            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
32885            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
32886            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
32887            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
32888            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
32889                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
32890            }
32891            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
32892            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
32893                Some(Self::AtomPinnedFileSizesPerPackage)
32894            }
32895            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
32896                Some(Self::AtomPendingIntentsPerPackage)
32897            }
32898            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
32899            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
32900                Some(Self::AtomTelephonyNetworkRequestsV2)
32901            }
32902            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
32903                Some(Self::AtomDeviceTelephonyProperties)
32904            }
32905            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
32906                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
32907            }
32908            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
32909            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
32910            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
32911            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
32912            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
32913            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
32914            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
32915            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
32916                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
32917            }
32918            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
32919            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
32920            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
32921            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
32922                Some(Self::AtomNetworkSliceRequestCount)
32923            }
32924            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
32925            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
32926                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
32927            }
32928            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
32929            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
32930            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
32931            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
32932            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
32933            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
32934                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
32935            }
32936            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
32937            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
32938            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
32939                Some(Self::AtomWifiSelfRecoveryTriggered)
32940            }
32941            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
32942            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
32943            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
32944            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
32945            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
32946            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
32947                Some(Self::AtomWifiAwareResourceUsingChanged)
32948            }
32949            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
32950            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
32951                Some(Self::AtomWifiLocalOnlyRequestReceived)
32952            }
32953            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
32954                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
32955            }
32956            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
32957            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
32958            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
32959            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
32960            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
32961            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
32962                Some(Self::AtomWifiApCapabilitiesReported)
32963            }
32964            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
32965            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
32966                Some(Self::AtomScorerPredictionResultReported)
32967            }
32968            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
32969            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
32970            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
32971            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
32972            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
32973                Some(Self::AtomWifiConfiguredNetworkInfo)
32974            }
32975            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
32976            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
32977            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
32978                Some(Self::AtomFirstOverlayStateChanged)
32979            }
32980            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
32981            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
32982                Some(Self::AtomWsIncomingCallActionReported)
32983            }
32984            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
32985                Some(Self::AtomWsCallDisconnectionReported)
32986            }
32987            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
32988            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
32989                Some(Self::AtomWsCallUserExperienceLatencyReported)
32990            }
32991            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
32992                Some(Self::AtomWsCallInteractionReported)
32993            }
32994            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
32995            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
32996                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
32997            }
32998            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
32999                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
33000            }
33001            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
33002                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
33003            }
33004            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
33005                Some(Self::AtomWsRemoteEventUsageReported)
33006            }
33007            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
33008                Some(Self::AtomWsNotificationManagedDismissalSync)
33009            }
33010            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
33011                Some(Self::AtomWsBugreportEventReported)
33012            }
33013            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
33014                Some(Self::AtomWsStandaloneModeSnapshot)
33015            }
33016            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
33017                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
33018            }
33019            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
33020                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
33021            }
33022            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
33023                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
33024            }
33025            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
33026                Some(Self::AtomWearAdaptiveSuspendStatsReported)
33027            }
33028            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
33029                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
33030            }
33031            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
33032                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
33033            }
33034            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
33035            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
33036            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
33037                Some(Self::AtomWearTimeSyncAttemptCompleted)
33038            }
33039            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
33040            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
33041                Some(Self::AtomWearSetupWizardDeviceStatusReported)
33042            }
33043            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
33044                Some(Self::AtomWearSetupWizardPairingCompleted)
33045            }
33046            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
33047                Some(Self::AtomWearSetupWizardConnectionEstablished)
33048            }
33049            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
33050                Some(Self::AtomWearSetupWizardCheckinCompleted)
33051            }
33052            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
33053                Some(Self::AtomWearSetupWizardCompanionTimeReported)
33054            }
33055            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
33056                Some(Self::AtomWearSetupWizardStatusReported)
33057            }
33058            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
33059                Some(Self::AtomWearSetupWizardHeartbeatReported)
33060            }
33061            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
33062                Some(Self::AtomWearSetupWizardFrpTriggered)
33063            }
33064            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
33065                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
33066            }
33067            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
33068                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
33069            }
33070            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
33071            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
33072            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
33073            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
33074                Some(Self::AtomLayoutExpressionInspected)
33075            }
33076            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
33077                Some(Self::AtomLayoutAnimationsInspected)
33078            }
33079            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
33080                Some(Self::AtomMaterialComponentsInspected)
33081            }
33082            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
33083            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
33084            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
33085            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
33086            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
33087            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
33088                Some(Self::AtomIgnoredInflationFailuresReported)
33089            }
33090            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
33091            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
33092            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
33093            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
33094            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
33095                Some(Self::AtomMediaSessionStateChanged)
33096            }
33097            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
33098                Some(Self::AtomMediaControlApiUsageReported)
33099            }
33100            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
33101            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
33102                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
33103            }
33104            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
33105                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
33106            }
33107            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
33108                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
33109            }
33110            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
33111            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
33112                Some(Self::AtomSysproxyBluetoothBytesTransfer)
33113            }
33114            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
33115                Some(Self::AtomSysproxyConnectionUpdated)
33116            }
33117            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
33118                Some(Self::AtomWearCompanionConnectionState)
33119            }
33120            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
33121                Some(Self::AtomSysproxyServiceStateUpdated)
33122            }
33123            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
33124            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
33125                Some(Self::AtomTestUprobestatsAtomReported)
33126            }
33127            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
33128            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
33129            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
33130                Some(Self::AtomBootIntegrityInfoReported)
33131            }
33132            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
33133                Some(Self::AtomThreadnetworkTelemetryDataReported)
33134            }
33135            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
33136                Some(Self::AtomThreadnetworkTopoEntryRepeated)
33137            }
33138            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
33139                Some(Self::AtomThreadnetworkDeviceInfoReported)
33140            }
33141            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
33142                Some(Self::AtomCellularRadioPowerStateChanged)
33143            }
33144            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
33145            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
33146            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
33147            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
33148            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
33149                Some(Self::AtomCellularIdentifierDisclosed)
33150            }
33151            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
33152            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
33153            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
33154                Some(Self::AtomSatelliteIncomingDatagram)
33155            }
33156            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
33157                Some(Self::AtomSatelliteOutgoingDatagram)
33158            }
33159            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
33160            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
33161                Some(Self::AtomSatelliteSosMessageRecommender)
33162            }
33163            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
33164                Some(Self::AtomCarrierRoamingSatelliteSession)
33165            }
33166            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
33167                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
33168            }
33169            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
33170                Some(Self::AtomControllerStatsPerPackage)
33171            }
33172            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
33173            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
33174            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
33175                Some(Self::AtomSatelliteAccessController)
33176            }
33177            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
33178            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
33179            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
33180                Some(Self::AtomQnsFallbackRestrictionChanged)
33181            }
33182            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
33183                Some(Self::AtomQnsRatPreferenceMismatchInfo)
33184            }
33185            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
33186            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
33187            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
33188                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
33189            }
33190            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
33191            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
33192            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
33193            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
33194            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
33195            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
33196                Some(Self::AtomLockscreenShortcutSelected)
33197            }
33198            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
33199                Some(Self::AtomLockscreenShortcutTriggered)
33200            }
33201            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
33202                Some(Self::AtomLauncherImpressionEventV2)
33203            }
33204            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
33205                Some(Self::AtomDisplaySwitchLatencyTracked)
33206            }
33207            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
33208                Some(Self::AtomNotificationListenerService)
33209            }
33210            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
33211            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
33212                Some(Self::AtomCommunalHubWidgetEventReported)
33213            }
33214            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
33215                Some(Self::AtomPeripheralTutorialLaunched)
33216            }
33217            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
33218                Some(Self::AtomContextualEducationTriggered)
33219            }
33220            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
33221            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
33222                Some(Self::AtomTestExtensionAtomReported)
33223            }
33224            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
33225                Some(Self::AtomTestRestrictedAtomReported)
33226            }
33227            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
33228            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
33229            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
33230            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
33231            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
33232                Some(Self::AtomSandboxActivityEventOccurred)
33233            }
33234            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
33235                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
33236            }
33237            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
33238            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
33239            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
33240            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
33241            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
33242            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
33243            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
33244            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
33245            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
33246                Some(Self::AtomMediaProviderDatabaseRollbackReported)
33247            }
33248            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
33249                Some(Self::AtomBackupSetupStatusReported)
33250            }
33251            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
33252            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
33253                Some(Self::AtomScreenTimeoutOverrideReported)
33254            }
33255            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
33256                Some(Self::AtomScreenInteractiveSessionReported)
33257            }
33258            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
33259            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
33260            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
33261            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
33262                Some(Self::AtomPhotopickerSessionInfoReported)
33263            }
33264            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
33265                Some(Self::AtomPhotopickerApiInfoReported)
33266            }
33267            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
33268                Some(Self::AtomPhotopickerUiEventLogged)
33269            }
33270            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
33271                Some(Self::AtomPhotopickerMediaItemStatusReported)
33272            }
33273            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
33274                Some(Self::AtomPhotopickerPreviewInfoLogged)
33275            }
33276            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
33277                Some(Self::AtomPhotopickerMenuInteractionLogged)
33278            }
33279            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
33280                Some(Self::AtomPhotopickerBannerInteractionLogged)
33281            }
33282            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
33283                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
33284            }
33285            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
33286                Some(Self::AtomPhotopickerPageInfoLogged)
33287            }
33288            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
33289                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
33290            }
33291            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
33292                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
33293            }
33294            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
33295                Some(Self::AtomPhotopickerSearchInfoReported)
33296            }
33297            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
33298                Some(Self::AtomSearchDataExtractionDetailsReported)
33299            }
33300            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
33301                Some(Self::AtomEmbeddedPhotopickerInfoReported)
33302            }
33303            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
33304                Some(Self::AtomPermissionRationaleDialogViewed)
33305            }
33306            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
33307                Some(Self::AtomPermissionRationaleDialogActionReported)
33308            }
33309            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
33310                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
33311            }
33312            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
33313                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
33314            }
33315            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
33316                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
33317            }
33318            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
33319                Some(Self::AtomEnhancedConfirmationDialogResultReported)
33320            }
33321            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
33322                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
33323            }
33324            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
33325            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
33326            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
33327            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
33328            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
33329                Some(Self::AtomComponentStateChangedReported)
33330            }
33331            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
33332                Some(Self::AtomOndevicepersonalizationApiCalled)
33333            }
33334            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
33335                Some(Self::AtomOndevicepersonalizationTraceEvent)
33336            }
33337            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
33338                Some(Self::AtomNfcObserveModeStateChanged)
33339            }
33340            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
33341            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
33342                Some(Self::AtomNfcPollingLoopNotificationReported)
33343            }
33344            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
33345                Some(Self::AtomNfcProprietaryCapabilitiesReported)
33346            }
33347            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
33348                Some(Self::AtomNfcExitFrameTableChanged)
33349            }
33350            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
33351            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
33352                Some(Self::AtomMicroxrDeviceBootCompleteReported)
33353            }
33354            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
33355            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
33356            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
33357            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
33358            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
33359            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
33360                Some(Self::AtomMediaEditingEndedReported)
33361            }
33362            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
33363                Some(Self::AtomMediaCodecReclaimRequestCompleted)
33364            }
33365            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
33366            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
33367            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
33368            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
33369            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
33370                Some(Self::AtomChreSignificantMotionStateChanged)
33371            }
33372            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
33373                Some(Self::AtomPopulationDensityProviderLoadingReported)
33374            }
33375            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
33376                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
33377            }
33378            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
33379                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
33380            }
33381            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
33382            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
33383            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
33384                Some(Self::AtomKeyboardSystemsEventReported)
33385            }
33386            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
33387            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
33388                Some(Self::AtomInputEventLatencyReported)
33389            }
33390            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
33391            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
33392            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
33393                Some(Self::AtomIkeLivenessCheckSessionValidated)
33394            }
33395            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
33396                Some(Self::AtomNegotiatedSecurityAssociation)
33397            }
33398            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
33399                Some(Self::AtomHotwordEgressSizeAtomReported)
33400            }
33401            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
33402                Some(Self::AtomHealthConnectUiImpression)
33403            }
33404            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
33405                Some(Self::AtomHealthConnectUiInteraction)
33406            }
33407            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
33408                Some(Self::AtomHealthConnectAppOpenedReported)
33409            }
33410            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
33411            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
33412            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
33413                Some(Self::AtomHealthConnectStorageStats)
33414            }
33415            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
33416            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
33417            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
33418                Some(Self::AtomHealthConnectExportInvoked)
33419            }
33420            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
33421                Some(Self::AtomHealthConnectImportInvoked)
33422            }
33423            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
33424                Some(Self::AtomHealthConnectExportImportStatsReported)
33425            }
33426            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
33427                Some(Self::AtomHealthConnectPermissionStats)
33428            }
33429            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
33430                Some(Self::AtomHealthConnectPhrApiInvoked)
33431            }
33432            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
33433                Some(Self::AtomHealthConnectPhrUsageStats)
33434            }
33435            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
33436                Some(Self::AtomHealthConnectPhrStorageStats)
33437            }
33438            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
33439                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
33440            }
33441            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
33442                Some(Self::AtomHealthConnectEcosystemStats)
33443            }
33444            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
33445            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
33446                Some(Self::AtomHdmiSoundbarModeStatusReported)
33447            }
33448            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
33449                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
33450            }
33451            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
33452            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
33453            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
33454            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
33455                Some(Self::AtomApplicationGrammaticalInflectionChanged)
33456            }
33457            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
33458                Some(Self::AtomSystemGrammaticalInflectionChanged)
33459            }
33460            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
33461                Some(Self::AtomFullScreenIntentLaunched)
33462            }
33463            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
33464            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
33465            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
33466            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
33467            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
33468                Some(Self::AtomStylusPredictionMetricsReported)
33469            }
33470            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
33471            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
33472                Some(Self::AtomMediaProjectionStateChanged)
33473            }
33474            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
33475                Some(Self::AtomMediaProjectionTargetChanged)
33476            }
33477            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
33478                Some(Self::AtomExcessiveBinderProxyCountReported)
33479            }
33480            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
33481                Some(Self::AtomProxyBytesTransferByFgBg)
33482            }
33483            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
33484                Some(Self::AtomMobileBytesTransferByProcState)
33485            }
33486            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
33487            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
33488                Some(Self::AtomSensitiveContentMediaProjectionSession)
33489            }
33490            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
33491                Some(Self::AtomSensitiveNotificationAppProtectionSession)
33492            }
33493            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
33494                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
33495            }
33496            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
33497                Some(Self::AtomSensitiveNotificationRedaction)
33498            }
33499            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
33500                Some(Self::AtomSensitiveContentAppProtection)
33501            }
33502            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
33503                Some(Self::AtomAppRestrictionStateChanged)
33504            }
33505            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
33506            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
33507            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
33508                Some(Self::AtomPowerSaveTempAllowlistChanged)
33509            }
33510            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
33511            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
33512                Some(Self::AtomContentOrFileUriEventReported)
33513            }
33514            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
33515                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
33516            }
33517            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
33518                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
33519            }
33520            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
33521            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
33522                Some(Self::AtomJankFrameCountByWidgetReported)
33523            }
33524            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
33525            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
33526                Some(Self::AtomNotificationChannelClassification)
33527            }
33528            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
33529                Some(Self::AtomCameraStatusForCompatibilityChanged)
33530            }
33531            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
33532                Some(Self::AtomFederatedComputeApiCalled)
33533            }
33534            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
33535                Some(Self::AtomFederatedComputeTrainingEventReported)
33536            }
33537            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
33538                Some(Self::AtomExampleIteratorNextLatencyReported)
33539            }
33540            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
33541                Some(Self::AtomFederatedComputeTraceEventReported)
33542            }
33543            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
33544            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
33545                Some(Self::AtomExpressHistogramSampleReported)
33546            }
33547            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
33548            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
33549                Some(Self::AtomExpressUidHistogramSampleReported)
33550            }
33551            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
33552            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
33553            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
33554            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
33555                Some(Self::AtomExternalDisplayStateChanged)
33556            }
33557            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
33558                Some(Self::AtomDisplayModeDirectorVoteChanged)
33559            }
33560            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
33561                Some(Self::AtomDevicePolicyManagementMode)
33562            }
33563            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
33564            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
33565                Some(Self::AtomDeviceLockCheckInRequestReported)
33566            }
33567            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
33568                Some(Self::AtomDeviceLockProvisioningCompleteReported)
33569            }
33570            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
33571                Some(Self::AtomDeviceLockKioskAppRequestReported)
33572            }
33573            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
33574                Some(Self::AtomDeviceLockCheckInRetryReported)
33575            }
33576            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
33577                Some(Self::AtomDeviceLockProvisionFailureReported)
33578            }
33579            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
33580                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
33581            }
33582            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
33583            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
33584                Some(Self::AtomDesktopModeSessionTaskUpdate)
33585            }
33586            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
33587                Some(Self::AtomDesktopModeTaskSizeUpdated)
33588            }
33589            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
33590            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
33591            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
33592                Some(Self::AtomCronetEngineBuilderInitialized)
33593            }
33594            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
33595                Some(Self::AtomCronetHttpFlagsInitialized)
33596            }
33597            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
33598            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
33599                Some(Self::AtomCredentialManagerApiCalled)
33600            }
33601            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
33602                Some(Self::AtomCredentialManagerInitPhaseReported)
33603            }
33604            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
33605                Some(Self::AtomCredentialManagerCandidatePhaseReported)
33606            }
33607            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
33608                Some(Self::AtomCredentialManagerFinalPhaseReported)
33609            }
33610            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
33611                Some(Self::AtomCredentialManagerTotalReported)
33612            }
33613            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
33614                Some(Self::AtomCredentialManagerFinalnouidReported)
33615            }
33616            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
33617                Some(Self::AtomCredentialManagerGetReported)
33618            }
33619            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
33620                Some(Self::AtomCredentialManagerAuthClickReported)
33621            }
33622            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
33623                Some(Self::AtomCredentialManagerApiv2Called)
33624            }
33625            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
33626            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
33627                Some(Self::AtomVpnConnectionStateChanged)
33628            }
33629            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
33630            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
33631            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
33632            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
33633                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
33634            }
33635            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
33636                Some(Self::AtomNetworkStatsRecorderFileOperated)
33637            }
33638            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
33639                Some(Self::AtomDailyKeepaliveInfoReported)
33640            }
33641            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
33642                Some(Self::AtomNetworkRequestStateChanged)
33643            }
33644            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
33645                Some(Self::AtomTetheringActiveSessionsReported)
33646            }
33647            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
33648                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
33649            }
33650            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
33651            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
33652            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
33653            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
33654            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
33655                Some(Self::AtomCertificateTransparencyLogListStateChanged)
33656            }
33657            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
33658            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
33659                Some(Self::AtomCertificateTransparencyVerificationReported)
33660            }
33661            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
33662                Some(Self::AtomCameraFeatureCombinationQueryEvent)
33663            }
33664            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
33665            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
33666                Some(Self::AtomBluetoothHashedDeviceNameReported)
33667            }
33668            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
33669                Some(Self::AtomBluetoothL2capCocClientConnection)
33670            }
33671            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
33672                Some(Self::AtomBluetoothL2capCocServerConnection)
33673            }
33674            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
33675                Some(Self::AtomBluetoothLeSessionConnected)
33676            }
33677            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
33678                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
33679            }
33680            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
33681                Some(Self::AtomBluetoothProfileConnectionAttempted)
33682            }
33683            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
33684                Some(Self::AtomBluetoothContentProfileErrorReported)
33685            }
33686            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
33687                Some(Self::AtomBluetoothRfcommConnectionAttempted)
33688            }
33689            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
33690                Some(Self::AtomRemoteDeviceInformationWithMetricId)
33691            }
33692            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
33693            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
33694            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
33695            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
33696            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
33697            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
33698            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
33699            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
33700                Some(Self::AtomBluetoothCrossLayerEventReported)
33701            }
33702            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
33703                Some(Self::AtomBroadcastAudioSessionReported)
33704            }
33705            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
33706                Some(Self::AtomBroadcastAudioSyncReported)
33707            }
33708            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
33709                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
33710            }
33711            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
33712            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
33713                Some(Self::AtomHearingDeviceActiveEventReported)
33714            }
33715            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
33716                Some(Self::AtomBackportedFixStatusReported)
33717            }
33718            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
33719            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
33720                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
33721            }
33722            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
33723                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
33724            }
33725            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
33726            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
33727                Some(Self::AtomCarWakeupFromSuspendReported)
33728            }
33729            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
33730            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
33731                Some(Self::AtomCarCalmModeEventReported)
33732            }
33733            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
33734            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
33735                Some(Self::AtomAutofillFillRequestReported)
33736            }
33737            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
33738                Some(Self::AtomAutofillFillResponseReported)
33739            }
33740            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
33741                Some(Self::AtomAutofillSaveEventReported)
33742            }
33743            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
33744            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
33745                Some(Self::AtomAutofillFieldClassificationEventReported)
33746            }
33747            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
33748            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
33749            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
33750                Some(Self::AtomBackgroundDexoptJobEnded)
33751            }
33752            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
33753            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
33754            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
33755            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
33756            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
33757            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
33758            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
33759                Some(Self::AtomAppSearchSetSchemaStatsReported)
33760            }
33761            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
33762                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
33763            }
33764            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
33765                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
33766            }
33767            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
33768                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
33769            }
33770            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
33771                Some(Self::AtomAppSearchAppsIndexerStatsReported)
33772            }
33773            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
33774                Some(Self::AtomAppFunctionsRequestReported)
33775            }
33776            "ATOM_APEX_INSTALLATION_REQUESTED" => {
33777                Some(Self::AtomApexInstallationRequested)
33778            }
33779            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
33780            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
33781            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
33782                Some(Self::AtomAiWallpapersButtonPressed)
33783            }
33784            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
33785                Some(Self::AtomAiWallpapersTemplateSelected)
33786            }
33787            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
33788                Some(Self::AtomAiWallpapersTermSelected)
33789            }
33790            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
33791                Some(Self::AtomAiWallpapersWallpaperSet)
33792            }
33793            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
33794                Some(Self::AtomAiWallpapersSessionSummary)
33795            }
33796            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
33797                Some(Self::AtomJsscriptengineLatencyReported)
33798            }
33799            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
33800            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
33801                Some(Self::AtomAdServicesMesurementReportsUploaded)
33802            }
33803            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
33804                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
33805            }
33806            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
33807                Some(Self::AtomMobileDataDownloadDownloadResultReported)
33808            }
33809            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
33810                Some(Self::AtomAdServicesSettingsUsageReported)
33811            }
33812            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
33813                Some(Self::AtomBackgroundFetchProcessReported)
33814            }
33815            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
33816                Some(Self::AtomUpdateCustomAudienceProcessReported)
33817            }
33818            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
33819                Some(Self::AtomRunAdBiddingProcessReported)
33820            }
33821            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
33822                Some(Self::AtomRunAdScoringProcessReported)
33823            }
33824            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
33825                Some(Self::AtomRunAdSelectionProcessReported)
33826            }
33827            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
33828                Some(Self::AtomRunAdBiddingPerCaProcessReported)
33829            }
33830            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
33831                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
33832            }
33833            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
33834                Some(Self::AtomAdServicesMeasurementRegistrations)
33835            }
33836            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
33837                Some(Self::AtomAdServicesGetTopicsReported)
33838            }
33839            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
33840                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
33841            }
33842            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
33843                Some(Self::AtomAdServicesEpochComputationClassifierReported)
33844            }
33845            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
33846                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
33847            }
33848            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
33849                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
33850            }
33851            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
33852                Some(Self::AtomAdServicesMeasurementDebugKeys)
33853            }
33854            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
33855            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
33856                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
33857            }
33858            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
33859                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
33860            }
33861            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
33862                Some(Self::AtomAdServicesMeasurementAttribution)
33863            }
33864            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
33865                Some(Self::AtomAdServicesMeasurementJobs)
33866            }
33867            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
33868                Some(Self::AtomAdServicesMeasurementWipeout)
33869            }
33870            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
33871                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
33872            }
33873            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
33874                Some(Self::AtomAdServicesEnrollmentDataStored)
33875            }
33876            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
33877                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
33878            }
33879            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
33880                Some(Self::AtomAdServicesEnrollmentMatched)
33881            }
33882            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
33883                Some(Self::AtomAdServicesConsentMigrated)
33884            }
33885            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
33886                Some(Self::AtomAdServicesEnrollmentFailed)
33887            }
33888            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
33889                Some(Self::AtomAdServicesMeasurementClickVerification)
33890            }
33891            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
33892                Some(Self::AtomAdServicesEncryptionKeyFetched)
33893            }
33894            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
33895                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
33896            }
33897            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
33898                Some(Self::AtomDestinationRegisteredBeacons)
33899            }
33900            "ATOM_REPORT_INTERACTION_API_CALLED" => {
33901                Some(Self::AtomReportInteractionApiCalled)
33902            }
33903            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
33904                Some(Self::AtomInteractionReportingTableCleared)
33905            }
33906            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
33907                Some(Self::AtomAppManifestConfigHelperCalled)
33908            }
33909            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
33910                Some(Self::AtomAdFilteringProcessJoinCaReported)
33911            }
33912            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
33913                Some(Self::AtomAdFilteringProcessAdSelectionReported)
33914            }
33915            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
33916                Some(Self::AtomAdCounterHistogramUpdaterReported)
33917            }
33918            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
33919            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
33920                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
33921            }
33922            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
33923                Some(Self::AtomKAnonBackgroundJobStatusReported)
33924            }
33925            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
33926                Some(Self::AtomKAnonInitializeStatusReported)
33927            }
33928            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
33929            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
33930            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
33931                Some(Self::AtomKAnonKeyAttestationStatusReported)
33932            }
33933            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
33934                Some(Self::AtomGetAdSelectionDataApiCalled)
33935            }
33936            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
33937                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
33938            }
33939            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
33940                Some(Self::AtomBackgroundJobSchedulingReported)
33941            }
33942            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
33943                Some(Self::AtomTopicsEncryptionEpochComputationReported)
33944            }
33945            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
33946                Some(Self::AtomTopicsEncryptionGetTopicsReported)
33947            }
33948            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
33949                Some(Self::AtomAdservicesShellCommandCalled)
33950            }
33951            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
33952            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
33953            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
33954            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
33955            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
33956                Some(Self::AtomPersistAdSelectionResultCalled)
33957            }
33958            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
33959                Some(Self::AtomServerAuctionKeyFetchCalled)
33960            }
33961            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
33962                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
33963            }
33964            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
33965                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
33966            }
33967            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
33968                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
33969            }
33970            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
33971                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
33972            }
33973            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
33974                Some(Self::AtomReportImpressionApiCalled)
33975            }
33976            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
33977                Some(Self::AtomAdServicesEnrollmentTransactionStats)
33978            }
33979            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
33980                Some(Self::AtomAdServicesCobaltLoggerEventReported)
33981            }
33982            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
33983                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
33984            }
33985            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
33986                Some(Self::AtomUpdateSignalsProcessReported)
33987            }
33988            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
33989                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
33990            }
33991            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
33992                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
33993            }
33994            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
33995                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
33996            }
33997            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
33998                Some(
33999                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
34000                )
34001            }
34002            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
34003                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
34004            }
34005            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
34006            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
34007            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
34008                Some(Self::AtomThermalHeadroomThresholdsCalled)
34009            }
34010            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
34011                Some(Self::AtomAdpfHintSessionTidCleanup)
34012            }
34013            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
34014                Some(Self::AtomThermalHeadroomThresholds)
34015            }
34016            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
34017            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
34018                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
34019            }
34020            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
34021            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
34022                Some(Self::AtomAccessibilityCheckResultReported)
34023            }
34024            _ => None,
34025        }
34026    }
34027}
34028/// When editing entries here remember also to update "sys_stats_counters.h" with
34029/// the corresponding string definitions for the actual /proc files parser.
34030///
34031/// Counter definitions for Linux's /proc/meminfo.
34032#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34033#[repr(i32)]
34034pub enum MeminfoCounters {
34035    MeminfoUnspecified = 0,
34036    MeminfoMemTotal = 1,
34037    MeminfoMemFree = 2,
34038    MeminfoMemAvailable = 3,
34039    MeminfoBuffers = 4,
34040    MeminfoCached = 5,
34041    MeminfoSwapCached = 6,
34042    MeminfoActive = 7,
34043    MeminfoInactive = 8,
34044    MeminfoActiveAnon = 9,
34045    MeminfoInactiveAnon = 10,
34046    MeminfoActiveFile = 11,
34047    MeminfoInactiveFile = 12,
34048    MeminfoUnevictable = 13,
34049    MeminfoMlocked = 14,
34050    MeminfoSwapTotal = 15,
34051    MeminfoSwapFree = 16,
34052    MeminfoDirty = 17,
34053    MeminfoWriteback = 18,
34054    MeminfoAnonPages = 19,
34055    MeminfoMapped = 20,
34056    MeminfoShmem = 21,
34057    MeminfoSlab = 22,
34058    MeminfoSlabReclaimable = 23,
34059    MeminfoSlabUnreclaimable = 24,
34060    MeminfoKernelStack = 25,
34061    MeminfoPageTables = 26,
34062    MeminfoCommitLimit = 27,
34063    MeminfoCommitedAs = 28,
34064    MeminfoVmallocTotal = 29,
34065    MeminfoVmallocUsed = 30,
34066    MeminfoVmallocChunk = 31,
34067    MeminfoCmaTotal = 32,
34068    MeminfoCmaFree = 33,
34069    MeminfoGpu = 34,
34070    MeminfoZram = 35,
34071    MeminfoMisc = 36,
34072    MeminfoIonHeap = 37,
34073    MeminfoIonHeapPool = 38,
34074}
34075impl MeminfoCounters {
34076    /// String value of the enum field names used in the ProtoBuf definition.
34077    ///
34078    /// The values are not transformed in any way and thus are considered stable
34079    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34080    pub fn as_str_name(&self) -> &'static str {
34081        match self {
34082            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
34083            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
34084            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
34085            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
34086            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
34087            Self::MeminfoCached => "MEMINFO_CACHED",
34088            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
34089            Self::MeminfoActive => "MEMINFO_ACTIVE",
34090            Self::MeminfoInactive => "MEMINFO_INACTIVE",
34091            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
34092            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
34093            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
34094            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
34095            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
34096            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
34097            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
34098            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
34099            Self::MeminfoDirty => "MEMINFO_DIRTY",
34100            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
34101            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
34102            Self::MeminfoMapped => "MEMINFO_MAPPED",
34103            Self::MeminfoShmem => "MEMINFO_SHMEM",
34104            Self::MeminfoSlab => "MEMINFO_SLAB",
34105            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
34106            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
34107            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
34108            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
34109            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
34110            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
34111            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
34112            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
34113            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
34114            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
34115            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
34116            Self::MeminfoGpu => "MEMINFO_GPU",
34117            Self::MeminfoZram => "MEMINFO_ZRAM",
34118            Self::MeminfoMisc => "MEMINFO_MISC",
34119            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
34120            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
34121        }
34122    }
34123    /// Creates an enum from field names used in the ProtoBuf definition.
34124    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34125        match value {
34126            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
34127            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
34128            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
34129            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
34130            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
34131            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
34132            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
34133            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
34134            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
34135            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
34136            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
34137            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
34138            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
34139            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
34140            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
34141            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
34142            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
34143            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
34144            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
34145            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
34146            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
34147            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
34148            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
34149            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
34150            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
34151            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
34152            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
34153            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
34154            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
34155            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
34156            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
34157            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
34158            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
34159            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
34160            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
34161            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
34162            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
34163            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
34164            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
34165            _ => None,
34166        }
34167    }
34168}
34169/// Counter definitions for Linux's /proc/vmstat.
34170#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34171#[repr(i32)]
34172pub enum VmstatCounters {
34173    VmstatUnspecified = 0,
34174    VmstatNrFreePages = 1,
34175    VmstatNrAllocBatch = 2,
34176    VmstatNrInactiveAnon = 3,
34177    VmstatNrActiveAnon = 4,
34178    VmstatNrInactiveFile = 5,
34179    VmstatNrActiveFile = 6,
34180    VmstatNrUnevictable = 7,
34181    VmstatNrMlock = 8,
34182    VmstatNrAnonPages = 9,
34183    VmstatNrMapped = 10,
34184    VmstatNrFilePages = 11,
34185    VmstatNrDirty = 12,
34186    VmstatNrWriteback = 13,
34187    VmstatNrSlabReclaimable = 14,
34188    VmstatNrSlabUnreclaimable = 15,
34189    VmstatNrPageTablePages = 16,
34190    VmstatNrKernelStack = 17,
34191    VmstatNrOverhead = 18,
34192    VmstatNrUnstable = 19,
34193    VmstatNrBounce = 20,
34194    VmstatNrVmscanWrite = 21,
34195    VmstatNrVmscanImmediateReclaim = 22,
34196    VmstatNrWritebackTemp = 23,
34197    VmstatNrIsolatedAnon = 24,
34198    VmstatNrIsolatedFile = 25,
34199    VmstatNrShmem = 26,
34200    VmstatNrDirtied = 27,
34201    VmstatNrWritten = 28,
34202    VmstatNrPagesScanned = 29,
34203    VmstatWorkingsetRefault = 30,
34204    VmstatWorkingsetActivate = 31,
34205    VmstatWorkingsetNodereclaim = 32,
34206    VmstatNrAnonTransparentHugepages = 33,
34207    VmstatNrFreeCma = 34,
34208    VmstatNrSwapcache = 35,
34209    VmstatNrDirtyThreshold = 36,
34210    VmstatNrDirtyBackgroundThreshold = 37,
34211    VmstatPgpgin = 38,
34212    VmstatPgpgout = 39,
34213    VmstatPgpgoutclean = 40,
34214    VmstatPswpin = 41,
34215    VmstatPswpout = 42,
34216    VmstatPgallocDma = 43,
34217    VmstatPgallocNormal = 44,
34218    VmstatPgallocMovable = 45,
34219    VmstatPgfree = 46,
34220    VmstatPgactivate = 47,
34221    VmstatPgdeactivate = 48,
34222    VmstatPgfault = 49,
34223    VmstatPgmajfault = 50,
34224    VmstatPgrefillDma = 51,
34225    VmstatPgrefillNormal = 52,
34226    VmstatPgrefillMovable = 53,
34227    VmstatPgstealKswapdDma = 54,
34228    VmstatPgstealKswapdNormal = 55,
34229    VmstatPgstealKswapdMovable = 56,
34230    VmstatPgstealDirectDma = 57,
34231    VmstatPgstealDirectNormal = 58,
34232    VmstatPgstealDirectMovable = 59,
34233    VmstatPgscanKswapdDma = 60,
34234    VmstatPgscanKswapdNormal = 61,
34235    VmstatPgscanKswapdMovable = 62,
34236    VmstatPgscanDirectDma = 63,
34237    VmstatPgscanDirectNormal = 64,
34238    VmstatPgscanDirectMovable = 65,
34239    VmstatPgscanDirectThrottle = 66,
34240    VmstatPginodesteal = 67,
34241    VmstatSlabsScanned = 68,
34242    VmstatKswapdInodesteal = 69,
34243    VmstatKswapdLowWmarkHitQuickly = 70,
34244    VmstatKswapdHighWmarkHitQuickly = 71,
34245    VmstatPageoutrun = 72,
34246    VmstatAllocstall = 73,
34247    VmstatPgrotated = 74,
34248    VmstatDropPagecache = 75,
34249    VmstatDropSlab = 76,
34250    VmstatPgmigrateSuccess = 77,
34251    VmstatPgmigrateFail = 78,
34252    VmstatCompactMigrateScanned = 79,
34253    VmstatCompactFreeScanned = 80,
34254    VmstatCompactIsolated = 81,
34255    VmstatCompactStall = 82,
34256    VmstatCompactFail = 83,
34257    VmstatCompactSuccess = 84,
34258    VmstatCompactDaemonWake = 85,
34259    VmstatUnevictablePgsCulled = 86,
34260    VmstatUnevictablePgsScanned = 87,
34261    VmstatUnevictablePgsRescued = 88,
34262    VmstatUnevictablePgsMlocked = 89,
34263    VmstatUnevictablePgsMunlocked = 90,
34264    VmstatUnevictablePgsCleared = 91,
34265    VmstatUnevictablePgsStranded = 92,
34266    VmstatNrZspages = 93,
34267    VmstatNrIonHeap = 94,
34268    VmstatNrGpuHeap = 95,
34269    VmstatAllocstallDma = 96,
34270    VmstatAllocstallMovable = 97,
34271    VmstatAllocstallNormal = 98,
34272    VmstatCompactDaemonFreeScanned = 99,
34273    VmstatCompactDaemonMigrateScanned = 100,
34274    VmstatNrFastrpc = 101,
34275    VmstatNrIndirectlyReclaimable = 102,
34276    VmstatNrIonHeapPool = 103,
34277    VmstatNrKernelMiscReclaimable = 104,
34278    VmstatNrShadowCallStackBytes = 105,
34279    VmstatNrShmemHugepages = 106,
34280    VmstatNrShmemPmdmapped = 107,
34281    VmstatNrUnreclaimablePages = 108,
34282    VmstatNrZoneActiveAnon = 109,
34283    VmstatNrZoneActiveFile = 110,
34284    VmstatNrZoneInactiveAnon = 111,
34285    VmstatNrZoneInactiveFile = 112,
34286    VmstatNrZoneUnevictable = 113,
34287    VmstatNrZoneWritePending = 114,
34288    VmstatOomKill = 115,
34289    VmstatPglazyfree = 116,
34290    VmstatPglazyfreed = 117,
34291    VmstatPgrefill = 118,
34292    VmstatPgscanDirect = 119,
34293    VmstatPgscanKswapd = 120,
34294    VmstatPgskipDma = 121,
34295    VmstatPgskipMovable = 122,
34296    VmstatPgskipNormal = 123,
34297    VmstatPgstealDirect = 124,
34298    VmstatPgstealKswapd = 125,
34299    VmstatSwapRa = 126,
34300    VmstatSwapRaHit = 127,
34301    VmstatWorkingsetRestore = 128,
34302    VmstatAllocstallDevice = 129,
34303    VmstatAllocstallDma32 = 130,
34304    VmstatBalloonDeflate = 131,
34305    VmstatBalloonInflate = 132,
34306    VmstatBalloonMigrate = 133,
34307    VmstatCmaAllocFail = 134,
34308    VmstatCmaAllocSuccess = 135,
34309    VmstatNrFileHugepages = 136,
34310    VmstatNrFilePmdmapped = 137,
34311    VmstatNrFollPinAcquired = 138,
34312    VmstatNrFollPinReleased = 139,
34313    VmstatNrSecPageTablePages = 140,
34314    VmstatNrShadowCallStack = 141,
34315    VmstatNrSwapcached = 142,
34316    VmstatNrThrottledWritten = 143,
34317    VmstatPgallocDevice = 144,
34318    VmstatPgallocDma32 = 145,
34319    VmstatPgdemoteDirect = 146,
34320    VmstatPgdemoteKswapd = 147,
34321    VmstatPgreuse = 148,
34322    VmstatPgscanAnon = 149,
34323    VmstatPgscanFile = 150,
34324    VmstatPgskipDevice = 151,
34325    VmstatPgskipDma32 = 152,
34326    VmstatPgstealAnon = 153,
34327    VmstatPgstealFile = 154,
34328    VmstatThpCollapseAlloc = 155,
34329    VmstatThpCollapseAllocFailed = 156,
34330    VmstatThpDeferredSplitPage = 157,
34331    VmstatThpFaultAlloc = 158,
34332    VmstatThpFaultFallback = 159,
34333    VmstatThpFaultFallbackCharge = 160,
34334    VmstatThpFileAlloc = 161,
34335    VmstatThpFileFallback = 162,
34336    VmstatThpFileFallbackCharge = 163,
34337    VmstatThpFileMapped = 164,
34338    VmstatThpMigrationFail = 165,
34339    VmstatThpMigrationSplit = 166,
34340    VmstatThpMigrationSuccess = 167,
34341    VmstatThpScanExceedNonePte = 168,
34342    VmstatThpScanExceedSharePte = 169,
34343    VmstatThpScanExceedSwapPte = 170,
34344    VmstatThpSplitPage = 171,
34345    VmstatThpSplitPageFailed = 172,
34346    VmstatThpSplitPmd = 173,
34347    VmstatThpSwpout = 174,
34348    VmstatThpSwpoutFallback = 175,
34349    VmstatThpZeroPageAlloc = 176,
34350    VmstatThpZeroPageAllocFailed = 177,
34351    VmstatVmaLockAbort = 178,
34352    VmstatVmaLockMiss = 179,
34353    VmstatVmaLockRetry = 180,
34354    VmstatVmaLockSuccess = 181,
34355    VmstatWorkingsetActivateAnon = 182,
34356    VmstatWorkingsetActivateFile = 183,
34357    VmstatWorkingsetNodes = 184,
34358    VmstatWorkingsetRefaultAnon = 185,
34359    VmstatWorkingsetRefaultFile = 186,
34360    VmstatWorkingsetRestoreAnon = 187,
34361    VmstatWorkingsetRestoreFile = 188,
34362}
34363impl VmstatCounters {
34364    /// String value of the enum field names used in the ProtoBuf definition.
34365    ///
34366    /// The values are not transformed in any way and thus are considered stable
34367    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34368    pub fn as_str_name(&self) -> &'static str {
34369        match self {
34370            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
34371            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
34372            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
34373            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
34374            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
34375            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
34376            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
34377            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
34378            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
34379            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
34380            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
34381            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
34382            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
34383            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
34384            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
34385            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
34386            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
34387            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
34388            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
34389            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
34390            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
34391            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
34392            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
34393            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
34394            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
34395            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
34396            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
34397            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
34398            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
34399            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
34400            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
34401            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
34402            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
34403            Self::VmstatNrAnonTransparentHugepages => {
34404                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
34405            }
34406            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
34407            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
34408            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
34409            Self::VmstatNrDirtyBackgroundThreshold => {
34410                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
34411            }
34412            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
34413            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
34414            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
34415            Self::VmstatPswpin => "VMSTAT_PSWPIN",
34416            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
34417            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
34418            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
34419            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
34420            Self::VmstatPgfree => "VMSTAT_PGFREE",
34421            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
34422            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
34423            Self::VmstatPgfault => "VMSTAT_PGFAULT",
34424            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
34425            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
34426            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
34427            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
34428            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
34429            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
34430            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
34431            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
34432            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
34433            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
34434            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
34435            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
34436            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
34437            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
34438            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
34439            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
34440            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
34441            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
34442            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
34443            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
34444            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
34445            Self::VmstatKswapdHighWmarkHitQuickly => {
34446                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
34447            }
34448            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
34449            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
34450            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
34451            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
34452            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
34453            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
34454            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
34455            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
34456            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
34457            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
34458            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
34459            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
34460            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
34461            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
34462            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
34463            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
34464            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
34465            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
34466            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
34467            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
34468            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
34469            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
34470            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
34471            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
34472            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
34473            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
34474            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
34475            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
34476            Self::VmstatCompactDaemonMigrateScanned => {
34477                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
34478            }
34479            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
34480            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
34481            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
34482            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
34483            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
34484            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
34485            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
34486            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
34487            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
34488            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
34489            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
34490            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
34491            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
34492            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
34493            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
34494            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
34495            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
34496            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
34497            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
34498            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
34499            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
34500            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
34501            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
34502            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
34503            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
34504            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
34505            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
34506            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
34507            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
34508            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
34509            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
34510            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
34511            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
34512            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
34513            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
34514            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
34515            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
34516            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
34517            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
34518            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
34519            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
34520            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
34521            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
34522            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
34523            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
34524            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
34525            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
34526            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
34527            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
34528            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
34529            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
34530            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
34531            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
34532            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
34533            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
34534            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
34535            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
34536            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
34537            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
34538            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
34539            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
34540            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
34541            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
34542            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
34543            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
34544            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
34545            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
34546            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
34547            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
34548            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
34549            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
34550            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
34551            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
34552            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
34553            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
34554            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
34555            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
34556            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
34557            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
34558            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
34559            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
34560            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
34561            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
34562            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
34563            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
34564            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
34565            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
34566            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
34567        }
34568    }
34569    /// Creates an enum from field names used in the ProtoBuf definition.
34570    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34571        match value {
34572            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
34573            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
34574            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
34575            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
34576            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
34577            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
34578            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
34579            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
34580            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
34581            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
34582            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
34583            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
34584            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
34585            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
34586            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
34587            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
34588            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
34589            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
34590            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
34591            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
34592            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
34593            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
34594            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
34595                Some(Self::VmstatNrVmscanImmediateReclaim)
34596            }
34597            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
34598            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
34599            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
34600            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
34601            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
34602            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
34603            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
34604            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
34605            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
34606            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
34607            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
34608                Some(Self::VmstatNrAnonTransparentHugepages)
34609            }
34610            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
34611            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
34612            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
34613            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
34614                Some(Self::VmstatNrDirtyBackgroundThreshold)
34615            }
34616            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
34617            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
34618            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
34619            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
34620            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
34621            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
34622            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
34623            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
34624            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
34625            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
34626            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
34627            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
34628            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
34629            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
34630            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
34631            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
34632            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
34633            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
34634            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
34635            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
34636            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
34637            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
34638            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
34639            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
34640            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
34641            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
34642            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
34643            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
34644            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
34645            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
34646            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
34647            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
34648            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
34649                Some(Self::VmstatKswapdLowWmarkHitQuickly)
34650            }
34651            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
34652                Some(Self::VmstatKswapdHighWmarkHitQuickly)
34653            }
34654            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
34655            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
34656            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
34657            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
34658            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
34659            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
34660            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
34661            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
34662            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
34663            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
34664            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
34665            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
34666            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
34667            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
34668            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
34669            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
34670            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
34671            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
34672            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
34673                Some(Self::VmstatUnevictablePgsMunlocked)
34674            }
34675            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
34676            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
34677            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
34678            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
34679            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
34680            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
34681            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
34682            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
34683            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
34684                Some(Self::VmstatCompactDaemonFreeScanned)
34685            }
34686            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
34687                Some(Self::VmstatCompactDaemonMigrateScanned)
34688            }
34689            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
34690            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
34691                Some(Self::VmstatNrIndirectlyReclaimable)
34692            }
34693            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
34694            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
34695                Some(Self::VmstatNrKernelMiscReclaimable)
34696            }
34697            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
34698                Some(Self::VmstatNrShadowCallStackBytes)
34699            }
34700            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
34701            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
34702            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
34703            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
34704            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
34705            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
34706            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
34707            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
34708            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
34709            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
34710            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
34711            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
34712            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
34713            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
34714            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
34715            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
34716            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
34717            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
34718            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
34719            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
34720            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
34721            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
34722            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
34723            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
34724            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
34725            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
34726            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
34727            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
34728            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
34729            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
34730            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
34731            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
34732            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
34733            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
34734            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
34735            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
34736            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
34737            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
34738            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
34739            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
34740            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
34741            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
34742            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
34743            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
34744            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
34745            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
34746            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
34747            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
34748            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
34749            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
34750            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
34751                Some(Self::VmstatThpCollapseAllocFailed)
34752            }
34753            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
34754            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
34755            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
34756            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
34757                Some(Self::VmstatThpFaultFallbackCharge)
34758            }
34759            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
34760            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
34761            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
34762            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
34763            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
34764            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
34765            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
34766            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
34767            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
34768            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
34769            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
34770            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
34771            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
34772            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
34773            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
34774            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
34775            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
34776                Some(Self::VmstatThpZeroPageAllocFailed)
34777            }
34778            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
34779            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
34780            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
34781            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
34782            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
34783            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
34784            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
34785            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
34786            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
34787            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
34788            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
34789            _ => None,
34790        }
34791    }
34792}
34793#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34794#[repr(i32)]
34795pub enum FtraceParseStatus {
34796    FtraceStatusUnspecified = 0,
34797    /// Not written, used for convenience of implementation:
34798    FtraceStatusOk = 1,
34799    /// Issues with reading data out of the ftrace ring buffer:
34800    FtraceStatusUnexpectedReadError = 2,
34801    FtraceStatusPartialPageRead = 3,
34802    /// Ring buffer binary data not matching our understanding of the layout:
34803    FtraceStatusAbiInvalidPageHeader = 4,
34804    FtraceStatusAbiShortEventHeader = 5,
34805    FtraceStatusAbiNullPadding = 6,
34806    FtraceStatusAbiShortPaddingLength = 7,
34807    FtraceStatusAbiInvalidPaddingLength = 8,
34808    FtraceStatusAbiShortTimeExtend = 9,
34809    FtraceStatusAbiShortTimeStamp = 10,
34810    FtraceStatusAbiShortDataLength = 11,
34811    FtraceStatusAbiZeroDataLength = 12,
34812    FtraceStatusAbiInvalidDataLength = 13,
34813    FtraceStatusAbiShortEventId = 14,
34814    FtraceStatusAbiEndOverflow = 15,
34815    /// Issues with parsing the event payload:
34816    FtraceStatusShortCompactEvent = 16,
34817    FtraceStatusInvalidEvent = 17,
34818}
34819impl FtraceParseStatus {
34820    /// String value of the enum field names used in the ProtoBuf definition.
34821    ///
34822    /// The values are not transformed in any way and thus are considered stable
34823    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34824    pub fn as_str_name(&self) -> &'static str {
34825        match self {
34826            Self::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
34827            Self::FtraceStatusOk => "FTRACE_STATUS_OK",
34828            Self::FtraceStatusUnexpectedReadError => {
34829                "FTRACE_STATUS_UNEXPECTED_READ_ERROR"
34830            }
34831            Self::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
34832            Self::FtraceStatusAbiInvalidPageHeader => {
34833                "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER"
34834            }
34835            Self::FtraceStatusAbiShortEventHeader => {
34836                "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER"
34837            }
34838            Self::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
34839            Self::FtraceStatusAbiShortPaddingLength => {
34840                "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH"
34841            }
34842            Self::FtraceStatusAbiInvalidPaddingLength => {
34843                "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH"
34844            }
34845            Self::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
34846            Self::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
34847            Self::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
34848            Self::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
34849            Self::FtraceStatusAbiInvalidDataLength => {
34850                "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH"
34851            }
34852            Self::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
34853            Self::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
34854            Self::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
34855            Self::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
34856        }
34857    }
34858    /// Creates an enum from field names used in the ProtoBuf definition.
34859    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34860        match value {
34861            "FTRACE_STATUS_UNSPECIFIED" => Some(Self::FtraceStatusUnspecified),
34862            "FTRACE_STATUS_OK" => Some(Self::FtraceStatusOk),
34863            "FTRACE_STATUS_UNEXPECTED_READ_ERROR" => {
34864                Some(Self::FtraceStatusUnexpectedReadError)
34865            }
34866            "FTRACE_STATUS_PARTIAL_PAGE_READ" => Some(Self::FtraceStatusPartialPageRead),
34867            "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER" => {
34868                Some(Self::FtraceStatusAbiInvalidPageHeader)
34869            }
34870            "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER" => {
34871                Some(Self::FtraceStatusAbiShortEventHeader)
34872            }
34873            "FTRACE_STATUS_ABI_NULL_PADDING" => Some(Self::FtraceStatusAbiNullPadding),
34874            "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH" => {
34875                Some(Self::FtraceStatusAbiShortPaddingLength)
34876            }
34877            "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH" => {
34878                Some(Self::FtraceStatusAbiInvalidPaddingLength)
34879            }
34880            "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND" => {
34881                Some(Self::FtraceStatusAbiShortTimeExtend)
34882            }
34883            "FTRACE_STATUS_ABI_SHORT_TIME_STAMP" => {
34884                Some(Self::FtraceStatusAbiShortTimeStamp)
34885            }
34886            "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH" => {
34887                Some(Self::FtraceStatusAbiShortDataLength)
34888            }
34889            "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH" => {
34890                Some(Self::FtraceStatusAbiZeroDataLength)
34891            }
34892            "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH" => {
34893                Some(Self::FtraceStatusAbiInvalidDataLength)
34894            }
34895            "FTRACE_STATUS_ABI_SHORT_EVENT_ID" => Some(Self::FtraceStatusAbiShortEventId),
34896            "FTRACE_STATUS_ABI_END_OVERFLOW" => Some(Self::FtraceStatusAbiEndOverflow),
34897            "FTRACE_STATUS_SHORT_COMPACT_EVENT" => {
34898                Some(Self::FtraceStatusShortCompactEvent)
34899            }
34900            "FTRACE_STATUS_INVALID_EVENT" => Some(Self::FtraceStatusInvalidEvent),
34901            _ => None,
34902        }
34903    }
34904}
34905#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34906#[repr(i32)]
34907pub enum FtraceClock {
34908    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
34909    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
34910    Unspecified = 0,
34911    Unknown = 1,
34912    Global = 2,
34913    Local = 3,
34914    MonoRaw = 4,
34915}
34916impl FtraceClock {
34917    /// String value of the enum field names used in the ProtoBuf definition.
34918    ///
34919    /// The values are not transformed in any way and thus are considered stable
34920    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34921    pub fn as_str_name(&self) -> &'static str {
34922        match self {
34923            Self::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
34924            Self::Unknown => "FTRACE_CLOCK_UNKNOWN",
34925            Self::Global => "FTRACE_CLOCK_GLOBAL",
34926            Self::Local => "FTRACE_CLOCK_LOCAL",
34927            Self::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
34928        }
34929    }
34930    /// Creates an enum from field names used in the ProtoBuf definition.
34931    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34932        match value {
34933            "FTRACE_CLOCK_UNSPECIFIED" => Some(Self::Unspecified),
34934            "FTRACE_CLOCK_UNKNOWN" => Some(Self::Unknown),
34935            "FTRACE_CLOCK_GLOBAL" => Some(Self::Global),
34936            "FTRACE_CLOCK_LOCAL" => Some(Self::Local),
34937            "FTRACE_CLOCK_MONO_RAW" => Some(Self::MonoRaw),
34938            _ => None,
34939        }
34940    }
34941}
34942/// Describes Chrome's Compositor scheduler's current state and associated
34943/// variables.
34944///
34945/// These protos and enums were adapted from the corresponding original JSON
34946/// trace event for the scheduler state. In contrast to the JSON, we use strongly
34947/// typed enum values instead of strings for many fields, and
34948/// microsecond-granularity timestamps.
34949///
34950/// The original format was generated in JSON by the code at
34951/// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
34952///
34953/// And is now generated as protozero:
34954/// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
34955///
34956/// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
34957#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34958#[repr(i32)]
34959pub enum ChromeCompositorSchedulerAction {
34960    CcSchedulerActionUnspecified = 0,
34961    CcSchedulerActionNone = 1,
34962    CcSchedulerActionSendBeginMainFrame = 2,
34963    CcSchedulerActionCommit = 3,
34964    CcSchedulerActionActivateSyncTree = 4,
34965    CcSchedulerActionDrawIfPossible = 5,
34966    CcSchedulerActionDrawForced = 6,
34967    CcSchedulerActionDrawAbort = 7,
34968    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
34969    CcSchedulerActionPrepareTiles = 9,
34970    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
34971    CcSchedulerActionPerformImplSideInvalidation = 11,
34972    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
34973    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
34974}
34975impl ChromeCompositorSchedulerAction {
34976    /// String value of the enum field names used in the ProtoBuf definition.
34977    ///
34978    /// The values are not transformed in any way and thus are considered stable
34979    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34980    pub fn as_str_name(&self) -> &'static str {
34981        match self {
34982            Self::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
34983            Self::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
34984            Self::CcSchedulerActionSendBeginMainFrame => {
34985                "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME"
34986            }
34987            Self::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
34988            Self::CcSchedulerActionActivateSyncTree => {
34989                "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE"
34990            }
34991            Self::CcSchedulerActionDrawIfPossible => {
34992                "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE"
34993            }
34994            Self::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
34995            Self::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
34996            Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation => {
34997                "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION"
34998            }
34999            Self::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
35000            Self::CcSchedulerActionInvalidateLayerTreeFrameSink => {
35001                "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK"
35002            }
35003            Self::CcSchedulerActionPerformImplSideInvalidation => {
35004                "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION"
35005            }
35006            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => {
35007                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL"
35008            }
35009            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => {
35010                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON"
35011            }
35012        }
35013    }
35014    /// Creates an enum from field names used in the ProtoBuf definition.
35015    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
35016        match value {
35017            "CC_SCHEDULER_ACTION_UNSPECIFIED" => Some(Self::CcSchedulerActionUnspecified),
35018            "CC_SCHEDULER_ACTION_NONE" => Some(Self::CcSchedulerActionNone),
35019            "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME" => {
35020                Some(Self::CcSchedulerActionSendBeginMainFrame)
35021            }
35022            "CC_SCHEDULER_ACTION_COMMIT" => Some(Self::CcSchedulerActionCommit),
35023            "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE" => {
35024                Some(Self::CcSchedulerActionActivateSyncTree)
35025            }
35026            "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE" => {
35027                Some(Self::CcSchedulerActionDrawIfPossible)
35028            }
35029            "CC_SCHEDULER_ACTION_DRAW_FORCED" => Some(Self::CcSchedulerActionDrawForced),
35030            "CC_SCHEDULER_ACTION_DRAW_ABORT" => Some(Self::CcSchedulerActionDrawAbort),
35031            "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION" => {
35032                Some(Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation)
35033            }
35034            "CC_SCHEDULER_ACTION_PREPARE_TILES" => {
35035                Some(Self::CcSchedulerActionPrepareTiles)
35036            }
35037            "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK" => {
35038                Some(Self::CcSchedulerActionInvalidateLayerTreeFrameSink)
35039            }
35040            "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION" => {
35041                Some(Self::CcSchedulerActionPerformImplSideInvalidation)
35042            }
35043            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL" => {
35044                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil)
35045            }
35046            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON" => {
35047                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon)
35048            }
35049            _ => None,
35050        }
35051    }
35052}
35053/// RAIL Mode is an indication of the kind of work that a Renderer is currently
35054/// performing which is in turn used to prioritise work accordingly.
35055/// A fuller description of these modes can be found <https://web.dev/rail/>
35056#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
35057#[repr(i32)]
35058pub enum ChromeRailMode {
35059    RailModeNone = 0,
35060    RailModeResponse = 1,
35061    RailModeAnimation = 2,
35062    RailModeIdle = 3,
35063    RailModeLoad = 4,
35064}
35065impl ChromeRailMode {
35066    /// String value of the enum field names used in the ProtoBuf definition.
35067    ///
35068    /// The values are not transformed in any way and thus are considered stable
35069    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
35070    pub fn as_str_name(&self) -> &'static str {
35071        match self {
35072            Self::RailModeNone => "RAIL_MODE_NONE",
35073            Self::RailModeResponse => "RAIL_MODE_RESPONSE",
35074            Self::RailModeAnimation => "RAIL_MODE_ANIMATION",
35075            Self::RailModeIdle => "RAIL_MODE_IDLE",
35076            Self::RailModeLoad => "RAIL_MODE_LOAD",
35077        }
35078    }
35079    /// Creates an enum from field names used in the ProtoBuf definition.
35080    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
35081        match value {
35082            "RAIL_MODE_NONE" => Some(Self::RailModeNone),
35083            "RAIL_MODE_RESPONSE" => Some(Self::RailModeResponse),
35084            "RAIL_MODE_ANIMATION" => Some(Self::RailModeAnimation),
35085            "RAIL_MODE_IDLE" => Some(Self::RailModeIdle),
35086            "RAIL_MODE_LOAD" => Some(Self::RailModeLoad),
35087            _ => None,
35088        }
35089    }
35090}